biotite 1.3.0__cp312-cp312-macosx_10_13_x86_64.whl

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.

Potentially problematic release.


This version of biotite might be problematic. Click here for more details.

Files changed (354) hide show
  1. biotite/__init__.py +18 -0
  2. biotite/application/__init__.py +69 -0
  3. biotite/application/application.py +276 -0
  4. biotite/application/autodock/__init__.py +12 -0
  5. biotite/application/autodock/app.py +500 -0
  6. biotite/application/blast/__init__.py +14 -0
  7. biotite/application/blast/alignment.py +92 -0
  8. biotite/application/blast/webapp.py +428 -0
  9. biotite/application/clustalo/__init__.py +12 -0
  10. biotite/application/clustalo/app.py +223 -0
  11. biotite/application/dssp/__init__.py +12 -0
  12. biotite/application/dssp/app.py +159 -0
  13. biotite/application/localapp.py +342 -0
  14. biotite/application/mafft/__init__.py +12 -0
  15. biotite/application/mafft/app.py +116 -0
  16. biotite/application/msaapp.py +363 -0
  17. biotite/application/muscle/__init__.py +13 -0
  18. biotite/application/muscle/app3.py +227 -0
  19. biotite/application/muscle/app5.py +163 -0
  20. biotite/application/sra/__init__.py +18 -0
  21. biotite/application/sra/app.py +447 -0
  22. biotite/application/tantan/__init__.py +12 -0
  23. biotite/application/tantan/app.py +199 -0
  24. biotite/application/util.py +77 -0
  25. biotite/application/viennarna/__init__.py +18 -0
  26. biotite/application/viennarna/rnaalifold.py +310 -0
  27. biotite/application/viennarna/rnafold.py +254 -0
  28. biotite/application/viennarna/rnaplot.py +208 -0
  29. biotite/application/viennarna/util.py +77 -0
  30. biotite/application/webapp.py +76 -0
  31. biotite/copyable.py +71 -0
  32. biotite/database/__init__.py +23 -0
  33. biotite/database/afdb/__init__.py +12 -0
  34. biotite/database/afdb/download.py +191 -0
  35. biotite/database/entrez/__init__.py +15 -0
  36. biotite/database/entrez/check.py +60 -0
  37. biotite/database/entrez/dbnames.py +101 -0
  38. biotite/database/entrez/download.py +228 -0
  39. biotite/database/entrez/key.py +44 -0
  40. biotite/database/entrez/query.py +263 -0
  41. biotite/database/error.py +16 -0
  42. biotite/database/pubchem/__init__.py +21 -0
  43. biotite/database/pubchem/download.py +258 -0
  44. biotite/database/pubchem/error.py +30 -0
  45. biotite/database/pubchem/query.py +819 -0
  46. biotite/database/pubchem/throttle.py +98 -0
  47. biotite/database/rcsb/__init__.py +13 -0
  48. biotite/database/rcsb/download.py +160 -0
  49. biotite/database/rcsb/query.py +963 -0
  50. biotite/database/uniprot/__init__.py +13 -0
  51. biotite/database/uniprot/check.py +40 -0
  52. biotite/database/uniprot/download.py +126 -0
  53. biotite/database/uniprot/query.py +292 -0
  54. biotite/file.py +244 -0
  55. biotite/interface/__init__.py +19 -0
  56. biotite/interface/openmm/__init__.py +20 -0
  57. biotite/interface/openmm/state.py +93 -0
  58. biotite/interface/openmm/system.py +227 -0
  59. biotite/interface/pymol/__init__.py +201 -0
  60. biotite/interface/pymol/cgo.py +346 -0
  61. biotite/interface/pymol/convert.py +185 -0
  62. biotite/interface/pymol/display.py +267 -0
  63. biotite/interface/pymol/object.py +1226 -0
  64. biotite/interface/pymol/shapes.py +178 -0
  65. biotite/interface/pymol/startup.py +169 -0
  66. biotite/interface/rdkit/__init__.py +19 -0
  67. biotite/interface/rdkit/mol.py +490 -0
  68. biotite/interface/version.py +94 -0
  69. biotite/interface/warning.py +19 -0
  70. biotite/sequence/__init__.py +84 -0
  71. biotite/sequence/align/__init__.py +199 -0
  72. biotite/sequence/align/alignment.py +702 -0
  73. biotite/sequence/align/banded.cpython-312-darwin.so +0 -0
  74. biotite/sequence/align/banded.pyx +652 -0
  75. biotite/sequence/align/buckets.py +71 -0
  76. biotite/sequence/align/cigar.py +425 -0
  77. biotite/sequence/align/kmeralphabet.cpython-312-darwin.so +0 -0
  78. biotite/sequence/align/kmeralphabet.pyx +595 -0
  79. biotite/sequence/align/kmersimilarity.cpython-312-darwin.so +0 -0
  80. biotite/sequence/align/kmersimilarity.pyx +233 -0
  81. biotite/sequence/align/kmertable.cpython-312-darwin.so +0 -0
  82. biotite/sequence/align/kmertable.pyx +3411 -0
  83. biotite/sequence/align/localgapped.cpython-312-darwin.so +0 -0
  84. biotite/sequence/align/localgapped.pyx +892 -0
  85. biotite/sequence/align/localungapped.cpython-312-darwin.so +0 -0
  86. biotite/sequence/align/localungapped.pyx +279 -0
  87. biotite/sequence/align/matrix.py +631 -0
  88. biotite/sequence/align/matrix_data/3Di.mat +24 -0
  89. biotite/sequence/align/matrix_data/BLOSUM100.mat +31 -0
  90. biotite/sequence/align/matrix_data/BLOSUM30.mat +31 -0
  91. biotite/sequence/align/matrix_data/BLOSUM35.mat +31 -0
  92. biotite/sequence/align/matrix_data/BLOSUM40.mat +31 -0
  93. biotite/sequence/align/matrix_data/BLOSUM45.mat +31 -0
  94. biotite/sequence/align/matrix_data/BLOSUM50.mat +31 -0
  95. biotite/sequence/align/matrix_data/BLOSUM50_13p.mat +25 -0
  96. biotite/sequence/align/matrix_data/BLOSUM50_14.3.mat +25 -0
  97. biotite/sequence/align/matrix_data/BLOSUM50_5.0.mat +25 -0
  98. biotite/sequence/align/matrix_data/BLOSUM55.mat +31 -0
  99. biotite/sequence/align/matrix_data/BLOSUM60.mat +31 -0
  100. biotite/sequence/align/matrix_data/BLOSUM62.mat +31 -0
  101. biotite/sequence/align/matrix_data/BLOSUM62_13p.mat +25 -0
  102. biotite/sequence/align/matrix_data/BLOSUM62_14.3.mat +25 -0
  103. biotite/sequence/align/matrix_data/BLOSUM62_5.0.mat +25 -0
  104. biotite/sequence/align/matrix_data/BLOSUM65.mat +31 -0
  105. biotite/sequence/align/matrix_data/BLOSUM70.mat +31 -0
  106. biotite/sequence/align/matrix_data/BLOSUM75.mat +31 -0
  107. biotite/sequence/align/matrix_data/BLOSUM80.mat +31 -0
  108. biotite/sequence/align/matrix_data/BLOSUM85.mat +31 -0
  109. biotite/sequence/align/matrix_data/BLOSUM90.mat +31 -0
  110. biotite/sequence/align/matrix_data/BLOSUMN.mat +31 -0
  111. biotite/sequence/align/matrix_data/CorBLOSUM49_5.0.mat +25 -0
  112. biotite/sequence/align/matrix_data/CorBLOSUM57_13p.mat +25 -0
  113. biotite/sequence/align/matrix_data/CorBLOSUM57_14.3.mat +25 -0
  114. biotite/sequence/align/matrix_data/CorBLOSUM61_5.0.mat +25 -0
  115. biotite/sequence/align/matrix_data/CorBLOSUM66_13p.mat +25 -0
  116. biotite/sequence/align/matrix_data/CorBLOSUM67_14.3.mat +25 -0
  117. biotite/sequence/align/matrix_data/DAYHOFF.mat +32 -0
  118. biotite/sequence/align/matrix_data/GONNET.mat +26 -0
  119. biotite/sequence/align/matrix_data/IDENTITY.mat +25 -0
  120. biotite/sequence/align/matrix_data/MATCH.mat +25 -0
  121. biotite/sequence/align/matrix_data/NUC.mat +25 -0
  122. biotite/sequence/align/matrix_data/PAM10.mat +34 -0
  123. biotite/sequence/align/matrix_data/PAM100.mat +34 -0
  124. biotite/sequence/align/matrix_data/PAM110.mat +34 -0
  125. biotite/sequence/align/matrix_data/PAM120.mat +34 -0
  126. biotite/sequence/align/matrix_data/PAM130.mat +34 -0
  127. biotite/sequence/align/matrix_data/PAM140.mat +34 -0
  128. biotite/sequence/align/matrix_data/PAM150.mat +34 -0
  129. biotite/sequence/align/matrix_data/PAM160.mat +34 -0
  130. biotite/sequence/align/matrix_data/PAM170.mat +34 -0
  131. biotite/sequence/align/matrix_data/PAM180.mat +34 -0
  132. biotite/sequence/align/matrix_data/PAM190.mat +34 -0
  133. biotite/sequence/align/matrix_data/PAM20.mat +34 -0
  134. biotite/sequence/align/matrix_data/PAM200.mat +34 -0
  135. biotite/sequence/align/matrix_data/PAM210.mat +34 -0
  136. biotite/sequence/align/matrix_data/PAM220.mat +34 -0
  137. biotite/sequence/align/matrix_data/PAM230.mat +34 -0
  138. biotite/sequence/align/matrix_data/PAM240.mat +34 -0
  139. biotite/sequence/align/matrix_data/PAM250.mat +34 -0
  140. biotite/sequence/align/matrix_data/PAM260.mat +34 -0
  141. biotite/sequence/align/matrix_data/PAM270.mat +34 -0
  142. biotite/sequence/align/matrix_data/PAM280.mat +34 -0
  143. biotite/sequence/align/matrix_data/PAM290.mat +34 -0
  144. biotite/sequence/align/matrix_data/PAM30.mat +34 -0
  145. biotite/sequence/align/matrix_data/PAM300.mat +34 -0
  146. biotite/sequence/align/matrix_data/PAM310.mat +34 -0
  147. biotite/sequence/align/matrix_data/PAM320.mat +34 -0
  148. biotite/sequence/align/matrix_data/PAM330.mat +34 -0
  149. biotite/sequence/align/matrix_data/PAM340.mat +34 -0
  150. biotite/sequence/align/matrix_data/PAM350.mat +34 -0
  151. biotite/sequence/align/matrix_data/PAM360.mat +34 -0
  152. biotite/sequence/align/matrix_data/PAM370.mat +34 -0
  153. biotite/sequence/align/matrix_data/PAM380.mat +34 -0
  154. biotite/sequence/align/matrix_data/PAM390.mat +34 -0
  155. biotite/sequence/align/matrix_data/PAM40.mat +34 -0
  156. biotite/sequence/align/matrix_data/PAM400.mat +34 -0
  157. biotite/sequence/align/matrix_data/PAM410.mat +34 -0
  158. biotite/sequence/align/matrix_data/PAM420.mat +34 -0
  159. biotite/sequence/align/matrix_data/PAM430.mat +34 -0
  160. biotite/sequence/align/matrix_data/PAM440.mat +34 -0
  161. biotite/sequence/align/matrix_data/PAM450.mat +34 -0
  162. biotite/sequence/align/matrix_data/PAM460.mat +34 -0
  163. biotite/sequence/align/matrix_data/PAM470.mat +34 -0
  164. biotite/sequence/align/matrix_data/PAM480.mat +34 -0
  165. biotite/sequence/align/matrix_data/PAM490.mat +34 -0
  166. biotite/sequence/align/matrix_data/PAM50.mat +34 -0
  167. biotite/sequence/align/matrix_data/PAM500.mat +34 -0
  168. biotite/sequence/align/matrix_data/PAM60.mat +34 -0
  169. biotite/sequence/align/matrix_data/PAM70.mat +34 -0
  170. biotite/sequence/align/matrix_data/PAM80.mat +34 -0
  171. biotite/sequence/align/matrix_data/PAM90.mat +34 -0
  172. biotite/sequence/align/matrix_data/PB.license +21 -0
  173. biotite/sequence/align/matrix_data/PB.mat +18 -0
  174. biotite/sequence/align/matrix_data/RBLOSUM52_5.0.mat +25 -0
  175. biotite/sequence/align/matrix_data/RBLOSUM59_13p.mat +25 -0
  176. biotite/sequence/align/matrix_data/RBLOSUM59_14.3.mat +25 -0
  177. biotite/sequence/align/matrix_data/RBLOSUM64_5.0.mat +25 -0
  178. biotite/sequence/align/matrix_data/RBLOSUM69_13p.mat +25 -0
  179. biotite/sequence/align/matrix_data/RBLOSUM69_14.3.mat +25 -0
  180. biotite/sequence/align/multiple.cpython-312-darwin.so +0 -0
  181. biotite/sequence/align/multiple.pyx +619 -0
  182. biotite/sequence/align/pairwise.cpython-312-darwin.so +0 -0
  183. biotite/sequence/align/pairwise.pyx +585 -0
  184. biotite/sequence/align/permutation.cpython-312-darwin.so +0 -0
  185. biotite/sequence/align/permutation.pyx +313 -0
  186. biotite/sequence/align/primes.txt +821 -0
  187. biotite/sequence/align/selector.cpython-312-darwin.so +0 -0
  188. biotite/sequence/align/selector.pyx +954 -0
  189. biotite/sequence/align/statistics.py +264 -0
  190. biotite/sequence/align/tracetable.cpython-312-darwin.so +0 -0
  191. biotite/sequence/align/tracetable.pxd +64 -0
  192. biotite/sequence/align/tracetable.pyx +370 -0
  193. biotite/sequence/alphabet.py +555 -0
  194. biotite/sequence/annotation.py +836 -0
  195. biotite/sequence/codec.cpython-312-darwin.so +0 -0
  196. biotite/sequence/codec.pyx +155 -0
  197. biotite/sequence/codon.py +476 -0
  198. biotite/sequence/codon_tables.txt +202 -0
  199. biotite/sequence/graphics/__init__.py +33 -0
  200. biotite/sequence/graphics/alignment.py +1101 -0
  201. biotite/sequence/graphics/color_schemes/3di_flower.json +48 -0
  202. biotite/sequence/graphics/color_schemes/autumn.json +51 -0
  203. biotite/sequence/graphics/color_schemes/blossom.json +51 -0
  204. biotite/sequence/graphics/color_schemes/clustalx_dna.json +11 -0
  205. biotite/sequence/graphics/color_schemes/clustalx_protein.json +28 -0
  206. biotite/sequence/graphics/color_schemes/flower.json +51 -0
  207. biotite/sequence/graphics/color_schemes/jalview_buried.json +31 -0
  208. biotite/sequence/graphics/color_schemes/jalview_hydrophobicity.json +31 -0
  209. biotite/sequence/graphics/color_schemes/jalview_prop_helix.json +31 -0
  210. biotite/sequence/graphics/color_schemes/jalview_prop_strand.json +31 -0
  211. biotite/sequence/graphics/color_schemes/jalview_prop_turn.json +31 -0
  212. biotite/sequence/graphics/color_schemes/jalview_taylor.json +28 -0
  213. biotite/sequence/graphics/color_schemes/jalview_zappo.json +28 -0
  214. biotite/sequence/graphics/color_schemes/ocean.json +51 -0
  215. biotite/sequence/graphics/color_schemes/pb_flower.json +40 -0
  216. biotite/sequence/graphics/color_schemes/rainbow_dna.json +11 -0
  217. biotite/sequence/graphics/color_schemes/rainbow_protein.json +30 -0
  218. biotite/sequence/graphics/color_schemes/spring.json +51 -0
  219. biotite/sequence/graphics/color_schemes/sunset.json +51 -0
  220. biotite/sequence/graphics/color_schemes/wither.json +51 -0
  221. biotite/sequence/graphics/colorschemes.py +170 -0
  222. biotite/sequence/graphics/dendrogram.py +231 -0
  223. biotite/sequence/graphics/features.py +544 -0
  224. biotite/sequence/graphics/logo.py +102 -0
  225. biotite/sequence/graphics/plasmid.py +712 -0
  226. biotite/sequence/io/__init__.py +12 -0
  227. biotite/sequence/io/fasta/__init__.py +22 -0
  228. biotite/sequence/io/fasta/convert.py +283 -0
  229. biotite/sequence/io/fasta/file.py +265 -0
  230. biotite/sequence/io/fastq/__init__.py +19 -0
  231. biotite/sequence/io/fastq/convert.py +117 -0
  232. biotite/sequence/io/fastq/file.py +507 -0
  233. biotite/sequence/io/genbank/__init__.py +17 -0
  234. biotite/sequence/io/genbank/annotation.py +269 -0
  235. biotite/sequence/io/genbank/file.py +573 -0
  236. biotite/sequence/io/genbank/metadata.py +336 -0
  237. biotite/sequence/io/genbank/sequence.py +173 -0
  238. biotite/sequence/io/general.py +201 -0
  239. biotite/sequence/io/gff/__init__.py +26 -0
  240. biotite/sequence/io/gff/convert.py +128 -0
  241. biotite/sequence/io/gff/file.py +449 -0
  242. biotite/sequence/phylo/__init__.py +36 -0
  243. biotite/sequence/phylo/nj.cpython-312-darwin.so +0 -0
  244. biotite/sequence/phylo/nj.pyx +221 -0
  245. biotite/sequence/phylo/tree.cpython-312-darwin.so +0 -0
  246. biotite/sequence/phylo/tree.pyx +1169 -0
  247. biotite/sequence/phylo/upgma.cpython-312-darwin.so +0 -0
  248. biotite/sequence/phylo/upgma.pyx +164 -0
  249. biotite/sequence/profile.py +561 -0
  250. biotite/sequence/search.py +117 -0
  251. biotite/sequence/seqtypes.py +720 -0
  252. biotite/sequence/sequence.py +373 -0
  253. biotite/setup_ccd.py +197 -0
  254. biotite/structure/__init__.py +135 -0
  255. biotite/structure/alphabet/__init__.py +25 -0
  256. biotite/structure/alphabet/encoder.py +332 -0
  257. biotite/structure/alphabet/encoder_weights_3di.kerasify +0 -0
  258. biotite/structure/alphabet/i3d.py +109 -0
  259. biotite/structure/alphabet/layers.py +86 -0
  260. biotite/structure/alphabet/pb.license +21 -0
  261. biotite/structure/alphabet/pb.py +170 -0
  262. biotite/structure/alphabet/unkerasify.py +128 -0
  263. biotite/structure/atoms.py +1562 -0
  264. biotite/structure/basepairs.py +1403 -0
  265. biotite/structure/bonds.cpython-312-darwin.so +0 -0
  266. biotite/structure/bonds.pyx +1975 -0
  267. biotite/structure/box.py +724 -0
  268. biotite/structure/celllist.cpython-312-darwin.so +0 -0
  269. biotite/structure/celllist.pyx +864 -0
  270. biotite/structure/chains.py +276 -0
  271. biotite/structure/charges.cpython-312-darwin.so +0 -0
  272. biotite/structure/charges.pyx +520 -0
  273. biotite/structure/compare.py +681 -0
  274. biotite/structure/density.py +109 -0
  275. biotite/structure/dotbracket.py +213 -0
  276. biotite/structure/error.py +39 -0
  277. biotite/structure/filter.py +590 -0
  278. biotite/structure/geometry.py +655 -0
  279. biotite/structure/graphics/__init__.py +13 -0
  280. biotite/structure/graphics/atoms.py +243 -0
  281. biotite/structure/graphics/rna.py +298 -0
  282. biotite/structure/hbond.py +425 -0
  283. biotite/structure/info/__init__.py +24 -0
  284. biotite/structure/info/atom_masses.json +121 -0
  285. biotite/structure/info/atoms.py +90 -0
  286. biotite/structure/info/bonds.py +149 -0
  287. biotite/structure/info/ccd.py +200 -0
  288. biotite/structure/info/components.bcif +0 -0
  289. biotite/structure/info/groups.py +128 -0
  290. biotite/structure/info/masses.py +121 -0
  291. biotite/structure/info/misc.py +137 -0
  292. biotite/structure/info/radii.py +267 -0
  293. biotite/structure/info/standardize.py +185 -0
  294. biotite/structure/integrity.py +213 -0
  295. biotite/structure/io/__init__.py +29 -0
  296. biotite/structure/io/dcd/__init__.py +13 -0
  297. biotite/structure/io/dcd/file.py +67 -0
  298. biotite/structure/io/general.py +243 -0
  299. biotite/structure/io/gro/__init__.py +14 -0
  300. biotite/structure/io/gro/file.py +343 -0
  301. biotite/structure/io/mol/__init__.py +20 -0
  302. biotite/structure/io/mol/convert.py +112 -0
  303. biotite/structure/io/mol/ctab.py +420 -0
  304. biotite/structure/io/mol/header.py +120 -0
  305. biotite/structure/io/mol/mol.py +149 -0
  306. biotite/structure/io/mol/sdf.py +940 -0
  307. biotite/structure/io/netcdf/__init__.py +13 -0
  308. biotite/structure/io/netcdf/file.py +64 -0
  309. biotite/structure/io/pdb/__init__.py +20 -0
  310. biotite/structure/io/pdb/convert.py +388 -0
  311. biotite/structure/io/pdb/file.py +1356 -0
  312. biotite/structure/io/pdb/hybrid36.cpython-312-darwin.so +0 -0
  313. biotite/structure/io/pdb/hybrid36.pyx +242 -0
  314. biotite/structure/io/pdbqt/__init__.py +15 -0
  315. biotite/structure/io/pdbqt/convert.py +113 -0
  316. biotite/structure/io/pdbqt/file.py +688 -0
  317. biotite/structure/io/pdbx/__init__.py +23 -0
  318. biotite/structure/io/pdbx/bcif.py +671 -0
  319. biotite/structure/io/pdbx/cif.py +1088 -0
  320. biotite/structure/io/pdbx/component.py +251 -0
  321. biotite/structure/io/pdbx/compress.py +358 -0
  322. biotite/structure/io/pdbx/convert.py +2097 -0
  323. biotite/structure/io/pdbx/encoding.cpython-312-darwin.so +0 -0
  324. biotite/structure/io/pdbx/encoding.pyx +1047 -0
  325. biotite/structure/io/trajfile.py +696 -0
  326. biotite/structure/io/trr/__init__.py +13 -0
  327. biotite/structure/io/trr/file.py +43 -0
  328. biotite/structure/io/util.py +38 -0
  329. biotite/structure/io/xtc/__init__.py +13 -0
  330. biotite/structure/io/xtc/file.py +43 -0
  331. biotite/structure/mechanics.py +72 -0
  332. biotite/structure/molecules.py +337 -0
  333. biotite/structure/pseudoknots.py +622 -0
  334. biotite/structure/rdf.py +245 -0
  335. biotite/structure/repair.py +302 -0
  336. biotite/structure/residues.py +544 -0
  337. biotite/structure/rings.py +335 -0
  338. biotite/structure/sasa.cpython-312-darwin.so +0 -0
  339. biotite/structure/sasa.pyx +322 -0
  340. biotite/structure/segments.py +292 -0
  341. biotite/structure/sequence.py +110 -0
  342. biotite/structure/spacegroups.json +1567 -0
  343. biotite/structure/spacegroups.license +26 -0
  344. biotite/structure/sse.py +306 -0
  345. biotite/structure/superimpose.py +511 -0
  346. biotite/structure/tm.py +581 -0
  347. biotite/structure/transform.py +736 -0
  348. biotite/structure/util.py +168 -0
  349. biotite/version.py +21 -0
  350. biotite/visualize.py +375 -0
  351. biotite-1.3.0.dist-info/METADATA +162 -0
  352. biotite-1.3.0.dist-info/RECORD +354 -0
  353. biotite-1.3.0.dist-info/WHEEL +6 -0
  354. biotite-1.3.0.dist-info/licenses/LICENSE.rst +30 -0
@@ -0,0 +1,13 @@
1
+ # This source code is part of the Biotite package and is distributed
2
+ # under the 3-Clause BSD License. Please see 'LICENSE.rst' for further
3
+ # information.
4
+
5
+ """
6
+ This subpackage is used for reading and writing trajectories in the
7
+ *AMBER* NetCDF format.
8
+ """
9
+
10
+ __name__ = "biotite.structure.io.netcdf"
11
+ __author__ = "Patrick Kunzmann"
12
+
13
+ from .file import *
@@ -0,0 +1,64 @@
1
+ # This source code is part of the Biotite package and is distributed
2
+ # under the 3-Clause BSD License. Please see 'LICENSE.rst' for further
3
+ # information.
4
+
5
+ __name__ = "biotite.structure.io.netcdf"
6
+ __author__ = "Patrick Kunzmann"
7
+ __all__ = ["NetCDFFile"]
8
+
9
+ import biotraj
10
+ import numpy as np
11
+ from biotite.structure.box import unitcell_from_vectors, vectors_from_unitcell
12
+ from biotite.structure.io.trajfile import TrajectoryFile
13
+
14
+
15
+ class NetCDFFile(TrajectoryFile):
16
+ """
17
+ This file class represents a NetCDF trajectory file.
18
+ """
19
+
20
+ @classmethod
21
+ def traj_type(cls):
22
+ return biotraj.NetCDFTrajectoryFile
23
+
24
+ @classmethod
25
+ def process_read_values(cls, read_values):
26
+ # .dcd files use Angstrom
27
+ coord = read_values[0]
28
+ time = read_values[1]
29
+ cell_lengths = read_values[2]
30
+ cell_angles = read_values[3]
31
+ if cell_lengths is None or cell_angles is None:
32
+ box = None
33
+ else:
34
+ box = np.stack(
35
+ [
36
+ vectors_from_unitcell(a, b, c, alpha, beta, gamma)
37
+ for (a, b, c), (alpha, beta, gamma) in zip(
38
+ cell_lengths, np.deg2rad(cell_angles)
39
+ )
40
+ ],
41
+ axis=0,
42
+ )
43
+ return coord, box, time
44
+
45
+ @classmethod
46
+ def prepare_write_values(cls, coord, box, time):
47
+ coord = coord.astype(np.float32, copy=False) if coord is not None else None
48
+ time = time.astype(np.float32, copy=False) if time is not None else None
49
+ if box is None:
50
+ cell_lengths = None
51
+ cell_angles = None
52
+ else:
53
+ cell_lengths = np.zeros((len(box), 3), dtype=np.float32)
54
+ cell_angles = np.zeros((len(box), 3), dtype=np.float32)
55
+ for i, model_box in enumerate(box):
56
+ a, b, c, alpha, beta, gamma = unitcell_from_vectors(model_box)
57
+ cell_lengths[i] = np.array((a, b, c))
58
+ cell_angles[i] = np.rad2deg((alpha, beta, gamma))
59
+ return {
60
+ "coordinates": coord,
61
+ "time": time,
62
+ "cell_lengths": cell_lengths,
63
+ "cell_angles": cell_angles,
64
+ }
@@ -0,0 +1,20 @@
1
+ # This source code is part of the Biotite package and is distributed
2
+ # under the 3-Clause BSD License. Please see 'LICENSE.rst' for further
3
+ # information.
4
+
5
+ """
6
+ This subpackage is used for reading and writing an :class:`AtomArray` or
7
+ :class:`AtomArrayStack` using the popular PDB format.
8
+ Since this format has some limitations, it will be completely replaced
9
+ someday by the modern PDBx format.
10
+ Therefore this subpackage should only be used, if usage of the
11
+ PDBx (CIF or BinaryCIF) format is not suitable (e.g. when interfacing
12
+ other software).
13
+ In all other cases, usage of the :mod:`pdbx` subpackage is encouraged.
14
+ """
15
+
16
+ __name__ = "biotite.structure.io.pdb"
17
+ __author__ = "Patrick Kunzmann"
18
+
19
+ from .convert import *
20
+ from .file import *
@@ -0,0 +1,388 @@
1
+ # This source code is part of the Biotite package and is distributed
2
+ # under the 3-Clause BSD License. Please see 'LICENSE.rst' for further
3
+ # information.
4
+
5
+ """
6
+ Some convenience functions for consistency with other ``structure.io``
7
+ subpackages.
8
+ """
9
+
10
+ __name__ = "biotite.structure.io.pdb"
11
+ __author__ = "Patrick Kunzmann"
12
+ __all__ = [
13
+ "get_model_count",
14
+ "get_structure",
15
+ "set_structure",
16
+ "list_assemblies",
17
+ "get_assembly",
18
+ "get_unit_cell",
19
+ ]
20
+
21
+ import warnings
22
+
23
+
24
+ def get_model_count(pdb_file):
25
+ """
26
+ Get the number of models contained in a :class:`PDBFile`.
27
+
28
+ Parameters
29
+ ----------
30
+ pdb_file : PDBFile
31
+ The file object.
32
+
33
+ Returns
34
+ -------
35
+ model_count : int
36
+ The number of models.
37
+ """
38
+ return pdb_file.get_model_count()
39
+
40
+
41
+ def get_structure(
42
+ pdb_file, model=None, altloc="first", extra_fields=[], include_bonds=False
43
+ ):
44
+ """
45
+ Create an :class:`AtomArray` or :class:`AtomArrayStack` from a
46
+ :class:`PDBFile`.
47
+
48
+ This function is a thin wrapper around the :class:`PDBFile` method
49
+ :func:`get_structure()` for the sake of consistency with other
50
+ ``structure.io`` subpackages.
51
+
52
+ Parameters
53
+ ----------
54
+ pdb_file : PDBFile
55
+ The file object.
56
+ model : int, optional
57
+ If this parameter is given, the function will return an
58
+ :class:`AtomArray` from the atoms corresponding to the given
59
+ model number (starting at 1).
60
+ Negative values are used to index models starting from the last
61
+ model instead of the first model.
62
+ If this parameter is omitted, an :class:`AtomArrayStack`
63
+ containing all models will be returned, even if the structure
64
+ contains only one model.
65
+ altloc : {'first', 'occupancy', 'all'}
66
+ This parameter defines how *altloc* IDs are handled:
67
+ - ``'first'`` - Use atoms that have the first *altloc* ID
68
+ appearing in a residue.
69
+ - ``'occupancy'`` - Use atoms that have the *altloc* ID
70
+ with the highest occupancy for a residue.
71
+ - ``'all'`` - Use all atoms.
72
+ Note that this leads to duplicate atoms.
73
+ When this option is chosen, the ``altloc_id`` annotation
74
+ array is added to the returned structure.
75
+ extra_fields : list of str, optional
76
+ The strings in the list are optional annotation categories
77
+ that should be stored in the output array or stack.
78
+ These are valid values:
79
+ ``'atom_id'``, ``'b_factor'``, ``'occupancy'`` and ``'charge'``.
80
+ include_bonds : bool, optional
81
+ If set to true, a :class:`BondList` will be created for the
82
+ resulting :class:`AtomArray` containing the bond information
83
+ from the file.
84
+ Bonds, whose order could not be determined from the
85
+ *Chemical Component Dictionary*
86
+ (e.g. especially inter-residue bonds),
87
+ have :attr:`BondType.ANY`, since the PDB format itself does
88
+ not support bond orders.
89
+
90
+ Returns
91
+ -------
92
+ array : AtomArray or AtomArrayStack
93
+ The return type depends on the `model` parameter.
94
+ """
95
+ return pdb_file.get_structure(model, altloc, extra_fields, include_bonds)
96
+
97
+
98
+ def set_structure(pdb_file, array, hybrid36=False):
99
+ """
100
+ Write an :class:`AtomArray` or :class:`AtomArrayStack` into a
101
+ :class:`PDBFile`.
102
+
103
+ This function is a thin wrapper around the :class:`PDBFile` method
104
+ :func:`set_structure()` for the sake of consistency with other
105
+ ``structure.io`` subpackages.
106
+
107
+ This will save the coordinates, the mandatory annotation categories
108
+ and the optional annotation categories
109
+ 'atom_id', 'b_factor', 'occupancy' and 'charge'.
110
+
111
+ Parameters
112
+ ----------
113
+ pdb_file : PDBFile
114
+ The file object.
115
+ array : AtomArray or AtomArrayStack
116
+ The structure to be written. If a stack is given, each array in
117
+ the stack will be in a separate model.
118
+ hybrid36 : boolean, optional
119
+ Defines wether the file should be written in hybrid-36 format.
120
+
121
+ Notes
122
+ -----
123
+ If `array` has an associated :class:`BondList`, ``CONECT``
124
+ records are also written for all non-water hetero residues
125
+ and all inter-residue connections.
126
+ """
127
+ pdb_file.set_structure(array, hybrid36)
128
+
129
+
130
+ def list_assemblies(pdb_file):
131
+ """
132
+ List the biological assemblies that are available for the
133
+ structure in the given file.
134
+
135
+ This function receives the data from the ``REMARK 300`` records
136
+ in the file.
137
+ Consequently, this remark must be present in the file.
138
+
139
+ Parameters
140
+ ----------
141
+ pdb_file : PDBFile
142
+ The file object.
143
+
144
+ Returns
145
+ -------
146
+ assemblies : list of str
147
+ A list that contains the available assembly IDs.
148
+
149
+ Examples
150
+ --------
151
+ >>> import os.path
152
+ >>> file = PDBFile.read(os.path.join(path_to_structures, "1f2n.pdb"))
153
+ >>> print(list_assemblies(file))
154
+ ['1']
155
+ """
156
+ return pdb_file.list_assemblies()
157
+
158
+
159
+ def get_assembly(
160
+ pdb_file,
161
+ assembly_id=None,
162
+ model=None,
163
+ altloc="first",
164
+ extra_fields=[],
165
+ include_bonds=False,
166
+ ):
167
+ """
168
+ Build the given biological assembly.
169
+
170
+ This function receives the data from ``REMARK 350`` records in
171
+ the file.
172
+ Consequently, this remark must be present in the file.
173
+
174
+ Parameters
175
+ ----------
176
+ pdb_file : PDBFile
177
+ The file object.
178
+ assembly_id : str
179
+ The assembly to build.
180
+ Available assembly IDs can be obtained via
181
+ :func:`list_assemblies()`.
182
+ model : int, optional
183
+ If this parameter is given, the function will return an
184
+ :class:`AtomArray` from the atoms corresponding to the given
185
+ model number (starting at 1).
186
+ Negative values are used to index models starting from the
187
+ last model instead of the first model.
188
+ If this parameter is omitted, an :class:`AtomArrayStack`
189
+ containing all models will be returned, even if the
190
+ structure contains only one model.
191
+ altloc : {'first', 'occupancy', 'all'}
192
+ This parameter defines how *altloc* IDs are handled:
193
+ - ``'first'`` - Use atoms that have the first
194
+ *altloc* ID appearing in a residue.
195
+ - ``'occupancy'`` - Use atoms that have the *altloc* ID
196
+ with the highest occupancy for a residue.
197
+ - ``'all'`` - Use all atoms.
198
+ Note that this leads to duplicate atoms.
199
+ When this option is chosen, the ``altloc_id``
200
+ annotation array is added to the returned structure.
201
+ extra_fields : list of str, optional
202
+ The strings in the list are optional annotation categories
203
+ that should be stored in the output array or stack.
204
+ These are valid values:
205
+ ``'atom_id'``, ``'b_factor'``, ``'occupancy'`` and
206
+ ``'charge'``.
207
+ include_bonds : bool, optional
208
+ If set to true, a :class:`BondList` will be created for the
209
+ resulting :class:`AtomArray` containing the bond information
210
+ from the file.
211
+ Bonds, whose order could not be determined from the
212
+ *Chemical Component Dictionary*
213
+ (e.g. especially inter-residue bonds),
214
+ have :attr:`BondType.ANY`, since the PDB format itself does
215
+ not support bond orders.
216
+
217
+ Returns
218
+ -------
219
+ assembly : AtomArray or AtomArrayStack
220
+ The assembly.
221
+ The return type depends on the `model` parameter.
222
+ Contains the `sym_id` annotation, which enumerates the copies of the asymmetric
223
+ unit in the assembly.
224
+
225
+ Examples
226
+ --------
227
+
228
+ >>> import os.path
229
+ >>> file = PDBFile.read(os.path.join(path_to_structures, "1f2n.pdb"))
230
+ >>> assembly = get_assembly(file, model=1)
231
+ """
232
+ return pdb_file.get_assembly(
233
+ assembly_id, model, altloc, extra_fields, include_bonds
234
+ )
235
+
236
+
237
+ def get_unit_cell(
238
+ pdb_file, model=None, altloc="first", extra_fields=[], include_bonds=False
239
+ ):
240
+ """
241
+ Build a structure model containing all symmetric copies
242
+ of the structure within a single unit cell, given by the space
243
+ group.
244
+
245
+ This function receives the data from ``REMARK 290`` records in
246
+ the file.
247
+ Consequently, this remark must be present in the file, which is
248
+ usually only true for crystal structures.
249
+
250
+ Parameters
251
+ ----------
252
+ pdb_file : PDBFile
253
+ The file object.
254
+ model : int, optional
255
+ If this parameter is given, the function will return an
256
+ :class:`AtomArray` from the atoms corresponding to the given
257
+ model number (starting at 1).
258
+ Negative values are used to index models starting from the
259
+ last model instead of the first model.
260
+ If this parameter is omitted, an :class:`AtomArrayStack`
261
+ containing all models will be returned, even if the
262
+ structure contains only one model.
263
+ altloc : {'first', 'occupancy', 'all'}
264
+ This parameter defines how *altloc* IDs are handled:
265
+ - ``'first'`` - Use atoms that have the first
266
+ *altloc* ID appearing in a residue.
267
+ - ``'occupancy'`` - Use atoms that have the *altloc* ID
268
+ with the highest occupancy for a residue.
269
+ - ``'all'`` - Use all atoms.
270
+ Note that this leads to duplicate atoms.
271
+ When this option is chosen, the ``altloc_id``
272
+ annotation array is added to the returned structure.
273
+ extra_fields : list of str, optional
274
+ The strings in the list are optional annotation categories
275
+ that should be stored in the output array or stack.
276
+ These are valid values:
277
+ ``'atom_id'``, ``'b_factor'``, ``'occupancy'`` and
278
+ ``'charge'``.
279
+ include_bonds : bool, optional
280
+ If set to true, a :class:`BondList` will be created for the
281
+ resulting :class:`AtomArray` containing the bond information
282
+ from the file.
283
+ Bonds, whose order could not be determined from the
284
+ *Chemical Component Dictionary*
285
+ (e.g. especially inter-residue bonds),
286
+ have :attr:`BondType.ANY`, since the PDB format itself does
287
+ not support bond orders.
288
+
289
+ Returns
290
+ -------
291
+ symmetry_mates : AtomArray or AtomArrayStack
292
+ All atoms within a single unit cell.
293
+ The return type depends on the `model` parameter.
294
+
295
+ Notes
296
+ -----
297
+ To expand the structure beyond a single unit cell, use
298
+ :func:`repeat_box()` with the return value as its
299
+ input.
300
+
301
+ Examples
302
+ --------
303
+
304
+ >>> import os.path
305
+ >>> file = PDBFile.read(os.path.join(path_to_structures, "1aki.pdb"))
306
+ >>> atoms_in_unit_cell = get_unit_cell(file, model=1)
307
+ """
308
+ return pdb_file.get_unit_cell(model, altloc, extra_fields, include_bonds)
309
+
310
+
311
+ def get_symmetry_mates(
312
+ pdb_file, model=None, altloc="first", extra_fields=[], include_bonds=False
313
+ ):
314
+ """
315
+ Build a structure model containing all symmetric copies
316
+ of the structure within a single unit cell, given by the space
317
+ group.
318
+
319
+ This function receives the data from ``REMARK 290`` records in
320
+ the file.
321
+ Consequently, this remark must be present in the file, which is
322
+ usually only true for crystal structures.
323
+
324
+ DEPRECATED: Use :func:`get_unit_cell()` instead.
325
+
326
+ Parameters
327
+ ----------
328
+ pdb_file : PDBFile
329
+ The file object.
330
+ model : int, optional
331
+ If this parameter is given, the function will return an
332
+ :class:`AtomArray` from the atoms corresponding to the given
333
+ model number (starting at 1).
334
+ Negative values are used to index models starting from the
335
+ last model instead of the first model.
336
+ If this parameter is omitted, an :class:`AtomArrayStack`
337
+ containing all models will be returned, even if the
338
+ structure contains only one model.
339
+ altloc : {'first', 'occupancy', 'all'}
340
+ This parameter defines how *altloc* IDs are handled:
341
+ - ``'first'`` - Use atoms that have the first
342
+ *altloc* ID appearing in a residue.
343
+ - ``'occupancy'`` - Use atoms that have the *altloc* ID
344
+ with the highest occupancy for a residue.
345
+ - ``'all'`` - Use all atoms.
346
+ Note that this leads to duplicate atoms.
347
+ When this option is chosen, the ``altloc_id``
348
+ annotation array is added to the returned structure.
349
+ extra_fields : list of str, optional
350
+ The strings in the list are optional annotation categories
351
+ that should be stored in the output array or stack.
352
+ These are valid values:
353
+ ``'atom_id'``, ``'b_factor'``, ``'occupancy'`` and
354
+ ``'charge'``.
355
+ include_bonds : bool, optional
356
+ If set to true, a :class:`BondList` will be created for the
357
+ resulting :class:`AtomArray` containing the bond information
358
+ from the file.
359
+ Bonds, whose order could not be determined from the
360
+ *Chemical Component Dictionary*
361
+ (e.g. especially inter-residue bonds),
362
+ have :attr:`BondType.ANY`, since the PDB format itself does
363
+ not support bond orders.
364
+
365
+ Returns
366
+ -------
367
+ symmetry_mates : AtomArray or AtomArrayStack
368
+ All atoms within a single unit cell.
369
+ The return type depends on the `model` parameter.
370
+
371
+ Notes
372
+ -----
373
+ To expand the structure beyond a single unit cell, use
374
+ :func:`repeat_box()` with the return value as its
375
+ input.
376
+
377
+ Examples
378
+ --------
379
+
380
+ >>> import os.path
381
+ >>> file = PDBFile.read(os.path.join(path_to_structures, "1aki.pdb"))
382
+ >>> atoms_in_unit_cell = get_symmetry_mates(file, model=1)
383
+ """
384
+ warnings.warn(
385
+ "'get_symmetry_mates()' is deprecated, use 'get_unit_cell()' instead",
386
+ DeprecationWarning,
387
+ )
388
+ return pdb_file.get_unit_cell(model, altloc, extra_fields, include_bonds)