biotite 1.5.0__cp313-cp313-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-313-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-313-x86_64-linux-gnu.so +0 -0
  78. biotite/sequence/align/kmeralphabet.pyx +595 -0
  79. biotite/sequence/align/kmersimilarity.cpython-313-x86_64-linux-gnu.so +0 -0
  80. biotite/sequence/align/kmersimilarity.pyx +233 -0
  81. biotite/sequence/align/kmertable.cpython-313-x86_64-linux-gnu.so +0 -0
  82. biotite/sequence/align/kmertable.pyx +3411 -0
  83. biotite/sequence/align/localgapped.cpython-313-x86_64-linux-gnu.so +0 -0
  84. biotite/sequence/align/localgapped.pyx +892 -0
  85. biotite/sequence/align/localungapped.cpython-313-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-313-x86_64-linux-gnu.so +0 -0
  181. biotite/sequence/align/multiple.pyx +619 -0
  182. biotite/sequence/align/pairwise.cpython-313-x86_64-linux-gnu.so +0 -0
  183. biotite/sequence/align/pairwise.pyx +585 -0
  184. biotite/sequence/align/permutation.cpython-313-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-313-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-313-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-313-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-313-x86_64-linux-gnu.so +0 -0
  244. biotite/sequence/phylo/nj.pyx +221 -0
  245. biotite/sequence/phylo/tree.cpython-313-x86_64-linux-gnu.so +0 -0
  246. biotite/sequence/phylo/tree.pyx +1169 -0
  247. biotite/sequence/phylo/upgma.cpython-313-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-313-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-313-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-313-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-313-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-313-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-313-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,242 @@
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.pdb"
6
+ __author__ = "Patrick Kunzmann"
7
+ __all__ = ["encode_hybrid36", "decode_hybrid36", "max_hybrid36_number"]
8
+
9
+ cimport cython
10
+
11
+
12
+ cdef int _ASCII_FIRST_NUMBER = 48
13
+ cdef int _ASCII_FIRST_LETTER_UPPER = 65
14
+ cdef int _ASCII_FIRST_LETTER_LOWER = 97
15
+ cdef int _ASCII_LAST_NUMBER = 57
16
+ cdef int _ASCII_LAST_LETTER_UPPER = 90
17
+ cdef int _ASCII_LAST_LETTER_LOWER = 122
18
+
19
+
20
+ @cython.cpow(True)
21
+ def encode_hybrid36(int number, unsigned int length):
22
+ """
23
+ Encode an integer value into a hyrbid-36 string representation.
24
+
25
+ Parameters
26
+ ----------
27
+ number : int
28
+ A positive integer to be converted into a string.
29
+ length : int
30
+ The desired length of the string representation.
31
+ The resulting hybrid-36 string depends on the length the string
32
+ should have.
33
+
34
+ Returns
35
+ -------
36
+ hybrid36 : str
37
+ The hybrid-36 string representation.
38
+ """
39
+ if number < 0:
40
+ raise ValueError(
41
+ "Only positive integers can be converted into hybrid-36 notation"
42
+ )
43
+ if length < 1:
44
+ raise ValueError(
45
+ "String length must be at least 1"
46
+ )
47
+
48
+ cdef int num = number
49
+ if num < 10**length:
50
+ # Normal decimal representation
51
+ return str(num)
52
+ # Subtract the amount of values
53
+ # represented by decimal representation
54
+ num -= 10**length
55
+ if num < 26 * 36**(length-1):
56
+ # Upper case hybrid-36 representation
57
+ # Transform value into base-36 value
58
+ # Ex.: number = 10000, length = 4
59
+ # 10**4 have been suubtracted previously -> num = 0
60
+ # But first hybrid-36 string is 'A000'
61
+ # 'A000' in base-36 is 10 * 36**3
62
+ # Hence 10 * 36**3 is added to the num
63
+ # to transform 10000 to 'A000'
64
+ num += 10 * 36**(length-1)
65
+ return _encode_base36(num, length, _ASCII_FIRST_LETTER_UPPER)
66
+ # Subtract the amount of values
67
+ # represented by upper case hybrid-36 representation
68
+ num -= 26 * 36**(length-1)
69
+ if num < 26 * 36**(length-1):
70
+ # Lower case hybrid-36 representation
71
+ num += 10 * 36**(length-1)
72
+ return _encode_base36(num, length, _ASCII_FIRST_LETTER_LOWER)
73
+ raise ValueError(
74
+ f"Value {number} is too large for hybrid-36 encoding "
75
+ f"at a string length of {length}"
76
+ )
77
+
78
+
79
+ @cython.boundscheck(False)
80
+ @cython.wraparound(False)
81
+ @cython.cpow(True)
82
+ cdef str _encode_base36(int number, unsigned int length,
83
+ unsigned int ascii_letter_offset):
84
+ """
85
+ Encode an integer value into a base-36 string representation.
86
+
87
+ Parameters
88
+ ----------
89
+ number : int
90
+ A positive integer to be converted into a string.
91
+ length : int
92
+ The desired length of the string representation.
93
+ ascii_letter_offset : int
94
+ The ASCII value of the first letter.
95
+ This parameter determines whether upper or lower case letters
96
+ should be used.
97
+
98
+ Returns
99
+ -------
100
+ hybrid36 : str
101
+ The base-36 string representation.
102
+ """
103
+ cdef unsigned char ascii_char
104
+ cdef int remaining
105
+ cdef int last
106
+ cdef bytearray char_array = bytearray(length)
107
+ cdef unsigned char[:] char_array_v = char_array
108
+ # Set start index to end of character array and iterate in reverse
109
+ cdef int i = char_array_v.shape[0] - 1
110
+ while i >= 0:
111
+ # Remove the last base-36 'digit' from the value...
112
+ remaining = number // 36
113
+ # ...and obtain the removed base-36 'digit'
114
+ last = number - remaining * 36
115
+ # Convert the last base-36 'digit' into ASCII value
116
+ # of corresponding base-36 character
117
+ if last < 10:
118
+ # 'Digit' gets numeric character if representable as decimal
119
+ char_array_v[i] = last + _ASCII_FIRST_NUMBER
120
+ else:
121
+ # Else 'digit' is converted into a letter
122
+ char_array_v[i] = last + ascii_letter_offset - 10
123
+ # The new number is the original number without last 'digit'
124
+ number = remaining
125
+ i -= 1
126
+ # Repeat until all digits are removed
127
+ return char_array.decode("ascii")
128
+
129
+
130
+ @cython.cpow(True)
131
+ def decode_hybrid36(str string):
132
+ """
133
+ Convert a hybrid-36 string into a integer value.
134
+
135
+ Parameters
136
+ ----------
137
+ string : str
138
+ A hybrid-36 string representing a positive integer.
139
+
140
+ Returns
141
+ -------
142
+ number : int
143
+ The integer value represented by the hybrid-36 string.
144
+ """
145
+ cdef int base_value
146
+ cdef unsigned int length
147
+
148
+ try:
149
+ return int(string)
150
+ except ValueError:
151
+ pass
152
+
153
+ # String is not parseable -> expect base36 string
154
+ cdef bytes char_array = string.strip().encode("ascii")
155
+ cdef const unsigned char[:] char_array_v = char_array
156
+ length = char_array_v.shape[0]
157
+ if length == 0:
158
+ raise ValueError("Cannot parse empty string into integer")
159
+ if char_array_v[0] >= _ASCII_FIRST_LETTER_UPPER \
160
+ and char_array_v[0] <= _ASCII_LAST_LETTER_UPPER:
161
+ # String uses upper case letters
162
+ base_value = _decode_base36(
163
+ char_array_v, _ASCII_FIRST_LETTER_UPPER
164
+ )
165
+ # Transform e.g. base-36 'A000' into 10000
166
+ # (For more information see 'encode_hybrid36()')
167
+ return base_value - 10 * 36**(length-1) + 10**length
168
+ elif char_array_v[0] >= _ASCII_FIRST_LETTER_LOWER \
169
+ and char_array_v[0] <= _ASCII_LAST_LETTER_LOWER:
170
+ # String uses lower case letters
171
+ base_value = _decode_base36(
172
+ char_array_v, _ASCII_FIRST_LETTER_LOWER
173
+ )
174
+ # Transform and add the value range represented
175
+ # by upper case hybrid-36:
176
+ #
177
+ # |----- e.g. A000 to 10000 -----| |---- upper hy36 ---|
178
+ # - 10 * 36**(length-1) + 10**length + 26 * 36**(length-1)
179
+ #
180
+ # The following formula results from factoring out
181
+ return base_value + (26-10) * 36**(length-1) + 10**length
182
+ else:
183
+ raise ValueError(
184
+ f"Illegal hybrid-36 string '{string.strip()}'"
185
+ )
186
+
187
+
188
+ @cython.boundscheck(False)
189
+ @cython.wraparound(False)
190
+ cdef int _decode_base36(const unsigned char[:] char_array_v,
191
+ unsigned int ascii_letter_offset):
192
+ """
193
+ Convert a base-36 string into a integer value.
194
+
195
+ Parameters
196
+ ----------
197
+ char_array_v : bytes
198
+ A hybrid-36 string representing a positive integer.
199
+ ascii_letter_offset : int
200
+ The ASCII value of the first letter.
201
+ This parameter determines whether teh string uses upper or
202
+ lower case letters.
203
+
204
+ Returns
205
+ -------
206
+ number : int
207
+ The integer value represented by the base-36 string.
208
+ """
209
+ cdef int i
210
+ cdef int number = 0
211
+ cdef unsigned char ascii_code
212
+ for i in range(char_array_v.shape[0]):
213
+ # Multiply existing value by base
214
+ # -> Shifting number one 'digit' to the left
215
+ number *= 36
216
+ # Get ASCII get of next base-36 'digit'
217
+ ascii_code = char_array_v[i]
218
+ # Get the numerical value of the 'digit' and add to number
219
+ if ascii_code <= _ASCII_LAST_NUMBER:
220
+ number += ascii_code - _ASCII_FIRST_NUMBER
221
+ else:
222
+ number += ascii_code - ascii_letter_offset + 10
223
+ return number
224
+
225
+ def max_hybrid36_number(length):
226
+ """
227
+ Give the maximum integer value that can be represented by a
228
+ hybrid-36 string of the given length.
229
+
230
+ Parameters
231
+ ----------
232
+ length : int
233
+ The length of a hybrid-36 string.
234
+
235
+ Returns
236
+ -------
237
+ max_number : int
238
+ The maximum integer value that can be represented by a hybrid-36
239
+ string of the given `length`.
240
+ """
241
+ # |-- Decimal -| |--- lo + up base-36 ---|
242
+ return 10**length - 1 + 2 * (26 * 36**(length-1))
@@ -0,0 +1,15 @@
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 PDBQT format used by the *AutoDock*
8
+ software series.
9
+ """
10
+
11
+ __name__ = "biotite.structure.io.pdbqt"
12
+ __author__ = "Patrick Kunzmann"
13
+
14
+ from .convert import *
15
+ from .file import *
@@ -0,0 +1,113 @@
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.pdbqt"
11
+ __author__ = "Patrick Kunzmann"
12
+ __all__ = ["get_structure", "set_structure"]
13
+
14
+
15
+ def get_structure(pdbqt_file, model=None):
16
+ """
17
+ Get an :class:`AtomArray` or :class:`AtomArrayStack` from the
18
+ PDBQT file.
19
+
20
+ EXPERIMENTAL: Future API changes are probable.
21
+
22
+ Parameters
23
+ ----------
24
+ pdbqt_file : PDBQTFile
25
+ The PDBQT file.
26
+ model : int, optional
27
+ If this parameter is given, the function will return an
28
+ :class:`AtomArray` from the atoms corresponding to the given
29
+ model number (starting at 1).
30
+ Negative values are used to index models starting from the
31
+ last model insted of the first model.
32
+ If this parameter is omitted, an :class:`AtomArrayStack`
33
+ containing all models will be returned, even if the
34
+ structure contains only one model.
35
+
36
+ Returns
37
+ -------
38
+ array : AtomArray or AtomArrayStack
39
+ The return type depends on the `model` parameter.
40
+ """
41
+ return pdbqt_file.get_structure(model)
42
+
43
+
44
+ def set_structure(
45
+ pdbqt_file,
46
+ atoms,
47
+ charges=None,
48
+ atom_types=None,
49
+ rotatable_bonds=None,
50
+ root=None,
51
+ include_torsdof=True,
52
+ ):
53
+ """
54
+ Write an :class:`AtomArray` into a PDBQT file.
55
+
56
+ EXPERIMENTAL: Future API changes are probable.
57
+
58
+ Parameters
59
+ ----------
60
+ pdbqt_file : PDBQTFile
61
+ The PDBQT file.
62
+ atoms : AtomArray, shape=(n,)
63
+ The atoms to be written into this file.
64
+ Must have an associated :class:`BondList`.
65
+ charges : ndarray, shape=(n,), dtype=float, optional
66
+ Partial charges for each atom in `atoms`.
67
+ By default, the charges are calculated using the PEOE method
68
+ (:func:`partial_charges()`).
69
+ atom_types : ndarray, shape=(n,), dtype="U1", optional
70
+ Custom *AutoDock* atom types for each atom in `atoms`.
71
+ rotatable_bonds : None or 'rigid' or 'all' or BondList, optional
72
+ This parameter describes, how rotatable bonds are handled,
73
+ with respect to ``ROOT``, ``BRANCH`` and ``ENDBRANCH``
74
+ lines.
75
+
76
+ - ``None`` - The molecule is handled as rigid receptor:
77
+ No ``ROOT``, ``BRANCH`` and ``ENDBRANCH`` lines will
78
+ be written.
79
+ - ``'rigid'`` - The molecule is handled as rigid ligand:
80
+ Only a ``ROOT`` line will be written.
81
+ - ``'all'`` - The molecule is handled as flexible
82
+ ligand:
83
+ A ``ROOT`` line will be written and all rotatable
84
+ bonds are included using ``BRANCH`` and ``ENDBRANCH``
85
+ lines.
86
+ - :class:`BondList` - The molecule is handled as
87
+ flexible ligand:
88
+ A ``ROOT`` line will be written and all bonds in the
89
+ given :class:`BondList` are considered flexible via
90
+ ``BRANCH`` and ``ENDBRANCH`` lines.
91
+
92
+ root : int, optional
93
+ Specifies the index of the atom following the ``ROOT`` line.
94
+ Setting the root atom is useful for specifying the *anchor*
95
+ in flexible side chains.
96
+ This parameter has no effect, if `rotatable_bonds` is
97
+ ``None``.
98
+ By default, the first atom is also the root atom.
99
+ include_torsdof : bool, optional
100
+ By default, a ``TORSDOF`` (torsional degrees of freedom)
101
+ record is written at the end of the file.
102
+ By setting this parameter to false, the record is omitted.
103
+
104
+ Returns
105
+ -------
106
+ mask : ndarray, shape=(n,), dtype=bool
107
+ A boolean mask, that is ``False`` for each atom of the input
108
+ ``atoms``, that was removed due to being a nonpolar
109
+ hydrogen.
110
+ """
111
+ return pdbqt_file.set_structure(
112
+ atoms, charges, atom_types, rotatable_bonds, root, include_torsdof
113
+ )