@ccp-nc/crystvis-js 0.4.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/.eslintrc.json +16 -0
  2. package/.github/workflows/test-mocha.yml +30 -0
  3. package/.vscode/settings.json +4 -0
  4. package/LICENSE +21 -0
  5. package/README.html +1127 -0
  6. package/README.md +76 -0
  7. package/demo/demo.css +30 -0
  8. package/demo/index.html +76 -0
  9. package/demo/main.js +143 -0
  10. package/docs/.nojekyll +0 -0
  11. package/docs-tutorials/Events.md +57 -0
  12. package/docs-tutorials/Queries.md +50 -0
  13. package/fonts/Rubik/OFL.txt +93 -0
  14. package/fonts/Rubik/README.txt +77 -0
  15. package/fonts/Rubik/Rubik-Italic-VariableFont_wght.ttf +0 -0
  16. package/fonts/Rubik/Rubik-VariableFont_wght.ttf +0 -0
  17. package/fonts/Rubik/static/Rubik-Black.ttf +0 -0
  18. package/fonts/Rubik/static/Rubik-BlackItalic.ttf +0 -0
  19. package/fonts/Rubik/static/Rubik-Bold.ttf +0 -0
  20. package/fonts/Rubik/static/Rubik-BoldItalic.ttf +0 -0
  21. package/fonts/Rubik/static/Rubik-ExtraBold.ttf +0 -0
  22. package/fonts/Rubik/static/Rubik-ExtraBoldItalic.ttf +0 -0
  23. package/fonts/Rubik/static/Rubik-Italic.ttf +0 -0
  24. package/fonts/Rubik/static/Rubik-Light.ttf +0 -0
  25. package/fonts/Rubik/static/Rubik-LightItalic.ttf +0 -0
  26. package/fonts/Rubik/static/Rubik-Medium.ttf +0 -0
  27. package/fonts/Rubik/static/Rubik-MediumItalic.ttf +0 -0
  28. package/fonts/Rubik/static/Rubik-Regular.ttf +0 -0
  29. package/fonts/Rubik/static/Rubik-SemiBold.ttf +0 -0
  30. package/fonts/Rubik/static/Rubik-SemiBoldItalic.ttf +0 -0
  31. package/index.html +25 -0
  32. package/index.js +11 -0
  33. package/jsconf.json +14 -0
  34. package/lib/assets/fonts/Rubik-Medium.fnt +297 -0
  35. package/lib/assets/fonts/Rubik-Medium.png +0 -0
  36. package/lib/assets/fonts/bmpfonts.in.js +16 -0
  37. package/lib/assets/fonts/bmpfonts.js +9 -0
  38. package/lib/assets/fonts/font.js +82 -0
  39. package/lib/assets/fonts/index.js +14 -0
  40. package/lib/assets/fonts/threebmfont.js +28 -0
  41. package/lib/data.js +125 -0
  42. package/lib/formats/cell.js +114 -0
  43. package/lib/formats/cif.js +22 -0
  44. package/lib/formats/magres.js +337 -0
  45. package/lib/formats/xyz.js +124 -0
  46. package/lib/loader.js +87 -0
  47. package/lib/model.js +2076 -0
  48. package/lib/modelview.js +382 -0
  49. package/lib/nmrdata.js +2898 -0
  50. package/lib/orbit.js +1233 -0
  51. package/lib/primitives/atoms.js +261 -0
  52. package/lib/primitives/cell.js +160 -0
  53. package/lib/primitives/dither.js +156 -0
  54. package/lib/primitives/ellipsoid.js +183 -0
  55. package/lib/primitives/geometries.js +20 -0
  56. package/lib/primitives/index.js +48 -0
  57. package/lib/primitives/isosurface.js +171 -0
  58. package/lib/primitives/shapes.js +100 -0
  59. package/lib/primitives/sprites.js +172 -0
  60. package/lib/query.js +158 -0
  61. package/lib/render.js +440 -0
  62. package/lib/selbox.js +361 -0
  63. package/lib/shaders/aura.frag +26 -0
  64. package/lib/shaders/aura.vert +37 -0
  65. package/lib/shaders/dither.frag +42 -0
  66. package/lib/shaders/dither.vert +8 -0
  67. package/lib/shaders/index.in.js +17 -0
  68. package/lib/shaders/index.js +25 -0
  69. package/lib/shaders/msdf300.frag +25 -0
  70. package/lib/shaders/msdf300.vert +45 -0
  71. package/lib/tensor.js +227 -0
  72. package/lib/utils.js +168 -0
  73. package/lib/visualizer.js +480 -0
  74. package/package.json +106 -0
  75. package/scripts/build-bundle.js +17 -0
  76. package/scripts/build-fonts.js +43 -0
  77. package/scripts/build-resources.js +46 -0
  78. package/scripts/plugins-shim.js +10 -0
  79. package/test/chemdata.js +69 -0
  80. package/test/data/CHA.cif +74 -0
  81. package/test/data/H2O.xyz +8 -0
  82. package/test/data/H2_bound.xyz +4 -0
  83. package/test/data/ethanol.cell +25 -0
  84. package/test/data/ethanol.magres +238 -0
  85. package/test/data/example_single.cif +789 -0
  86. package/test/data/frac.cell +8 -0
  87. package/test/data/org.cif +427 -0
  88. package/test/data/pyridine.xyz +13 -0
  89. package/test/data/si8.xyz +10 -0
  90. package/test/loader.js +107 -0
  91. package/test/model.js +368 -0
  92. package/test/query.js +135 -0
  93. package/test/tensor.js +133 -0
  94. package/test/test-html/examples.js +1485 -0
  95. package/test/test-html/index.html +33 -0
  96. package/test/test-html/index.js +279 -0
  97. package/tools/compile_colors.py +120 -0
  98. package/tools/compile_periodic.py +96 -0
  99. package/tools/ptable.json +497 -0
  100. package/tools/test +5844 -0
@@ -0,0 +1,8 @@
1
+ %BLOCK LATTICE_ABC
2
+ 10.0 14.1421356 10.0
3
+ 90 90 45
4
+ %ENDBLOCK LATTICE_ABC
5
+
6
+ %BLOCK POSITIONS_FRAC
7
+ H 0.5 0.5 0.5
8
+ %ENDBLOCK POSITIONS_FRAC
@@ -0,0 +1,427 @@
1
+ #------------------------------------------------------------------------------
2
+ #$Date: 2016-02-18 17:37:37 +0200 (Thu, 18 Feb 2016) $
3
+ #$Revision: 176729 $
4
+ #$URL: svn://www.crystallography.net/cod/cif/1/50/19/1501936.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_1501936
14
+ loop_
15
+ _publ_author_name
16
+ 'Stewart, Craig'
17
+ 'McDonald, Robert'
18
+ 'West, F. G.'
19
+ _publ_section_title
20
+ ;
21
+ Expedient route to the tigliane-daphnane skeleton via oxonium ylide
22
+ [1,2]-shift.
23
+ ;
24
+ _journal_issue 4
25
+ _journal_name_full 'Organic letters'
26
+ _journal_page_first 720
27
+ _journal_page_last 723
28
+ _journal_paper_doi 10.1021/ol102953s
29
+ _journal_volume 13
30
+ _journal_year 2011
31
+ _chemical_formula_moiety 'C21 H26 O4'
32
+ _chemical_formula_sum 'C21 H26 O4'
33
+ _chemical_formula_weight 342.42
34
+ _chemical_name_systematic
35
+ ;
36
+ ?
37
+ ;
38
+ _space_group_IT_number 2
39
+ _symmetry_cell_setting triclinic
40
+ _symmetry_space_group_name_Hall '-P 1'
41
+ _symmetry_space_group_name_H-M 'P -1'
42
+ _atom_sites_solution_hydrogens geom
43
+ _atom_sites_solution_primary direct
44
+ _atom_sites_solution_secondary difmap
45
+ _audit_creation_method SHELXL-97
46
+ _cell_angle_alpha 79.9846(4)
47
+ _cell_angle_beta 82.2194(4)
48
+ _cell_angle_gamma 77.7988(4)
49
+ _cell_formula_units_Z 2
50
+ _cell_length_a 8.2302(3)
51
+ _cell_length_b 8.2837(3)
52
+ _cell_length_c 13.1837(4)
53
+ _cell_measurement_reflns_used 7347
54
+ _cell_measurement_temperature 173(2)
55
+ _cell_measurement_theta_max 27.48
56
+ _cell_measurement_theta_min 2.54
57
+ _cell_volume 860.57(5)
58
+ _computing_cell_refinement 'Bruker SAINT'
59
+ _computing_data_collection 'Bruker APEX2'
60
+ _computing_data_reduction 'Bruker SAINT'
61
+ _computing_molecular_graphics 'Bruker SHELXTL'
62
+ _computing_publication_material 'Bruker SHELXTL'
63
+ _computing_structure_refinement 'SHELXL-97 (Sheldrick, 2008)'
64
+ _computing_structure_solution 'SHELXD (Schneider & Sheldrick, 2002)'
65
+ _diffrn_ambient_temperature 173(2)
66
+ _diffrn_measured_fraction_theta_full 0.986
67
+ _diffrn_measured_fraction_theta_max 0.986
68
+ _diffrn_measurement_device_type 'Bruker APEX-II CCD'
69
+ _diffrn_measurement_method '\f and \w scans'
70
+ _diffrn_radiation_monochromator graphite
71
+ _diffrn_radiation_source 'fine-focus sealed tube'
72
+ _diffrn_radiation_type MoK\a
73
+ _diffrn_radiation_wavelength 0.71073
74
+ _diffrn_reflns_av_R_equivalents 0.0099
75
+ _diffrn_reflns_av_sigmaI/netI 0.0146
76
+ _diffrn_reflns_limit_h_max 10
77
+ _diffrn_reflns_limit_h_min -10
78
+ _diffrn_reflns_limit_k_max 10
79
+ _diffrn_reflns_limit_k_min -10
80
+ _diffrn_reflns_limit_l_max 17
81
+ _diffrn_reflns_limit_l_min -17
82
+ _diffrn_reflns_number 7543
83
+ _diffrn_reflns_theta_full 27.48
84
+ _diffrn_reflns_theta_max 27.48
85
+ _diffrn_reflns_theta_min 1.58
86
+ _exptl_absorpt_coefficient_mu 0.090
87
+ _exptl_absorpt_correction_T_max 0.9723
88
+ _exptl_absorpt_correction_T_min 0.9471
89
+ _exptl_absorpt_correction_type integration
90
+ _exptl_absorpt_process_details 'SADABS (Sheldrick, 2008)'
91
+ _exptl_crystal_colour colourless
92
+ _exptl_crystal_density_diffrn 1.321
93
+ _exptl_crystal_density_method 'not measured'
94
+ _exptl_crystal_description prism
95
+ _exptl_crystal_F_000 368
96
+ _exptl_crystal_size_max 0.61
97
+ _exptl_crystal_size_mid 0.35
98
+ _exptl_crystal_size_min 0.31
99
+ _refine_diff_density_max 0.347
100
+ _refine_diff_density_min -0.262
101
+ _refine_diff_density_rms 0.054
102
+ _refine_ls_extinction_method none
103
+ _refine_ls_goodness_of_fit_ref 1.029
104
+ _refine_ls_hydrogen_treatment constr
105
+ _refine_ls_matrix_type full
106
+ _refine_ls_number_parameters 227
107
+ _refine_ls_number_reflns 3894
108
+ _refine_ls_number_restraints 0
109
+ _refine_ls_restrained_S_all 1.029
110
+ _refine_ls_R_factor_all 0.0447
111
+ _refine_ls_R_factor_gt 0.0418
112
+ _refine_ls_shift/su_max 0.000
113
+ _refine_ls_shift/su_mean 0.000
114
+ _refine_ls_structure_factor_coef Fsqd
115
+ _refine_ls_weighting_details
116
+ 'calc w=1/[\s^2^(Fo^2^)+(0.0666P)^2^+0.2631P] where P=(Fo^2^+2Fc^2^)/3'
117
+ _refine_ls_weighting_scheme calc
118
+ _refine_ls_wR_factor_gt 0.1105
119
+ _refine_ls_wR_factor_ref 0.1138
120
+ _reflns_number_gt 3564
121
+ _reflns_number_total 3894
122
+ _reflns_threshold_expression I>2\s(I)
123
+ _cod_data_source_file ol102953s_si_002.cif
124
+ _cod_data_source_block 16
125
+ _cod_depositor_comments
126
+ ;
127
+ The following automatic conversions were performed:
128
+
129
+ '_symmetry_cell_setting' value 'Triclinic' changed to 'triclinic'
130
+ according to /home/saulius/struct/CIF-dictionaries/cif_core.dic
131
+ dictionary named 'cif_core.dic' version 2.4.1 from 2010-06-29.
132
+
133
+ Automatic conversion script
134
+ Id: cif_fix_values 1715 2011-07-08 13:25:40Z adriana
135
+ ;
136
+ _cod_database_code 1501936
137
+ loop_
138
+ _symmetry_equiv_pos_as_xyz
139
+ 'x, y, z'
140
+ '-x, -y, -z'
141
+ loop_
142
+ _atom_site_label
143
+ _atom_site_type_symbol
144
+ _atom_site_fract_x
145
+ _atom_site_fract_y
146
+ _atom_site_fract_z
147
+ _atom_site_U_iso_or_equiv
148
+ _atom_site_adp_type
149
+ _atom_site_occupancy
150
+ _atom_site_symmetry_multiplicity
151
+ _atom_site_calc_flag
152
+ _atom_site_refinement_flags
153
+ O1 O 0.43325(9) 0.00289(10) 0.22205(6) 0.02475(18) Uani 1 1 d .
154
+ O2 O 0.25690(11) 0.06668(12) 0.48190(6) 0.0318(2) Uani 1 1 d .
155
+ H2O H 0.1572 0.0969 0.4682 0.048 Uiso 1 1 calc R
156
+ O3 O 0.03180(9) 0.07400(10) 0.35068(6) 0.02243(18) Uani 1 1 d .
157
+ O4 O -0.05742(9) 0.12277(10) 0.18848(6) 0.02204(18) Uani 1 1 d .
158
+ C1 C 0.23130(16) 0.31699(15) 0.05350(9) 0.0292(3) Uani 1 1 d .
159
+ H1A H 0.1668 0.2801 0.0066 0.035 Uiso 1 1 calc R
160
+ H1B H 0.1966 0.4394 0.0512 0.035 Uiso 1 1 calc R
161
+ C2 C 0.41826(17) 0.26953(18) 0.02240(10) 0.0362(3) Uani 1 1 d .
162
+ H2A H 0.4570 0.3551 -0.0324 0.043 Uiso 1 1 calc R
163
+ H2B H 0.4466 0.1600 -0.0026 0.043 Uiso 1 1 calc R
164
+ C3 C 0.49496(16) 0.26142(18) 0.12251(10) 0.0346(3) Uani 1 1 d .
165
+ H3A H 0.5020 0.3746 0.1340 0.041 Uiso 1 1 calc R
166
+ H3B H 0.6086 0.1915 0.1204 0.041 Uiso 1 1 calc R
167
+ C4 C 0.37765(13) 0.18364(14) 0.20769(9) 0.0236(2) Uani 1 1 d .
168
+ C5 C 0.37169(15) 0.22671(15) 0.31723(9) 0.0278(2) Uani 1 1 d .
169
+ H5A H 0.2716 0.3123 0.3326 0.033 Uiso 1 1 calc R
170
+ H5B H 0.4728 0.2685 0.3250 0.033 Uiso 1 1 calc R
171
+ C6 C 0.36401(14) 0.05939(14) 0.38863(9) 0.0249(2) Uani 1 1 d .
172
+ H6 H 0.4795 0.0130 0.4087 0.030 Uiso 1 1 calc R
173
+ C7 C 0.33164(13) -0.05107(13) 0.31315(8) 0.0221(2) Uani 1 1 d .
174
+ H7 H 0.3766 -0.1709 0.3390 0.026 Uiso 1 1 calc R
175
+ C8 C 0.14955(13) -0.03284(13) 0.28705(8) 0.0200(2) Uani 1 1 d .
176
+ C9 C 0.09823(15) -0.20349(14) 0.30165(9) 0.0274(2) Uani 1 1 d .
177
+ H9A H 0.1342 -0.2692 0.3677 0.033 Uiso 1 1 calc R
178
+ H9B H -0.0251 -0.1870 0.3061 0.033 Uiso 1 1 calc R
179
+ C10 C 0.17450(18) -0.30157(15) 0.21329(10) 0.0335(3) Uani 1 1 d .
180
+ H10A H 0.2980 -0.3217 0.2093 0.040 Uiso 1 1 calc R
181
+ H10B H 0.1393 -0.4111 0.2257 0.040 Uiso 1 1 calc R
182
+ C11 C 0.11557(18) -0.20110(15) 0.11223(10) 0.0320(3) Uani 1 1 d .
183
+ H11A H -0.0079 -0.1821 0.1166 0.038 Uiso 1 1 calc R
184
+ H11B H 0.1615 -0.2652 0.0546 0.038 Uiso 1 1 calc R
185
+ C12 C 0.17208(14) -0.03337(14) 0.09030(8) 0.0243(2) Uani 1 1 d .
186
+ H12A H 0.2952 -0.0536 0.0750 0.029 Uiso 1 1 calc R
187
+ H12B H 0.1235 0.0326 0.0277 0.029 Uiso 1 1 calc R
188
+ C13 C 0.12298(12) 0.06918(12) 0.17872(8) 0.0190(2) Uani 1 1 d .
189
+ C14 C 0.20338(13) 0.22587(13) 0.16509(8) 0.0210(2) Uani 1 1 d .
190
+ H14 H 0.1286 0.3076 0.2067 0.025 Uiso 1 1 calc R
191
+ C15 C -0.11096(13) 0.13931(14) 0.29369(8) 0.0222(2) Uani 1 1 d .
192
+ H15 H -0.1989 0.0710 0.3197 0.027 Uiso 1 1 calc R
193
+ C16 C -0.17827(13) 0.31719(14) 0.31250(9) 0.0246(2) Uani 1 1 d .
194
+ C17 C -0.21011(15) 0.44865(15) 0.23268(10) 0.0285(2) Uani 1 1 d .
195
+ H17 H -0.1901 0.4287 0.1628 0.034 Uiso 1 1 calc R
196
+ C18 C -0.27164(16) 0.61039(16) 0.25492(11) 0.0356(3) Uani 1 1 d .
197
+ H18 H -0.2950 0.7001 0.2001 0.043 Uiso 1 1 calc R
198
+ C19 C -0.29871(16) 0.64062(17) 0.35582(12) 0.0402(3) Uani 1 1 d .
199
+ H19 H -0.3359 0.7515 0.3706 0.048 Uiso 1 1 calc R
200
+ C20 C -0.2715(2) 0.5084(2) 0.43574(13) 0.0532(4) Uani 1 1 d .
201
+ H20 H -0.2928 0.5283 0.5056 0.064 Uiso 1 1 calc R
202
+ C21 C -0.2133(2) 0.34710(19) 0.41411(11) 0.0450(4) Uani 1 1 d .
203
+ H21 H -0.1973 0.2566 0.4692 0.054 Uiso 1 1 calc R
204
+ loop_
205
+ _atom_site_aniso_label
206
+ _atom_site_aniso_U_11
207
+ _atom_site_aniso_U_22
208
+ _atom_site_aniso_U_33
209
+ _atom_site_aniso_U_23
210
+ _atom_site_aniso_U_13
211
+ _atom_site_aniso_U_12
212
+ O1 0.0204(4) 0.0269(4) 0.0259(4) -0.0057(3) -0.0017(3) -0.0012(3)
213
+ O2 0.0315(4) 0.0438(5) 0.0215(4) -0.0075(4) -0.0049(3) -0.0067(4)
214
+ O3 0.0201(4) 0.0270(4) 0.0189(4) -0.0043(3) -0.0034(3) 0.0000(3)
215
+ O4 0.0195(4) 0.0265(4) 0.0204(4) -0.0038(3) -0.0048(3) -0.0031(3)
216
+ C1 0.0362(6) 0.0255(5) 0.0262(6) 0.0017(4) -0.0051(5) -0.0101(5)
217
+ C2 0.0391(7) 0.0386(7) 0.0290(6) 0.0001(5) 0.0050(5) -0.0127(5)
218
+ C3 0.0282(6) 0.0416(7) 0.0349(6) -0.0006(5) 0.0006(5) -0.0155(5)
219
+ C4 0.0217(5) 0.0248(5) 0.0253(5) -0.0034(4) -0.0030(4) -0.0068(4)
220
+ C5 0.0307(6) 0.0285(6) 0.0277(6) -0.0061(4) -0.0078(4) -0.0092(4)
221
+ C6 0.0234(5) 0.0292(6) 0.0230(5) -0.0055(4) -0.0074(4) -0.0028(4)
222
+ C7 0.0214(5) 0.0223(5) 0.0218(5) -0.0028(4) -0.0056(4) -0.0008(4)
223
+ C8 0.0213(5) 0.0196(5) 0.0191(5) -0.0029(4) -0.0035(4) -0.0031(4)
224
+ C9 0.0341(6) 0.0219(5) 0.0272(6) 0.0021(4) -0.0083(5) -0.0093(4)
225
+ C10 0.0480(7) 0.0194(5) 0.0349(6) -0.0034(5) -0.0132(5) -0.0058(5)
226
+ C11 0.0472(7) 0.0235(6) 0.0294(6) -0.0073(4) -0.0117(5) -0.0083(5)
227
+ C12 0.0299(5) 0.0235(5) 0.0205(5) -0.0059(4) -0.0041(4) -0.0040(4)
228
+ C13 0.0188(5) 0.0189(5) 0.0196(5) -0.0026(4) -0.0039(4) -0.0027(4)
229
+ C14 0.0219(5) 0.0200(5) 0.0217(5) -0.0024(4) -0.0034(4) -0.0051(4)
230
+ C15 0.0188(5) 0.0261(5) 0.0212(5) -0.0015(4) -0.0033(4) -0.0038(4)
231
+ C16 0.0187(5) 0.0278(5) 0.0268(5) -0.0059(4) -0.0028(4) -0.0020(4)
232
+ C17 0.0250(5) 0.0286(6) 0.0312(6) -0.0035(5) -0.0044(4) -0.0032(4)
233
+ C18 0.0289(6) 0.0276(6) 0.0484(8) -0.0032(5) -0.0076(5) -0.0008(5)
234
+ C19 0.0284(6) 0.0338(7) 0.0599(9) -0.0201(6) -0.0106(6) 0.0049(5)
235
+ C20 0.0639(10) 0.0522(9) 0.0397(8) -0.0233(7) -0.0113(7) 0.0147(8)
236
+ C21 0.0585(9) 0.0408(8) 0.0282(7) -0.0085(6) -0.0068(6) 0.0113(6)
237
+ loop_
238
+ _atom_type_symbol
239
+ _atom_type_description
240
+ _atom_type_scat_dispersion_real
241
+ _atom_type_scat_dispersion_imag
242
+ _atom_type_scat_source
243
+ C C 0.0033 0.0016 'International Tables Vol C Tables 4.2.6.8 and 6.1.1.4'
244
+ H H 0.0000 0.0000 'International Tables Vol C Tables 4.2.6.8 and 6.1.1.4'
245
+ O O 0.0106 0.0060 'International Tables Vol C Tables 4.2.6.8 and 6.1.1.4'
246
+ loop_
247
+ _geom_angle_atom_site_label_1
248
+ _geom_angle_atom_site_label_2
249
+ _geom_angle_atom_site_label_3
250
+ _geom_angle
251
+ C7 O1 C4 102.79(8)
252
+ C15 O3 C8 106.30(7)
253
+ C15 O4 C13 107.90(7)
254
+ C2 C1 C14 105.14(9)
255
+ C1 C2 C3 103.37(10)
256
+ C2 C3 C4 105.12(10)
257
+ O1 C4 C3 108.63(9)
258
+ O1 C4 C5 103.13(9)
259
+ C3 C4 C5 117.53(10)
260
+ O1 C4 C14 108.27(8)
261
+ C3 C4 C14 105.59(9)
262
+ C5 C4 C14 113.35(9)
263
+ C4 C5 C6 103.88(9)
264
+ O2 C6 C5 116.61(10)
265
+ O2 C6 C7 117.45(10)
266
+ C5 C6 C7 102.19(9)
267
+ O1 C7 C6 100.99(9)
268
+ O1 C7 C8 109.50(8)
269
+ C6 C7 C8 118.01(9)
270
+ O3 C8 C9 108.90(9)
271
+ O3 C8 C13 99.92(8)
272
+ C9 C8 C13 113.17(9)
273
+ O3 C8 C7 111.63(8)
274
+ C9 C8 C7 111.12(9)
275
+ C13 C8 C7 111.61(8)
276
+ C10 C9 C8 112.28(10)
277
+ C11 C10 C9 108.77(10)
278
+ C10 C11 C12 110.83(10)
279
+ C13 C12 C11 114.11(9)
280
+ O4 C13 C12 108.21(8)
281
+ O4 C13 C8 100.85(8)
282
+ C12 C13 C8 114.25(8)
283
+ O4 C13 C14 108.43(8)
284
+ C12 C13 C14 114.66(9)
285
+ C8 C13 C14 109.39(8)
286
+ C1 C14 C13 116.60(9)
287
+ C1 C14 C4 105.76(9)
288
+ C13 C14 C4 111.64(8)
289
+ O4 C15 O3 107.05(8)
290
+ O4 C15 C16 114.21(9)
291
+ O3 C15 C16 108.24(8)
292
+ C17 C16 C21 119.43(11)
293
+ C17 C16 C15 122.58(10)
294
+ C21 C16 C15 117.97(11)
295
+ C16 C17 C18 119.94(12)
296
+ C19 C18 C17 120.39(12)
297
+ C18 C19 C20 119.60(13)
298
+ C19 C20 C21 120.19(14)
299
+ C16 C21 C20 120.35(13)
300
+ loop_
301
+ _geom_bond_atom_site_label_1
302
+ _geom_bond_atom_site_label_2
303
+ _geom_bond_distance
304
+ O1 C7 1.4286(13)
305
+ O1 C4 1.4568(13)
306
+ O2 C6 1.4152(14)
307
+ O3 C15 1.4376(12)
308
+ O3 C8 1.4498(12)
309
+ O4 C15 1.4184(13)
310
+ O4 C13 1.4518(12)
311
+ C1 C2 1.5232(18)
312
+ C1 C14 1.5436(15)
313
+ C2 C3 1.5236(19)
314
+ C3 C4 1.5252(16)
315
+ C4 C5 1.5387(15)
316
+ C4 C14 1.5597(14)
317
+ C5 C6 1.5422(16)
318
+ C6 C7 1.5459(15)
319
+ C7 C8 1.5534(14)
320
+ C8 C9 1.5328(15)
321
+ C8 C13 1.5454(14)
322
+ C9 C10 1.5254(17)
323
+ C10 C11 1.5237(17)
324
+ C11 C12 1.5256(16)
325
+ C12 C13 1.5217(14)
326
+ C13 C14 1.5507(14)
327
+ C15 C16 1.5115(15)
328
+ C16 C17 1.3847(16)
329
+ C16 C21 1.3854(17)
330
+ C17 C18 1.3954(17)
331
+ C18 C19 1.376(2)
332
+ C19 C20 1.385(2)
333
+ C20 C21 1.386(2)
334
+ loop_
335
+ _geom_hbond_atom_site_label_D
336
+ _geom_hbond_atom_site_label_H
337
+ _geom_hbond_atom_site_label_A
338
+ _geom_hbond_distance_DH
339
+ _geom_hbond_distance_HA
340
+ _geom_hbond_distance_DA
341
+ _geom_hbond_angle_DHA
342
+ O2 H2O O3 0.84 2.03 2.6856(11) 134.4
343
+ loop_
344
+ _geom_torsion_atom_site_label_1
345
+ _geom_torsion_atom_site_label_2
346
+ _geom_torsion_atom_site_label_3
347
+ _geom_torsion_atom_site_label_4
348
+ _geom_torsion
349
+ C14 C1 C2 C3 -36.03(12)
350
+ C1 C2 C3 C4 38.59(13)
351
+ C7 O1 C4 C3 171.08(9)
352
+ C7 O1 C4 C5 45.66(10)
353
+ C7 O1 C4 C14 -74.71(10)
354
+ C2 C3 C4 O1 90.00(11)
355
+ C2 C3 C4 C5 -153.50(11)
356
+ C2 C3 C4 C14 -25.95(13)
357
+ O1 C4 C5 C6 -19.76(11)
358
+ C3 C4 C5 C6 -139.21(10)
359
+ C14 C4 C5 C6 97.07(10)
360
+ C4 C5 C6 O2 -140.12(9)
361
+ C4 C5 C6 C7 -10.64(11)
362
+ C4 O1 C7 C6 -52.55(9)
363
+ C4 O1 C7 C8 72.65(10)
364
+ O2 C6 C7 O1 167.08(9)
365
+ C5 C6 C7 O1 38.13(10)
366
+ O2 C6 C7 C8 47.83(13)
367
+ C5 C6 C7 C8 -81.11(11)
368
+ C15 O3 C8 C9 -81.23(10)
369
+ C15 O3 C8 C13 37.59(9)
370
+ C15 O3 C8 C7 155.72(8)
371
+ O1 C7 C8 O3 -122.30(9)
372
+ C6 C7 C8 O3 -7.63(13)
373
+ O1 C7 C8 C9 115.92(10)
374
+ C6 C7 C8 C9 -129.40(10)
375
+ O1 C7 C8 C13 -11.42(12)
376
+ C6 C7 C8 C13 103.25(11)
377
+ O3 C8 C9 C10 160.32(9)
378
+ C13 C8 C9 C10 50.17(12)
379
+ C7 C8 C9 C10 -76.32(11)
380
+ C8 C9 C10 C11 -59.99(13)
381
+ C9 C10 C11 C12 60.93(14)
382
+ C10 C11 C12 C13 -53.49(14)
383
+ C15 O4 C13 C12 150.64(9)
384
+ C15 O4 C13 C8 30.42(9)
385
+ C15 O4 C13 C14 -84.43(9)
386
+ C11 C12 C13 O4 -68.27(11)
387
+ C11 C12 C13 C8 43.17(13)
388
+ C11 C12 C13 C14 170.58(9)
389
+ O3 C8 C13 O4 -40.93(9)
390
+ C9 C8 C13 O4 74.70(10)
391
+ C7 C8 C13 O4 -159.07(8)
392
+ O3 C8 C13 C12 -156.73(8)
393
+ C9 C8 C13 C12 -41.11(12)
394
+ C7 C8 C13 C12 85.12(11)
395
+ O3 C8 C13 C14 73.20(9)
396
+ C9 C8 C13 C14 -171.18(9)
397
+ C7 C8 C13 C14 -44.95(11)
398
+ C2 C1 C14 C13 -104.72(11)
399
+ C2 C1 C14 C4 20.01(12)
400
+ O4 C13 C14 C1 -86.70(11)
401
+ C12 C13 C14 C1 34.33(13)
402
+ C8 C13 C14 C1 164.18(9)
403
+ O4 C13 C14 C4 151.61(8)
404
+ C12 C13 C14 C4 -87.37(11)
405
+ C8 C13 C14 C4 42.48(11)
406
+ O1 C4 C14 C1 -112.58(9)
407
+ C3 C4 C14 C1 3.62(12)
408
+ C5 C4 C14 C1 133.64(10)
409
+ O1 C4 C14 C13 15.19(11)
410
+ C3 C4 C14 C13 131.38(10)
411
+ C5 C4 C14 C13 -98.59(10)
412
+ C13 O4 C15 O3 -7.90(10)
413
+ C13 O4 C15 C16 111.90(9)
414
+ C8 O3 C15 O4 -20.10(10)
415
+ C8 O3 C15 C16 -143.65(9)
416
+ O4 C15 C16 C17 9.96(15)
417
+ O3 C15 C16 C17 129.09(11)
418
+ O4 C15 C16 C21 -171.89(11)
419
+ O3 C15 C16 C21 -52.76(14)
420
+ C21 C16 C17 C18 2.13(19)
421
+ C15 C16 C17 C18 -179.75(10)
422
+ C16 C17 C18 C19 0.94(19)
423
+ C17 C18 C19 C20 -2.8(2)
424
+ C18 C19 C20 C21 1.6(3)
425
+ C17 C16 C21 C20 -3.3(2)
426
+ C15 C16 C21 C20 178.47(14)
427
+ C19 C20 C21 C16 1.5(3)
@@ -0,0 +1,13 @@
1
+ 11
2
+ Pyridine molecule (source: Wikipedia)
3
+ C -0.180226841 0.360945118 -1.120304970
4
+ C -0.180226841 1.559292118 -0.407860970
5
+ C -0.180226841 1.503191118 0.986935030
6
+ N -0.180226841 0.360945118 1.685965030
7
+ C -0.180226841 -0.781300882 0.986935030
8
+ C -0.180226841 -0.837401882 -0.407860970
9
+ H -0.180226841 0.360945118 -2.206546970
10
+ H -0.180226841 2.517950118 -0.917077970
11
+ H -0.180226841 2.421289118 1.572099030
12
+ H -0.180226841 -1.699398882 1.572099030
13
+ H -0.180226841 -1.796059882 -0.917077970
@@ -0,0 +1,10 @@
1
+ 8
2
+ Lattice="5.44 0.0 0.0 0.0 5.44 0.0 0.0 0.0 5.44" Properties=species:S:1:pos:R:3:spin:R:1 Time=0.0
3
+ Si 0.00000000 0.00000000 0.00000000 1.0
4
+ Si 1.36000000 1.36000000 1.36000000 0.0
5
+ Si 2.72000000 2.72000000 0.00000000 0.0
6
+ Si 4.08000000 4.08000000 1.36000000 0.0
7
+ Si 2.72000000 0.00000000 2.72000000 0.0
8
+ Si 4.08000000 1.36000000 4.08000000 0.0
9
+ Si 0.00000000 2.72000000 2.72000000 0.0
10
+ Si 1.36000000 4.08000000 4.08000000 0.0
package/test/loader.js ADDED
@@ -0,0 +1,107 @@
1
+ 'use strict';
2
+
3
+ import chai from 'chai'
4
+ import chaiAlmost from 'chai-almost'
5
+
6
+ import fs from 'fs'
7
+ import path from 'path'
8
+ import { fileURLToPath } from 'url';
9
+
10
+ import { Loader } from '../lib/loader.js'
11
+
12
+ const expect = chai.expect
13
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
14
+
15
+
16
+ chai.use(chaiAlmost(1e-3));
17
+
18
+ describe('#loading', function() {
19
+ it('should load properly an XYZ file', function() {
20
+
21
+ var loader = new Loader();
22
+
23
+ var xyz = fs.readFileSync(path.join(__dirname, 'data', 'pyridine.xyz'), "utf8");
24
+ var a = loader.load(xyz, 'xyz')['xyz'];
25
+
26
+ expect(a.get_chemical_symbols()).to.deep.equal(['C', 'C', 'C', 'N', 'C', 'C',
27
+ 'H', 'H', 'H', 'H', 'H'
28
+ ]);
29
+ });
30
+ it('should load properly an extended XYZ file', function() {
31
+
32
+ var loader = new Loader();
33
+
34
+ var xyz = fs.readFileSync(path.join(__dirname, 'data', 'si8.xyz'), "utf8");
35
+ var a = loader.load(xyz, 'xyz')['xyz'];
36
+
37
+ expect(a.get_cell()).to.deep.almost.equal([
38
+ [5.44, 0, 0],
39
+ [0, 5.44, 0],
40
+ [0, 0, 5.44]
41
+ ]);
42
+ expect(a.get_array('spin')).to.deep.equal([1, 0, 0, 0, 0, 0, 0, 0]);
43
+ });
44
+ it('should load properly a CIF file', function() {
45
+
46
+ var loader = new Loader();
47
+
48
+ var cif = fs.readFileSync(path.join(__dirname, 'data', 'org.cif'), "utf8");
49
+ var a = loader.load(cif)['1501936'];
50
+
51
+
52
+ chai.expect(a.get_cell()).to.deep.almost.equal([
53
+ [8.2302, 0.0, 0.0],
54
+ [1.7507207912272031, 8.096583378263006, 0.0],
55
+ [1.7848106706548383, 1.959874486240255, 12.914460443940394]
56
+ ]);
57
+ });
58
+ it('should load properly a Magres file', function() {
59
+
60
+ var loader = new Loader();
61
+
62
+ var magres = fs.readFileSync(path.join(__dirname, 'data', 'ethanol.magres'), "utf8");
63
+ var a = loader.load(magres, 'magres')['magres'];
64
+
65
+ expect(loader.status).to.equal(Loader.STATUS_SUCCESS);
66
+ expect(a.length()).to.equal(9);
67
+ // Parsing positions
68
+ expect(a.get_positions()[0]).to.deep.equal([2.129659, 2.823711, 2.349943]);
69
+ // Susceptibility
70
+ expect(a.info.sus.data).to.deep.equal([[1,0,0],[0,1,0],[0,0,1]]);
71
+ // Shielding
72
+ expect(a.get_array('ms')[4].data).to.deep.equal([
73
+ [25.946849893, -2.77588906551, 3.75442739434],
74
+ [-1.77463107727, 29.7225814726, -0.398037457666],
75
+ [3.04599241075, -1.46601607492, 26.5018075671]
76
+ ]);
77
+ // Version
78
+ expect(a.info['magres-version']).to.equal('1.0');
79
+
80
+ // Test for failure
81
+ loader.load('Something', 'magres');
82
+ expect(loader.error_message).to.equal('Invalid Magres file format: no version line');
83
+
84
+ loader.load('#$magres-abinitio-v1.0\n[block]\n[another]', 'magres');
85
+ expect(loader.error_message).to.equal('Invalid Magres file format: block opened without closing');
86
+
87
+ });
88
+ it('should load properly a CELL file', function() {
89
+
90
+ var loader = new Loader();
91
+
92
+ var cell = fs.readFileSync(path.join(__dirname, 'data', 'ethanol.cell'), "utf8");
93
+ var a = loader.load(cell, 'cell')['cell'];
94
+
95
+ expect(a.get_cell()).to.almost.deep.equal([[6,0,0],[0,6,0],[0,0,6]]);
96
+ expect(a.get_chemical_symbols()).to.deep.equal(['H', 'H', 'H', 'H', 'H', 'H', 'C', 'C', 'O']);
97
+ expect(a.get_positions()[0]).to.almost.deep.equal([2.129659, 2.823711, 2.349943]);
98
+
99
+ // Test an example with ABC lattice and FRAC positions
100
+ cell = fs.readFileSync(path.join(__dirname, 'data', 'frac.cell'), "utf8");
101
+ a = loader.load(cell, 'cell')['cell'];
102
+
103
+ expect(a.get_cell()).to.almost.deep.equal([[10.0, 0, 0], [10.0, 10.0, 0], [0, 0, 10.0]]);
104
+ expect(a.get_positions()[0]).to.almost.deep.equal([10.0, 5.0, 5.0]);
105
+
106
+ });
107
+ });