biotite 1.5.0__cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_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 +216 -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 +197 -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 +161 -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 +1228 -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-x86_64-linux-gnu.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-x86_64-linux-gnu.so +0 -0
  78. biotite/sequence/align/kmeralphabet.pyx +595 -0
  79. biotite/sequence/align/kmersimilarity.cpython-312-x86_64-linux-gnu.so +0 -0
  80. biotite/sequence/align/kmersimilarity.pyx +233 -0
  81. biotite/sequence/align/kmertable.cpython-312-x86_64-linux-gnu.so +0 -0
  82. biotite/sequence/align/kmertable.pyx +3411 -0
  83. biotite/sequence/align/localgapped.cpython-312-x86_64-linux-gnu.so +0 -0
  84. biotite/sequence/align/localgapped.pyx +892 -0
  85. biotite/sequence/align/localungapped.cpython-312-x86_64-linux-gnu.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-x86_64-linux-gnu.so +0 -0
  181. biotite/sequence/align/multiple.pyx +619 -0
  182. biotite/sequence/align/pairwise.cpython-312-x86_64-linux-gnu.so +0 -0
  183. biotite/sequence/align/pairwise.pyx +585 -0
  184. biotite/sequence/align/permutation.cpython-312-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.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-x86_64-linux-gnu.so +0 -0
  244. biotite/sequence/phylo/nj.pyx +221 -0
  245. biotite/sequence/phylo/tree.cpython-312-x86_64-linux-gnu.so +0 -0
  246. biotite/sequence/phylo/tree.pyx +1169 -0
  247. biotite/sequence/phylo/upgma.cpython-312-x86_64-linux-gnu.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-x86_64-linux-gnu.so +0 -0
  266. biotite/structure/bonds.pyx +2036 -0
  267. biotite/structure/box.py +724 -0
  268. biotite/structure/celllist.cpython-312-x86_64-linux-gnu.so +0 -0
  269. biotite/structure/celllist.pyx +864 -0
  270. biotite/structure/chains.py +310 -0
  271. biotite/structure/charges.cpython-312-x86_64-linux-gnu.so +0 -0
  272. biotite/structure/charges.pyx +520 -0
  273. biotite/structure/compare.py +683 -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 +591 -0
  278. biotite/structure/geometry.py +817 -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 +98 -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 +389 -0
  311. biotite/structure/io/pdb/file.py +1380 -0
  312. biotite/structure/io/pdb/hybrid36.cpython-312-x86_64-linux-gnu.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 +674 -0
  319. biotite/structure/io/pdbx/cif.py +1091 -0
  320. biotite/structure/io/pdbx/component.py +251 -0
  321. biotite/structure/io/pdbx/compress.py +362 -0
  322. biotite/structure/io/pdbx/convert.py +2113 -0
  323. biotite/structure/io/pdbx/encoding.cpython-312-x86_64-linux-gnu.so +0 -0
  324. biotite/structure/io/pdbx/encoding.pyx +1078 -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 +716 -0
  337. biotite/structure/rings.py +451 -0
  338. biotite/structure/sasa.cpython-312-x86_64-linux-gnu.so +0 -0
  339. biotite/structure/sasa.pyx +322 -0
  340. biotite/structure/segments.py +328 -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 +160 -0
  349. biotite/version.py +34 -0
  350. biotite/visualize.py +375 -0
  351. biotite-1.5.0.dist-info/METADATA +162 -0
  352. biotite-1.5.0.dist-info/RECORD +354 -0
  353. biotite-1.5.0.dist-info/WHEEL +6 -0
  354. biotite-1.5.0.dist-info/licenses/LICENSE.rst +30 -0
@@ -0,0 +1,109 @@
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 module provides functions to calculate atomistic densities.
7
+ """
8
+
9
+ __name__ = "biotite.structure"
10
+ __author__ = "Daniel Bauer"
11
+ __all__ = ["density"]
12
+
13
+ import numpy as np
14
+ from biotite.structure.atoms import coord
15
+
16
+
17
+ def density(atoms, selection=None, delta=1.0, bins=None, density=False, weights=None):
18
+ r"""
19
+ Compute the density of the selected atoms.
20
+
21
+ This creates a 3d histogram over the coordinates of selected atoms.
22
+ By default, the grid for the histogram is built based on the
23
+ coordinates of the given `atoms` with an even gridspacing of
24
+ `delta` in all three dimensions.
25
+ Alternatively, a custom grid can be used.
26
+
27
+ Parameters
28
+ ----------
29
+ atoms : AtomArray or AtomArrayStack or ndarray, shape=(n,3) or shape=(m,n,3)
30
+ The density is calculated based on these atoms.
31
+ Alternatively, the coordinates can be directly provided as
32
+ `ndarray`.
33
+ selection : ndarray, dtype=bool, shape=(n,), optional
34
+ Boolean mask for `atoms` to calculate the density only on a set
35
+ of atoms.
36
+ delta : float, optional
37
+ Distance between grid points for density calculation (in Å).
38
+ bins : int or sequence of scalars or str, optional
39
+ Bins for the RDF.
40
+
41
+ - If `bins` is an `int`, it defines the number of bins.
42
+ - If `bins` is a sequence, it defines the bin edges, ignoring
43
+ the actual coordinates of the `atoms` selection.
44
+ - If `bins` is a string, it defines the function used to
45
+ calculate the bins.
46
+
47
+ See :func:`numpy.histogramdd()` for further details.
48
+ density : boolean, optional
49
+ If False, the number of samples in each bin is returned.
50
+ Otherwise, returns the probability density function of each bin.
51
+ See :func:`numpy.histogramdd()` for further details.
52
+ weights : ndarray, shape=(n,) or shape=(m,n), optional
53
+ An array of values to weight the contribution of *n* atoms in
54
+ *m* models.
55
+ If the shape is *(n,)*, the weights will be interpreted as
56
+ *per atom*.
57
+ A shape of *(m,n)* allows to additionally weight atoms on a
58
+ *per model* basis.
59
+
60
+ Returns
61
+ -------
62
+ H : ndarray, dtype=float
63
+ The threedimensional histogram of the selected atoms.
64
+ The histogram takes the atoms in all models into account.
65
+ The length of the histogram depends on `atoms` coordinates and
66
+ `delta`, or the supplied `bins` input parameter.
67
+ edges : list of ndarray, dtype=float
68
+ A list containing the 3 arrays describing the bin edges.
69
+ """
70
+ coords = coord(atoms)
71
+
72
+ is_stack = coords.ndim == 3
73
+
74
+ # Define the grid for coordinate binning based on coordinates of
75
+ # supplied atoms
76
+ # This makes the binning independent of a supplied box vector and
77
+ # fluctuating box dimensions are not a problem
78
+ # However, this means that the user has to make sure the region of
79
+ # interest is in the center of the box, i.e. by centering the
80
+ # investigated protein in the box.
81
+ if bins is None:
82
+ if is_stack:
83
+ axis = (0, 1)
84
+ else:
85
+ axis = 0
86
+ grid_min, grid_max = np.min(coords, axis=axis), np.max(coords, axis=axis)
87
+ bins = [
88
+ np.arange(grid_min[0], grid_max[0] + delta, delta),
89
+ np.arange(grid_min[1], grid_max[1] + delta, delta),
90
+ np.arange(grid_min[2], grid_max[2] + delta, delta),
91
+ ]
92
+
93
+ if selection is None:
94
+ selected_coords = coords
95
+ else:
96
+ selected_coords = coords[..., selection, :]
97
+
98
+ # Reshape the coords into Nx3
99
+ coords = selected_coords.reshape((np.prod(selected_coords.shape[:-1]), 3))
100
+
101
+ # We need a weight value per coordinate, but input might be per atom
102
+ if weights is not None:
103
+ if is_stack and len(weights.shape) < 2:
104
+ weights = np.tile(weights, len(selected_coords))
105
+ weights = weights.reshape(coords.shape[0])
106
+
107
+ # Calculate the histogram
108
+ hist = np.histogramdd(coords, bins=bins, density=density, weights=weights)
109
+ return hist
@@ -0,0 +1,213 @@
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 module handles conversion of RNA structures to
7
+ dot-bracket-notation.
8
+ """
9
+
10
+ __name__ = "biotite.structure"
11
+ __author__ = "Tom David Müller"
12
+ __all__ = ["dot_bracket_from_structure", "dot_bracket", "base_pairs_from_dot_bracket"]
13
+
14
+ import numpy as np
15
+ from biotite.structure.basepairs import base_pairs
16
+ from biotite.structure.pseudoknots import pseudoknots
17
+ from biotite.structure.residues import get_residue_count, get_residue_positions
18
+
19
+ _OPENING_BRACKETS = "([{<ABCDEFGHIJKLMNOPQRSTUVWXYZ"
20
+ _OPENING_BRACKETS_BYTES = _OPENING_BRACKETS.encode()
21
+ _CLOSING_BRACKETS = ")]}>abcdefghijklmnopqrstuvwxyz"
22
+ _CLOSING_BRACKETS_BYTES = _CLOSING_BRACKETS.encode()
23
+
24
+
25
+ def dot_bracket_from_structure(
26
+ nucleic_acid_strand, scores=None, max_pseudoknot_order=None
27
+ ):
28
+ """
29
+ Represent a nucleic-acid-strand in dot-bracket-letter-notation
30
+ (DBL-notation). :footcite:`Antczak2018`
31
+
32
+ Parameters
33
+ ----------
34
+ nucleic_acid_strand : AtomArray
35
+ The nucleic acid strand to be represented in DBL-notation.
36
+ scores : ndarray, dtype=int, shape=(n,)
37
+ The score for each base pair, which is passed on to
38
+ :func:`pseudoknots()`.
39
+ max_pseudoknot_order : int
40
+ The maximum pseudoknot order to be found. If a base pair would
41
+ be of a higher order, it is represented as unpaired. If ``None``
42
+ is given, all base pairs are evaluated.
43
+
44
+ Returns
45
+ -------
46
+ notations : list [str, ...]
47
+ The DBL-notation for each solution from :func:`pseudoknots()`.
48
+
49
+ See Also
50
+ --------
51
+ base_pairs : Compute the base pairs from a structure as passed to this function.
52
+ dot_bracket : Compute the dot bracket notation directly from base pairs.
53
+ pseudoknots : Get the pseudoknot order for each base pair.
54
+
55
+ References
56
+ ----------
57
+
58
+ .. footbibliography::
59
+ """
60
+ basepairs = base_pairs(nucleic_acid_strand)
61
+ if len(basepairs) == 0:
62
+ return [""]
63
+ basepairs = get_residue_positions(nucleic_acid_strand, basepairs)
64
+ length = get_residue_count(nucleic_acid_strand)
65
+ return dot_bracket(
66
+ basepairs, length, scores=scores, max_pseudoknot_order=max_pseudoknot_order
67
+ )
68
+
69
+
70
+ def dot_bracket(basepairs, length, scores=None, max_pseudoknot_order=None):
71
+ """
72
+ Represent a nucleic acid strand in dot-bracket-letter-notation
73
+ (DBL-notation). :footcite:`Antczak2018`
74
+
75
+ The nucleic acid strand is represented as nucleotide sequence,
76
+ where the nucleotides are counted continiously from zero.
77
+
78
+ Parameters
79
+ ----------
80
+ basepairs : ndarray, shape=(n,2)
81
+ Each row corresponds to the positions of the bases in the
82
+ strand.
83
+ length : int
84
+ The number of bases in the strand.
85
+ scores : ndarray, dtype=int, shape=(n,)
86
+ The score for each base pair, which is passed on to :func:`pseudoknots()`.
87
+ max_pseudoknot_order : int
88
+ The maximum pseudoknot order to be found. If a base pair would
89
+ be of a higher order, it is represented as unpaired. If ``None``
90
+ is given, all pseudoknot orders are evaluated.
91
+
92
+ Returns
93
+ -------
94
+ notations : list [str, ...]
95
+ The DBL-notation for each solution from :func:`pseudoknots()`.
96
+
97
+ See Also
98
+ --------
99
+ base_pairs_from_dot_bracket : The reverse operation.
100
+ dot_bracket_from_structure : Compute the dot bracket notation from a structure.
101
+ base_pairs : Compute the base pairs from a structure as passed to this function.
102
+ pseudoknots : Get the pseudoknot order for each base pair.
103
+
104
+ References
105
+ ----------
106
+
107
+ .. footbibliography::
108
+
109
+ Examples
110
+ --------
111
+ The sequence ``ACGTC`` has a length of 5. If there was to be a
112
+ pairing interaction between the ``A`` and ``T``, `basepairs` would
113
+ have the form:
114
+
115
+ >>> import numpy as np
116
+ >>> basepairs = np.array([[0, 3]])
117
+
118
+ The DBL Notation can then be found with ``dot_bracket()``:
119
+
120
+ >>> dot_bracket(basepairs, 5)[0]
121
+ '(..).'
122
+ """
123
+ # Make sure the lower residue is on the left for each row
124
+ basepairs = np.sort(basepairs, axis=1)
125
+
126
+ # Get pseudoknot order
127
+ pseudoknot_order = pseudoknots(
128
+ basepairs, scores=scores, max_pseudoknot_order=max_pseudoknot_order
129
+ )
130
+
131
+ # Each optimal pseudoknot order solution is represented in
132
+ # dot-bracket-notation
133
+ notations = [bytearray((b"." * length)) for _ in range(len(pseudoknot_order))]
134
+ for s, solution in enumerate(pseudoknot_order):
135
+ for basepair, order in zip(basepairs, solution):
136
+ if order == -1:
137
+ continue
138
+ notations[s][basepair[0]] = _OPENING_BRACKETS_BYTES[order]
139
+ notations[s][basepair[1]] = _CLOSING_BRACKETS_BYTES[order]
140
+ return [notation.decode() for notation in notations]
141
+
142
+
143
+ def base_pairs_from_dot_bracket(dot_bracket_notation):
144
+ """
145
+ Extract the base pairs from a nucleic-acid-strand in
146
+ dot-bracket-letter-notation (DBL-notation). :footcite:`Antczak2018`
147
+
148
+ The nucleic acid strand is represented as nucleotide sequence,
149
+ where the nucleotides are counted continiously from zero.
150
+
151
+ Parameters
152
+ ----------
153
+ dot_bracket_notation : str
154
+ The DBL-notation.
155
+
156
+ Returns
157
+ -------
158
+ basepairs : ndarray, shape=(n,2)
159
+ Each row corresponds to the positions of the bases in the
160
+ sequence.
161
+
162
+ See Also
163
+ --------
164
+ dot_bracket : The reverse operation.
165
+
166
+ References
167
+ ----------
168
+
169
+ .. footbibliography::
170
+
171
+ Examples
172
+ --------
173
+ The notation string ``'(..).'`` contains a base pair between the
174
+ indices 0 and 3. This pairing interaction can be extracted
175
+ conveniently by the use of :func:`base_pairs_from_dot_bracket()`:
176
+
177
+ >>> base_pairs_from_dot_bracket('(..).')
178
+ array([[0, 3]])
179
+ """
180
+ basepairs = []
181
+ opened_brackets = [[] for _ in range(len(_OPENING_BRACKETS))]
182
+
183
+ # Iterate through input string and extract base pairs
184
+ for pos, symbol in enumerate(dot_bracket_notation):
185
+ if symbol in _OPENING_BRACKETS:
186
+ # Add opening residues to list (separate list for each
187
+ # bracket type)
188
+ index = _OPENING_BRACKETS.index(symbol)
189
+ opened_brackets[index].append(pos)
190
+
191
+ elif symbol in _CLOSING_BRACKETS:
192
+ # For each closing bracket, the the base pair consists out
193
+ # of the current index and the last index added to the list
194
+ # in `opened_brackets` corresponding to the same bracket
195
+ # type.
196
+ index = _CLOSING_BRACKETS.index(symbol)
197
+ basepairs.append((opened_brackets[index].pop(), pos))
198
+
199
+ else:
200
+ if symbol != ".":
201
+ raise ValueError(f"'{symbol}' is an invalid character for DBL-notation")
202
+
203
+ for not_closed in opened_brackets:
204
+ if not_closed != []:
205
+ raise ValueError(
206
+ "Invalid DBL-notation, not all opening brackets have a closing bracket"
207
+ )
208
+
209
+ # Sort the base pair indices in ascending order
210
+ basepairs = np.array(basepairs)
211
+ if len(basepairs) > 0:
212
+ basepairs = basepairs[np.argsort(basepairs[:, 0])]
213
+ return basepairs
@@ -0,0 +1,39 @@
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 module contains all possible errors of the `structure` subpackage.
7
+ """
8
+
9
+ __name__ = "biotite.structure"
10
+ __author__ = "Patrick Kunzmann"
11
+ __all__ = [
12
+ "BadStructureError",
13
+ "IncompleteStructureWarning",
14
+ "UnexpectedStructureWarning",
15
+ ]
16
+
17
+
18
+ class BadStructureError(Exception):
19
+ """
20
+ Indicates that a structure is not suitable for a certain operation.
21
+ """
22
+
23
+ pass
24
+
25
+
26
+ class IncompleteStructureWarning(Warning):
27
+ """
28
+ Indicates that a structure is not complete.
29
+ """
30
+
31
+ pass
32
+
33
+
34
+ class UnexpectedStructureWarning(Warning):
35
+ """
36
+ Indicates that a structure was not expected.
37
+ """
38
+
39
+ pass