zulissimeta commited on
Commit
20d2150
·
0 Parent(s):

initial commit

Browse files
Files changed (42) hide show
  1. .gitattributes +35 -0
  2. .gitignore +13 -0
  3. LICENSE.md +23 -0
  4. README.md +24 -0
  5. app.py +871 -0
  6. examples/HEA.cif +89 -0
  7. examples/MOF_CO2.traj +0 -0
  8. examples/MOF_CO2_2H2O.traj +0 -0
  9. examples/bis(EDA)Cu.xyz +27 -0
  10. examples/catalyst.traj +0 -0
  11. examples/ethylene_carbonate.xyz +12 -0
  12. examples/gold_nanoparticle_crystal.cif +1944 -0
  13. examples/inorganic_crystal.cif +75 -0
  14. examples/metal_cplx.pdb +243 -0
  15. examples/organic_molecular_crystal.cif +257 -0
  16. examples/protein.pdb +755 -0
  17. gradio_molecule3d/LICENSE +7 -0
  18. gradio_molecule3d/README.md +438 -0
  19. gradio_molecule3d/backend/gradio_molecule3d/__init__.py +4 -0
  20. gradio_molecule3d/backend/gradio_molecule3d/molecule3d.py +352 -0
  21. gradio_molecule3d/demo/__init__.py +0 -0
  22. gradio_molecule3d/demo/app.py +72 -0
  23. gradio_molecule3d/demo/css.css +157 -0
  24. gradio_molecule3d/demo/requirements.txt +1 -0
  25. gradio_molecule3d/frontend/Example.svelte +30 -0
  26. gradio_molecule3d/frontend/Index.svelte +339 -0
  27. gradio_molecule3d/frontend/gradio.config.js +11 -0
  28. gradio_molecule3d/frontend/package-lock.json +0 -0
  29. gradio_molecule3d/frontend/package.json +36 -0
  30. gradio_molecule3d/frontend/shared/File.svelte +39 -0
  31. gradio_molecule3d/frontend/shared/FilePreview.svelte +197 -0
  32. gradio_molecule3d/frontend/shared/FileRetrieval.svelte +159 -0
  33. gradio_molecule3d/frontend/shared/FileUpload.svelte +100 -0
  34. gradio_molecule3d/frontend/shared/MolecularViewer.svelte +2438 -0
  35. gradio_molecule3d/frontend/shared/loading_spinner.svelte +44 -0
  36. gradio_molecule3d/frontend/shared/utils.ts +12 -0
  37. gradio_molecule3d/frontend/style.css +1 -0
  38. gradio_molecule3d/package.json +5 -0
  39. gradio_molecule3d/pyproject.toml +50 -0
  40. hf_calculator.py +121 -0
  41. requirements.txt +6 -0
  42. simulation_scripts.py +345 -0
.gitattributes ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
.gitignore ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .eggs/
2
+ dist/
3
+ *.pyc
4
+ __pycache__/
5
+ *.py[cod]
6
+ *$py.class
7
+ __tmp/*
8
+ *.pyi
9
+ .mypycache
10
+ .ruff_cache
11
+ node_modules
12
+ **/backend/**/templates/
13
+ **/cached_examples/*
LICENSE.md ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # License
2
+
3
+ MIT License
4
+
5
+ Copyright (c) Meta, Inc. and its affiliates.
6
+
7
+ Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ of this software and associated documentation files (the "Software"), to deal
9
+ in the Software without restriction, including without limitation the rights
10
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ copies of the Software, and to permit persons to whom the Software is
12
+ furnished to do so, subject to the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be included in all
15
+ copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
+ SOFTWARE.
README.md ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: FAIR Chem UMA Educational Demo
3
+ emoji: 😻
4
+ colorFrom: gray
5
+ colorTo: gray
6
+ sdk: gradio
7
+ sdk_version: 5.23.3
8
+ app_file: app.py
9
+ hf_oauth: true
10
+ hf_oauth_scopes:
11
+ - read-repos
12
+ ---
13
+
14
+ This repo houses the FAIR chemistry UMA educational demo. The UMA models are available under a FAIR Chemistry license at https://huggingface.co/facebook/UMA .
15
+
16
+ 1. Try examples to see how UMA works across molecules and materials
17
+ 2. Explore how the UMA tasks should be applied to different structures
18
+ 3. Try the UMA model with your own structures!
19
+
20
+ This repo also uses a fork of the excellent `gradio_molecule3d` package (https://huggingface.co/spaces/simonduerr/gradio_molecule3d/tree/main) in the `gradio_molecule3d` subdirectory for visualization of structures in 3dmol.js via gradio components. There are a number of small changes needed for the demo here, primarily:
21
+ * Add support for PBC visualization
22
+ * Add support for conversion of formats unsupported by 3dmol.js via ASE
23
+ * Remove UI elements that are unnecessary for this demo
24
+ * Add multi-model PDBs as frames to enable visualization of trajectories.
app.py ADDED
@@ -0,0 +1,871 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Copyright (c) Meta Platforms, Inc. and affiliates.
3
+
4
+ This source code is licensed under the MIT license found in the
5
+ LICENSE file in the root directory of this source tree.
6
+ """
7
+
8
+ import os
9
+ import subprocess
10
+ import sys
11
+ from pathlib import Path
12
+
13
+ import gradio as gr
14
+
15
+ from simulation_scripts import run_md_simulation, run_relaxation_simulation
16
+
17
+ DEFAULT_MOLECULAR_REPRESENTATIONS = [
18
+ {
19
+ "model": 0,
20
+ "chain": "",
21
+ "resname": "",
22
+ "style": "sphere",
23
+ "color": "Jmol",
24
+ "around": 0,
25
+ "byres": False,
26
+ "scale": 0.3,
27
+ },
28
+ {
29
+ "model": 0,
30
+ "chain": "",
31
+ "resname": "",
32
+ "style": "stick",
33
+ "color": "Jmol",
34
+ "around": 0,
35
+ "byres": False,
36
+ "scale": 0.2,
37
+ },
38
+ ]
39
+ DEFAULT_MOLECULAR_SETTINGS = {
40
+ "backgroundColor": "white",
41
+ "orthographic": False,
42
+ "disableFog": False,
43
+ }
44
+
45
+
46
+ def main():
47
+
48
+ input_structure = gr.File(
49
+ label="ASE-compatible structure",
50
+ file_types=[".cif", ".pdb", ".xyz", ".traj", "INCAR", "POSCAR"],
51
+ height=150,
52
+ )
53
+ output_traj = gr.File(
54
+ label="Simulation Trajectory (ASE traj file)",
55
+ interactive=False,
56
+ height=150,
57
+ )
58
+ input_visualization = Molecule3D(
59
+ label="Input Visualization",
60
+ reps=DEFAULT_MOLECULAR_REPRESENTATIONS,
61
+ config=DEFAULT_MOLECULAR_SETTINGS,
62
+ render=False,
63
+ inputs=[input_structure],
64
+ value=lambda x: x,
65
+ interactive=False,
66
+ )
67
+ md_steps = gr.Slider(minimum=1, maximum=500, value=100, label="MD Steps")
68
+ prerelax_steps = gr.Slider(
69
+ minimum=0, maximum=100, value=20, label="Pre-Relaxation Steps"
70
+ )
71
+ temperature_k = gr.Slider(
72
+ minimum=0.0,
73
+ maximum=1500.0, # Adjusted max value for temperature
74
+ value=300.0,
75
+ label="Temp [K]",
76
+ )
77
+ md_timestep = gr.Slider(minimum=0.1, maximum=5.0, value=1.0, label="Timestep [fs]")
78
+ md_ensemble = gr.Radio(
79
+ label="Thermodynamic Ensemble", choices=["NVE", "NVT"], value="NVE"
80
+ )
81
+ optimization_steps = gr.Slider(
82
+ minimum=1, maximum=500, value=300, step=1, label="Max Steps"
83
+ )
84
+ fmax = gr.Slider(value=0.05, minimum=0.001, maximum=0.5, label="Opt. Fmax [eV/Å]")
85
+
86
+ task_name = gr.Radio(
87
+ value="OMol", choices=["OMol", "OMC", "OMat", "OC20", "ODAC"], label="Task Name"
88
+ )
89
+
90
+ gr.Markdown("OMol-specific settings for total charge and spin multiplicity")
91
+ total_charge = gr.Slider(
92
+ value=0, label="Total Charge", minimum=-10, maximum=10, step=1
93
+ )
94
+ spin_multiplicity = gr.Slider(
95
+ value=1, maximum=11, minimum=1, step=1, label="Spin Multiplicity "
96
+ )
97
+ relax_unit_cell = gr.Checkbox(value=False, label="Relax Unit Cell")
98
+
99
+ md_button = gr.Button("Run MD Simulation")
100
+ optimization_button = gr.Button("Run Optimization")
101
+
102
+ output_structure = Molecule3D(
103
+ label="Simulation Visualization",
104
+ reps=DEFAULT_MOLECULAR_REPRESENTATIONS,
105
+ config=DEFAULT_MOLECULAR_SETTINGS,
106
+ render=False,
107
+ elem_classes="structures",
108
+ height=500,
109
+ inputs=[output_traj],
110
+ value=lambda x: x,
111
+ interactive=False,
112
+ )
113
+
114
+ explanation = gr.Markdown()
115
+ explanation_buffer = gr.Markdown()
116
+
117
+ output_text = gr.Code(lines=20, max_lines=30, label="Log", interactive=False)
118
+
119
+ reproduction_script = gr.Code(
120
+ interactive=False,
121
+ max_lines=30,
122
+ language="python",
123
+ label="ASE Reproduction Script",
124
+ )
125
+
126
+ with gr.Blocks(theme=gr.themes.Ocean()) as demo:
127
+ with gr.Row():
128
+ with gr.Column(scale=2):
129
+
130
+ with gr.Column(variant="panel"):
131
+ gr.Markdown(
132
+ "# Meta's Universal Model for Atoms (UMA) Educational Demo"
133
+ )
134
+
135
+ with gr.Tab("1. Your first UMA simulation"):
136
+
137
+ with gr.Row():
138
+ gr.Examples(
139
+ examples=[
140
+ [
141
+ str(
142
+ Path(__file__).parent
143
+ / "./examples/metal_cplx.pdb"
144
+ ),
145
+ 100,
146
+ 20,
147
+ 1.0,
148
+ 300.0,
149
+ "NVE",
150
+ "OMol",
151
+ 1,
152
+ 6,
153
+ "Congratulations, you just ran your first UMA simulation! This is a molecular dynamics simulation of a transition metal complex that shows the atoms vibrating from thermal motion. Now try running some of the examples in the next tab to more thoroughly explore how UMA can be applied to different domains and types of structures.",
154
+ ],
155
+ [
156
+ str(
157
+ Path(__file__).parent
158
+ / "./examples/inorganic_crystal.cif"
159
+ ),
160
+ 200,
161
+ 20,
162
+ 1.0,
163
+ 300.0,
164
+ "NVE",
165
+ "OMat",
166
+ 0,
167
+ 1,
168
+ "Congratulations, you just ran your first UMA simulation! This is a molecular dynamics simulation of a transition metal complex that shows the atoms vibrating from thermal motion. Now try running some of the examples in the next tab to more thoroughly explore how UMA can be applied to different domains and types of structures.",
169
+ ],
170
+ ],
171
+ example_labels=[
172
+ "A transition metal complex",
173
+ "An inorganic crystal",
174
+ ],
175
+ inputs=[
176
+ input_structure,
177
+ md_steps,
178
+ prerelax_steps,
179
+ md_timestep,
180
+ temperature_k,
181
+ md_ensemble,
182
+ task_name,
183
+ total_charge,
184
+ spin_multiplicity,
185
+ explanation_buffer,
186
+ ],
187
+ outputs=[
188
+ output_traj,
189
+ output_text,
190
+ reproduction_script,
191
+ explanation,
192
+ ],
193
+ fn=run_md_simulation,
194
+ run_on_click=True,
195
+ cache_examples=True,
196
+ label="Molecular Dynamics Examples",
197
+ )
198
+
199
+ gr.Markdown(
200
+ """
201
+ Start by clicking one of the above examples to see how the demo works and what the inputs and outputs will look like.
202
+ * Every example is a specific molecular structure or material that can be simulated using the UMA model.
203
+ * Each simulation you see would take days or weeks using a traditional quantum chemistry simulation, but UMA can do it in seconds or minutes!
204
+ * Examples in the demo are cached ahead of time so they should load right away, but if you run a custom simulation you'll see a progress bar while the simulation runs.
205
+
206
+ When you've run your first simulation, click on the next tab above to explore the UMA model in more detail and see how it works across many different domains/examples!
207
+ """
208
+ )
209
+
210
+ with gr.Tab("2. Explore UMA's capabilities"):
211
+ gr.Markdown(
212
+ """
213
+ These next examples are designed to show how the UMA model can be applied to different domains and types of structures, and how different model inputs can impact the results!
214
+ * As you try each one, look at how the inputs change below, and the simulation outputs change on the right
215
+ * Each UMA task corresponds to a different domain of chemistry, and a different Density Functional Theory (DFT) code and level of theory that was used for the training data.
216
+ * Feel free to try changing some of the settings below and re-run the simulations to see how the results can vary!
217
+ """
218
+ )
219
+ gr.Examples(
220
+ examples=[
221
+ [
222
+ str(
223
+ Path(__file__).parent
224
+ / "./examples/metal_cplx.pdb"
225
+ ),
226
+ 100,
227
+ 20,
228
+ 1.0,
229
+ 300.0,
230
+ "NVE",
231
+ "OMol",
232
+ 1,
233
+ 6,
234
+ "This metal complex showcases the UMA's ability to handle complicated transition metal complexes with ligands, spin, and charge.",
235
+ ],
236
+ [
237
+ str(
238
+ Path(__file__).parent
239
+ / "./examples/organic_molecular_crystal.cif"
240
+ ),
241
+ 200,
242
+ 20,
243
+ 1.0,
244
+ 300.0,
245
+ "NVE",
246
+ "OMC",
247
+ 0,
248
+ 1,
249
+ "This organic crystal showcases the UMA's ability to handle organic molecular crystals using the OMC task, using a random packing of a molecule from OE62. You could also try using the OMol or OMat tasks and see how the simulations differ!",
250
+ ],
251
+ [
252
+ str(
253
+ Path(__file__).parent
254
+ / "./examples/inorganic_crystal.cif"
255
+ ),
256
+ 200,
257
+ 20,
258
+ 1.0,
259
+ 300.0,
260
+ "NVE",
261
+ "OMat",
262
+ 0,
263
+ 1,
264
+ "This inorganic crystal from the Materials Project showcases the UMA's ability to handle inorganic materials using the OMat task. You should be careful with the output energies since the analysis might require careful application of the Materials Project GGA/GGA+U correction schemes.",
265
+ ],
266
+ [
267
+ str(Path(__file__).parent / "./examples/HEA.cif"),
268
+ 200,
269
+ 20,
270
+ 1.0,
271
+ 300.0,
272
+ "NVE",
273
+ "OMat",
274
+ 0,
275
+ 1,
276
+ "High-entropy alloys are materials with 4 or more elements, and this example shows the OMat model can also be applied to HEAs. This particular HEA is equimolar Cr/Fe/Ni/Sn, but could exist in other lattice configurations. ",
277
+ ],
278
+ [
279
+ str(
280
+ Path(__file__).parent
281
+ / "./examples/catalyst.traj"
282
+ ),
283
+ 200,
284
+ 20,
285
+ 1.0,
286
+ 300.0,
287
+ "NVE",
288
+ "OC20",
289
+ 0,
290
+ 1,
291
+ "This example shows the OC20 model can be applied to small molecules on a catalyst surface, and that OC20 has recently been extended with datasets for multi-adsorbate interactions. Notice some of the adsorbates wrap around the periodic boundary conditions. Some of the adsorbates are weakly bound and desorbing from the surface based on this starting configuration.",
292
+ ],
293
+ [
294
+ str(
295
+ Path(__file__).parent
296
+ / "./examples/gold_nanoparticle_crystal.cif"
297
+ ),
298
+ 200,
299
+ 20,
300
+ 1.0,
301
+ 300.0,
302
+ "NVE",
303
+ "OMat",
304
+ 0,
305
+ 1,
306
+ "This example is an experimentally solved crystal structure for a thiolate protected gold nanocluster from an[open-access academic paper](https://pubs.rsc.org/en/content/articlelanding/2016/sc/c5sc02134k) and [available in the COD](https://www.crystallography.net/cod/1540567.html). This is a fun example because it combines small molecules, inorganic materials, and surface chemistry, so it's not so clear which task to use. Try the OMat, OMol, and OC20 tasks to see how the results differ! Further, the experimental paper reported different crystal structures based on the charge and spin multiplicity, so try changing the charge and spin multiplicity to see how the results differ.",
307
+ ],
308
+ [
309
+ str(
310
+ Path(__file__).parent
311
+ / "./examples/ethylene_carbonate.xyz"
312
+ ),
313
+ 500,
314
+ 20,
315
+ 1.0,
316
+ 1000.0,
317
+ "NVE",
318
+ "OMol",
319
+ 0,
320
+ 1,
321
+ "Ethylene carbonate is a common electrolyte in batteries, and an important precursor to the solid/electrolyte interface (SEI) formation. This example is the neutral version of ethylene carbonate and it is quite stable even at high temperatures! Try the radical anion version of ethylene carbonate in the next example.",
322
+ ],
323
+ [
324
+ str(
325
+ Path(__file__).parent
326
+ / "./examples/ethylene_carbonate.xyz"
327
+ ),
328
+ 500,
329
+ 20,
330
+ 1.0,
331
+ 1000.0,
332
+ "NVE",
333
+ "OMol",
334
+ -1,
335
+ 2,
336
+ "With charge of -1 and spin multiplicity of 2, this radical anion version of ethylene carbonate is much less stable than the neutral version and can undergo spontaneous ring-opening at high temperatures, which initiates the formation of a battery's solid/electrolyte interface (SEI). If the simulation doesn't show a ring opening reaction, try clicking the molecular dynamic buttons again to see another short simulation. Only OMol currently supports arbitrary charge/spin multiplicity.",
337
+ ],
338
+ [
339
+ str(
340
+ Path(__file__).parent / "./examples/protein.pdb"
341
+ ),
342
+ 200,
343
+ 20,
344
+ 1.0,
345
+ 300.0,
346
+ "NVE",
347
+ "OMol",
348
+ 0,
349
+ 1,
350
+ "This is a solvated structure of a small protein fragment using the OMol task. Very little is likely happen in a very short MD simulations. Try increasing the number of MD steps to see how the protein moves. You can also try using the OMat task, but be careful with the results since the OMat task is not trained on solvated systems.",
351
+ ],
352
+ [
353
+ str(
354
+ Path(__file__).parent
355
+ / "./examples/MOF_CO2.traj"
356
+ ),
357
+ 200,
358
+ 20,
359
+ 1.0,
360
+ 300.0,
361
+ "NVE",
362
+ "ODAC",
363
+ 0,
364
+ 1,
365
+ "This is a metal organic framework (MOF) structure using the ODac task. You might study structures like if designing MOFs for direct air capture calculations. Look carefully for the red/gray CO2 molecule in the pores of the MOF! You can also try the OMol and OMat tasks to see if the results differ.",
366
+ ],
367
+ ],
368
+ example_labels=[
369
+ "Simulate a transition metal complex",
370
+ "Simulate an organic molecular crystal",
371
+ "Simulate an inorganic crystal",
372
+ "Simulate a high-entropy alloy",
373
+ "Simulate a catalyst surface/adsorbate",
374
+ "Simulate a ligated gold nanoparticle crystal",
375
+ "Simulate a neutral ethylene carbonate",
376
+ "Simulate a radical anion ethylene carbonate",
377
+ "Simulate a solvated protein",
378
+ "Simulate CO2 in a metal organic framework",
379
+ ],
380
+ inputs=[
381
+ input_structure,
382
+ md_steps,
383
+ prerelax_steps,
384
+ md_timestep,
385
+ temperature_k,
386
+ md_ensemble,
387
+ task_name,
388
+ total_charge,
389
+ spin_multiplicity,
390
+ explanation_buffer,
391
+ ],
392
+ outputs=[
393
+ output_traj,
394
+ output_text,
395
+ reproduction_script,
396
+ explanation,
397
+ ],
398
+ fn=run_md_simulation,
399
+ run_on_click=True,
400
+ cache_examples=True,
401
+ label="Molecular Dynamics Examples",
402
+ )
403
+
404
+ gr.Examples(
405
+ examples=[
406
+ [
407
+ str(
408
+ Path(__file__).parent
409
+ / "./examples/bis(EDA)Cu.xyz"
410
+ ),
411
+ 300,
412
+ 0.05,
413
+ "OMol",
414
+ 1,
415
+ 1,
416
+ False,
417
+ "This is a super fun example of a transition metal complex that changes its geometry based on the assumed charge/spin multiplicity and actually has different local minima. It highlights the ability of the OMol task to handle these additional inputs. In this first example it forms a tetragonal geometry - try clicking on the next example (with charge=+2 and spin multiplicity 2) to see the other local minima!",
418
+ ],
419
+ [
420
+ str(
421
+ Path(__file__).parent
422
+ / "./examples/bis(EDA)Cu.xyz"
423
+ ),
424
+ 300,
425
+ 0.05,
426
+ "OMol",
427
+ 2,
428
+ 2,
429
+ False,
430
+ "This is a super fun example of a transition metal complex that changes its geometry based on the assumed charge/spin multiplicity and actually has different local minima. In contrast to the previous example (charge=+1 and spin multiplicity 1), this one forms a square planar geometry.",
431
+ ],
432
+ [
433
+ str(
434
+ Path(__file__).parent
435
+ / "./examples/metal_cplx.pdb"
436
+ ),
437
+ 300,
438
+ 0.05,
439
+ "OMol",
440
+ 1,
441
+ 6,
442
+ False,
443
+ "This metal complex showcases the UMA's ability to handle complicated transition metal complexes with ligands, spin, and charge.",
444
+ ],
445
+ [
446
+ str(
447
+ Path(__file__).parent
448
+ / "./examples/organic_molecular_crystal.cif"
449
+ ),
450
+ 300,
451
+ 0.05,
452
+ "OMC",
453
+ 0,
454
+ 1,
455
+ True,
456
+ "This organic crystal showcases the UMA's ability to handle organic molecular crystals using the OMC task, using a random packing of a molecule from OE62. You could also try using the OMol or OMat tasks and see how the simulations differ!",
457
+ ],
458
+ [
459
+ str(
460
+ Path(__file__).parent
461
+ / "./examples/inorganic_crystal.cif"
462
+ ),
463
+ 300,
464
+ 0.05,
465
+ "OMat",
466
+ 0,
467
+ 1,
468
+ True,
469
+ "This inorganic crystal from the Materials Project showcases the UMA's ability to handle inorganic materials using the OMat task. You should be careful with the output energies since the analysis might require careful application of the Materials Project GGA/GGA+U correction schemes.",
470
+ ],
471
+ [
472
+ str(Path(__file__).parent / "./examples/HEA.cif"),
473
+ 300,
474
+ 0.05,
475
+ "OMat",
476
+ 0,
477
+ 1,
478
+ True,
479
+ "High-entropy alloys are materials with 4 or more elements, and this example shows the OMat model can also be applied to HEAs. This particular HEA is equimolar Cr/Fe/Ni/Sn, but could exist in other lattice configurations. ",
480
+ ],
481
+ [
482
+ str(
483
+ Path(__file__).parent
484
+ / "./examples/catalyst.traj"
485
+ ),
486
+ 300,
487
+ 0.05,
488
+ "OC20",
489
+ 0,
490
+ 1,
491
+ False,
492
+ "This example shows the OC20 model can be applied to small molecules on a catalyst surface, and that OC20 has recently been extended with datasets for multi-adsorbate interactions. Notice some of the adsorbates wrap around the periodic boundary conditions. Some of the adsorbates are weakly bound and desorbing from the surface based on this starting configuration.",
493
+ ],
494
+ [
495
+ str(
496
+ Path(__file__).parent / "./examples/protein.pdb"
497
+ ),
498
+ 300,
499
+ 0.05,
500
+ "OMol",
501
+ 0,
502
+ 1,
503
+ True,
504
+ "This is a solvated structure of a small protein fragment using the OMol task. Very little is likely happen in a very short MD simulations. Try increasing the number of MD steps to see how the protein moves. You can also try using the OMat task, but be careful with the results since the OMat task is not trained on solvated systems.",
505
+ ],
506
+ [
507
+ str(
508
+ Path(__file__).parent
509
+ / "./examples/MOF_CO2_2H2O.traj"
510
+ ),
511
+ 300,
512
+ 0.05,
513
+ "ODAC",
514
+ 0,
515
+ 1,
516
+ False,
517
+ "This is a metal organic framework (MOF) structure using the ODac task. You might study structures like if designing MOFs for direct air capture (DAC) calculations. Look carefully for the co-adsorption between CO2 and two water molecules in the pore, which you might study if you were interested in the effect of humidity on DAC performance! You can also try the OMol and OMat tasks to see if the results differ.",
518
+ ],
519
+ ],
520
+ example_labels=[
521
+ "Relax bis(EDA)Cu TM complex with charge=1, spin=1",
522
+ "Relax bis(EDA)Cu TM complex with charge=2, spin=2",
523
+ "Relax a transition metal complex w ligands",
524
+ "Relax an organic molecular crystal",
525
+ "Relax an inorganic crystal",
526
+ "Relax a high-entropy alloy",
527
+ "Relax a catalyst surface/adsorbate",
528
+ "Relax a solvated protein",
529
+ "Relax co-adsorbed H2O/CO2 in a metal organic framework",
530
+ ],
531
+ inputs=[
532
+ input_structure,
533
+ optimization_steps,
534
+ fmax,
535
+ task_name,
536
+ total_charge,
537
+ spin_multiplicity,
538
+ relax_unit_cell,
539
+ explanation_buffer,
540
+ ],
541
+ outputs=[
542
+ output_traj,
543
+ output_text,
544
+ reproduction_script,
545
+ explanation,
546
+ ],
547
+ fn=run_relaxation_simulation,
548
+ run_on_click=True,
549
+ cache_examples=True,
550
+ label="Relaxation Examples",
551
+ )
552
+
553
+ gr.Markdown(
554
+ "Once you understand how the UMA model can be applied to different types of molecules and materials, the final tab above will help you try it out with your own structures! "
555
+ )
556
+
557
+ with gr.Tab("3. Try UMA with your own structures!"):
558
+ gr.Markdown(
559
+ """
560
+ As the final step of the demo, try running your own structure through the UMA model!
561
+
562
+ To use a custom input structure with this demo:
563
+ 1. [Request gated model access.](https://huggingface.co/facebook/UMA) Requests for model access are typically processed within a matter of minutes.
564
+ 2. Login to Hugging Face using the "Sign in with Hugging Face button" in the .
565
+ 3. Then upload a structure file below and click run!
566
+
567
+ * Note that uploaded structure will be stored by this demo to analyze model usage and identify domains where model accuracy can be improved.
568
+ * If you get a redirect error when logging in, please try visiting the direct demo url (https://facebook-fairchem-uma-demo.hf.space/) and try again
569
+ * Your structure should be in a format supported by ASE 3.25, including .xyz, .cif, .pdb, ASE .traj, INCAR, or POSCAR.
570
+ * Your structure should either have periodic boundary conditions (PBC) all True, or all False. Support for mixed PBC may be added in the future.
571
+ """
572
+ )
573
+
574
+ with gr.Column(variant="panel"):
575
+ gr.Markdown(
576
+ "## Learn more about the Universal Model for Atoms (UMA)"
577
+ )
578
+ with gr.Accordion(
579
+ "What is the Universal Model for Atoms?", open=False
580
+ ):
581
+ gr.Markdown(
582
+ """
583
+ * UMA models predict motion and behavior at the atomic scale, ultimately reducing the development cycle in molecular and materials discovery and unlocking new possibilities for innovation and impact.
584
+ * UMA models are based on Density Functional Theory (DFT) training datasets. DFT simulations are a commonly used quantum chemistry method to simulate and understand behavior at the atomic scale.
585
+ * UMA models are large mixture-of-linear-experts graph networks models trained on billions of atoms across five open-science simulation datasets released by the FAIR Chemistry team over the past 5 years. This demo uses the small UMA model with 146M total parameters, 32 experts, and 6M active parameters at any time to predict across all of these domains.
586
+
587
+ Read the UMA paper for details or download the UMA model and FAIR Chemistry repository to use this yourself!
588
+ """
589
+ )
590
+ with gr.Accordion(
591
+ "Should I trust the UMA simulations?", open=False
592
+ ):
593
+ gr.Markdown(
594
+ """
595
+ * The UMA model paper contains rigorous accuracy benchmarks on a number of validation sets across chemistry and materials science. As of model release the UMA model was at or near the state-of-the-art for generalization machine learning potentials. Read the UMA paper for details.
596
+ * Rigorously predicting when AI/ML models will extrapolate (or not) to new domains is an ongoing research area. The best approach is to find or build benchmarks that are similar to the questions you are studying, or be prepared to run some DFT simulations on predictions to validate results on a sample of structures that are relevant to your research problem.
597
+ """
598
+ )
599
+ with gr.Accordion("Why does this matter?", open=False):
600
+ gr.Markdown(
601
+ """
602
+ * Many important technological challenges, including developing new molecules to accelerate industrial progress and discovering new materials for energy storage and climate change mitigation, require scientists and engineers to design at the atomic scale.
603
+ * Traditional experimental discovery and design processes are extremely time consuming and often take decades from ideation to scaled manufacturing.
604
+ * Meta's Fundamental AI Research Lab (FAIR) is drastically accelerating this process by developing accurate and generalizable machine learning models, building on work by academic, industrial, and national lab collaborators.
605
+ """
606
+ )
607
+ with gr.Accordion(
608
+ "Open source packages used in this demo", open=False
609
+ ):
610
+ gr.Markdown(
611
+ """
612
+ * The model code is available on github at [FAIR chemistry repo](https://github.com/facebookresearch/fairchem)
613
+ * This demo builds on a number of great open source packages like [gradio_molecule3d](https://huggingface.co/spaces/simonduerr/gradio_molecule3d), [3dmol.js](https://3dmol.csb.pitt.edu/), [ASE](https://wiki.fysik.dtu.dk/ase/), and many others!
614
+ """
615
+ )
616
+
617
+ gr.Markdown("## Simulation inputs")
618
+
619
+ with gr.Column(variant="panel"):
620
+ gr.Markdown("### 1. Example structure (or upload your own!)")
621
+ with gr.Row():
622
+ with gr.Column():
623
+
624
+ input_structure.render()
625
+
626
+ gr.LoginButton(size="large")
627
+
628
+ gr.Markdown(
629
+ """
630
+ To use your own structures, you need access to the [gated UMA model repository](https://huggingface.co/facebook/UMA) and you need to login with the button above.
631
+ * See the final tab above '3. Try UMA with your own structures!' for more details and debugging steps!
632
+ * Note that uploaded structure will be stored by this demo to analyze model usage and identify domains where model accuracy can be improved.
633
+ * If you get a redirect error when logging in, please try visiting the direct demo url (https://facebook-fairchem-uma-demo.hf.space/) and try again
634
+
635
+ """
636
+ )
637
+ with gr.Column(scale=3):
638
+ input_visualization.render()
639
+
640
+ with gr.Column(variant="panel"):
641
+ gr.Markdown("### 2. Choose the UMA Model Task")
642
+ with gr.Row():
643
+ with gr.Column():
644
+ task_name.render()
645
+
646
+ with gr.Row():
647
+ total_charge.render()
648
+ spin_multiplicity.render()
649
+
650
+ with gr.Column(scale=2):
651
+ with gr.Tabs() as task_name_tabs:
652
+ with gr.TabItem("OMol", id=0):
653
+ gr.Markdown(
654
+ """
655
+
656
+ OMol25 comprises over 100 million calculations covering small molecules, biomolecules, metal complexes, and electrolytes.
657
+
658
+ **Relevant applications:** Biology, organic chemistry, protein folding, small-molecule pharmaceuticals, organic liquid properties, homogeneous catalysis
659
+
660
+ **Level of theory:** wB97M-V/def2-TZVPD as implemented in ORCA6, including many-body dispersion. All solvation should be explicit.
661
+
662
+ **Additional inputs:** total charge and spin multiplicity. If you don't know what these are, you should be very careful if modeling charged or open-shell systems. This can be used to study radical chemistry or understand the impact of magnetic states on the structure of a molecule.
663
+
664
+ **Caveats:** All training data is aperiodic, so any periodic systems should be treated with some caution. Probably won't work well for inorganic materials.
665
+ """
666
+ )
667
+ with gr.TabItem("OMC", id=1):
668
+ gr.Markdown(
669
+ """
670
+
671
+ OMC25 comprises ~25 million calculations of organic molecular crystals from random packing of OE62 structures into various 3D unit cells.
672
+
673
+ **Relevant applications:** Pharmaceutical packaging, bio-inspired materials, organic electronics, organic LEDs
674
+
675
+ **Level of theory:** PBE+D3 as implemented in VASP.
676
+
677
+ **Additional inputs:** UMA has not seen varying charge or spin multiplicity for the OMC task, and expects total_charge=0 and spin multiplicity=0 as model inputs.
678
+
679
+ """
680
+ )
681
+
682
+ with gr.TabItem("OMat", id=2):
683
+ gr.Markdown(
684
+ """
685
+
686
+ OMat24 comprises >100 million calculations or inorganic materials collected from many open databases like Materials Project and Alexandria, and randomly sampled far from equilibria.
687
+
688
+ **Relevant applications:** Inorganic materials discovery, solar photovoltaics, advanced alloys, superconductors, electronic materials, optical materials
689
+
690
+ **Level of theory:** PBE/PBE+U as implemented in VASP using Materials Project suggested settings, except with VASP6 pseudopotentials. No dispersion.
691
+
692
+ **Additional inputs:** UMA has not seen varying charge or spin multiplicity for the OMat task, and expects total_charge=0 and spin multiplicity=0 as model inputs.
693
+
694
+ **Caveats:** Spin polarization effects are included, but you can't select the magnetic state. Further, OMat24 did not fully sample possible spin states in the training data.
695
+ """
696
+ )
697
+
698
+ with gr.TabItem("OC20", id=3):
699
+ gr.Markdown(
700
+ """
701
+
702
+ OC20 comprises >100 million calculations of small molecules adsorbed on catalyst surfaces formed from materials in the Materials Project.
703
+
704
+ **Relevant applications:** Renewable energy, catalysis, fuel cells, energy conversion, sustainable fertilizer production, chemical refining, plastics synthesis/upcycling
705
+
706
+ **Level of theory:** RPBE as implemented in VASP, with VASP5.4 pseudopotentials. No dispersion.
707
+
708
+ **Additional inputs:** UMA has not seen varying charge or spin multiplicity for the OC20 task, and expects total_charge=0 and spin multiplicity=0 as model inputs.
709
+
710
+ **Caveats:** No oxides or explicit solvents are included in OC20. The model works surprisingly well for transition state searches given the nature of the training data, but you should be careful. RPBE works well for small molecules, but dispersion will be important for larger molecules on surfaces.
711
+ """
712
+ )
713
+
714
+ with gr.TabItem("ODAC", id=4):
715
+ gr.Markdown(
716
+ """
717
+
718
+ ODAC23 comprises >10 million calculations of CO2/H2O molecules adsorbed in Metal Organic Frameworks sampled from various open databases like CoreMOF.
719
+
720
+ **Relevant applications:** Direct air capture, carbon capture and storage, CO2 conversion, catalysis
721
+
722
+ **Level of theory:** PBE+D3 as implemented in VASP, with VASP5.4 pseudopotentials.
723
+
724
+ **Additional inputs:** UMA has not seen varying charge or spin multiplicity for the ODAC task, and expects total_charge=0 and spin multiplicity=0 as model inputs.
725
+
726
+ **Caveats:** The ODAC23 dataset only contains CO2/H2O water absorption, so anything more than might be inaccurate (e.g. hydrocarbons in MOFs). Further, there is a limited number of bare-MOF structures in the training data, so you should be careful if you are using a new MOF structure.
727
+ """
728
+ )
729
+
730
+ with gr.Column(variant="panel"):
731
+ gr.Markdown("### 3. Run Your Simulation")
732
+ with gr.Row():
733
+ with gr.Column():
734
+ gr.Markdown("### Molecular Dynamics")
735
+ prerelax_steps.render()
736
+ md_steps.render()
737
+ temperature_k.render()
738
+ md_timestep.render()
739
+ md_ensemble.render()
740
+ md_button.render()
741
+
742
+ with gr.Column():
743
+ gr.Markdown("### Relaxation")
744
+ optimization_steps.render()
745
+ fmax.render()
746
+ relax_unit_cell.render()
747
+ optimization_button.render()
748
+
749
+ with gr.Column(variant="panel", elem_id="results", min_width=500):
750
+ gr.Markdown("## UMA Simulation Results")
751
+ with gr.Tab("Visualization"):
752
+ output_structure.render()
753
+ with gr.Accordion(
754
+ "What should I look for in this simulation?", open=True
755
+ ):
756
+ explanation.render()
757
+ with gr.Accordion("Model Disclaimers", open=False):
758
+ gr.Markdown(
759
+ """
760
+ * While UMA represents a step forward in terms of having a single model that works across chemistry and materials science, we know the model has limitations and weaknesses and there will be cases where the model fails to produce an accurate simulation.
761
+ * Ab-initio calculations are not perfect. You should always consider the limitations of the level of theory, the code, and the pseudopotentials.
762
+ """
763
+ )
764
+ with gr.Accordion(
765
+ "How long should I wait for this simulation?", open=False
766
+ ):
767
+ gr.Markdown(
768
+ """
769
+ * Every calculation uses a pool of GPUs to process simulations for all current users. You can achieve much higher performance with a dedicated GPU and MD-mode enabled.
770
+ * Most simulation should finish within a few minutes. Example results are cached, and if you are running a custom simulation you can follow the progress bar
771
+ * if you don't see progress or the simulation takes more than ~5min, probably there was an error and please try submitting again.
772
+ * If you notice any issues please submit them as issues on the [FAIR Chemistry GitHub](https://github.com/facebookresearch/fairchem).
773
+ """
774
+ )
775
+
776
+ output_traj.render()
777
+ with gr.Tab("Log"):
778
+ output_text.render()
779
+ with gr.Tab("Script"):
780
+ reproduction_script.render()
781
+
782
+ md_button.click(
783
+ run_md_simulation,
784
+ inputs=[
785
+ input_structure,
786
+ md_steps,
787
+ prerelax_steps,
788
+ md_timestep,
789
+ temperature_k,
790
+ md_ensemble,
791
+ task_name,
792
+ total_charge,
793
+ spin_multiplicity,
794
+ ],
795
+ outputs=[output_traj, output_text, reproduction_script, explanation],
796
+ scroll_to_output=True,
797
+ concurrency_limit=10,
798
+ concurrency_id="simulation_queue",
799
+ )
800
+ optimization_button.click(
801
+ run_relaxation_simulation,
802
+ inputs=[
803
+ input_structure,
804
+ optimization_steps,
805
+ fmax,
806
+ task_name,
807
+ total_charge,
808
+ spin_multiplicity,
809
+ relax_unit_cell,
810
+ ],
811
+ outputs=[output_traj, output_text, reproduction_script, explanation],
812
+ scroll_to_output=True,
813
+ concurrency_id="simulation_queue",
814
+ )
815
+
816
+ # Change the tab based on the current task name
817
+ task_name.input(
818
+ lambda x: gr.Tabs(
819
+ selected={"OMol": 0, "OMC": 1, "OMat": 2, "OC20": 3, "ODAC": 4}[x]
820
+ ),
821
+ [task_name],
822
+ task_name_tabs,
823
+ )
824
+
825
+ # Only show charge/spin inputs for OMol task
826
+ task_name.input(
827
+ lambda x: (
828
+ gr.Number(visible=True) if x == "OMol" else gr.Number(visible=False)
829
+ ),
830
+ [task_name],
831
+ total_charge,
832
+ )
833
+ task_name.input(
834
+ lambda x: (
835
+ gr.Number(visible=True) if x == "OMol" else gr.Number(visible=False)
836
+ ),
837
+ [task_name],
838
+ spin_multiplicity,
839
+ )
840
+
841
+ demo.launch()
842
+
843
+
844
+ if __name__ == "__main__":
845
+
846
+ # On load, build and install the gradio_molecul3d fork
847
+ subprocess.call(
848
+ ["gradio", "cc", "install"], cwd=Path(__file__).parent / "gradio_molecule3d/"
849
+ )
850
+ subprocess.call(
851
+ ["gradio", "cc", "build"], cwd=Path(__file__).parent / "gradio_molecule3d/"
852
+ )
853
+ subprocess.call(
854
+ [
855
+ sys.executable,
856
+ "-m",
857
+ "pip",
858
+ "install",
859
+ Path(__file__).parent
860
+ / "gradio_molecule3d/"
861
+ / "dist/gradio_molecule3d-0.0.7-py3-none-any.whl",
862
+ ],
863
+ cwd=Path(__file__).parent.parent,
864
+ )
865
+
866
+ os.makedirs("/data/custom_inputs", exist_ok=True)
867
+
868
+ # Load gradio_molecule3d only once it's built and installed
869
+ from gradio_molecule3d import Molecule3D
870
+
871
+ main()
examples/HEA.cif ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ data_image0
2
+ _chemical_formula_structural Cr16Fe16Ni16Sn16
3
+ _chemical_formula_sum "Cr16 Fe16 Ni16 Sn16"
4
+ _cell_length_a 6.28036836238552
5
+ _cell_length_b 9.729504828593834
6
+ _cell_length_c 16.851996690897195
7
+ _cell_angle_alpha 95.52183275573677
8
+ _cell_angle_beta 98.573104985915
9
+ _cell_angle_gamma 97.41755573965753
10
+
11
+ _space_group_name_H-M_alt "P 1"
12
+ _space_group_IT_number 1
13
+
14
+ loop_
15
+ _space_group_symop_operation_xyz
16
+ 'x, y, z'
17
+
18
+ loop_
19
+ _atom_site_type_symbol
20
+ _atom_site_label
21
+ _atom_site_symmetry_multiplicity
22
+ _atom_site_fract_x
23
+ _atom_site_fract_y
24
+ _atom_site_fract_z
25
+ _atom_site_occupancy
26
+ Cr Cr1 1.0 0.0 0.0 0.0 1.0000
27
+ Cr Cr2 1.0 0.37500000000000006 0.25 0.3125 1.0000
28
+ Cr Cr3 1.0 0.06250000000000003 0.375 0.71875 1.0000
29
+ Cr Cr4 1.0 0.25 0.5 0.875 1.0000
30
+ Cr Cr5 1.0 0.5625 0.37499999999999994 0.96875 1.0000
31
+ Cr Cr6 1.0 0.12499999999999997 0.7499999999999999 0.4375 1.0000
32
+ Cr Cr7 1.0 0.6875000000000001 0.12499999999999986 0.9062500000000001 1.0000
33
+ Cr Cr8 1.0 0.37500000000000006 0.75 0.31250000000000006 1.0000
34
+ Cr Cr9 1.0 0.7500000000000001 0.0 0.625 1.0000
35
+ Cr Cr10 1.0 0.3125 0.375 0.09375000000000003 1.0000
36
+ Cr Cr11 1.0 0.6875000000000001 0.625 0.40625 1.0000
37
+ Cr Cr12 1.0 0.8749999999999999 0.7499999999999998 0.5625 1.0000
38
+ Cr Cr13 1.0 0.625 0.24999999999999992 0.1875 1.0000
39
+ Cr Cr14 1.0 0.125 0.25 0.4375 1.0000
40
+ Cr Cr15 1.0 0.3125 0.375 0.59375 1.0000
41
+ Cr Cr16 1.0 0.43750000000000006 0.125 0.53125 1.0000
42
+ Fe Fe1 1.0 0.18750000000000003 0.125 0.15625 1.0000
43
+ Fe Fe2 1.0 0.5625000000000001 0.375 0.46875000000000006 1.0000
44
+ Fe Fe3 1.0 0.7500000000000001 0.5 0.625 1.0000
45
+ Fe Fe4 1.0 0.9375000000000001 0.625 0.7812500000000001 1.0000
46
+ Fe Fe5 1.0 0.12499999999999997 0.7499999999999998 0.9375000000000001 1.0000
47
+ Fe Fe6 1.0 0.6875000000000001 0.12499999999999996 0.40625 1.0000
48
+ Fe Fe7 1.0 0.7499999999999999 0.49999999999999994 0.12499999999999997 1.0000
49
+ Fe Fe8 1.0 0.3125 0.8749999999999999 0.59375 1.0000
50
+ Fe Fe9 1.0 0.8750000000000001 0.25 0.0625 1.0000
51
+ Fe Fe10 1.0 0.8125000000000001 0.8750000000000001 0.84375 1.0000
52
+ Fe Fe11 1.0 0.18750000000000003 0.625 0.15624999999999997 1.0000
53
+ Fe Fe12 1.0 0.1250000000000001 0.25 0.9375000000000001 1.0000
54
+ Fe Fe13 1.0 0.5 0.5 0.25 1.0000
55
+ Fe Fe14 1.0 0.8125 0.375 0.34375000000000006 1.0000
56
+ Fe Fe15 1.0 0.7500000000000001 0.0 0.125 1.0000
57
+ Fe Fe16 1.0 0.8750000000000001 0.7499999999999999 0.06250000000000001 1.0000
58
+ Ni Ni1 1.0 0.3125000000000001 0.8750000000000001 0.09375 1.0000
59
+ Ni Ni2 1.0 0.5 0.0 0.25 1.0000
60
+ Ni Ni3 1.0 0.43750000000000006 0.625 0.031249999999999976 1.0000
61
+ Ni Ni4 1.0 0.625 0.75 0.18750000000000006 1.0000
62
+ Ni Ni5 1.0 0.18750000000000003 0.12499999999999996 0.65625 1.0000
63
+ Ni Ni6 1.0 0.25 0.5 0.375 1.0000
64
+ Ni Ni7 1.0 0.625 0.7499999999999998 0.6875000000000001 1.0000
65
+ Ni Ni8 1.0 0.0 0.5 0.0 1.0000
66
+ Ni Ni9 1.0 0.9375000000000001 0.12499999999999996 0.78125 1.0000
67
+ Ni Ni10 1.0 0.43750000000000006 0.125 0.03125 1.0000
68
+ Ni Ni11 1.0 0.18750000000000003 0.625 0.65625 1.0000
69
+ Ni Ni12 1.0 0.49999999999999994 0.49999999999999994 0.75 1.0000
70
+ Ni Ni13 1.0 0.6875000000000002 0.6250000000000001 0.9062500000000001 1.0000
71
+ Ni Ni14 1.0 0.06249999999999995 0.8749999999999999 0.21875 1.0000
72
+ Ni Ni15 1.0 0.625 0.24999999999999992 0.6875000000000001 1.0000
73
+ Ni Ni16 1.0 0.8125 0.37499999999999994 0.84375 1.0000
74
+ Sn Sn1 1.0 0.8750000000000001 0.25000000000000006 0.5625000000000001 1.0000
75
+ Sn Sn2 1.0 0.8125 0.8749999999999999 0.34375 1.0000
76
+ Sn Sn3 1.0 0.0 0.0 0.5 1.0000
77
+ Sn Sn4 1.0 0.37500000000000006 0.25 0.8125 1.0000
78
+ Sn Sn5 1.0 0.9375000000000001 0.625 0.28124999999999994 1.0000
79
+ Sn Sn6 1.0 0.5 0.0 0.7500000000000001 1.0000
80
+ Sn Sn7 1.0 0.062499999999999986 0.37499999999999994 0.21875 1.0000
81
+ Sn Sn8 1.0 0.43749999999999994 0.6249999999999999 0.53125 1.0000
82
+ Sn Sn9 1.0 0.5625000000000002 0.8750000000000001 0.46875000000000006 1.0000
83
+ Sn Sn10 1.0 0.06250000000000003 0.8750000000000001 0.71875 1.0000
84
+ Sn Sn11 1.0 0.25 0.9999999999999999 0.8750000000000001 1.0000
85
+ Sn Sn12 1.0 0.0 0.5 0.5 1.0000
86
+ Sn Sn13 1.0 0.3750000000000001 0.7499999999999999 0.8125000000000001 1.0000
87
+ Sn Sn14 1.0 0.5625 0.8749999999999999 0.96875 1.0000
88
+ Sn Sn15 1.0 0.9375000000000001 0.12499999999999999 0.28125000000000006 1.0000
89
+ Sn Sn16 1.0 0.25 0.0 0.37500000000000006 1.0000
examples/MOF_CO2.traj ADDED
Binary file (22.7 kB). View file
 
examples/MOF_CO2_2H2O.traj ADDED
Binary file (10.5 kB). View file
 
examples/bis(EDA)Cu.xyz ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 25
2
+
3
+ Cu -0.2209807697981 0.1562206673100 -0.2702543144077
4
+ N 1.3137548957875 0.5160811070801 -0.0621790201316
5
+ N -1.1697941926852 1.4084676437792 -0.0263661851676
6
+ N -0.7320211993524 -0.9279028046343 0.7746834539678
7
+ N -0.2960297954951 -0.3714737952478 -1.7682696819292
8
+ H 1.7700594700635 0.1119337839006 0.7526330653817
9
+ C 2.0438061361622 0.0308270007188 -1.2618458080557
10
+ H -1.0108892443997 0.0422201550814 -2.3628208275489
11
+ C 1.0207299436500 -0.0899056474093 -2.3958258294877
12
+ C -2.2538881983659 0.9615829458907 0.8858629213719
13
+ H -0.7134131668629 2.1820906425597 0.4512217736737
14
+ C -1.7253926400061 -0.2555826059551 1.6515646734439
15
+ H -1.2262564948403 -1.7086072518402 0.3492806868790
16
+ H -3.1395531268796 0.6889984401720 0.3030099080986
17
+ H -2.5740755889657 1.7602483067208 1.5638712990201
18
+ H -1.2429302450851 0.0606801517349 2.5817426367378
19
+ H -2.5346090735134 -0.9320481538840 1.9474572953618
20
+ H 2.4943754630577 -0.9442944371524 -1.0510333860111
21
+ H 2.8734708369333 0.6931121163594 -1.5322893849642
22
+ H 0.9687160022358 0.8454661710213 -2.9622572009160
23
+ H 1.3042473510312 -0.8635089531977 -3.1178965470356
24
+ H -0.4235273777421 -1.3779232965060 -1.8421840816046
25
+ H 1.4990253393107 1.5151243421802 -0.0145688038723
26
+ H -0.0275971835230 -1.3439425457617 1.3799526346530
27
+ H -1.6118216269878 1.8130129511840 -0.8489698824425
examples/catalyst.traj ADDED
Binary file (10.4 kB). View file
 
examples/ethylene_carbonate.xyz ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 10
2
+ ethylene carbonate
3
+ O -0.12334 -1.10922 0.16737
4
+ C 0.64058 0.00703 0.00189
5
+ C -1.46757 -0.74526 -0.08091
6
+ C -1.47502 0.74033 0.08533
7
+ O -0.13418 1.11813 -0.16228
8
+ O 1.86114 0.01331 0.00048
9
+ H -2.13521 -1.24337 0.62850
10
+ H -1.74077 -1.05266 -1.09551
11
+ H -1.75177 1.04514 1.09984
12
+ H -2.14685 1.23129 -0.62434
examples/gold_nanoparticle_crystal.cif ADDED
@@ -0,0 +1,1944 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #------------------------------------------------------------------------------
2
+ #$Date: 2016-03-05 10:55:21 +0200 (Sat, 05 Mar 2016) $
3
+ #$Revision: 177732 $
4
+ #$URL: file:///home/coder/svn-repositories/cod/cif/1/54/05/1540567.cif $
5
+ #------------------------------------------------------------------------------
6
+ #
7
+ # This file is available in the Crystallography Open Database (COD),
8
+ # http://www.crystallography.net/
9
+ #
10
+ # All data on this site have been placed in the public domain by the
11
+ # contributors.
12
+ #
13
+ data_1540567
14
+ loop_
15
+ _publ_author_name
16
+ 'Tofanelli, Marcus A.'
17
+ 'Salorinne, Kirsi'
18
+ 'Ni, Thomas W.'
19
+ 'Malola, Sami'
20
+ 'Newell, Brian'
21
+ 'Phillips, Billy'
22
+ 'H\"akkinen, Hannu'
23
+ 'Ackerson, Christopher J.'
24
+ _publ_section_title
25
+ ;
26
+ Jahn--Teller effects in Au25(SR)18
27
+ ;
28
+ _journal_issue 3
29
+ _journal_name_full 'Chem. Sci.'
30
+ _journal_page_first 1882
31
+ _journal_paper_doi 10.1039/C5SC02134K
32
+ _journal_volume 7
33
+ _journal_year 2016
34
+ _chemical_formula_moiety 'C144 H144 Au25 S18'
35
+ _chemical_formula_sum 'C148 H170 Au25 O2 S36'
36
+ _chemical_formula_weight 8059.15
37
+ _chemical_name_systematic 'Au25(PET)18 in the neutral charge state'
38
+ _space_group_crystal_system triclinic
39
+ _space_group_IT_number 2
40
+ _space_group_name_Hall '-P 1'
41
+ _space_group_name_H-M_alt 'P -1'
42
+ _symmetry_space_group_name_Hall '-P 1'
43
+ _symmetry_space_group_name_H-M 'P -1'
44
+ _atom_sites_solution_hydrogens geom
45
+ _audit_creation_method SHELXL-2013
46
+ _audit_update_record
47
+ ;
48
+ 2015-03-19 deposited with the CCDC.
49
+ 2015-11-24 downloaded from the CCDC.
50
+ ;
51
+ _cell_angle_alpha 65.00(3)
52
+ _cell_angle_beta 64.00(3)
53
+ _cell_angle_gamma 81.00(3)
54
+ _cell_formula_units_Z 1
55
+ _cell_length_a 16.174(3)
56
+ _cell_length_b 17.746(4)
57
+ _cell_length_c 17.830(4)
58
+ _cell_measurement_temperature 293(2)
59
+ _cell_volume 4166(2)
60
+ _computing_structure_refinement 'SHELXL-2013 (Sheldrick, 2013)'
61
+ _diffrn_ambient_temperature 293(2)
62
+ _diffrn_measured_fraction_theta_full 0.999
63
+ _diffrn_measured_fraction_theta_max 1.000
64
+ _diffrn_radiation_type MoK\a
65
+ _diffrn_radiation_wavelength 0.71073
66
+ _diffrn_reflns_av_R_equivalents 0.1424
67
+ _diffrn_reflns_av_unetI/netI 0.0723
68
+ _diffrn_reflns_laue_measured_fraction_full 0.999
69
+ _diffrn_reflns_laue_measured_fraction_max 1.000
70
+ _diffrn_reflns_limit_h_max 22
71
+ _diffrn_reflns_limit_h_min -22
72
+ _diffrn_reflns_limit_k_max 24
73
+ _diffrn_reflns_limit_k_min -24
74
+ _diffrn_reflns_limit_l_max 24
75
+ _diffrn_reflns_limit_l_min -24
76
+ _diffrn_reflns_number 202701
77
+ _diffrn_reflns_point_group_measured_fraction_full 0.999
78
+ _diffrn_reflns_point_group_measured_fraction_max 1.000
79
+ _diffrn_reflns_theta_full 25.242
80
+ _diffrn_reflns_theta_max 29.130
81
+ _diffrn_reflns_theta_min 1.506
82
+ _exptl_absorpt_coefficient_mu 22.409
83
+ _exptl_crystal_colour Black
84
+ _exptl_crystal_density_diffrn 3.212
85
+ _exptl_crystal_F_000 3625
86
+ _refine_diff_density_max 2.625
87
+ _refine_diff_density_min -2.947
88
+ _refine_diff_density_rms 0.583
89
+ _refine_ls_extinction_method none
90
+ _refine_ls_goodness_of_fit_ref 1.031
91
+ _refine_ls_hydrogen_treatment constr
92
+ _refine_ls_matrix_type full
93
+ _refine_ls_number_parameters 897
94
+ _refine_ls_number_reflns 22436
95
+ _refine_ls_number_restraints 27
96
+ _refine_ls_restrained_S_all 1.030
97
+ _refine_ls_R_factor_all 0.0891
98
+ _refine_ls_R_factor_gt 0.0387
99
+ _refine_ls_shift/su_max 0.096
100
+ _refine_ls_shift/su_mean 0.001
101
+ _refine_ls_structure_factor_coef Fsqd
102
+ _refine_ls_weighting_details
103
+ 'w=1/[\s^2^(Fo^2^)+(0.0517P)^2^+4.0385P] where P=(Fo^2^+2Fc^2^)/3'
104
+ _refine_ls_weighting_scheme calc
105
+ _refine_ls_wR_factor_gt 0.0826
106
+ _refine_ls_wR_factor_ref 0.1095
107
+ _reflns_Friedel_coverage 0.000
108
+ _reflns_number_gt 14888
109
+ _reflns_number_total 22436
110
+ _reflns_threshold_expression 'I > 2\s(I)'
111
+ _cod_data_source_file c5sc02134k2.cif
112
+ _cod_data_source_block ca05_trunc_r3
113
+ _cod_depositor_comments
114
+ 'Adding full bibliography for 1540567--1540568.cif.'
115
+ _cod_database_code 1540567
116
+ _shelx_space_group_comment
117
+ ;
118
+ The symmetry employed for this shelxl refinement is uniquely defined
119
+ by the following loop, which should always be used as a source of
120
+ symmetry information in preference to the above space-group names.
121
+ They are only intended as comments.
122
+ ;
123
+ _shelxl_version_number 2013-4
124
+ _shelx_res_file
125
+ ;
126
+ TITL ca05_trunc in P-1
127
+ CELL 0.71073 16.1735 17.7462 17.8295 65.000 64.000 81.000
128
+ ZERR 1.00 0.0032 0.0035 0.0036 0.030 0.030 0.030
129
+ LATT 1
130
+ SFAC C H O S Au
131
+ UNIT 148 170 2 36 25
132
+ L.S. 20
133
+ BOND $H
134
+ ACTA
135
+ WPDB 2
136
+ FMAP 2
137
+ PLAN 20
138
+ WGHT 0.051700 4.038500
139
+ FVAR 0.09933
140
+ MOLE 1
141
+
142
+ FLAT C3_2001 C4_2001 C5_2001 C6_2001 C7_2001 C8_2001
143
+ FLAT C3_2002 C4_2002 C5_2002 C6_2002 C7_2002 C8_2002
144
+ FLAT 0.01 C3_2004 C4_2004 C5_2004 C6_2004 C7_2004 C8_2004
145
+ FLAT C3_2003 C4_2003 C5_2003 C6_2003 C7_2003 C8_2003
146
+ FLAT C3_2006 C4_2006 C5_2006 C6_2006 C7_2006 C8_2006
147
+ FLAT 0.01 C3_2005 C4_2005 C5_2005 C6_2005 C7_2005 C8_2005
148
+ FLAT C3_2007 C4_2007 C5_2007 C6_2007 C7_2007 C8_2007
149
+ FLAT C3_2008 C4_2008 C5_2008 C6_2008 C7_2008 C8_2008
150
+ FLAT C3_2009 C4_2009 C5_2009 C6_2009 C7_2009 C8_2009
151
+
152
+ AU1 5 0.500000 1.000000 0.500000 10.50000 0.01234 0.00967 =
153
+ 0.02021 -0.00584 -0.00247 -0.00132
154
+ AU2 5 0.396355 0.851887 0.617958 11.00000 0.01516 0.01120 =
155
+ 0.02514 -0.00534 -0.00459 -0.00192
156
+ AU3 5 0.420886 0.967878 0.684774 11.00000 0.02008 0.01277 =
157
+ 0.02147 -0.00665 -0.00453 -0.00044
158
+ AU4 5 0.447349 1.130230 0.556841 11.00000 0.01981 0.01100 =
159
+ 0.02343 -0.00752 -0.00432 0.00022
160
+ AU5 5 0.204672 0.861555 0.592108 11.00000 0.01815 0.01637 =
161
+ 0.03260 -0.00846 -0.01056 -0.00112
162
+ AU6 5 0.778061 0.927380 0.557546 11.00000 0.01913 0.01761 =
163
+ 0.04043 -0.01239 -0.01518 0.00265
164
+ AU7 5 0.567938 0.869009 0.610514 11.00000 0.01708 0.01288 =
165
+ 0.02907 -0.00627 -0.00880 0.00120
166
+ AU8 5 0.259202 1.082522 0.728702 11.00000 0.02221 0.01853 =
167
+ 0.03178 -0.01465 -0.00051 -0.00338
168
+ AU9 5 0.611560 1.044282 0.560689 11.00000 0.01737 0.01695 =
169
+ 0.02895 -0.01097 -0.00794 0.00042
170
+ AU10 5 0.310848 1.006642 0.581143 11.00000 0.01506 0.01754 =
171
+ 0.02551 -0.00949 -0.00397 0.00201
172
+ AU11 5 0.473871 1.099086 0.728856 11.00000 0.02993 0.01807 =
173
+ 0.02641 -0.01029 -0.00944 0.00016
174
+ AU12 5 0.425883 0.772844 0.802394 11.00000 0.02546 0.01508 =
175
+ 0.02907 -0.00556 -0.01001 0.00070
176
+ AU13 5 0.510210 0.698719 0.627751 11.00000 0.02315 0.01130 =
177
+ 0.03110 -0.00649 -0.01302 0.00043
178
+ S14 4 0.276225 0.755973 0.670154 11.00000 0.01876 0.01461 =
179
+ 0.03054 -0.00769 -0.00829 -0.00287
180
+ S15 4 0.630390 1.085767 0.663162 11.00000 0.03237 0.02595 =
181
+ 0.03429 -0.01238 -0.01822 0.00210
182
+ S16 4 0.442688 0.649863 0.784142 11.00000 0.02578 0.01315 =
183
+ 0.03387 -0.00300 -0.01422 -0.00080
184
+ S20 4 0.121487 0.959024 0.521413 11.00000 0.02021 0.01767 =
185
+ 0.04519 -0.01155 -0.01569 0.00201
186
+ S21 4 0.410520 0.887810 0.835181 11.00000 0.04204 0.01769 =
187
+ 0.02492 -0.00491 -0.00913 -0.00174
188
+ S24 4 0.320146 1.109068 0.810828 11.00000 0.03377 0.01502 =
189
+ 0.02836 -0.01124 -0.00374 -0.00331
190
+ S25 4 0.183001 1.073993 0.650035 11.00000 0.01779 0.04766 =
191
+ 0.05824 -0.03797 -0.00846 0.00800
192
+ S26 4 0.695586 0.801892 0.639070 11.00000 0.02021 0.02048 =
193
+ 0.03912 -0.01008 -0.01459 0.00153
194
+ S28 4 0.413373 1.271354 0.525290 11.00000 0.01913 0.01486 =
195
+ 0.03610 -0.01230 -0.01075 0.00164
196
+ RESI 2001 PET
197
+ C1 1 0.300085 1.220505 0.784447 11.00000 0.02417 0.02188 =
198
+ 0.04554 -0.01952 0.00423 -0.00264
199
+ AFIX 23
200
+ H1A 2 0.314411 1.249724 0.720086 11.00000 -1.20000
201
+ H1B 2 0.235555 1.227793 0.818181 11.00000 -1.20000
202
+ AFIX 0
203
+ C2 1 0.359157 1.258457 0.808668 11.00000 0.03815 0.02319 =
204
+ 0.04786 -0.02309 -0.00405 -0.01158
205
+ AFIX 23
206
+ H2A 2 0.341410 1.232228 0.873821 11.00000 -1.20000
207
+ H2B 2 0.423338 1.247332 0.778676 11.00000 -1.20000
208
+ AFIX 0
209
+ C3 1 0.348322 1.350577 0.780452 11.00000 0.02943 0.02621 =
210
+ 0.03952 -0.01772 -0.01037 -0.00093
211
+ C4 1 0.423542 1.404830 0.727687 11.00000 0.03111 0.03852 =
212
+ 0.02227 -0.01706 -0.00256 -0.00985
213
+ AFIX 43
214
+ H4 2 0.482017 1.384574 0.705723 11.00000 -1.20000
215
+ AFIX 0
216
+ C5 1 0.413187 1.490062 0.706659 11.00000 0.04394 0.01788 =
217
+ 0.03745 -0.00506 -0.00770 -0.01142
218
+ AFIX 43
219
+ H5 2 0.464243 1.526577 0.671038 11.00000 -1.20000
220
+ AFIX 0
221
+ C6 1 0.326479 1.518967 0.739424 11.00000 0.05839 0.01857 =
222
+ 0.08439 -0.02772 -0.03985 0.00968
223
+ AFIX 43
224
+ H6 2 0.319062 1.575829 0.724037 11.00000 -1.20000
225
+ AFIX 0
226
+ C7 1 0.250324 1.465981 0.794414 11.00000 0.05004 0.05202 =
227
+ 0.17420 -0.07624 -0.05566 0.02082
228
+ AFIX 43
229
+ H7 2 0.192329 1.486578 0.817618 11.00000 -1.20000
230
+ AFIX 0
231
+ C8 1 0.260857 1.381056 0.815071 11.00000 0.02938 0.04691 =
232
+ 0.14521 -0.06154 -0.01385 0.00110
233
+ AFIX 43
234
+ H8 2 0.209697 1.344685 0.851879 11.00000 -1.20000
235
+ AFIX 0
236
+
237
+ RESI 2002 PET
238
+ C1 1 0.648882 0.986777 0.748784 11.00000 0.04532 0.04584 =
239
+ 0.06188 -0.01509 -0.02590 -0.00431
240
+ AFIX 23
241
+ H1A 2 0.610899 0.942233 0.760847 11.00000 -1.20000
242
+ H1B 2 0.712797 0.972027 0.725309 11.00000 -1.20000
243
+ AFIX 0
244
+ C2 1 0.622457 0.998326 0.841220 11.00000 0.07522
245
+ AFIX 23
246
+ H2A 2 0.556130 1.001761 0.869899 11.00000 -1.20000
247
+ H2B 2 0.639788 0.948986 0.882188 11.00000 -1.20000
248
+ AFIX 0
249
+ C3 1 0.663817 1.069289 0.831110 11.00000 0.14378 0.10251 =
250
+ 0.08349 -0.05342 -0.07883 0.05527
251
+ C4 1 0.759866 1.078144 0.792815 11.00000 0.12089 0.20486 =
252
+ 0.25598 -0.19795 -0.10694 0.06019
253
+ AFIX 43
254
+ H4 2 0.794718 1.036558 0.775698 11.00000 -1.20000
255
+ AFIX 0
256
+ C5 1 0.808034 1.149427 0.778418 11.00000 0.10367 0.28018 =
257
+ 0.39079 -0.31196 -0.06789 0.03629
258
+ AFIX 43
259
+ H5 2 0.872027 1.152209 0.753041 11.00000 -1.20000
260
+ AFIX 0
261
+ C6 1 0.759470 1.211829 0.802064 11.00000 0.15834 0.15707 =
262
+ 0.16649 -0.12731 -0.03836 0.00483
263
+ AFIX 43
264
+ H6 2 0.788163 1.259206 0.791164 11.00000 -1.20000
265
+ AFIX 0
266
+ C7 1 0.661505 1.199898 0.844741 11.00000 0.13477 0.10881 =
267
+ 0.10983 -0.08168 -0.04888 0.05062
268
+ AFIX 43
269
+ H7 2 0.625836 1.238376 0.867208 11.00000 -1.20000
270
+ AFIX 0
271
+ C8 1 0.617570 1.133494 0.854001 11.00000 0.11890 0.06357 =
272
+ 0.05997 0.00129 -0.05038 -0.03986
273
+ AFIX 43
274
+ H8 2 0.553672 1.132332 0.876820 11.00000 -1.20000
275
+ AFIX 0
276
+
277
+ RESI 2003 PET
278
+ C1 1 0.480446 1.318789 0.556058 11.00000 0.02616 0.02281 =
279
+ 0.02993 -0.01276 -0.00476 -0.00744
280
+ AFIX 23
281
+ H1A 2 0.465686 1.377055 0.540179 11.00000 -1.20000
282
+ H1B 2 0.459456 1.292855 0.621660 11.00000 -1.20000
283
+ AFIX 0
284
+ C2 1 0.583843 1.313932 0.513993 11.00000 0.02508 0.01910 =
285
+ 0.02704 -0.00825 -0.00965 -0.00296
286
+ AFIX 23
287
+ H2A 2 0.606735 1.337012 0.448219 11.00000 -1.20000
288
+ H2B 2 0.601112 1.256311 0.534194 11.00000 -1.20000
289
+ AFIX 0
290
+ C3 1 0.625834 1.362722 0.542357 11.00000 0.01293 0.04393 =
291
+ 0.04357 -0.02682 0.00017 -0.00690
292
+ C4 1 0.634428 1.448230 0.497119 11.00000 0.03389 0.03538 =
293
+ 0.06679 -0.03662 -0.01048 -0.00362
294
+ AFIX 43
295
+ H4 2 0.613922 1.474008 0.451152 11.00000 -1.20000
296
+ AFIX 0
297
+ C5 1 0.672662 1.496351 0.518410 11.00000 0.03508 0.05792 =
298
+ 0.09776 -0.05616 -0.02591 0.00562
299
+ AFIX 43
300
+ H5 2 0.678604 1.553822 0.486644 11.00000 -1.20000
301
+ AFIX 0
302
+ C6 1 0.701802 1.458515 0.586915 11.00000 0.04225 0.09194 =
303
+ 0.09617 -0.08141 -0.01776 0.01395
304
+ AFIX 43
305
+ H6 2 0.726977 1.490607 0.602178 11.00000 -1.20000
306
+ AFIX 0
307
+ C7 1 0.694133 1.373653 0.633175 11.00000 0.05133 0.08450 =
308
+ 0.06846 -0.05121 -0.03568 0.01683
309
+ AFIX 43
310
+ H7 2 0.714239 1.348084 0.679446 11.00000 -1.20000
311
+ AFIX 0
312
+ C8 1 0.655532 1.325773 0.609839 11.00000 0.03075 0.06100 =
313
+ 0.05238 -0.03922 -0.02134 0.01112
314
+ AFIX 43
315
+ H8 2 0.650253 1.268217 0.640887 11.00000 -1.20000
316
+ AFIX 0
317
+
318
+ RESI 2004 PET
319
+ C1 1 0.297363 0.881791 0.927094 11.00000 0.06783 0.02252 =
320
+ 0.02556 -0.00787 -0.00930 0.00194
321
+ AFIX 23
322
+ H1A 2 0.299008 0.841373 0.983756 11.00000 -1.20000
323
+ H1B 2 0.286004 0.935393 0.931521 11.00000 -1.20000
324
+ AFIX 0
325
+ C2 1 0.222470 0.859989 0.918747 11.00000 0.05965 0.03806 =
326
+ 0.08290 -0.03016 -0.03256 0.00201
327
+ AFIX 23
328
+ H2A 2 0.232164 0.806365 0.914419 11.00000 -1.20000
329
+ H2B 2 0.217685 0.901010 0.863833 11.00000 -1.20000
330
+ AFIX 0
331
+ C3 1 0.130685 0.855830 1.004639 11.00000 0.04941 0.04216 =
332
+ 0.06598 -0.00833 -0.00660 -0.00506
333
+ C4 1 0.120725 0.793897 1.089687 11.00000 0.13937 0.05043 =
334
+ 0.09476 -0.03123 0.00424 0.02904
335
+ AFIX 43
336
+ H4 2 0.168464 0.758033 1.094159 11.00000 -1.20000
337
+ AFIX 0
338
+ C5 1 0.038038 0.785006 1.169894 11.00000 0.12478 0.06788 =
339
+ 0.29228 -0.01443 0.13689 -0.01259
340
+ AFIX 43
341
+ H5 2 0.032380 0.743809 1.225950 11.00000 -1.20000
342
+ AFIX 0
343
+ C6 1 -0.029139 0.834971 1.163811 11.00000 0.06522 0.05724 =
344
+ 0.11571 -0.03930 0.00893 -0.00088
345
+ AFIX 43
346
+ H6 2 -0.083995 0.830756 1.214194 11.00000 -1.20000
347
+ AFIX 0
348
+ C7 1 -0.015272 0.888609 1.086433 11.00000 0.10694 0.12831 =
349
+ 0.09716 -0.07116 0.02749 0.03033
350
+ AFIX 43
351
+ H7 2 -0.062789 0.924773 1.081984 11.00000 -1.20000
352
+ AFIX 0
353
+ C8 1 0.063564 0.901350 1.004658 11.00000 0.15111 0.10410 =
354
+ 0.10544 -0.05519 0.01552 0.06871
355
+ AFIX 43
356
+ H8 2 0.065584 0.943795 0.950554 11.00000 -1.20000
357
+ AFIX 0
358
+
359
+ RESI 2005 PET
360
+ C1 1 0.207333 0.732635 0.790931 11.00000 0.01214 0.02961 =
361
+ 0.03163 -0.01200 -0.00661 -0.00122
362
+ AFIX 23
363
+ H1A 2 0.240991 0.697206 0.825965 11.00000 -1.20000
364
+ H1B 2 0.194813 0.783766 0.800761 11.00000 -1.20000
365
+ AFIX 0
366
+ C2 1 0.116917 0.688734 0.822179 11.00000 0.02623 0.03982 =
367
+ 0.04882 0.00759 -0.01450 -0.01008
368
+ AFIX 23
369
+ H2A 2 0.079602 0.726772 0.793036 11.00000 -1.20000
370
+ H2B 2 0.129347 0.641676 0.805019 11.00000 -1.20000
371
+ AFIX 0
372
+ C3 1 0.065494 0.659037 0.924724 11.00000 0.01992 0.05456 =
373
+ 0.04525 0.00375 -0.00542 -0.01376
374
+ C4 1 0.018168 0.715267 0.964434 11.00000 0.11229 0.12524 =
375
+ 0.10794 0.02811 0.08907 0.08062
376
+ AFIX 43
377
+ H4 2 0.014353 0.770036 0.926813 11.00000 -1.20000
378
+ AFIX 0
379
+ C5 1 -0.023373 0.691828 1.058443 11.00000 0.08178 0.07673 =
380
+ 0.08907 -0.05321 -0.00141 0.00629
381
+ AFIX 43
382
+ H5 2 -0.054501 0.729384 1.084486 11.00000 -1.20000
383
+ AFIX 0
384
+ C6 1 -0.015387 0.607117 1.112236 11.00000 0.06002 0.07271 =
385
+ 0.03827 -0.00634 -0.00235 -0.00793
386
+ AFIX 43
387
+ H6 2 -0.042315 0.588126 1.175339 11.00000 -1.20000
388
+ AFIX 0
389
+ C7 1 0.031275 0.553509 1.072325 11.00000 0.07768 0.04023 =
390
+ 0.03785 -0.00415 -0.02700 -0.00194
391
+ AFIX 43
392
+ H7 2 0.036830 0.498230 1.107427 11.00000 -1.20000
393
+ AFIX 0
394
+ C8 1 0.068271 0.581835 0.982950 11.00000 0.10778 0.02755 =
395
+ 0.04233 -0.01457 -0.03562 -0.00026
396
+ AFIX 43
397
+ H8 2 0.099779 0.543865 0.957663 11.00000 -1.20000
398
+ AFIX 0
399
+
400
+ RESI 2006 PET
401
+ C1 1 0.536807 0.601931 0.816565 11.00000 0.04287 0.01736 =
402
+ 0.04446 -0.00635 -0.02743 0.00411
403
+ AFIX 23
404
+ H1A 2 0.586151 0.643131 0.787730 11.00000 -1.20000
405
+ H1B 2 0.515240 0.582558 0.881942 11.00000 -1.20000
406
+ AFIX 0
407
+ C2 1 0.573348 0.529518 0.788807 11.00000 0.03083 0.02567 =
408
+ 0.03255 -0.01590 -0.01082 0.00834
409
+ AFIX 23
410
+ H2A 2 0.597465 0.549348 0.723146 11.00000 -1.20000
411
+ H2B 2 0.523386 0.489508 0.815406 11.00000 -1.20000
412
+ AFIX 0
413
+ C3 1 0.649249 0.486855 0.819731 11.00000 0.03373 0.02397 =
414
+ 0.05079 -0.01176 -0.02743 0.00975
415
+ C4 1 0.629952 0.424743 0.903478 11.00000 0.05619 0.04127 =
416
+ 0.05749 0.01284 -0.04010 -0.01274
417
+ AFIX 43
418
+ H4 2 0.568700 0.409023 0.943155 11.00000 -1.20000
419
+ AFIX 0
420
+ C5 1 0.697533 0.384104 0.931976 11.00000 0.11321 0.05556 =
421
+ 0.14314 -0.00678 -0.10362 0.00088
422
+ AFIX 43
423
+ H5 2 0.682940 0.341509 0.989388 11.00000 -1.20000
424
+ AFIX 0
425
+ C6 1 0.784896 0.408514 0.873606 11.00000 0.08806 0.05049 =
426
+ 0.18910 -0.05017 -0.11182 0.03585
427
+ AFIX 43
428
+ H6 2 0.831423 0.382490 0.891889 11.00000 -1.20000
429
+ AFIX 0
430
+ C7 1 0.809141 0.470798 0.787179 11.00000 0.03072 0.09420 =
431
+ 0.12059 -0.07333 -0.02497 0.00594
432
+ AFIX 43
433
+ H7 2 0.870532 0.485964 0.747627 11.00000 -1.20000
434
+ AFIX 0
435
+ C8 1 0.738474 0.510034 0.761400 11.00000 0.03382 0.05307 =
436
+ 0.06136 -0.03648 -0.02010 0.00896
437
+ AFIX 43
438
+ H8 2 0.752559 0.552339 0.703893 11.00000 -1.20000
439
+ AFIX 0
440
+
441
+ RESI 2007 PET
442
+ C1 1 0.088911 0.975975 0.746423 11.00000 0.02862 0.17345 =
443
+ 0.11110 -0.12038 -0.03312 0.04780
444
+ AFIX 23
445
+ H1A 2 0.104887 0.925792 0.734737 11.00000 -1.20000
446
+ H1B 2 0.078952 0.964096 0.808155 11.00000 -1.20000
447
+ AFIX 0
448
+ C2 1 0.018982 1.013857 0.726968 11.00000 0.25665 0.06204 =
449
+ 0.12147 -0.05046 -0.13580 0.07981
450
+ AFIX 23
451
+ H2A 2 0.027498 1.024501 0.665962 11.00000 -1.20000
452
+ H2B 2 0.002533 1.064167 0.738370 11.00000 -1.20000
453
+ AFIX 0
454
+ C3 1 -0.054711 0.929740 0.810232 11.00000 0.18561 0.18059 =
455
+ 0.06220 -0.05667 0.06530 -0.17028
456
+ C4 1 -0.111914 0.924673 0.896127 11.00000 0.16659 0.21513 =
457
+ 0.05871 -0.09134 0.07407 -0.15720
458
+ AFIX 43
459
+ H4 2 -0.099530 0.959828 0.916860 11.00000 -1.20000
460
+ AFIX 0
461
+ C5 1 -0.182929 0.872932 0.950276 11.00000 0.07497 0.09238 =
462
+ 0.01893 -0.02206 0.01058 -0.03393
463
+ AFIX 43
464
+ H5 2 -0.219317 0.870986 1.008473 11.00000 -1.20000
465
+ AFIX 0
466
+ C6 1 -0.202940 0.822727 0.921374 11.00000 0.02961 0.07588 =
467
+ 0.07308 -0.04477 -0.00742 -0.00448
468
+ AFIX 43
469
+ H6 2 -0.254953 0.787404 0.958553 11.00000 -1.20000
470
+ AFIX 0
471
+ C7 1 -0.148034 0.823254 0.838749 11.00000 0.03512 0.07653 =
472
+ 0.08517 -0.05636 -0.01251 -0.00062
473
+ AFIX 43
474
+ H7 2 -0.160918 0.786755 0.819845 11.00000 -1.20000
475
+ AFIX 0
476
+ C8 1 -0.073838 0.876727 0.782635 11.00000 0.07489 0.05786 =
477
+ 0.04665 -0.02747 -0.00467 -0.02214
478
+ AFIX 43
479
+ H8 2 -0.036194 0.877001 0.725370 11.00000 -1.20000
480
+ AFIX 0
481
+
482
+ RESI 2008 PET
483
+ C1 1 0.119661 0.926676 0.437001 11.00000 0.02547
484
+ AFIX 23
485
+ H1A 2 0.110827 0.974959 0.388761 11.00000 -1.20000
486
+ H1B 2 0.178620 0.904096 0.410212 11.00000 -1.20000
487
+ AFIX 0
488
+ C2 1 0.044217 0.862155 0.478266 11.00000 0.02484 0.02406 =
489
+ 0.06048 -0.02065 -0.02543 0.00485
490
+ AFIX 23
491
+ H2A 2 -0.014049 0.884912 0.506446 11.00000 -1.20000
492
+ H2B 2 0.041944 0.852662 0.429459 11.00000 -1.20000
493
+ AFIX 0
494
+ C3 1 0.052885 0.779458 0.547983 11.00000 0.02006 0.03078 =
495
+ 0.05076 -0.01895 -0.01596 0.00125
496
+ C4 1 0.126390 0.729675 0.523210 11.00000 0.03430 0.02516 =
497
+ 0.04413 -0.01151 -0.01415 -0.00002
498
+ AFIX 43
499
+ H4 2 0.172436 0.748710 0.464303 11.00000 -1.20000
500
+ AFIX 0
501
+ C5 1 0.130878 0.651229 0.586845 11.00000 0.02581 0.02395 =
502
+ 0.06667 -0.01529 -0.01730 0.00241
503
+ AFIX 43
504
+ H5 2 0.180384 0.618188 0.570191 11.00000 -1.20000
505
+ AFIX 0
506
+ C6 1 0.063469 0.622122 0.673495 11.00000 0.03435 0.02928 =
507
+ 0.05562 -0.00399 -0.02132 -0.00515
508
+ AFIX 43
509
+ H6 2 0.065704 0.569154 0.715581 11.00000 -1.20000
510
+ AFIX 0
511
+ C7 1 -0.007745 0.673083 0.696925 11.00000 0.03668 0.05802 =
512
+ 0.04245 -0.01549 -0.00903 -0.01065
513
+ AFIX 43
514
+ H7 2 -0.053303 0.654319 0.756087 11.00000 -1.20000
515
+ AFIX 0
516
+ C8 1 -0.013545 0.750738 0.635621 11.00000 0.02328 0.04428 =
517
+ 0.03840 -0.02389 -0.00741 -0.00230
518
+ AFIX 43
519
+ H8 2 -0.062447 0.783909 0.653414 11.00000 -1.20000
520
+ AFIX 0
521
+
522
+ RESI 2009 PET
523
+ C1 1 0.741225 0.747563 0.561351 11.00000 0.02116 0.01894 =
524
+ 0.03330 -0.00681 -0.00824 -0.00392
525
+ AFIX 23
526
+ H1A 2 0.707723 0.694863 0.590085 11.00000 -1.20000
527
+ H1B 2 0.732571 0.780939 0.506160 11.00000 -1.20000
528
+ AFIX 0
529
+ C2 1 0.841588 0.732456 0.537957 11.00000 0.01972 0.03267 =
530
+ 0.04808 -0.02013 -0.01335 0.00053
531
+ AFIX 23
532
+ H2A 2 0.850051 0.702682 0.593782 11.00000 -1.20000
533
+ H2B 2 0.874940 0.785590 0.506254 11.00000 -1.20000
534
+ AFIX 0
535
+ C3 1 0.881834 0.683225 0.479268 11.00000 0.01622 0.02619 =
536
+ 0.06294 -0.02885 -0.00763 -0.00030
537
+ C4 1 0.963055 0.646489 0.472814 11.00000 0.04812 0.10185 =
538
+ 0.14000 -0.09731 -0.04922 0.03822
539
+ AFIX 43
540
+ H4 2 0.992698 0.652379 0.504564 11.00000 -1.20000
541
+ AFIX 0
542
+ C5 1 1.003076 0.600754 0.420799 11.00000 0.06054 0.18286 =
543
+ 0.21817 -0.15591 -0.06877 0.06612
544
+ AFIX 43
545
+ H5 2 1.060099 0.577879 0.415842 11.00000 -1.20000
546
+ AFIX 0
547
+ C6 1 0.958653 0.588821 0.376004 11.00000 0.04601 0.13234 =
548
+ 0.18330 -0.13515 -0.03113 0.03506
549
+ AFIX 43
550
+ H6 2 0.983133 0.553765 0.345270 11.00000 -1.20000
551
+ AFIX 0
552
+ C7 1 0.880226 0.627393 0.376308 11.00000 0.03928 0.06855 =
553
+ 0.07728 -0.04634 -0.00788 -0.00332
554
+ AFIX 43
555
+ H7 2 0.852684 0.622544 0.342350 11.00000 -1.20000
556
+ AFIX 0
557
+ C8 1 0.840501 0.674946 0.428347 11.00000 0.03573 0.04429 =
558
+ 0.06772 -0.03415 -0.01782 0.00626
559
+ AFIX 43
560
+ H8 2 0.785926 0.701453 0.429214 11.00000 -1.20000
561
+ AFIX 0
562
+
563
+ RESI 2010 Tol
564
+ C9 1 0.550830 0.750447 0.970782 11.00000 0.03373 0.09421 =
565
+ 0.03484 -0.00115 -0.01177 0.00994
566
+ AFIX 43
567
+ H9 2 0.505962 0.790169 0.974328 11.00000 -1.20000
568
+ AFIX 0
569
+ C10 1 0.608251 0.745408 0.889406 11.00000 0.05646 0.06493 =
570
+ 0.05465 -0.00439 -0.03762 -0.00551
571
+ AFIX 43
572
+ H10 2 0.601092 0.781573 0.836929 11.00000 -1.20000
573
+ AFIX 0
574
+ C11 1 0.676767 0.687677 0.883442 11.00000 0.04308 0.06231 =
575
+ 0.02372 -0.00911 -0.01362 -0.01401
576
+ AFIX 43
577
+ H11 2 0.716748 0.686675 0.827280 11.00000 -1.20000
578
+ AFIX 0
579
+ C12 1 0.684902 0.631946 0.961511 11.00000 0.04753 0.03699 =
580
+ 0.04899 -0.01926 -0.01786 0.00318
581
+ AFIX 43
582
+ H12 2 0.729675 0.592113 0.958404 11.00000 -1.20000
583
+ AFIX 0
584
+ C13 1 0.764166 0.570533 0.957088 11.00000 0.14451 0.07218 =
585
+ 0.08060 -0.05069 -0.04360 0.05040
586
+ AFIX 33
587
+ H13A 2 0.798576 0.575448 0.895498 11.00000 -1.50000
588
+ H13B 2 0.739202 0.514738 0.995401 11.00000 -1.50000
589
+ H13C 2 0.803999 0.583231 0.977614 11.00000 -1.50000
590
+ AFIX 0
591
+ C14 1 0.627656 0.634834 1.043389 11.00000 0.04359 0.04627 =
592
+ 0.02319 0.00134 -0.00588 0.00627
593
+ AFIX 43
594
+ H14 2 0.632949 0.596797 1.096199 11.00000 -1.20000
595
+ AFIX 0
596
+ C15 1 0.562386 0.693858 1.047650 11.00000 0.05258 0.07618 =
597
+ 0.03783 -0.00710 -0.01071 0.01145
598
+ AFIX 43
599
+ H15 2 0.524630 0.696144 1.103707 11.00000 -1.20000
600
+
601
+ AFIX 0
602
+ HKLF 4
603
+
604
+ REM ca05_trunc in P-1
605
+ REM R1 = 0.0387 for 14888 Fo > 4sig(Fo) and 0.0891 for all 22436 data
606
+ REM 897 parameters refined using 27 restraints
607
+
608
+ END
609
+
610
+ WGHT 0.0483 0.0000
611
+
612
+ REM Highest difference peak 2.625, deepest hole -2.947, 1-sigma level 0.583
613
+ Q1 1 0.5570 1.1478 0.9079 11.00000 0.05 2.62
614
+ Q2 1 -0.0717 0.9465 0.8020 11.00000 0.05 2.35
615
+ Q3 1 0.4768 1.1258 0.9414 11.00000 0.05 2.29
616
+ Q4 1 0.5205 1.0150 0.9011 11.00000 0.05 2.25
617
+ Q5 1 0.2192 0.9286 0.4472 11.00000 0.05 2.12
618
+ Q6 1 0.6393 1.0328 0.7284 11.00000 0.05 2.12
619
+ Q7 1 0.4434 1.0521 0.9572 11.00000 0.05 2.10
620
+ Q8 1 0.6405 0.9484 0.7500 11.00000 0.05 2.08
621
+ Q9 1 0.6992 1.0026 0.7353 11.00000 0.05 2.06
622
+ Q10 1 0.5639 0.9137 0.9771 11.00000 0.05 2.04
623
+ Q11 1 0.6395 1.0823 0.5582 11.00000 0.05 2.04
624
+ Q12 1 0.6820 0.9831 0.8123 11.00000 0.05 2.01
625
+ Q13 1 0.6994 0.8774 0.8839 11.00000 0.05 2.01
626
+ Q14 1 0.1616 0.9292 0.3949 11.00000 0.05 1.99
627
+ Q15 1 0.5132 0.9007 0.9593 11.00000 0.05 1.92
628
+ Q16 1 0.7975 0.9157 0.5158 11.00000 0.05 1.91
629
+ Q17 1 0.5783 0.8581 0.9558 11.00000 0.05 1.90
630
+ Q18 1 0.6804 1.0623 0.8475 11.00000 0.05 1.90
631
+ Q19 1 0.7036 1.2139 0.5919 11.00000 0.05 1.88
632
+ Q20 1 -0.0764 0.9319 0.5352 11.00000 0.05 1.88
633
+ ;
634
+ _shelx_res_checksum 81280
635
+ loop_
636
+ _space_group_symop_operation_xyz
637
+ 'x, y, z'
638
+ '-x, -y, -z'
639
+ loop_
640
+ _atom_site_label
641
+ _atom_site_type_symbol
642
+ _atom_site_fract_x
643
+ _atom_site_fract_y
644
+ _atom_site_fract_z
645
+ _atom_site_U_iso_or_equiv
646
+ _atom_site_adp_type
647
+ _atom_site_occupancy
648
+ _atom_site_site_symmetry_order
649
+ _atom_site_calc_flag
650
+ _atom_site_refinement_flags_posn
651
+ _atom_site_refinement_flags_adp
652
+ _atom_site_refinement_flags_occupancy
653
+ Au1 Au 0.5000 1.0000 0.5000 0.01559(12) Uani 1 2 d S . P
654
+ Au2 Au 0.39635(3) 0.85189(2) 0.61796(3) 0.01907(9) Uani 1 1 d . . .
655
+ Au3 Au 0.42089(3) 0.96788(2) 0.68477(3) 0.01966(9) Uani 1 1 d . . .
656
+ Au4 Au 0.44735(3) 1.13023(2) 0.55684(3) 0.01964(9) Uani 1 1 d . . .
657
+ Au5 Au 0.20467(3) 0.86156(3) 0.59211(3) 0.02264(10) Uani 1 1 d . . .
658
+ Au6 Au 0.77806(3) 0.92738(3) 0.55755(3) 0.02457(10) Uani 1 1 d . . .
659
+ Au7 Au 0.56794(3) 0.86901(2) 0.61051(3) 0.02087(10) Uani 1 1 d . . .
660
+ Au8 Au 0.25920(3) 1.08252(3) 0.72870(3) 0.02614(11) Uani 1 1 d . . .
661
+ Au9 Au 0.61156(3) 1.04428(3) 0.56069(3) 0.02105(10) Uani 1 1 d . . .
662
+ Au10 Au 0.31085(3) 1.00664(3) 0.58114(3) 0.02098(9) Uani 1 1 d . . .
663
+ Au11 Au 0.47387(3) 1.09909(3) 0.72886(3) 0.02508(10) Uani 1 1 d . . .
664
+ Au12 Au 0.42588(3) 0.77284(3) 0.80239(3) 0.02495(10) Uani 1 1 d . . .
665
+ Au13 Au 0.51021(3) 0.69872(2) 0.62775(3) 0.02188(10) Uani 1 1 d . . .
666
+ S14 S 0.27622(18) 0.75597(16) 0.6702(2) 0.0221(6) Uani 1 1 d . . .
667
+ S15 S 0.6304(2) 1.08577(19) 0.6632(2) 0.0291(7) Uani 1 1 d . . .
668
+ S16 S 0.4427(2) 0.64986(17) 0.7841(2) 0.0258(6) Uani 1 1 d . . .
669
+ S20 S 0.12149(19) 0.95902(17) 0.5214(2) 0.0274(7) Uani 1 1 d . . .
670
+ S21 S 0.4105(2) 0.88781(18) 0.8352(2) 0.0311(7) Uani 1 1 d . . .
671
+ S24 S 0.3201(2) 1.10907(17) 0.8108(2) 0.0278(7) Uani 1 1 d . . .
672
+ S25 S 0.1830(2) 1.0740(2) 0.6500(3) 0.0386(8) Uani 1 1 d . . .
673
+ S26 S 0.69559(19) 0.80189(18) 0.6391(2) 0.0265(6) Uani 1 1 d . . .
674
+ S28 S 0.41337(18) 1.27135(16) 0.5253(2) 0.0230(6) Uani 1 1 d . . .
675
+ C1_2001 C 0.3001(8) 1.2205(7) 0.7844(10) 0.035(3) Uani 1 1 d . . .
676
+ H1A_2001 H 0.3144 1.2497 0.7201 0.042 Uiso 1 1 calc R U .
677
+ H1B_2001 H 0.2356 1.2278 0.8182 0.042 Uiso 1 1 calc R U .
678
+ C2_2001 C 0.3592(9) 1.2585(7) 0.8087(10) 0.037(3) Uani 1 1 d . . .
679
+ H2A_2001 H 0.3414 1.2322 0.8738 0.044 Uiso 1 1 calc R U .
680
+ H2B_2001 H 0.4233 1.2473 0.7787 0.044 Uiso 1 1 calc R U .
681
+ C3_2001 C 0.3483(8) 1.3506(7) 0.7805(8) 0.031(3) Uani 1 1 d . . .
682
+ C4_2001 C 0.4235(8) 1.4048(8) 0.7277(7) 0.031(3) Uani 1 1 d . . .
683
+ H4_2001 H 0.4820 1.3846 0.7057 0.037 Uiso 1 1 calc R U .
684
+ C5_2001 C 0.4132(9) 1.4901(7) 0.7067(9) 0.037(3) Uani 1 1 d . . .
685
+ H5_2001 H 0.4642 1.5266 0.6710 0.045 Uiso 1 1 calc R U .
686
+ C6_2001 C 0.3265(10) 1.5190(8) 0.7394(11) 0.048(4) Uani 1 1 d . . .
687
+ H6_2001 H 0.3191 1.5758 0.7240 0.058 Uiso 1 1 calc R U .
688
+ C7_2001 C 0.2503(12) 1.4660(10) 0.7944(16) 0.079(7) Uani 1 1 d . . .
689
+ H7_2001 H 0.1923 1.4866 0.8176 0.095 Uiso 1 1 calc R U .
690
+ C8_2001 C 0.2609(10) 1.3811(10) 0.8151(14) 0.074(7) Uani 1 1 d . . .
691
+ H8_2001 H 0.2097 1.3447 0.8519 0.089 Uiso 1 1 calc R U .
692
+ C1_2002 C 0.6489(10) 0.9868(9) 0.7488(11) 0.051(4) Uani 1 1 d . . .
693
+ H1A_2002 H 0.6109 0.9422 0.7608 0.061 Uiso 1 1 calc R U .
694
+ H1B_2002 H 0.7128 0.9720 0.7253 0.061 Uiso 1 1 calc R U .
695
+ C2_2002 C 0.6225(14) 0.9983(13) 0.8412(14) 0.075(6) Uiso 1 1 d . . .
696
+ H2A_2002 H 0.5561 1.0018 0.8699 0.090 Uiso 1 1 calc R U .
697
+ H2B_2002 H 0.6398 0.9490 0.8822 0.090 Uiso 1 1 calc R U .
698
+ C3_2002 C 0.664(2) 1.0693(16) 0.8311(15) 0.098(8) Uani 1 1 d . . .
699
+ C4_2002 C 0.760(2) 1.0781(17) 0.7928(18) 0.150(14) Uani 1 1 d . . .
700
+ H4_2002 H 0.7947 1.0366 0.7757 0.180 Uiso 1 1 calc R U .
701
+ C5_2002 C 0.808(2) 1.1494(18) 0.778(2) 0.21(2) Uani 1 1 d . . .
702
+ H5_2002 H 0.8720 1.1522 0.7530 0.250 Uiso 1 1 calc R U .
703
+ C6_2002 C 0.759(2) 1.2118(19) 0.802(2) 0.148(13) Uani 1 1 d . . .
704
+ H6_2002 H 0.7882 1.2592 0.7912 0.178 Uiso 1 1 calc R U .
705
+ C7_2002 C 0.662(2) 1.1999(16) 0.8447(17) 0.110(9) Uani 1 1 d . . .
706
+ H7_2002 H 0.6258 1.2384 0.8672 0.132 Uiso 1 1 calc R U .
707
+ C8_2002 C 0.6176(17) 1.1335(12) 0.8540(13) 0.080(7) Uani 1 1 d . . .
708
+ H8_2002 H 0.5537 1.1323 0.8768 0.096 Uiso 1 1 calc R U .
709
+ C1_2003 C 0.4804(7) 1.3188(7) 0.5561(8) 0.027(3) Uani 1 1 d . . .
710
+ H1A_2003 H 0.4657 1.3771 0.5402 0.033 Uiso 1 1 calc R U .
711
+ H1B_2003 H 0.4595 1.2929 0.6217 0.033 Uiso 1 1 calc R U .
712
+ C2_2003 C 0.5838(7) 1.3139(7) 0.5140(8) 0.024(2) Uani 1 1 d . . .
713
+ H2A_2003 H 0.6067 1.3370 0.4482 0.029 Uiso 1 1 calc R U .
714
+ H2B_2003 H 0.6011 1.2563 0.5342 0.029 Uiso 1 1 calc R U .
715
+ C3_2003 C 0.6258(7) 1.3627(8) 0.5424(9) 0.034(3) Uani 1 1 d . . .
716
+ C4_2003 C 0.6344(8) 1.4482(8) 0.4971(10) 0.043(4) Uani 1 1 d . . .
717
+ H4_2003 H 0.6139 1.4740 0.4512 0.051 Uiso 1 1 calc R U .
718
+ C5_2003 C 0.6727(9) 1.4964(10) 0.5184(13) 0.055(5) Uani 1 1 d . . .
719
+ H5_2003 H 0.6786 1.5538 0.4866 0.066 Uiso 1 1 calc R U .
720
+ C6_2003 C 0.7018(11) 1.4585(13) 0.5869(14) 0.066(6) Uani 1 1 d . . .
721
+ H6_2003 H 0.7270 1.4906 0.6022 0.079 Uiso 1 1 calc R U .
722
+ C7_2003 C 0.6941(11) 1.3737(12) 0.6332(12) 0.058(5) Uani 1 1 d . . .
723
+ H7_2003 H 0.7142 1.3481 0.6794 0.069 Uiso 1 1 calc R U .
724
+ C8_2003 C 0.6555(9) 1.3258(10) 0.6098(10) 0.041(4) Uani 1 1 d . . .
725
+ H8_2003 H 0.6503 1.2682 0.6409 0.050 Uiso 1 1 calc R U .
726
+ C1_2004 C 0.2974(10) 0.8818(8) 0.9271(9) 0.043(4) Uani 1 1 d . . .
727
+ H1A_2004 H 0.2990 0.8414 0.9838 0.052 Uiso 1 1 calc R U .
728
+ H1B_2004 H 0.2860 0.9354 0.9315 0.052 Uiso 1 1 calc R U .
729
+ C2_2004 C 0.2225(11) 0.8600(10) 0.9187(13) 0.057(4) Uani 1 1 d . . .
730
+ H2A_2004 H 0.2322 0.8064 0.9144 0.068 Uiso 1 1 calc R U .
731
+ H2B_2004 H 0.2177 0.9010 0.8638 0.068 Uiso 1 1 calc R U .
732
+ C3_2004 C 0.1307(11) 0.8558(10) 1.0046(12) 0.064(5) Uani 1 1 d . . .
733
+ C4_2004 C 0.1207(15) 0.7939(11) 1.0897(15) 0.118(10) Uani 1 1 d . . .
734
+ H4_2004 H 0.1685 0.7580 1.0942 0.142 Uiso 1 1 calc R U .
735
+ C5_2004 C 0.0380(17) 0.7850(15) 1.170(2) 0.27(3) Uani 1 1 d . . .
736
+ H5_2004 H 0.0324 0.7438 1.2259 0.323 Uiso 1 1 calc R U .
737
+ C6_2004 C -0.0291(14) 0.8350(13) 1.1638(18) 0.096(8) Uani 1 1 d . . .
738
+ H6_2004 H -0.0840 0.8308 1.2142 0.115 Uiso 1 1 calc R U .
739
+ C7_2004 C -0.0153(15) 0.8886(17) 1.0864(19) 0.132(12) Uani 1 1 d . . .
740
+ H7_2004 H -0.0628 0.9248 1.0820 0.158 Uiso 1 1 calc R U .
741
+ C8_2004 C 0.0636(15) 0.9013(15) 1.0047(18) 0.151(14) Uani 1 1 d . . .
742
+ H8_2004 H 0.0656 0.9438 0.9506 0.181 Uiso 1 1 calc R U .
743
+ C1_2005 C 0.2073(7) 0.7326(7) 0.7909(8) 0.025(3) Uani 1 1 d . . .
744
+ H1A_2005 H 0.2410 0.6972 0.8260 0.030 Uiso 1 1 calc R U .
745
+ H1B_2005 H 0.1948 0.7838 0.8008 0.030 Uiso 1 1 calc R U .
746
+ C2_2005 C 0.1169(9) 0.6887(9) 0.8222(10) 0.047(4) Uani 1 1 d . . .
747
+ H2A_2005 H 0.0796 0.7268 0.7930 0.056 Uiso 1 1 calc R U .
748
+ H2B_2005 H 0.1293 0.6417 0.8050 0.056 Uiso 1 1 calc R U .
749
+ C3_2005 C 0.0655(8) 0.6590(10) 0.9247(10) 0.050(4) Uani 1 1 d . . .
750
+ C4_2005 C 0.0182(9) 0.7153(14) 0.9644(15) 0.21(2) Uani 1 1 d . . .
751
+ H4_2005 H 0.0144 0.7700 0.9268 0.248 Uiso 1 1 calc R U .
752
+ C5_2005 C -0.0234(11) 0.6918(13) 1.0584(15) 0.089(7) Uani 1 1 d . . .
753
+ H5_2005 H -0.0545 0.7294 1.0845 0.107 Uiso 1 1 calc R U .
754
+ C6_2005 C -0.0154(10) 0.6071(12) 1.1122(12) 0.069(5) Uani 1 1 d . . .
755
+ H6_2005 H -0.0423 0.5881 1.1753 0.083 Uiso 1 1 calc R U .
756
+ C7_2005 C 0.0313(10) 0.5535(10) 1.0723(11) 0.055(4) Uani 1 1 d . . .
757
+ H7_2005 H 0.0368 0.4982 1.1074 0.065 Uiso 1 1 calc R U .
758
+ C8_2005 C 0.0683(10) 0.5818(9) 0.9830(11) 0.057(5) Uani 1 1 d . . .
759
+ H8_2005 H 0.0998 0.5439 0.9577 0.068 Uiso 1 1 calc R U .
760
+ C1_2006 C 0.5368(9) 0.6019(7) 0.8166(10) 0.034(3) Uani 1 1 d . . .
761
+ H1A_2006 H 0.5862 0.6431 0.7877 0.041 Uiso 1 1 calc R U .
762
+ H1B_2006 H 0.5152 0.5826 0.8819 0.041 Uiso 1 1 calc R U .
763
+ C2_2006 C 0.5733(8) 0.5295(7) 0.7888(9) 0.030(3) Uani 1 1 d . . .
764
+ H2A_2006 H 0.5975 0.5493 0.7231 0.036 Uiso 1 1 calc R U .
765
+ H2B_2006 H 0.5234 0.4895 0.8154 0.036 Uiso 1 1 calc R U .
766
+ C3_2006 C 0.6492(9) 0.4869(7) 0.8197(10) 0.035(3) Uani 1 1 d . . .
767
+ C4_2006 C 0.6300(11) 0.4247(8) 0.9035(11) 0.056(5) Uani 1 1 d . . .
768
+ H4_2006 H 0.5687 0.4090 0.9432 0.067 Uiso 1 1 calc R U .
769
+ C5_2006 C 0.6975(16) 0.3841(12) 0.9320(17) 0.096(8) Uani 1 1 d . . .
770
+ H5_2006 H 0.6829 0.3415 0.9894 0.115 Uiso 1 1 calc R U .
771
+ C6_2006 C 0.7849(15) 0.4085(12) 0.874(2) 0.091(8) Uani 1 1 d . . .
772
+ H6_2006 H 0.8314 0.3825 0.8919 0.109 Uiso 1 1 calc R U .
773
+ C7_2006 C 0.8091(11) 0.4708(13) 0.7872(16) 0.073(6) Uani 1 1 d . . .
774
+ H7_2006 H 0.8705 0.4860 0.7476 0.088 Uiso 1 1 calc R U .
775
+ C8_2006 C 0.7385(9) 0.5100(10) 0.7614(11) 0.045(4) Uani 1 1 d . . .
776
+ H8_2006 H 0.7526 0.5523 0.7039 0.054 Uiso 1 1 calc R U .
777
+ C1_2007 C 0.0889(10) 0.9760(15) 0.7464(15) 0.084(8) Uani 1 1 d . . .
778
+ H1A_2007 H 0.1049 0.9258 0.7347 0.101 Uiso 1 1 calc R U .
779
+ H1B_2007 H 0.0790 0.9641 0.8082 0.101 Uiso 1 1 calc R U .
780
+ C2_2007 C 0.019(2) 1.0139(13) 0.7270(18) 0.128(12) Uani 1 1 d . . .
781
+ H2A_2007 H 0.0275 1.0245 0.6660 0.154 Uiso 1 1 calc R U .
782
+ H2B_2007 H 0.0025 1.0642 0.7384 0.154 Uiso 1 1 calc R U .
783
+ C3_2007 C -0.0547(17) 0.9297(15) 0.8102(14) 0.163(16) Uani 1 1 d . . .
784
+ C4_2007 C -0.1119(14) 0.9247(13) 0.8961(12) 0.160(16) Uani 1 1 d . . .
785
+ H4_2007 H -0.0995 0.9598 0.9169 0.192 Uiso 1 1 calc R U .
786
+ C5_2007 C -0.1829(12) 0.8729(11) 0.9503(10) 0.069(6) Uani 1 1 d . . .
787
+ H5_2007 H -0.2193 0.8710 1.0085 0.083 Uiso 1 1 calc R U .
788
+ C6_2007 C -0.2029(10) 0.8227(11) 0.9214(12) 0.059(5) Uani 1 1 d . . .
789
+ H6_2007 H -0.2550 0.7874 0.9586 0.070 Uiso 1 1 calc R U .
790
+ C7_2007 C -0.1480(10) 0.8233(11) 0.8387(13) 0.061(5) Uani 1 1 d . . .
791
+ H7_2007 H -0.1609 0.7868 0.8198 0.073 Uiso 1 1 calc R U .
792
+ C8_2007 C -0.0738(12) 0.8767(10) 0.7826(12) 0.062(5) Uani 1 1 d . . .
793
+ H8_2007 H -0.0362 0.8770 0.7254 0.075 Uiso 1 1 calc R U .
794
+ C1_2008 C 0.1197(8) 0.9267(7) 0.4370(8) 0.025(2) Uiso 1 1 d . . .
795
+ H1A_2008 H 0.1108 0.9750 0.3888 0.031 Uiso 1 1 calc R U .
796
+ H1B_2008 H 0.1786 0.9041 0.4102 0.031 Uiso 1 1 calc R U .
797
+ C2_2008 C 0.0442(8) 0.8622(7) 0.4783(10) 0.033(3) Uani 1 1 d . . .
798
+ H2A_2008 H -0.0140 0.8849 0.5064 0.039 Uiso 1 1 calc R U .
799
+ H2B_2008 H 0.0419 0.8527 0.4295 0.039 Uiso 1 1 calc R U .
800
+ C3_2008 C 0.0529(8) 0.7795(8) 0.5480(10) 0.032(3) Uani 1 1 d . . .
801
+ C4_2008 C 0.1264(9) 0.7297(7) 0.5232(10) 0.036(3) Uani 1 1 d . . .
802
+ H4_2008 H 0.1724 0.7487 0.4643 0.043 Uiso 1 1 calc R U .
803
+ C5_2008 C 0.1309(8) 0.6512(8) 0.5868(10) 0.041(4) Uani 1 1 d . . .
804
+ H5_2008 H 0.1804 0.6182 0.5702 0.049 Uiso 1 1 calc R U .
805
+ C6_2008 C 0.0635(9) 0.6221(8) 0.6735(11) 0.043(4) Uani 1 1 d . . .
806
+ H6_2008 H 0.0657 0.5692 0.7156 0.051 Uiso 1 1 calc R U .
807
+ C7_2008 C -0.0077(10) 0.6731(10) 0.6969(11) 0.049(4) Uani 1 1 d . . .
808
+ H7_2008 H -0.0533 0.6543 0.7561 0.059 Uiso 1 1 calc R U .
809
+ C8_2008 C -0.0135(8) 0.7507(8) 0.6356(9) 0.034(3) Uani 1 1 d . . .
810
+ H8_2008 H -0.0624 0.7839 0.6534 0.041 Uiso 1 1 calc R U .
811
+ C1_2009 C 0.7412(7) 0.7476(7) 0.5614(9) 0.026(3) Uani 1 1 d . . .
812
+ H1A_2009 H 0.7077 0.6949 0.5901 0.032 Uiso 1 1 calc R U .
813
+ H1B_2009 H 0.7326 0.7809 0.5062 0.032 Uiso 1 1 calc R U .
814
+ C2_2009 C 0.8416(8) 0.7325(8) 0.5380(10) 0.032(3) Uani 1 1 d . . .
815
+ H2A_2009 H 0.8501 0.7027 0.5938 0.039 Uiso 1 1 calc R U .
816
+ H2B_2009 H 0.8749 0.7856 0.5063 0.039 Uiso 1 1 calc R U .
817
+ C3_2009 C 0.8818(8) 0.6832(7) 0.4793(10) 0.034(3) Uani 1 1 d . . .
818
+ C4_2009 C 0.9631(11) 0.6465(10) 0.4728(13) 0.079(7) Uani 1 1 d . . .
819
+ H4_2009 H 0.9927 0.6524 0.5046 0.094 Uiso 1 1 calc R U .
820
+ C5_2009 C 1.0031(13) 0.6008(14) 0.4208(17) 0.129(12) Uani 1 1 d . . .
821
+ H5_2009 H 1.0601 0.5779 0.4158 0.155 Uiso 1 1 calc R U .
822
+ C6_2009 C 0.9587(12) 0.5888(14) 0.3760(17) 0.104(9) Uani 1 1 d . . .
823
+ H6_2009 H 0.9831 0.5538 0.3453 0.125 Uiso 1 1 calc R U .
824
+ C7_2009 C 0.8802(10) 0.6274(11) 0.3763(13) 0.061(5) Uani 1 1 d . . .
825
+ H7_2009 H 0.8527 0.6225 0.3424 0.073 Uiso 1 1 calc R U .
826
+ C8_2009 C 0.8405(10) 0.6749(9) 0.4283(11) 0.047(4) Uani 1 1 d . . .
827
+ H8_2009 H 0.7859 0.7015 0.4292 0.056 Uiso 1 1 calc R U .
828
+ C9_2010 C 0.5508(10) 0.7504(12) 0.9708(11) 0.066(5) Uani 1 1 d . . .
829
+ H9_2010 H 0.5060 0.7902 0.9743 0.079 Uiso 1 1 calc R U .
830
+ C10_2010 C 0.6083(11) 0.7454(11) 0.8894(12) 0.059(5) Uani 1 1 d . . .
831
+ H10_2010 H 0.6011 0.7816 0.8369 0.071 Uiso 1 1 calc R U .
832
+ C11_2010 C 0.6768(10) 0.6877(10) 0.8834(10) 0.044(4) Uani 1 1 d . . .
833
+ H11_2010 H 0.7167 0.6867 0.8273 0.053 Uiso 1 1 calc R U .
834
+ C12_2010 C 0.6849(10) 0.6319(9) 0.9615(11) 0.045(4) Uani 1 1 d . . .
835
+ H12_2010 H 0.7297 0.5921 0.9584 0.054 Uiso 1 1 calc R U .
836
+ C13_2010 C 0.7642(16) 0.5705(13) 0.9571(15) 0.099(8) Uani 1 1 d . . .
837
+ H13A_2010 H 0.7986 0.5754 0.8955 0.148 Uiso 1 1 calc R U .
838
+ H13B_2010 H 0.7392 0.5147 0.9954 0.148 Uiso 1 1 calc R U .
839
+ H13C_2010 H 0.8040 0.5832 0.9776 0.148 Uiso 1 1 calc R U .
840
+ C14_2010 C 0.6277(10) 0.6348(9) 1.0434(10) 0.047(4) Uani 1 1 d . . .
841
+ H14_2010 H 0.6329 0.5968 1.0962 0.057 Uiso 1 1 calc R U .
842
+ C15_2010 C 0.5624(11) 0.6939(11) 1.0476(12) 0.066(5) Uani 1 1 d . . .
843
+ H15_2010 H 0.5246 0.6961 1.1037 0.079 Uiso 1 1 calc R U .
844
+ loop_
845
+ _atom_site_aniso_label
846
+ _atom_site_aniso_U_11
847
+ _atom_site_aniso_U_22
848
+ _atom_site_aniso_U_33
849
+ _atom_site_aniso_U_23
850
+ _atom_site_aniso_U_13
851
+ _atom_site_aniso_U_12
852
+ Au1 0.0123(2) 0.0097(2) 0.0202(3) -0.0058(2) -0.0025(2) -0.00132(19)
853
+ Au2 0.01516(19) 0.01120(18) 0.0251(2) -0.00534(17) -0.00459(17) -0.00192(14)
854
+ Au3 0.0201(2) 0.01277(18) 0.0215(2) -0.00665(17) -0.00453(17) -0.00044(15)
855
+ Au4 0.0198(2) 0.01100(18) 0.0234(2) -0.00752(17) -0.00432(17) 0.00022(15)
856
+ Au5 0.0181(2) 0.0164(2) 0.0326(3) -0.00846(19) -0.01056(19) -0.00112(16)
857
+ Au6 0.0191(2) 0.0176(2) 0.0404(3) -0.0124(2) -0.0152(2) 0.00265(16)
858
+ Au7 0.01708(19) 0.01288(19) 0.0291(2) -0.00627(17) -0.00880(18) 0.00120(15)
859
+ Au8 0.0222(2) 0.0185(2) 0.0318(3) -0.0147(2) -0.00051(19) -0.00338(17)
860
+ Au9 0.01737(19) 0.0170(2) 0.0290(2) -0.01097(18) -0.00794(18) 0.00042(16)
861
+ Au10 0.01506(19) 0.0175(2) 0.0255(2) -0.00949(18) -0.00397(17) 0.00201(15)
862
+ Au11 0.0299(2) 0.0181(2) 0.0264(2) -0.01029(19) -0.0094(2) 0.00016(17)
863
+ Au12 0.0255(2) 0.0151(2) 0.0291(3) -0.00556(18) -0.0100(2) 0.00070(17)
864
+ Au13 0.0232(2) 0.01130(18) 0.0311(3) -0.00649(18) -0.01302(19) 0.00043(16)
865
+ S14 0.0188(13) 0.0146(12) 0.0305(16) -0.0077(12) -0.0083(12) -0.0029(10)
866
+ S15 0.0324(16) 0.0260(15) 0.0343(18) -0.0124(14) -0.0182(14) 0.0021(12)
867
+ S16 0.0258(14) 0.0132(12) 0.0339(17) -0.0030(12) -0.0142(13) -0.0008(11)
868
+ S20 0.0202(13) 0.0177(13) 0.0452(19) -0.0116(13) -0.0157(14) 0.0020(11)
869
+ S21 0.0420(18) 0.0177(14) 0.0249(16) -0.0049(12) -0.0091(14) -0.0017(13)
870
+ S24 0.0338(16) 0.0150(13) 0.0284(17) -0.0112(12) -0.0037(13) -0.0033(12)
871
+ S25 0.0178(14) 0.048(2) 0.058(2) -0.0380(19) -0.0085(15) 0.0080(13)
872
+ S26 0.0202(14) 0.0205(14) 0.0391(18) -0.0101(13) -0.0146(13) 0.0015(11)
873
+ S28 0.0191(13) 0.0149(12) 0.0361(17) -0.0123(12) -0.0107(12) 0.0016(10)
874
+ C1_2001 0.024(6) 0.022(6) 0.046(8) -0.020(6) 0.004(6) -0.003(5)
875
+ C2_2001 0.038(7) 0.023(6) 0.048(9) -0.023(6) -0.004(6) -0.012(5)
876
+ C3_2001 0.029(6) 0.026(6) 0.040(8) -0.018(6) -0.010(6) -0.001(5)
877
+ C4_2001 0.031(6) 0.039(7) 0.022(7) -0.017(6) -0.003(5) -0.010(5)
878
+ C5_2001 0.044(8) 0.018(6) 0.037(8) -0.005(6) -0.008(6) -0.011(5)
879
+ C6_2001 0.058(9) 0.019(6) 0.084(12) -0.028(8) -0.040(9) 0.010(6)
880
+ C7_2001 0.050(10) 0.052(10) 0.17(2) -0.076(14) -0.056(13) 0.021(8)
881
+ C8_2001 0.029(8) 0.047(10) 0.145(19) -0.062(12) -0.014(10) 0.001(7)
882
+ C1_2002 0.045(9) 0.046(9) 0.062(11) -0.015(8) -0.026(8) -0.004(7)
883
+ C3_2002 0.14(2) 0.103(19) 0.083(17) -0.053(15) -0.079(17) 0.055(17)
884
+ C4_2002 0.12(2) 0.20(3) 0.26(4) -0.20(3) -0.11(3) 0.06(2)
885
+ C5_2002 0.10(2) 0.28(4) 0.39(6) -0.31(5) -0.07(3) 0.04(2)
886
+ C6_2002 0.16(3) 0.16(3) 0.17(3) -0.13(3) -0.04(3) 0.00(2)
887
+ C7_2002 0.13(2) 0.11(2) 0.11(2) -0.082(18) -0.049(19) 0.051(18)
888
+ C8_2002 0.119(18) 0.064(13) 0.060(13) 0.001(10) -0.050(13) -0.040(12)
889
+ C1_2003 0.026(6) 0.023(6) 0.030(7) -0.013(5) -0.005(5) -0.007(5)
890
+ C2_2003 0.025(6) 0.019(5) 0.027(6) -0.008(5) -0.010(5) -0.003(4)
891
+ C3_2003 0.013(5) 0.044(8) 0.044(8) -0.027(7) 0.000(5) -0.007(5)
892
+ C4_2003 0.034(7) 0.035(7) 0.067(10) -0.037(8) -0.010(7) -0.004(6)
893
+ C5_2003 0.035(8) 0.058(10) 0.098(14) -0.056(11) -0.026(9) 0.006(7)
894
+ C6_2003 0.042(9) 0.092(15) 0.096(15) -0.081(13) -0.018(10) 0.014(9)
895
+ C7_2003 0.051(10) 0.084(13) 0.068(12) -0.051(11) -0.036(9) 0.017(9)
896
+ C8_2003 0.031(7) 0.061(10) 0.052(9) -0.039(8) -0.021(7) 0.011(7)
897
+ C1_2004 0.068(10) 0.023(6) 0.026(7) -0.008(6) -0.009(7) 0.002(6)
898
+ C2_2004 0.060(10) 0.038(9) 0.083(13) -0.030(9) -0.033(10) 0.002(7)
899
+ C3_2004 0.049(10) 0.042(9) 0.066(13) -0.008(9) -0.007(9) -0.005(8)
900
+ C4_2004 0.14(2) 0.050(12) 0.095(19) -0.031(13) 0.004(16) 0.029(13)
901
+ C5_2004 0.12(2) 0.068(18) 0.29(5) -0.01(2) 0.14(3) -0.013(17)
902
+ C6_2004 0.065(13) 0.057(13) 0.12(2) -0.039(14) 0.009(14) -0.001(11)
903
+ C7_2004 0.11(2) 0.13(2) 0.10(2) -0.07(2) 0.027(17) 0.030(18)
904
+ C8_2004 0.15(2) 0.10(2) 0.11(2) -0.055(18) 0.016(18) 0.069(19)
905
+ C1_2005 0.012(5) 0.030(6) 0.032(7) -0.012(5) -0.007(5) -0.001(4)
906
+ C2_2005 0.026(7) 0.040(8) 0.049(9) 0.008(7) -0.014(7) -0.010(6)
907
+ C3_2005 0.020(6) 0.055(9) 0.045(9) 0.004(8) -0.005(6) -0.014(6)
908
+ C4_2005 0.112(19) 0.13(2) 0.11(2) 0.028(17) 0.089(17) 0.081(17)
909
+ C5_2005 0.082(14) 0.077(15) 0.089(17) -0.053(14) -0.001(12) 0.006(12)
910
+ C6_2005 0.060(11) 0.073(13) 0.038(10) -0.006(9) -0.002(9) -0.008(10)
911
+ C7_2005 0.078(12) 0.040(9) 0.038(9) -0.004(7) -0.027(9) -0.002(8)
912
+ C8_2005 0.108(14) 0.028(7) 0.042(10) -0.015(7) -0.036(10) 0.000(8)
913
+ C1_2006 0.043(7) 0.017(6) 0.044(8) -0.006(6) -0.027(7) 0.004(5)
914
+ C2_2006 0.031(6) 0.026(6) 0.033(7) -0.016(6) -0.011(6) 0.008(5)
915
+ C3_2006 0.034(7) 0.024(6) 0.051(9) -0.012(6) -0.027(7) 0.010(5)
916
+ C4_2006 0.056(10) 0.041(9) 0.057(11) 0.013(8) -0.040(9) -0.013(7)
917
+ C5_2006 0.113(18) 0.056(12) 0.14(2) -0.007(13) -0.104(19) 0.001(12)
918
+ C6_2006 0.088(15) 0.050(12) 0.19(3) -0.050(15) -0.112(19) 0.036(11)
919
+ C7_2006 0.031(8) 0.094(16) 0.121(19) -0.073(15) -0.025(10) 0.006(9)
920
+ C8_2006 0.034(7) 0.053(9) 0.061(11) -0.036(8) -0.020(7) 0.009(7)
921
+ C1_2007 0.029(8) 0.17(2) 0.111(17) -0.120(18) -0.033(10) 0.048(11)
922
+ C2_2007 0.26(4) 0.062(14) 0.12(2) -0.050(15) -0.14(3) 0.080(19)
923
+ C3_2007 0.19(3) 0.18(3) 0.062(15) -0.057(17) 0.065(16) -0.17(2)
924
+ C4_2007 0.17(2) 0.22(3) 0.059(14) -0.091(18) 0.074(15) -0.16(2)
925
+ C5_2007 0.075(12) 0.092(14) 0.019(8) -0.022(9) 0.011(8) -0.034(11)
926
+ C6_2007 0.030(8) 0.076(12) 0.073(13) -0.045(11) -0.007(8) -0.004(8)
927
+ C7_2007 0.035(8) 0.077(12) 0.085(14) -0.056(11) -0.013(9) -0.001(8)
928
+ C8_2007 0.075(12) 0.058(11) 0.047(10) -0.027(9) -0.005(9) -0.022(9)
929
+ C2_2008 0.025(6) 0.024(6) 0.060(9) -0.021(6) -0.025(6) 0.005(5)
930
+ C3_2008 0.020(6) 0.031(7) 0.051(9) -0.019(6) -0.016(6) 0.001(5)
931
+ C4_2008 0.034(7) 0.025(6) 0.044(8) -0.012(6) -0.014(6) 0.000(5)
932
+ C5_2008 0.026(6) 0.024(6) 0.067(11) -0.015(7) -0.017(7) 0.002(5)
933
+ C6_2008 0.034(7) 0.029(7) 0.056(10) -0.004(7) -0.021(7) -0.005(6)
934
+ C7_2008 0.037(8) 0.058(10) 0.042(9) -0.015(8) -0.009(7) -0.011(7)
935
+ C8_2008 0.023(6) 0.044(8) 0.038(8) -0.024(7) -0.007(6) -0.002(6)
936
+ C1_2009 0.021(6) 0.019(6) 0.033(7) -0.007(5) -0.008(5) -0.004(4)
937
+ C2_2009 0.020(6) 0.033(7) 0.048(8) -0.020(6) -0.013(6) 0.001(5)
938
+ C3_2009 0.016(5) 0.026(6) 0.063(10) -0.029(7) -0.008(6) 0.000(5)
939
+ C4_2009 0.048(10) 0.102(15) 0.14(2) -0.097(16) -0.049(12) 0.038(10)
940
+ C5_2009 0.061(14) 0.18(3) 0.22(3) -0.16(3) -0.069(19) 0.066(17)
941
+ C6_2009 0.046(11) 0.13(2) 0.18(3) -0.14(2) -0.031(14) 0.035(12)
942
+ C7_2009 0.039(9) 0.069(11) 0.077(13) -0.046(11) -0.008(9) -0.003(8)
943
+ C8_2009 0.036(8) 0.044(9) 0.068(11) -0.034(8) -0.018(8) 0.006(6)
944
+ C9_2010 0.034(8) 0.094(14) 0.035(9) -0.001(9) -0.012(7) 0.010(9)
945
+ C10_2010 0.056(10) 0.065(11) 0.055(11) -0.004(9) -0.038(9) -0.006(9)
946
+ C11_2010 0.043(8) 0.062(10) 0.024(7) -0.009(7) -0.014(6) -0.014(7)
947
+ C12_2010 0.048(8) 0.037(8) 0.049(10) -0.019(7) -0.018(8) 0.003(7)
948
+ C13_2010 0.14(2) 0.072(14) 0.081(16) -0.051(13) -0.044(15) 0.050(14)
949
+ C14_2010 0.044(8) 0.046(9) 0.023(7) 0.001(6) -0.006(6) 0.006(7)
950
+ C15_2010 0.053(10) 0.076(13) 0.038(10) -0.007(9) -0.011(8) 0.011(9)
951
+ loop_
952
+ _atom_type_symbol
953
+ _atom_type_description
954
+ _atom_type_scat_dispersion_real
955
+ _atom_type_scat_dispersion_imag
956
+ _atom_type_scat_source
957
+ C C 0.0033 0.0016 'International Tables Vol C Tables 4.2.6.8 and 6.1.1.4'
958
+ H H 0.0000 0.0000 'International Tables Vol C Tables 4.2.6.8 and 6.1.1.4'
959
+ O O 0.0106 0.0060 'International Tables Vol C Tables 4.2.6.8 and 6.1.1.4'
960
+ S S 0.1246 0.1234 'International Tables Vol C Tables 4.2.6.8 and 6.1.1.4'
961
+ Au Au -2.0133 8.8022 'International Tables Vol C Tables 4.2.6.8 and 6.1.1.4'
962
+ loop_
963
+ _geom_angle_atom_site_label_1
964
+ _geom_angle_atom_site_label_2
965
+ _geom_angle_atom_site_label_3
966
+ _geom_angle
967
+ _geom_angle_site_symmetry_1
968
+ _geom_angle_site_symmetry_3
969
+ Au10 Au1 Au10 180.0 . 2_676
970
+ Au10 Au1 Au4 68.67(3) . .
971
+ Au10 Au1 Au4 111.33(3) 2_676 .
972
+ Au10 Au1 Au4 111.34(3) . 2_676
973
+ Au10 Au1 Au4 68.67(3) 2_676 2_676
974
+ Au4 Au1 Au4 180.0 . 2_676
975
+ Au10 Au1 Au7 67.61(4) . 2_676
976
+ Au10 Au1 Au7 112.39(4) 2_676 2_676
977
+ Au4 Au1 Au7 67.73(2) . 2_676
978
+ Au4 Au1 Au7 112.27(2) 2_676 2_676
979
+ Au10 Au1 Au7 112.39(4) . .
980
+ Au10 Au1 Au7 67.61(4) 2_676 .
981
+ Au4 Au1 Au7 112.27(2) . .
982
+ Au4 Au1 Au7 67.73(2) 2_676 .
983
+ Au7 Au1 Au7 180.0 2_676 .
984
+ Au10 Au1 Au2 118.79(4) . 2_676
985
+ Au10 Au1 Au2 61.21(4) 2_676 2_676
986
+ Au4 Au1 Au2 64.13(3) . 2_676
987
+ Au4 Au1 Au2 115.87(3) 2_676 2_676
988
+ Au7 Au1 Au2 59.91(3) 2_676 2_676
989
+ Au7 Au1 Au2 120.09(3) . 2_676
990
+ Au10 Au1 Au2 61.21(4) . .
991
+ Au10 Au1 Au2 118.79(4) 2_676 .
992
+ Au4 Au1 Au2 115.88(3) . .
993
+ Au4 Au1 Au2 64.12(3) 2_676 .
994
+ Au7 Au1 Au2 120.09(3) 2_676 .
995
+ Au7 Au1 Au2 59.91(3) . .
996
+ Au2 Au1 Au2 180.0 2_676 .
997
+ Au10 Au1 Au3 63.35(3) . .
998
+ Au10 Au1 Au3 116.65(3) 2_676 .
999
+ Au4 Au1 Au3 59.71(3) . .
1000
+ Au4 Au1 Au3 120.29(3) 2_676 .
1001
+ Au7 Au1 Au3 117.28(3) 2_676 .
1002
+ Au7 Au1 Au3 62.72(3) . .
1003
+ Au2 Au1 Au3 116.66(3) 2_676 .
1004
+ Au2 Au1 Au3 63.34(3) . .
1005
+ Au10 Au1 Au3 116.65(3) . 2_676
1006
+ Au10 Au1 Au3 63.35(4) 2_676 2_676
1007
+ Au4 Au1 Au3 120.29(3) . 2_676
1008
+ Au4 Au1 Au3 59.70(3) 2_676 2_676
1009
+ Au7 Au1 Au3 62.72(3) 2_676 2_676
1010
+ Au7 Au1 Au3 117.28(3) . 2_676
1011
+ Au2 Au1 Au3 63.35(4) 2_676 2_676
1012
+ Au2 Au1 Au3 116.65(4) . 2_676
1013
+ Au3 Au1 Au3 179.999(18) . 2_676
1014
+ Au10 Au1 Au9 59.20(2) . 2_676
1015
+ Au10 Au1 Au9 120.81(2) 2_676 2_676
1016
+ Au4 Au1 Au9 118.41(2) . 2_676
1017
+ Au4 Au1 Au9 61.59(2) 2_676 2_676
1018
+ Au7 Au1 Au9 63.92(2) 2_676 2_676
1019
+ Au7 Au1 Au9 116.08(2) . 2_676
1020
+ Au2 Au1 Au9 115.69(3) 2_676 2_676
1021
+ Au2 Au1 Au9 64.31(3) . 2_676
1022
+ Au3 Au1 Au9 115.07(3) . 2_676
1023
+ Au3 Au1 Au9 64.92(3) 2_676 2_676
1024
+ Au10 Au1 Au9 120.80(2) . .
1025
+ Au10 Au1 Au9 59.19(2) 2_676 .
1026
+ Au4 Au1 Au9 61.59(2) . .
1027
+ Au4 Au1 Au9 118.41(2) 2_676 .
1028
+ Au7 Au1 Au9 116.09(2) 2_676 .
1029
+ Au7 Au1 Au9 63.92(2) . .
1030
+ Au2 Au1 Au9 64.31(3) 2_676 .
1031
+ Au2 Au1 Au9 115.69(3) . .
1032
+ Au3 Au1 Au9 64.93(3) . .
1033
+ Au3 Au1 Au9 115.08(3) 2_676 .
1034
+ Au9 Au1 Au9 180.0 2_676 .
1035
+ S14 Au2 Au7 144.92(7) . .
1036
+ S14 Au2 Au1 153.26(8) . .
1037
+ Au7 Au2 Au1 59.93(3) . .
1038
+ S14 Au2 Au10 103.07(7) . .
1039
+ Au7 Au2 Au10 110.50(3) . .
1040
+ Au1 Au2 Au10 58.95(3) . .
1041
+ S14 Au2 Au3 133.63(7) . .
1042
+ Au7 Au2 Au3 60.96(3) . .
1043
+ Au1 Au2 Au3 58.34(2) . .
1044
+ Au10 Au2 Au3 60.85(2) . .
1045
+ S14 Au2 Au4 115.94(8) . 2_676
1046
+ Au7 Au2 Au4 65.30(3) . 2_676
1047
+ Au1 Au2 Au4 57.77(4) . 2_676
1048
+ Au10 Au2 Au4 104.63(4) . 2_676
1049
+ Au3 Au2 Au4 110.31(3) . 2_676
1050
+ S14 Au2 Au9 95.68(8) . 2_676
1051
+ Au7 Au2 Au9 110.94(4) . 2_676
1052
+ Au1 Au2 Au9 58.31(3) . 2_676
1053
+ Au10 Au2 Au9 56.57(3) . 2_676
1054
+ Au3 Au2 Au9 106.28(3) . 2_676
1055
+ Au4 Au2 Au9 57.69(3) 2_676 2_676
1056
+ S14 Au2 Au13 82.36(7) . .
1057
+ Au7 Au2 Au13 65.73(3) . .
1058
+ Au1 Au2 Au13 113.39(3) . .
1059
+ Au10 Au2 Au13 171.15(2) . .
1060
+ Au3 Au2 Au13 120.29(2) . .
1061
+ Au4 Au2 Au13 66.56(4) 2_676 .
1062
+ Au9 Au2 Au13 116.39(3) 2_676 .
1063
+ S14 Au2 Au12 95.30(8) . .
1064
+ Au7 Au2 Au12 60.76(4) . .
1065
+ Au1 Au2 Au12 110.30(3) . .
1066
+ Au10 Au2 Au12 116.85(3) . .
1067
+ Au3 Au2 Au12 62.97(3) . .
1068
+ Au4 Au2 Au12 120.04(3) 2_676 .
1069
+ Au9 Au2 Au12 168.352(18) 2_676 .
1070
+ Au13 Au2 Au12 69.01(3) . .
1071
+ S14 Au2 Au5 44.36(7) . .
1072
+ Au7 Au2 Au5 169.67(2) . .
1073
+ Au1 Au2 Au5 110.07(3) . .
1074
+ Au10 Au2 Au5 62.62(3) . .
1075
+ Au3 Au2 Au5 117.32(3) . .
1076
+ Au4 Au2 Au5 107.92(3) 2_676 .
1077
+ Au9 Au2 Au5 59.08(4) 2_676 .
1078
+ Au13 Au2 Au5 119.83(3) . .
1079
+ Au12 Au2 Au5 128.62(3) . .
1080
+ S21 Au3 Au4 141.17(8) . .
1081
+ S21 Au3 Au1 150.50(8) . .
1082
+ Au4 Au3 Au1 59.95(3) . .
1083
+ S21 Au3 Au7 91.98(8) . .
1084
+ Au4 Au3 Au7 109.00(4) . .
1085
+ Au1 Au3 Au7 58.52(3) . .
1086
+ S21 Au3 Au10 139.98(8) . .
1087
+ Au4 Au3 Au10 66.62(3) . .
1088
+ Au1 Au3 Au10 57.89(2) . .
1089
+ Au7 Au3 Au10 104.82(3) . .
1090
+ S21 Au3 Au2 107.14(8) . .
1091
+ Au4 Au3 Au2 111.69(3) . .
1092
+ Au1 Au3 Au2 58.32(3) . .
1093
+ Au7 Au3 Au2 57.01(2) . .
1094
+ Au10 Au3 Au2 57.85(2) . .
1095
+ S21 Au3 Au9 109.92(9) . .
1096
+ Au4 Au3 Au9 59.25(4) . .
1097
+ Au1 Au3 Au9 57.99(3) . .
1098
+ Au7 Au3 Au9 60.18(3) . .
1099
+ Au10 Au3 Au9 109.96(3) . .
1100
+ Au2 Au3 Au9 106.11(3) . .
1101
+ S21 Au3 Au8 98.77(8) . .
1102
+ Au4 Au3 Au8 64.51(4) . .
1103
+ Au1 Au3 Au8 110.62(4) . .
1104
+ Au7 Au3 Au8 168.52(2) . .
1105
+ Au10 Au3 Au8 64.18(3) . .
1106
+ Au2 Au3 Au8 115.27(3) . .
1107
+ Au9 Au3 Au8 118.89(3) . .
1108
+ S21 Au3 Au11 78.10(8) . .
1109
+ Au4 Au3 Au11 63.40(2) . .
1110
+ Au1 Au3 Au11 113.81(4) . .
1111
+ Au7 Au3 Au11 116.72(3) . .
1112
+ Au10 Au3 Au11 122.48(3) . .
1113
+ Au2 Au3 Au11 171.35(2) . .
1114
+ Au9 Au3 Au11 65.35(3) . .
1115
+ Au8 Au3 Au11 69.87(2) . .
1116
+ S21 Au3 Au12 45.63(8) . .
1117
+ Au4 Au3 Au12 168.63(2) . .
1118
+ Au1 Au3 Au12 110.14(4) . .
1119
+ Au7 Au3 Au12 59.64(4) . .
1120
+ Au10 Au3 Au12 114.09(3) . .
1121
+ Au2 Au3 Au12 62.79(2) . .
1122
+ Au9 Au3 Au12 111.53(4) . .
1123
+ Au8 Au3 Au12 126.56(4) . .
1124
+ Au11 Au3 Au12 120.59(3) . .
1125
+ S28 Au4 Au3 148.05(8) . .
1126
+ S28 Au4 Au1 149.75(8) . .
1127
+ Au3 Au4 Au1 60.34(2) . .
1128
+ S28 Au4 Au9 130.59(7) . .
1129
+ Au3 Au4 Au9 64.51(4) . .
1130
+ Au1 Au4 Au9 59.87(2) . .
1131
+ S28 Au4 Au2 99.32(9) . 2_676
1132
+ Au3 Au4 Au2 111.94(4) . 2_676
1133
+ Au1 Au4 Au2 58.10(3) . 2_676
1134
+ Au9 Au4 Au2 61.65(3) . 2_676
1135
+ S28 Au4 Au11 94.71(8) . .
1136
+ Au3 Au4 Au11 63.36(3) . .
1137
+ Au1 Au4 Au11 114.09(3) . .
1138
+ Au9 Au4 Au11 67.02(3) . .
1139
+ Au2 Au4 Au11 122.47(3) 2_676 .
1140
+ S28 Au4 Au7 94.97(8) . 2_676
1141
+ Au3 Au4 Au7 108.16(3) . 2_676
1142
+ Au1 Au4 Au7 56.19(3) . 2_676
1143
+ Au9 Au4 Au7 105.56(3) . 2_676
1144
+ Au2 Au4 Au7 54.65(2) 2_676 2_676
1145
+ Au11 Au4 Au7 170.263(18) . 2_676
1146
+ S28 Au4 Au10 120.96(7) . .
1147
+ Au3 Au4 Au10 58.90(3) . .
1148
+ Au1 Au4 Au10 55.44(2) . .
1149
+ Au9 Au4 Au10 108.12(2) . .
1150
+ Au2 Au4 Au10 103.56(4) 2_676 .
1151
+ Au11 Au4 Au10 115.77(4) . .
1152
+ Au7 Au4 Au10 59.43(4) 2_676 .
1153
+ S28 Au4 Au8 88.71(8) . .
1154
+ Au3 Au4 Au8 62.56(4) . .
1155
+ Au1 Au4 Au8 109.41(4) . .
1156
+ Au9 Au4 Au8 121.86(3) . .
1157
+ Au2 Au4 Au8 164.78(2) 2_676 .
1158
+ Au11 Au4 Au8 69.18(3) . .
1159
+ Au7 Au4 Au8 112.08(3) 2_676 .
1160
+ Au10 Au4 Au8 61.26(3) . .
1161
+ S28 Au4 Au13 44.50(8) . 2_676
1162
+ Au3 Au4 Au13 166.48(2) . 2_676
1163
+ Au1 Au4 Au13 106.33(3) . 2_676
1164
+ Au9 Au4 Au13 112.15(4) . 2_676
1165
+ Au2 Au4 Au13 57.73(4) 2_676 2_676
1166
+ Au11 Au4 Au13 128.66(3) . 2_676
1167
+ Au7 Au4 Au13 59.24(2) 2_676 2_676
1168
+ Au10 Au4 Au13 112.77(4) . 2_676
1169
+ Au8 Au4 Au13 124.81(4) . 2_676
1170
+ S20 Au5 S14 174.77(10) . .
1171
+ S20 Au5 Au9 91.11(8) . 2_676
1172
+ S14 Au5 Au9 93.84(8) . 2_676
1173
+ S20 Au5 Au10 90.28(7) . .
1174
+ S14 Au5 Au10 94.10(7) . .
1175
+ Au9 Au5 Au10 51.68(3) 2_676 .
1176
+ S20 Au5 Au2 138.97(7) . .
1177
+ S14 Au5 Au2 46.12(7) . .
1178
+ Au9 Au5 Au2 55.36(3) 2_676 .
1179
+ Au10 Au5 Au2 51.43(2) . .
1180
+ S20 Au6 S26 171.56(10) 2_676 .
1181
+ S20 Au6 Au10 92.62(9) 2_676 2_676
1182
+ S26 Au6 Au10 93.59(8) . 2_676
1183
+ S20 Au6 Au9 90.62(7) 2_676 .
1184
+ S26 Au6 Au9 97.70(8) . .
1185
+ Au10 Au6 Au9 52.36(3) 2_676 .
1186
+ S20 Au6 Au7 142.86(8) 2_676 .
1187
+ S26 Au6 Au7 45.48(8) . .
1188
+ Au10 Au6 Au7 57.20(3) 2_676 .
1189
+ Au9 Au6 Au7 54.64(2) . .
1190
+ S26 Au7 Au2 147.14(7) . .
1191
+ S26 Au7 Au1 148.92(8) . .
1192
+ Au2 Au7 Au1 60.16(4) . .
1193
+ S26 Au7 Au3 136.21(8) . .
1194
+ Au2 Au7 Au3 62.03(2) . .
1195
+ Au1 Au7 Au3 58.76(3) . .
1196
+ S26 Au7 Au9 101.19(7) . .
1197
+ Au2 Au7 Au9 111.35(4) . .
1198
+ Au1 Au7 Au9 58.62(2) . .
1199
+ Au3 Au7 Au9 61.75(3) . .
1200
+ S26 Au7 Au12 94.76(8) . .
1201
+ Au2 Au7 Au12 66.57(3) . .
1202
+ Au1 Au7 Au12 115.20(3) . .
1203
+ Au3 Au7 Au12 65.33(3) . .
1204
+ Au9 Au7 Au12 117.62(4) . .
1205
+ S26 Au7 Au10 93.41(8) . 2_676
1206
+ Au2 Au7 Au10 108.96(4) . 2_676
1207
+ Au1 Au7 Au10 55.90(3) . 2_676
1208
+ Au3 Au7 Au10 104.25(4) . 2_676
1209
+ Au9 Au7 Au10 54.17(3) . 2_676
1210
+ Au12 Au7 Au10 169.57(2) . 2_676
1211
+ S26 Au7 Au4 116.36(8) . 2_676
1212
+ Au2 Au7 Au4 60.06(3) . 2_676
1213
+ Au1 Au7 Au4 56.08(2) . 2_676
1214
+ Au3 Au7 Au4 107.20(3) . 2_676
1215
+ Au9 Au7 Au4 104.89(4) . 2_676
1216
+ Au12 Au7 Au4 120.55(3) . 2_676
1217
+ Au10 Au7 Au4 60.72(2) 2_676 2_676
1218
+ S26 Au7 Au13 87.76(7) . .
1219
+ Au2 Au7 Au13 60.84(3) . .
1220
+ Au1 Au7 Au13 109.66(3) . .
1221
+ Au3 Au7 Au13 116.90(3) . .
1222
+ Au9 Au7 Au13 167.73(2) . .
1223
+ Au12 Au7 Au13 69.36(4) . .
1224
+ Au10 Au7 Au13 117.48(4) 2_676 .
1225
+ Au4 Au7 Au13 63.28(3) 2_676 .
1226
+ S26 Au7 Au6 44.26(7) . .
1227
+ Au2 Au7 Au6 166.69(2) . .
1228
+ Au1 Au7 Au6 106.92(4) . .
1229
+ Au3 Au7 Au6 115.51(3) . .
1230
+ Au9 Au7 Au6 59.48(3) . .
1231
+ Au12 Au7 Au6 125.46(3) . .
1232
+ Au10 Au7 Au6 58.15(3) 2_676 .
1233
+ Au4 Au7 Au6 111.13(4) 2_676 .
1234
+ Au13 Au7 Au6 126.17(3) . .
1235
+ S25 Au8 S24 170.50(11) . .
1236
+ S25 Au8 Au3 101.56(8) . .
1237
+ S24 Au8 Au3 87.77(8) . .
1238
+ S25 Au8 Au4 92.69(9) . .
1239
+ S24 Au8 Au4 91.51(8) . .
1240
+ Au3 Au8 Au4 52.94(3) . .
1241
+ S25 Au8 Au10 47.06(8) . .
1242
+ S24 Au8 Au10 141.63(8) . .
1243
+ Au3 Au8 Au10 55.37(3) . .
1244
+ Au4 Au8 Au10 59.22(3) . .
1245
+ S15 Au9 Au10 149.01(8) . 2_676
1246
+ S15 Au9 Au1 151.43(8) . .
1247
+ Au10 Au9 Au1 59.43(2) 2_676 .
1248
+ S15 Au9 Au4 98.65(8) . .
1249
+ Au10 Au9 Au4 108.96(3) 2_676 .
1250
+ Au1 Au9 Au4 58.536(19) . .
1251
+ S15 Au9 Au7 121.51(8) . .
1252
+ Au10 Au9 Au7 65.16(4) 2_676 .
1253
+ Au1 Au9 Au7 57.46(3) . .
1254
+ Au4 Au9 Au7 104.76(3) . .
1255
+ S15 Au9 Au2 129.63(8) . 2_676
1256
+ Au10 Au9 Au2 58.84(3) 2_676 2_676
1257
+ Au1 Au9 Au2 57.38(3) . 2_676
1258
+ Au4 Au9 Au2 60.66(4) . 2_676
1259
+ Au7 Au9 Au2 108.49(4) . 2_676
1260
+ S15 Au9 Au3 96.81(8) . .
1261
+ Au10 Au9 Au3 110.00(3) 2_676 .
1262
+ Au1 Au9 Au3 57.09(2) . .
1263
+ Au4 Au9 Au3 56.24(3) . .
1264
+ Au7 Au9 Au3 58.07(4) . .
1265
+ Au2 Au9 Au3 104.76(4) 2_676 .
1266
+ S15 Au9 Au5 89.70(8) . 2_676
1267
+ Au10 Au9 Au5 66.01(3) 2_676 2_676
1268
+ Au1 Au9 Au5 114.89(3) . 2_676
1269
+ Au4 Au9 Au5 115.77(3) . 2_676
1270
+ Au7 Au9 Au5 123.95(4) . 2_676
1271
+ Au2 Au9 Au5 65.56(3) 2_676 2_676
1272
+ Au3 Au9 Au5 170.31(2) . 2_676
1273
+ S15 Au9 Au6 90.52(8) . .
1274
+ Au10 Au9 Au6 63.58(3) 2_676 .
1275
+ Au1 Au9 Au6 111.18(2) . .
1276
+ Au4 Au9 Au6 169.57(2) . .
1277
+ Au7 Au9 Au6 65.88(3) . .
1278
+ Au2 Au9 Au6 116.65(4) 2_676 .
1279
+ Au3 Au9 Au6 117.96(3) . .
1280
+ Au5 Au9 Au6 68.95(3) 2_676 .
1281
+ S15 Au9 Au11 44.30(8) . .
1282
+ Au10 Au9 Au11 166.68(2) 2_676 .
1283
+ Au1 Au9 Au11 107.26(3) . .
1284
+ Au4 Au9 Au11 59.80(3) . .
1285
+ Au7 Au9 Au11 109.08(4) . .
1286
+ Au2 Au9 Au11 115.15(3) 2_676 .
1287
+ Au3 Au9 Au11 58.53(3) . .
1288
+ Au5 Au9 Au11 124.07(3) 2_676 .
1289
+ Au6 Au9 Au11 126.41(3) . .
1290
+ S25 Au10 Au9 141.51(10) . 2_676
1291
+ S25 Au10 Au1 148.02(8) . .
1292
+ Au9 Au10 Au1 61.38(3) 2_676 .
1293
+ S25 Au10 Au2 141.13(10) . .
1294
+ Au9 Au10 Au2 64.59(3) 2_676 .
1295
+ Au1 Au10 Au2 59.84(4) . .
1296
+ S25 Au10 Au3 105.50(10) . .
1297
+ Au9 Au10 Au3 112.98(3) 2_676 .
1298
+ Au1 Au10 Au3 58.76(2) . .
1299
+ Au2 Au10 Au3 61.31(3) . .
1300
+ S25 Au10 Au7 109.38(10) . 2_676
1301
+ Au9 Au10 Au7 60.66(3) 2_676 2_676
1302
+ Au1 Au10 Au7 56.48(4) . 2_676
1303
+ Au2 Au10 Au7 109.38(4) . 2_676
1304
+ Au3 Au10 Au7 104.86(3) . 2_676
1305
+ S25 Au10 Au6 77.99(10) . 2_676
1306
+ Au9 Au10 Au6 64.06(3) 2_676 2_676
1307
+ Au1 Au10 Au6 113.08(3) . 2_676
1308
+ Au2 Au10 Au6 122.12(3) . 2_676
1309
+ Au3 Au10 Au6 169.41(2) . 2_676
1310
+ Au7 Au10 Au6 64.65(3) 2_676 2_676
1311
+ S25 Au10 Au4 92.13(8) . .
1312
+ Au9 Au10 Au4 109.45(4) 2_676 .
1313
+ Au1 Au10 Au4 55.90(3) . .
1314
+ Au2 Au10 Au4 104.76(3) . .
1315
+ Au3 Au10 Au4 54.48(3) . .
1316
+ Au7 Au10 Au4 59.85(3) 2_676 .
1317
+ Au6 Au10 Au4 115.93(3) 2_676 .
1318
+ S25 Au10 Au8 45.98(9) . .
1319
+ Au9 Au10 Au8 168.87(2) 2_676 .
1320
+ Au1 Au10 Au8 108.27(3) . .
1321
+ Au2 Au10 Au8 115.01(3) . .
1322
+ Au3 Au10 Au8 60.45(2) . .
1323
+ Au7 Au10 Au8 110.95(3) 2_676 .
1324
+ Au6 Au10 Au8 120.55(3) 2_676 .
1325
+ Au4 Au10 Au8 59.52(3) . .
1326
+ S25 Au10 Au5 98.56(9) . .
1327
+ Au9 Au10 Au5 62.31(3) 2_676 .
1328
+ Au1 Au10 Au5 113.42(3) . .
1329
+ Au2 Au10 Au5 65.95(2) . .
1330
+ Au3 Au10 Au5 120.66(3) . .
1331
+ Au7 Au10 Au5 116.82(3) 2_676 .
1332
+ Au6 Au10 Au5 67.87(3) 2_676 .
1333
+ Au4 Au10 Au5 169.249(19) . .
1334
+ Au8 Au10 Au5 128.42(3) . .
1335
+ S24 Au11 S15 172.68(12) . .
1336
+ S24 Au11 Au3 87.88(8) . .
1337
+ S15 Au11 Au3 96.39(8) . .
1338
+ S24 Au11 Au4 92.96(9) . .
1339
+ S15 Au11 Au4 94.36(9) . .
1340
+ Au3 Au11 Au4 53.25(3) . .
1341
+ S24 Au11 Au9 140.11(8) . .
1342
+ S15 Au11 Au9 46.34(8) . .
1343
+ Au3 Au11 Au9 56.12(3) . .
1344
+ Au4 Au11 Au9 53.19(2) . .
1345
+ S16 Au12 S21 173.84(12) . .
1346
+ S16 Au12 Au7 94.20(9) . .
1347
+ S21 Au12 Au7 89.91(9) . .
1348
+ S16 Au12 Au2 85.19(8) . .
1349
+ S21 Au12 Au2 100.96(9) . .
1350
+ Au7 Au12 Au2 52.67(2) . .
1351
+ S16 Au12 Au3 138.18(8) . .
1352
+ S21 Au12 Au3 47.90(8) . .
1353
+ Au7 Au12 Au3 55.03(4) . .
1354
+ Au2 Au12 Au3 54.24(3) . .
1355
+ S28 Au13 S16 171.64(10) 2_676 .
1356
+ S28 Au13 Au2 98.69(8) 2_676 .
1357
+ S16 Au13 Au2 89.57(8) . .
1358
+ S28 Au13 Au7 94.57(8) 2_676 .
1359
+ S16 Au13 Au7 91.40(8) . .
1360
+ Au2 Au13 Au7 53.429(19) . .
1361
+ S28 Au13 Au4 45.89(7) 2_676 2_676
1362
+ S16 Au13 Au4 142.31(7) . 2_676
1363
+ Au2 Au13 Au4 55.71(3) . 2_676
1364
+ Au7 Au13 Au4 57.49(3) . 2_676
1365
+ C1_2005 S14 Au5 106.5(4) . .
1366
+ C1_2005 S14 Au2 107.4(4) . .
1367
+ Au5 S14 Au2 89.52(10) . .
1368
+ C1_2002 S15 Au11 102.6(5) . .
1369
+ C1_2002 S15 Au9 104.3(5) . .
1370
+ Au11 S15 Au9 89.36(11) . .
1371
+ C1_2006 S16 Au12 103.3(4) . .
1372
+ C1_2006 S16 Au13 103.7(5) . .
1373
+ Au12 S16 Au13 100.24(11) . .
1374
+ C1_2008 S20 Au5 106.0(4) . .
1375
+ C1_2008 S20 Au6 107.0(4) . 2_676
1376
+ Au5 S20 Au6 99.99(11) . 2_676
1377
+ C1_2004 S21 Au12 108.8(4) . .
1378
+ C1_2004 S21 Au3 115.7(5) . .
1379
+ Au12 S21 Au3 86.47(11) . .
1380
+ C1_2001 S24 Au11 106.3(4) . .
1381
+ C1_2001 S24 Au8 102.5(5) . .
1382
+ Au11 S24 Au8 100.32(12) . .
1383
+ C1_2007 S25 Au8 102.5(5) . .
1384
+ C1_2007 S25 Au10 102.5(5) . .
1385
+ Au8 S25 Au10 86.96(11) . .
1386
+ C1_2009 S26 Au6 104.7(4) . .
1387
+ C1_2009 S26 Au7 102.2(4) . .
1388
+ Au6 S26 Au7 90.26(11) . .
1389
+ C1_2003 S28 Au13 108.0(4) . 2_676
1390
+ C1_2003 S28 Au4 110.8(4) . .
1391
+ Au13 S28 Au4 89.60(10) 2_676 .
1392
+ C2_2001 C1_2001 S24 111.8(9) . .
1393
+ C2_2001 C1_2001 H1A_2001 109.3 . .
1394
+ S24 C1_2001 H1A_2001 109.3 . .
1395
+ C2_2001 C1_2001 H1B_2001 109.3 . .
1396
+ S24 C1_2001 H1B_2001 109.3 . .
1397
+ H1A_2001 C1_2001 H1B_2001 107.9 . .
1398
+ C3_2001 C2_2001 C1_2001 111.7(11) . .
1399
+ C3_2001 C2_2001 H2A_2001 109.3 . .
1400
+ C1_2001 C2_2001 H2A_2001 109.3 . .
1401
+ C3_2001 C2_2001 H2B_2001 109.3 . .
1402
+ C1_2001 C2_2001 H2B_2001 109.3 . .
1403
+ H2A_2001 C2_2001 H2B_2001 107.9 . .
1404
+ C4_2001 C3_2001 C8_2001 119.4(12) . .
1405
+ C4_2001 C3_2001 C2_2001 121.2(11) . .
1406
+ C8_2001 C3_2001 C2_2001 119.2(12) . .
1407
+ C3_2001 C4_2001 C5_2001 120.8(12) . .
1408
+ C3_2001 C4_2001 H4_2001 119.6 . .
1409
+ C5_2001 C4_2001 H4_2001 119.6 . .
1410
+ C6_2001 C5_2001 C4_2001 118.9(12) . .
1411
+ C6_2001 C5_2001 H5_2001 120.6 . .
1412
+ C4_2001 C5_2001 H5_2001 120.6 . .
1413
+ C7_2001 C6_2001 C5_2001 121.6(12) . .
1414
+ C7_2001 C6_2001 H6_2001 119.2 . .
1415
+ C5_2001 C6_2001 H6_2001 119.2 . .
1416
+ C6_2001 C7_2001 C8_2001 119.3(14) . .
1417
+ C6_2001 C7_2001 H7_2001 120.3 . .
1418
+ C8_2001 C7_2001 H7_2001 120.3 . .
1419
+ C7_2001 C8_2001 C3_2001 120.0(14) . .
1420
+ C7_2001 C8_2001 H8_2001 120.0 . .
1421
+ C3_2001 C8_2001 H8_2001 120.0 . .
1422
+ C2_2002 C1_2002 S15 109.4(12) . .
1423
+ C2_2002 C1_2002 H1A_2002 109.8 . .
1424
+ S15 C1_2002 H1A_2002 109.8 . .
1425
+ C2_2002 C1_2002 H1B_2002 109.8 . .
1426
+ S15 C1_2002 H1B_2002 109.8 . .
1427
+ H1A_2002 C1_2002 H1B_2002 108.2 . .
1428
+ C3_2002 C2_2002 C1_2002 115.6(17) . .
1429
+ C3_2002 C2_2002 H2A_2002 108.4 . .
1430
+ C1_2002 C2_2002 H2A_2002 108.4 . .
1431
+ C3_2002 C2_2002 H2B_2002 108.4 . .
1432
+ C1_2002 C2_2002 H2B_2002 108.4 . .
1433
+ H2A_2002 C2_2002 H2B_2002 107.4 . .
1434
+ C8_2002 C3_2002 C2_2002 126(2) . .
1435
+ C8_2002 C3_2002 C4_2002 115(2) . .
1436
+ C2_2002 C3_2002 C4_2002 120(2) . .
1437
+ C3_2002 C4_2002 C5_2002 123(2) . .
1438
+ C3_2002 C4_2002 H4_2002 118.4 . .
1439
+ C5_2002 C4_2002 H4_2002 118.4 . .
1440
+ C6_2002 C5_2002 C4_2002 120(3) . .
1441
+ C6_2002 C5_2002 H5_2002 119.9 . .
1442
+ C4_2002 C5_2002 H5_2002 119.9 . .
1443
+ C5_2002 C6_2002 C7_2002 116(3) . .
1444
+ C5_2002 C6_2002 H6_2002 122.1 . .
1445
+ C7_2002 C6_2002 H6_2002 122.1 . .
1446
+ C8_2002 C7_2002 C6_2002 123(2) . .
1447
+ C8_2002 C7_2002 H7_2002 118.6 . .
1448
+ C6_2002 C7_2002 H7_2002 118.6 . .
1449
+ C3_2002 C8_2002 C7_2002 123(3) . .
1450
+ C3_2002 C8_2002 H8_2002 118.4 . .
1451
+ C7_2002 C8_2002 H8_2002 118.4 . .
1452
+ C2_2003 C1_2003 S28 117.8(8) . .
1453
+ C2_2003 C1_2003 H1A_2003 107.9 . .
1454
+ S28 C1_2003 H1A_2003 107.9 . .
1455
+ C2_2003 C1_2003 H1B_2003 107.9 . .
1456
+ S28 C1_2003 H1B_2003 107.9 . .
1457
+ H1A_2003 C1_2003 H1B_2003 107.2 . .
1458
+ C1_2003 C2_2003 C3_2003 109.1(9) . .
1459
+ C1_2003 C2_2003 H2A_2003 109.9 . .
1460
+ C3_2003 C2_2003 H2A_2003 109.9 . .
1461
+ C1_2003 C2_2003 H2B_2003 109.9 . .
1462
+ C3_2003 C2_2003 H2B_2003 109.9 . .
1463
+ H2A_2003 C2_2003 H2B_2003 108.3 . .
1464
+ C8_2003 C3_2003 C4_2003 118.7(13) . .
1465
+ C8_2003 C3_2003 C2_2003 122.9(12) . .
1466
+ C4_2003 C3_2003 C2_2003 118.4(13) . .
1467
+ C5_2003 C4_2003 C3_2003 121.6(16) . .
1468
+ C5_2003 C4_2003 H4_2003 119.2 . .
1469
+ C3_2003 C4_2003 H4_2003 119.2 . .
1470
+ C6_2003 C5_2003 C4_2003 119.2(17) . .
1471
+ C6_2003 C5_2003 H5_2003 120.4 . .
1472
+ C4_2003 C5_2003 H5_2003 120.4 . .
1473
+ C7_2003 C6_2003 C5_2003 120.5(15) . .
1474
+ C7_2003 C6_2003 H6_2003 119.7 . .
1475
+ C5_2003 C6_2003 H6_2003 119.7 . .
1476
+ C6_2003 C7_2003 C8_2003 119.3(16) . .
1477
+ C6_2003 C7_2003 H7_2003 120.4 . .
1478
+ C8_2003 C7_2003 H7_2003 120.4 . .
1479
+ C3_2003 C8_2003 C7_2003 120.7(15) . .
1480
+ C3_2003 C8_2003 H8_2003 119.6 . .
1481
+ C7_2003 C8_2003 H8_2003 119.6 . .
1482
+ C2_2004 C1_2004 S21 116.1(11) . .
1483
+ C2_2004 C1_2004 H1A_2004 108.3 . .
1484
+ S21 C1_2004 H1A_2004 108.3 . .
1485
+ C2_2004 C1_2004 H1B_2004 108.3 . .
1486
+ S21 C1_2004 H1B_2004 108.3 . .
1487
+ H1A_2004 C1_2004 H1B_2004 107.4 . .
1488
+ C1_2004 C2_2004 C3_2004 109.4(14) . .
1489
+ C1_2004 C2_2004 H2A_2004 109.8 . .
1490
+ C3_2004 C2_2004 H2A_2004 109.8 . .
1491
+ C1_2004 C2_2004 H2B_2004 109.8 . .
1492
+ C3_2004 C2_2004 H2B_2004 109.8 . .
1493
+ H2A_2004 C2_2004 H2B_2004 108.2 . .
1494
+ C8_2004 C3_2004 C4_2004 115(2) . .
1495
+ C8_2004 C3_2004 C2_2004 126(2) . .
1496
+ C4_2004 C3_2004 C2_2004 118.2(16) . .
1497
+ C3_2004 C4_2004 C5_2004 121(2) . .
1498
+ C3_2004 C4_2004 H4_2004 119.5 . .
1499
+ C5_2004 C4_2004 H4_2004 119.5 . .
1500
+ C6_2004 C5_2004 C4_2004 120(3) . .
1501
+ C6_2004 C5_2004 H5_2004 120.2 . .
1502
+ C4_2004 C5_2004 H5_2004 120.2 . .
1503
+ C7_2004 C6_2004 C5_2004 116(2) . .
1504
+ C7_2004 C6_2004 H6_2004 122.1 . .
1505
+ C5_2004 C6_2004 H6_2004 122.1 . .
1506
+ C6_2004 C7_2004 C8_2004 128(3) . .
1507
+ C6_2004 C7_2004 H7_2004 116.0 . .
1508
+ C8_2004 C7_2004 H7_2004 116.0 . .
1509
+ C3_2004 C8_2004 C7_2004 120(3) . .
1510
+ C3_2004 C8_2004 H8_2004 119.9 . .
1511
+ C7_2004 C8_2004 H8_2004 119.9 . .
1512
+ C2_2005 C1_2005 S14 109.3(9) . .
1513
+ C2_2005 C1_2005 H1A_2005 109.8 . .
1514
+ S14 C1_2005 H1A_2005 109.8 . .
1515
+ C2_2005 C1_2005 H1B_2005 109.8 . .
1516
+ S14 C1_2005 H1B_2005 109.8 . .
1517
+ H1A_2005 C1_2005 H1B_2005 108.3 . .
1518
+ C3_2005 C2_2005 C1_2005 109.3(12) . .
1519
+ C3_2005 C2_2005 H2A_2005 109.8 . .
1520
+ C1_2005 C2_2005 H2A_2005 109.8 . .
1521
+ C3_2005 C2_2005 H2B_2005 109.8 . .
1522
+ C1_2005 C2_2005 H2B_2005 109.8 . .
1523
+ H2A_2005 C2_2005 H2B_2005 108.3 . .
1524
+ C8_2005 C3_2005 C4_2005 115.4(16) . .
1525
+ C8_2005 C3_2005 C2_2005 123.8(15) . .
1526
+ C4_2005 C3_2005 C2_2005 120.5(15) . .
1527
+ C5_2005 C4_2005 C3_2005 122(2) . .
1528
+ C5_2005 C4_2005 H4_2005 118.9 . .
1529
+ C3_2005 C4_2005 H4_2005 118.9 . .
1530
+ C4_2005 C5_2005 C6_2005 116.1(18) . .
1531
+ C4_2005 C5_2005 H5_2005 121.9 . .
1532
+ C6_2005 C5_2005 H5_2005 121.9 . .
1533
+ C7_2005 C6_2005 C5_2005 120.8(17) . .
1534
+ C7_2005 C6_2005 H6_2005 119.6 . .
1535
+ C5_2005 C6_2005 H6_2005 119.6 . .
1536
+ C8_2005 C7_2005 C6_2005 118.4(16) . .
1537
+ C8_2005 C7_2005 H7_2005 120.8 . .
1538
+ C6_2005 C7_2005 H7_2005 120.8 . .
1539
+ C7_2005 C8_2005 C3_2005 127.1(16) . .
1540
+ C7_2005 C8_2005 H8_2005 116.5 . .
1541
+ C3_2005 C8_2005 H8_2005 116.5 . .
1542
+ C2_2006 C1_2006 S16 111.4(9) . .
1543
+ C2_2006 C1_2006 H1A_2006 109.4 . .
1544
+ S16 C1_2006 H1A_2006 109.4 . .
1545
+ C2_2006 C1_2006 H1B_2006 109.4 . .
1546
+ S16 C1_2006 H1B_2006 109.4 . .
1547
+ H1A_2006 C1_2006 H1B_2006 108.0 . .
1548
+ C1_2006 C2_2006 C3_2006 111.4(10) . .
1549
+ C1_2006 C2_2006 H2A_2006 109.3 . .
1550
+ C3_2006 C2_2006 H2A_2006 109.3 . .
1551
+ C1_2006 C2_2006 H2B_2006 109.3 . .
1552
+ C3_2006 C2_2006 H2B_2006 109.3 . .
1553
+ H2A_2006 C2_2006 H2B_2006 108.0 . .
1554
+ C4_2006 C3_2006 C8_2006 119.0(13) . .
1555
+ C4_2006 C3_2006 C2_2006 121.8(13) . .
1556
+ C8_2006 C3_2006 C2_2006 119.2(13) . .
1557
+ C3_2006 C4_2006 C5_2006 122.7(17) . .
1558
+ C3_2006 C4_2006 H4_2006 118.7 . .
1559
+ C5_2006 C4_2006 H4_2006 118.7 . .
1560
+ C6_2006 C5_2006 C4_2006 117(2) . .
1561
+ C6_2006 C5_2006 H5_2006 121.4 . .
1562
+ C4_2006 C5_2006 H5_2006 121.4 . .
1563
+ C5_2006 C6_2006 C7_2006 122.9(17) . .
1564
+ C5_2006 C6_2006 H6_2006 118.5 . .
1565
+ C7_2006 C6_2006 H6_2006 118.5 . .
1566
+ C8_2006 C7_2006 C6_2006 117.8(17) . .
1567
+ C8_2006 C7_2006 H7_2006 121.1 . .
1568
+ C6_2006 C7_2006 H7_2006 121.1 . .
1569
+ C3_2006 C8_2006 C7_2006 120.4(17) . .
1570
+ C3_2006 C8_2006 H8_2006 119.8 . .
1571
+ C7_2006 C8_2006 H8_2006 119.8 . .
1572
+ C2_2007 C1_2007 S25 95(2) . .
1573
+ C2_2007 C1_2007 H1A_2007 112.8 . .
1574
+ S25 C1_2007 H1A_2007 112.8 . .
1575
+ C2_2007 C1_2007 H1B_2007 112.8 . .
1576
+ S25 C1_2007 H1B_2007 112.8 . .
1577
+ H1A_2007 C1_2007 H1B_2007 110.2 . .
1578
+ C1_2007 C2_2007 C3_2007 91.4(19) . .
1579
+ C1_2007 C2_2007 H2A_2007 113.4 . .
1580
+ C3_2007 C2_2007 H2A_2007 113.4 . .
1581
+ C1_2007 C2_2007 H2B_2007 113.4 . .
1582
+ C3_2007 C2_2007 H2B_2007 113.4 . .
1583
+ H2A_2007 C2_2007 H2B_2007 110.7 . .
1584
+ C8_2007 C3_2007 C4_2007 116.9(16) . .
1585
+ C8_2007 C3_2007 C2_2007 117.1(18) . .
1586
+ C4_2007 C3_2007 C2_2007 123.9(19) . .
1587
+ C5_2007 C4_2007 C3_2007 123.2(19) . .
1588
+ C5_2007 C4_2007 H4_2007 118.4 . .
1589
+ C3_2007 C4_2007 H4_2007 118.4 . .
1590
+ C4_2007 C5_2007 C6_2007 119.4(16) . .
1591
+ C4_2007 C5_2007 H5_2007 120.3 . .
1592
+ C6_2007 C5_2007 H5_2007 120.3 . .
1593
+ C7_2007 C6_2007 C5_2007 120.1(15) . .
1594
+ C7_2007 C6_2007 H6_2007 120.0 . .
1595
+ C5_2007 C6_2007 H6_2007 120.0 . .
1596
+ C6_2007 C7_2007 C8_2007 120.4(16) . .
1597
+ C6_2007 C7_2007 H7_2007 119.8 . .
1598
+ C8_2007 C7_2007 H7_2007 119.8 . .
1599
+ C7_2007 C8_2007 C3_2007 119.9(17) . .
1600
+ C7_2007 C8_2007 H8_2007 120.1 . .
1601
+ C3_2007 C8_2007 H8_2007 120.1 . .
1602
+ C2_2008 C1_2008 S20 112.2(9) . .
1603
+ C2_2008 C1_2008 H1A_2008 109.2 . .
1604
+ S20 C1_2008 H1A_2008 109.2 . .
1605
+ C2_2008 C1_2008 H1B_2008 109.2 . .
1606
+ S20 C1_2008 H1B_2008 109.2 . .
1607
+ H1A_2008 C1_2008 H1B_2008 107.9 . .
1608
+ C3_2008 C2_2008 C1_2008 116.1(10) . .
1609
+ C3_2008 C2_2008 H2A_2008 108.2 . .
1610
+ C1_2008 C2_2008 H2A_2008 108.2 . .
1611
+ C3_2008 C2_2008 H2B_2008 108.2 . .
1612
+ C1_2008 C2_2008 H2B_2008 108.2 . .
1613
+ H2A_2008 C2_2008 H2B_2008 107.4 . .
1614
+ C8_2008 C3_2008 C4_2008 119.2(13) . .
1615
+ C8_2008 C3_2008 C2_2008 120.5(11) . .
1616
+ C4_2008 C3_2008 C2_2008 120.2(12) . .
1617
+ C5_2008 C4_2008 C3_2008 119.8(13) . .
1618
+ C5_2008 C4_2008 H4_2008 120.1 . .
1619
+ C3_2008 C4_2008 H4_2008 120.1 . .
1620
+ C4_2008 C5_2008 C6_2008 120.8(12) . .
1621
+ C4_2008 C5_2008 H5_2008 119.6 . .
1622
+ C6_2008 C5_2008 H5_2008 119.6 . .
1623
+ C7_2008 C6_2008 C5_2008 118.4(13) . .
1624
+ C7_2008 C6_2008 H6_2008 120.8 . .
1625
+ C5_2008 C6_2008 H6_2008 120.8 . .
1626
+ C6_2008 C7_2008 C8_2008 121.9(14) . .
1627
+ C6_2008 C7_2008 H7_2008 119.0 . .
1628
+ C8_2008 C7_2008 H7_2008 119.0 . .
1629
+ C3_2008 C8_2008 C7_2008 119.9(13) . .
1630
+ C3_2008 C8_2008 H8_2008 120.0 . .
1631
+ C7_2008 C8_2008 H8_2008 120.0 . .
1632
+ C2_2009 C1_2009 S26 110.4(8) . .
1633
+ C2_2009 C1_2009 H1A_2009 109.6 . .
1634
+ S26 C1_2009 H1A_2009 109.6 . .
1635
+ C2_2009 C1_2009 H1B_2009 109.6 . .
1636
+ S26 C1_2009 H1B_2009 109.6 . .
1637
+ H1A_2009 C1_2009 H1B_2009 108.1 . .
1638
+ C1_2009 C2_2009 C3_2009 113.1(10) . .
1639
+ C1_2009 C2_2009 H2A_2009 109.0 . .
1640
+ C3_2009 C2_2009 H2A_2009 109.0 . .
1641
+ C1_2009 C2_2009 H2B_2009 109.0 . .
1642
+ C3_2009 C2_2009 H2B_2009 109.0 . .
1643
+ H2A_2009 C2_2009 H2B_2009 107.8 . .
1644
+ C4_2009 C3_2009 C8_2009 117.4(13) . .
1645
+ C4_2009 C3_2009 C2_2009 119.2(13) . .
1646
+ C8_2009 C3_2009 C2_2009 123.4(11) . .
1647
+ C5_2009 C4_2009 C3_2009 122.0(18) . .
1648
+ C5_2009 C4_2009 H4_2009 119.0 . .
1649
+ C3_2009 C4_2009 H4_2009 119.0 . .
1650
+ C4_2009 C5_2009 C6_2009 119.9(18) . .
1651
+ C4_2009 C5_2009 H5_2009 120.1 . .
1652
+ C6_2009 C5_2009 H5_2009 120.1 . .
1653
+ C7_2009 C6_2009 C5_2009 120.5(18) . .
1654
+ C7_2009 C6_2009 H6_2009 119.7 . .
1655
+ C5_2009 C6_2009 H6_2009 119.7 . .
1656
+ C6_2009 C7_2009 C8_2009 119.1(18) . .
1657
+ C6_2009 C7_2009 H7_2009 120.4 . .
1658
+ C8_2009 C7_2009 H7_2009 120.4 . .
1659
+ C3_2009 C8_2009 C7_2009 120.9(14) . .
1660
+ C3_2009 C8_2009 H8_2009 119.5 . .
1661
+ C7_2009 C8_2009 H8_2009 119.5 . .
1662
+ C10_2010 C9_2010 C15_2010 117.3(16) . .
1663
+ C10_2010 C9_2010 H9_2010 121.4 . .
1664
+ C15_2010 C9_2010 H9_2010 121.4 . .
1665
+ C9_2010 C10_2010 C11_2010 121.6(15) . .
1666
+ C9_2010 C10_2010 H10_2010 119.2 . .
1667
+ C11_2010 C10_2010 H10_2010 119.2 . .
1668
+ C12_2010 C11_2010 C10_2010 119.2(15) . .
1669
+ C12_2010 C11_2010 H11_2010 120.4 . .
1670
+ C10_2010 C11_2010 H11_2010 120.4 . .
1671
+ C14_2010 C12_2010 C11_2010 120.3(14) . .
1672
+ C14_2010 C12_2010 C13_2010 118.8(15) . .
1673
+ C11_2010 C12_2010 C13_2010 120.8(15) . .
1674
+ C14_2010 C12_2010 H12_2010 119.9 . .
1675
+ C11_2010 C12_2010 H12_2010 119.9 . .
1676
+ C13_2010 C12_2010 H12_2010 4.9 . .
1677
+ C12_2010 C13_2010 H13A_2010 109.5 . .
1678
+ C12_2010 C13_2010 H13B_2010 109.5 . .
1679
+ H13A_2010 C13_2010 H13B_2010 109.5 . .
1680
+ C12_2010 C13_2010 H13C_2010 109.5 . .
1681
+ H13A_2010 C13_2010 H13C_2010 109.5 . .
1682
+ H13B_2010 C13_2010 H13C_2010 109.5 . .
1683
+ C15_2010 C14_2010 C12_2010 119.7(15) . .
1684
+ C15_2010 C14_2010 H14_2010 120.1 . .
1685
+ C12_2010 C14_2010 H14_2010 120.1 . .
1686
+ C14_2010 C15_2010 C9_2010 121.9(17) . .
1687
+ C14_2010 C15_2010 H15_2010 119.0 . .
1688
+ C9_2010 C15_2010 H15_2010 119.0 . .
1689
+ loop_
1690
+ _geom_bond_atom_site_label_1
1691
+ _geom_bond_atom_site_label_2
1692
+ _geom_bond_distance
1693
+ _geom_bond_site_symmetry_2
1694
+ Au1 Au10 2.7599(10) .
1695
+ Au1 Au10 2.7599(10) 2_676
1696
+ Au1 Au4 2.7750(8) .
1697
+ Au1 Au4 2.7751(8) 2_676
1698
+ Au1 Au7 2.7787(11) 2_676
1699
+ Au1 Au7 2.7787(12) .
1700
+ Au1 Au2 2.7851(15) 2_676
1701
+ Au1 Au2 2.7851(15) .
1702
+ Au1 Au3 2.7858(11) .
1703
+ Au1 Au3 2.7858(11) 2_676
1704
+ Au1 Au9 2.8138(7) 2_676
1705
+ Au1 Au9 2.8139(7) .
1706
+ Au2 S14 2.377(3) .
1707
+ Au2 Au7 2.7781(8) .
1708
+ Au2 Au10 2.8230(11) .
1709
+ Au2 Au3 2.9251(8) .
1710
+ Au2 Au4 2.9516(15) 2_676
1711
+ Au2 Au9 2.9799(12) 2_676
1712
+ Au2 Au13 3.0207(11) .
1713
+ Au2 Au12 3.2059(11) .
1714
+ Au2 Au5 3.2973(9) .
1715
+ Au3 S21 2.387(3) .
1716
+ Au3 Au4 2.7681(13) .
1717
+ Au3 Au7 2.8957(12) .
1718
+ Au3 Au10 2.9121(10) .
1719
+ Au3 Au9 3.0057(16) .
1720
+ Au3 Au8 3.0786(12) .
1721
+ Au3 Au11 3.0879(9) .
1722
+ Au3 Au12 3.2109(13) .
1723
+ Au4 S28 2.354(3) .
1724
+ Au4 Au9 2.8616(11) .
1725
+ Au4 Au2 2.9516(15) 2_676
1726
+ Au4 Au11 3.0890(10) .
1727
+ Au4 Au7 3.0946(9) 2_676
1728
+ Au4 Au10 3.1217(11) .
1729
+ Au4 Au8 3.1312(17) .
1730
+ Au4 Au13 3.2778(17) 2_676
1731
+ Au5 S20 2.304(3) .
1732
+ Au5 S14 2.306(3) .
1733
+ Au5 Au9 3.1073(18) 2_676
1734
+ Au5 Au10 3.2062(10) .
1735
+ Au6 S20 2.303(3) 2_676
1736
+ Au6 S26 2.312(3) .
1737
+ Au6 Au10 3.1139(11) 2_676
1738
+ Au6 Au9 3.1268(11) .
1739
+ Au6 Au7 3.3128(11) .
1740
+ Au7 S26 2.362(3) .
1741
+ Au7 Au9 2.9603(10) .
1742
+ Au7 Au12 3.0489(18) .
1743
+ Au7 Au10 3.0816(19) 2_676
1744
+ Au7 Au4 3.0946(9) 2_676
1745
+ Au7 Au13 3.1536(9) .
1746
+ Au8 S25 2.294(4) .
1747
+ Au8 S24 2.309(3) .
1748
+ Au8 Au10 3.1857(11) .
1749
+ Au9 S15 2.381(3) .
1750
+ Au9 Au10 2.7533(10) 2_676
1751
+ Au9 Au2 2.9799(13) 2_676
1752
+ Au9 Au5 3.1073(18) 2_676
1753
+ Au9 Au11 3.2906(14) .
1754
+ Au10 S25 2.335(3) .
1755
+ Au10 Au9 2.7533(10) 2_676
1756
+ Au10 Au7 3.0816(19) 2_676
1757
+ Au10 Au6 3.1140(11) 2_676
1758
+ Au11 S24 2.290(3) .
1759
+ Au11 S15 2.299(3) .
1760
+ Au12 S16 2.298(3) .
1761
+ Au12 S21 2.300(3) .
1762
+ Au13 S28 2.298(3) 2_676
1763
+ Au13 S16 2.303(3) .
1764
+ Au13 Au4 3.2779(17) 2_676
1765
+ S14 C1_2005 1.827(12) .
1766
+ S15 C1_2002 1.864(16) .
1767
+ S16 C1_2006 1.824(12) .
1768
+ S20 C1_2008 1.836(12) .
1769
+ S20 Au6 2.303(3) 2_676
1770
+ S21 C1_2004 1.825(14) .
1771
+ S24 C1_2001 1.840(12) .
1772
+ S25 C1_2007 2.07(2) .
1773
+ S26 C1_2009 1.845(12) .
1774
+ S28 C1_2003 1.840(11) .
1775
+ S28 Au13 2.298(3) 2_676
1776
+ C1_2001 C2_2001 1.537(17) .
1777
+ C1_2001 H1A_2001 0.9700 .
1778
+ C1_2001 H1B_2001 0.9700 .
1779
+ C2_2001 C3_2001 1.500(16) .
1780
+ C2_2001 H2A_2001 0.9700 .
1781
+ C2_2001 H2B_2001 0.9700 .
1782
+ C3_2001 C4_2001 1.375(16) .
1783
+ C3_2001 C8_2001 1.397(18) .
1784
+ C4_2001 C5_2001 1.397(17) .
1785
+ C4_2001 H4_2001 0.9300 .
1786
+ C5_2001 C6_2001 1.371(19) .
1787
+ C5_2001 H5_2001 0.9300 .
1788
+ C6_2001 C7_2001 1.37(2) .
1789
+ C6_2001 H6_2001 0.9300 .
1790
+ C7_2001 C8_2001 1.39(2) .
1791
+ C7_2001 H7_2001 0.9300 .
1792
+ C8_2001 H8_2001 0.9300 .
1793
+ C1_2002 C2_2002 1.61(2) .
1794
+ C1_2002 H1A_2002 0.9700 .
1795
+ C1_2002 H1B_2002 0.9700 .
1796
+ C2_2002 C3_2002 1.43(3) .
1797
+ C2_2002 H2A_2002 0.9700 .
1798
+ C2_2002 H2B_2002 0.9700 .
1799
+ C3_2002 C8_2002 1.37(3) .
1800
+ C3_2002 C4_2002 1.40(3) .
1801
+ C4_2002 C5_2002 1.46(3) .
1802
+ C4_2002 H4_2002 0.9300 .
1803
+ C5_2002 C6_2002 1.36(3) .
1804
+ C5_2002 H5_2002 0.9300 .
1805
+ C6_2002 C7_2002 1.43(4) .
1806
+ C6_2002 H6_2002 0.9300 .
1807
+ C7_2002 C8_2002 1.38(3) .
1808
+ C7_2002 H7_2002 0.9300 .
1809
+ C8_2002 H8_2002 0.9300 .
1810
+ C1_2003 C2_2003 1.509(15) .
1811
+ C1_2003 H1A_2003 0.9700 .
1812
+ C1_2003 H1B_2003 0.9700 .
1813
+ C2_2003 C3_2003 1.524(16) .
1814
+ C2_2003 H2A_2003 0.9700 .
1815
+ C2_2003 H2B_2003 0.9700 .
1816
+ C3_2003 C8_2003 1.36(2) .
1817
+ C3_2003 C4_2003 1.380(19) .
1818
+ C4_2003 C5_2003 1.379(18) .
1819
+ C4_2003 H4_2003 0.9300 .
1820
+ C5_2003 C6_2003 1.37(3) .
1821
+ C5_2003 H5_2003 0.9300 .
1822
+ C6_2003 C7_2003 1.37(2) .
1823
+ C6_2003 H6_2003 0.9300 .
1824
+ C7_2003 C8_2003 1.41(2) .
1825
+ C7_2003 H7_2003 0.9300 .
1826
+ C8_2003 H8_2003 0.9300 .
1827
+ C1_2004 C2_2004 1.41(2) .
1828
+ C1_2004 H1A_2004 0.9700 .
1829
+ C1_2004 H1B_2004 0.9700 .
1830
+ C2_2004 C3_2004 1.58(2) .
1831
+ C2_2004 H2A_2004 0.9700 .
1832
+ C2_2004 H2B_2004 0.9700 .
1833
+ C3_2004 C8_2004 1.25(3) .
1834
+ C3_2004 C4_2004 1.40(3) .
1835
+ C4_2004 C5_2004 1.43(3) .
1836
+ C4_2004 H4_2004 0.9300 .
1837
+ C5_2004 C6_2004 1.30(3) .
1838
+ C5_2004 H5_2004 0.9300 .
1839
+ C6_2004 C7_2004 1.24(3) .
1840
+ C6_2004 H6_2004 0.9300 .
1841
+ C7_2004 C8_2004 1.41(3) .
1842
+ C7_2004 H7_2004 0.9300 .
1843
+ C8_2004 H8_2004 0.9300 .
1844
+ C1_2005 C2_2005 1.527(16) .
1845
+ C1_2005 H1A_2005 0.9700 .
1846
+ C1_2005 H1B_2005 0.9700 .
1847
+ C2_2005 C3_2005 1.52(2) .
1848
+ C2_2005 H2A_2005 0.9700 .
1849
+ C2_2005 H2B_2005 0.9700 .
1850
+ C3_2005 C8_2005 1.33(2) .
1851
+ C3_2005 C4_2005 1.40(3) .
1852
+ C4_2005 C5_2005 1.39(3) .
1853
+ C4_2005 H4_2005 0.9300 .
1854
+ C5_2005 C6_2005 1.42(3) .
1855
+ C5_2005 H5_2005 0.9300 .
1856
+ C6_2005 C7_2005 1.36(2) .
1857
+ C6_2005 H6_2005 0.9300 .
1858
+ C7_2005 C8_2005 1.32(2) .
1859
+ C7_2005 H7_2005 0.9300 .
1860
+ C8_2005 H8_2005 0.9300 .
1861
+ C1_2006 C2_2006 1.513(16) .
1862
+ C1_2006 H1A_2006 0.9700 .
1863
+ C1_2006 H1B_2006 0.9700 .
1864
+ C2_2006 C3_2006 1.528(17) .
1865
+ C2_2006 H2A_2006 0.9700 .
1866
+ C2_2006 H2B_2006 0.9700 .
1867
+ C3_2006 C4_2006 1.360(19) .
1868
+ C3_2006 C8_2006 1.357(19) .
1869
+ C4_2006 C5_2006 1.38(2) .
1870
+ C4_2006 H4_2006 0.9300 .
1871
+ C5_2006 C6_2006 1.34(3) .
1872
+ C5_2006 H5_2006 0.9300 .
1873
+ C6_2006 C7_2006 1.38(3) .
1874
+ C6_2006 H6_2006 0.9300 .
1875
+ C7_2006 C8_2006 1.39(2) .
1876
+ C7_2006 H7_2006 0.9300 .
1877
+ C8_2006 H8_2006 0.9300 .
1878
+ C1_2007 C2_2007 1.33(3) .
1879
+ C1_2007 H1A_2007 0.9700 .
1880
+ C1_2007 H1B_2007 0.9700 .
1881
+ C2_2007 C3_2007 1.73(3) .
1882
+ C2_2007 H2A_2007 0.9700 .
1883
+ C2_2007 H2B_2007 0.9700 .
1884
+ C3_2007 C8_2007 1.36(3) .
1885
+ C3_2007 C4_2007 1.37(3) .
1886
+ C4_2007 C5_2007 1.30(2) .
1887
+ C4_2007 H4_2007 0.9300 .
1888
+ C5_2007 C6_2007 1.34(2) .
1889
+ C5_2007 H5_2007 0.9300 .
1890
+ C6_2007 C7_2007 1.34(2) .
1891
+ C6_2007 H6_2007 0.9300 .
1892
+ C7_2007 C8_2007 1.36(2) .
1893
+ C7_2007 H7_2007 0.9300 .
1894
+ C8_2007 H8_2007 0.9300 .
1895
+ C1_2008 C2_2008 1.510(15) .
1896
+ C1_2008 H1A_2008 0.9700 .
1897
+ C1_2008 H1B_2008 0.9700 .
1898
+ C2_2008 C3_2008 1.505(18) .
1899
+ C2_2008 H2A_2008 0.9700 .
1900
+ C2_2008 H2B_2008 0.9700 .
1901
+ C3_2008 C8_2008 1.372(18) .
1902
+ C3_2008 C4_2008 1.389(17) .
1903
+ C4_2008 C5_2008 1.391(18) .
1904
+ C4_2008 H4_2008 0.9300 .
1905
+ C5_2008 C6_2008 1.37(2) .
1906
+ C5_2008 H5_2008 0.9300 .
1907
+ C6_2008 C7_2008 1.37(2) .
1908
+ C6_2008 H6_2008 0.9300 .
1909
+ C7_2008 C8_2008 1.37(2) .
1910
+ C7_2008 H7_2008 0.9300 .
1911
+ C8_2008 H8_2008 0.9300 .
1912
+ C1_2009 C2_2009 1.498(15) .
1913
+ C1_2009 H1A_2009 0.9700 .
1914
+ C1_2009 H1B_2009 0.9700 .
1915
+ C2_2009 C3_2009 1.510(17) .
1916
+ C2_2009 H2A_2009 0.9700 .
1917
+ C2_2009 H2B_2009 0.9700 .
1918
+ C3_2009 C4_2009 1.352(19) .
1919
+ C3_2009 C8_2009 1.40(2) .
1920
+ C4_2009 C5_2009 1.37(3) .
1921
+ C4_2009 H4_2009 0.9300 .
1922
+ C5_2009 C6_2009 1.38(3) .
1923
+ C5_2009 H5_2009 0.9300 .
1924
+ C6_2009 C7_2009 1.34(2) .
1925
+ C6_2009 H6_2009 0.9300 .
1926
+ C7_2009 C8_2009 1.40(2) .
1927
+ C7_2009 H7_2009 0.9300 .
1928
+ C8_2009 H8_2009 0.9300 .
1929
+ C9_2010 C10_2010 1.37(2) .
1930
+ C9_2010 C15_2010 1.39(2) .
1931
+ C9_2010 H9_2010 0.9300 .
1932
+ C10_2010 C11_2010 1.39(2) .
1933
+ C10_2010 H10_2010 0.9300 .
1934
+ C11_2010 C12_2010 1.37(2) .
1935
+ C11_2010 H11_2010 0.9300 .
1936
+ C12_2010 C14_2010 1.36(2) .
1937
+ C12_2010 C13_2010 1.54(2) .
1938
+ C12_2010 H12_2010 0.9300 .
1939
+ C13_2010 H13A_2010 0.9600 .
1940
+ C13_2010 H13B_2010 0.9600 .
1941
+ C13_2010 H13C_2010 0.9600 .
1942
+ C14_2010 C15_2010 1.37(2) .
1943
+ C14_2010 H14_2010 0.9300 .
1944
+ C15_2010 H15_2010 0.9300 .
examples/inorganic_crystal.cif ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # generated using pymatgen
2
+ data_LiMn2O4
3
+ _symmetry_space_group_name_H-M 'P 1'
4
+ _cell_length_a 5.70118782
5
+ _cell_length_b 8.06767022
6
+ _cell_length_c 9.87795035
7
+ _cell_angle_alpha 114.09949373
8
+ _cell_angle_beta 106.76964054
9
+ _cell_angle_gamma 90.00002135
10
+ _symmetry_Int_Tables_number 1
11
+ _chemical_formula_structural LiMn2O4
12
+ _chemical_formula_sum 'Li6 Mn12 O24'
13
+ _cell_volume 393.47630577
14
+ _cell_formula_units_Z 6
15
+ loop_
16
+ _symmetry_equiv_pos_site_id
17
+ _symmetry_equiv_pos_as_xyz
18
+ 1 'x, y, z'
19
+ loop_
20
+ _atom_type_symbol
21
+ _atom_type_oxidation_number
22
+ Li+ 1.0
23
+ Mn3+ 3.0
24
+ Mn4+ 4.0
25
+ O2- -2.0
26
+ loop_
27
+ _atom_site_type_symbol
28
+ _atom_site_label
29
+ _atom_site_symmetry_multiplicity
30
+ _atom_site_fract_x
31
+ _atom_site_fract_y
32
+ _atom_site_fract_z
33
+ _atom_site_occupancy
34
+ Li+ Li0 1 0.91714273 0.04131819 0.83347123 1
35
+ Li+ Li1 1 0.58335526 0.70911487 0.16676469 1
36
+ Li+ Li2 1 0.08323822 0.95802295 0.16684024 1
37
+ Li+ Li3 1 0.75056154 0.62548778 0.49989611 1
38
+ Li+ Li4 1 0.41715766 0.29060308 0.83357001 1
39
+ Li+ Li5 1 0.25003958 0.37445342 0.50018293 1
40
+ Mn3+ Mn6 1 0.83358214 0.33306641 0.16680334 1
41
+ Mn3+ Mn7 1 0.66809993 0.66615172 0.83358383 1
42
+ Mn3+ Mn8 1 0.16797705 0.66624466 0.83358751 1
43
+ Mn3+ Mn9 1 0.00039185 0.99958913 0.50013453 1
44
+ Mn3+ Mn10 1 0.33359680 0.33299799 0.16683103 1
45
+ Mn3+ Mn11 1 0.50029665 0.99960030 0.50012492 1
46
+ Mn4+ Mn12 1 0.50070403 0.99972330 0.00020421 1
47
+ Mn4+ Mn13 1 0.16707531 0.66622817 0.33349613 1
48
+ Mn4+ Mn14 1 0.00077602 0.49968002 0.00022251 1
49
+ Mn4+ Mn15 1 0.83417104 0.33282978 0.66685445 1
50
+ Mn4+ Mn16 1 0.33430183 0.83272152 0.66698147 1
51
+ Mn4+ Mn17 1 0.66698763 0.16655350 0.33349705 1
52
+ O2- O18 1 0.82542226 0.08711994 0.65018107 1
53
+ O2- O19 1 0.14258653 0.42877551 0.83357077 1
54
+ O2- O20 1 0.50865415 0.24534957 0.01687179 1
55
+ O2- O21 1 0.49291906 0.75395612 0.98347559 1
56
+ O2- O22 1 0.97542250 0.23692762 0.50009031 1
57
+ O2- O23 1 0.35872214 0.09551602 0.16675809 1
58
+ O2- O24 1 0.47548904 0.76218014 0.50013846 1
59
+ O2- O25 1 0.00871754 0.27056033 0.01682709 1
60
+ O2- O26 1 0.30894205 0.57045269 0.16695366 1
61
+ O2- O27 1 0.67541170 0.93741069 0.35024778 1
62
+ O2- O28 1 0.15852979 0.42048160 0.31679160 1
63
+ O2- O29 1 0.32540385 0.06180908 0.65010675 1
64
+ O2- O30 1 0.65862057 0.39554984 0.31685382 1
65
+ O2- O31 1 0.64264563 0.90368470 0.83363130 1
66
+ O2- O32 1 0.99298078 0.72871349 0.98362566 1
67
+ O2- O33 1 0.34299453 0.60372501 0.68359964 1
68
+ O2- O34 1 0.02584613 0.76221785 0.50030835 1
69
+ O2- O35 1 0.17534743 0.91197518 0.35010492 1
70
+ O2- O36 1 0.69255997 0.42879261 0.83354118 1
71
+ O2- O37 1 0.19251743 0.90360317 0.83355327 1
72
+ O2- O38 1 0.85869384 0.57047595 0.16677477 1
73
+ O2- O39 1 0.80876520 0.09575025 0.16693826 1
74
+ O2- O40 1 0.84299557 0.57868936 0.68355179 1
75
+ O2- O41 1 0.52556405 0.23711750 0.50026589 1
examples/metal_cplx.pdb ADDED
@@ -0,0 +1,243 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ TITLE 7043848_molecule_0_1_6
2
+ REMARK 4 COMPLIES WITH FORMAT V. 3.0, 1-DEC-2006
3
+ REMARK 888
4
+ REMARK 888 WRITTEN BY MAESTRO (A PRODUCT OF SCHRODINGER, LLC)
5
+ HETATM 1 Fe1 UNK 0 4.781 17.798 5.309 1.00 1.98 Fe3+
6
+ ANISOU 1 Fe1 UNK 0 246 268 262 0 132 0
7
+ HETATM 2 N2 UNK 0 4.953 17.762 3.418 1.00 2.65 N1-
8
+ ANISOU 2 N2 UNK 0 390 350 260 10 130 40
9
+ HETATM 3 N1 UNK 0 3.512 16.312 4.982 1.00 2.46 N
10
+ ANISOU 3 N1 UNK 0 250 260 440 0 170 40
11
+ HETATM 4 N4 UNK 0 6.171 19.186 5.425 1.00 3.51 N
12
+ ANISOU 4 N4 UNK 0 470 450 510 -30 310 -90
13
+ HETATM 5 C7 UNK 0 5.365 18.820 2.668 1.00 2.42 C
14
+ ANISOU 5 C7 UNK 0 270 390 260 20 120 -10
15
+ HETATM 6 C12 UNK 0 6.032 19.891 3.329 1.00 3.08 C
16
+ ANISOU 6 C12 UNK 0 320 510 390 90 210 0
17
+ HETATM 7 N3 UNK 0 6.513 19.986 4.632 1.00 4.46 N
18
+ ANISOU 7 N3 UNK 0 520 720 400 260 150 60
19
+ HETATM 8 C13 UNK 0 6.910 19.549 6.760 1.00 3.30 C
20
+ ANISOU 8 C13 UNK 0 420 630 300 210 250 100
21
+ HETATM 9 C1 UNK 0 2.707 15.711 5.860 1.00 3.34 C
22
+ ANISOU 9 C1 UNK 0 460 200 760 70 410 50
23
+ HETATM 10 C14 UNK 0 7.673 18.569 7.310 1.00 2.79 C
24
+ ANISOU 10 C14 UNK 0 280 500 340 -100 190 -100
25
+ HETATM 11 O1 UNK 0 4.772 16.216 1.692 1.00 6.63 O
26
+ ANISOU 11 O1 UNK 0 1480 550 280 -220 190 -90
27
+ HETATM 12 C5 UNK 0 3.640 15.794 3.749 1.00 3.19 C
28
+ ANISOU 12 C5 UNK 0 370 360 330 0 10 0
29
+ HETATM 13 C15 UNK 0 8.274 18.767 8.525 1.00 2.91 C
30
+ ANISOU 13 C15 UNK 0 240 550 300 50 110 110
31
+ HETATM 14 C8 UNK 0 5.128 18.979 1.304 1.00 3.02 C
32
+ ANISOU 14 C8 UNK 0 340 490 300 30 120 50
33
+ HETATM 15 C16 UNK 0 8.083 19.993 9.175 1.00 4.18 C
34
+ ANISOU 15 C16 UNK 0 340 970 280 -230 120 -250
35
+ HETATM 16 C9 UNK 0 5.471 20.152 0.664 1.00 3.81 C
36
+ ANISOU 16 C9 UNK 0 540 610 340 40 220 50
37
+ HETATM 17 C11 UNK 0 6.403 21.059 2.630 1.00 3.99 C
38
+ ANISOU 17 C11 UNK 0 460 520 620 -80 310 -30
39
+ HETATM 18 C6 UNK 0 4.513 16.587 2.809 1.00 3.83 C
40
+ ANISOU 18 C6 UNK 0 580 370 370 -40 80 -30
41
+ HETATM 19 C10 UNK 0 6.098 21.183 1.318 1.00 4.23 C
42
+ ANISOU 19 C10 UNK 0 690 550 590 30 480 100
43
+ HETATM 20 C17 UNK 0 7.314 20.974 8.581 1.00 4.90 C
44
+ ANISOU 20 C17 UNK 0 700 440 1020 -100 660 -210
45
+ HETATM 21 C2 UNK 0 1.947 14.568 5.459 1.00 4.66 C
46
+ ANISOU 21 C2 UNK 0 520 340 1120 60 540 140
47
+ HETATM 22 C18 UNK 0 6.742 20.747 7.360 1.00 4.05 C
48
+ ANISOU 22 C18 UNK 0 510 600 470 130 250 170
49
+ HETATM 23 C4 UNK 0 2.978 14.690 3.315 1.00 4.66 C
50
+ ANISOU 23 C4 UNK 0 580 340 630 -50 60 -50
51
+ HETATM 24 C3 UNK 0 2.096 14.097 4.189 1.00 4.97 C
52
+ ANISOU 24 C3 UNK 0 350 330 1070 -80 180 -60
53
+ HETATM 25 N2 UNK 0 4.609 17.762 7.200 1.00 2.65 N1-
54
+ ANISOU 25 N2 UNK 0 390 350 260 10 130 40
55
+ HETATM 26 N1 UNK 0 6.050 16.312 5.636 1.00 2.46 N
56
+ ANISOU 26 N1 UNK 0 250 260 440 0 170 40
57
+ HETATM 27 N4 UNK 0 3.391 19.186 5.194 1.00 3.51 N
58
+ ANISOU 27 N4 UNK 0 470 450 510 -30 310 -90
59
+ HETATM 28 C7 UNK 0 4.197 18.820 7.950 1.00 2.42 C
60
+ ANISOU 28 C7 UNK 0 270 390 260 20 120 -10
61
+ HETATM 29 C12 UNK 0 3.530 19.891 7.290 1.00 3.08 C
62
+ ANISOU 29 C12 UNK 0 320 510 390 90 210 0
63
+ HETATM 30 N3 UNK 0 3.049 19.986 5.987 1.00 4.46 N
64
+ ANISOU 30 N3 UNK 0 520 720 400 260 150 60
65
+ HETATM 31 C13 UNK 0 2.652 19.549 3.859 1.00 3.30 C
66
+ ANISOU 31 C13 UNK 0 420 630 300 210 250 100
67
+ HETATM 32 C1 UNK 0 6.855 15.711 4.758 1.00 3.34 C
68
+ ANISOU 32 C1 UNK 0 460 200 760 70 410 50
69
+ HETATM 33 C14 UNK 0 1.889 18.569 3.309 1.00 2.79 C
70
+ ANISOU 33 C14 UNK 0 280 500 340 -100 190 -100
71
+ HETATM 34 O1 UNK 0 4.790 16.216 8.927 1.00 6.63 O
72
+ ANISOU 34 O1 UNK 0 1480 550 280 -220 190 -90
73
+ HETATM 35 C5 UNK 0 5.922 15.794 6.869 1.00 3.19 C
74
+ ANISOU 35 C5 UNK 0 370 360 330 0 10 0
75
+ HETATM 36 C15 UNK 0 1.288 18.767 2.094 1.00 2.91 C
76
+ ANISOU 36 C15 UNK 0 240 550 300 50 110 110
77
+ HETATM 37 C8 UNK 0 4.434 18.979 9.315 1.00 3.02 C
78
+ ANISOU 37 C8 UNK 0 340 490 300 30 120 50
79
+ HETATM 38 C16 UNK 0 1.479 19.993 1.443 1.00 4.18 C
80
+ ANISOU 38 C16 UNK 0 340 970 280 -230 120 -250
81
+ HETATM 39 C9 UNK 0 4.091 20.152 9.955 1.00 3.81 C
82
+ ANISOU 39 C9 UNK 0 540 610 340 40 220 50
83
+ HETATM 40 C11 UNK 0 3.159 21.059 7.988 1.00 3.99 C
84
+ ANISOU 40 C11 UNK 0 460 520 620 -80 310 -30
85
+ HETATM 41 C6 UNK 0 5.049 16.587 7.810 1.00 3.83 C
86
+ ANISOU 41 C6 UNK 0 580 370 370 -40 80 -30
87
+ HETATM 42 C10 UNK 0 3.464 21.183 9.301 1.00 4.23 C
88
+ ANISOU 42 C10 UNK 0 690 550 590 30 480 100
89
+ HETATM 43 C17 UNK 0 2.248 20.974 2.038 1.00 4.90 C
90
+ ANISOU 43 C17 UNK 0 700 440 1020 -100 660 -210
91
+ HETATM 44 C2 UNK 0 7.615 14.568 5.160 1.00 4.66 C
92
+ ANISOU 44 C2 UNK 0 520 340 1120 60 540 140
93
+ HETATM 45 C18 UNK 0 2.820 20.747 3.259 1.00 4.05 C
94
+ ANISOU 45 C18 UNK 0 510 600 470 130 250 170
95
+ HETATM 46 C4 UNK 0 6.584 14.690 7.303 1.00 4.66 C
96
+ ANISOU 46 C4 UNK 0 580 340 630 -50 60 -50
97
+ HETATM 47 C3 UNK 0 7.466 14.097 6.430 1.00 4.97 C
98
+ ANISOU 47 C3 UNK 0 350 330 1070 -80 180 -60
99
+ HETATM 48 H1 UNK 0 2.640 16.034 6.729 1.00 4.03 H
100
+ HETATM 49 H14 UNK 0 7.789 17.763 6.859 1.00 3.32 H
101
+ HETATM 50 H15 UNK 0 8.795 18.100 8.910 1.00 3.47 H
102
+ HETATM 51 H8 UNK 0 4.734 18.289 0.821 1.00 3.63 H
103
+ HETATM 52 H16 UNK 0 8.474 20.147 10.006 1.00 5.05 H
104
+ HETATM 53 H9 UNK 0 5.272 20.247 -0.240 1.00 4.58 H
105
+ HETATM 54 H11 UNK 0 6.856 21.741 3.071 1.00 4.82 H
106
+ HETATM 55 H10 UNK 0 6.313 21.965 0.861 1.00 5.05 H
107
+ HETATM 56 H17 UNK 0 7.184 21.788 9.011 1.00 5.84 H
108
+ HETATM 57 H2 UNK 0 1.361 14.154 6.052 1.00 5.61 H
109
+ HETATM 58 H18 UNK 0 6.242 21.411 6.945 1.00 4.90 H
110
+ HETATM 59 H4 UNK 0 3.116 14.347 2.461 1.00 5.61 H
111
+ HETATM 60 H3 UNK 0 1.595 13.366 3.909 1.00 5.92 H
112
+ HETATM 61 H1 UNK 0 6.922 16.034 3.889 1.00 4.03 H
113
+ HETATM 62 H14 UNK 0 1.773 17.763 3.759 1.00 3.32 H
114
+ HETATM 63 H15 UNK 0 0.767 18.100 1.708 1.00 3.47 H
115
+ HETATM 64 H8 UNK 0 4.828 18.289 9.798 1.00 3.63 H
116
+ HETATM 65 H16 UNK 0 1.088 20.147 0.613 1.00 5.05 H
117
+ HETATM 66 H9 UNK 0 4.290 20.247 10.859 1.00 4.58 H
118
+ HETATM 67 H11 UNK 0 2.706 21.741 7.548 1.00 4.82 H
119
+ HETATM 68 H10 UNK 0 3.249 21.965 9.758 1.00 5.05 H
120
+ HETATM 69 H17 UNK 0 2.378 21.788 1.608 1.00 5.84 H
121
+ HETATM 70 H2 UNK 0 8.201 14.154 4.567 1.00 5.61 H
122
+ HETATM 71 H18 UNK 0 3.320 21.411 3.673 1.00 4.90 H
123
+ HETATM 72 H4 UNK 0 6.446 14.347 8.157 1.00 5.61 H
124
+ HETATM 73 H3 UNK 0 7.967 13.366 6.709 1.00 5.92 H
125
+ CONECT 1 2 25 4 27
126
+ CONECT 1 26 3
127
+ CONECT 2 1 5 18
128
+ CONECT 3 1 9 12
129
+ CONECT 3 12
130
+ CONECT 4 1 7 8
131
+ CONECT 4 7
132
+ CONECT 5 2 14 6
133
+ CONECT 5 14
134
+ CONECT 6 5 7 17
135
+ CONECT 6 17
136
+ CONECT 7 4 6
137
+ CONECT 7 4
138
+ CONECT 8 4 22 10
139
+ CONECT 8 22
140
+ CONECT 9 3 48 21
141
+ CONECT 9 21
142
+ CONECT 48 9
143
+ CONECT 10 8 49 13
144
+ CONECT 10 13
145
+ CONECT 49 10
146
+ CONECT 11 18
147
+ CONECT 11 18
148
+ CONECT 12 3 23 18
149
+ CONECT 12 3
150
+ CONECT 13 10 50 15
151
+ CONECT 13 10
152
+ CONECT 50 13
153
+ CONECT 14 5 51 16
154
+ CONECT 14 5
155
+ CONECT 51 14
156
+ CONECT 15 13 52 20
157
+ CONECT 15 20
158
+ CONECT 52 15
159
+ CONECT 16 14 53 19
160
+ CONECT 16 19
161
+ CONECT 53 16
162
+ CONECT 17 6 54 19
163
+ CONECT 17 6
164
+ CONECT 54 17
165
+ CONECT 18 2 11 12
166
+ CONECT 18 11
167
+ CONECT 19 16 17 55
168
+ CONECT 19 16
169
+ CONECT 55 19
170
+ CONECT 20 15 56 22
171
+ CONECT 20 15
172
+ CONECT 56 20
173
+ CONECT 21 9 57 24
174
+ CONECT 21 9
175
+ CONECT 57 21
176
+ CONECT 22 8 20 58
177
+ CONECT 22 8
178
+ CONECT 58 22
179
+ CONECT 23 12 59 24
180
+ CONECT 23 24
181
+ CONECT 59 23
182
+ CONECT 24 21 23 60
183
+ CONECT 24 23
184
+ CONECT 60 24
185
+ CONECT 25 1 28 41
186
+ CONECT 26 1 32 35
187
+ CONECT 26 35
188
+ CONECT 27 1 30 31
189
+ CONECT 27 30
190
+ CONECT 28 25 37 29
191
+ CONECT 28 37
192
+ CONECT 29 28 30 40
193
+ CONECT 29 40
194
+ CONECT 30 27 29
195
+ CONECT 30 27
196
+ CONECT 31 27 45 33
197
+ CONECT 31 45
198
+ CONECT 32 26 61 44
199
+ CONECT 32 44
200
+ CONECT 61 32
201
+ CONECT 33 31 62 36
202
+ CONECT 33 36
203
+ CONECT 62 33
204
+ CONECT 34 41
205
+ CONECT 34 41
206
+ CONECT 35 26 46 41
207
+ CONECT 35 26
208
+ CONECT 36 33 63 38
209
+ CONECT 36 33
210
+ CONECT 63 36
211
+ CONECT 37 28 64 39
212
+ CONECT 37 28
213
+ CONECT 64 37
214
+ CONECT 38 36 65 43
215
+ CONECT 38 43
216
+ CONECT 65 38
217
+ CONECT 39 37 66 42
218
+ CONECT 39 42
219
+ CONECT 66 39
220
+ CONECT 40 29 67 42
221
+ CONECT 40 29
222
+ CONECT 67 40
223
+ CONECT 41 25 34 35
224
+ CONECT 41 34
225
+ CONECT 42 39 40 68
226
+ CONECT 42 39
227
+ CONECT 68 42
228
+ CONECT 43 38 69 45
229
+ CONECT 43 38
230
+ CONECT 69 43
231
+ CONECT 44 32 70 47
232
+ CONECT 44 32
233
+ CONECT 70 44
234
+ CONECT 45 31 43 71
235
+ CONECT 45 31
236
+ CONECT 71 45
237
+ CONECT 46 35 72 47
238
+ CONECT 46 47
239
+ CONECT 72 46
240
+ CONECT 47 44 46 73
241
+ CONECT 47 46
242
+ CONECT 73 47
243
+ END
examples/organic_molecular_crystal.cif ADDED
@@ -0,0 +1,257 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ data_image0
2
+ _chemical_formula_structural SO2NC2H2C3HCHCHCH2C2HBrC2HCOHSO2NC2H2C3HCHCHCH2C2HBrC2HCOHSO2NC2H2C3HCHCHCH2C2HBrC2HCOHSO2NC2H2C3HCHCHCH2C2HBrC2HCOHSO2NC2H2C3HCHCHCH2C2HBrC2HCOHSO2NC2H2C3HCHCHCH2C2HBrC2HCOHSO2NC2H2C3HCHCHCH2C2HBrC2HCOHSO2NC2H2C3HCHCHCH2C2HBrC2HCOH
3
+ _chemical_formula_sum "S8 O24 N8 C104 H80 Br8"
4
+ _cell_length_a 13.423146423109205
5
+ _cell_length_b 13.423146423109205
6
+ _cell_length_c 13.6638898495986
7
+ _cell_angle_alpha 90.0
8
+ _cell_angle_beta 90.0
9
+ _cell_angle_gamma 90.0
10
+
11
+ _space_group_name_H-M_alt "P 1"
12
+ _space_group_IT_number 1
13
+
14
+ loop_
15
+ _space_group_symop_operation_xyz
16
+ 'x, y, z'
17
+
18
+ loop_
19
+ _atom_site_type_symbol
20
+ _atom_site_label
21
+ _atom_site_symmetry_multiplicity
22
+ _atom_site_fract_x
23
+ _atom_site_fract_y
24
+ _atom_site_fract_z
25
+ _atom_site_occupancy
26
+ S S1 1.0 0.9275461529470431 0.8155896023122877 0.2941211283258369 1.0000
27
+ O O1 1.0 0.9372220992434028 0.9265573250362035 0.2881057270882305 1.0000
28
+ O O2 1.0 0.7938257294941448 0.613458320160412 0.3325817036686815 1.0000
29
+ N N1 1.0 0.7094294676765264 0.6315815144358788 0.3643853618085062 1.0000
30
+ C C1 1.0 0.04722194744393815 0.7664571194860146 0.3324408693324965 1.0000
31
+ C C2 1.0 0.8637010100550786 0.7901090817201828 0.41480828284433924 1.0000
32
+ H H1 1.0 0.8828132168696473 0.713926921711797 0.4356050026060773 1.0000
33
+ H H2 1.0 0.8990216567280933 0.8438518355897033 0.4644104859507723 1.0000
34
+ C C3 1.0 0.7547742291758802 0.8091132478236331 0.40549736222237937 1.0000
35
+ C C4 1.0 0.6823975071369104 0.7367685032901754 0.38218155259699743 1.0000
36
+ C C5 1.0 0.5812093405094393 0.7596978068934275 0.37558287238095706 1.0000
37
+ H H3 1.0 0.5289766916653209 0.7000637700023311 0.35916711510461696 1.0000
38
+ C C6 1.0 0.5496372088965512 0.8573060172331419 0.3891811661042275 1.0000
39
+ H H4 1.0 0.4709107389129744 0.8756720552830178 0.3825211764085389 1.0000
40
+ C C7 1.0 0.6195186980453679 0.9309846509461215 0.4114651541949892 1.0000
41
+ H H5 1.0 0.5957249701097564 0.007785244103282407 0.4223759572337825 1.0000
42
+ C C8 1.0 0.7199004905916212 0.9066603112226315 0.4202079011847202 1.0000
43
+ H H6 1.0 0.7741686341527089 0.9642133552690426 0.4380555929366669 1.0000
44
+ H H7 1.0 0.10728745316766286 0.9129321031479888 0.35471103015530164 1.0000
45
+ C C9 1.0 0.15729100969569187 0.6271254223041515 0.3583665559774094 1.0000
46
+ C C10 1.0 0.0639946379748706 0.66374801042789 0.33171135136525254 1.0000
47
+ H H8 1.0 0.004899415930414541 0.6122306354425116 0.31063325530424696 1.0000
48
+ Br Br1 1.0 0.3599752297084762 0.6443068017173645 0.42009103215509896 1.0000
49
+ C C11 1.0 0.12256687007673928 0.8331621497102379 0.3571832339149155 1.0000
50
+ C C12 1.0 0.21619123110409633 0.7968984767016225 0.38363901688186314 1.0000
51
+ H H9 1.0 0.276002226249074 0.8478692462897375 0.40328266801719487 1.0000
52
+ C C13 1.0 0.23232330779138866 0.694247403522436 0.3842252287422828 1.0000
53
+ O O3 1.0 0.645815613938436 0.5678074831662694 0.38140471043720314 1.0000
54
+ H H10 1.0 0.17175608640296902 0.5473527460604474 0.3585904002479444 1.0000
55
+ S S2 1.0 0.8155896023122877 0.07245384705295688 0.7058790442100105 1.0000
56
+ O O4 1.0 0.9265573250362035 0.06277790075659728 0.7118944454476168 1.0000
57
+ O O5 1.0 0.613458320160412 0.20617427050585538 0.6674184688671658 1.0000
58
+ N N2 1.0 0.6315815144358788 0.29057053232347374 0.6356148107273412 1.0000
59
+ C C14 1.0 0.7664571194860146 0.9527780525560618 0.6675593032033508 1.0000
60
+ C C15 1.0 0.7901090817201828 0.1362989899449214 0.5851918896915079 1.0000
61
+ H H11 1.0 0.713926921711797 0.11718678313035269 0.56439516992977 1.0000
62
+ H H12 1.0 0.8438518355897033 0.1009783432719068 0.5355896865850751 1.0000
63
+ C C16 1.0 0.8091132478236331 0.2452257708241198 0.5945028103134679 1.0000
64
+ C C17 1.0 0.7367685032901754 0.31760249286308967 0.6178186199388498 1.0000
65
+ C C18 1.0 0.7596978068934275 0.4187906594905607 0.6244173001548903 1.0000
66
+ H H13 1.0 0.7000637700023311 0.47102330833467915 0.6408330574312303 1.0000
67
+ C C19 1.0 0.8573060172331419 0.45036279110344885 0.6108190064316199 1.0000
68
+ H H14 1.0 0.8756720552830178 0.5290892610870257 0.6174789961273085 1.0000
69
+ C C20 1.0 0.9309846509461215 0.38048130195463215 0.5885350183408582 1.0000
70
+ H H15 1.0 0.007785244103282407 0.40427502989024366 0.5776242153020649 1.0000
71
+ C C21 1.0 0.9066603112226315 0.2800995094083789 0.5797922713511272 1.0000
72
+ H H16 1.0 0.9642133552690426 0.22583136584729124 0.5619445795991804 1.0000
73
+ H H17 1.0 0.9129321031479888 0.8927125468323371 0.6452891423805457 1.0000
74
+ C C22 1.0 0.6271254223041515 0.8427089903043081 0.6416336165584379 1.0000
75
+ C C23 1.0 0.66374801042789 0.9360053620251294 0.6682888211705948 1.0000
76
+ H H18 1.0 0.6122306354425116 0.9951005840695855 0.6893669172316004 1.0000
77
+ Br Br2 1.0 0.6443068017173645 0.6400247702915238 0.5799091403807484 1.0000
78
+ C C24 1.0 0.8331621497102379 0.877433129923261 0.6428169386209319 1.0000
79
+ C C25 1.0 0.7968984767016225 0.7838087688959037 0.6163611556539842 1.0000
80
+ H H19 1.0 0.8478692462897375 0.723997773750926 0.5967175045186525 1.0000
81
+ C C26 1.0 0.694247403522436 0.7676766922086116 0.6157749437935646 1.0000
82
+ O O6 1.0 0.5678074831662694 0.35418438606156416 0.6185954620986442 1.0000
83
+ H H20 1.0 0.5473527460604474 0.828243913597031 0.6414097722879029 1.0000
84
+ S S3 1.0 0.07245384705295688 0.18441039768771228 0.2941211283258369 1.0000
85
+ O O7 1.0 0.06277790075659728 0.07344267496379653 0.2881057270882305 1.0000
86
+ O O8 1.0 0.20617427050585538 0.386541679839588 0.3325817036686815 1.0000
87
+ N N3 1.0 0.29057053232347374 0.36841848556412116 0.3643853618085062 1.0000
88
+ C C27 1.0 0.9527780525560618 0.23354288051398545 0.3324408693324965 1.0000
89
+ C C28 1.0 0.1362989899449214 0.2098909182798172 0.41480828284433924 1.0000
90
+ H H21 1.0 0.11718678313035269 0.28607307828820305 0.4356050026060773 1.0000
91
+ H H22 1.0 0.1009783432719068 0.15614816441029666 0.4644104859507723 1.0000
92
+ C C29 1.0 0.2452257708241198 0.1908867521763669 0.40549736222237937 1.0000
93
+ C C30 1.0 0.31760249286308967 0.2632314967098247 0.38218155259699743 1.0000
94
+ C C31 1.0 0.4187906594905607 0.24030219310657253 0.37558287238095706 1.0000
95
+ H H23 1.0 0.47102330833467915 0.29993622999766906 0.35916711510461696 1.0000
96
+ C C32 1.0 0.45036279110344885 0.14269398276685819 0.3891811661042275 1.0000
97
+ H H24 1.0 0.5290892610870257 0.12432794471698216 0.3825211764085389 1.0000
98
+ C C33 1.0 0.38048130195463215 0.06901534905387852 0.4114651541949892 1.0000
99
+ H H25 1.0 0.40427502989024366 0.9922147558967178 0.4223759572337825 1.0000
100
+ C C34 1.0 0.2800995094083789 0.09333968877736865 0.4202079011847202 1.0000
101
+ H H26 1.0 0.22583136584729124 0.0357866447309575 0.4380555929366669 1.0000
102
+ H H27 1.0 0.8927125468323371 0.08706789685201123 0.35471103015530164 1.0000
103
+ C C35 1.0 0.8427089903043081 0.3728745776958487 0.3583665559774094 1.0000
104
+ C C36 1.0 0.9360053620251294 0.33625198957211 0.33171135136525254 1.0000
105
+ H H28 1.0 0.9951005840695855 0.3877693645574885 0.31063325530424696 1.0000
106
+ Br Br3 1.0 0.6400247702915238 0.3556931982826356 0.42009103215509896 1.0000
107
+ C C37 1.0 0.877433129923261 0.16683785028976206 0.3571832339149155 1.0000
108
+ C C38 1.0 0.7838087688959037 0.2031015232983776 0.38363901688186314 1.0000
109
+ H H29 1.0 0.723997773750926 0.15213075371026252 0.40328266801719487 1.0000
110
+ C C39 1.0 0.7676766922086116 0.3057525964775641 0.3842252287422828 1.0000
111
+ O O9 1.0 0.35418438606156416 0.4321925168337306 0.38140471043720314 1.0000
112
+ H H30 1.0 0.828243913597031 0.4526472539395527 0.3585904002479444 1.0000
113
+ S S4 1.0 0.18441039768771228 0.9275461529470431 0.7058790442100105 1.0000
114
+ O O10 1.0 0.07344267496379653 0.9372220992434028 0.7118944454476168 1.0000
115
+ O O11 1.0 0.386541679839588 0.7938257294941448 0.6674184688671658 1.0000
116
+ N N4 1.0 0.36841848556412116 0.7094294676765264 0.6356148107273412 1.0000
117
+ C C40 1.0 0.23354288051398545 0.04722194744393815 0.6675593032033508 1.0000
118
+ C C41 1.0 0.2098909182798172 0.8637010100550786 0.5851918896915079 1.0000
119
+ H H31 1.0 0.28607307828820305 0.8828132168696473 0.56439516992977 1.0000
120
+ H H32 1.0 0.15614816441029666 0.8990216567280933 0.5355896865850751 1.0000
121
+ C C42 1.0 0.1908867521763669 0.7547742291758802 0.5945028103134679 1.0000
122
+ C C43 1.0 0.2632314967098247 0.6823975071369104 0.6178186199388498 1.0000
123
+ C C44 1.0 0.24030219310657253 0.5812093405094393 0.6244173001548903 1.0000
124
+ H H33 1.0 0.29993622999766906 0.5289766916653209 0.6408330574312303 1.0000
125
+ C C45 1.0 0.14269398276685819 0.5496372088965512 0.6108190064316199 1.0000
126
+ H H34 1.0 0.12432794471698216 0.4709107389129744 0.6174789961273085 1.0000
127
+ C C46 1.0 0.06901534905387852 0.6195186980453679 0.5885350183408582 1.0000
128
+ H H35 1.0 0.9922147558967178 0.5957249701097564 0.5776242153020649 1.0000
129
+ C C47 1.0 0.09333968877736865 0.7199004905916212 0.5797922713511272 1.0000
130
+ H H36 1.0 0.0357866447309575 0.7741686341527089 0.5619445795991804 1.0000
131
+ H H37 1.0 0.08706789685201123 0.10728745316766286 0.6452891423805457 1.0000
132
+ C C48 1.0 0.3728745776958487 0.15729100969569187 0.6416336165584379 1.0000
133
+ C C49 1.0 0.33625198957211 0.0639946379748706 0.6682888211705948 1.0000
134
+ H H38 1.0 0.3877693645574885 0.004899415930414541 0.6893669172316004 1.0000
135
+ Br Br4 1.0 0.3556931982826356 0.3599752297084762 0.5799091403807484 1.0000
136
+ C C50 1.0 0.16683785028976206 0.12256687007673928 0.6428169386209319 1.0000
137
+ C C51 1.0 0.2031015232983776 0.21619123110409633 0.6163611556539842 1.0000
138
+ H H39 1.0 0.15213075371026252 0.276002226249074 0.5967175045186525 1.0000
139
+ C C52 1.0 0.3057525964775641 0.23232330779138866 0.6157749437935646 1.0000
140
+ O O12 1.0 0.4321925168337306 0.645815613938436 0.6185954620986442 1.0000
141
+ H H40 1.0 0.4526472539395527 0.17175608640296902 0.6414097722879029 1.0000
142
+ S S5 1.0 0.427546152947043 0.6844103976877124 0.2058790442100104 1.0000
143
+ O O13 1.0 0.43722209924340266 0.5734426749637965 0.21189444544761685 1.0000
144
+ O O14 1.0 0.29382572949414465 0.886541679839588 0.1674184688671658 1.0000
145
+ N N5 1.0 0.2094294676765263 0.8684184855641212 0.1356148107273411 1.0000
146
+ C C53 1.0 0.5472219474439382 0.7335428805139854 0.16755930320335088 1.0000
147
+ C C54 1.0 0.3637010100550786 0.7098909182798173 0.08519188969150808 1.0000
148
+ H H41 1.0 0.38281321686964725 0.786073078288203 0.06439516992977005 1.0000
149
+ H H42 1.0 0.39902165672809314 0.6561481644102967 0.03558968658507505 1.0000
150
+ C C55 1.0 0.25477422917588033 0.6908867521763669 0.09450281031346801 1.0000
151
+ C C56 1.0 0.1823975071369104 0.7632314967098247 0.11781861993884989 1.0000
152
+ C C57 1.0 0.08120934050943918 0.7403021931065726 0.12441730015489026 1.0000
153
+ H H43 1.0 0.02897669166532091 0.799936229997669 0.14083305743123042 1.0000
154
+ C C58 1.0 0.04963720889655133 0.6426939827668582 0.1108190064316199 1.0000
155
+ H H44 1.0 0.9709107389129743 0.6243279447169823 0.1174789961273085 1.0000
156
+ C C59 1.0 0.11951869804536797 0.5690153490538785 0.0885350183408582 1.0000
157
+ H H45 1.0 0.09572497010975622 0.4922147558967178 0.07762421530206486 1.0000
158
+ C C60 1.0 0.2199004905916211 0.5933396887773688 0.07979227135112721 1.0000
159
+ H H46 1.0 0.27416863415270876 0.5357866447309575 0.061944579599180476 1.0000
160
+ H H47 1.0 0.6072874531676629 0.5870678968520112 0.1452891423805457 1.0000
161
+ C C61 1.0 0.6572910096956919 0.8728745776958486 0.14163361655843795 1.0000
162
+ C C62 1.0 0.5639946379748706 0.83625198957211 0.16828882117059485 1.0000
163
+ H H48 1.0 0.5048994159304145 0.8877693645574886 0.18936691723160043 1.0000
164
+ Br Br5 1.0 0.8599752297084763 0.8556931982826356 0.07990914038074841 1.0000
165
+ C C63 1.0 0.6225668700767392 0.6668378502897622 0.14281693862093187 1.0000
166
+ C C64 1.0 0.7161912311040964 0.7031015232983776 0.11636115565398424 1.0000
167
+ H H49 1.0 0.776002226249074 0.6521307537102625 0.09671750451865246 1.0000
168
+ C C65 1.0 0.7323233077913884 0.8057525964775641 0.11577494379356457 1.0000
169
+ O O15 1.0 0.1458156139384359 0.9321925168337307 0.11859546209864419 1.0000
170
+ H H50 1.0 0.671756086402969 0.9526472539395526 0.1414097722879029 1.0000
171
+ S S6 1.0 0.3155896023122877 0.427546152947043 0.7941211283258368 1.0000
172
+ O O16 1.0 0.4265573250362036 0.43722209924340266 0.7881057270882305 1.0000
173
+ O O17 1.0 0.11345832016041202 0.29382572949414465 0.8325817036686816 1.0000
174
+ N N6 1.0 0.13158151443587895 0.2094294676765263 0.8643853618085062 1.0000
175
+ C C66 1.0 0.2664571194860146 0.5472219474439382 0.8324408693324965 1.0000
176
+ C C67 1.0 0.29010908172018285 0.3637010100550786 0.9148082828443393 1.0000
177
+ H H51 1.0 0.21392692171179695 0.38281321686964725 0.9356050026060773 1.0000
178
+ H H52 1.0 0.34385183558970334 0.39902165672809314 0.9644104859507722 1.0000
179
+ C C68 1.0 0.30911324782363314 0.25477422917588033 0.9054973622223793 1.0000
180
+ C C69 1.0 0.2367685032901754 0.1823975071369104 0.8821815525969975 1.0000
181
+ C C70 1.0 0.25969780689342753 0.08120934050943918 0.875582872380957 1.0000
182
+ H H53 1.0 0.2000637700023309 0.02897669166532091 0.859167115104617 1.0000
183
+ C C71 1.0 0.3573060172331419 0.04963720889655133 0.8891811661042275 1.0000
184
+ H H54 1.0 0.37567205528301795 0.9709107389129743 0.8825211764085389 1.0000
185
+ C C72 1.0 0.4309846509461215 0.11951869804536797 0.9114651541949892 1.0000
186
+ H H55 1.0 0.5077852441032822 0.09572497010975622 0.9223759572337825 1.0000
187
+ C C73 1.0 0.4066603112226313 0.2199004905916211 0.9202079011847202 1.0000
188
+ H H56 1.0 0.4642133552690426 0.27416863415270876 0.9380555929366668 1.0000
189
+ H H57 1.0 0.41293210314798895 0.6072874531676629 0.8547110301553016 1.0000
190
+ C C74 1.0 0.12712542230415136 0.6572910096956919 0.8583665559774093 1.0000
191
+ C C75 1.0 0.1637480104278901 0.5639946379748706 0.8317113513652525 1.0000
192
+ H H58 1.0 0.11223063544251156 0.5048994159304145 0.8106332553042469 1.0000
193
+ Br Br6 1.0 0.14430680171736432 0.8599752297084763 0.9200910321550989 1.0000
194
+ C C76 1.0 0.33316214971023794 0.6225668700767392 0.8571832339149155 1.0000
195
+ C C77 1.0 0.2968984767016223 0.7161912311040964 0.8836390168818631 1.0000
196
+ H H59 1.0 0.3478692462897375 0.776002226249074 0.9032826680171948 1.0000
197
+ C C78 1.0 0.194247403522436 0.7323233077913884 0.8842252287422828 1.0000
198
+ O O18 1.0 0.06780748316626939 0.1458156139384359 0.8814047104372031 1.0000
199
+ H H60 1.0 0.04735274606044726 0.671756086402969 0.8585904002479444 1.0000
200
+ S S7 1.0 0.5724538470529569 0.3155896023122877 0.2058790442100104 1.0000
201
+ O O19 1.0 0.5627779007565973 0.4265573250362036 0.21189444544761685 1.0000
202
+ O O20 1.0 0.7061742705058554 0.11345832016041202 0.1674184688671658 1.0000
203
+ N N7 1.0 0.7905705323234737 0.13158151443587895 0.1356148107273411 1.0000
204
+ C C79 1.0 0.45277805255606185 0.2664571194860146 0.16755930320335088 1.0000
205
+ C C80 1.0 0.6362989899449214 0.29010908172018285 0.08519188969150808 1.0000
206
+ H H61 1.0 0.6171867831303527 0.21392692171179695 0.06439516992977005 1.0000
207
+ H H62 1.0 0.6009783432719068 0.34385183558970334 0.03558968658507505 1.0000
208
+ C C81 1.0 0.7452257708241198 0.30911324782363314 0.09450281031346801 1.0000
209
+ C C82 1.0 0.8176024928630897 0.2367685032901754 0.11781861993884989 1.0000
210
+ C C83 1.0 0.9187906594905607 0.25969780689342753 0.12441730015489026 1.0000
211
+ H H63 1.0 0.9710233083346791 0.2000637700023309 0.14083305743123042 1.0000
212
+ C C84 1.0 0.9503627911034489 0.3573060172331419 0.1108190064316199 1.0000
213
+ H H64 1.0 0.029089261087025697 0.37567205528301795 0.1174789961273085 1.0000
214
+ C C85 1.0 0.8804813019546321 0.4309846509461215 0.0885350183408582 1.0000
215
+ H H65 1.0 0.9042750298902437 0.5077852441032822 0.07762421530206486 1.0000
216
+ C C86 1.0 0.7800995094083789 0.4066603112226313 0.07979227135112721 1.0000
217
+ H H66 1.0 0.7258313658472912 0.4642133552690426 0.061944579599180476 1.0000
218
+ H H67 1.0 0.39271254683233714 0.41293210314798895 0.1452891423805457 1.0000
219
+ C C87 1.0 0.3427089903043081 0.12712542230415136 0.14163361655843795 1.0000
220
+ C C88 1.0 0.43600536202512946 0.1637480104278901 0.16828882117059485 1.0000
221
+ H H68 1.0 0.49510058406958546 0.11223063544251156 0.18936691723160043 1.0000
222
+ Br Br7 1.0 0.14002477029152383 0.14430680171736432 0.07990914038074841 1.0000
223
+ C C89 1.0 0.377433129923261 0.33316214971023794 0.14281693862093187 1.0000
224
+ C C90 1.0 0.2838087688959037 0.2968984767016223 0.11636115565398424 1.0000
225
+ H H69 1.0 0.22399777375092603 0.3478692462897375 0.09671750451865246 1.0000
226
+ C C91 1.0 0.26767669220861157 0.194247403522436 0.11577494379356457 1.0000
227
+ O O21 1.0 0.8541843860615641 0.06780748316626939 0.11859546209864419 1.0000
228
+ H H70 1.0 0.32824391359703103 0.04735274606044726 0.1414097722879029 1.0000
229
+ S S8 1.0 0.6844103976877124 0.5724538470529569 0.7941211283258368 1.0000
230
+ O O22 1.0 0.5734426749637965 0.5627779007565973 0.7881057270882305 1.0000
231
+ O O23 1.0 0.886541679839588 0.7061742705058554 0.8325817036686816 1.0000
232
+ N N8 1.0 0.8684184855641212 0.7905705323234737 0.8643853618085062 1.0000
233
+ C C92 1.0 0.7335428805139854 0.45277805255606185 0.8324408693324965 1.0000
234
+ C C93 1.0 0.7098909182798173 0.6362989899449214 0.9148082828443393 1.0000
235
+ H H71 1.0 0.786073078288203 0.6171867831303527 0.9356050026060773 1.0000
236
+ H H72 1.0 0.6561481644102967 0.6009783432719068 0.9644104859507722 1.0000
237
+ C C94 1.0 0.6908867521763669 0.7452257708241198 0.9054973622223793 1.0000
238
+ C C95 1.0 0.7632314967098247 0.8176024928630897 0.8821815525969975 1.0000
239
+ C C96 1.0 0.7403021931065726 0.9187906594905607 0.875582872380957 1.0000
240
+ H H73 1.0 0.799936229997669 0.9710233083346791 0.859167115104617 1.0000
241
+ C C97 1.0 0.6426939827668582 0.9503627911034489 0.8891811661042275 1.0000
242
+ H H74 1.0 0.6243279447169823 0.029089261087025697 0.8825211764085389 1.0000
243
+ C C98 1.0 0.5690153490538785 0.8804813019546321 0.9114651541949892 1.0000
244
+ H H75 1.0 0.4922147558967178 0.9042750298902437 0.9223759572337825 1.0000
245
+ C C99 1.0 0.5933396887773688 0.7800995094083789 0.9202079011847202 1.0000
246
+ H H76 1.0 0.5357866447309575 0.7258313658472912 0.9380555929366668 1.0000
247
+ H H77 1.0 0.5870678968520112 0.39271254683233714 0.8547110301553016 1.0000
248
+ C C100 1.0 0.8728745776958486 0.3427089903043081 0.8583665559774093 1.0000
249
+ C C101 1.0 0.83625198957211 0.43600536202512946 0.8317113513652525 1.0000
250
+ H H78 1.0 0.8877693645574886 0.49510058406958546 0.8106332553042469 1.0000
251
+ Br Br8 1.0 0.8556931982826356 0.14002477029152383 0.9200910321550989 1.0000
252
+ C C102 1.0 0.6668378502897622 0.377433129923261 0.8571832339149155 1.0000
253
+ C C103 1.0 0.7031015232983776 0.2838087688959037 0.8836390168818631 1.0000
254
+ H H79 1.0 0.6521307537102625 0.22399777375092603 0.9032826680171948 1.0000
255
+ C C104 1.0 0.8057525964775641 0.26767669220861157 0.8842252287422828 1.0000
256
+ O O24 1.0 0.9321925168337307 0.8541843860615641 0.8814047104372031 1.0000
257
+ H H80 1.0 0.9526472539395526 0.32824391359703103 0.8585904002479444 1.0000
examples/protein.pdb ADDED
@@ -0,0 +1,755 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ CRYST1 27.285 19.353 21.501 90.00 90.00 90.00 P 1
2
+ MODEL 1
3
+ ATOM 1 N ILE 1 4.769 7.706 15.234 1.00 1.36 N
4
+ ATOM 2 CA ILE 1 5.318 7.181 13.957 1.00 0.28 C
5
+ ATOM 3 C ILE 1 6.145 8.241 13.237 1.00 0.30 C
6
+ ATOM 4 O ILE 1 5.612 9.248 12.771 1.00 0.55 O
7
+ ATOM 5 CB ILE 1 4.190 6.704 13.019 1.00 1.48 C
8
+ ATOM 6 CG1 ILE 1 3.351 5.624 13.706 1.00 1.64 C
9
+ ATOM 7 CG2 ILE 1 4.770 6.184 11.711 1.00 2.51 C
10
+ ATOM 8 CD1 ILE 1 2.117 5.224 12.922 1.00 2.53 C
11
+ ATOM 9 H1 ILE 1 4.128 8.502 15.046 1.00 1.90 H
12
+ ATOM 10 H2 ILE 1 5.541 8.033 15.848 1.00 1.95 H
13
+ ATOM 11 H3 ILE 1 4.242 6.959 15.730 1.00 1.91 H
14
+ ATOM 12 HA ILE 1 5.954 6.336 14.182 1.00 1.02 H
15
+ ATOM 13 HB ILE 1 3.559 7.550 12.792 1.00 2.12 H
16
+ ATOM 14 HG12 ILE 1 3.955 4.739 13.841 1.00 1.76 H
17
+ ATOM 15 HG13 ILE 1 3.030 5.986 14.671 1.00 1.90 H
18
+ ATOM 16 HG21 ILE 1 3.968 5.865 11.062 1.00 3.01 H
19
+ ATOM 17 HG22 ILE 1 5.423 5.348 11.913 1.00 2.95 H
20
+ ATOM 18 HG23 ILE 1 5.332 6.970 11.228 1.00 2.97 H
21
+ ATOM 19 HD11 ILE 1 2.412 4.823 11.966 1.00 2.80 H
22
+ ATOM 20 HD12 ILE 1 1.491 6.092 12.771 1.00 3.03 H
23
+ ATOM 21 HD13 ILE 1 1.567 4.476 13.474 1.00 3.02 H
24
+ ATOM 22 N LYS 2 7.451 8.007 13.152 1.00 0.08 N
25
+ ATOM 23 CA LYS 2 8.350 8.942 12.484 1.00 0.07 C
26
+ ATOM 24 C LYS 2 8.153 8.903 10.970 1.00 0.08 C
27
+ ATOM 25 O LYS 2 8.090 7.830 10.369 1.00 0.09 O
28
+ ATOM 26 CB LYS 2 9.812 8.619 12.813 1.00 0.08 C
29
+ ATOM 27 CG LYS 2 10.200 8.880 14.260 1.00 0.11 C
30
+ ATOM 28 CD LYS 2 11.632 8.440 14.552 1.00 0.12 C
31
+ ATOM 29 CE LYS 2 11.713 6.946 14.820 1.00 0.62 C
32
+ ATOM 30 NZ LYS 2 11.445 6.137 13.600 1.00 1.15 N
33
+ ATOM 31 H LYS 2 7.818 7.190 13.548 1.00 0.19 H
34
+ ATOM 32 HA LYS 2 8.121 9.935 12.839 1.00 0.09 H
35
+ ATOM 33 HB2 LYS 2 9.996 7.577 12.597 1.00 0.10 H
36
+ ATOM 34 HB3 LYS 2 10.448 9.221 12.180 1.00 0.10 H
37
+ ATOM 35 HG2 LYS 2 10.113 9.939 14.459 1.00 0.13 H
38
+ ATOM 36 HG3 LYS 2 9.528 8.334 14.905 1.00 0.12 H
39
+ ATOM 37 HD2 LYS 2 12.262 8.678 13.700 1.00 0.56 H
40
+ ATOM 38 HD3 LYS 2 11.990 8.972 15.421 1.00 0.49 H
41
+ ATOM 39 HE2 LYS 2 12.703 6.714 15.183 1.00 1.15 H
42
+ ATOM 40 HE3 LYS 2 10.987 6.690 15.578 1.00 1.06 H
43
+ ATOM 41 HZ1 LYS 2 12.140 6.362 12.860 1.00 1.67 H
44
+ ATOM 42 HZ2 LYS 2 10.492 6.339 13.240 1.00 1.71 H
45
+ ATOM 43 HZ3 LYS 2 11.510 5.123 13.823 1.00 1.58 H
46
+ ATOM 44 N LYS 3 8.050 10.080 10.364 1.00 0.08 N
47
+ ATOM 45 CA LYS 3 7.886 10.189 8.922 1.00 0.09 C
48
+ ATOM 46 C LYS 3 9.237 10.505 8.308 1.00 0.06 C
49
+ ATOM 47 O LYS 3 9.838 9.674 7.627 1.00 0.07 O
50
+ ATOM 48 CB LYS 3 6.873 11.280 8.573 1.00 0.12 C
51
+ ATOM 49 CG LYS 3 5.495 11.049 9.176 1.00 0.17 C
52
+ ATOM 50 CD LYS 3 4.537 12.181 8.840 1.00 0.70 C
53
+ ATOM 51 CE LYS 3 4.204 12.213 7.356 1.00 1.36 C
54
+ ATOM 52 NZ LYS 3 3.564 10.947 6.902 1.00 2.00 N
55
+ ATOM 53 H LYS 3 8.100 10.899 10.897 1.00 0.09 H
56
+ ATOM 54 HA LYS 3 7.537 9.237 8.547 1.00 0.11 H
57
+ ATOM 55 HB2 LYS 3 7.244 12.228 8.933 1.00 0.12 H
58
+ ATOM 56 HB3 LYS 3 6.768 11.329 7.499 1.00 0.13 H
59
+ ATOM 57 HG2 LYS 3 5.093 10.124 8.787 1.00 0.62 H
60
+ ATOM 58 HG3 LYS 3 5.592 10.978 10.250 1.00 0.55 H
61
+ ATOM 59 HD2 LYS 3 3.623 12.043 9.398 1.00 1.30 H
62
+ ATOM 60 HD3 LYS 3 4.993 13.120 9.118 1.00 1.35 H
63
+ ATOM 61 HE2 LYS 3 3.530 13.035 7.168 1.00 1.96 H
64
+ ATOM 62 HE3 LYS 3 5.118 12.363 6.799 1.00 1.95 H
65
+ ATOM 63 HZ1 LYS 3 2.678 10.785 7.424 1.00 2.29 H
66
+ ATOM 64 HZ2 LYS 3 4.203 10.144 7.070 1.00 2.50 H
67
+ ATOM 65 HZ3 LYS 3 3.350 11.000 5.886 1.00 2.53 H
68
+ ATOM 66 N ILE 4 9.708 11.720 8.555 1.00 0.05 N
69
+ ATOM 67 CA ILE 4 11.010 12.144 8.083 1.00 0.05 C
70
+ ATOM 68 C ILE 4 12.047 11.833 9.147 1.00 0.05 C
71
+ ATOM 69 O ILE 4 13.197 11.517 8.848 1.00 0.09 O
72
+ ATOM 70 CB ILE 4 11.030 13.652 7.757 1.00 0.09 C
73
+ ATOM 71 CG1 ILE 4 10.008 13.981 6.663 1.00 0.13 C
74
+ ATOM 72 CG2 ILE 4 12.427 14.093 7.340 1.00 0.11 C
75
+ ATOM 73 CD1 ILE 4 10.257 13.267 5.350 1.00 0.56 C
76
+ ATOM 74 H ILE 4 9.163 12.351 9.072 1.00 0.07 H
77
+ ATOM 75 HA ILE 4 11.245 11.586 7.191 1.00 0.05 H
78
+ ATOM 76 HB ILE 4 10.765 14.185 8.656 1.00 0.11 H
79
+ ATOM 77 HG12 ILE 4 9.023 13.704 7.007 1.00 0.46 H
80
+ ATOM 78 HG13 ILE 4 10.029 15.045 6.472 1.00 0.43 H
81
+ ATOM 79 HG21 ILE 4 12.728 13.551 6.456 1.00 0.97 H
82
+ ATOM 80 HG22 ILE 4 13.123 13.890 8.141 1.00 1.02 H
83
+ ATOM 81 HG23 ILE 4 12.422 15.152 7.128 1.00 1.01 H
84
+ ATOM 82 HD11 ILE 4 11.232 13.537 4.974 1.00 1.20 H
85
+ ATOM 83 HD12 ILE 4 9.502 13.555 4.635 1.00 1.04 H
86
+ ATOM 84 HD13 ILE 4 10.215 12.200 5.508 1.00 1.09 H
87
+ ATOM 85 N LEU 5 11.613 11.920 10.403 1.00 0.05 N
88
+ ATOM 86 CA LEU 5 12.471 11.633 11.540 1.00 0.07 C
89
+ ATOM 87 C LEU 5 12.819 10.151 11.573 1.00 0.06 C
90
+ ATOM 88 O LEU 5 13.675 9.721 12.340 1.00 0.08 O
91
+ ATOM 89 CB LEU 5 11.776 12.042 12.842 1.00 0.09 C
92
+ ATOM 90 CG LEU 5 11.696 13.548 13.103 1.00 0.26 C
93
+ ATOM 91 CD1 LEU 5 10.978 14.260 11.970 1.00 1.43 C
94
+ ATOM 92 CD2 LEU 5 10.989 13.814 14.421 1.00 1.25 C
95
+ ATOM 93 H LEU 5 10.684 12.189 10.567 1.00 0.06 H
96
+ ATOM 94 HA LEU 5 13.378 12.205 11.427 1.00 0.08 H
97
+ ATOM 95 HB2 LEU 5 10.771 11.647 12.826 1.00 0.16 H
98
+ ATOM 96 HB3 LEU 5 12.307 11.588 13.661 1.00 0.14 H
99
+ ATOM 97 HG LEU 5 12.696 13.951 13.173 1.00 1.14 H
100
+ ATOM 98 HD11 LEU 5 11.554 14.161 11.063 1.00 2.10 H
101
+ ATOM 99 HD12 LEU 5 10.864 15.304 12.213 1.00 1.95 H
102
+ ATOM 100 HD13 LEU 5 10.004 13.815 11.827 1.00 1.99 H
103
+ ATOM 101 HD21 LEU 5 10.000 13.383 14.388 1.00 1.86 H
104
+ ATOM 102 HD22 LEU 5 10.914 14.878 14.581 1.00 1.80 H
105
+ ATOM 103 HD23 LEU 5 11.550 13.366 15.227 1.00 1.89 H
106
+ ATOM 104 N SER 6 12.132 9.374 10.736 1.00 0.05 N
107
+ ATOM 105 CA SER 6 12.359 7.934 10.651 1.00 0.06 C
108
+ ATOM 106 C SER 6 13.630 7.656 9.866 1.00 0.07 C
109
+ ATOM 107 O SER 6 14.596 7.112 10.402 1.00 0.09 O
110
+ ATOM 108 CB SER 6 11.170 7.241 9.985 1.00 0.07 C
111
+ ATOM 109 OG SER 6 11.405 5.850 9.840 1.00 0.10 O
112
+ ATOM 110 H SER 6 11.463 9.785 10.152 1.00 0.04 H
113
+ ATOM 111 HA SER 6 12.476 7.555 11.655 1.00 0.07 H
114
+ ATOM 112 HB2 SER 6 10.290 7.381 10.595 1.00 0.10 H
115
+ ATOM 113 HB3 SER 6 11.003 7.671 9.008 1.00 0.09 H
116
+ ATOM 114 HG SER 6 12.184 5.713 9.297 1.00 0.91 H
117
+ ATOM 115 N LYS 7 13.621 8.024 8.587 1.00 0.08 N
118
+ ATOM 116 CA LYS 7 14.791 7.845 7.742 1.00 0.10 C
119
+ ATOM 117 C LYS 7 15.961 8.580 8.376 1.00 0.10 C
120
+ ATOM 118 O LYS 7 17.125 8.244 8.160 1.00 0.12 O
121
+ ATOM 119 CB LYS 7 14.527 8.378 6.333 1.00 0.13 C
122
+ ATOM 120 CG LYS 7 14.215 9.869 6.295 1.00 0.15 C
123
+ ATOM 121 CD LYS 7 13.850 10.335 4.893 1.00 0.21 C
124
+ ATOM 122 CE LYS 7 15.026 10.223 3.936 1.00 1.35 C
125
+ ATOM 123 NZ LYS 7 14.702 10.781 2.594 1.00 2.09 N
126
+ ATOM 124 H LYS 7 12.811 8.426 8.207 1.00 0.08 H
127
+ ATOM 125 HA LYS 7 15.016 6.789 7.693 1.00 0.11 H
128
+ ATOM 126 HB2 LYS 7 15.401 8.201 5.722 1.00 0.17 H
129
+ ATOM 127 HB3 LYS 7 13.688 7.847 5.908 1.00 0.14 H
130
+ ATOM 128 HG2 LYS 7 13.385 10.068 6.956 1.00 0.19 H
131
+ ATOM 129 HG3 LYS 7 15.085 10.415 6.630 1.00 0.18 H
132
+ ATOM 130 HD2 LYS 7 13.039 9.726 4.523 1.00 1.10 H
133
+ ATOM 131 HD3 LYS 7 13.534 11.366 4.941 1.00 1.04 H
134
+ ATOM 132 HE2 LYS 7 15.864 10.764 4.349 1.00 2.08 H
135
+ ATOM 133 HE3 LYS 7 15.290 9.180 3.830 1.00 1.93 H
136
+ ATOM 134 HZ1 LYS 7 14.450 11.787 2.676 1.00 2.64 H
137
+ ATOM 135 HZ2 LYS 7 13.901 10.267 2.177 1.00 2.54 H
138
+ ATOM 136 HZ3 LYS 7 15.524 10.690 1.962 1.00 2.44 H
139
+ ATOM 137 N ILE 8 15.617 9.590 9.168 1.00 0.09 N
140
+ ATOM 138 CA ILE 8 16.598 10.397 9.879 1.00 0.10 C
141
+ ATOM 139 C ILE 8 17.063 9.692 11.155 1.00 0.08 C
142
+ ATOM 140 O ILE 8 18.226 9.794 11.540 1.00 0.08 O
143
+ ATOM 141 CB ILE 8 16.005 11.774 10.239 1.00 0.11 C
144
+ ATOM 142 CG1 ILE 8 15.951 12.676 8.999 1.00 0.13 C
145
+ ATOM 143 CG2 ILE 8 16.806 12.434 11.350 1.00 0.11 C
146
+ ATOM 144 CD1 ILE 8 17.311 12.986 8.404 1.00 0.16 C
147
+ ATOM 145 H ILE 8 14.662 9.806 9.272 1.00 0.09 H
148
+ ATOM 146 HA ILE 8 17.447 10.549 9.230 1.00 0.12 H
149
+ ATOM 147 HB ILE 8 14.996 11.615 10.601 1.00 0.10 H
150
+ ATOM 148 HG12 ILE 8 15.361 12.192 8.236 1.00 0.13 H
151
+ ATOM 149 HG13 ILE 8 15.484 13.614 9.265 1.00 0.14 H
152
+ ATOM 150 HG21 ILE 8 17.853 12.431 11.087 1.00 1.00 H
153
+ ATOM 151 HG22 ILE 8 16.663 11.884 12.269 1.00 1.01 H
154
+ ATOM 152 HG23 ILE 8 16.469 13.451 11.483 1.00 1.03 H
155
+ ATOM 153 HD11 ILE 8 17.919 13.491 9.140 1.00 1.01 H
156
+ ATOM 154 HD12 ILE 8 17.188 13.620 7.539 1.00 0.97 H
157
+ ATOM 155 HD13 ILE 8 17.793 12.066 8.110 1.00 1.05 H
158
+ ATOM 156 N LYS 9 16.140 8.987 11.805 1.00 0.08 N
159
+ ATOM 157 CA LYS 9 16.444 8.262 13.038 1.00 0.07 C
160
+ ATOM 158 C LYS 9 17.712 7.426 12.887 1.00 0.04 C
161
+ ATOM 159 O LYS 9 18.456 7.228 13.847 1.00 0.07 O
162
+ ATOM 160 CB LYS 9 15.275 7.354 13.421 1.00 0.11 C
163
+ ATOM 161 CG LYS 9 15.356 6.829 14.845 1.00 0.17 C
164
+ ATOM 162 CD LYS 9 14.879 5.387 14.939 1.00 0.31 C
165
+ ATOM 163 CE LYS 9 14.924 4.879 16.371 1.00 0.95 C
166
+ ATOM 164 NZ LYS 9 14.480 3.462 16.473 1.00 1.63 N
167
+ ATOM 165 H LYS 9 15.225 8.961 11.454 1.00 0.08 H
168
+ ATOM 166 HA LYS 9 16.595 8.987 13.820 1.00 0.10 H
169
+ ATOM 167 HB2 LYS 9 14.355 7.907 13.317 1.00 0.12 H
170
+ ATOM 168 HB3 LYS 9 15.253 6.509 12.749 1.00 0.12 H
171
+ ATOM 169 HG2 LYS 9 16.379 6.881 15.183 1.00 0.23 H
172
+ ATOM 170 HG3 LYS 9 14.732 7.445 15.478 1.00 0.20 H
173
+ ATOM 171 HD2 LYS 9 13.865 5.327 14.579 1.00 0.68 H
174
+ ATOM 172 HD3 LYS 9 15.520 4.767 14.328 1.00 0.74 H
175
+ ATOM 173 HE2 LYS 9 15.938 4.956 16.737 1.00 1.50 H
176
+ ATOM 174 HE3 LYS 9 14.277 5.495 16.977 1.00 1.67 H
177
+ ATOM 175 HZ1 LYS 9 15.096 2.852 15.898 1.00 1.93 H
178
+ ATOM 176 HZ2 LYS 9 13.502 3.368 16.130 1.00 2.14 H
179
+ ATOM 177 HZ3 LYS 9 14.520 3.144 17.462 1.00 2.25 H
180
+ ATOM 178 N LYS 10 17.947 6.937 11.674 1.00 0.06 N
181
+ ATOM 179 CA LYS 10 19.117 6.113 11.393 1.00 0.10 C
182
+ ATOM 180 C LYS 10 20.300 6.962 10.940 1.00 0.11 C
183
+ ATOM 181 O LYS 10 21.456 6.554 11.070 1.00 0.16 O
184
+ ATOM 182 CB LYS 10 18.785 5.066 10.327 1.00 0.15 C
185
+ ATOM 183 CG LYS 10 17.736 4.060 10.772 1.00 0.20 C
186
+ ATOM 184 CD LYS 10 17.405 3.065 9.670 1.00 0.28 C
187
+ ATOM 185 CE LYS 10 16.672 3.732 8.517 1.00 1.21 C
188
+ ATOM 186 NZ LYS 10 15.384 4.335 8.953 1.00 2.02 N
189
+ ATOM 187 H LYS 10 17.321 7.144 10.948 1.00 0.07 H
190
+ ATOM 188 HA LYS 10 19.387 5.605 12.306 1.00 0.10 H
191
+ ATOM 189 HB2 LYS 10 18.418 5.571 9.445 1.00 0.15 H
192
+ ATOM 190 HB3 LYS 10 19.685 4.527 10.074 1.00 0.20 H
193
+ ATOM 191 HG2 LYS 10 18.109 3.521 11.630 1.00 0.23 H
194
+ ATOM 192 HG3 LYS 10 16.835 4.593 11.045 1.00 0.19 H
195
+ ATOM 193 HD2 LYS 10 18.325 2.637 9.299 1.00 1.06 H
196
+ ATOM 194 HD3 LYS 10 16.782 2.284 10.078 1.00 0.95 H
197
+ ATOM 195 HE2 LYS 10 17.301 4.508 8.107 1.00 1.88 H
198
+ ATOM 196 HE3 LYS 10 16.476 2.990 7.755 1.00 1.79 H
199
+ ATOM 197 HZ1 LYS 10 15.551 5.263 9.390 1.00 2.60 H
200
+ ATOM 198 HZ2 LYS 10 14.914 3.716 9.646 1.00 2.39 H
201
+ ATOM 199 HZ3 LYS 10 14.752 4.458 8.135 1.00 2.43 H
202
+ ATOM 200 N LEU 11 20.008 8.143 10.406 1.00 0.08 N
203
+ ATOM 201 CA LEU 11 21.050 9.046 9.927 1.00 0.12 C
204
+ ATOM 202 C LEU 11 21.619 9.898 11.060 1.00 0.13 C
205
+ ATOM 203 O LEU 11 22.776 9.733 11.447 1.00 0.17 O
206
+ ATOM 204 CB LEU 11 20.502 9.947 8.817 1.00 0.13 C
207
+ ATOM 205 CG LEU 11 20.046 9.216 7.552 1.00 0.13 C
208
+ ATOM 206 CD1 LEU 11 19.395 10.190 6.582 1.00 0.16 C
209
+ ATOM 207 CD2 LEU 11 21.221 8.509 6.890 1.00 0.18 C
210
+ ATOM 208 H LEU 11 19.069 8.414 10.329 1.00 0.08 H
211
+ ATOM 209 HA LEU 11 21.846 8.439 9.520 1.00 0.16 H
212
+ ATOM 210 HB2 LEU 11 19.662 10.498 9.211 1.00 0.14 H
213
+ ATOM 211 HB3 LEU 11 21.274 10.649 8.540 1.00 0.15 H
214
+ ATOM 212 HG LEU 11 19.313 8.470 7.820 1.00 0.14 H
215
+ ATOM 213 HD11 LEU 11 19.053 9.653 5.709 1.00 1.00 H
216
+ ATOM 214 HD12 LEU 11 20.116 10.937 6.283 1.00 1.01 H
217
+ ATOM 215 HD13 LEU 11 18.556 10.669 7.062 1.00 1.06 H
218
+ ATOM 216 HD21 LEU 11 21.974 9.236 6.625 1.00 0.98 H
219
+ ATOM 217 HD22 LEU 11 20.879 8.002 6.000 1.00 0.96 H
220
+ ATOM 218 HD23 LEU 11 21.642 7.789 7.577 1.00 1.08 H
221
+ ATOM 219 N LEU 12 20.805 10.810 11.590 1.00 0.12 N
222
+ ATOM 220 CA LEU 12 21.249 11.684 12.674 1.00 0.16 C
223
+ ATOM 221 C LEU 12 20.242 11.722 13.822 1.00 0.18 C
224
+ ATOM 222 O LEU 12 20.523 11.228 14.914 1.00 0.26 O
225
+ ATOM 223 CB LEU 12 21.502 13.103 12.153 1.00 0.24 C
226
+ ATOM 224 CG LEU 12 20.502 13.609 11.110 1.00 0.19 C
227
+ ATOM 225 CD1 LEU 12 20.252 15.097 11.289 1.00 0.30 C
228
+ ATOM 226 CD2 LEU 12 21.010 13.319 9.706 1.00 0.24 C
229
+ ATOM 227 H LEU 12 19.891 10.895 11.245 1.00 0.10 H
230
+ ATOM 228 HA LEU 12 22.179 11.285 13.050 1.00 0.23 H
231
+ ATOM 229 HB2 LEU 12 21.484 13.779 12.997 1.00 0.40 H
232
+ ATOM 230 HB3 LEU 12 22.488 13.132 11.716 1.00 0.36 H
233
+ ATOM 231 HG LEU 12 19.562 13.093 11.242 1.00 0.24 H
234
+ ATOM 232 HD11 LEU 12 21.179 15.637 11.161 1.00 0.93 H
235
+ ATOM 233 HD12 LEU 12 19.863 15.282 12.280 1.00 1.07 H
236
+ ATOM 234 HD13 LEU 12 19.536 15.433 10.554 1.00 1.11 H
237
+ ATOM 235 HD21 LEU 12 21.899 13.901 9.516 1.00 0.98 H
238
+ ATOM 236 HD22 LEU 12 20.248 13.580 8.986 1.00 1.04 H
239
+ ATOM 237 HD23 LEU 12 21.242 12.268 9.618 1.00 1.08 H
240
+ ATOM 238 N LYS 13 19.073 12.313 13.571 1.00 0.24 N
241
+ ATOM 239 CA LYS 13 18.029 12.423 14.590 1.00 0.34 C
242
+ ATOM 240 C LYS 13 18.520 13.234 15.786 1.00 0.74 C
243
+ ATOM 241 O LYS 13 18.299 14.463 15.796 1.00 1.46 O
244
+ ATOM 242 CB LYS 13 17.570 11.035 15.046 1.00 0.26 C
245
+ ATOM 243 CG LYS 13 16.554 11.065 16.180 1.00 0.26 C
246
+ ATOM 244 CD LYS 13 15.205 11.595 15.720 1.00 0.77 C
247
+ ATOM 245 CE LYS 13 14.250 10.465 15.359 1.00 0.29 C
248
+ ATOM 246 NZ LYS 13 14.086 9.500 16.480 1.00 1.13 N
249
+ ATOM 247 OXT LYS 13 19.125 12.635 16.701 1.00 1.39 O
250
+ ATOM 248 H LYS 13 18.908 12.681 12.681 1.00 0.26 H
251
+ ATOM 249 HA LYS 13 17.191 12.939 14.144 1.00 0.60 H
252
+ ATOM 250 HB2 LYS 13 17.122 10.526 14.207 1.00 0.52 H
253
+ ATOM 251 HB3 LYS 13 18.431 10.473 15.378 1.00 0.49 H
254
+ ATOM 252 HG2 LYS 13 16.424 10.062 16.559 1.00 0.74 H
255
+ ATOM 253 HG3 LYS 13 16.931 11.701 16.968 1.00 0.63 H
256
+ ATOM 254 HD2 LYS 13 14.770 12.181 16.515 1.00 1.56 H
257
+ ATOM 255 HD3 LYS 13 15.353 12.218 14.850 1.00 1.50 H
258
+ ATOM 256 HE2 LYS 13 13.286 10.892 15.122 1.00 0.93 H
259
+ ATOM 257 HE3 LYS 13 14.632 9.942 14.496 1.00 0.64 H
260
+ ATOM 258 HZ1 LYS 13 13.705 9.986 17.318 1.00 1.65 H
261
+ ATOM 259 HZ2 LYS 13 15.003 9.077 16.727 1.00 1.80 H
262
+ ATOM 260 HZ3 LYS 13 13.431 8.740 16.206 1.00 1.60 H
263
+ ATOM 261 CL CL 1 9.897 9.251 3.567 1.00 0.00 CL
264
+ ATOM 262 O SPC 1 6.261 1.831 15.733 1.00 0.00 O
265
+ ATOM 263 H1 SPC 1 6.919 1.134 15.447 1.00 0.00 H
266
+ ATOM 264 H2 SPC 1 6.561 2.727 15.405 1.00 0.00 H
267
+ ATOM 265 CL CL 2 7.297 8.301 18.972 1.00 0.00 CL
268
+ ATOM 266 O SPC 2 5.298 13.416 16.279 1.00 0.00 O
269
+ ATOM 267 H1 SPC 2 4.303 13.510 16.233 1.00 0.00 H
270
+ ATOM 268 H2 SPC 2 5.652 13.988 17.019 1.00 0.00 H
271
+ ATOM 269 CL CL 3 26.559 3.463 7.601 1.00 0.00 CL
272
+ ATOM 270 O SPC 3 16.856 1.187 2.515 1.00 0.00 O
273
+ ATOM 271 H1 SPC 3 15.863 1.216 2.634 1.00 0.00 H
274
+ ATOM 272 H2 SPC 3 17.123 0.287 2.170 1.00 0.00 H
275
+ ATOM 273 CL CL 4 23.395 17.562 10.867 1.00 0.00 CL
276
+ ATOM 274 O SPC 4 18.956 17.830 1.634 1.00 0.00 O
277
+ ATOM 275 H1 SPC 4 19.856 17.797 1.200 1.00 0.00 H
278
+ ATOM 276 H2 SPC 4 19.055 17.682 2.618 1.00 0.00 H
279
+ ATOM 277 CL CL 5 21.358 18.733 6.168 1.00 0.00 CL
280
+ ATOM 278 O SPC 5 10.657 0.664 14.626 1.00 0.00 O
281
+ ATOM 279 H1 SPC 5 10.920 -0.198 14.193 1.00 0.00 H
282
+ ATOM 280 H2 SPC 5 11.426 1.018 15.158 1.00 0.00 H
283
+ ATOM 281 CL CL 6 6.667 5.421 2.438 1.00 0.00 CL
284
+ ATOM 282 O SPC 6 12.517 17.139 20.263 1.00 0.00 O
285
+ ATOM 283 H1 SPC 6 12.551 16.600 19.421 1.00 0.00 H
286
+ ATOM 284 H2 SPC 6 12.134 18.042 20.065 1.00 0.00 H
287
+ ATOM 285 O SPC 7 19.141 10.625 1.841 1.00 0.00 O
288
+ ATOM 286 H1 SPC 7 19.462 10.641 2.788 1.00 0.00 H
289
+ ATOM 287 H2 SPC 7 19.510 11.414 1.350 1.00 0.00 H
290
+ ATOM 288 O SPC 8 19.223 14.264 2.661 1.00 0.00 O
291
+ ATOM 289 H1 SPC 8 19.942 14.112 1.984 1.00 0.00 H
292
+ ATOM 290 H2 SPC 8 18.352 13.925 2.304 1.00 0.00 H
293
+ ATOM 291 O SPC 9 13.406 17.838 5.743 1.00 0.00 O
294
+ ATOM 292 H1 SPC 9 13.573 17.071 6.363 1.00 0.00 H
295
+ ATOM 293 H2 SPC 9 12.463 17.800 5.413 1.00 0.00 H
296
+ ATOM 294 O SPC 10 21.294 4.393 14.866 1.00 0.00 O
297
+ ATOM 295 H1 SPC 10 21.576 3.433 14.878 1.00 0.00 H
298
+ ATOM 296 H2 SPC 10 21.379 4.752 13.936 1.00 0.00 H
299
+ ATOM 297 O SPC 11 5.918 15.436 18.750 1.00 0.00 O
300
+ ATOM 298 H1 SPC 11 5.520 16.336 18.930 1.00 0.00 H
301
+ ATOM 299 H2 SPC 11 5.291 14.725 19.067 1.00 0.00 H
302
+ ATOM 300 O SPC 12 20.585 6.909 18.582 1.00 0.00 O
303
+ ATOM 301 H1 SPC 12 20.293 6.188 19.210 1.00 0.00 H
304
+ ATOM 302 H2 SPC 12 20.234 6.716 17.666 1.00 0.00 H
305
+ ATOM 303 O SPC 13 12.344 7.267 18.653 1.00 0.00 O
306
+ ATOM 304 H1 SPC 13 11.490 7.357 18.140 1.00 0.00 H
307
+ ATOM 305 H2 SPC 13 12.474 6.312 18.921 1.00 0.00 H
308
+ ATOM 306 O SPC 14 17.718 16.195 6.438 1.00 0.00 O
309
+ ATOM 307 H1 SPC 14 17.305 17.003 6.858 1.00 0.00 H
310
+ ATOM 308 H2 SPC 14 18.294 15.728 7.110 1.00 0.00 H
311
+ ATOM 309 O SPC 15 9.912 14.515 19.459 1.00 0.00 O
312
+ ATOM 310 H1 SPC 15 9.733 14.289 18.502 1.00 0.00 H
313
+ ATOM 311 H2 SPC 15 10.550 15.284 19.507 1.00 0.00 H
314
+ ATOM 312 O SPC 16 11.920 11.940 19.925 1.00 0.00 O
315
+ ATOM 313 H1 SPC 16 11.855 12.599 20.675 1.00 0.00 H
316
+ ATOM 314 H2 SPC 16 11.004 11.626 19.677 1.00 0.00 H
317
+ ATOM 315 O SPC 17 20.400 3.866 3.797 1.00 0.00 O
318
+ ATOM 316 H1 SPC 17 20.658 4.772 3.463 1.00 0.00 H
319
+ ATOM 317 H2 SPC 17 19.636 3.516 3.256 1.00 0.00 H
320
+ ATOM 318 O SPC 18 5.982 15.132 12.363 1.00 0.00 O
321
+ ATOM 319 H1 SPC 18 5.536 14.306 12.019 1.00 0.00 H
322
+ ATOM 320 H2 SPC 18 5.857 15.876 11.707 1.00 0.00 H
323
+ ATOM 321 O SPC 19 11.014 3.970 20.071 1.00 0.00 O
324
+ ATOM 322 H1 SPC 19 11.995 4.059 19.901 1.00 0.00 H
325
+ ATOM 323 H2 SPC 19 10.838 3.125 20.576 1.00 0.00 H
326
+ ATOM 324 O SPC 20 4.258 13.880 3.901 1.00 0.00 O
327
+ ATOM 325 H1 SPC 20 3.792 13.612 4.744 1.00 0.00 H
328
+ ATOM 326 H2 SPC 20 5.219 14.073 4.097 1.00 0.00 H
329
+ ATOM 327 O SPC 21 14.164 1.782 2.849 1.00 0.00 O
330
+ ATOM 328 H1 SPC 21 14.182 2.690 2.429 1.00 0.00 H
331
+ ATOM 329 H2 SPC 21 13.232 1.567 3.140 1.00 0.00 H
332
+ ATOM 330 O SPC 22 7.985 3.467 7.556 1.00 0.00 O
333
+ ATOM 331 H1 SPC 22 7.309 4.176 7.754 1.00 0.00 H
334
+ ATOM 332 H2 SPC 22 7.836 2.686 8.163 1.00 0.00 H
335
+ ATOM 333 O SPC 23 16.618 17.897 11.065 1.00 0.00 O
336
+ ATOM 334 H1 SPC 23 17.509 18.275 11.316 1.00 0.00 H
337
+ ATOM 335 H2 SPC 23 16.063 18.608 10.634 1.00 0.00 H
338
+ ATOM 336 O SPC 24 11.707 1.635 4.132 1.00 0.00 O
339
+ ATOM 337 H1 SPC 24 11.422 1.100 4.927 1.00 0.00 H
340
+ ATOM 338 H2 SPC 24 12.027 2.534 4.432 1.00 0.00 H
341
+ ATOM 339 O SPC 25 10.599 2.726 7.183 1.00 0.00 O
342
+ ATOM 340 H1 SPC 25 9.633 2.922 7.352 1.00 0.00 H
343
+ ATOM 341 H2 SPC 25 10.837 1.844 7.589 1.00 0.00 H
344
+ ATOM 342 O SPC 26 7.809 10.947 16.146 1.00 0.00 O
345
+ ATOM 343 H1 SPC 26 8.603 11.000 16.752 1.00 0.00 H
346
+ ATOM 344 H2 SPC 26 7.188 10.234 16.472 1.00 0.00 H
347
+ ATOM 345 O SPC 27 19.669 18.552 11.161 1.00 0.00 O
348
+ ATOM 346 H1 SPC 27 19.731 18.823 10.200 1.00 0.00 H
349
+ ATOM 347 H2 SPC 27 20.224 17.734 11.314 1.00 0.00 H
350
+ ATOM 348 O SPC 28 4.856 18.276 3.656 1.00 0.00 O
351
+ ATOM 349 H1 SPC 28 5.410 18.559 4.438 1.00 0.00 H
352
+ ATOM 350 H2 SPC 28 4.204 17.575 3.945 1.00 0.00 H
353
+ ATOM 351 O SPC 29 21.625 1.298 18.698 1.00 0.00 O
354
+ ATOM 352 H1 SPC 29 22.155 2.125 18.510 1.00 0.00 H
355
+ ATOM 353 H2 SPC 29 21.384 1.270 19.668 1.00 0.00 H
356
+ ATOM 354 O SPC 30 16.688 18.172 7.860 1.00 0.00 O
357
+ ATOM 355 H1 SPC 30 16.240 18.965 7.448 1.00 0.00 H
358
+ ATOM 356 H2 SPC 30 17.356 18.480 8.537 1.00 0.00 H
359
+ ATOM 357 O SPC 31 8.823 17.984 4.545 1.00 0.00 O
360
+ ATOM 358 H1 SPC 31 9.592 17.404 4.276 1.00 0.00 H
361
+ ATOM 359 H2 SPC 31 8.400 18.376 3.728 1.00 0.00 H
362
+ ATOM 360 O SPC 32 4.721 3.752 18.667 1.00 0.00 O
363
+ ATOM 361 H1 SPC 32 5.555 4.251 18.430 1.00 0.00 H
364
+ ATOM 362 H2 SPC 32 4.061 4.381 19.077 1.00 0.00 H
365
+ ATOM 363 O SPC 33 14.212 4.749 2.506 1.00 0.00 O
366
+ ATOM 364 H1 SPC 33 14.108 4.871 3.493 1.00 0.00 H
367
+ ATOM 365 H2 SPC 33 14.965 5.318 2.177 1.00 0.00 H
368
+ ATOM 366 O SPC 34 9.087 4.361 4.883 1.00 0.00 O
369
+ ATOM 367 H1 SPC 34 9.043 3.762 4.084 1.00 0.00 H
370
+ ATOM 368 H2 SPC 34 9.715 3.973 5.557 1.00 0.00 H
371
+ ATOM 369 O SPC 35 22.138 17.630 16.643 1.00 0.00 O
372
+ ATOM 370 H1 SPC 35 23.135 17.693 16.598 1.00 0.00 H
373
+ ATOM 371 H2 SPC 35 21.813 18.074 17.478 1.00 0.00 H
374
+ ATOM 372 O SPC 36 6.593 1.462 18.547 1.00 0.00 O
375
+ ATOM 373 H1 SPC 36 6.607 1.684 17.572 1.00 0.00 H
376
+ ATOM 374 H2 SPC 36 5.915 2.033 19.009 1.00 0.00 H
377
+ ATOM 375 O SPC 37 19.103 16.688 4.060 1.00 0.00 O
378
+ ATOM 376 H1 SPC 37 18.866 15.885 3.513 1.00 0.00 H
379
+ ATOM 377 H2 SPC 37 18.602 16.663 4.925 1.00 0.00 H
380
+ ATOM 378 O SPC 38 6.487 1.180 12.550 1.00 0.00 O
381
+ ATOM 379 H1 SPC 38 6.846 0.976 13.460 1.00 0.00 H
382
+ ATOM 380 H2 SPC 38 6.402 2.171 12.440 1.00 0.00 H
383
+ ATOM 381 O SPC 39 7.987 18.699 14.735 1.00 0.00 O
384
+ ATOM 382 H1 SPC 39 8.933 19.008 14.834 1.00 0.00 H
385
+ ATOM 383 H2 SPC 39 7.977 17.762 14.385 1.00 0.00 H
386
+ ATOM 384 O SPC 40 9.451 3.332 15.442 1.00 0.00 O
387
+ ATOM 385 H1 SPC 40 9.442 2.387 15.117 1.00 0.00 H
388
+ ATOM 386 H2 SPC 40 9.388 3.954 14.661 1.00 0.00 H
389
+ ATOM 387 O SPC 41 14.629 17.007 17.563 1.00 0.00 O
390
+ ATOM 388 H1 SPC 41 15.022 16.841 18.467 1.00 0.00 H
391
+ ATOM 389 H2 SPC 41 15.255 16.667 16.860 1.00 0.00 H
392
+ ATOM 390 O SPC 42 18.095 18.198 17.459 1.00 0.00 O
393
+ ATOM 391 H1 SPC 42 17.283 18.734 17.689 1.00 0.00 H
394
+ ATOM 392 H2 SPC 42 18.620 18.016 18.291 1.00 0.00 H
395
+ ATOM 393 O SPC 43 7.751 12.684 2.074 1.00 0.00 O
396
+ ATOM 394 H1 SPC 43 8.272 13.385 1.587 1.00 0.00 H
397
+ ATOM 395 H2 SPC 43 6.906 12.491 1.576 1.00 0.00 H
398
+ ATOM 396 O SPC 44 6.761 14.926 4.575 1.00 0.00 O
399
+ ATOM 397 H1 SPC 44 7.479 14.385 5.013 1.00 0.00 H
400
+ ATOM 398 H2 SPC 44 7.103 15.298 3.712 1.00 0.00 H
401
+ ATOM 399 O SPC 45 21.072 2.084 12.096 1.00 0.00 O
402
+ ATOM 400 H1 SPC 45 20.445 1.317 11.959 1.00 0.00 H
403
+ ATOM 401 H2 SPC 45 21.539 1.979 12.974 1.00 0.00 H
404
+ ATOM 402 O SPC 46 9.511 4.678 17.663 1.00 0.00 O
405
+ ATOM 403 H1 SPC 46 9.351 4.034 16.915 1.00 0.00 H
406
+ ATOM 404 H2 SPC 46 9.858 4.184 18.460 1.00 0.00 H
407
+ ATOM 405 O SPC 47 19.135 9.231 18.266 1.00 0.00 O
408
+ ATOM 406 H1 SPC 47 19.818 8.510 18.383 1.00 0.00 H
409
+ ATOM 407 H2 SPC 47 19.085 9.783 19.098 1.00 0.00 H
410
+ ATOM 408 O SPC 48 6.482 5.844 8.313 1.00 0.00 O
411
+ ATOM 409 H1 SPC 48 6.638 5.763 9.297 1.00 0.00 H
412
+ ATOM 410 H2 SPC 48 5.544 5.572 8.100 1.00 0.00 H
413
+ ATOM 411 O SPC 49 5.359 17.384 8.062 1.00 0.00 O
414
+ ATOM 412 H1 SPC 49 5.184 17.496 9.040 1.00 0.00 H
415
+ ATOM 413 H2 SPC 49 5.918 18.145 7.734 1.00 0.00 H
416
+ ATOM 414 O SPC 50 13.657 4.551 5.299 1.00 0.00 O
417
+ ATOM 415 H1 SPC 50 14.115 4.420 6.178 1.00 0.00 H
418
+ ATOM 416 H2 SPC 50 13.042 5.338 5.357 1.00 0.00 H
419
+ ATOM 417 O SPC 51 16.589 6.095 2.292 1.00 0.00 O
420
+ ATOM 418 H1 SPC 51 16.819 6.762 2.999 1.00 0.00 H
421
+ ATOM 419 H2 SPC 51 17.197 5.304 2.368 1.00 0.00 H
422
+ ATOM 420 O SPC 52 9.029 0.856 11.098 1.00 0.00 O
423
+ ATOM 421 H1 SPC 52 9.717 0.588 11.772 1.00 0.00 H
424
+ ATOM 422 H2 SPC 52 8.116 0.681 11.466 1.00 0.00 H
425
+ ATOM 423 O SPC 53 11.303 0.988 19.585 1.00 0.00 O
426
+ ATOM 424 H1 SPC 53 10.559 0.668 18.998 1.00 0.00 H
427
+ ATOM 425 H2 SPC 53 10.933 1.255 20.475 1.00 0.00 H
428
+ ATOM 426 O SPC 54 22.625 4.355 7.686 1.00 0.00 O
429
+ ATOM 427 H1 SPC 54 22.459 3.600 7.052 1.00 0.00 H
430
+ ATOM 428 H2 SPC 54 22.613 4.011 8.625 1.00 0.00 H
431
+ ATOM 429 O SPC 55 14.411 16.629 3.546 1.00 0.00 O
432
+ ATOM 430 H1 SPC 55 14.129 17.141 4.357 1.00 0.00 H
433
+ ATOM 431 H2 SPC 55 13.960 17.009 2.738 1.00 0.00 H
434
+ ATOM 432 O SPC 56 12.497 15.449 17.708 1.00 0.00 O
435
+ ATOM 433 H1 SPC 56 13.385 15.901 17.618 1.00 0.00 H
436
+ ATOM 434 H2 SPC 56 12.620 14.458 17.649 1.00 0.00 H
437
+ ATOM 435 O SPC 57 10.650 18.495 6.345 1.00 0.00 O
438
+ ATOM 436 H1 SPC 57 10.490 18.642 7.321 1.00 0.00 H
439
+ ATOM 437 H2 SPC 57 9.863 18.026 5.945 1.00 0.00 H
440
+ ATOM 438 O SPC 58 9.230 18.485 18.121 1.00 0.00 O
441
+ ATOM 439 H1 SPC 58 8.475 19.011 17.729 1.00 0.00 H
442
+ ATOM 440 H2 SPC 58 9.326 17.621 17.627 1.00 0.00 H
443
+ ATOM 441 O SPC 59 5.443 11.472 19.165 1.00 0.00 O
444
+ ATOM 442 H1 SPC 59 5.348 10.913 18.342 1.00 0.00 H
445
+ ATOM 443 H2 SPC 59 5.660 10.884 19.944 1.00 0.00 H
446
+ ATOM 444 O SPC 60 5.856 9.963 2.730 1.00 0.00 O
447
+ ATOM 445 H1 SPC 60 5.040 9.579 3.160 1.00 0.00 H
448
+ ATOM 446 H2 SPC 60 6.658 9.754 3.290 1.00 0.00 H
449
+ ATOM 447 O SPC 61 4.298 13.641 19.867 1.00 0.00 O
450
+ ATOM 448 H1 SPC 61 4.782 12.820 19.565 1.00 0.00 H
451
+ ATOM 449 H2 SPC 61 4.093 13.567 20.843 1.00 0.00 H
452
+ ATOM 450 O SPC 62 22.334 1.767 14.655 1.00 0.00 O
453
+ ATOM 451 H1 SPC 62 21.720 1.051 14.988 1.00 0.00 H
454
+ ATOM 452 H2 SPC 62 23.132 1.828 15.255 1.00 0.00 H
455
+ ATOM 453 O SPC 63 4.784 17.732 19.659 1.00 0.00 O
456
+ ATOM 454 H1 SPC 63 4.767 17.787 20.657 1.00 0.00 H
457
+ ATOM 455 H2 SPC 63 4.976 18.637 19.278 1.00 0.00 H
458
+ ATOM 456 O SPC 64 11.068 16.275 3.866 1.00 0.00 O
459
+ ATOM 457 H1 SPC 64 11.664 16.630 3.146 1.00 0.00 H
460
+ ATOM 458 H2 SPC 64 11.200 15.288 3.953 1.00 0.00 H
461
+ ATOM 459 O SPC 65 20.355 4.147 17.856 1.00 0.00 O
462
+ ATOM 460 H1 SPC 65 20.727 3.808 16.991 1.00 0.00 H
463
+ ATOM 461 H2 SPC 65 19.392 3.888 17.928 1.00 0.00 H
464
+ ATOM 462 O SPC 66 4.815 17.547 10.820 1.00 0.00 O
465
+ ATOM 463 H1 SPC 66 4.152 16.921 11.231 1.00 0.00 H
466
+ ATOM 464 H2 SPC 66 4.746 18.442 11.259 1.00 0.00 H
467
+ ATOM 465 O SPC 67 22.062 9.053 3.444 1.00 0.00 O
468
+ ATOM 466 H1 SPC 67 21.873 8.526 2.616 1.00 0.00 H
469
+ ATOM 467 H2 SPC 67 21.212 9.454 3.785 1.00 0.00 H
470
+ ATOM 468 O SPC 68 6.834 0.527 6.251 1.00 0.00 O
471
+ ATOM 469 H1 SPC 68 7.614 0.241 5.695 1.00 0.00 H
472
+ ATOM 470 H2 SPC 68 6.765 1.524 6.241 1.00 0.00 H
473
+ ATOM 471 O SPC 69 12.762 17.941 10.027 1.00 0.00 O
474
+ ATOM 472 H1 SPC 69 13.754 18.035 10.105 1.00 0.00 H
475
+ ATOM 473 H2 SPC 69 12.477 17.071 10.430 1.00 0.00 H
476
+ ATOM 474 O SPC 70 16.766 13.324 20.246 1.00 0.00 O
477
+ ATOM 475 H1 SPC 70 16.271 12.562 20.663 1.00 0.00 H
478
+ ATOM 476 H2 SPC 70 16.680 13.274 19.251 1.00 0.00 H
479
+ ATOM 477 O SPC 71 7.652 16.077 2.148 1.00 0.00 O
480
+ ATOM 478 H1 SPC 71 7.170 15.894 1.291 1.00 0.00 H
481
+ ATOM 479 H2 SPC 71 8.576 15.696 2.098 1.00 0.00 H
482
+ ATOM 480 O SPC 72 16.286 15.930 19.543 1.00 0.00 O
483
+ ATOM 481 H1 SPC 72 16.200 15.181 20.200 1.00 0.00 H
484
+ ATOM 482 H2 SPC 72 17.041 16.527 19.814 1.00 0.00 H
485
+ ATOM 483 O SPC 73 13.664 1.172 12.470 1.00 0.00 O
486
+ ATOM 484 H1 SPC 73 14.046 0.867 11.598 1.00 0.00 H
487
+ ATOM 485 H2 SPC 73 13.463 2.150 12.423 1.00 0.00 H
488
+ ATOM 486 O SPC 74 6.873 1.924 9.405 1.00 0.00 O
489
+ ATOM 487 H1 SPC 74 7.192 1.611 10.300 1.00 0.00 H
490
+ ATOM 488 H2 SPC 74 5.956 2.313 9.495 1.00 0.00 H
491
+ ATOM 489 O SPC 75 8.784 6.377 6.759 1.00 0.00 O
492
+ ATOM 490 H1 SPC 75 7.952 6.473 7.305 1.00 0.00 H
493
+ ATOM 491 H2 SPC 75 8.718 5.556 6.192 1.00 0.00 H
494
+ ATOM 492 O SPC 76 17.750 3.671 2.186 1.00 0.00 O
495
+ ATOM 493 H1 SPC 76 17.577 2.712 2.411 1.00 0.00 H
496
+ ATOM 494 H2 SPC 76 17.853 3.768 1.196 1.00 0.00 H
497
+ ATOM 495 O SPC 77 15.646 14.881 5.366 1.00 0.00 O
498
+ ATOM 496 H1 SPC 77 16.376 15.291 5.913 1.00 0.00 H
499
+ ATOM 497 H2 SPC 77 15.259 15.572 4.756 1.00 0.00 H
500
+ ATOM 498 O SPC 78 7.903 16.016 13.873 1.00 0.00 O
501
+ ATOM 499 H1 SPC 78 7.006 15.938 13.438 1.00 0.00 H
502
+ ATOM 500 H2 SPC 78 7.864 15.618 14.790 1.00 0.00 H
503
+ ATOM 501 O SPC 79 13.572 16.924 13.138 1.00 0.00 O
504
+ ATOM 502 H1 SPC 79 13.432 17.856 12.803 1.00 0.00 H
505
+ ATOM 503 H2 SPC 79 12.685 16.485 13.282 1.00 0.00 H
506
+ ATOM 504 O SPC 80 16.856 1.187 21.136 1.00 0.00 O
507
+ ATOM 505 H1 SPC 80 15.863 1.216 21.255 1.00 0.00 H
508
+ ATOM 506 H2 SPC 80 17.123 0.287 20.791 1.00 0.00 H
509
+ ATOM 507 O SPC 81 18.956 17.830 20.255 1.00 0.00 O
510
+ ATOM 508 H1 SPC 81 19.856 17.797 19.821 1.00 0.00 H
511
+ ATOM 509 H2 SPC 81 19.055 17.682 21.239 1.00 0.00 H
512
+ ATOM 510 O SPC 82 12.517 17.139 1.642 1.00 0.00 O
513
+ ATOM 511 H1 SPC 82 12.551 16.600 0.800 1.00 0.00 H
514
+ ATOM 512 H2 SPC 82 12.134 18.042 1.445 1.00 0.00 H
515
+ ATOM 513 O SPC 83 19.141 10.625 20.461 1.00 0.00 O
516
+ ATOM 514 H1 SPC 83 19.462 10.641 21.408 1.00 0.00 H
517
+ ATOM 515 H2 SPC 83 19.510 11.414 19.971 1.00 0.00 H
518
+ ATOM 516 O SPC 84 9.912 14.515 0.839 1.00 0.00 O
519
+ ATOM 517 H1 SPC 84 9.733 14.289 -0.119 1.00 0.00 H
520
+ ATOM 518 H2 SPC 84 10.550 15.284 0.886 1.00 0.00 H
521
+ ATOM 519 O SPC 85 11.014 3.970 1.451 1.00 0.00 O
522
+ ATOM 520 H1 SPC 85 11.995 4.059 1.280 1.00 0.00 H
523
+ ATOM 521 H2 SPC 85 10.838 3.125 1.956 1.00 0.00 H
524
+ ATOM 522 O SPC 86 7.751 12.684 20.695 1.00 0.00 O
525
+ ATOM 523 H1 SPC 86 8.272 13.385 20.207 1.00 0.00 H
526
+ ATOM 524 H2 SPC 86 6.906 12.491 20.197 1.00 0.00 H
527
+ ATOM 525 O SPC 87 16.589 6.095 20.912 1.00 0.00 O
528
+ ATOM 526 H1 SPC 87 16.819 6.762 21.620 1.00 0.00 H
529
+ ATOM 527 H2 SPC 87 17.197 5.304 20.989 1.00 0.00 H
530
+ ATOM 528 O SPC 88 11.303 0.988 0.965 1.00 0.00 O
531
+ ATOM 529 H1 SPC 88 10.559 0.668 0.377 1.00 0.00 H
532
+ ATOM 530 H2 SPC 88 10.933 1.255 1.854 1.00 0.00 H
533
+ ATOM 531 O SPC 89 4.298 13.641 1.247 1.00 0.00 O
534
+ ATOM 532 H1 SPC 89 4.782 12.820 0.945 1.00 0.00 H
535
+ ATOM 533 H2 SPC 89 4.093 13.567 2.223 1.00 0.00 H
536
+ ATOM 534 O SPC 90 4.784 17.732 1.038 1.00 0.00 O
537
+ ATOM 535 H1 SPC 90 4.767 17.787 2.036 1.00 0.00 H
538
+ ATOM 536 H2 SPC 90 4.976 18.637 0.658 1.00 0.00 H
539
+ ATOM 537 O SPC 91 16.766 13.324 1.625 1.00 0.00 O
540
+ ATOM 538 H1 SPC 91 16.271 12.562 2.042 1.00 0.00 H
541
+ ATOM 539 H2 SPC 91 16.680 13.274 0.630 1.00 0.00 H
542
+ ATOM 540 O SPC 92 7.652 16.077 20.768 1.00 0.00 O
543
+ ATOM 541 H1 SPC 92 7.170 15.894 19.911 1.00 0.00 H
544
+ ATOM 542 H2 SPC 92 8.576 15.696 20.719 1.00 0.00 H
545
+ ATOM 543 O SPC 93 16.286 15.930 0.922 1.00 0.00 O
546
+ ATOM 544 H1 SPC 93 16.200 15.181 1.579 1.00 0.00 H
547
+ ATOM 545 H2 SPC 93 17.041 16.527 1.193 1.00 0.00 H
548
+ ATOM 546 O SPC 94 17.750 3.671 20.807 1.00 0.00 O
549
+ ATOM 547 H1 SPC 94 17.577 2.712 21.032 1.00 0.00 H
550
+ ATOM 548 H2 SPC 94 17.853 3.768 19.817 1.00 0.00 H
551
+ ATOM 549 O SPC 95 24.882 1.831 15.733 1.00 0.00 O
552
+ ATOM 550 H1 SPC 95 25.540 1.134 15.447 1.00 0.00 H
553
+ ATOM 551 H2 SPC 95 25.182 2.727 15.405 1.00 0.00 H
554
+ ATOM 552 O SPC 96 1.798 12.257 13.339 1.00 0.00 O
555
+ ATOM 553 H1 SPC 96 2.693 11.812 13.387 1.00 0.00 H
556
+ ATOM 554 H2 SPC 96 1.099 11.577 13.117 1.00 0.00 H
557
+ ATOM 555 O SPC 97 23.919 13.416 16.279 1.00 0.00 O
558
+ ATOM 556 H1 SPC 97 22.924 13.510 16.233 1.00 0.00 H
559
+ ATOM 557 H2 SPC 97 24.273 13.988 17.019 1.00 0.00 H
560
+ ATOM 558 O SPC 98 1.285 12.800 5.118 1.00 0.00 O
561
+ ATOM 559 H1 SPC 98 0.812 13.133 5.933 1.00 0.00 H
562
+ ATOM 560 H2 SPC 98 1.074 13.395 4.343 1.00 0.00 H
563
+ ATOM 561 O SPC 99 23.846 12.106 7.927 1.00 0.00 O
564
+ ATOM 562 H1 SPC 99 23.104 11.507 7.628 1.00 0.00 H
565
+ ATOM 563 H2 SPC 99 23.575 13.061 7.800 1.00 0.00 H
566
+ ATOM 564 O SPC 100 0.520 10.625 1.841 1.00 0.00 O
567
+ ATOM 565 H1 SPC 100 0.842 10.641 2.788 1.00 0.00 H
568
+ ATOM 566 H2 SPC 100 0.889 11.414 1.350 1.00 0.00 H
569
+ ATOM 567 O SPC 101 0.602 14.264 2.661 1.00 0.00 O
570
+ ATOM 568 H1 SPC 101 1.322 14.112 1.984 1.00 0.00 H
571
+ ATOM 569 H2 SPC 101 -0.269 13.925 2.304 1.00 0.00 H
572
+ ATOM 570 O SPC 102 26.321 8.416 4.919 1.00 0.00 O
573
+ ATOM 571 H1 SPC 102 25.775 8.888 5.611 1.00 0.00 H
574
+ ATOM 572 H2 SPC 102 26.424 7.455 5.175 1.00 0.00 H
575
+ ATOM 573 O SPC 103 24.539 15.436 18.750 1.00 0.00 O
576
+ ATOM 574 H1 SPC 103 24.141 16.336 18.930 1.00 0.00 H
577
+ ATOM 575 H2 SPC 103 23.911 14.725 19.067 1.00 0.00 H
578
+ ATOM 576 O SPC 104 1.965 6.909 18.582 1.00 0.00 O
579
+ ATOM 577 H1 SPC 104 1.673 6.188 19.210 1.00 0.00 H
580
+ ATOM 578 H2 SPC 104 1.614 6.716 17.666 1.00 0.00 H
581
+ ATOM 579 O SPC 105 26.115 9.341 9.983 1.00 0.00 O
582
+ ATOM 580 H1 SPC 105 26.904 8.833 9.641 1.00 0.00 H
583
+ ATOM 581 H2 SPC 105 26.403 9.944 10.728 1.00 0.00 H
584
+ ATOM 582 O SPC 106 2.876 18.601 9.014 1.00 0.00 O
585
+ ATOM 583 H1 SPC 106 3.273 17.956 9.667 1.00 0.00 H
586
+ ATOM 584 H2 SPC 106 3.358 18.530 8.141 1.00 0.00 H
587
+ ATOM 585 O SPC 107 1.245 10.221 4.500 1.00 0.00 O
588
+ ATOM 586 H1 SPC 107 0.662 9.700 5.123 1.00 0.00 H
589
+ ATOM 587 H2 SPC 107 1.118 11.200 4.666 1.00 0.00 H
590
+ ATOM 588 O SPC 108 3.411 2.574 5.422 1.00 0.00 O
591
+ ATOM 589 H1 SPC 108 2.956 3.365 5.014 1.00 0.00 H
592
+ ATOM 590 H2 SPC 108 4.367 2.800 5.611 1.00 0.00 H
593
+ ATOM 591 O SPC 109 1.780 3.866 3.797 1.00 0.00 O
594
+ ATOM 592 H1 SPC 109 2.038 4.772 3.463 1.00 0.00 H
595
+ ATOM 593 H2 SPC 109 1.015 3.516 3.256 1.00 0.00 H
596
+ ATOM 594 O SPC 110 2.715 18.729 6.229 1.00 0.00 O
597
+ ATOM 595 H1 SPC 110 2.720 17.982 5.564 1.00 0.00 H
598
+ ATOM 596 H2 SPC 110 3.101 19.551 5.809 1.00 0.00 H
599
+ ATOM 597 O SPC 111 22.878 13.880 3.901 1.00 0.00 O
600
+ ATOM 598 H1 SPC 111 22.413 13.612 4.744 1.00 0.00 H
601
+ ATOM 599 H2 SPC 111 23.839 14.073 4.097 1.00 0.00 H
602
+ ATOM 600 O SPC 112 3.617 5.961 5.521 1.00 0.00 O
603
+ ATOM 601 H1 SPC 112 4.024 5.242 6.085 1.00 0.00 H
604
+ ATOM 602 H2 SPC 112 3.974 6.850 5.806 1.00 0.00 H
605
+ ATOM 603 O SPC 113 24.422 7.751 13.389 1.00 0.00 O
606
+ ATOM 604 H1 SPC 113 24.196 7.067 12.695 1.00 0.00 H
607
+ ATOM 605 H2 SPC 113 23.723 8.466 13.391 1.00 0.00 H
608
+ ATOM 606 O SPC 114 26.430 10.947 16.146 1.00 0.00 O
609
+ ATOM 607 H1 SPC 114 27.224 11.000 16.752 1.00 0.00 H
610
+ ATOM 608 H2 SPC 114 25.809 10.234 16.472 1.00 0.00 H
611
+ ATOM 609 O SPC 115 1.049 18.552 11.161 1.00 0.00 O
612
+ ATOM 610 H1 SPC 115 1.110 18.823 10.200 1.00 0.00 H
613
+ ATOM 611 H2 SPC 115 1.603 17.734 11.314 1.00 0.00 H
614
+ ATOM 612 O SPC 116 3.005 1.298 18.698 1.00 0.00 O
615
+ ATOM 613 H1 SPC 116 3.534 2.125 18.510 1.00 0.00 H
616
+ ATOM 614 H2 SPC 116 2.763 1.270 19.668 1.00 0.00 H
617
+ ATOM 615 O SPC 117 26.598 10.908 12.079 1.00 0.00 O
618
+ ATOM 616 H1 SPC 117 25.918 11.051 12.798 1.00 0.00 H
619
+ ATOM 617 H2 SPC 117 27.516 10.953 12.474 1.00 0.00 H
620
+ ATOM 618 O SPC 118 23.342 3.752 18.667 1.00 0.00 O
621
+ ATOM 619 H1 SPC 118 24.175 4.251 18.430 1.00 0.00 H
622
+ ATOM 620 H2 SPC 118 22.682 4.381 19.077 1.00 0.00 H
623
+ ATOM 621 O SPC 119 3.517 17.630 16.643 1.00 0.00 O
624
+ ATOM 622 H1 SPC 119 4.514 17.693 16.598 1.00 0.00 H
625
+ ATOM 623 H2 SPC 119 3.192 18.074 17.478 1.00 0.00 H
626
+ ATOM 624 O SPC 120 25.214 1.462 18.547 1.00 0.00 O
627
+ ATOM 625 H1 SPC 120 25.228 1.684 17.572 1.00 0.00 H
628
+ ATOM 626 H2 SPC 120 24.535 2.033 19.009 1.00 0.00 H
629
+ ATOM 627 O SPC 121 0.544 13.127 7.849 1.00 0.00 O
630
+ ATOM 628 H1 SPC 121 -0.134 12.468 8.174 1.00 0.00 H
631
+ ATOM 629 H2 SPC 121 0.538 13.932 8.443 1.00 0.00 H
632
+ ATOM 630 O SPC 122 0.483 16.688 4.060 1.00 0.00 O
633
+ ATOM 631 H1 SPC 122 0.246 15.885 3.513 1.00 0.00 H
634
+ ATOM 632 H2 SPC 122 -0.018 16.663 4.925 1.00 0.00 H
635
+ ATOM 633 O SPC 123 2.700 7.033 8.371 1.00 0.00 O
636
+ ATOM 634 H1 SPC 123 3.508 7.041 8.961 1.00 0.00 H
637
+ ATOM 635 H2 SPC 123 2.819 6.348 7.652 1.00 0.00 H
638
+ ATOM 636 O SPC 124 25.601 5.623 10.942 1.00 0.00 O
639
+ ATOM 637 H1 SPC 124 26.518 5.406 10.607 1.00 0.00 H
640
+ ATOM 638 H2 SPC 124 25.335 4.958 11.640 1.00 0.00 H
641
+ ATOM 639 O SPC 125 2.679 1.302 2.905 1.00 0.00 O
642
+ ATOM 640 H1 SPC 125 3.629 1.006 3.005 1.00 0.00 H
643
+ ATOM 641 H2 SPC 125 2.476 2.007 3.584 1.00 0.00 H
644
+ ATOM 642 O SPC 126 2.840 16.317 12.099 1.00 0.00 O
645
+ ATOM 643 H1 SPC 126 3.113 15.972 12.997 1.00 0.00 H
646
+ ATOM 644 H2 SPC 126 2.173 15.693 11.691 1.00 0.00 H
647
+ ATOM 645 O SPC 127 1.342 6.630 4.320 1.00 0.00 O
648
+ ATOM 646 H1 SPC 127 0.648 6.245 4.929 1.00 0.00 H
649
+ ATOM 647 H2 SPC 127 2.225 6.647 4.789 1.00 0.00 H
650
+ ATOM 648 O SPC 128 25.243 5.398 2.478 1.00 0.00 O
651
+ ATOM 649 H1 SPC 128 26.163 5.688 2.741 1.00 0.00 H
652
+ ATOM 650 H2 SPC 128 25.119 5.533 1.495 1.00 0.00 H
653
+ ATOM 651 O SPC 129 4.116 2.589 9.891 1.00 0.00 O
654
+ ATOM 652 H1 SPC 129 3.309 2.104 9.553 1.00 0.00 H
655
+ ATOM 653 H2 SPC 129 3.897 3.033 10.760 1.00 0.00 H
656
+ ATOM 654 O SPC 130 26.607 18.699 14.735 1.00 0.00 O
657
+ ATOM 655 H1 SPC 130 27.554 19.008 14.834 1.00 0.00 H
658
+ ATOM 656 H2 SPC 130 26.597 17.762 14.385 1.00 0.00 H
659
+ ATOM 657 O SPC 131 26.372 12.684 2.074 1.00 0.00 O
660
+ ATOM 658 H1 SPC 131 26.893 13.385 1.587 1.00 0.00 H
661
+ ATOM 659 H2 SPC 131 25.527 12.491 1.576 1.00 0.00 H
662
+ ATOM 660 O SPC 132 23.812 14.967 7.121 1.00 0.00 O
663
+ ATOM 661 H1 SPC 132 24.197 15.006 6.198 1.00 0.00 H
664
+ ATOM 662 H2 SPC 132 23.813 15.884 7.521 1.00 0.00 H
665
+ ATOM 663 O SPC 133 2.108 12.809 18.973 1.00 0.00 O
666
+ ATOM 664 H1 SPC 133 1.942 13.016 18.009 1.00 0.00 H
667
+ ATOM 665 H2 SPC 133 3.015 13.141 19.234 1.00 0.00 H
668
+ ATOM 666 O SPC 134 0.682 14.342 11.973 1.00 0.00 O
669
+ ATOM 667 H1 SPC 134 1.014 13.536 12.464 1.00 0.00 H
670
+ ATOM 668 H2 SPC 134 -0.119 14.094 11.429 1.00 0.00 H
671
+ ATOM 669 O SPC 135 25.381 14.926 4.575 1.00 0.00 O
672
+ ATOM 670 H1 SPC 135 26.099 14.385 5.013 1.00 0.00 H
673
+ ATOM 671 H2 SPC 135 25.723 15.298 3.712 1.00 0.00 H
674
+ ATOM 672 O SPC 136 23.022 6.220 16.426 1.00 0.00 O
675
+ ATOM 673 H1 SPC 136 22.991 6.151 17.423 1.00 0.00 H
676
+ ATOM 674 H2 SPC 136 22.351 5.595 16.027 1.00 0.00 H
677
+ ATOM 675 O SPC 137 25.409 5.467 18.293 1.00 0.00 O
678
+ ATOM 676 H1 SPC 137 25.493 6.419 18.589 1.00 0.00 H
679
+ ATOM 677 H2 SPC 137 26.320 5.062 18.213 1.00 0.00 H
680
+ ATOM 678 O SPC 138 0.514 9.231 18.266 1.00 0.00 O
681
+ ATOM 679 H1 SPC 138 1.197 8.510 18.383 1.00 0.00 H
682
+ ATOM 680 H2 SPC 138 0.465 9.783 19.098 1.00 0.00 H
683
+ ATOM 681 O SPC 139 2.630 13.525 16.202 1.00 0.00 O
684
+ ATOM 682 H1 SPC 139 2.685 14.435 15.789 1.00 0.00 H
685
+ ATOM 683 H2 SPC 139 1.786 13.077 15.909 1.00 0.00 H
686
+ ATOM 684 O SPC 140 4.004 4.355 7.686 1.00 0.00 O
687
+ ATOM 685 H1 SPC 140 3.838 3.600 7.052 1.00 0.00 H
688
+ ATOM 686 H2 SPC 140 3.992 4.011 8.625 1.00 0.00 H
689
+ ATOM 687 O SPC 141 24.064 11.472 19.165 1.00 0.00 O
690
+ ATOM 688 H1 SPC 141 23.969 10.913 18.342 1.00 0.00 H
691
+ ATOM 689 H2 SPC 141 24.281 10.884 19.944 1.00 0.00 H
692
+ ATOM 690 O SPC 142 24.477 9.963 2.730 1.00 0.00 O
693
+ ATOM 691 H1 SPC 142 23.660 9.579 3.160 1.00 0.00 H
694
+ ATOM 692 H2 SPC 142 25.279 9.754 3.290 1.00 0.00 H
695
+ ATOM 693 O SPC 143 22.918 13.641 19.867 1.00 0.00 O
696
+ ATOM 694 H1 SPC 143 23.403 12.820 19.565 1.00 0.00 H
697
+ ATOM 695 H2 SPC 143 22.713 13.567 20.843 1.00 0.00 H
698
+ ATOM 696 O SPC 144 3.714 1.767 14.655 1.00 0.00 O
699
+ ATOM 697 H1 SPC 144 3.100 1.051 14.988 1.00 0.00 H
700
+ ATOM 698 H2 SPC 144 4.511 1.828 15.255 1.00 0.00 H
701
+ ATOM 699 O SPC 145 23.405 17.732 19.659 1.00 0.00 O
702
+ ATOM 700 H1 SPC 145 23.388 17.787 20.657 1.00 0.00 H
703
+ ATOM 701 H2 SPC 145 23.597 18.637 19.278 1.00 0.00 H
704
+ ATOM 702 O SPC 146 1.734 4.147 17.856 1.00 0.00 O
705
+ ATOM 703 H1 SPC 146 2.106 3.808 16.991 1.00 0.00 H
706
+ ATOM 704 H2 SPC 146 0.771 3.888 17.928 1.00 0.00 H
707
+ ATOM 705 O SPC 147 24.668 8.740 16.368 1.00 0.00 O
708
+ ATOM 706 H1 SPC 147 25.324 8.515 15.648 1.00 0.00 H
709
+ ATOM 707 H2 SPC 147 23.958 8.037 16.404 1.00 0.00 H
710
+ ATOM 708 O SPC 148 3.441 9.053 3.444 1.00 0.00 O
711
+ ATOM 709 H1 SPC 148 3.253 8.526 2.616 1.00 0.00 H
712
+ ATOM 710 H2 SPC 148 2.591 9.454 3.785 1.00 0.00 H
713
+ ATOM 711 O SPC 149 25.807 10.518 6.606 1.00 0.00 O
714
+ ATOM 712 H1 SPC 149 26.168 10.094 7.436 1.00 0.00 H
715
+ ATOM 713 H2 SPC 149 25.034 11.107 6.841 1.00 0.00 H
716
+ ATOM 714 O SPC 150 25.024 4.455 15.245 1.00 0.00 O
717
+ ATOM 715 H1 SPC 150 25.904 4.839 14.964 1.00 0.00 H
718
+ ATOM 716 H2 SPC 150 24.564 5.093 15.863 1.00 0.00 H
719
+ ATOM 717 O SPC 151 26.273 16.077 2.148 1.00 0.00 O
720
+ ATOM 718 H1 SPC 151 25.791 15.894 1.291 1.00 0.00 H
721
+ ATOM 719 H2 SPC 151 27.197 15.696 2.098 1.00 0.00 H
722
+ ATOM 720 O SPC 152 3.137 16.467 4.329 1.00 0.00 O
723
+ ATOM 721 H1 SPC 152 3.688 15.693 4.017 1.00 0.00 H
724
+ ATOM 722 H2 SPC 152 2.169 16.274 4.167 1.00 0.00 H
725
+ ATOM 723 O SPC 153 24.168 3.773 12.681 1.00 0.00 O
726
+ ATOM 724 H1 SPC 153 23.305 4.108 12.302 1.00 0.00 H
727
+ ATOM 725 H2 SPC 153 24.345 4.225 13.555 1.00 0.00 H
728
+ ATOM 726 O SPC 154 2.208 16.036 14.973 1.00 0.00 O
729
+ ATOM 727 H1 SPC 154 2.785 16.650 15.511 1.00 0.00 H
730
+ ATOM 728 H2 SPC 154 1.442 16.551 14.588 1.00 0.00 H
731
+ ATOM 729 O SPC 155 26.523 16.016 13.873 1.00 0.00 O
732
+ ATOM 730 H1 SPC 155 25.627 15.938 13.438 1.00 0.00 H
733
+ ATOM 731 H2 SPC 155 26.485 15.618 14.790 1.00 0.00 H
734
+ ATOM 732 O SPC 156 24.982 11.785 14.019 1.00 0.00 O
735
+ ATOM 733 H1 SPC 156 25.590 11.349 14.684 1.00 0.00 H
736
+ ATOM 734 H2 SPC 156 24.517 12.558 14.450 1.00 0.00 H
737
+ ATOM 735 O SPC 157 0.520 10.625 20.461 1.00 0.00 O
738
+ ATOM 736 H1 SPC 157 0.842 10.641 21.408 1.00 0.00 H
739
+ ATOM 737 H2 SPC 157 0.889 11.414 19.971 1.00 0.00 H
740
+ ATOM 738 O SPC 158 25.243 5.398 21.099 1.00 0.00 O
741
+ ATOM 739 H1 SPC 158 26.163 5.688 21.362 1.00 0.00 H
742
+ ATOM 740 H2 SPC 158 25.119 5.533 20.116 1.00 0.00 H
743
+ ATOM 741 O SPC 159 26.372 12.684 20.695 1.00 0.00 O
744
+ ATOM 742 H1 SPC 159 26.893 13.385 20.207 1.00 0.00 H
745
+ ATOM 743 H2 SPC 159 25.527 12.491 20.197 1.00 0.00 H
746
+ ATOM 744 O SPC 160 22.918 13.641 1.247 1.00 0.00 O
747
+ ATOM 745 H1 SPC 160 23.403 12.820 0.945 1.00 0.00 H
748
+ ATOM 746 H2 SPC 160 22.713 13.567 2.223 1.00 0.00 H
749
+ ATOM 747 O SPC 161 23.405 17.732 1.038 1.00 0.00 O
750
+ ATOM 748 H1 SPC 161 23.388 17.787 2.036 1.00 0.00 H
751
+ ATOM 749 H2 SPC 161 23.597 18.637 0.658 1.00 0.00 H
752
+ ATOM 750 O SPC 162 26.273 16.077 20.768 1.00 0.00 O
753
+ ATOM 751 H1 SPC 162 25.791 15.894 19.911 1.00 0.00 H
754
+ ATOM 752 H2 SPC 162 27.197 15.696 20.719 1.00 0.00 H
755
+ ENDMDL
gradio_molecule3d/LICENSE ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ Copyright 2023 Simon Dürr
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4
+
5
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6
+
7
+ THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
gradio_molecule3d/README.md ADDED
@@ -0,0 +1,438 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ tags: [gradio-custom-component, File]
3
+ title: gradio_molecule3d
4
+ short_description: A gradio custom component
5
+ colorFrom: blue
6
+ colorTo: yellow
7
+ sdk: gradio
8
+ pinned: false
9
+ app_file: space.py
10
+ ---
11
+
12
+ # `gradio_molecule3d`
13
+ <a href="https://pypi.org/project/gradio_molecule3d/" target="_blank"><img alt="PyPI - Version" src="https://img.shields.io/pypi/v/gradio_molecule3d"></a>
14
+
15
+ Python library for easily interacting with trained machine learning models
16
+
17
+ ## Installation
18
+
19
+ ```bash
20
+ pip install gradio_molecule3d
21
+ ```
22
+
23
+ ## Usage
24
+
25
+ ```python
26
+
27
+ import gradio as gr
28
+ from gradio_molecule3d import Molecule3D
29
+
30
+
31
+ example = Molecule3D().example_value()
32
+
33
+
34
+ reps = [
35
+ {
36
+ "model": 0,
37
+ "chain": "",
38
+ "resname": "",
39
+ "style": "cartoon",
40
+ "color": "hydrophobicity",
41
+ # "residue_range": "",
42
+ "around": 0,
43
+ "byres": False,
44
+ # "visible": False,
45
+ # "opacity": 0.5
46
+ }
47
+ ]
48
+
49
+
50
+
51
+ def predict(x):
52
+ print("predict function", x)
53
+ print(x.name)
54
+ return x
55
+
56
+ # def update_color(mol, color):
57
+ # reps[0]['color'] = color
58
+ # print(reps)
59
+ # return Molecule3D(mol, reps=reps)
60
+
61
+ with gr.Blocks() as demo:
62
+ gr.Markdown("# Molecule3D")
63
+ # color_choices = ['redCarbon', 'greenCarbon', 'orangeCarbon', 'blackCarbon', 'blueCarbon', 'grayCarbon', 'cyanCarbon']
64
+
65
+ inp = Molecule3D(label="Molecule3D", reps=reps)
66
+ # cdr_color = gr.Dropdown(choices=color_choices, label="CDR color", value='redCarbon')
67
+ out = Molecule3D(label="Output", reps=reps)
68
+ # cdr_color.change(update_color, inputs=[inp,cdr_color], outputs=out)
69
+ btn = gr.Button("Predict")
70
+ gr.Markdown("""
71
+ You can configure the default rendering of the molecule by adding a list of representations
72
+ <pre>
73
+ reps = [
74
+ {
75
+ "model": 0,
76
+ "style": "cartoon",
77
+ "color": "whiteCarbon",
78
+ "residue_range": "",
79
+ "around": 0,
80
+ "opacity":1
81
+
82
+ },
83
+ {
84
+ "model": 0,
85
+ "chain": "A",
86
+ "resname": "HIS",
87
+ "style": "stick",
88
+ "color": "red"
89
+ }
90
+ ]
91
+ </pre>
92
+ """)
93
+ btn.click(predict, inputs=inp, outputs=out)
94
+
95
+
96
+ if __name__ == "__main__":
97
+ demo.launch()
98
+
99
+ ```
100
+
101
+ ## `Molecule3D`
102
+
103
+ ### Initialization
104
+
105
+ <table>
106
+ <thead>
107
+ <tr>
108
+ <th align="left">name</th>
109
+ <th align="left" style="width: 25%;">type</th>
110
+ <th align="left">default</th>
111
+ <th align="left">description</th>
112
+ </tr>
113
+ </thead>
114
+ <tbody>
115
+ <tr>
116
+ <td align="left"><code>value</code></td>
117
+ <td align="left" style="width: 25%;">
118
+
119
+ ```python
120
+ str | list[str] | Callable | None
121
+ ```
122
+
123
+ </td>
124
+ <td align="left"><code>None</code></td>
125
+ <td align="left">Default file(s) to display, given as a str file path or URL, or a list of str file paths / URLs. If callable, the function will be called whenever the app loads to set the initial value of the component.</td>
126
+ </tr>
127
+
128
+ <tr>
129
+ <td align="left"><code>reps</code></td>
130
+ <td align="left" style="width: 25%;">
131
+
132
+ ```python
133
+ Any | None
134
+ ```
135
+
136
+ </td>
137
+ <td align="left"><code>[]</code></td>
138
+ <td align="left">None</td>
139
+ </tr>
140
+
141
+ <tr>
142
+ <td align="left"><code>config</code></td>
143
+ <td align="left" style="width: 25%;">
144
+
145
+ ```python
146
+ Any | None
147
+ ```
148
+
149
+ </td>
150
+ <td align="left"><code>{
151
+ "backgroundColor": "white",
152
+ "orthographic": False,
153
+ "disableFog": False,
154
+ "unitCell": True,
155
+ }</code></td>
156
+ <td align="left">dictionary of config options</td>
157
+ </tr>
158
+
159
+ <tr>
160
+ <td align="left"><code>confidenceLabel</code></td>
161
+ <td align="left" style="width: 25%;">
162
+
163
+ ```python
164
+ str | None
165
+ ```
166
+
167
+ </td>
168
+ <td align="left"><code>"pLDDT"</code></td>
169
+ <td align="left">label for confidence values stored in the bfactor column of a pdb file</td>
170
+ </tr>
171
+
172
+ <tr>
173
+ <td align="left"><code>file_count</code></td>
174
+ <td align="left" style="width: 25%;">
175
+
176
+ ```python
177
+ Literal["single", "multiple", "directory"]
178
+ ```
179
+
180
+ </td>
181
+ <td align="left"><code>"single"</code></td>
182
+ <td align="left">if single, allows user to upload one file. If "multiple", user uploads multiple files. If "directory", user uploads all files in selected directory. Return type will be list for each file in case of "multiple" or "directory".</td>
183
+ </tr>
184
+
185
+ <tr>
186
+ <td align="left"><code>file_types</code></td>
187
+ <td align="left" style="width: 25%;">
188
+
189
+ ```python
190
+ list[str] | None
191
+ ```
192
+
193
+ </td>
194
+ <td align="left"><code>None</code></td>
195
+ <td align="left">List of file extensions or types of files to be uploaded (e.g. ['image', '.json', '.mp4']). "file" allows any file to be uploaded, "image" allows only image files to be uploaded, "audio" allows only audio files to be uploaded, "video" allows only video files to be uploaded, "text" allows only text files to be uploaded.</td>
196
+ </tr>
197
+
198
+ <tr>
199
+ <td align="left"><code>type</code></td>
200
+ <td align="left" style="width: 25%;">
201
+
202
+ ```python
203
+ Literal["filepath", "binary"]
204
+ ```
205
+
206
+ </td>
207
+ <td align="left"><code>"filepath"</code></td>
208
+ <td align="left">Type of value to be returned by component. "file" returns a temporary file object with the same base name as the uploaded file, whose full path can be retrieved by file_obj.name, "binary" returns an bytes object.</td>
209
+ </tr>
210
+
211
+ <tr>
212
+ <td align="left"><code>label</code></td>
213
+ <td align="left" style="width: 25%;">
214
+
215
+ ```python
216
+ str | None
217
+ ```
218
+
219
+ </td>
220
+ <td align="left"><code>None</code></td>
221
+ <td align="left">The label for this component. Appears above the component and is also used as the header if there are a table of examples for this component. If None and used in a `gr.Interface`, the label will be the name of the parameter this component is assigned to.</td>
222
+ </tr>
223
+
224
+ <tr>
225
+ <td align="left"><code>every</code></td>
226
+ <td align="left" style="width: 25%;">
227
+
228
+ ```python
229
+ Timer | float | None
230
+ ```
231
+
232
+ </td>
233
+ <td align="left"><code>None</code></td>
234
+ <td align="left">Continously calls `value` to recalculate it if `value` is a function (has no effect otherwise). Can provide a Timer whose tick resets `value`, or a float that provides the regular interval for the reset Timer.</td>
235
+ </tr>
236
+
237
+ <tr>
238
+ <td align="left"><code>inputs</code></td>
239
+ <td align="left" style="width: 25%;">
240
+
241
+ ```python
242
+ Component | Sequence[Component] | set[Component] | None
243
+ ```
244
+
245
+ </td>
246
+ <td align="left"><code>None</code></td>
247
+ <td align="left">Components that are used as inputs to calculate `value` if `value` is a function (has no effect otherwise). `value` is recalculated any time the inputs change.</td>
248
+ </tr>
249
+
250
+ <tr>
251
+ <td align="left"><code>show_label</code></td>
252
+ <td align="left" style="width: 25%;">
253
+
254
+ ```python
255
+ bool | None
256
+ ```
257
+
258
+ </td>
259
+ <td align="left"><code>None</code></td>
260
+ <td align="left">if True, will display label.</td>
261
+ </tr>
262
+
263
+ <tr>
264
+ <td align="left"><code>container</code></td>
265
+ <td align="left" style="width: 25%;">
266
+
267
+ ```python
268
+ bool
269
+ ```
270
+
271
+ </td>
272
+ <td align="left"><code>True</code></td>
273
+ <td align="left">If True, will place the component in a container - providing some extra padding around the border.</td>
274
+ </tr>
275
+
276
+ <tr>
277
+ <td align="left"><code>scale</code></td>
278
+ <td align="left" style="width: 25%;">
279
+
280
+ ```python
281
+ int | None
282
+ ```
283
+
284
+ </td>
285
+ <td align="left"><code>None</code></td>
286
+ <td align="left">relative size compared to adjacent Components. For example if Components A and B are in a Row, and A has scale=2, and B has scale=1, A will be twice as wide as B. Should be an integer. scale applies in Rows, and to top-level Components in Blocks where fill_height=True.</td>
287
+ </tr>
288
+
289
+ <tr>
290
+ <td align="left"><code>min_width</code></td>
291
+ <td align="left" style="width: 25%;">
292
+
293
+ ```python
294
+ int
295
+ ```
296
+
297
+ </td>
298
+ <td align="left"><code>160</code></td>
299
+ <td align="left">minimum pixel width, will wrap if not sufficient screen space to satisfy this value. If a certain scale value results in this Component being narrower than min_width, the min_width parameter will be respected first.</td>
300
+ </tr>
301
+
302
+ <tr>
303
+ <td align="left"><code>height</code></td>
304
+ <td align="left" style="width: 25%;">
305
+
306
+ ```python
307
+ int | float | None
308
+ ```
309
+
310
+ </td>
311
+ <td align="left"><code>None</code></td>
312
+ <td align="left">The maximum height of the file component, specified in pixels if a number is passed, or in CSS units if a string is passed. If more files are uploaded than can fit in the height, a scrollbar will appear.</td>
313
+ </tr>
314
+
315
+ <tr>
316
+ <td align="left"><code>interactive</code></td>
317
+ <td align="left" style="width: 25%;">
318
+
319
+ ```python
320
+ bool | None
321
+ ```
322
+
323
+ </td>
324
+ <td align="left"><code>None</code></td>
325
+ <td align="left">if True, will allow users to upload a file; if False, can only be used to display files. If not provided, this is inferred based on whether the component is used as an input or output.</td>
326
+ </tr>
327
+
328
+ <tr>
329
+ <td align="left"><code>visible</code></td>
330
+ <td align="left" style="width: 25%;">
331
+
332
+ ```python
333
+ bool
334
+ ```
335
+
336
+ </td>
337
+ <td align="left"><code>True</code></td>
338
+ <td align="left">If False, component will be hidden.</td>
339
+ </tr>
340
+
341
+ <tr>
342
+ <td align="left"><code>elem_id</code></td>
343
+ <td align="left" style="width: 25%;">
344
+
345
+ ```python
346
+ str | None
347
+ ```
348
+
349
+ </td>
350
+ <td align="left"><code>None</code></td>
351
+ <td align="left">An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles.</td>
352
+ </tr>
353
+
354
+ <tr>
355
+ <td align="left"><code>elem_classes</code></td>
356
+ <td align="left" style="width: 25%;">
357
+
358
+ ```python
359
+ list[str] | str | None
360
+ ```
361
+
362
+ </td>
363
+ <td align="left"><code>None</code></td>
364
+ <td align="left">An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles.</td>
365
+ </tr>
366
+
367
+ <tr>
368
+ <td align="left"><code>render</code></td>
369
+ <td align="left" style="width: 25%;">
370
+
371
+ ```python
372
+ bool
373
+ ```
374
+
375
+ </td>
376
+ <td align="left"><code>True</code></td>
377
+ <td align="left">If False, component will not render be rendered in the Blocks context. Should be used if the intention is to assign event listeners now but render the component later.</td>
378
+ </tr>
379
+
380
+ <tr>
381
+ <td align="left"><code>key</code></td>
382
+ <td align="left" style="width: 25%;">
383
+
384
+ ```python
385
+ int | str | None
386
+ ```
387
+
388
+ </td>
389
+ <td align="left"><code>None</code></td>
390
+ <td align="left">if assigned, will be used to assume identity across a re-render. Components that have the same key across a re-render will have their value preserved.</td>
391
+ </tr>
392
+
393
+ <tr>
394
+ <td align="left"><code>showviewer</code></td>
395
+ <td align="left" style="width: 25%;">
396
+
397
+ ```python
398
+ bool
399
+ ```
400
+
401
+ </td>
402
+ <td align="left"><code>True</code></td>
403
+ <td align="left">If True, will display the 3Dmol.js viewer. If False, will not display the 3Dmol.js viewer.</td>
404
+ </tr>
405
+ </tbody></table>
406
+
407
+
408
+ ### Events
409
+
410
+ | name | description |
411
+ |:-----|:------------|
412
+ | `change` | Triggered when the value of the Molecule3D changes either because of user input (e.g. a user types in a textbox) OR because of a function update (e.g. an image receives a value from the output of an event trigger). See `.input()` for a listener that is only triggered by user input. |
413
+ | `select` | Event listener for when the user selects or deselects the Molecule3D. Uses event data gradio.SelectData to carry `value` referring to the label of the Molecule3D, and `selected` to refer to state of the Molecule3D. See EventData documentation on how to use this event data |
414
+ | `clear` | This listener is triggered when the user clears the Molecule3D using the clear button for the component. |
415
+ | `upload` | This listener is triggered when the user uploads a file into the Molecule3D. |
416
+ | `delete` | This listener is triggered when the user deletes and item from the Molecule3D. Uses event data gradio.DeletedFileData to carry `value` referring to the file that was deleted as an instance of FileData. See EventData documentation on how to use this event data |
417
+
418
+
419
+
420
+ ### User function
421
+
422
+ The impact on the users predict function varies depending on whether the component is used as an input or output for an event (or both).
423
+
424
+ - When used as an Input, the component only impacts the input signature of the user function.
425
+ - When used as an output, the component only impacts the return signature of the user function.
426
+
427
+ The code snippet below is accurate in cases where the component is used as both an input and an output.
428
+
429
+ - **As output:** Is passed, passes the file as a `str` or `bytes` object, or a list of `str` or list of `bytes` objects, depending on `type` and `file_count`.
430
+ - **As input:** Should return, expects a `str` filepath or URL, or a `list[str]` of filepaths/URLs.
431
+
432
+ ```python
433
+ def predict(
434
+ value: bytes | str | list[bytes] | list[str] | None
435
+ ) -> str | list[str] | None:
436
+ return value
437
+ ```
438
+
gradio_molecule3d/backend/gradio_molecule3d/__init__.py ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+
2
+ from .molecule3d import Molecule3D
3
+
4
+ __all__ = ['Molecule3D']
gradio_molecule3d/backend/gradio_molecule3d/molecule3d.py ADDED
@@ -0,0 +1,352 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """gr.File() component"""
2
+
3
+ from __future__ import annotations
4
+
5
+ import tempfile
6
+ import warnings
7
+ from pathlib import Path
8
+ from typing import TYPE_CHECKING, Any, Callable, Literal, Sequence
9
+
10
+ import gradio_client.utils as client_utils
11
+ from gradio_client import handle_file
12
+ from gradio_client.documentation import document
13
+
14
+ from gradio import processing_utils
15
+ from gradio.components.base import Component
16
+ from gradio.data_classes import FileData, ListFiles
17
+ from gradio.events import Events
18
+ from gradio.utils import NamedString
19
+ import ase.io
20
+ import numpy as np
21
+
22
+ if TYPE_CHECKING:
23
+ from gradio.components import Timer
24
+
25
+
26
+ def write_proteindatabank(fileobj, images, write_arrays=True):
27
+ """Write images to PDB-file.
28
+ From ASE, but edited to not use the upper-case element symbols.
29
+ """
30
+ rot_t = None
31
+ if hasattr(images, 'get_positions'):
32
+ images = [images]
33
+
34
+ # 1234567 123 6789012345678901 89 67 456789012345678901234567 890
35
+ format = ('ATOM %5d %4s %4s %4d %8.3f%8.3f%8.3f%6.2f%6.2f'
36
+ ' %2s \n')
37
+
38
+ # RasMol complains if the atom index exceeds 100000. There might
39
+ # be a limit of 5 digit numbers in this field.
40
+ MAXNUM = 100000
41
+
42
+ symbols = images[0].get_chemical_symbols()
43
+ natoms = len(symbols)
44
+
45
+ for n, atoms in enumerate(images):
46
+ if atoms.get_pbc().any():
47
+ currentcell = atoms.get_cell()
48
+ cellpar = currentcell.cellpar()
49
+ _, rot_t = currentcell.standard_form()
50
+ # ignoring Z-value, using P1 since we have all atoms defined
51
+ # explicitly
52
+ cellformat = 'CRYST1%9.3f%9.3f%9.3f%7.2f%7.2f%7.2f P 1\n'
53
+ fileobj.write(cellformat % (cellpar[0], cellpar[1], cellpar[2],
54
+ cellpar[3], cellpar[4], cellpar[5]))
55
+ fileobj.write('MODEL ' + str(n + 1) + '\n')
56
+ p = atoms.get_positions()
57
+ if rot_t is not None:
58
+ p = p.dot(rot_t.T)
59
+ occupancy = np.ones(len(atoms))
60
+ bfactor = np.zeros(len(atoms))
61
+ residuenames = ['MOL '] * len(atoms)
62
+ residuenumbers = np.ones(len(atoms))
63
+ names = atoms.get_chemical_symbols()
64
+ if write_arrays:
65
+ if 'occupancy' in atoms.arrays:
66
+ occupancy = atoms.get_array('occupancy')
67
+ if 'bfactor' in atoms.arrays:
68
+ bfactor = atoms.get_array('bfactor')
69
+ if 'residuenames' in atoms.arrays:
70
+ residuenames = atoms.get_array('residuenames')
71
+ if 'residuenumbers' in atoms.arrays:
72
+ residuenumbers = atoms.get_array('residuenumbers')
73
+ if 'atomtypes' in atoms.arrays:
74
+ names = atoms.get_array('atomtypes')
75
+ for a in range(natoms):
76
+ x, y, z = p[a]
77
+ occ = occupancy[a]
78
+ bf = bfactor[a]
79
+ resname = residuenames[a].ljust(4)
80
+ resseq = residuenumbers[a]
81
+ name = names[a]
82
+ fileobj.write(format % ((a + 1) % MAXNUM, name, resname, resseq,
83
+ x, y, z, occ, bf, symbols[a]))
84
+ fileobj.write('ENDMDL\n')
85
+
86
+ def find_minimum_repeats(atoms, min_length):
87
+ """
88
+ Find the minimum number of repeats in each unit cell direction
89
+ to meet at least `min_length` angstroms.
90
+
91
+ Parameters:
92
+ atoms (ase.Atoms): The ASE Atoms object.
93
+ min_length (float): The minimum length required in each direction.
94
+
95
+ Returns:
96
+ tuple: A tuple of integers representing the number of repeats
97
+ in the x, y, and z directions.
98
+ """
99
+ cell_lengths = atoms.get_cell().lengths() # Get the lengths of the unit cell
100
+ repeats = [max(1, int(np.ceil(min_length / length))) for length in cell_lengths]
101
+ return tuple(repeats)
102
+
103
+ def convert_file_to_pdb(file_path: str | Path, gradio_cache: str | Path) -> str:
104
+ # Read the file using ASE, and convert even if it's pdb to make sure all elements go lower case
105
+ structures = ase.io.read(file_path, ':')
106
+
107
+ if all(structures[0].pbc):
108
+ # find the minimum number of repeats in each unit cell direction to meet at least 20 angstroms
109
+ repeats = find_minimum_repeats(structures[0], min_length=15.0)
110
+
111
+ structures = [s.repeat(repeats) if all(s.pbc) else s for s in structures]
112
+
113
+ # Create a temporary PDB file
114
+ with tempfile.NamedTemporaryFile(
115
+ delete=False, dir=gradio_cache, suffix=".pdb", mode='w',
116
+ ) as temp_pdb_file:
117
+ write_proteindatabank(temp_pdb_file, structures)
118
+ file_name = temp_pdb_file.name
119
+ return file_name
120
+
121
+
122
+ class Molecule3D(Component):
123
+ """
124
+ Creates a file component that allows uploading one or more generic files (when used as an input) or displaying generic files or URLs for download (as output).
125
+
126
+ Demo: zip_files, zip_to_json
127
+ """
128
+
129
+ EVENTS = [Events.change, Events.select, Events.clear, Events.upload, Events.delete]
130
+
131
+ def __init__(
132
+ self,
133
+ value: str | list[str] | Callable | None = None,
134
+ reps: Any | None = [],
135
+ config: Any | None = {
136
+ "backgroundColor": "white",
137
+ "orthographic": False,
138
+ "disableFog": False,
139
+ },
140
+ confidenceLabel: str | None = "pLDDT",
141
+ *,
142
+ file_count: Literal["single", "multiple", "directory"] = "single",
143
+ file_types: list[str] | None = None,
144
+ type: Literal["filepath", "binary"] = "filepath",
145
+ label: str | None = None,
146
+ every: Timer | float | None = None,
147
+ inputs: Component | Sequence[Component] | set[Component] | None = None,
148
+ show_label: bool | None = None,
149
+ container: bool = True,
150
+ scale: int | None = None,
151
+ min_width: int = 160,
152
+ height: int | float | None = None,
153
+ interactive: bool | None = None,
154
+ visible: bool = True,
155
+ elem_id: str | None = None,
156
+ elem_classes: list[str] | str | None = None,
157
+ render: bool = True,
158
+ key: int | str | None = None,
159
+ showviewer: bool = True
160
+ ):
161
+ """
162
+ Parameters:
163
+ value: Default file(s) to display, given as a str file path or URL, or a list of str file paths / URLs. If callable, the function will be called whenever the app loads to set the initial value of the component.
164
+ file_count: if single, allows user to upload one file. If "multiple", user uploads multiple files. If "directory", user uploads all files in selected directory. Return type will be list for each file in case of "multiple" or "directory".
165
+ file_types: List of file extensions or types of files to be uploaded (e.g. ['image', '.json', '.mp4']). "file" allows any file to be uploaded, "image" allows only image files to be uploaded, "audio" allows only audio files to be uploaded, "video" allows only video files to be uploaded, "text" allows only text files to be uploaded.
166
+ representations: list of representation objects
167
+ config: dictionary of config options
168
+ confidenceLabel: label for confidence values stored in the bfactor column of a pdb file
169
+ type: Type of value to be returned by component. "file" returns a temporary file object with the same base name as the uploaded file, whose full path can be retrieved by file_obj.name, "binary" returns an bytes object.
170
+ label: The label for this component. Appears above the component and is also used as the header if there are a table of examples for this component. If None and used in a `gr.Interface`, the label will be the name of the parameter this component is assigned to.
171
+ every: Continously calls `value` to recalculate it if `value` is a function (has no effect otherwise). Can provide a Timer whose tick resets `value`, or a float that provides the regular interval for the reset Timer.
172
+ inputs: Components that are used as inputs to calculate `value` if `value` is a function (has no effect otherwise). `value` is recalculated any time the inputs change.
173
+ show_label: if True, will display label.
174
+ container: If True, will place the component in a container - providing some extra padding around the border.
175
+ scale: relative size compared to adjacent Components. For example if Components A and B are in a Row, and A has scale=2, and B has scale=1, A will be twice as wide as B. Should be an integer. scale applies in Rows, and to top-level Components in Blocks where fill_height=True.
176
+ min_width: minimum pixel width, will wrap if not sufficient screen space to satisfy this value. If a certain scale value results in this Component being narrower than min_width, the min_width parameter will be respected first.
177
+ height: The maximum height of the file component, specified in pixels if a number is passed, or in CSS units if a string is passed. If more files are uploaded than can fit in the height, a scrollbar will appear.
178
+ interactive: if True, will allow users to upload a file; if False, can only be used to display files. If not provided, this is inferred based on whether the component is used as an input or output.
179
+ visible: If False, component will be hidden.
180
+ elem_id: An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles.
181
+ elem_classes: An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles.
182
+ render: If False, component will not render be rendered in the Blocks context. Should be used if the intention is to assign event listeners now but render the component later.
183
+ key: if assigned, will be used to assume identity across a re-render. Components that have the same key across a re-render will have their value preserved.
184
+ showviewer: If True, will display the 3Dmol.js viewer. If False, will not display the 3Dmol.js viewer.
185
+ """
186
+ file_count_valid_types = ["single", "multiple", "directory"]
187
+ self.file_count = file_count
188
+
189
+ if self.file_count not in file_count_valid_types:
190
+ raise ValueError(
191
+ f"Parameter file_count must be one of them: {file_count_valid_types}"
192
+ )
193
+ elif self.file_count in ["multiple", "directory"]:
194
+ self.data_model = ListFiles
195
+ else:
196
+ self.data_model = FileData
197
+ self.file_types = file_types
198
+ if file_types is not None and not isinstance(file_types, list):
199
+ raise ValueError(
200
+ f"Parameter file_types must be a list. Received {file_types.__class__.__name__}"
201
+ )
202
+ valid_types = [
203
+ "filepath",
204
+ "binary",
205
+ ]
206
+ if type not in valid_types:
207
+ raise ValueError(
208
+ f"Invalid value for parameter `type`: {type}. Please choose from one of: {valid_types}"
209
+ )
210
+ if file_count == "directory" and file_types is not None:
211
+ warnings.warn(
212
+ "The `file_types` parameter is ignored when `file_count` is 'directory'."
213
+ )
214
+ super().__init__(
215
+ label=label,
216
+ every=every,
217
+ inputs=inputs,
218
+ show_label=show_label,
219
+ container=container,
220
+ scale=scale,
221
+ min_width=min_width,
222
+ interactive=interactive,
223
+ visible=visible,
224
+ elem_id=elem_id,
225
+ elem_classes=elem_classes,
226
+ render=render,
227
+ key=key,
228
+ value=value,
229
+ )
230
+ self.type = type
231
+ self.height = height
232
+ self.reps = reps
233
+ self.config = config
234
+ self.confidenceLabel = confidenceLabel
235
+ self.showviewer = showviewer
236
+
237
+ def _process_single_file(self, f: FileData) -> NamedString | bytes:
238
+ file_name = f.path
239
+
240
+ file_name = convert_file_to_pdb(file_name, self.GRADIO_CACHE)
241
+
242
+ if self.type == "filepath":
243
+ return NamedString(file_name)
244
+ elif self.type == "binary":
245
+ with open(file_name, "rb") as file_data:
246
+ return file_data.read()
247
+ else:
248
+ raise ValueError(
249
+ "Unknown type: "
250
+ + str(type)
251
+ + ". Please choose from: 'filepath', 'binary'."
252
+ )
253
+
254
+ def preprocess(
255
+ self, payload: ListFiles | FileData | None
256
+ ) -> bytes | str | list[bytes] | list[str] | None:
257
+ """
258
+ Parameters:
259
+ payload: molecule3d information as a FileData object, or a list of FileData objects.
260
+ Returns:
261
+ Passes the file as a `str` or `bytes` object, or a list of `str` or list of `bytes` objects, depending on `type` and `file_count`.
262
+ """
263
+ if payload is None:
264
+ return None
265
+
266
+ if self.file_count == "single":
267
+ if isinstance(payload, ListFiles):
268
+ return self._process_single_file(payload[0])
269
+ return self._process_single_file(payload)
270
+ if isinstance(payload, ListFiles):
271
+ return [self._process_single_file(f) for f in payload] # type: ignore
272
+ return [self._process_single_file(payload)] # type: ignore
273
+
274
+ def _download_files(self, value: str | list[str]) -> str | list[str]:
275
+ downloaded_files = []
276
+ if isinstance(value, list):
277
+ for file in value:
278
+ if client_utils.is_http_url_like(file):
279
+ downloaded_file = processing_utils.save_url_to_cache(
280
+ file, self.GRADIO_CACHE
281
+ )
282
+ downloaded_files.append(downloaded_file)
283
+ else:
284
+ downloaded_files.append(file)
285
+ return downloaded_files
286
+ if client_utils.is_http_url_like(value):
287
+ downloaded_file = processing_utils.save_url_to_cache(
288
+ value, self.GRADIO_CACHE
289
+ )
290
+ return downloaded_file
291
+ else:
292
+ return value
293
+
294
+ def postprocess(self, value: str | list[str] | None) -> ListFiles | FileData | None:
295
+ """
296
+ Parameters:
297
+ value: Expects a `str` filepath or URL, or a `list[str]` of filepaths/URLs.
298
+ Returns:
299
+ molecule3d information as a FileData object, or a list of FileData objects.
300
+ """
301
+ if value is None:
302
+ return None
303
+ value = self._download_files(value)
304
+
305
+
306
+ if isinstance(value, list):
307
+ value = [convert_file_to_pdb(str(path), self.GRADIO_CACHE) for path in value]
308
+ return ListFiles(
309
+ root=[
310
+ FileData(
311
+ path=file,
312
+ orig_name=Path(file).name,
313
+ size=Path(file).stat().st_size,
314
+ )
315
+ for file in value
316
+ ]
317
+ )
318
+ else:
319
+ value = convert_file_to_pdb(str(value), self.GRADIO_CACHE)
320
+ return FileData(
321
+ path=value,
322
+ orig_name=Path(value).name,
323
+ size=Path(value).stat().st_size,
324
+ )
325
+
326
+ def process_example(self, value: str | list | None) -> str:
327
+ if value is None:
328
+ return ""
329
+ elif isinstance(value, list):
330
+ return ", ".join([Path(file).name for file in value])
331
+ else:
332
+ return Path(value).name
333
+
334
+ def example_payload(self) -> Any:
335
+ if self.file_count == "single":
336
+ return handle_file(
337
+ "https://files.rcsb.org/view/1PGA.pdb"
338
+ )
339
+ else:
340
+ return [
341
+ handle_file(
342
+ "https://files.rcsb.org/view/1PGA.pdb"
343
+ )
344
+ ]
345
+
346
+ def example_value(self) -> Any:
347
+ if self.file_count == "single":
348
+ return "https://files.rcsb.org/view/1PGA.pdb"
349
+ else:
350
+ return [
351
+ "https://files.rcsb.org/view/1PGA.pdb"
352
+ ]
gradio_molecule3d/demo/__init__.py ADDED
File without changes
gradio_molecule3d/demo/app.py ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ import gradio as gr
3
+ from gradio_molecule3d import Molecule3D
4
+
5
+
6
+ example = Molecule3D().example_value()
7
+
8
+
9
+ reps = [
10
+ {
11
+ "model": 0,
12
+ "chain": "",
13
+ "resname": "",
14
+ "style": "cartoon",
15
+ "color": "hydrophobicity",
16
+ # "residue_range": "",
17
+ "around": 0,
18
+ "byres": False,
19
+ # "visible": False,
20
+ # "opacity": 0.5
21
+ }
22
+ ]
23
+
24
+
25
+
26
+ def predict(x):
27
+ print("predict function", x)
28
+ print(x.name)
29
+ return x
30
+
31
+ # def update_color(mol, color):
32
+ # reps[0]['color'] = color
33
+ # print(reps)
34
+ # return Molecule3D(mol, reps=reps)
35
+
36
+ with gr.Blocks() as demo:
37
+ gr.Markdown("# Molecule3D")
38
+ # color_choices = ['redCarbon', 'greenCarbon', 'orangeCarbon', 'blackCarbon', 'blueCarbon', 'grayCarbon', 'cyanCarbon']
39
+
40
+ inp = Molecule3D(label="Molecule3D", reps=reps)
41
+ # cdr_color = gr.Dropdown(choices=color_choices, label="CDR color", value='redCarbon')
42
+ out = Molecule3D(label="Output", reps=reps)
43
+ # cdr_color.change(update_color, inputs=[inp,cdr_color], outputs=out)
44
+ btn = gr.Button("Predict")
45
+ gr.Markdown("""
46
+ You can configure the default rendering of the molecule by adding a list of representations
47
+ <pre>
48
+ reps = [
49
+ {
50
+ "model": 0,
51
+ "style": "cartoon",
52
+ "color": "whiteCarbon",
53
+ "residue_range": "",
54
+ "around": 0,
55
+ "opacity":1
56
+
57
+ },
58
+ {
59
+ "model": 0,
60
+ "chain": "A",
61
+ "resname": "HIS",
62
+ "style": "stick",
63
+ "color": "red"
64
+ }
65
+ ]
66
+ </pre>
67
+ """)
68
+ btn.click(predict, inputs=inp, outputs=out)
69
+
70
+
71
+ if __name__ == "__main__":
72
+ demo.launch()
gradio_molecule3d/demo/css.css ADDED
@@ -0,0 +1,157 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ html {
2
+ font-family: Inter;
3
+ font-size: 16px;
4
+ font-weight: 400;
5
+ line-height: 1.5;
6
+ -webkit-text-size-adjust: 100%;
7
+ background: #fff;
8
+ color: #323232;
9
+ -webkit-font-smoothing: antialiased;
10
+ -moz-osx-font-smoothing: grayscale;
11
+ text-rendering: optimizeLegibility;
12
+ }
13
+
14
+ :root {
15
+ --space: 1;
16
+ --vspace: calc(var(--space) * 1rem);
17
+ --vspace-0: calc(3 * var(--space) * 1rem);
18
+ --vspace-1: calc(2 * var(--space) * 1rem);
19
+ --vspace-2: calc(1.5 * var(--space) * 1rem);
20
+ --vspace-3: calc(0.5 * var(--space) * 1rem);
21
+ }
22
+
23
+ .app {
24
+ max-width: 748px !important;
25
+ }
26
+
27
+ .prose p {
28
+ margin: var(--vspace) 0;
29
+ line-height: var(--vspace * 2);
30
+ font-size: 1rem;
31
+ }
32
+
33
+ code {
34
+ font-family: "Inconsolata", sans-serif;
35
+ font-size: 16px;
36
+ }
37
+
38
+ h1,
39
+ h1 code {
40
+ font-weight: 400;
41
+ line-height: calc(2.5 / var(--space) * var(--vspace));
42
+ }
43
+
44
+ h1 code {
45
+ background: none;
46
+ border: none;
47
+ letter-spacing: 0.05em;
48
+ padding-bottom: 5px;
49
+ position: relative;
50
+ padding: 0;
51
+ }
52
+
53
+ h2 {
54
+ margin: var(--vspace-1) 0 var(--vspace-2) 0;
55
+ line-height: 1em;
56
+ }
57
+
58
+ h3,
59
+ h3 code {
60
+ margin: var(--vspace-1) 0 var(--vspace-2) 0;
61
+ line-height: 1em;
62
+ }
63
+
64
+ h4,
65
+ h5,
66
+ h6 {
67
+ margin: var(--vspace-3) 0 var(--vspace-3) 0;
68
+ line-height: var(--vspace);
69
+ }
70
+
71
+ .bigtitle,
72
+ h1,
73
+ h1 code {
74
+ font-size: calc(8px * 4.5);
75
+ word-break: break-word;
76
+ }
77
+
78
+ .title,
79
+ h2,
80
+ h2 code {
81
+ font-size: calc(8px * 3.375);
82
+ font-weight: lighter;
83
+ word-break: break-word;
84
+ border: none;
85
+ background: none;
86
+ }
87
+
88
+ .subheading1,
89
+ h3,
90
+ h3 code {
91
+ font-size: calc(8px * 1.8);
92
+ font-weight: 600;
93
+ border: none;
94
+ background: none;
95
+ letter-spacing: 0.1em;
96
+ text-transform: uppercase;
97
+ }
98
+
99
+ h2 code {
100
+ padding: 0;
101
+ position: relative;
102
+ letter-spacing: 0.05em;
103
+ }
104
+
105
+ blockquote {
106
+ font-size: calc(8px * 1.1667);
107
+ font-style: italic;
108
+ line-height: calc(1.1667 * var(--vspace));
109
+ margin: var(--vspace-2) var(--vspace-2);
110
+ }
111
+
112
+ .subheading2,
113
+ h4 {
114
+ font-size: calc(8px * 1.4292);
115
+ text-transform: uppercase;
116
+ font-weight: 600;
117
+ }
118
+
119
+ .subheading3,
120
+ h5 {
121
+ font-size: calc(8px * 1.2917);
122
+ line-height: calc(1.2917 * var(--vspace));
123
+
124
+ font-weight: lighter;
125
+ text-transform: uppercase;
126
+ letter-spacing: 0.15em;
127
+ }
128
+
129
+ h6 {
130
+ font-size: calc(8px * 1.1667);
131
+ font-size: 1.1667em;
132
+ font-weight: normal;
133
+ font-style: italic;
134
+ font-family: "le-monde-livre-classic-byol", serif !important;
135
+ letter-spacing: 0px !important;
136
+ }
137
+
138
+ #start .md > *:first-child {
139
+ margin-top: 0;
140
+ }
141
+
142
+ h2 + h3 {
143
+ margin-top: 0;
144
+ }
145
+
146
+ .md hr {
147
+ border: none;
148
+ border-top: 1px solid var(--block-border-color);
149
+ margin: var(--vspace-2) 0 var(--vspace-2) 0;
150
+ }
151
+ .prose ul {
152
+ margin: var(--vspace-2) 0 var(--vspace-1) 0;
153
+ }
154
+
155
+ .gap {
156
+ gap: 0;
157
+ }
gradio_molecule3d/demo/requirements.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ gradio_molecule3d
gradio_molecule3d/frontend/Example.svelte ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <script lang="ts">
2
+ import type { FileData } from "@gradio/client";
3
+
4
+ export let value: FileData | null;
5
+ export let type: "gallery" | "table";
6
+ export let selected = false;
7
+ </script>
8
+
9
+ <div
10
+ class:table={type === "table"}
11
+ class:gallery={type === "gallery"}
12
+ class:selected
13
+ >
14
+ {value ? (Array.isArray(value) ? value.join(", ") : value) : ""}
15
+ </div>
16
+
17
+ <style>
18
+ div {
19
+ overflow: hidden;
20
+ text-overflow: ellipsis;
21
+ white-space: nowrap;
22
+ }
23
+ .gallery {
24
+ display: flex;
25
+ align-items: center;
26
+ cursor: pointer;
27
+ padding: var(--size-1) var(--size-2);
28
+ text-align: left;
29
+ }
30
+ </style>
gradio_molecule3d/frontend/Index.svelte ADDED
@@ -0,0 +1,339 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <svelte:options accessors={true} />
2
+
3
+ <script context="module" lang="ts">
4
+ export { default as FilePreview } from "./shared/FilePreview.svelte";
5
+ export { default as BaseFileUpload } from "./shared/FileUpload.svelte";
6
+ export { default as BaseFile } from "./shared/File.svelte";
7
+ export { default as BaseExample } from "./Example.svelte";
8
+ </script>
9
+
10
+ <script lang="ts">
11
+ import "./style.css";
12
+
13
+ import type { Gradio, SelectData } from "@gradio/utils";
14
+ import File from "./shared/File.svelte";
15
+ import FileUpload from "./shared/FileUpload.svelte";
16
+ import type { FileData } from "@gradio/client";
17
+ import { Block, UploadText } from "@gradio/atoms";
18
+
19
+ import { StatusTracker } from "@gradio/statustracker";
20
+ import type { LoadingStatus } from "@gradio/statustracker";
21
+
22
+ export let elem_id = "";
23
+ export let elem_classes: string[] = [];
24
+ export let visible = true;
25
+ export let value: null | FileData | FileData[];
26
+
27
+ export let interactive: boolean;
28
+ export let root: string;
29
+ export let label: string;
30
+ export let show_label: boolean;
31
+ export let height: number | undefined = undefined;
32
+
33
+ //Molecule3D specific arguments
34
+ export let reps: any = [];
35
+ export let config: any = {};
36
+ export let confidenceLabel: string = "";
37
+ export let showviewer: boolean = true;
38
+
39
+ export let _selectable = false;
40
+ export let loading_status: LoadingStatus;
41
+ export let container = true;
42
+ export let scale: number | null = null;
43
+ export let min_width: number | undefined = undefined;
44
+ export let gradio: Gradio<{
45
+ change: never;
46
+ error: string;
47
+ upload: never;
48
+ clear: never;
49
+ select: SelectData;
50
+ clear_status: LoadingStatus;
51
+ delete: FileData;
52
+ }>;
53
+ export let file_count: "single" | "multiple" | "directory";
54
+ export let file_types: string[] = ["file"];
55
+
56
+ let old_value = value;
57
+ $: if (JSON.stringify(old_value) !== JSON.stringify(value)) {
58
+ gradio.dispatch("change");
59
+ old_value = value;
60
+
61
+ moldata = null;
62
+ retrieveContent(value);
63
+ }
64
+
65
+ $: if (JSON.stringify(reps) !== JSON.stringify(reps)) {
66
+ gradio.dispatch("change");
67
+ old_value = value;
68
+
69
+ // console.log("reps changed");
70
+ // console.log(reps);
71
+
72
+ moldata = null;
73
+ retrieveContent(value);
74
+ }
75
+
76
+ let dragging = false;
77
+ let pending_upload = false;
78
+
79
+ let keys_for_reps = {
80
+ model: {
81
+ type: Number,
82
+ default: 0,
83
+ },
84
+ chain: {
85
+ type: String,
86
+ default: "",
87
+ },
88
+ resname: {
89
+ type: String,
90
+ default: "",
91
+ },
92
+ style: {
93
+ type: String,
94
+ default: "cartoon",
95
+ choices: ["cartoon", "stick", "sphere", "surface"],
96
+ },
97
+ color: {
98
+ type: String,
99
+ default: "whiteCarbon",
100
+ choices: [
101
+ "whiteCarbon",
102
+ "orangeCarbon",
103
+ "redCarbon",
104
+ "blackCarbon",
105
+ "blueCarbon",
106
+ "grayCarbon",
107
+ "greenCarbon",
108
+ "cyanCarbon",
109
+ "alphafold",
110
+ "default",
111
+ "Jmol",
112
+ "chain",
113
+ "spectrum",
114
+ ],
115
+ },
116
+ opacity: {
117
+ type: Number,
118
+ default: 1,
119
+ },
120
+ residue_range: {
121
+ type: String,
122
+ default: "",
123
+ },
124
+ around: {
125
+ type: Number,
126
+ default: 0,
127
+ },
128
+ byres: {
129
+ type: Boolean,
130
+ default: false,
131
+ },
132
+ visible: {
133
+ type: Boolean,
134
+ default: true,
135
+ },
136
+ };
137
+ let moldata = null;
138
+ let allowed_extensions = ["pdb", "sdf", "mol2", "pdb1", "cif", "traj", "xyz"];
139
+ async function fetchFileContent(url) {
140
+ const response = await fetch(url);
141
+ const content = await response.text();
142
+ return content;
143
+ }
144
+ let promise = null;
145
+ let errors = [];
146
+ async function retrieveContent(value) {
147
+ if (value == null) {
148
+ return [];
149
+ } else if (Array.isArray(value)) {
150
+ let tempMoldata = [];
151
+ // get file extension
152
+ for (const element of value) {
153
+ let ext = element.orig_name.split(".").pop();
154
+ if (!allowed_extensions.includes(ext)) {
155
+ errors.push(
156
+ `Invalid file extension for ${
157
+ element.orig_name
158
+ }. Expected one of ${allowed_extensions.join(", ")}, got ${ext}`
159
+ );
160
+ moldata = null;
161
+ continue;
162
+ }
163
+ tempMoldata.push({
164
+ data: await fetchFileContent(element.url),
165
+ name: element.orig_name,
166
+ format: ext,
167
+ asFrames: false,
168
+ });
169
+ }
170
+ moldata = tempMoldata;
171
+ } else if (typeof value === "object" && value !== null) {
172
+ let ext = value.orig_name.split(".").pop();
173
+ if (!allowed_extensions.includes(ext)) {
174
+ errors.push(
175
+ `Invalid file extension for ${
176
+ value.orig_name
177
+ }. Expected one of ${allowed_extensions.join(", ")}, got ${ext}`
178
+ );
179
+ moldata = null;
180
+ } else {
181
+ let t = await fetchFileContent(value.url);
182
+ let ext = value.orig_name.split(".").pop();
183
+ if (ext === "pdb1") {
184
+ ext = "pdb";
185
+ }
186
+ moldata = [
187
+ { data: t, name: value.orig_name, format: ext, asFrames: false },
188
+ ];
189
+ }
190
+ } else {
191
+ moldata = null;
192
+ }
193
+ // value is object
194
+ }
195
+ // go through each rep, do a type check and add missing keys to the rep
196
+ let lenMoldata = 0;
197
+ $: lenMoldata = moldata ? moldata.length : 0;
198
+ let representations = [];
199
+ //first add all missing keys
200
+ $: {
201
+ reps.forEach((rep) => {
202
+ for (const [key, value] of Object.entries(keys_for_reps)) {
203
+ if (rep[key] === undefined) {
204
+ rep[key] = value["default"];
205
+ }
206
+ if (rep[key].constructor != value["type"]) {
207
+ errors.push(
208
+ `Invalid type for ${key} in reps. Expected ${
209
+ value["type"]
210
+ }, got ${typeof rep[key]}`
211
+ );
212
+ }
213
+ }
214
+ });
215
+ // then check if model does exist and add to representations
216
+ reps.forEach((rep) => {
217
+ if (rep["model"] <= lenMoldata) {
218
+ representations.push(rep);
219
+ }
220
+ });
221
+ }
222
+ $: promise = retrieveContent(value);
223
+ </script>
224
+
225
+ <Block
226
+ {visible}
227
+ variant={value ? "solid" : "dashed"}
228
+ border_mode={dragging ? "focus" : "base"}
229
+ padding={false}
230
+ {elem_id}
231
+ {elem_classes}
232
+ {container}
233
+ {scale}
234
+ {min_width}
235
+ allow_overflow={false}
236
+ >
237
+ <StatusTracker
238
+ autoscroll={gradio.autoscroll}
239
+ i18n={gradio.i18n}
240
+ {...loading_status}
241
+ status={pending_upload
242
+ ? "generating"
243
+ : loading_status?.status || "complete"}
244
+ on:clear_status={() => gradio.dispatch("clear_status", loading_status)}
245
+ />
246
+ {#if !interactive}
247
+ <File
248
+ on:select={({ detail }) => gradio.dispatch("select", detail)}
249
+ selectable={_selectable}
250
+ {value}
251
+ {label}
252
+ {show_label}
253
+ {height}
254
+ {representations}
255
+ {config}
256
+ {confidenceLabel}
257
+ {moldata}
258
+ {errors}
259
+ i18n={gradio.i18n}
260
+ molviewer={showviewer}
261
+ />
262
+ {:else}
263
+ <FileUpload
264
+ upload={gradio.client.upload}
265
+ stream_handler={gradio.client.stream}
266
+ {label}
267
+ {show_label}
268
+ {value}
269
+ {file_count}
270
+ {file_types}
271
+ selectable={_selectable}
272
+ {root}
273
+ {height}
274
+ {representations}
275
+ {config}
276
+ {confidenceLabel}
277
+ {moldata}
278
+ molviewer={showviewer}
279
+ max_file_size={gradio.max_file_size}
280
+ on:change={({ detail }) => {
281
+ value = detail;
282
+ }}
283
+ on:drag={({ detail }) => (dragging = detail)}
284
+ on:clear={() => gradio.dispatch("clear")}
285
+ on:select={({ detail }) => gradio.dispatch("select", detail)}
286
+ on:notfound={() =>
287
+ gradio.dispatch(
288
+ "error",
289
+ "identifier not found in database, check spelling"
290
+ )}
291
+ on:upload={() => gradio.dispatch("upload")}
292
+ on:error={({ detail }) => {
293
+ loading_status = loading_status || {};
294
+ loading_status.status = "error";
295
+ gradio.dispatch("error", detail);
296
+ }}
297
+ on:delete={({ detail }) => {
298
+ gradio.dispatch("delete", detail);
299
+ }}
300
+ i18n={gradio.i18n}
301
+ >
302
+ <UploadText i18n={gradio.i18n} type="file" />
303
+ </FileUpload>
304
+ {/if}
305
+
306
+ {#if errors.length > 0 && value !== null}
307
+ <div
308
+ class="flex m-2 p-4 mb-4 text-sm text-red-800 rounded-lg bg-red-50 dark:bg-gray-800 dark:text-red-400"
309
+ role="alert"
310
+ >
311
+ <svg
312
+ class="flex-shrink-0 inline w-4 h-4 mr-3 mt-[2px]"
313
+ xmlns="http://www.w3.org/2000/svg"
314
+ fill="none"
315
+ viewBox="0 0 24 24"
316
+ stroke-width="1.5"
317
+ stroke="currentColor"
318
+ >
319
+ <path
320
+ stroke-linecap="round"
321
+ stroke-linejoin="round"
322
+ d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z"
323
+ />
324
+ </svg>
325
+
326
+ <span class="sr-only">Error in the representations</span>
327
+ <div>
328
+ <span class="font-medium"
329
+ >Couldn't display Molecule. Fix the following problems:</span
330
+ >
331
+ <ul class="mt-1.5 ml-4 list-disc list-inside">
332
+ {#each errors as error}
333
+ <li>{error}</li>
334
+ {/each}
335
+ </ul>
336
+ </div>
337
+ </div>
338
+ {/if}
339
+ </Block>
gradio_molecule3d/frontend/gradio.config.js ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import tailwindcss from "@tailwindcss/vite";
2
+
3
+ export default {
4
+ plugins: [tailwindcss()],
5
+ svelte: {
6
+ preprocess: [],
7
+ },
8
+ build: {
9
+ target: "modules",
10
+ },
11
+ };
gradio_molecule3d/frontend/package-lock.json ADDED
The diff for this file is too large to render. See raw diff
 
gradio_molecule3d/frontend/package.json ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "gradio_molecule3d",
3
+ "version": "0.9.2",
4
+ "description": "Gradio UI packages",
5
+ "type": "module",
6
+ "author": "",
7
+ "license": "ISC",
8
+ "private": false,
9
+ "dependencies": {
10
+ "@gradio/atoms": "^0.9.0",
11
+ "@gradio/client": "^1.6.0",
12
+ "@gradio/icons": "^0.8.0",
13
+ "@gradio/markdown": "^0.10.1",
14
+ "@gradio/statustracker": "^0.8.1",
15
+ "@gradio/upload": "^0.13.1",
16
+ "@gradio/utils": "^0.7.0",
17
+ "@gradio/wasm": "^0.14.1",
18
+ "@tailwindcss/vite": "^4.0.0-alpha.30",
19
+ "3dmol": "^2.4.0",
20
+ "tailwindcss": "^4.0.0-alpha.30"
21
+ },
22
+ "devDependencies": {
23
+ "@gradio/preview": "0.12.0"
24
+ },
25
+ "main": "./Index.svelte",
26
+ "main_changeset": true,
27
+ "exports": {
28
+ ".": {
29
+ "gradio": "./Index.svelte"
30
+ },
31
+ "./example": {
32
+ "gradio": "./Example.svelte"
33
+ },
34
+ "./package.json": "./package.json"
35
+ }
36
+ }
gradio_molecule3d/frontend/shared/File.svelte ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <script lang="ts">
2
+ import type { FileData } from "@gradio/client";
3
+ import { BlockLabel, Empty } from "@gradio/atoms";
4
+ import { File } from "@gradio/icons";
5
+ import FilePreview from "./FilePreview.svelte";
6
+ import type { I18nFormatter } from "@gradio/utils";
7
+
8
+ import MolecularViewer from "./MolecularViewer.svelte";
9
+
10
+ export let value: FileData | FileData[] | null = null;
11
+ export let label: string;
12
+ export let show_label = true;
13
+ export let selectable = false;
14
+ export let height: number | undefined = undefined;
15
+ export let i18n: I18nFormatter;
16
+
17
+ export let config = {};
18
+ export let confidenceLabel = "";
19
+ export let representations = [];
20
+ export let moldata = null;
21
+ export let molviewer = false;
22
+ </script>
23
+
24
+ <BlockLabel
25
+ {show_label}
26
+ float={value === null}
27
+ Icon={File}
28
+ label={label || "File"}
29
+ />
30
+
31
+ {#if value && (Array.isArray(value) ? value.length > 0 : true)}
32
+ <!-- <FilePreview {i18n} {selectable} on:select {value} {height} /> -->
33
+
34
+ {#if moldata != null && molviewer}
35
+ <MolecularViewer {moldata} {config} {confidenceLabel} {representations} />
36
+ {/if}
37
+ {:else}
38
+ <Empty unpadded_box={true} size="large"><File /></Empty>
39
+ {/if}
gradio_molecule3d/frontend/shared/FilePreview.svelte ADDED
@@ -0,0 +1,197 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <script lang="ts">
2
+ import type { FileData } from "@gradio/client";
3
+ import { prettyBytes } from "./utils";
4
+ import { createEventDispatcher } from "svelte";
5
+ import type { I18nFormatter, SelectData } from "@gradio/utils";
6
+ import { DownloadLink } from "@gradio/wasm/svelte";
7
+
8
+ const dispatch = createEventDispatcher<{
9
+ select: SelectData;
10
+ change: FileData[] | FileData;
11
+ delete: FileData;
12
+ }>();
13
+ export let value: FileData | FileData[];
14
+ export let selectable = false;
15
+ export let height: number | undefined = undefined;
16
+ export let i18n: I18nFormatter;
17
+
18
+ function split_filename(filename: string): [string, string] {
19
+ const last_dot = filename.lastIndexOf(".");
20
+ if (last_dot === -1) {
21
+ return [filename, ""];
22
+ }
23
+ return [filename.slice(0, last_dot), filename.slice(last_dot)];
24
+ }
25
+
26
+ $: normalized_files = (Array.isArray(value) ? value : [value]).map((file) => {
27
+ const [filename_stem, filename_ext] = split_filename(file.orig_name ?? "");
28
+ return {
29
+ ...file,
30
+ filename_stem,
31
+ filename_ext
32
+ };
33
+ });
34
+
35
+ function handle_row_click(
36
+ event: MouseEvent & { currentTarget: HTMLTableRowElement },
37
+ index: number
38
+ ): void {
39
+ const tr = event.currentTarget;
40
+ const should_select =
41
+ event.target === tr || // Only select if the click is on the row itself
42
+ (tr &&
43
+ tr.firstElementChild &&
44
+ event.composedPath().includes(tr.firstElementChild)); // Or if the click is on the name column
45
+
46
+ if (should_select) {
47
+ dispatch("select", { value: normalized_files[index].orig_name, index });
48
+ }
49
+ }
50
+
51
+ function remove_file(index: number): void {
52
+ const removed = normalized_files.splice(index, 1);
53
+ normalized_files = [...normalized_files];
54
+ value = normalized_files;
55
+ dispatch("delete", removed[0]);
56
+ dispatch("change", normalized_files);
57
+ }
58
+ </script>
59
+
60
+ <div
61
+ class="file-preview-holder"
62
+ style="max-height: {typeof height === undefined ? 'auto' : height + 'px'};"
63
+ >
64
+ <table class="file-preview">
65
+ <tbody>
66
+ {#each normalized_files as file, i (file)}
67
+ <tr
68
+ class="file"
69
+ class:selectable
70
+ on:click={(event) => {
71
+ handle_row_click(event, i);
72
+ }}
73
+ >
74
+ <td class="filename" aria-label={file.orig_name}>
75
+ <span class="stem">{file.filename_stem}</span>
76
+ <span class="ext">{file.filename_ext}</span>
77
+ </td>
78
+
79
+ <td class="download">
80
+ {#if file.url}
81
+ <DownloadLink
82
+ href={file.url}
83
+ download={window.__is_colab__ ? null : file.orig_name}
84
+ >
85
+ {@html file.size != null
86
+ ? prettyBytes(file.size)
87
+ : "(size unknown)"}&nbsp;&#8675;
88
+ </DownloadLink>
89
+ {:else}
90
+ {i18n("file.uploading")}
91
+ {/if}
92
+ </td>
93
+
94
+ {#if normalized_files.length > 1}
95
+ <td>
96
+ <button
97
+ class="label-clear-button"
98
+ aria-label="Remove this file"
99
+ on:click={() => {
100
+ remove_file(i);
101
+ }}
102
+ on:keydown={(event) => {
103
+ if (event.key === "Enter") {
104
+ remove_file(i);
105
+ }
106
+ }}
107
+
108
+ </button>
109
+ </td>
110
+ {/if}
111
+ </tr>
112
+ {/each}
113
+ </tbody>
114
+ </table>
115
+ </div>
116
+
117
+ <style>
118
+ .label-clear-button {
119
+ color: var(--body-text-color-subdued);
120
+ position: relative;
121
+ left: -3px;
122
+ }
123
+
124
+ .label-clear-button:hover {
125
+ color: var(--body-text-color);
126
+ }
127
+
128
+ .file-preview {
129
+ table-layout: fixed;
130
+ width: var(--size-full);
131
+ max-height: var(--size-60);
132
+ overflow-y: auto;
133
+ margin-top: var(--size-1);
134
+ color: var(--body-text-color);
135
+ }
136
+
137
+ .file-preview-holder {
138
+ overflow: auto;
139
+ }
140
+
141
+ .file {
142
+ display: flex;
143
+ width: var(--size-full);
144
+ }
145
+
146
+ .file > * {
147
+ padding: var(--size-1) var(--size-2-5);
148
+ }
149
+
150
+ .filename {
151
+ flex-grow: 1;
152
+ display: flex;
153
+ overflow: hidden;
154
+ }
155
+ .filename .stem {
156
+ overflow: hidden;
157
+ text-overflow: ellipsis;
158
+ white-space: nowrap;
159
+ }
160
+ .filename .ext {
161
+ white-space: nowrap;
162
+ }
163
+
164
+ .download {
165
+ min-width: 8rem;
166
+ width: 10%;
167
+ white-space: nowrap;
168
+ text-align: right;
169
+ }
170
+ .download:hover {
171
+ text-decoration: underline;
172
+ }
173
+ .download > :global(a) {
174
+ color: var(--link-text-color);
175
+ }
176
+
177
+ .download > :global(a:hover) {
178
+ color: var(--link-text-color-hover);
179
+ }
180
+ .download > :global(a:visited) {
181
+ color: var(--link-text-color-visited);
182
+ }
183
+ .download > :global(a:active) {
184
+ color: var(--link-text-color-active);
185
+ }
186
+ .selectable {
187
+ cursor: pointer;
188
+ }
189
+
190
+ tbody > tr:nth-child(even) {
191
+ background: var(--block-background-fill);
192
+ }
193
+
194
+ tbody > tr:nth-child(odd) {
195
+ background: var(--table-odd-background-fill);
196
+ }
197
+ </style>
gradio_molecule3d/frontend/shared/FileRetrieval.svelte ADDED
@@ -0,0 +1,159 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <script lang="ts">
2
+ import { createEventDispatcher, tick, getContext } from "svelte";
3
+
4
+ import { FileData } from "@gradio/client";
5
+ import LoadingSpinner from "./loading_spinner.svelte";
6
+ let uploaded_files;
7
+ const dispatch = createEventDispatcher();
8
+
9
+ import type { Client } from "@Gradio Uptime/client";
10
+ export let upload: Client["upload"];
11
+
12
+ export let root: string;
13
+ async function handle_upload(file_data: FileData): Promise<void> {
14
+ await tick();
15
+ const upload_id = Math.random().toString(36).substring(2, 15);
16
+ uploaded_files = await upload([file_data], root, upload_id);
17
+ dispatch("load", uploaded_files[0]);
18
+ }
19
+ let loading = false;
20
+ async function fetchFromDB(identifier, database): Promise<void> {
21
+ let dbs = {
22
+ pdb_assym: {
23
+ url: "https://files.rcsb.org/view/",
24
+ ext: ".pdb",
25
+ },
26
+ pdb_bioass: {
27
+ url: "https://files.rcsb.org/view/",
28
+ ext: ".pdb1",
29
+ },
30
+ af: {
31
+ url: "https://alphafold.ebi.ac.uk/files/AF-",
32
+ ext: "-F1-model_v4.pdb",
33
+ },
34
+ esm: {
35
+ url: "https://api.esmatlas.com/fetchPredictedStructure/",
36
+ ext: ".pdb",
37
+ },
38
+ // pubchem: "pubchem",
39
+ // text: "text",
40
+ };
41
+ let url = dbs[database]["url"];
42
+ let ext = dbs[database]["ext"];
43
+ // load the file and save blob
44
+ // emulate file upload by fetching from the db and triggering upload
45
+ // check if response status is 200, then return blob
46
+ loading = true;
47
+ let file = null;
48
+ try {
49
+ file = await fetch(url + identifier + ext)
50
+ .then((r) => {
51
+ loading = false;
52
+ if (r.status == 200) {
53
+ return r.blob();
54
+ } else {
55
+ dispatch("notfound");
56
+ }
57
+ })
58
+ .then((blob) => {
59
+ return new File([blob], identifier + ".pdb", { type: "text/plain" });
60
+ });
61
+ } catch (error) {
62
+ loading = false;
63
+ dispatch("notfound");
64
+ }
65
+ let file_data = new FileData({
66
+ path: identifier + ".pdb",
67
+ orig_name: identifier + ".pdb",
68
+ blob: file,
69
+ size: file.size,
70
+ mime_type: file.type,
71
+ is_stream: false,
72
+ });
73
+ await handle_upload(file_data);
74
+ }
75
+ let selectedValue = "pdb_assym";
76
+ let placeholder = "";
77
+ let textInput = "";
78
+ function handleSelect(event) {
79
+ selectedValue = event.target.value;
80
+ }
81
+ let placeholders = {
82
+ pdb_assym: "Enter PDB identifier",
83
+ pdb_bioass: "Enter PDB identifier",
84
+ af: "Enter UniProt identifier",
85
+ esm: "Enter MGnify protein identifier",
86
+ // pubchem: "Enter PubChem identifier",
87
+ // text: "Enter molecule in PDB or mol2 format",
88
+ };
89
+ $: placeholder = placeholders[selectedValue];
90
+ function isEnterPressed(event) {
91
+ if (event.key === "Enter") {
92
+ fetchFromDB(textInput, selectedValue);
93
+ }
94
+ }
95
+ </script>
96
+
97
+ <style>
98
+ .py {
99
+ padding: 10px 0;
100
+ }
101
+ .btn {
102
+ margin: 0 5px;
103
+ padding: 3px 15px;
104
+ border: var(--button-border-width) solid
105
+ var(--button-secondary-border-color);
106
+ background: var(--button-secondary-background-fill);
107
+ color: var(--button-secondary-text-color);
108
+ border-radius: var(--button-large-radius);
109
+ padding: var(--button-large-padding);
110
+ font-weight: var(--button-large-text-weight);
111
+ font-size: var(--button-large-text-size);
112
+ cursor: pointer;
113
+ }
114
+ .btn:hover {
115
+ border-color: var(--button-secondary-border-color-hover);
116
+ background: var(--button-secondary-background-fill-hover);
117
+ color: var(--button-secondary-text-color-hover);
118
+ box-shadow: var(--button-shadow-hover);
119
+ }
120
+ .or {
121
+ color: var(--body-text-color-subdued);
122
+ text-align: center;
123
+ display: block;
124
+ }
125
+ .wfull {
126
+ width: 100%;
127
+ }
128
+ .mt-2 {
129
+ margin-top: 2rem;
130
+ }
131
+ .input {
132
+ box-shadow: var(--input-shadow);
133
+ background: var(--input-background-fill);
134
+ border: var(--input-border-width) solid var(--input-border-color);
135
+ border-radius: var(--input-radius);
136
+ margin: 0 5px;
137
+ }
138
+ .select {
139
+ outline: none;
140
+ border: none;
141
+ }
142
+ .flex {
143
+ display: flex;
144
+ justify-content: space-between;
145
+ }
146
+ .inp {
147
+ width: 100%;
148
+ border: 0 #fff !important;
149
+ outline: none !important;
150
+ }
151
+ .inp:focus,
152
+ .inp:hover {
153
+ border: 0 !important;
154
+ outline: none !important;
155
+ }
156
+ .text-center {
157
+ text-align: center;
158
+ }
159
+ </style>
gradio_molecule3d/frontend/shared/FileUpload.svelte ADDED
@@ -0,0 +1,100 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <script lang="ts">
2
+ import { createEventDispatcher, tick } from "svelte";
3
+ import { Upload, ModifyUpload } from "@gradio/upload";
4
+ import type { FileData, Client } from "@gradio/client";
5
+ import { BlockLabel } from "@gradio/atoms";
6
+ import { File } from "@gradio/icons";
7
+ import FileRetrieval from "./FileRetrieval.svelte";
8
+
9
+ import FilePreview from "./FilePreview.svelte";
10
+ import type { I18nFormatter } from "@gradio/utils";
11
+ import MolecularViewer from "./MolecularViewer.svelte";
12
+
13
+ export let value: null | FileData | FileData[];
14
+
15
+ export let label: string;
16
+ export let show_label = true;
17
+ export let file_count: "single" | "multiple" | "directory" = "single";
18
+ export let file_types: string[] | null = null;
19
+ export let selectable = false;
20
+ export let root: string;
21
+ export let height: number | undefined = undefined;
22
+ export let i18n: I18nFormatter;
23
+ export let max_file_size: number | null = null;
24
+ export let upload: Client["upload"];
25
+ export let stream_handler: Client["stream"];
26
+
27
+ export let config = {};
28
+ export let confidenceLabel = "";
29
+ export let representations = [];
30
+ export let moldata = null;
31
+ export let molviewer = false;
32
+
33
+ async function handle_upload({
34
+ detail,
35
+ }: CustomEvent<FileData | FileData[]>): Promise<void> {
36
+ value = detail;
37
+ console.log("upload", detail);
38
+
39
+ await tick();
40
+ dispatch("change", value);
41
+ dispatch("upload", detail);
42
+ }
43
+
44
+ function handle_clear(): void {
45
+ value = null;
46
+ oldata = null;
47
+ dispatch("change", null);
48
+ dispatch("clear");
49
+ }
50
+
51
+ const dispatch = createEventDispatcher<{
52
+ change: FileData[] | FileData | null;
53
+ clear: undefined;
54
+ drag: boolean;
55
+ upload: FileData[] | FileData;
56
+ load: FileData[] | FileData;
57
+ error: string;
58
+ }>();
59
+
60
+ let dragging = false;
61
+ $: dispatch("drag", dragging);
62
+ </script>
63
+
64
+ <BlockLabel {show_label} Icon={File} float={!value} label={label || "File"} />
65
+
66
+ {#if value && (Array.isArray(value) ? value.length > 0 : true)}
67
+ <ModifyUpload {i18n} on:clear={handle_clear} absolute />
68
+ <FilePreview
69
+ {i18n}
70
+ on:select
71
+ {selectable}
72
+ {value}
73
+ {height}
74
+ on:change
75
+ on:delete
76
+ />
77
+ {#if moldata != null && molviewer}
78
+ <MolecularViewer {moldata} {config} {confidenceLabel} {representations} />
79
+ {/if}
80
+ {:else}
81
+ <FileRetrieval
82
+ {root}
83
+ on:load={handle_upload}
84
+ {upload}
85
+ on:notfound={() => dispatch("notfound")}
86
+ />
87
+ <Upload
88
+ on:load={handle_upload}
89
+ filetype={file_types}
90
+ {file_count}
91
+ {max_file_size}
92
+ {root}
93
+ bind:dragging
94
+ on:error
95
+ {stream_handler}
96
+ {upload}
97
+ >
98
+ <slot />
99
+ </Upload>
100
+ {/if}
gradio_molecule3d/frontend/shared/MolecularViewer.svelte ADDED
@@ -0,0 +1,2438 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <script lang="ts">
2
+ import * as mol from "3dmol/build/3Dmol.js";
3
+ let TDmol = mol;
4
+
5
+ import { onMount, onDestroy, beforeUpdate } from "svelte";
6
+
7
+ let viewer;
8
+ export let confidenceLabel = null;
9
+
10
+ export let moldata = null;
11
+
12
+ let settings = {
13
+ backgroundColor: {
14
+ type: "select",
15
+ options: ["white", "black", "gray", "lightgray", "beige", "orange"],
16
+ },
17
+ orthographic: {
18
+ type: "toggle",
19
+ },
20
+ disableFog: {
21
+ type: "toggle",
22
+ },
23
+ };
24
+ export let config = {
25
+ backgroundColor: "white",
26
+ orthographic: false,
27
+ disableFog: false,
28
+ };
29
+
30
+ $: {
31
+ if (view != undefined) {
32
+ view.setBackgroundColor(config.backgroundColor);
33
+ view.enableFog(!config.disableFog);
34
+ view.setCameraParameters({ orthographic: config.orthographic });
35
+ }
36
+ }
37
+
38
+ let labelHover = true;
39
+
40
+ let showCiteTooltip = false;
41
+
42
+ function toggleCiteTooltip() {
43
+ showCiteTooltip = !showCiteTooltip;
44
+ }
45
+
46
+ export let representations = [];
47
+
48
+ let showOffCanvas = false;
49
+ let showOffCanvasReps = false;
50
+
51
+ function toggleOffCanvas() {
52
+ showOffCanvas = !showOffCanvas;
53
+ }
54
+
55
+ function toggleOffCanvasReps() {
56
+ showOffCanvasReps = !showOffCanvasReps;
57
+ }
58
+ function deleteRep(index) {
59
+ representations.splice(index, 1);
60
+ representations = representations;
61
+ }
62
+ function insertRep() {
63
+ representations.push({
64
+ model: 0,
65
+ chain: "",
66
+ resname: "",
67
+ style: "cartoon",
68
+ color: "grayCarbon",
69
+ residue_range: "",
70
+ around: 0,
71
+ byres: false,
72
+ visible: true,
73
+ opacity: 1,
74
+ scale: 1,
75
+ });
76
+ representations = representations;
77
+ }
78
+
79
+ function fade(node, { delay = 0, duration = 50 }) {
80
+ const o = +getComputedStyle(node).opacity;
81
+
82
+ return {
83
+ delay,
84
+ duration,
85
+ css: (t) => `opacity: ${t * o}`,
86
+ };
87
+ }
88
+ let colorAlpha = function (atom) {
89
+ if (atom.b < 50) {
90
+ return "OrangeRed";
91
+ } else if (atom.b < 70) {
92
+ return "Gold";
93
+ } else if (atom.b < 90) {
94
+ return "MediumTurquoise";
95
+ } else {
96
+ return "Blue";
97
+ }
98
+ };
99
+
100
+ let colorHydrophobicity = function (atom) {
101
+ let kyte_doolittle = {
102
+ ILE: 4.5,
103
+ VAL: 4.2,
104
+ LEU: 3.8,
105
+ PHE: 2.8,
106
+ CYS: 2.5,
107
+ MET: 1.9,
108
+ ALA: 1.8,
109
+ GLY: -0.4,
110
+ THR: -0.7,
111
+ SER: -0.8,
112
+ TRP: -0.9,
113
+ TYR: -1.3,
114
+ PRO: -1.6,
115
+ HIS: -3.2,
116
+ GLU: -3.5,
117
+ GLN: -3.5,
118
+ ASP: -3.5,
119
+ ASN: -3.5,
120
+ LYS: -3.9,
121
+ ARG: -4.5,
122
+ };
123
+ if (atom.resn in kyte_doolittle) {
124
+ const value = kyte_doolittle[atom.resn];
125
+ const min = -4.5;
126
+ const max = 4.5;
127
+
128
+ // Normalize the value to a range of 0 to 1
129
+ const normalized = (value - min) / (max - min);
130
+
131
+ // Interpolate colors between DarkCyan, White, and DarkGoldenRod
132
+ const interpolateColor = (start, end, factor) => {
133
+ const startRGB = parseInt(start.slice(1), 16);
134
+ const endRGB = parseInt(end.slice(1), 16);
135
+
136
+ const r = Math.round(
137
+ ((endRGB >> 16) - (startRGB >> 16)) * factor + (startRGB >> 16),
138
+ );
139
+ const g = Math.round(
140
+ (((endRGB >> 8) & 0xff) - ((startRGB >> 8) & 0xff)) * factor +
141
+ ((startRGB >> 8) & 0xff),
142
+ );
143
+ const b = Math.round(
144
+ ((endRGB & 0xff) - (startRGB & 0xff)) * factor + (startRGB & 0xff),
145
+ );
146
+
147
+ return `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`;
148
+ };
149
+
150
+ if (normalized <= 0.5) {
151
+ // Interpolate between DarkCyan and White
152
+ return interpolateColor("#008B8B", "#FFFFFF", normalized * 2);
153
+ } else {
154
+ // Interpolate between White and DarkGoldenRod
155
+ return interpolateColor("#FFFFFF", "#B8860B", (normalized - 0.5) * 2);
156
+ }
157
+ } else {
158
+ return "#FFFFFF"; // White
159
+ }
160
+ };
161
+
162
+ let view;
163
+
164
+ function resetZoom(rep) {
165
+ // if is not pointerevent
166
+ if (rep.type != undefined) {
167
+ view.zoomTo();
168
+ } else {
169
+ let sel = {
170
+ model: rep.model,
171
+ };
172
+ if (rep.chain !== "") {
173
+ sel.chain = rep.chain;
174
+ }
175
+ if (rep.residue_range !== "") {
176
+ sel.resi = rep.residue_range;
177
+ }
178
+ if (rep.resname !== "") {
179
+ sel.resn = rep.resname;
180
+ }
181
+ view.zoomTo(sel);
182
+ }
183
+ }
184
+ function applyStyles(representations) {
185
+ if (view !== undefined) {
186
+ view.setStyle();
187
+ view.removeAllSurfaces();
188
+ representations.forEach((rep) => {
189
+ let colorObj;
190
+
191
+ if (rep.color === "alphafold") {
192
+ colorObj = { colorfunc: colorAlpha };
193
+ } else if (rep.color === "hydrophobicity") {
194
+ colorObj = { colorfunc: colorHydrophobicity };
195
+ } else if (rep.color == "spectrum") {
196
+ colorObj = { color: "spectrum" };
197
+ } else {
198
+ colorObj = { colorscheme: rep.color };
199
+ }
200
+
201
+ colorObj.opacity = rep.opacity;
202
+
203
+ let selObj = { model: rep.model };
204
+ if (rep.chain !== "") {
205
+ selObj.chain = rep.chain;
206
+ }
207
+ if (rep.residue_range !== "") {
208
+ selObj.resi = rep.residue_range;
209
+ }
210
+ if (rep.resname !== "") {
211
+ selObj.resn = rep.resname;
212
+ }
213
+ selObj.byres = rep.byres;
214
+ if (rep.around !== 0) {
215
+ selObj.expand = rep.around;
216
+ }
217
+ if (rep.sidechain) {
218
+ selObj = {
219
+ and: [selObj, { atom: ["N", "C", "O"], invert: true }],
220
+ };
221
+ }
222
+
223
+ if (rep.style == "sphere") {
224
+ colorObj["scale"] = rep.scale;
225
+ } else if (rep.style == "stick") {
226
+ colorObj["scale"] = rep.scale;
227
+ }
228
+
229
+ if (rep.style === "surface") {
230
+ view.addSurface(TDmol.SurfaceType.VDW, colorObj, selObj);
231
+ } else {
232
+ try {
233
+ if (view.getModel(selObj.model) != null) {
234
+ view.addStyle(selObj, {
235
+ [rep.style]: colorObj,
236
+ });
237
+ }
238
+ } catch (error) {
239
+ console.log(error);
240
+ }
241
+ }
242
+ });
243
+
244
+ view.render();
245
+ }
246
+ }
247
+
248
+ onMount(() => {
249
+ console.log("MolecularViewer Mounted");
250
+ let startingConfig = { ...config, cartoonQuality: 7 };
251
+
252
+ view = TDmol.createViewer(viewer, startingConfig);
253
+
254
+ //filter duplicate representations
255
+ let uniqueReps = [];
256
+ representations.forEach((rep) => {
257
+ if (
258
+ !uniqueReps.some(
259
+ (uniqueRep) =>
260
+ uniqueRep.model === rep.model &&
261
+ uniqueRep.chain === rep.chain &&
262
+ uniqueRep.resname === rep.resname &&
263
+ uniqueRep.style === rep.style &&
264
+ uniqueRep.color === rep.color &&
265
+ uniqueRep.residue_range === rep.residue_range &&
266
+ uniqueRep.around === rep.around &&
267
+ uniqueRep.byres === rep.byres &&
268
+ uniqueRep.sidechain === rep.sidechain &&
269
+ uniqueRep.scale == rep.scale,
270
+ )
271
+ ) {
272
+ uniqueReps.push(rep);
273
+ }
274
+ });
275
+ representations = uniqueReps;
276
+ if (moldata.length > 0) {
277
+ moldata.forEach((element) => {
278
+ view.addModelsAsFrames(element.data, element.format, {
279
+ keepH: true,
280
+ multiModel: true,
281
+ });
282
+ });
283
+ }
284
+
285
+ view.addUnitCell(view.getModel(), {
286
+ box: {
287
+ color: "black", // Set color to black
288
+ linewidth: 2, // Set line width
289
+ hidden: false,
290
+ },
291
+ });
292
+
293
+ applyStyles(representations);
294
+ view.zoomTo();
295
+ view.render();
296
+ view.zoom(0.9, 100);
297
+
298
+ representations.forEach((rep) => {
299
+ if (rep.color === "alphafold") {
300
+ anyColorAlphaFold = true;
301
+ }
302
+ if (rep.color === "hydrophobicity") {
303
+ anyColorHydrophobic = true;
304
+ }
305
+ });
306
+
307
+ if (labelHover) {
308
+ view.setHoverable(
309
+ {},
310
+ true,
311
+ function (atom, view, event, container) {
312
+ if (!atom.label) {
313
+ let label;
314
+ if (anyColorAlphaFold) {
315
+ label =
316
+ atom.resn +
317
+ ":" +
318
+ atom.resi +
319
+ ":" +
320
+ atom.atom +
321
+ " (" +
322
+ confidenceLabel +
323
+ " " +
324
+ atom.b +
325
+ ")";
326
+ } else {
327
+ label = atom.resn + ":" + atom.resi + ":" + atom.atom;
328
+ }
329
+ atom.label = view.addLabel(label, {
330
+ position: atom,
331
+ backgroundColor: "#ffffff",
332
+ borderColor: "#dddddd",
333
+ fontColor: "black",
334
+ });
335
+ }
336
+ },
337
+ function (atom, view) {
338
+ if (atom.label) {
339
+ view.removeLabel(atom.label);
340
+ delete atom.label;
341
+ }
342
+ },
343
+ );
344
+ }
345
+
346
+ if (view.getNumFrames() > 1) {
347
+ toggleAnimation();
348
+ }
349
+ });
350
+
351
+ beforeUpdate(() => {
352
+ // console.log("beforeUpdate");
353
+ // console.log(representations);
354
+ });
355
+
356
+ $: applyStyles(representations);
357
+ let hasFrames = true;
358
+ let isAnimated = false;
359
+
360
+ let anyColorAlphaFold = false;
361
+ $: {
362
+ anyColorAlphaFold = false;
363
+ representations.forEach((rep) => {
364
+ if (rep.color === "alphafold") {
365
+ anyColorAlphaFold = true;
366
+ }
367
+ });
368
+ }
369
+
370
+ let anyColorHydrophobic = false;
371
+ $: {
372
+ anyColorHydrophobic = false;
373
+ representations.forEach((rep) => {
374
+ if (rep.color === "hydrophobicity") {
375
+ anyColorHydrophobic = true;
376
+ }
377
+ });
378
+ }
379
+ function toggleAnimation() {
380
+ console.log(view.isAnimated());
381
+ if (isAnimated) {
382
+ view.stopAnimate();
383
+ } else {
384
+ view.animate({ loop: "forward", reps: 0 });
385
+ }
386
+ isAnimated = !isAnimated;
387
+ }
388
+ </script>
389
+
390
+ <div class="bg-white w-full minh">
391
+ <div class="overflow-hidden flex gap-px w-full h-full flex-wrap">
392
+ <div class="gr-block gr-box relative w-full overflow-hidden">
393
+ <div
394
+ class="absolute z-50 top-0 right-0 mr-2 flex flex-col divide-y border border-gray-200 mt-2 rounded items-center justify-center bg-white dark:bg-gray-800"
395
+ >
396
+ <button class="p-2" title="Reset View" on:click={resetZoom}>
397
+ <svg
398
+ xmlns="http://www.w3.org/2000/svg"
399
+ fill="none"
400
+ viewBox="0 0 24 24"
401
+ stroke-width="1.5"
402
+ stroke="currentColor"
403
+ class="w-4 h-4 text-gray-500 hover:text-orange-600 cursor-pointer"
404
+ >
405
+ <path
406
+ stroke-linecap="round"
407
+ stroke-linejoin="round"
408
+ d="M9 9V4.5M9 9H4.5M9 9L3.75 3.75M9 15v4.5M9 15H4.5M9 15l-5.25 5.25M15 9h4.5M15 9V4.5M15 9l5.25-5.25M15 15h4.5M15 15v4.5m0-4.5l5.25 5.25"
409
+ />
410
+ </svg>
411
+ </button>
412
+ <button class="p-2" title="Settings" on:click={toggleOffCanvas}>
413
+ <svg
414
+ xmlns="http://www.w3.org/2000/svg"
415
+ fill="none"
416
+ viewBox="0 0 24 24"
417
+ stroke-width="1.5"
418
+ stroke="currentColor"
419
+ class="w-5 h-5 text-gray-500 hover:text-orange-600 cursor-pointer"
420
+ >
421
+ <path
422
+ stroke-linecap="round"
423
+ stroke-linejoin="round"
424
+ d="M10.5 6h9.75M10.5 6a1.5 1.5 0 11-3 0m3 0a1.5 1.5 0 10-3 0M3.75 6H7.5m3 12h9.75m-9.75 0a1.5 1.5 0 01-3 0m3 0a1.5 1.5 0 00-3 0m-3.75 0H7.5m9-6h3.75m-3.75 0a1.5 1.5 0 01-3 0m3 0a1.5 1.5 0 00-3 0m-9.75 0h9.75"
425
+ />
426
+ </svg>
427
+ </button>
428
+
429
+ <button
430
+ class="p-2"
431
+ title="Representations"
432
+ on:click={toggleOffCanvasReps}
433
+ >
434
+ <!-- <svg
435
+ xmlns="http://www.w3.org/2000/svg"
436
+ fill="none"
437
+ viewBox="0 0 24 24"
438
+ stroke-width="1.5"
439
+ stroke="currentColor"
440
+ class="w-5 h-5 text-gray-500 hover:text-orange-600 cursor-pointer"
441
+ >
442
+ <path
443
+ stroke-linecap="round"
444
+ stroke-linejoin="round"
445
+ d="M21.75 6.75a4.5 4.5 0 01-4.884 4.484c-1.076-.091-2.264.071-2.95.904l-7.152 8.684a2.548 2.548 0 11-3.586-3.586l8.684-7.152c.833-.686.995-1.874.904-2.95a4.5 4.5 0 016.336-4.486l-3.276 3.276a3.004 3.004 0 002.25 2.25l3.276-3.276c.256.565.398 1.192.398 1.852z"
446
+ />
447
+ <path
448
+ stroke-linecap="round"
449
+ stroke-linejoin="round"
450
+ d="M4.867 19.125h.008v.008h-.008v-.008z"
451
+ />
452
+ </svg> -->
453
+
454
+ <!-- CC BY ND zwicon https://www.zwicon.com -->
455
+ <svg
456
+ class="w-5 h-5 text-gray-500 hover:text-orange-600 cursor-pointer"
457
+ viewBox="0 0 24 24"
458
+ xmlns="http://www.w3.org/2000/svg"
459
+ >
460
+ <path
461
+ d="M12.0281146,15 L12.5,15 C13.3284271,15 14,15.6715729 14,16.5 L14,20.5 C14,21.3284271 13.3284271,22 12.5,22 L10.5,22 C9.67157288,22 9,21.3284271 9,20.5 L9,16.5 C9,15.6715729 9.67157288,15 10.5,15 L11.0167145,15 C11.1492163,13.8570393 12.0552513,12.9352285 13.2239212,12.8053762 L18.6656473,12.20074 C19.4252963,12.1163346 20,11.4742382 20,10.7099144 L20,8.5 C20,7.67157288 19.3284271,7 18.5,7 C18.2238576,7 18,6.77614237 18,6.5 C18,6.22385763 18.2238576,6 18.5,6 C19.8807119,6 21,7.11928813 21,8.5 L21,10.7099144 C21,11.9837875 20.0421605,13.053948 18.7760788,13.1946238 L13.3343527,13.79926 C12.6731623,13.8727256 12.1520824,14.3686853 12.0281146,15 Z M10.5,16 C10.2238576,16 10,16.2238576 10,16.5 L10,20.5 C10,20.7761424 10.2238576,21 10.5,21 L12.5,21 C12.7761424,21 13,20.7761424 13,20.5 L13,16.5 C13,16.2238576 12.7761424,16 12.5,16 L10.5,16 Z M5.49996942,2.99995128 L16.5,2.99995128 C17.8807119,2.99995128 19,4.11923941 19,5.49995128 L19,7.5 C19,8.88071187 17.8807119,10 16.5,10 L5.49996942,10 C4.11925755,10 2.99996942,8.88071187 2.99996942,7.5 L2.99996942,5.49995128 C2.99996942,4.11923941 4.11925755,2.99995128 5.49996942,2.99995128 Z M5.49996942,3.99995128 C4.6715423,3.99995128 3.99996942,4.67152416 3.99996942,5.49995128 L3.99996942,7.5 C3.99996942,8.32842712 4.6715423,9 5.49996942,9 L16.5,9 C17.3284271,9 18,8.32842712 18,7.5 L18,5.49995128 C18,4.67152416 17.3284271,3.99995128 16.5,3.99995128 L5.49996942,3.99995128 Z"
462
+ />
463
+ </svg>
464
+ </button>
465
+
466
+ <!-- <button class="p-2" title="Download files">
467
+ <svg
468
+ aria-hidden="true"
469
+ fill="currentColor"
470
+ viewBox="0 0 20 20"
471
+ xmlns="http://www.w3.org/2000/svg"
472
+ class="w-5 h-5 text-gray-500 hover:text-orange-600 cursor-pointer"
473
+ >
474
+ <path
475
+ d="M10.75 2.75a.75.75 0 00-1.5 0v8.614L6.295 8.235a.75.75 0 10-1.09 1.03l4.25 4.5a.75.75 0 001.09 0l4.25-4.5a.75.75 0 00-1.09-1.03l-2.955 3.129V2.75z"
476
+ />
477
+ <path
478
+ d="M3.5 12.75a.75.75 0 00-1.5 0v2.5A2.75 2.75 0 004.75 18h10.5A2.75 2.75 0 0018 15.25v-2.5a.75.75 0 00-1.5 0v2.5c0 .69-.56 1.25-1.25 1.25H4.75c-.69 0-1.25-.56-1.25-1.25v-2.5z"
479
+ />
480
+ </svg>
481
+ </button> -->
482
+ </div>
483
+
484
+ {#if anyColorAlphaFold}
485
+ <div class="absolute bottom-0 left-0 z-50 p-2 -mb-2 w-full bg-white">
486
+ <div class="flex text-sm items-center space-x-2 justify-center">
487
+ <div class="flex space-x-1 py-1 items-center">
488
+ <span class="w-4 h-4" style="background-color: rgb(0, 83, 214);"
489
+ >&nbsp;</span
490
+ ><span class="legendlabel"
491
+ >Very high ({confidenceLabel} &gt; 90)</span
492
+ >
493
+ </div>
494
+ <div class="flex space-x-1 py-1 items-center">
495
+ <span
496
+ class="w-4 h-4"
497
+ style="background-color: rgb(101, 203, 243);">&nbsp;</span
498
+ ><span class="legendlabel"
499
+ >Confident (90 &gt; {confidenceLabel} &gt; 70)</span
500
+ >
501
+ </div>
502
+ <div class="flex space-x-1 py-1 items-center">
503
+ <span class="w-4 h-4" style="background-color: rgb(255, 219, 19);"
504
+ >&nbsp;</span
505
+ ><span class="legendlabel"
506
+ >Low (70 &gt; {confidenceLabel} &gt; 50)</span
507
+ >
508
+ </div>
509
+ <div class="flex space-x-1 py-1 items-center">
510
+ <span class="w-4 h-4" style="background-color: rgb(255, 125, 69);"
511
+ >&nbsp;</span
512
+ ><span class="legendlabel"
513
+ >Very low ({confidenceLabel} &lt; 50)</span
514
+ >
515
+ </div>
516
+ </div>
517
+ </div>
518
+ {/if}
519
+
520
+ {#if anyColorHydrophobic}
521
+ <div class="absolute bottom-0 left-0 z-50 p-2 mb-2 w-full bg-white">
522
+ <div class="flex text-sm items-center space-x-2 justify-center">
523
+ <div class="flex space-x-1 py-1 items-center">
524
+ <a
525
+ class="cursor-pointer"
526
+ href="https://pubmed.ncbi.nlm.nih.gov/7108955/"
527
+ >Kyte & Doolittle hydrophobicity scale:</a
528
+ >
529
+ </div>
530
+ <div class="flex space-x-1 py-1 items-center">
531
+ <span class="w-4 h-4" style="background-color: #B8860B;"
532
+ >&nbsp;</span
533
+ ><span class="legendlabel">Hydrophobic</span>
534
+ </div>
535
+ <div class="flex space-x-1 py-1 items-center">
536
+ <span
537
+ class="w-4 h-4 border border-gray-300"
538
+ style="background-color: white">&nbsp;</span
539
+ ><span class="legendlabel">Neutral</span>
540
+ </div>
541
+ <div class="flex space-x-1 py-1 items-center">
542
+ <span class="w-4 h-4" style="background-color: darkcyan;"
543
+ >&nbsp;</span
544
+ ><span class="legendlabel">Hydrophilic</span>
545
+ </div>
546
+ </div>
547
+ </div>
548
+ {/if}
549
+
550
+ {#if hasFrames}
551
+ <div
552
+ class="absolute z-50 bottom-0 right-0 mr-2 flex divide-x border border-gray-200 mb-2 rounded items-center justify-center"
553
+ >
554
+ {#if !isAnimated}
555
+ <button class="p-2" title="Play" on:click={toggleAnimation}>
556
+ <svg
557
+ xmlns="http://www.w3.org/2000/svg"
558
+ fill="none"
559
+ viewBox="0 0 24 24"
560
+ stroke-width="2"
561
+ stroke="currentColor"
562
+ class="w-4 h-4 text-gray-500 hover:text-orange-600 cursor-pointer"
563
+ >
564
+ <path
565
+ stroke-linecap="round"
566
+ stroke-linejoin="round"
567
+ d="M5.25 5.653c0-.856.917-1.398 1.667-.986l11.54 6.348a1.125 1.125 0 010 1.971l-11.54 6.347a1.125 1.125 0 01-1.667-.985V5.653z"
568
+ />
569
+ </svg>
570
+ </button>
571
+ {:else}
572
+ <button class="p-2" title="Pause" on:click={toggleAnimation}>
573
+ <svg
574
+ xmlns="http://www.w3.org/2000/svg"
575
+ fill="none"
576
+ viewBox="0 0 24 24"
577
+ stroke-width="2"
578
+ stroke="currentColor"
579
+ class="w-4 h-4 text-gray-500 hover:text-orange-600 cursor-pointer"
580
+ >
581
+ <path
582
+ stroke-linecap="round"
583
+ stroke-linejoin="round"
584
+ d="M5.25 7.5A2.25 2.25 0 017.5 5.25h9a2.25 2.25 0 012.25 2.25v9a2.25 2.25 0 01-2.25 2.25h-9a2.25 2.25 0 01-2.25-2.25v-9z"
585
+ />
586
+ </svg>
587
+
588
+ <!-- <svg
589
+ xmlns="http://www.w3.org/2000/svg"
590
+ fill="none"
591
+ viewBox="0 0 24 24"
592
+ stroke-width="2"
593
+ stroke="currentColor"
594
+ class="w-4 h-4 text-gray-500 hover:text-orange-600 cursor-pointer"
595
+ >
596
+ <path
597
+ stroke-linecap="round"
598
+ stroke-linejoin="round"
599
+ d="M15.75 5.25v13.5m-7.5-13.5v13.5"
600
+ />
601
+ </svg> -->
602
+ </button>
603
+ {/if}
604
+ </div>
605
+ {/if}
606
+
607
+ <div
608
+ class="absolute z-50 bottom-0 left-0 ml-2 flex divide-x mb-2 rounded items-center justify-center"
609
+ >
610
+ <button
611
+ class="p-1"
612
+ title="How to cite 3Dmol.js"
613
+ on:click={toggleCiteTooltip}
614
+ >
615
+ <svg
616
+ class="w-4 h-4 text-gray-500 hover:text-orange-600 cursor-pointer fill-current"
617
+ viewBox="0 0 20 20"
618
+ xmlns="http://www.w3.org/2000/svg"
619
+ ><g id="SVGRepo_bgCarrier" stroke-width="0" /><g
620
+ id="SVGRepo_tracerCarrier"
621
+ stroke-linecap="round"
622
+ stroke-linejoin="round"
623
+ /><g id="SVGRepo_iconCarrier"
624
+ ><path
625
+ d="M12.6 7.6v3.9h-1.1v4.6h-3v-4.6H7.4V7.6c0-.3.3-.6.6-.6h4c.3 0 .6.3.6.6zM10 6.5c.7 0 1.3-.6 1.3-1.3 0-.7-.6-1.3-1.3-1.3-.7 0-1.3.6-1.3 1.3 0 .7.6 1.3 1.3 1.3zm9.6 3.5c0 2.7-.9 4.9-2.7 6.7-1.9 1.9-4.2 2.9-6.9 2.9-2.6 0-4.9-.9-6.8-2.8C1.3 14.9.4 12.7.4 10c0-2.6.9-4.9 2.8-6.8C5.1 1.3 7.3.4 10 .4s5 .9 6.8 2.8c1.9 1.8 2.8 4.1 2.8 6.8zm-1.7 0c0-2.2-.8-4-2.3-5.6C14 2.9 12.2 2.1 10 2.1c-2.2 0-4 .8-5.5 2.3C2.9 6 2.1 7.9 2.1 10c0 2.1.8 4 2.3 5.5s3.4 2.3 5.6 2.3c2.1 0 4-.8 5.6-2.4 1.5-1.4 2.3-3.2 2.3-5.4z"
626
+ /></g
627
+ ></svg
628
+ >
629
+ </button>
630
+
631
+ <span
632
+ class=" absolute -top-1 left-6 w-max rounded bg-gray-900 px-2 py-1 text-sm font-medium text-gray-50 opacity-0 shadow transition-opacity"
633
+ class:opacity-100={showCiteTooltip}
634
+ >
635
+ Cite 3dmol.js as Rego & Koes, doi:10/gb5g5n
636
+ </span>
637
+ </div>
638
+
639
+ <div class="viewer w-full h-full z-10" bind:this={viewer} />
640
+
641
+ {#if showOffCanvas}
642
+ <div
643
+ id="settings-drawer"
644
+ class="absolute top-0 right-0 z-50 h-full overflow-y-auto transition-transform bg-gray-100 w-80 dark:bg-gray-800"
645
+ tabindex="-1"
646
+ aria-labelledby="settings-drawer-label"
647
+ >
648
+ <div class="p-4">
649
+ <h5
650
+ id="settings-drawer-label"
651
+ class="inline-flex items-center mb-4 text-base font-semibold text-gray-500 dark:text-gray-400"
652
+ >
653
+ Settings
654
+ </h5>
655
+ <button
656
+ type="button"
657
+ data-drawer-hide="drawer-example"
658
+ aria-controls="drawer-example"
659
+ class="text-gray-400 bg-transparent hover:bg-gray-200 hover:text-gray-900 rounded-lg text-sm p-1.5 absolute top-2.5 right-2.5 inline-flex items-center dark:hover:bg-gray-600 dark:hover:text-white"
660
+ on:click={toggleOffCanvas}
661
+ >
662
+ <svg
663
+ aria-hidden="true"
664
+ class="w-5 h-5"
665
+ fill="currentColor"
666
+ viewBox="0 0 20 20"
667
+ xmlns="http://www.w3.org/2000/svg"
668
+ ><path
669
+ fill-rule="evenodd"
670
+ d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z"
671
+ clip-rule="evenodd"
672
+ /></svg
673
+ >
674
+ <span class="sr-only">Close menu</span>
675
+ </button>
676
+ </div>
677
+ {#each Object.keys(config) as setting}
678
+ <div class="flex flex-col mb-4 divide-y">
679
+ <div
680
+ class="flex items-center border-t border-b border-gray-200 bg-white px-4 py-2 space-x-2"
681
+ >
682
+ <label
683
+ for={setting}
684
+ class="text-sm font-medium text-gray-600 dark:text-gray-400 w-1/2"
685
+ >
686
+ {setting}
687
+ </label>
688
+
689
+ {#if settings[setting].type == "toggle"}
690
+ <label
691
+ class="relative inline-flex items-center mr-5 cursor-pointer text-center justify-center"
692
+ >
693
+ <input
694
+ type="checkbox"
695
+ value=""
696
+ class="sr-only peer"
697
+ bind:checked={config[setting]}
698
+ />
699
+ <div
700
+ class="w-11 h-6 bg-gray-200 rounded-full peer dark:bg-gray-700 peer-focus:ring-4 peer-focus:ring-orange-300 dark:peer-focus:ring-orange-800 peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-0.5 after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all dark:border-gray-600 peer-checked:bg-orange-400"
701
+ />
702
+ </label>
703
+ {/if}
704
+ {#if settings[setting].type == "range"}
705
+ <div class="flex items-center">
706
+ <input
707
+ id="medium-range"
708
+ type="range"
709
+ value={config[setting]}
710
+ min={settings[setting].min}
711
+ max={settings[setting].max}
712
+ step={settings[setting].step}
713
+ on:change={() => {
714
+ config[setting] = event.target.value;
715
+ }}
716
+ class="w-2/3 h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700"
717
+ />
718
+ <span
719
+ class="w-1/3 text-center text-sm font-medium text-gray-600 dark:text-gray-400"
720
+ >{config[setting]}</span
721
+ >
722
+ </div>
723
+ {/if}
724
+ {#if settings[setting].type == "select"}
725
+ <label for={setting} class="sr-only">Select style</label>
726
+ <select
727
+ id={setting}
728
+ class="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"
729
+ bind:value={config[setting]}
730
+ >
731
+ {#each settings[setting].options as option}
732
+ <option
733
+ value={option}
734
+ selected={option == config[setting]}
735
+ >
736
+ {option}
737
+ </option>
738
+ {/each}
739
+ </select>
740
+ {/if}
741
+ </div>
742
+ </div>
743
+ {/each}
744
+ <div class="bg-white">
745
+ <div
746
+ class="flex items-center border-t border-b border-gray-200 bg-white px-4 py-2 space-x-2"
747
+ >
748
+ <label
749
+ class="text-sm font-medium text-gray-600 dark:text-gray-400 w-1/2"
750
+ >
751
+ Label atoms on hover
752
+ </label>
753
+ <label
754
+ class="relative inline-flex items-center mr-5 cursor-pointer text-center justify-center"
755
+ >
756
+ <input
757
+ type="checkbox"
758
+ class="sr-only peer"
759
+ bind:value={labelHover}
760
+ />
761
+ <div
762
+ class="w-11 h-6 bg-gray-200 rounded-full peer dark:bg-gray-700 peer-focus:ring-4 peer-focus:ring-orange-300 dark:peer-focus:ring-orange-800 peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-0.5 after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all dark:border-gray-600 peer-checked:bg-orange-400"
763
+ />
764
+ </label>
765
+ </div>
766
+ </div>
767
+ </div>
768
+ {/if}
769
+ {#if showOffCanvasReps}
770
+ <div
771
+ id="drawer-example"
772
+ class="absolute top-0 right-0 z-50 h-full overflow-y-auto transition-transform bg-gray-100 w-80 dark:bg-gray-800 border-l border-gray-200"
773
+ tabindex="-1"
774
+ aria-labelledby="drawer-label"
775
+ >
776
+ <div class="p-4">
777
+ <h5
778
+ id="drawer-label"
779
+ class="inline-flex items-center mb-4 text-base font-semibold text-gray-500 dark:text-gray-400"
780
+ >
781
+ Representations
782
+ </h5>
783
+ <button
784
+ type="button"
785
+ data-drawer-hide="drawer-example"
786
+ aria-controls="drawer-example"
787
+ class="text-gray-400 bg-transparent hover:bg-gray-200 hover:text-gray-900 rounded-lg text-sm p-1.5 absolute top-2.5 right-2.5 inline-flex items-center dark:hover:bg-gray-600 dark:hover:text-white"
788
+ on:click={toggleOffCanvasReps}
789
+ >
790
+ <svg
791
+ aria-hidden="true"
792
+ class="w-5 h-5"
793
+ fill="currentColor"
794
+ viewBox="0 0 20 20"
795
+ xmlns="http://www.w3.org/2000/svg"
796
+ ><path
797
+ fill-rule="evenodd"
798
+ d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z"
799
+ clip-rule="evenodd"
800
+ /></svg
801
+ >
802
+ <span class="sr-only">Close menu</span>
803
+ </button>
804
+ </div>
805
+
806
+ {#each representations as rep, index}
807
+ <div class="bg-white border-b border-t border-gray-200 py-4 px-2">
808
+ <div class="">
809
+ <div class="flex space-x-2 items-center cursor-pointer p-1">
810
+ <button
811
+ on:click={() => (rep.visible = !rep.visible)}
812
+ class="flex items-center space-x-2"
813
+ >
814
+ <svg
815
+ xmlns="http://www.w3.org/2000/svg"
816
+ fill="none"
817
+ viewBox="0 0 24 24"
818
+ stroke-width="1.5"
819
+ stroke="currentColor"
820
+ class={rep.visible
821
+ ? "transform rotate-90 w-5 h-5 "
822
+ : "w-5 h-5 "}
823
+ >
824
+ <path
825
+ stroke-linecap="round"
826
+ stroke-linejoin="round"
827
+ d="M8.25 4.5l7.5 7.5-7.5 7.5"
828
+ />
829
+ </svg>
830
+ <span>Representation #{index}</span>
831
+ </button>
832
+ <button on:click={() => deleteRep(index)}>
833
+ <!---->
834
+ <svg
835
+ xmlns="http://www.w3.org/2000/svg"
836
+ fill="none"
837
+ viewBox="0 0 24 24"
838
+ stroke-width="1.5"
839
+ stroke="currentColor"
840
+ class="w-5 h-5"
841
+ >
842
+ <path
843
+ stroke-linecap="round"
844
+ stroke-linejoin="round"
845
+ d="M14.74 9l-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 01-2.244 2.077H8.084a2.25 2.25 0 01-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 00-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 013.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 00-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 00-7.5 0"
846
+ />
847
+ </svg>
848
+ </button>
849
+ <button
850
+ title="zoom to selection"
851
+ on:click={() => resetZoom(rep)}
852
+ >
853
+ <svg
854
+ xmlns="http://www.w3.org/2000/svg"
855
+ fill="none"
856
+ viewBox="0 0 24 24"
857
+ stroke-width="1.5"
858
+ stroke="currentColor"
859
+ class="w-4 h-4 text-gray-500 hover:text-orange-600 cursor-pointer"
860
+ >
861
+ <path
862
+ stroke-linecap="round"
863
+ stroke-linejoin="round"
864
+ d="M9 9V4.5M9 9H4.5M9 9L3.75 3.75M9 15v4.5M9 15H4.5M9 15l-5.25 5.25M15 9h4.5M15 9V4.5M15 9l5.25-5.25M15 15h4.5M15 15v4.5m0-4.5l5.25 5.25"
865
+ />
866
+ </svg>
867
+ </button>
868
+ </div>
869
+ {#if rep.visible}
870
+ <div in:fade>
871
+ <div class="p-1 flex space-x-1">
872
+ <select
873
+ id="style"
874
+ class="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"
875
+ bind:value={rep.model}
876
+ >
877
+ {#each moldata as mol, i}
878
+ <option value={i}>{mol.name} #{i}</option>
879
+ {/each}
880
+ </select>
881
+ <input
882
+ type="text"
883
+ id="chain"
884
+ class="w-1/2 bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"
885
+ placeholder="Chain"
886
+ bind:value={rep.chain}
887
+ />
888
+ </div>
889
+ <div class="p-1 flex space-x-1">
890
+ <input
891
+ type="text"
892
+ id="chain"
893
+ class="w-1/2 bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"
894
+ placeholder="Resname"
895
+ bind:value={rep.resname}
896
+ />
897
+ <input
898
+ type="text"
899
+ id="residue_range"
900
+ class="w-full bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"
901
+ placeholder="Residue range"
902
+ bind:value={rep.residue_range}
903
+ />
904
+ </div>
905
+ <div class="p-1 flex space-x-1 items-center">
906
+ <label
907
+ for="countries"
908
+ class="block mb-2 text-sm w-1/3 font-medium text-gray-600 dark:text-white"
909
+ >Select style</label
910
+ >
911
+ <select
912
+ id="style"
913
+ class="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"
914
+ bind:value={rep.style}
915
+ >
916
+ <option value="stick">Stick</option>
917
+ <option value="cartoon">Cartoon</option>
918
+ <option value="surface">Surface</option>$
919
+ <option value="sphere">Sphere</option>
920
+ </select>
921
+ </div>
922
+ <div
923
+ class="flex p-1 items-center text-gray-700 space-x-1 text-sm"
924
+ >
925
+ <div class="">Opacity</div>
926
+ <input
927
+ id="around"
928
+ type="range"
929
+ value={rep.opacity}
930
+ min="0"
931
+ max="1"
932
+ step="0.1"
933
+ on:change={(event) => {
934
+ rep.opacity = event.target.value;
935
+ }}
936
+ class="h-2 w-full bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700"
937
+ />
938
+ <input type="text" bind:value={rep.opacity} class="w-8" />
939
+ </div>
940
+ <div
941
+ class="flex p-1 items-center text-gray-700 space-x-1 text-sm"
942
+ >
943
+ <div class="">scale</div>
944
+ <input
945
+ id="around"
946
+ type="range"
947
+ value={rep.scale}
948
+ min="0"
949
+ max="1"
950
+ step="0.1"
951
+ on:change={(event) => {
952
+ rep.scale = event.target.value;
953
+ }}
954
+ class="h-2 w-full bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700"
955
+ />
956
+ <input type="text" bind:value={rep.scale} class="w-8" />
957
+ </div>
958
+ <div
959
+ class="flex p-1 items-center text-gray-700 space-x-1 text-sm"
960
+ >
961
+ <div class="">Expand selection</div>
962
+ <input
963
+ id="around"
964
+ type="range"
965
+ value={rep.around}
966
+ min="0"
967
+ max="10"
968
+ step="0.5"
969
+ on:change={(event) => {
970
+ rep.around = event.target.value;
971
+ }}
972
+ class="h-2 w-1/3 bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700"
973
+ />
974
+ <input type="text" bind:value={rep.around} class="w-8" />
975
+ <div>Å</div>
976
+ </div>
977
+
978
+ <div
979
+ class="flex p-1 items-center text-gray-700 space-x-1 text-sm"
980
+ >
981
+ <div class="flex space-x-1 w-1/2">
982
+ <span>Full residue</span>
983
+ <label
984
+ class="relative inline-flex items-center mr-5 cursor-pointer text-center"
985
+ >
986
+ <input
987
+ type="checkbox"
988
+ value=""
989
+ class="sr-only peer"
990
+ bind:checked={rep.byres}
991
+ />
992
+ <div
993
+ class="w-11 h-6 bg-gray-200 rounded-full peer dark:bg-gray-700 peer-focus:ring-4 peer-focus:ring-orange-300 dark:peer-focus:ring-orange-800 peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-0.5 after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all dark:border-gray-600 peer-checked:bg-orange-400"
994
+ />
995
+ </label>
996
+ </div>
997
+ <div class="flex space-x-1 w-1/2">
998
+ <span>Only sidechain</span>
999
+ <label
1000
+ class="relative inline-flex items-center mr-5 cursor-pointer text-center"
1001
+ >
1002
+ <input
1003
+ type="checkbox"
1004
+ value=""
1005
+ class="sr-only peer"
1006
+ bind:checked={rep.sidechain}
1007
+ />
1008
+ <div
1009
+ class="w-11 h-6 bg-gray-200 rounded-full peer dark:bg-gray-700 peer-focus:ring-4 peer-focus:ring-orange-300 dark:peer-focus:ring-orange-800 peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-0.5 after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all dark:border-gray-600 peer-checked:bg-orange-400"
1010
+ />
1011
+ </label>
1012
+ </div>
1013
+ </div>
1014
+
1015
+ <div class="flex space-x-2 mt-2">
1016
+ <button
1017
+ class={rep.color === "orangeCarbon"
1018
+ ? "bg-orange-600 rounded-full w-8 h-8 border-4 border-gray-300 cursor-pointer"
1019
+ : "bg-orange-600 rounded-full w-8 h-8 border-4 border-white cursor-pointer"}
1020
+ on:click={() => (rep.color = "orangeCarbon")}
1021
+ />
1022
+ <button
1023
+ class={rep.color === "redCarbon"
1024
+ ? "bg-red-600 rounded-full w-8 h-8 border-4 border-gray-300 cursor-pointer"
1025
+ : "bg-red-600 rounded-full w-8 h-8 border-4 border-white cursor-pointer"}
1026
+ on:click={() => (rep.color = "redCarbon")}
1027
+ />
1028
+ <button
1029
+ class={rep.color === "blackCarbon"
1030
+ ? "bg-black rounded-full w-8 h-8 border-4 border-gray-300 cursor-pointer"
1031
+ : "bg-black rounded-full w-8 h-8 border-4 border-white cursor-pointer"}
1032
+ on:click={() => (rep.color = "blackCarbon")}
1033
+ />
1034
+ <button
1035
+ class={rep.color === "blueCarbon"
1036
+ ? "bg-blue-600 rounded-full w-8 h-8 border-4 border-gray-300 cursor-pointer"
1037
+ : "bg-blue-600 rounded-full w-8 h-8 border-4 border-white cursor-pointer"}
1038
+ on:click={() => (rep.color = "blueCarbon")}
1039
+ />
1040
+ <button
1041
+ class={rep.color === "grayCarbon"
1042
+ ? "bg-gray-600 rounded-full w-8 h-8 border-4 border-gray-300 cursor-pointer"
1043
+ : "bg-gray-600 rounded-full w-8 h-8 border-4 border-white cursor-pointer"}
1044
+ on:click={() => (rep.color = "grayCarbon")}
1045
+ />
1046
+ <button
1047
+ class={rep.color === "greenCarbon"
1048
+ ? "bg-green-600 rounded-full w-8 h-8 border-4 border-gray-300 cursor-pointer"
1049
+ : "bg-green-600 rounded-full w-8 h-8 border-4 border-white cursor-pointer"}
1050
+ on:click={() => (rep.color = "greenCarbon")}
1051
+ />
1052
+ <button
1053
+ class={rep.color === "cyanCarbon"
1054
+ ? "bg-cyan-600 rounded-full w-8 h-8 border-4 border-gray-300 cursor-pointer"
1055
+ : "bg-cyan-600 rounded-full w-8 h-8 border-4 border-white cursor-pointer"}
1056
+ on:click={() => (rep.color = "cyanCarbon")}
1057
+ />
1058
+ </div>
1059
+ <div class="flex space-x-2 py-2 text-sm">
1060
+ <button
1061
+ class={rep.color === "alphafold"
1062
+ ? "rounded-lg p-1 border border-gray-400 cursor-pointer bg-gray-200"
1063
+ : "rounded-lg p-1 border border-gray-200 cursor-pointer bg-white"}
1064
+ on:click={() => (rep.color = "alphafold")}
1065
+ >
1066
+ AlphaFold
1067
+ </button>
1068
+ <button
1069
+ class={rep.color === "hydrophobicity"
1070
+ ? "rounded-lg p-1 border border-gray-400 cursor-pointer bg-gray-200"
1071
+ : "rounded-lg p-1 border border-gray-200 cursor-pointer bg-white"}
1072
+ on:click={() => (rep.color = "hydrophobicity")}
1073
+ >
1074
+ Hydrophobicity
1075
+ </button>
1076
+ <button
1077
+ class={rep.color === "default"
1078
+ ? "rounded-lg p-1 border border-gray-400 cursor-pointer bg-gray-200"
1079
+ : "rounded-lg p-1 border border-gray-200 cursor-pointer bg-white"}
1080
+ on:click={() => (rep.color = "default")}
1081
+ >
1082
+ PyMol
1083
+ </button>
1084
+ <button
1085
+ class={rep.color === "Jmol"
1086
+ ? "rounded-lg p-1 border border-gray-400 cursor-pointer bg-gray-200"
1087
+ : "rounded-lg p-1 border border-gray-200 cursor-pointer bg-white"}
1088
+ on:click={() => (rep.color = "Jmol")}
1089
+ >
1090
+ Jmol
1091
+ </button>
1092
+ </div>
1093
+ <div class="flex space-x-2 py-2 text-sm">
1094
+ <button
1095
+ class={rep.color === "chain"
1096
+ ? "rounded-lg p-1 border border-gray-400 cursor-pointer bg-gray-200"
1097
+ : "rounded-lg p-1 border border-gray-200 cursor-pointer bg-white"}
1098
+ on:click={() => (rep.color = "chain")}
1099
+ >
1100
+ Chain
1101
+ </button>
1102
+ <button
1103
+ class={rep.color === "spectrum"
1104
+ ? "rounded-lg p-1 border border-gray-400 cursor-pointer bg-gray-200"
1105
+ : "rounded-lg p-1 border border-gray-200 cursor-pointer bg-white"}
1106
+ on:click={() => (rep.color = "spectrum")}
1107
+ >
1108
+ Spectrum
1109
+ </button>
1110
+ </div>
1111
+ </div>
1112
+ {/if}
1113
+ </div>
1114
+ </div>
1115
+ {/each}
1116
+
1117
+ <button
1118
+ class="w-full flex text-orange-600 justify-center my-2 text-sm space-x-2 items-center hover:text-gray-600 cursor-pointer"
1119
+ on:click={insertRep}
1120
+ >
1121
+ <svg
1122
+ xmlns="http://www.w3.org/2000/svg"
1123
+ fill="none"
1124
+ viewBox="0 0 24 24"
1125
+ stroke-width="2"
1126
+ stroke="currentColor"
1127
+ class="w-4 h-4"
1128
+ >
1129
+ <path
1130
+ stroke-linecap="round"
1131
+ stroke-linejoin="round"
1132
+ d="M12 9v6m3-3H9m12 0a9 9 0 11-18 0 9 9 0 0118 0z"
1133
+ />
1134
+ </svg>
1135
+
1136
+ <div>Add representation</div>
1137
+ </button>
1138
+ </div>
1139
+ {/if}
1140
+ </div>
1141
+ </div>
1142
+ </div>
1143
+
1144
+ <style>
1145
+ *,
1146
+ :before,
1147
+ :after {
1148
+ box-sizing: border-box;
1149
+ border-width: 0;
1150
+ border-style: solid;
1151
+ border-color: #e5e7eb;
1152
+ }
1153
+ :before,
1154
+ :after {
1155
+ --tw-content: "";
1156
+ }
1157
+ html {
1158
+ line-height: 1.5;
1159
+ -webkit-text-size-adjust: 100%;
1160
+ -moz-tab-size: 4;
1161
+ -o-tab-size: 4;
1162
+ tab-size: 4;
1163
+ font-family:
1164
+ ui-sans-serif,
1165
+ system-ui,
1166
+ -apple-system,
1167
+ BlinkMacSystemFont,
1168
+ Segoe UI,
1169
+ Roboto,
1170
+ Helvetica Neue,
1171
+ Arial,
1172
+ Noto Sans,
1173
+ sans-serif,
1174
+ "Apple Color Emoji",
1175
+ "Segoe UI Emoji",
1176
+ Segoe UI Symbol,
1177
+ "Noto Color Emoji";
1178
+ font-feature-settings: normal;
1179
+ }
1180
+ body {
1181
+ margin: 0;
1182
+ line-height: inherit;
1183
+ }
1184
+ hr {
1185
+ height: 0;
1186
+ color: inherit;
1187
+ border-top-width: 1px;
1188
+ }
1189
+ abbr:where([title]) {
1190
+ -webkit-text-decoration: underline dotted;
1191
+ text-decoration: underline dotted;
1192
+ }
1193
+ h1,
1194
+ h2,
1195
+ h3,
1196
+ h4,
1197
+ h5,
1198
+ h6 {
1199
+ font-size: inherit;
1200
+ font-weight: inherit;
1201
+ }
1202
+ a {
1203
+ color: inherit;
1204
+ text-decoration: inherit;
1205
+ }
1206
+ b,
1207
+ strong {
1208
+ font-weight: bolder;
1209
+ }
1210
+ code,
1211
+ kbd,
1212
+ samp,
1213
+ pre {
1214
+ font-family:
1215
+ ui-monospace,
1216
+ SFMono-Regular,
1217
+ Menlo,
1218
+ Monaco,
1219
+ Consolas,
1220
+ Liberation Mono,
1221
+ Courier New,
1222
+ monospace;
1223
+ font-size: 1em;
1224
+ }
1225
+ small {
1226
+ font-size: 80%;
1227
+ }
1228
+ sub,
1229
+ sup {
1230
+ font-size: 75%;
1231
+ line-height: 0;
1232
+ position: relative;
1233
+ vertical-align: baseline;
1234
+ }
1235
+ sub {
1236
+ bottom: -0.25em;
1237
+ }
1238
+ sup {
1239
+ top: -0.5em;
1240
+ }
1241
+ table {
1242
+ text-indent: 0;
1243
+ border-color: inherit;
1244
+ border-collapse: collapse;
1245
+ }
1246
+ button,
1247
+ input,
1248
+ optgroup,
1249
+ select,
1250
+ textarea {
1251
+ font-family: inherit;
1252
+ font-size: 100%;
1253
+ font-weight: inherit;
1254
+ line-height: inherit;
1255
+ color: inherit;
1256
+ margin: 0;
1257
+ padding: 0;
1258
+ }
1259
+ button,
1260
+ select {
1261
+ text-transform: none;
1262
+ }
1263
+ button,
1264
+ [type="button"],
1265
+ [type="reset"],
1266
+ [type="submit"] {
1267
+ -webkit-appearance: button;
1268
+ background-color: transparent;
1269
+ background-image: none;
1270
+ }
1271
+ :-moz-focusring {
1272
+ outline: auto;
1273
+ }
1274
+ :-moz-ui-invalid {
1275
+ box-shadow: none;
1276
+ }
1277
+ progress {
1278
+ vertical-align: baseline;
1279
+ }
1280
+ ::-webkit-inner-spin-button,
1281
+ ::-webkit-outer-spin-button {
1282
+ height: auto;
1283
+ }
1284
+ [type="search"] {
1285
+ -webkit-appearance: textfield;
1286
+ outline-offset: -2px;
1287
+ }
1288
+ ::-webkit-search-decoration {
1289
+ -webkit-appearance: none;
1290
+ }
1291
+ ::-webkit-file-upload-button {
1292
+ -webkit-appearance: button;
1293
+ font: inherit;
1294
+ }
1295
+ summary {
1296
+ display: list-item;
1297
+ }
1298
+ blockquote,
1299
+ dl,
1300
+ dd,
1301
+ h1,
1302
+ h2,
1303
+ h3,
1304
+ h4,
1305
+ h5,
1306
+ h6,
1307
+ hr,
1308
+ figure,
1309
+ p,
1310
+ pre {
1311
+ margin: 0;
1312
+ }
1313
+ fieldset {
1314
+ margin: 0;
1315
+ padding: 0;
1316
+ }
1317
+ legend {
1318
+ padding: 0;
1319
+ }
1320
+ ol,
1321
+ ul,
1322
+ menu {
1323
+ list-style: none;
1324
+ margin: 0;
1325
+ padding: 0;
1326
+ }
1327
+ textarea {
1328
+ resize: vertical;
1329
+ }
1330
+ input::-moz-placeholder,
1331
+ textarea::-moz-placeholder {
1332
+ opacity: 1;
1333
+ color: #9ca3af;
1334
+ }
1335
+ input::placeholder,
1336
+ textarea::placeholder {
1337
+ opacity: 1;
1338
+ color: #9ca3af;
1339
+ }
1340
+ button,
1341
+ [role="button"] {
1342
+ cursor: pointer;
1343
+ }
1344
+ :disabled {
1345
+ cursor: default;
1346
+ }
1347
+ img,
1348
+ svg,
1349
+ video,
1350
+ canvas,
1351
+ audio,
1352
+ iframe,
1353
+ embed,
1354
+ object {
1355
+ display: block;
1356
+ vertical-align: middle;
1357
+ }
1358
+ img,
1359
+ video {
1360
+ max-width: 100%;
1361
+ height: auto;
1362
+ }
1363
+ [hidden] {
1364
+ display: none;
1365
+ }
1366
+ *,
1367
+ :before,
1368
+ :after {
1369
+ --tw-border-spacing-x: 0;
1370
+ --tw-border-spacing-y: 0;
1371
+ --tw-translate-x: 0;
1372
+ --tw-translate-y: 0;
1373
+ --tw-rotate: 0;
1374
+ --tw-skew-x: 0;
1375
+ --tw-skew-y: 0;
1376
+ --tw-scale-x: 1;
1377
+ --tw-scale-y: 1;
1378
+ --tw-pan-x: ;
1379
+ --tw-pan-y: ;
1380
+ --tw-pinch-zoom: ;
1381
+ --tw-scroll-snap-strictness: proximity;
1382
+ --tw-ordinal: ;
1383
+ --tw-slashed-zero: ;
1384
+ --tw-numeric-figure: ;
1385
+ --tw-numeric-spacing: ;
1386
+ --tw-numeric-fraction: ;
1387
+ --tw-ring-inset: ;
1388
+ --tw-ring-offset-width: 0px;
1389
+ --tw-ring-offset-color: #fff;
1390
+ --tw-ring-color: rgb(59 130 246 / 0.5);
1391
+ --tw-ring-offset-shadow: 0 0 #0000;
1392
+ --tw-ring-shadow: 0 0 #0000;
1393
+ --tw-shadow: 0 0 #0000;
1394
+ --tw-shadow-colored: 0 0 #0000;
1395
+ --tw-blur: ;
1396
+ --tw-brightness: ;
1397
+ --tw-contrast: ;
1398
+ --tw-grayscale: ;
1399
+ --tw-hue-rotate: ;
1400
+ --tw-invert: ;
1401
+ --tw-saturate: ;
1402
+ --tw-sepia: ;
1403
+ --tw-drop-shadow: ;
1404
+ --tw-backdrop-blur: ;
1405
+ --tw-backdrop-brightness: ;
1406
+ --tw-backdrop-contrast: ;
1407
+ --tw-backdrop-grayscale: ;
1408
+ --tw-backdrop-hue-rotate: ;
1409
+ --tw-backdrop-invert: ;
1410
+ --tw-backdrop-opacity: ;
1411
+ --tw-backdrop-saturate: ;
1412
+ --tw-backdrop-sepia: ;
1413
+ }
1414
+ ::backdrop {
1415
+ --tw-border-spacing-x: 0;
1416
+ --tw-border-spacing-y: 0;
1417
+ --tw-translate-x: 0;
1418
+ --tw-translate-y: 0;
1419
+ --tw-rotate: 0;
1420
+ --tw-skew-x: 0;
1421
+ --tw-skew-y: 0;
1422
+ --tw-scale-x: 1;
1423
+ --tw-scale-y: 1;
1424
+ --tw-pan-x: ;
1425
+ --tw-pan-y: ;
1426
+ --tw-pinch-zoom: ;
1427
+ --tw-scroll-snap-strictness: proximity;
1428
+ --tw-ordinal: ;
1429
+ --tw-slashed-zero: ;
1430
+ --tw-numeric-figure: ;
1431
+ --tw-numeric-spacing: ;
1432
+ --tw-numeric-fraction: ;
1433
+ --tw-ring-inset: ;
1434
+ --tw-ring-offset-width: 0px;
1435
+ --tw-ring-offset-color: #fff;
1436
+ --tw-ring-color: rgb(59 130 246 / 0.5);
1437
+ --tw-ring-offset-shadow: 0 0 #0000;
1438
+ --tw-ring-shadow: 0 0 #0000;
1439
+ --tw-shadow: 0 0 #0000;
1440
+ --tw-shadow-colored: 0 0 #0000;
1441
+ --tw-blur: ;
1442
+ --tw-brightness: ;
1443
+ --tw-contrast: ;
1444
+ --tw-grayscale: ;
1445
+ --tw-hue-rotate: ;
1446
+ --tw-invert: ;
1447
+ --tw-saturate: ;
1448
+ --tw-sepia: ;
1449
+ --tw-drop-shadow: ;
1450
+ --tw-backdrop-blur: ;
1451
+ --tw-backdrop-brightness: ;
1452
+ --tw-backdrop-contrast: ;
1453
+ --tw-backdrop-grayscale: ;
1454
+ --tw-backdrop-hue-rotate: ;
1455
+ --tw-backdrop-invert: ;
1456
+ --tw-backdrop-opacity: ;
1457
+ --tw-backdrop-saturate: ;
1458
+ --tw-backdrop-sepia: ;
1459
+ }
1460
+ .container {
1461
+ width: 100%;
1462
+ }
1463
+ @media (min-width: 640px) {
1464
+ .container {
1465
+ max-width: 640px;
1466
+ }
1467
+ }
1468
+ @media (min-width: 768px) {
1469
+ .container {
1470
+ max-width: 768px;
1471
+ }
1472
+ }
1473
+ @media (min-width: 1024px) {
1474
+ .container {
1475
+ max-width: 1024px;
1476
+ }
1477
+ }
1478
+ @media (min-width: 1280px) {
1479
+ .container {
1480
+ max-width: 1280px;
1481
+ }
1482
+ }
1483
+ @media (min-width: 1536px) {
1484
+ .container {
1485
+ max-width: 1536px;
1486
+ }
1487
+ }
1488
+ .sr-only {
1489
+ position: absolute;
1490
+ width: 1px;
1491
+ height: 1px;
1492
+ padding: 0;
1493
+ margin: -1px;
1494
+ overflow: hidden;
1495
+ clip: rect(0, 0, 0, 0);
1496
+ white-space: nowrap;
1497
+ border-width: 0;
1498
+ }
1499
+ .visible {
1500
+ visibility: visible;
1501
+ }
1502
+ .absolute {
1503
+ position: absolute;
1504
+ }
1505
+ .relative {
1506
+ position: relative;
1507
+ }
1508
+ .bottom-0 {
1509
+ bottom: 0px;
1510
+ }
1511
+ .left-0 {
1512
+ left: 0px;
1513
+ }
1514
+ .right-0 {
1515
+ right: 0px;
1516
+ }
1517
+ .right-2 {
1518
+ right: 0.5rem;
1519
+ }
1520
+ .right-2\.5 {
1521
+ right: 0.625rem;
1522
+ }
1523
+ .top-0 {
1524
+ top: 0px;
1525
+ }
1526
+ .top-2 {
1527
+ top: 0.5rem;
1528
+ }
1529
+ .top-2\.5 {
1530
+ top: 0.625rem;
1531
+ }
1532
+ .z-10 {
1533
+ z-index: 10;
1534
+ }
1535
+ .z-50 {
1536
+ z-index: 50;
1537
+ }
1538
+ .my-2 {
1539
+ margin-top: 0.5rem;
1540
+ margin-bottom: 0.5rem;
1541
+ }
1542
+ .mb-2 {
1543
+ margin-bottom: 0.5rem;
1544
+ }
1545
+ .mb-4 {
1546
+ margin-bottom: 1rem;
1547
+ }
1548
+ .mr-2 {
1549
+ margin-right: 0.5rem;
1550
+ }
1551
+ .ml-1 {
1552
+ margin-left: 0.25rem;
1553
+ }
1554
+ .ml-2 {
1555
+ margin-left: 0.5rem;
1556
+ }
1557
+ .mr-5 {
1558
+ margin-right: 1.25rem;
1559
+ }
1560
+ .mt-2 {
1561
+ margin-top: 0.5rem;
1562
+ }
1563
+ .block {
1564
+ display: block;
1565
+ }
1566
+ .flex {
1567
+ display: flex;
1568
+ }
1569
+ .inline-flex {
1570
+ display: inline-flex;
1571
+ }
1572
+ .contents {
1573
+ display: contents;
1574
+ }
1575
+ .h-2 {
1576
+ height: 0.5rem;
1577
+ }
1578
+ .h-3 {
1579
+ height: 0.75rem;
1580
+ }
1581
+ .h-4 {
1582
+ height: 1rem;
1583
+ }
1584
+ .h-5 {
1585
+ height: 1.25rem;
1586
+ }
1587
+ .h-6 {
1588
+ height: 1.5rem;
1589
+ }
1590
+ .h-8 {
1591
+ height: 2rem;
1592
+ }
1593
+ .h-96 {
1594
+ height: 24rem;
1595
+ }
1596
+ .h-full {
1597
+ height: 100%;
1598
+ }
1599
+ .h-screen {
1600
+ height: 100vh;
1601
+ }
1602
+ .w-1\/2 {
1603
+ width: 50%;
1604
+ }
1605
+ .w-1\/3 {
1606
+ width: 33.333333%;
1607
+ }
1608
+ .w-11 {
1609
+ width: 2.75rem;
1610
+ }
1611
+ .w-2\/3 {
1612
+ width: 66.666667%;
1613
+ }
1614
+ .w-3 {
1615
+ width: 0.75rem;
1616
+ }
1617
+ .w-4 {
1618
+ width: 1rem;
1619
+ }
1620
+ .w-5 {
1621
+ width: 1.25rem;
1622
+ }
1623
+ .w-8 {
1624
+ width: 2rem;
1625
+ }
1626
+ .w-80 {
1627
+ width: 20rem;
1628
+ }
1629
+ .w-full {
1630
+ width: 100%;
1631
+ }
1632
+ .max-w-4xl {
1633
+ max-width: 56rem;
1634
+ }
1635
+ .rotate-90 {
1636
+ --tw-rotate: 90deg;
1637
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y))
1638
+ rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y))
1639
+ scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
1640
+ }
1641
+ .transform {
1642
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y))
1643
+ rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y))
1644
+ scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
1645
+ }
1646
+ .cursor-pointer {
1647
+ cursor: pointer;
1648
+ }
1649
+ .appearance-none {
1650
+ -webkit-appearance: none;
1651
+ -moz-appearance: none;
1652
+ appearance: none;
1653
+ }
1654
+ .flex-col {
1655
+ flex-direction: column;
1656
+ }
1657
+ .fill-current {
1658
+ fill: currentColor;
1659
+ }
1660
+ .flex-wrap {
1661
+ flex-wrap: wrap;
1662
+ }
1663
+ .items-center {
1664
+ align-items: center;
1665
+ }
1666
+ .justify-center {
1667
+ justify-content: center;
1668
+ }
1669
+ .gap-px {
1670
+ gap: 1px;
1671
+ }
1672
+ .space-x-1 > :not([hidden]) ~ :not([hidden]) {
1673
+ --tw-space-x-reverse: 0;
1674
+ margin-right: calc(0.25rem * var(--tw-space-x-reverse));
1675
+ margin-left: calc(0.25rem * calc(1 - var(--tw-space-x-reverse)));
1676
+ }
1677
+ .space-x-2 > :not([hidden]) ~ :not([hidden]) {
1678
+ --tw-space-x-reverse: 0;
1679
+ margin-right: calc(0.5rem * var(--tw-space-x-reverse));
1680
+ margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));
1681
+ }
1682
+ .divide-x > :not([hidden]) ~ :not([hidden]) {
1683
+ --tw-divide-x-reverse: 0;
1684
+ border-right-width: calc(1px * var(--tw-divide-x-reverse));
1685
+ border-left-width: calc(1px * calc(1 - var(--tw-divide-x-reverse)));
1686
+ }
1687
+ .divide-y > :not([hidden]) ~ :not([hidden]) {
1688
+ --tw-divide-y-reverse: 0;
1689
+ border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));
1690
+ border-bottom-width: calc(1px * var(--tw-divide-y-reverse));
1691
+ }
1692
+ .overflow-hidden {
1693
+ overflow: hidden;
1694
+ }
1695
+ .overflow-y-auto {
1696
+ overflow-y: auto;
1697
+ }
1698
+ .rounded {
1699
+ border-radius: 0.25rem;
1700
+ }
1701
+ .rounded-full {
1702
+ border-radius: 9999px;
1703
+ }
1704
+ .rounded-lg {
1705
+ border-radius: 0.5rem;
1706
+ }
1707
+ .rounded-br {
1708
+ border-bottom-right-radius: 0.25rem;
1709
+ }
1710
+ .border {
1711
+ border-width: 1px;
1712
+ }
1713
+ .border-4 {
1714
+ border-width: 4px;
1715
+ }
1716
+ .border-b {
1717
+ border-bottom-width: 1px;
1718
+ }
1719
+ .border-l {
1720
+ border-left-width: 1px;
1721
+ }
1722
+ .border-r {
1723
+ border-right-width: 1px;
1724
+ }
1725
+ .border-t {
1726
+ border-top-width: 1px;
1727
+ }
1728
+ .border-solid {
1729
+ border-style: solid;
1730
+ }
1731
+ .border-dashed {
1732
+ border-style: dashed;
1733
+ }
1734
+ .border-gray-200 {
1735
+ --tw-border-opacity: 1;
1736
+ border-color: rgb(229 231 235 / var(--tw-border-opacity));
1737
+ }
1738
+ .border-gray-300 {
1739
+ --tw-border-opacity: 1;
1740
+ border-color: rgb(209 213 219 / var(--tw-border-opacity));
1741
+ }
1742
+ .border-gray-400 {
1743
+ --tw-border-opacity: 1;
1744
+ border-color: rgb(156 163 175 / var(--tw-border-opacity));
1745
+ }
1746
+ .border-white {
1747
+ --tw-border-opacity: 1;
1748
+ border-color: rgb(255 255 255 / var(--tw-border-opacity));
1749
+ }
1750
+ .bg-black {
1751
+ --tw-bg-opacity: 1;
1752
+ background-color: rgb(0 0 0 / var(--tw-bg-opacity));
1753
+ }
1754
+ .bg-blue-600 {
1755
+ --tw-bg-opacity: 1;
1756
+ background-color: rgb(37 99 235 / var(--tw-bg-opacity));
1757
+ }
1758
+ .bg-cyan-600 {
1759
+ --tw-bg-opacity: 1;
1760
+ background-color: rgb(8 145 178 / var(--tw-bg-opacity));
1761
+ }
1762
+ .bg-gray-100 {
1763
+ --tw-bg-opacity: 1;
1764
+ background-color: rgb(243 244 246 / var(--tw-bg-opacity));
1765
+ }
1766
+ .bg-gray-200 {
1767
+ --tw-bg-opacity: 1;
1768
+ background-color: rgb(229 231 235 / var(--tw-bg-opacity));
1769
+ }
1770
+ .bg-gray-50 {
1771
+ --tw-bg-opacity: 1;
1772
+ background-color: rgb(249 250 251 / var(--tw-bg-opacity));
1773
+ }
1774
+ .bg-gray-600 {
1775
+ --tw-bg-opacity: 1;
1776
+ background-color: rgb(75 85 99 / var(--tw-bg-opacity));
1777
+ }
1778
+ .bg-green-600 {
1779
+ --tw-bg-opacity: 1;
1780
+ background-color: rgb(22 163 74 / var(--tw-bg-opacity));
1781
+ }
1782
+ .bg-orange-600 {
1783
+ --tw-bg-opacity: 1;
1784
+ background-color: rgb(234 88 12 / var(--tw-bg-opacity));
1785
+ }
1786
+ .bg-red-600 {
1787
+ --tw-bg-opacity: 1;
1788
+ background-color: rgb(220 38 38 / var(--tw-bg-opacity));
1789
+ }
1790
+ .bg-transparent {
1791
+ background-color: transparent;
1792
+ }
1793
+ .bg-white {
1794
+ --tw-bg-opacity: 1;
1795
+ background-color: rgb(255 255 255 / var(--tw-bg-opacity));
1796
+ }
1797
+ .p-1 {
1798
+ padding: 0.25rem;
1799
+ }
1800
+ .p-1\.5 {
1801
+ padding: 0.375rem;
1802
+ }
1803
+ .p-2 {
1804
+ padding: 0.5rem;
1805
+ }
1806
+ .p-2\.5 {
1807
+ padding: 0.625rem;
1808
+ }
1809
+ .p-4 {
1810
+ padding: 1rem;
1811
+ }
1812
+ .p-5 {
1813
+ padding: 1.25rem;
1814
+ }
1815
+ .px-2 {
1816
+ padding-left: 0.5rem;
1817
+ padding-right: 0.5rem;
1818
+ }
1819
+ .px-4 {
1820
+ padding-left: 1rem;
1821
+ padding-right: 1rem;
1822
+ }
1823
+ .py-1 {
1824
+ padding-top: 0.25rem;
1825
+ padding-bottom: 0.25rem;
1826
+ }
1827
+ .py-2 {
1828
+ padding-top: 0.5rem;
1829
+ padding-bottom: 0.5rem;
1830
+ }
1831
+ .py-4 {
1832
+ padding-top: 1rem;
1833
+ padding-bottom: 1rem;
1834
+ }
1835
+ .text-center {
1836
+ text-align: center;
1837
+ }
1838
+ .text-base {
1839
+ font-size: 1rem;
1840
+ line-height: 1.5rem;
1841
+ }
1842
+ .text-sm {
1843
+ font-size: 0.875rem;
1844
+ line-height: 1.25rem;
1845
+ }
1846
+ .text-xs {
1847
+ font-size: 0.75rem;
1848
+ line-height: 1rem;
1849
+ }
1850
+ .font-medium {
1851
+ font-weight: 500;
1852
+ }
1853
+ .font-semibold {
1854
+ font-weight: 600;
1855
+ }
1856
+ .text-gray-400 {
1857
+ --tw-text-opacity: 1;
1858
+ color: rgb(156 163 175 / var(--tw-text-opacity));
1859
+ }
1860
+ .text-gray-500 {
1861
+ --tw-text-opacity: 1;
1862
+ color: rgb(107 114 128 / var(--tw-text-opacity));
1863
+ }
1864
+ .text-gray-600 {
1865
+ --tw-text-opacity: 1;
1866
+ color: rgb(75 85 99 / var(--tw-text-opacity));
1867
+ }
1868
+ .text-gray-700 {
1869
+ --tw-text-opacity: 1;
1870
+ color: rgb(55 65 81 / var(--tw-text-opacity));
1871
+ }
1872
+ .text-gray-900 {
1873
+ --tw-text-opacity: 1;
1874
+ color: rgb(17 24 39 / var(--tw-text-opacity));
1875
+ }
1876
+ .text-orange-600 {
1877
+ --tw-text-opacity: 1;
1878
+ color: rgb(234 88 12 / var(--tw-text-opacity));
1879
+ }
1880
+ .invert {
1881
+ --tw-invert: invert(100%);
1882
+ filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast)
1883
+ var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert)
1884
+ var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
1885
+ }
1886
+ .transition-transform {
1887
+ transition-property: transform;
1888
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
1889
+ transition-duration: 0.15s;
1890
+ }
1891
+ .scroll-hide {
1892
+ -ms-overflow-style: none;
1893
+ scrollbar-width: none;
1894
+ }
1895
+ .sr-only {
1896
+ clip: rect(0, 0, 0, 0);
1897
+ position: absolute;
1898
+ margin: -1px;
1899
+ border-width: 0;
1900
+ padding: 0;
1901
+ width: 1px;
1902
+ height: 1px;
1903
+ overflow: hidden;
1904
+ white-space: nowrap;
1905
+ }
1906
+ .scroll-hide::-webkit-scrollbar {
1907
+ display: none;
1908
+ }
1909
+ .gradio-container {
1910
+ -webkit-text-size-adjust: 100%;
1911
+ line-height: 1.5;
1912
+ font-family:
1913
+ Source Sans Pro,
1914
+ ui-sans-serif,
1915
+ system-ui,
1916
+ -apple-system,
1917
+ BlinkMacSystemFont,
1918
+ Segoe UI,
1919
+ Roboto,
1920
+ Helvetica Neue,
1921
+ Arial,
1922
+ Noto Sans,
1923
+ sans-serif,
1924
+ "Apple Color Emoji",
1925
+ "Segoe UI Emoji",
1926
+ Segoe UI Symbol,
1927
+ "Noto Color Emoji";
1928
+ -moz-tab-size: 4;
1929
+ -o-tab-size: 4;
1930
+ tab-size: 4;
1931
+ }
1932
+ .cropper-container {
1933
+ position: relative;
1934
+ touch-action: none;
1935
+ font-size: 0;
1936
+ line-height: 0;
1937
+ direction: ltr;
1938
+ -webkit-user-select: none;
1939
+ -moz-user-select: none;
1940
+ user-select: none;
1941
+ }
1942
+ .cropper-container img {
1943
+ display: block;
1944
+ image-orientation: 0deg;
1945
+ width: 100%;
1946
+ min-width: 0 !important;
1947
+ max-width: none !important;
1948
+ height: 100%;
1949
+ min-height: 0 !important;
1950
+ max-height: none !important;
1951
+ }
1952
+ .cropper-wrap-box,
1953
+ .cropper-canvas,
1954
+ .cropper-drag-box,
1955
+ .cropper-crop-box,
1956
+ .cropper-modal {
1957
+ position: absolute;
1958
+ top: 0;
1959
+ right: 0;
1960
+ bottom: 0;
1961
+ left: 0;
1962
+ }
1963
+ .cropper-wrap-box,
1964
+ .cropper-canvas {
1965
+ overflow: hidden;
1966
+ }
1967
+ .cropper-drag-box {
1968
+ opacity: 0;
1969
+ background-color: #fff;
1970
+ }
1971
+ .cropper-modal {
1972
+ opacity: 0.5;
1973
+ background-color: #000;
1974
+ }
1975
+ .cropper-view-box {
1976
+ display: block;
1977
+ outline: 1px solid #39f;
1978
+ outline-color: #3399ffbf;
1979
+ width: 100%;
1980
+ height: 100%;
1981
+ overflow: hidden;
1982
+ }
1983
+ .cropper-dashed {
1984
+ display: block;
1985
+ position: absolute;
1986
+ opacity: 0.5;
1987
+ border: 0 dashed #eee;
1988
+ }
1989
+ .cropper-dashed.dashed-h {
1990
+ top: calc(100% / 3);
1991
+ left: 0;
1992
+ border-top-width: 1px;
1993
+ border-bottom-width: 1px;
1994
+ width: 100%;
1995
+ height: calc(100% / 3);
1996
+ }
1997
+ .cropper-dashed.dashed-v {
1998
+ top: 0;
1999
+ left: calc(100% / 3);
2000
+ border-right-width: 1px;
2001
+ border-left-width: 1px;
2002
+ width: calc(100% / 3);
2003
+ height: 100%;
2004
+ }
2005
+ .cropper-center {
2006
+ display: block;
2007
+ position: absolute;
2008
+ top: 50%;
2009
+ left: 50%;
2010
+ opacity: 0.75;
2011
+ width: 0;
2012
+ height: 0;
2013
+ }
2014
+ .cropper-center:before,
2015
+ .cropper-center:after {
2016
+ display: block;
2017
+ position: absolute;
2018
+ background-color: #eee;
2019
+ content: " ";
2020
+ }
2021
+ .cropper-center:before {
2022
+ top: 0;
2023
+ left: -3px;
2024
+ width: 7px;
2025
+ height: 1px;
2026
+ }
2027
+ .cropper-center:after {
2028
+ top: -3px;
2029
+ left: 0;
2030
+ width: 1px;
2031
+ height: 7px;
2032
+ }
2033
+ .cropper-face,
2034
+ .cropper-line,
2035
+ .cropper-point {
2036
+ display: block;
2037
+ position: absolute;
2038
+ opacity: 0.1;
2039
+ width: 100%;
2040
+ height: 100%;
2041
+ }
2042
+ .cropper-face {
2043
+ top: 0;
2044
+ left: 0;
2045
+ background-color: #fff;
2046
+ }
2047
+ .cropper-line {
2048
+ background-color: #39f;
2049
+ }
2050
+ .cropper-line.line-e {
2051
+ top: 0;
2052
+ right: -3px;
2053
+ cursor: ew-resize;
2054
+ width: 5px;
2055
+ }
2056
+ .cropper-line.line-n {
2057
+ top: -3px;
2058
+ left: 0;
2059
+ cursor: ns-resize;
2060
+ height: 5px;
2061
+ }
2062
+ .cropper-line.line-w {
2063
+ top: 0;
2064
+ left: -3px;
2065
+ cursor: ew-resize;
2066
+ width: 5px;
2067
+ }
2068
+ .cropper-line.line-s {
2069
+ bottom: -3px;
2070
+ left: 0;
2071
+ cursor: ns-resize;
2072
+ height: 5px;
2073
+ }
2074
+ .cropper-point {
2075
+ opacity: 0.75;
2076
+ background-color: #39f;
2077
+ width: 5px;
2078
+ height: 5px;
2079
+ }
2080
+ .cropper-point.point-e {
2081
+ top: 50%;
2082
+ right: -3px;
2083
+ cursor: ew-resize;
2084
+ margin-top: -3px;
2085
+ }
2086
+ .cropper-point.point-n {
2087
+ top: -3px;
2088
+ left: 50%;
2089
+ cursor: ns-resize;
2090
+ margin-left: -3px;
2091
+ }
2092
+ .cropper-point.point-w {
2093
+ top: 50%;
2094
+ left: -3px;
2095
+ cursor: ew-resize;
2096
+ margin-top: -3px;
2097
+ }
2098
+ .cropper-point.point-s {
2099
+ bottom: -3px;
2100
+ left: 50%;
2101
+ cursor: s-resize;
2102
+ margin-left: -3px;
2103
+ }
2104
+ .cropper-point.point-ne {
2105
+ top: -3px;
2106
+ right: -3px;
2107
+ cursor: nesw-resize;
2108
+ }
2109
+ .cropper-point.point-nw {
2110
+ top: -3px;
2111
+ left: -3px;
2112
+ cursor: nwse-resize;
2113
+ }
2114
+ .cropper-point.point-sw {
2115
+ bottom: -3px;
2116
+ left: -3px;
2117
+ cursor: nesw-resize;
2118
+ }
2119
+ .cropper-point.point-se {
2120
+ right: -3px;
2121
+ bottom: -3px;
2122
+ opacity: 1;
2123
+ cursor: nwse-resize;
2124
+ width: 20px;
2125
+ height: 20px;
2126
+ }
2127
+ @media (min-width: 768px) {
2128
+ .cropper-point.point-se {
2129
+ width: 15px;
2130
+ height: 15px;
2131
+ }
2132
+ }
2133
+ @media (min-width: 992px) {
2134
+ .cropper-point.point-se {
2135
+ width: 10px;
2136
+ height: 10px;
2137
+ }
2138
+ }
2139
+ @media (min-width: 1200px) {
2140
+ .cropper-point.point-se {
2141
+ opacity: 0.75;
2142
+ width: 5px;
2143
+ height: 5px;
2144
+ }
2145
+ }
2146
+ .cropper-point.point-se:before {
2147
+ display: block;
2148
+ position: absolute;
2149
+ right: -50%;
2150
+ bottom: -50%;
2151
+ opacity: 0;
2152
+ background-color: #39f;
2153
+ width: 200%;
2154
+ height: 200%;
2155
+ content: " ";
2156
+ }
2157
+ .cropper-invisible {
2158
+ opacity: 0;
2159
+ }
2160
+ .cropper-bg {
2161
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC);
2162
+ }
2163
+ .cropper-hide {
2164
+ display: block;
2165
+ position: absolute;
2166
+ width: 0;
2167
+ height: 0;
2168
+ }
2169
+ .cropper-hidden {
2170
+ display: none !important;
2171
+ }
2172
+ .cropper-move {
2173
+ cursor: move;
2174
+ }
2175
+ .cropper-crop {
2176
+ cursor: crosshair;
2177
+ }
2178
+ .cropper-disabled .cropper-drag-box,
2179
+ .cropper-disabled .cropper-face,
2180
+ .cropper-disabled .cropper-line,
2181
+ .cropper-disabled .cropper-point {
2182
+ cursor: not-allowed;
2183
+ }
2184
+ .after\:absolute:after {
2185
+ content: var(--tw-content);
2186
+ position: absolute;
2187
+ }
2188
+ .after\:left-\[2px\]:after {
2189
+ content: var(--tw-content);
2190
+ left: 2px;
2191
+ }
2192
+ .after\:top-0:after {
2193
+ content: var(--tw-content);
2194
+ top: 0px;
2195
+ }
2196
+ .after\:top-0\.5:after {
2197
+ content: var(--tw-content);
2198
+ top: 0.125rem;
2199
+ }
2200
+ .after\:h-5:after {
2201
+ content: var(--tw-content);
2202
+ height: 1.25rem;
2203
+ }
2204
+ .after\:w-5:after {
2205
+ content: var(--tw-content);
2206
+ width: 1.25rem;
2207
+ }
2208
+ .after\:rounded-full:after {
2209
+ content: var(--tw-content);
2210
+ border-radius: 9999px;
2211
+ }
2212
+ .after\:border:after {
2213
+ content: var(--tw-content);
2214
+ border-width: 1px;
2215
+ }
2216
+ .after\:border-gray-300:after {
2217
+ content: var(--tw-content);
2218
+ --tw-border-opacity: 1;
2219
+ border-color: rgb(209 213 219 / var(--tw-border-opacity));
2220
+ }
2221
+ .after\:bg-white:after {
2222
+ content: var(--tw-content);
2223
+ --tw-bg-opacity: 1;
2224
+ background-color: rgb(255 255 255 / var(--tw-bg-opacity));
2225
+ }
2226
+ .after\:transition-all:after {
2227
+ content: var(--tw-content);
2228
+ transition-property: all;
2229
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
2230
+ transition-duration: 0.15s;
2231
+ }
2232
+ .after\:content-\[\'\'\]:after {
2233
+ --tw-content: "";
2234
+ content: var(--tw-content);
2235
+ }
2236
+ .hover\:bg-gray-200:hover {
2237
+ --tw-bg-opacity: 1;
2238
+ background-color: rgb(229 231 235 / var(--tw-bg-opacity));
2239
+ }
2240
+ .hover\:text-gray-600:hover {
2241
+ --tw-text-opacity: 1;
2242
+ color: rgb(75 85 99 / var(--tw-text-opacity));
2243
+ }
2244
+ .hover\:text-gray-900:hover {
2245
+ --tw-text-opacity: 1;
2246
+ color: rgb(17 24 39 / var(--tw-text-opacity));
2247
+ }
2248
+ .hover\:text-orange-600:hover {
2249
+ --tw-text-opacity: 1;
2250
+ color: rgb(234 88 12 / var(--tw-text-opacity));
2251
+ }
2252
+ .focus\:border-blue-500:focus {
2253
+ --tw-border-opacity: 1;
2254
+ border-color: rgb(59 130 246 / var(--tw-border-opacity));
2255
+ }
2256
+ .focus\:ring-blue-500:focus {
2257
+ --tw-ring-opacity: 1;
2258
+ --tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity));
2259
+ }
2260
+ .peer:checked ~ .peer-checked\:bg-orange-400 {
2261
+ --tw-bg-opacity: 1;
2262
+ background-color: rgb(251 146 60 / var(--tw-bg-opacity));
2263
+ }
2264
+ .peer:checked ~ .peer-checked\:after\:translate-x-full:after {
2265
+ content: var(--tw-content);
2266
+ --tw-translate-x: 100%;
2267
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y))
2268
+ rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y))
2269
+ scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
2270
+ }
2271
+ .peer:checked ~ .peer-checked\:after\:border-white:after {
2272
+ content: var(--tw-content);
2273
+ --tw-border-opacity: 1;
2274
+ border-color: rgb(255 255 255 / var(--tw-border-opacity));
2275
+ }
2276
+ .peer:focus ~ .peer-focus\:ring-4 {
2277
+ --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0
2278
+ var(--tw-ring-offset-width) var(--tw-ring-offset-color);
2279
+ --tw-ring-shadow: var(--tw-ring-inset) 0 0 0
2280
+ calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);
2281
+ box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow),
2282
+ var(--tw-shadow, 0 0 #0000);
2283
+ }
2284
+ .peer:focus ~ .peer-focus\:ring-orange-300 {
2285
+ --tw-ring-opacity: 1;
2286
+ --tw-ring-color: rgb(253 186 116 / var(--tw-ring-opacity));
2287
+ }
2288
+ @media (prefers-color-scheme: dark) {
2289
+ .dark\:border-gray-600 {
2290
+ --tw-border-opacity: 1;
2291
+ border-color: rgb(75 85 99 / var(--tw-border-opacity));
2292
+ }
2293
+ .dark\:bg-gray-700 {
2294
+ --tw-bg-opacity: 1;
2295
+ background-color: rgb(55 65 81 / var(--tw-bg-opacity));
2296
+ }
2297
+ .dark\:bg-gray-800 {
2298
+ --tw-bg-opacity: 1;
2299
+ background-color: rgb(31 41 55 / var(--tw-bg-opacity));
2300
+ }
2301
+ .dark\:text-gray-400 {
2302
+ --tw-text-opacity: 1;
2303
+ color: rgb(156 163 175 / var(--tw-text-opacity));
2304
+ }
2305
+ .dark\:text-white {
2306
+ --tw-text-opacity: 1;
2307
+ color: rgb(255 255 255 / var(--tw-text-opacity));
2308
+ }
2309
+ .dark\:placeholder-gray-400::-moz-placeholder {
2310
+ --tw-placeholder-opacity: 1;
2311
+ color: rgb(156 163 175 / var(--tw-placeholder-opacity));
2312
+ }
2313
+ .dark\:placeholder-gray-400::placeholder {
2314
+ --tw-placeholder-opacity: 1;
2315
+ color: rgb(156 163 175 / var(--tw-placeholder-opacity));
2316
+ }
2317
+ .dark\:hover\:bg-gray-600:hover {
2318
+ --tw-bg-opacity: 1;
2319
+ background-color: rgb(75 85 99 / var(--tw-bg-opacity));
2320
+ }
2321
+ .dark\:hover\:text-white:hover {
2322
+ --tw-text-opacity: 1;
2323
+ color: rgb(255 255 255 / var(--tw-text-opacity));
2324
+ }
2325
+ .dark\:focus\:border-blue-500:focus {
2326
+ --tw-border-opacity: 1;
2327
+ border-color: rgb(59 130 246 / var(--tw-border-opacity));
2328
+ }
2329
+ .dark\:focus\:ring-blue-500:focus {
2330
+ --tw-ring-opacity: 1;
2331
+ --tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity));
2332
+ }
2333
+ .peer:focus ~ .dark\:peer-focus\:ring-orange-800 {
2334
+ --tw-ring-opacity: 1;
2335
+ --tw-ring-color: rgb(154 52 18 / var(--tw-ring-opacity));
2336
+ }
2337
+ }
2338
+ .minh {
2339
+ height: 600px;
2340
+ }
2341
+
2342
+ .-top-1 {
2343
+ top: -0.25rem;
2344
+ }
2345
+
2346
+ .left-6 {
2347
+ left: 1.5rem;
2348
+ }
2349
+
2350
+ .h-4 {
2351
+ height: 1rem;
2352
+ }
2353
+
2354
+ .w-4 {
2355
+ width: 1rem;
2356
+ }
2357
+
2358
+ .w-max {
2359
+ width: max-content;
2360
+ }
2361
+
2362
+ .cursor-pointer {
2363
+ cursor: pointer;
2364
+ }
2365
+
2366
+ .rounded {
2367
+ border-radius: 0.25rem;
2368
+ }
2369
+
2370
+ .bg-gray-900 {
2371
+ --tw-bg-opacity: 1;
2372
+ background-color: rgb(17 24 39 / var(--tw-bg-opacity));
2373
+ }
2374
+
2375
+ .fill-current {
2376
+ fill: currentColor;
2377
+ }
2378
+
2379
+ .p-10 {
2380
+ padding: 2.5rem;
2381
+ }
2382
+
2383
+ .px-2 {
2384
+ padding-left: 0.5rem;
2385
+ padding-right: 0.5rem;
2386
+ }
2387
+
2388
+ .py-1 {
2389
+ padding-top: 0.25rem;
2390
+ padding-bottom: 0.25rem;
2391
+ }
2392
+
2393
+ .text-sm {
2394
+ font-size: 0.875rem;
2395
+ line-height: 1.25rem;
2396
+ }
2397
+
2398
+ .font-medium {
2399
+ font-weight: 500;
2400
+ }
2401
+
2402
+ .text-gray-50 {
2403
+ --tw-text-opacity: 1;
2404
+ color: rgb(249 250 251 / var(--tw-text-opacity));
2405
+ }
2406
+
2407
+ .text-gray-500 {
2408
+ --tw-text-opacity: 1;
2409
+ color: rgb(107 114 128 / var(--tw-text-opacity));
2410
+ }
2411
+
2412
+ .opacity-0 {
2413
+ opacity: 0;
2414
+ }
2415
+
2416
+ .opacity-100 {
2417
+ opacity: 1;
2418
+ }
2419
+
2420
+ .shadow {
2421
+ --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
2422
+ --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color),
2423
+ 0 1px 2px -1px var(--tw-shadow-color);
2424
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),
2425
+ var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
2426
+ }
2427
+
2428
+ .transition-opacity {
2429
+ transition-property: opacity;
2430
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
2431
+ transition-duration: 150ms;
2432
+ }
2433
+
2434
+ .hover\:text-orange-600:hover {
2435
+ --tw-text-opacity: 1;
2436
+ color: rgb(234 88 12 / var(--tw-text-opacity));
2437
+ }
2438
+ </style>
gradio_molecule3d/frontend/shared/loading_spinner.svelte ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!-- By Sam Herbert (@sherb), for everyone. More @ http://goo.gl/7AJzbL -->
2
+ <svg
3
+ width="20"
4
+ height="20 "
5
+ viewBox="0 0 38 38"
6
+ xmlns="http://www.w3.org/2000/svg"
7
+ >
8
+ <defs>
9
+ <linearGradient x1="8.042%" y1="0%" x2="65.682%" y2="23.865%" id="a">
10
+ <stop stop-color="#FF7C00" stop-opacity="0" offset="0%" />
11
+ <stop stop-color="#FF7C00" stop-opacity=".631" offset="63.146%" />
12
+ <stop stop-color="#FF7C00" offset="100%" />
13
+ </linearGradient>
14
+ </defs>
15
+ <g fill="none" fill-rule="evenodd">
16
+ <g transform="translate(1 1)">
17
+ <path
18
+ d="M36 18c0-9.94-8.06-18-18-18"
19
+ id="Oval-2"
20
+ stroke="url(#a)"
21
+ stroke-width="2"
22
+ >
23
+ <animateTransform
24
+ attributeName="transform"
25
+ type="rotate"
26
+ from="0 18 18"
27
+ to="360 18 18"
28
+ dur="0.9s"
29
+ repeatCount="indefinite"
30
+ />
31
+ </path>
32
+ <circle fill="#FFf" cx="36" cy="18" r="1">
33
+ <animateTransform
34
+ attributeName="transform"
35
+ type="rotate"
36
+ from="0 18 18"
37
+ to="360 18 18"
38
+ dur="0.9s"
39
+ repeatCount="indefinite"
40
+ />
41
+ </circle>
42
+ </g>
43
+ </g>
44
+ </svg>
gradio_molecule3d/frontend/shared/utils.ts ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import type { FileData } from "@gradio/client";
2
+
3
+ export const prettyBytes = (bytes: number): string => {
4
+ let units = ["B", "KB", "MB", "GB", "PB"];
5
+ let i = 0;
6
+ while (bytes > 1024) {
7
+ bytes /= 1024;
8
+ i++;
9
+ }
10
+ let unit = units[i];
11
+ return bytes.toFixed(1) + "&nbsp;" + unit;
12
+ };
gradio_molecule3d/frontend/style.css ADDED
@@ -0,0 +1 @@
 
 
1
+ @import "tailwindcss";
gradio_molecule3d/package.json ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ {
2
+ "devDependencies": {
3
+ "@gradio/preview": "^0.13.0"
4
+ }
5
+ }
gradio_molecule3d/pyproject.toml ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [build-system]
2
+ requires = [
3
+ "hatchling",
4
+ "hatch-requirements-txt",
5
+ "hatch-fancy-pypi-readme>=22.5.0",
6
+ ]
7
+ build-backend = "hatchling.build"
8
+
9
+ [project]
10
+ name = "gradio_molecule3d"
11
+ version = "0.0.7"
12
+ description = "Python library for easily interacting with trained machine learning models"
13
+ readme = "README.md"
14
+ license = "Apache-2.0"
15
+ requires-python = ">=3.8"
16
+ authors = [{ name = "YOUR NAME", email = "[email protected]" }]
17
+ keywords = [
18
+ "machine learning",
19
+ "reproducibility",
20
+ "visualization",
21
+ "gradio",
22
+ "gradio custom component",
23
+ "gradio-template-File",
24
+ "protein"
25
+ ]
26
+ # Add dependencies here
27
+ dependencies = ["gradio>=4.0,<6.0"]
28
+ classifiers = [
29
+ 'Development Status :: 3 - Alpha',
30
+ 'Operating System :: OS Independent',
31
+ 'Programming Language :: Python :: 3',
32
+ 'Programming Language :: Python :: 3 :: Only',
33
+ 'Programming Language :: Python :: 3.8',
34
+ 'Programming Language :: Python :: 3.9',
35
+ 'Programming Language :: Python :: 3.10',
36
+ 'Programming Language :: Python :: 3.11',
37
+ 'Topic :: Scientific/Engineering',
38
+ 'Topic :: Scientific/Engineering :: Artificial Intelligence',
39
+ 'Topic :: Scientific/Engineering :: Visualization',
40
+ ]
41
+
42
+
43
+ [project.optional-dependencies]
44
+ dev = ["build", "twine"]
45
+
46
+ [tool.hatch.build]
47
+ artifacts = ["/backend/gradio_molecule3d/templates", "*.pyi", "/Users/zulissi/micromamba/envs/gradio/lib/python3.12/site-packages/gradio_molecule3d/templates", "/private/home/zulissi/conda_envs/fairchem_020625/lib/python3.12/site-packages/gradio_molecule3d/templates"]
48
+
49
+ [tool.hatch.build.targets.wheel]
50
+ packages = ["/backend/gradio_molecule3d"]
hf_calculator.py ADDED
@@ -0,0 +1,121 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Copyright (c) Meta Platforms, Inc. and affiliates.
3
+
4
+ This source code is licensed under the MIT license found in the
5
+ LICENSE file in the root directory of this source tree.
6
+ """
7
+
8
+ import hashlib
9
+ import json
10
+ import os
11
+ from pathlib import Path
12
+
13
+ import ase
14
+ import gradio as gr
15
+ import huggingface_hub as hf_hub
16
+ from ase.calculators.calculator import Calculator
17
+ from ase.db.core import now
18
+ from ase.db.row import AtomsRow
19
+ from ase.io.jsonio import decode, encode
20
+
21
+
22
+ def hash_save_file(atoms: ase.Atoms, task_name, path: Path | str):
23
+ atoms = atoms.copy()
24
+ atoms.info["task_name"] = task_name
25
+ atoms.write(
26
+ Path(path)
27
+ / f"{hashlib.md5(atoms_to_json(atoms).encode('utf-8')).hexdigest()}.traj"
28
+ )
29
+ return
30
+
31
+
32
+ class HFEndpointCalculator(Calculator):
33
+
34
+ # A simple calculator that uses the Hugging Face Inference Endpoints to run
35
+
36
+ implemented_properties = ["energy", "free_energy", "stress", "forces"]
37
+
38
+ def __init__(
39
+ self,
40
+ atoms,
41
+ endpoint_url,
42
+ oauth_token,
43
+ task_name,
44
+ example=False,
45
+ *args,
46
+ **kwargs,
47
+ ):
48
+ # If we have an example structure, we don't need to check for authentication
49
+ # Otherwise, we need to check if the user is authenticated and has gated access to the UMA models
50
+ if not example:
51
+ try:
52
+ hf_hub.HfApi().auth_check(
53
+ repo_id="facebook/OMAT24", token=oauth_token.token
54
+ )
55
+ hash_save_file(atoms, task_name, "/data/custom_inputs/")
56
+ except (hf_hub.errors.HfHubHTTPError, AttributeError):
57
+ raise gr.Error(
58
+ "You need to log in to HF and have gated model access to UMA before running your own simulations!"
59
+ )
60
+
61
+ self.client = hf_hub.InferenceClient(
62
+ model=endpoint_url, token=os.environ["HF_TOKEN"]
63
+ )
64
+ self.atoms = atoms
65
+ self.task_name = task_name
66
+
67
+ super().__init__(*args, **kwargs)
68
+
69
+ def calculate(self, atoms, properties, system_changes):
70
+ Calculator.calculate(self, atoms, properties, system_changes)
71
+
72
+ task_name = self.task_name.lower()
73
+ if task_name == "omc":
74
+ task_name = "osc"
75
+
76
+ # Run inference via a post request to the endpoint
77
+ try:
78
+ response = self.client.post(
79
+ json={
80
+ "inputs": atoms_to_json(atoms, data=atoms.info),
81
+ "properties": properties,
82
+ "system_changes": system_changes,
83
+ "task_name": task_name,
84
+ }
85
+ )
86
+ except hf_hub.errors.BadRequestError:
87
+ hash_save_file(atoms, task_name, "/data/custom_inputs/errors/")
88
+ raise gr.Error(
89
+ "Backend failure during your calculation; if you have continued issues please file an issue in the main FAIR chemistry repo (https://github.com/facebookresearch/fairchem)."
90
+ )
91
+
92
+ # Load the response and store the results in the calc and atoms object
93
+ response_dict = decode(json.loads(response))
94
+ self.results = response_dict["results"]
95
+ atoms.info = response_dict["info"]
96
+
97
+
98
+ def atoms_to_json(atoms, data=None):
99
+ # Similar to ase.db.jsondb
100
+
101
+ mtime = now()
102
+
103
+ row = AtomsRow(atoms)
104
+ row.ctime = mtime
105
+
106
+ dct = {}
107
+ for key in row.__dict__:
108
+ if key[0] == "_" or key in row._keys or key == "id":
109
+ continue
110
+ dct[key] = row[key]
111
+
112
+ dct["mtime"] = mtime
113
+
114
+ if data:
115
+ dct["data"] = data
116
+
117
+ constraints = row.get("constraints")
118
+ if constraints:
119
+ dct["constraints"] = constraints
120
+
121
+ return encode(dct)
requirements.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ gradio
2
+ numpy
3
+ ase
4
+
5
+ # Pinned since huggingface_hub>=0.31 does not support custom inference endpoint posts
6
+ huggingface_hub<0.31
simulation_scripts.py ADDED
@@ -0,0 +1,345 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Copyright (c) Meta Platforms, Inc. and affiliates.
3
+
4
+ This source code is licensed under the MIT license found in the
5
+ LICENSE file in the root directory of this source tree.
6
+ """
7
+
8
+ import glob
9
+ import hashlib
10
+ import os
11
+ import tempfile
12
+
13
+ import ase
14
+ import ase.io
15
+ import gradio as gr
16
+ import numpy as np
17
+ from ase import units
18
+ from ase.filters import FrechetCellFilter
19
+ from ase.io.trajectory import Trajectory
20
+ from ase.md import MDLogger
21
+ from ase.md.nose_hoover_chain import NoseHooverChainNVT
22
+ from ase.md.velocitydistribution import MaxwellBoltzmannDistribution
23
+ from ase.md.verlet import VelocityVerlet
24
+ from ase.optimize import LBFGS
25
+
26
+ from hf_calculator import HFEndpointCalculator
27
+
28
+
29
+ def hash_file(file_path):
30
+ """Generate MD5 hash for a file."""
31
+ hasher = hashlib.md5()
32
+ with open(file_path, "rb") as f:
33
+ data = f.read()
34
+ hasher.update(data)
35
+ return hasher.hexdigest()
36
+
37
+
38
+ EXAMPLE_FILE_HASHES = set(
39
+ [hash_file(file_path) for file_path in glob.glob("examples/*")]
40
+ )
41
+ MAX_ATOMS = os.environ.get("MAX_ATOMS", 2000)
42
+ INFERENCE_ENDPOINT_URL = os.environ["INFERENCE_ENDPOINT_URL"]
43
+
44
+
45
+ def load_check_ase_atoms(structure_file):
46
+ # Validate and write the uploaded file content
47
+ if not structure_file:
48
+ raise gr.Error("You need an input structure file to run a simulation!")
49
+
50
+ try:
51
+ atoms = ase.io.read(structure_file)
52
+
53
+ if not (all(atoms.pbc) or np.all(~np.array(atoms.pbc))):
54
+ raise gr.Error(
55
+ "Mixed PBC are not supported yet - please set PBC all True or False in your structure before uploading"
56
+ )
57
+
58
+ if len(atoms) == 0:
59
+ raise gr.Error("Error: Structure file contains no atoms.")
60
+
61
+ if len(atoms) > MAX_ATOMS:
62
+ raise gr.Error(
63
+ f"Error: Structure file contains {len(atoms)}, which is more than {MAX_ATOMS} atoms. Please use a smaller structure for this demo, or run this on a local machine!"
64
+ )
65
+
66
+ atoms.positions -= atoms.get_center_of_mass()
67
+ cell_center = atoms.get_cell().sum(axis=0) / 2
68
+ atoms.positions += cell_center
69
+
70
+ return atoms
71
+ except Exception as e:
72
+ raise gr.Error(f"Error loading structure with ASE: {str(e)}")
73
+
74
+
75
+ def run_md_simulation(
76
+ structure_file,
77
+ num_steps,
78
+ num_prerelax_steps,
79
+ md_timestep,
80
+ temperature_k,
81
+ md_ensemble,
82
+ task_name,
83
+ total_charge,
84
+ spin_multiplicity,
85
+ explanation: str | None = None,
86
+ oauth_token: gr.OAuthToken | None = None,
87
+ progress=gr.Progress(),
88
+ ):
89
+ temp_path = None
90
+ traj_path = None
91
+ md_log_path = None
92
+ atoms = None
93
+
94
+ if task_name != "OMol":
95
+ total_charge = 0
96
+ spin_multiplicity = 0
97
+
98
+ try:
99
+
100
+ atoms = load_check_ase_atoms(structure_file)
101
+
102
+ # Check if the file is an example
103
+ example = hash_file(structure_file) in EXAMPLE_FILE_HASHES
104
+
105
+ atoms.info["charge"] = total_charge
106
+ atoms.info["spin"] = spin_multiplicity
107
+
108
+ atoms.calc = HFEndpointCalculator(
109
+ atoms,
110
+ endpoint_url=INFERENCE_ENDPOINT_URL,
111
+ oauth_token=oauth_token,
112
+ example=example,
113
+ task_name=task_name,
114
+ )
115
+
116
+ # Attach a progress callback to track in gradio
117
+ interval = 1
118
+ steps = [0]
119
+ expected_steps = num_steps + num_prerelax_steps
120
+
121
+ def update_progress():
122
+ steps[-1] += interval
123
+ progress(steps[-1] / expected_steps)
124
+
125
+ with tempfile.NamedTemporaryFile(suffix=".traj", delete=False) as traj_f:
126
+ traj_path = traj_f.name
127
+ with tempfile.NamedTemporaryFile(suffix=".log", delete=False) as log_f:
128
+ md_log_path = log_f.name
129
+
130
+ # Do a quick pre-relaxation to make sure the system is stable before starting
131
+ opt = LBFGS(atoms, logfile=md_log_path, trajectory=traj_path)
132
+ opt.attach(update_progress, interval=interval)
133
+ opt.run(fmax=0.05, steps=num_prerelax_steps)
134
+
135
+ # Initialize the velocity distribution. Since we did a relaxation, half of this
136
+ # will partition to the potential energy right away, so we double the temperature
137
+ MaxwellBoltzmannDistribution(atoms, temperature_K=temperature_k * 2)
138
+
139
+ # Initialize the MD integrator
140
+ if md_ensemble == "NVE":
141
+ dyn = VelocityVerlet(atoms, timestep=md_timestep * units.fs)
142
+ elif md_ensemble == "NVT":
143
+ dyn = NoseHooverChainNVT(
144
+ atoms,
145
+ timestep=md_timestep * units.fs,
146
+ temperature_K=temperature_k,
147
+ tdamp=10 * md_timestep * units.fs,
148
+ )
149
+ traj = Trajectory(traj_path, "a", atoms)
150
+ dyn.attach(traj.write, interval=1)
151
+ dyn.attach(update_progress, interval=interval)
152
+ dyn.attach(
153
+ MDLogger(
154
+ dyn,
155
+ atoms,
156
+ md_log_path,
157
+ header=True,
158
+ stress=False,
159
+ peratom=True,
160
+ mode="a",
161
+ ),
162
+ interval=10,
163
+ )
164
+
165
+ # Run the simulation!
166
+ dyn.run(num_steps)
167
+
168
+ reproduction_script = f"""
169
+ import ase.io
170
+ from ase.md.velocitydistribution import MaxwellBoltzmannDistribution
171
+ from ase.md.verlet import VelocityVerlet
172
+ from ase.optimize import LBFGS
173
+ from ase.io.trajectory import Trajectory
174
+ from ase.md import MDLogger
175
+ from ase import units
176
+ from fairchem.core.common.calculator import FAIRChemCalculator
177
+
178
+ # Read the atoms object from ASE read-able file
179
+ atoms = ase.io.read('input_file.traj')
180
+
181
+ # Set the total charge and spin multiplicity if using the OMol task
182
+ atoms.info["charge"] = {total_charge}
183
+ atoms.info["spin"] = {spin_multiplicity}
184
+
185
+ # Set up the calculator
186
+ atoms.calc = FAIRChemCalculator(name='UMA-SM-Final', hf_hub_repo_id='facebook/UMA', hf_hub_filename = 'UMA-SM-Final', task_name='{task_name}')
187
+
188
+ # Do a quick pre-relaxation to make sure the system is stable
189
+ opt = LBFGS(atoms, trajectory="relaxation_output.traj")
190
+ opt.run(fmax=0.05, steps={num_prerelax_steps})
191
+
192
+ # Initialize the velocity distribution; we set twice the temperature since we did a relaxation and
193
+ # much of the kinetic energy will partition to the potential energy right away
194
+ MaxwellBoltzmannDistribution(atoms, temperature_K={temperature_k}*2)
195
+
196
+ # Initialize the integrator; NVE is shown here as an example, see https://wiki.fysik.dtu.dk/ase/ase/md.html for all options
197
+ dyn = VelocityVerlet(atoms, timestep={md_timestep} * units.fs)
198
+
199
+ # Set up trajectory and MD logger
200
+ dyn.attach(MDLogger(dyn, atoms, 'md.log', header=True, stress=False, peratom=True, mode="w"), interval=10)
201
+ traj = Trajectory("md_output.traj"', "w", atoms)
202
+ dyn.attach(traj.write, interval=1)
203
+
204
+ # Run the simulation!
205
+ dyn.run({num_steps})
206
+ """
207
+
208
+ with open(md_log_path, "r") as md_log_file:
209
+ md_log = md_log_file.read()
210
+
211
+ if explanation is None:
212
+ explanation = f"MD simulation of {len(atoms)} atoms for {num_steps} steps with a timestep of {md_timestep} fs at {temperature_k} K in the {md_ensemble} ensemble using the {task_name} UMA task. You submitted this simulation, so I hope you know what's you're looking for or what it means!"
213
+
214
+ return traj_path, md_log, reproduction_script, explanation
215
+ except Exception as e:
216
+ raise gr.Error(
217
+ f"Error running MD simulation: {str(e)}. Please try again or report this error."
218
+ )
219
+ finally:
220
+ if temp_path and os.path.exists(temp_path):
221
+ os.remove(temp_path)
222
+
223
+ if md_log_path and os.path.exists(md_log_path):
224
+ os.remove(md_log_path)
225
+
226
+ if atoms is not None and getattr(atoms, "calc", None) is not None:
227
+ calc = atoms.calc
228
+ atoms.calc = None
229
+ del calc
230
+
231
+
232
+ def run_relaxation_simulation(
233
+ structure_file,
234
+ num_steps,
235
+ fmax,
236
+ task_name,
237
+ total_charge: float,
238
+ spin_multiplicity: float,
239
+ relax_unit_cell,
240
+ explanation: str | None = None,
241
+ oauth_token: gr.OAuthToken | None = None,
242
+ progress=gr.Progress(),
243
+ ):
244
+ temp_path = None
245
+ traj_path = None
246
+ opt_log_path = None
247
+ atoms = None
248
+
249
+ if task_name != "OMol":
250
+ total_charge = 0
251
+ spin_multiplicity = 0
252
+
253
+ try:
254
+ atoms = load_check_ase_atoms(structure_file)
255
+
256
+ # Check if the file is an example
257
+ example = hash_file(structure_file) in EXAMPLE_FILE_HASHES
258
+
259
+ # Center things for consistency in visualization
260
+ atoms.positions -= atoms.get_center_of_mass()
261
+ cell_center = atoms.get_cell().sum(axis=0) / 2
262
+ atoms.positions += cell_center
263
+
264
+ atoms.info["charge"] = total_charge
265
+ atoms.info["spin"] = spin_multiplicity
266
+
267
+ atoms.calc = HFEndpointCalculator(
268
+ atoms,
269
+ endpoint_url=INFERENCE_ENDPOINT_URL,
270
+ oauth_token=oauth_token,
271
+ example=example,
272
+ task_name=task_name,
273
+ )
274
+
275
+ # Set up a trajectory file to keep the results
276
+ with tempfile.NamedTemporaryFile(suffix=".traj", delete=False) as traj_f:
277
+ traj_path = traj_f.name
278
+ with tempfile.NamedTemporaryFile(suffix=".log", delete=False) as log_f:
279
+ opt_log_path = log_f.name
280
+
281
+ optimizer = LBFGS(
282
+ FrechetCellFilter(atoms) if relax_unit_cell else atoms,
283
+ trajectory=traj_path,
284
+ logfile=opt_log_path,
285
+ )
286
+
287
+ # Attach a progress callback to track in gradio
288
+ interval = 1
289
+ steps = [0]
290
+
291
+ def update_progress(steps):
292
+ steps[-1] += interval
293
+ progress(steps[-1] / num_steps)
294
+
295
+ optimizer.attach(update_progress, interval=interval, steps=steps)
296
+
297
+ optimizer.run(fmax=fmax, steps=num_steps)
298
+
299
+ reproduction_script = f"""
300
+ import ase.io
301
+ from ase.optimize import LBFGS
302
+ from ase.filters import FrechetCellFilter
303
+ from fairchem.core.common.calcaulator import FAIRChemCalculator
304
+
305
+ # Read the atoms object from ASE read-able file
306
+ atoms = ase.io.read('input_file.traj')
307
+
308
+ # Set the total charge and spin multiplicity if using the OMol task
309
+ atoms.info["charge"] = {total_charge}
310
+ atoms.info["spin"] = {spin_multiplicity}
311
+
312
+ # Set up the calculator
313
+ atoms.calc = FAIRChemCalculator(name='UMA-SM-Final', hf_hub_repo_id='facebook/UMA', hf_hub_filename = 'UMA-SM-Final', task_name='{task_name}')
314
+
315
+ # Initialize the optimizer from ASE
316
+ relax_unit_cell = {relax_unit_cell}
317
+ optimizer = LBFGS(FrechetCellFilter(atoms) if relax_unit_cell else atoms, trajectory="relaxation_output.traj")
318
+
319
+ # Run the simulation!
320
+ dyn.run({num_steps}, fmax={fmax})
321
+ """
322
+
323
+ with open(opt_log_path, "r") as opt_log_file:
324
+ opt_log = opt_log_file.read()
325
+
326
+ if explanation is None:
327
+ explanation = f"Relaxation of {len(atoms)} atoms for {num_steps} steps with a force tolerance of {fmax} eV/Å using the {task_name} UMA task. You submitted this simulation, so I hope you know what's you're looking for or what it means!"
328
+ return traj_path, opt_log, reproduction_script, explanation
329
+ except Exception as e:
330
+ raise gr.Error(
331
+ f"Error running relaxation: {str(e)}. Please try again or report this error."
332
+ )
333
+ # Make sure we clean up the temp traj files
334
+ finally:
335
+ if temp_path and os.path.exists(temp_path):
336
+ os.remove(temp_path)
337
+ # if traj_path and os.path.exists(traj_path):
338
+ # os.remove(traj_path)
339
+ if opt_log_path and os.path.exists(opt_log_path):
340
+ os.remove(opt_log_path)
341
+
342
+ if atoms is not None and getattr(atoms, "calc", None) is not None:
343
+ calc = atoms.calc
344
+ atoms.calc = None
345
+ del calc