Optimization Tutorial ===================== This Jupyter notebook goes through the procedure for extracting a cluster, capping the extracted cluster, adding an adosrbate to the cluster, optimizing the cluster, uncapping the cluster and reintegrating the cluster into the starting zeolite. \***\* Import Required Packages ~~~~~~~~~~~~~~~~~~~~~~~~ .. code:: python from maze import Zeolite .. code:: python import matplotlib.pyplot as plt from ase.visualize.plot import plot_atoms from ase import io import matplotlib.pyplot as plt -------------- Overview ~~~~~~~~ One of the most useful features of the MAZE package is the ability to add and remove atoms from a ``Zeolite`` object. To demonstrate this, we will extract a cluster from an ``Zeolite`` object, optimize the cluster, and then integrate it back into the main ``Zeolite``. First, we make a bea_zeolite object with the ``Zeolite`` class’ static ``make`` method. .. code:: python bea_zeolite = Zeolite.make('BEA') plot_atoms(bea_zeolite) .. image:: output_8_2.png The next step is to pick a T-site to build the cluster around. The atom with the index ``154`` is in the middle of the zeolite, which will make viewing the cluster creation easy. One could also use the ``site_to_atom_indices`` dictionary to select a specific T site. The Zeolite object uses an internal ``ClusterMaker`` object to select a cluster from the Zeolite. By default, a ``DefaultClusterMaker`` object is used. This ``DefaultClusterMaker`` object has a ``get_cluster_indices`` method which uses the ``get_oh_cluster_indices`` function to selects the indices of the central T atom, and surrounding oxygens and hydrogens. There are other cluster functions available in the source code of ``DefaultClusterMaker``. If you need some different functionality, simply make your own ``ClusterMaker`` class and set the ``Zeolite.cluster_maker`` attribute to an instance of your custom cluster maker. Let’s call our ``bea_zeolite``\ ’s ``ClusterMaker`` object’s ``get_cluster_indices`` method, to see what indices it will select. .. code:: python3 site = 154 cluster_indices = bea_zeolite.cluster_maker.get_cluster_indices(bea_zeolite, site) print(cluster_indices) [2, 66, 74, 138, 77, 82, 146, 22, 154, 30, 38, 102, 186, 42, 174, 50, 114, 117, 118, 58, 126] These are the indices of the atoms that will make up the resulting cluster and the indices of the atoms that will be absent in the open defect zeolite. We can now make the cluster and open defect zeolites by using the ``get_cluster`` method. .. code:: python3 cluster, od = bea_zeolite.get_cluster(154) The cluster looks like this .. code:: python3 plot_atoms(cluster) .. image:: output_14_1.png the open defect looks like this .. code:: python3 plot_atoms(od) .. image:: output_16_1.png Both the open defect and the cluster are ``Zeolite`` objects, yet they have a different ztype attribute .. code:: python3 display(type(bea_zeolite)) display(type(od)) display(type(cluster)) .. parsed-literal:: maze.zeolite.Zeolite maze.zeolite.Zeolite maze.zeolite.Zeolite .. code:: python3 display(bea_zeolite.ztype) display(od.ztype) display(cluster.ztype) .. parsed-literal:: 'Zeolite' 'Open Defect' 'Cluster' Next, we want to cap the cluster and apply changes to some of the internal atoms. Capping involves adding hydrogens and oxygens to the cluster. The built-in ``cap_atoms()`` method returns a new cluster object that has hydrogen caps added to it. .. code:: python capped_cluster = cluster.cap_atoms() plot_atoms(capped_cluster) .. image:: output_22_1.png -------------- Adding Adsorbates ~~~~~~~~~~~~~~~~~ Adsorbates are frequently added to Zeolites for adsorption and probing experiments. In this section an adsorbate as added to one of the T-sites in the capped cluster. We want the adsorbate to be positioned near the central T site. This T site is at ``154`` in the original index, but the indices are different in the cluster. Thankfully MAZE makes mapping the parent ``154`` index to the cluster easy with the ``index_mapper.get_index`` function. The ``index_mapper.get_index`` function takes three arguments the “sender” name, which corresponds to the name of the Zeolite that you know the index of, the “receiver” name, which is the zeolite whose atom you want to know the index of, and the sender index, which is the index that you know. For example, to get the capped_cluster central T site index, knowing that the that T site in the parent zeolite had index is 154 we use the following command. .. code:: python capped_cluster.index_mapper.get_index(capped_cluster.parent_zeotype.name, capped_cluster.name, 154) .. parsed-literal:: 18 This is a little wordy, but it works. We can also use the ``site_to_atom_indices`` dictionary to see the idenity of all of the sites in the capped cluster. .. code:: python capped_cluster.atom_indices_to_sites[18] .. parsed-literal:: 'T4' To add an adsorbate to the cluster, we need an electrophiles atom in place of the Silicon. We make this substitution here using the indices we found in both the parent zeolite and the current zeolite. Substitutions do not change the index mapper and are not tracked since the indices are not shifted by substitutions. .. code:: python capped_cluster.parent_zeotype[154].symbol = 'Sn' # replace original zeolite 154 site Si -> Sn capped_cluster[18].symbol = 'Sn' # replace site in the capped_cluster plot_atoms(capped_cluster.parent_zeotype) .. image:: output_31_1.png .. code:: ipython3 plot_atoms(capped_cluster) .. image:: output_32_1.png The next stage involves creating an ``Adsorbate`` object. The ``Adsorbate`` class inherits from the ``ase.Atoms`` class, and includes some additional functionality related to the positioning of the ``Adsorbate``. The important parameters are the name and the “host_zeotype”. The host zeotype is the zeolite where the adsorbate will be positioned. The adsorbate code works best when the original framework is used as the host zeotype, since it takes into consideration the containment provided by the entire framework. .. code:: python from maze.adsorbate import Adsorbate from ase.build import molecule ch3cn = molecule('CH3CN') ch3cn = Adsorbate(ch3cn, host_zeotype=capped_cluster.parent_zeotype, name='acetonitrile') plot_atoms(ch3cn) .. image:: output_35_1.png The Adsorbate class inherits from the ase.Atoms class and thus can be used with ASE’s visualization tools To position the adsorbate, we need to find the index of the nucleophile (i.e. the nitrogen) .. code:: python for atom in ch3cn: print(atom.index, atom.symbol) .. parsed-literal:: 0 C 1 C 2 N 3 H 4 H 5 H The donor atom is the N; thus, we note the index = 2. We could also find this in one step with list comprehension. .. code:: python nitrogen_index = [atom.index for atom in ch3cn if atom.symbol == 'N'][0] nitrogen_index .. parsed-literal:: 2 .. code:: python #lets position the adsorbate (run this a few times until it works) for _ in range(10): try: ch3cn = ch3cn.position_ads(donor_ind=nitrogen_index, host_ind=154) break except AssertionError: pass plot_atoms(ch3cn) .. image:: output_42_1.png Now let’s integrate the adsorbate into the cluster. We will use the integrate adsorbate function for this. Notice that the host_zeotype doesn’t have to be the capped cluster for the integration to take place. This integrate-adsorbate method also returns a new cluster object and a new adsorbate object. .. code:: python cluster_with_ads, ch3cn_in = capped_cluster.integrate_adsorbate(ch3cn) We can now view the ``cluster_with_ads object``. The positioning will not be perfect, since it relies on some very simple heuristics, but it is a good initial guess for the calculations. .. code:: python plot_atoms(cluster_with_ads) .. image:: output_46_1.png Optimization ~~~~~~~~~~~~ The next stage of this process is optimizing the cluster. Note in the current iteration, we do not optimize the cluster and adsorbate together, but in future work this might take place. Freezing Atom Caps ~~~~~~~~~~~~~~~~~~ To perform an optimization, we need to freeze the hydrogen atoms. ASE has built in functions for this purpose, but we need to know the indices of the caps. The indices for all of the atoms and their relationship between each other are stored in the Index Mapper’s main index. In the program, the main index consists of a series of nested dictionaries, but it can easily be visualized by turning it into a Pandas Data Frame. Pandas is not a required package for MAZE so the following line of code is not wrapped in a nice function. .. code:: python import pandas as pd from IPython.core.display import HTML .. code:: python HTML(pd.DataFrame(cluster_with_ads.index_mapper.main_index).to_html()) .. raw:: html
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
parent | 0.0 | 1.0 | 2.0 | 3.0 | 4.0 | 5.0 | 6.0 | 7.0 | 8.0 | 9.0 | 10.0 | 11.0 | 12.0 | 13.0 | 14.0 | 15.0 | 16.0 | 17.0 | 18.0 | 19.0 | 20.0 | 21.0 | 22.0 | 23.0 | 24.0 | 25.0 | 26.0 | 27.0 | 28.0 | 29.0 | 30.0 | 31.0 | 32.0 | 33.0 | 34.0 | 35.0 | 36.0 | 37.0 | 38.0 | 39.0 | 40.0 | 41.0 | 42.0 | 43.0 | 44.0 | 45.0 | 46.0 | 47.0 | 48.0 | 49.0 | 50.0 | 51.0 | 52.0 | 53.0 | 54.0 | 55.0 | 56.0 | 57.0 | 58.0 | 59.0 | 60.0 | 61.0 | 62.0 | 63.0 | 64.0 | 65.0 | 66.0 | 67.0 | 68.0 | 69.0 | 70.0 | 71.0 | 72.0 | 73.0 | 74.0 | 75.0 | 76.0 | 77.0 | 78.0 | 79.0 | 80.0 | 81.0 | 82.0 | 83.0 | 84.0 | 85.0 | 86.0 | 87.0 | 88.0 | 89.0 | 90.0 | 91.0 | 92.0 | 93.0 | 94.0 | 95.0 | 96.0 | 97.0 | 98.0 | 99.0 | 100.0 | 101.0 | 102.0 | 103.0 | 104.0 | 105.0 | 106.0 | 107.0 | 108.0 | 109.0 | 110.0 | 111.0 | 112.0 | 113.0 | 114.0 | 115.0 | 116.0 | 117.0 | 118.0 | 119.0 | 120.0 | 121.0 | 122.0 | 123.0 | 124.0 | 125.0 | 126.0 | 127.0 | 128.0 | 129.0 | 130.0 | 131.0 | 132.0 | 133.0 | 134.0 | 135.0 | 136.0 | 137.0 | 138.0 | 139.0 | 140.0 | 141.0 | 142.0 | 143.0 | 144.0 | 145.0 | 146.0 | 147.0 | 148.0 | 149.0 | 150.0 | 151.0 | 152.0 | 153.0 | 154.0 | 155.0 | 156.0 | 157.0 | 158.0 | 159.0 | 160.0 | 161.0 | 162.0 | 163.0 | 164.0 | 165.0 | 166.0 | 167.0 | 168.0 | 169.0 | 170.0 | 171.0 | 172.0 | 173.0 | 174.0 | 175.0 | 176.0 | 177.0 | 178.0 | 179.0 | 180.0 | 181.0 | 182.0 | 183.0 | 184.0 | 185.0 | 186.0 | 187.0 | 188.0 | 189.0 | 190.0 | 191.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
Zeolite_1 | 0.0 | 1.0 | 2.0 | 3.0 | 4.0 | 5.0 | 6.0 | 7.0 | 8.0 | 9.0 | 10.0 | 11.0 | 12.0 | 13.0 | 14.0 | 15.0 | 16.0 | 17.0 | 18.0 | 19.0 | 20.0 | 21.0 | 22.0 | 23.0 | 24.0 | 25.0 | 26.0 | 27.0 | 28.0 | 29.0 | 30.0 | 31.0 | 32.0 | 33.0 | 34.0 | 35.0 | 36.0 | 37.0 | 38.0 | 39.0 | 40.0 | 41.0 | 42.0 | 43.0 | 44.0 | 45.0 | 46.0 | 47.0 | 48.0 | 49.0 | 50.0 | 51.0 | 52.0 | 53.0 | 54.0 | 55.0 | 56.0 | 57.0 | 58.0 | 59.0 | 60.0 | 61.0 | 62.0 | 63.0 | 64.0 | 65.0 | 66.0 | 67.0 | 68.0 | 69.0 | 70.0 | 71.0 | 72.0 | 73.0 | 74.0 | 75.0 | 76.0 | 77.0 | 78.0 | 79.0 | 80.0 | 81.0 | 82.0 | 83.0 | 84.0 | 85.0 | 86.0 | 87.0 | 88.0 | 89.0 | 90.0 | 91.0 | 92.0 | 93.0 | 94.0 | 95.0 | 96.0 | 97.0 | 98.0 | 99.0 | 100.0 | 101.0 | 102.0 | 103.0 | 104.0 | 105.0 | 106.0 | 107.0 | 108.0 | 109.0 | 110.0 | 111.0 | 112.0 | 113.0 | 114.0 | 115.0 | 116.0 | 117.0 | 118.0 | 119.0 | 120.0 | 121.0 | 122.0 | 123.0 | 124.0 | 125.0 | 126.0 | 127.0 | 128.0 | 129.0 | 130.0 | 131.0 | 132.0 | 133.0 | 134.0 | 135.0 | 136.0 | 137.0 | 138.0 | 139.0 | 140.0 | 141.0 | 142.0 | 143.0 | 144.0 | 145.0 | 146.0 | 147.0 | 148.0 | 149.0 | 150.0 | 151.0 | 152.0 | 153.0 | 154.0 | 155.0 | 156.0 | 157.0 | 158.0 | 159.0 | 160.0 | 161.0 | 162.0 | 163.0 | 164.0 | 165.0 | 166.0 | 167.0 | 168.0 | 169.0 | 170.0 | 171.0 | 172.0 | 173.0 | 174.0 | 175.0 | 176.0 | 177.0 | 178.0 | 179.0 | 180.0 | 181.0 | 182.0 | 183.0 | 184.0 | 185.0 | 186.0 | 187.0 | 188.0 | 189.0 | 190.0 | 191.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
Cluster_3 | NaN | NaN | 0.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 1.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 2.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 3.0 | NaN | NaN | NaN | 4.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 5.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 6.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 7.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 8.0 | NaN | NaN | 9.0 | NaN | NaN | NaN | NaN | 10.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 11.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 12.0 | NaN | NaN | 13.0 | 14.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 15.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 16.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 17.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 18.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 19.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 20.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
Open Defect_5 | 0.0 | 1.0 | NaN | 2.0 | 3.0 | 4.0 | 5.0 | 6.0 | 7.0 | 8.0 | 9.0 | 10.0 | 11.0 | 12.0 | 13.0 | 14.0 | 15.0 | 16.0 | 17.0 | 18.0 | 19.0 | 20.0 | NaN | 21.0 | 22.0 | 23.0 | 24.0 | 25.0 | 26.0 | 27.0 | NaN | 28.0 | 29.0 | 30.0 | 31.0 | 32.0 | 33.0 | 34.0 | NaN | 35.0 | 36.0 | 37.0 | NaN | 38.0 | 39.0 | 40.0 | 41.0 | 42.0 | 43.0 | 44.0 | NaN | 45.0 | 46.0 | 47.0 | 48.0 | 49.0 | 50.0 | 51.0 | NaN | 52.0 | 53.0 | 54.0 | 55.0 | 56.0 | 57.0 | 58.0 | NaN | 59.0 | 60.0 | 61.0 | 62.0 | 63.0 | 64.0 | 65.0 | NaN | 66.0 | 67.0 | NaN | 68.0 | 69.0 | 70.0 | 71.0 | NaN | 72.0 | 73.0 | 74.0 | 75.0 | 76.0 | 77.0 | 78.0 | 79.0 | 80.0 | 81.0 | 82.0 | 83.0 | 84.0 | 85.0 | 86.0 | 87.0 | 88.0 | 89.0 | 90.0 | NaN | 91.0 | 92.0 | 93.0 | 94.0 | 95.0 | 96.0 | 97.0 | 98.0 | 99.0 | 100.0 | 101.0 | NaN | 102.0 | 103.0 | NaN | NaN | 104.0 | 105.0 | 106.0 | 107.0 | 108.0 | 109.0 | 110.0 | NaN | 111.0 | 112.0 | 113.0 | 114.0 | 115.0 | 116.0 | 117.0 | 118.0 | 119.0 | 120.0 | 121.0 | NaN | 122.0 | 123.0 | 124.0 | 125.0 | 126.0 | 127.0 | 128.0 | NaN | 129.0 | 130.0 | 131.0 | 132.0 | 133.0 | 134.0 | 135.0 | NaN | 136.0 | 137.0 | 138.0 | 139.0 | 140.0 | 141.0 | 142.0 | 143.0 | 144.0 | 145.0 | 146.0 | 147.0 | 148.0 | 149.0 | 150.0 | 151.0 | 152.0 | 153.0 | 154.0 | NaN | 155.0 | 156.0 | 157.0 | 158.0 | 159.0 | 160.0 | 161.0 | 162.0 | 163.0 | 164.0 | 165.0 | NaN | 166.0 | 167.0 | 168.0 | 169.0 | 170.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
h_caps_6 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 0.0 | 1.0 | 2.0 | 3.0 | 4.0 | 5.0 | 6.0 | 7.0 | 8.0 | 9.0 | 10.0 | 11.0 | NaN | NaN | NaN | NaN | NaN | NaN |
Zeolite_7 | NaN | NaN | 0.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 1.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 2.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 3.0 | NaN | NaN | NaN | 4.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 5.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 6.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 7.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 8.0 | NaN | NaN | 9.0 | NaN | NaN | NaN | NaN | 10.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 11.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 12.0 | NaN | NaN | 13.0 | 14.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 15.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 16.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 17.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 18.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 19.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 20.0 | NaN | NaN | NaN | NaN | NaN | 21.0 | 22.0 | 23.0 | 24.0 | 25.0 | 26.0 | 27.0 | 28.0 | 29.0 | 30.0 | 31.0 | 32.0 | NaN | NaN | NaN | NaN | NaN | NaN |
adsorbate_8 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 0.0 | 1.0 | 2.0 | 3.0 | 4.0 | 5.0 |
Zeolite_9 | NaN | NaN | 0.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 1.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 2.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 3.0 | NaN | NaN | NaN | 4.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 5.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 6.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 7.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 8.0 | NaN | NaN | 9.0 | NaN | NaN | NaN | NaN | 10.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 11.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 12.0 | NaN | NaN | 13.0 | 14.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 15.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 16.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 17.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 18.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 19.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 20.0 | NaN | NaN | NaN | NaN | NaN | 21.0 | 22.0 | 23.0 | 24.0 | 25.0 | 26.0 | 27.0 | 28.0 | 29.0 | 30.0 | 31.0 | 32.0 | 33.0 | 34.0 | 35.0 | 36.0 | 37.0 | 38.0 |