docs: def formula_to_dictionary(formula='', thickness=np.NaN, density=np.NaN, database='ENDF_VII'):
      """create dictionary based on formula given
      
      Parameters:
      ===========
      formula: string
         ex: 'AgCo2'
         ex: 'Ag'
      thickness: float (in mm) default is np.NaN
      density: float (in g/cm3) default is np.NaN
      database: string (default is ENDV_VIII). Database where to look for elements
      
      Raises:
      =======
      ValueError if one of the element is missing from the database
      
      Return:
      =======
      the dictionary of the elements passed
        ex: {'AgCo2': {'elements': ['Ag','Co'],
                       'stoichiometric_ratio': [1,2],
                       'thickness': {'value': thickness,
                                     'units': 'mm'},
                       'density': {'value': density,
                                   'units': 'g/cm3'},
                       'molar_mass': {'value': np.nan,
                                      'units': 'g/mol'},
                      }
      """
  
      if '.' in formula:
          raise ValueError("formula '{}' is invalid, containing symbol '{}' !".format(formula, '.'))
      _formula_parsed = re.findall(r'([A-Z][a-z]*)(\d*)', formula)
      if len(_formula_parsed) == 0:
          raise ValueError("formula '{}' is invalid !".format(formula))
  
      # _dictionary = {}
      _elements_array = []
      _atomic_ratio_array = []
      for _element in _formula_parsed:
          [_single_element, _atomic_ratio] = list(_element)
          if not is_element_in_database(element=_single_element, database=database):
              raise ValueError("element '{}' not found in the database '{}'!".format(_single_element, database))
  
          if _atomic_ratio == '':
              _atomic_ratio = 1
  
          _atomic_ratio_array.append(int(_atomic_ratio))
          _elements_array.append(_single_element)
      _dict = {formula: {'elements': _elements_array,
                         'stoichiometric_ratio': _atomic_ratio_array,
                         'thickness': {'value': thickness,
                                       'units': 'mm'},
                         'density': {'value': density,
                                     'units': 'g/cm3'},
                         'molar_mass': {'value': np.nan,
                                        'units': 'g/mol'}
                         }
               }
      return _dict