biotite 1.5.0__cp314-cp314-macosx_11_0_arm64.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-314-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-314-darwin.so +0 -0
  78. biotite/sequence/align/kmeralphabet.pyx +595 -0
  79. biotite/sequence/align/kmersimilarity.cpython-314-darwin.so +0 -0
  80. biotite/sequence/align/kmersimilarity.pyx +233 -0
  81. biotite/sequence/align/kmertable.cpython-314-darwin.so +0 -0
  82. biotite/sequence/align/kmertable.pyx +3411 -0
  83. biotite/sequence/align/localgapped.cpython-314-darwin.so +0 -0
  84. biotite/sequence/align/localgapped.pyx +892 -0
  85. biotite/sequence/align/localungapped.cpython-314-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-314-darwin.so +0 -0
  181. biotite/sequence/align/multiple.pyx +619 -0
  182. biotite/sequence/align/pairwise.cpython-314-darwin.so +0 -0
  183. biotite/sequence/align/pairwise.pyx +585 -0
  184. biotite/sequence/align/permutation.cpython-314-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-314-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-314-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-314-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-314-darwin.so +0 -0
  244. biotite/sequence/phylo/nj.pyx +221 -0
  245. biotite/sequence/phylo/tree.cpython-314-darwin.so +0 -0
  246. biotite/sequence/phylo/tree.pyx +1169 -0
  247. biotite/sequence/phylo/upgma.cpython-314-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-314-darwin.so +0 -0
  266. biotite/structure/bonds.pyx +2036 -0
  267. biotite/structure/box.py +724 -0
  268. biotite/structure/celllist.cpython-314-darwin.so +0 -0
  269. biotite/structure/celllist.pyx +864 -0
  270. biotite/structure/chains.py +310 -0
  271. biotite/structure/charges.cpython-314-darwin.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-314-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 +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-314-darwin.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-314-darwin.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
biotite/__init__.py ADDED
@@ -0,0 +1,18 @@
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 is the top-level package of *Biotite*.
7
+ Although it does not provide useful functionality for most users,
8
+ it does provide utilities and base classes used by a lot of *Biotite*'s
9
+ modules.
10
+ """
11
+
12
+ __name__ = "biotite"
13
+ __author__ = "Patrick Kunzmann"
14
+
15
+ from .copyable import *
16
+ from .file import *
17
+ from .version import __version__, __version_tuple__ # noqa: F401
18
+ from .visualize import *
@@ -0,0 +1,69 @@
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
+ A subpackage that provides interfaces for external software in case
7
+ *Biotite*’s integrated functionality is not sufficient for your tasks.
8
+ These interfaces range from locally installed software
9
+ (e.g. MSA software) to web services (e.g. BLAST).
10
+ The interfaces are seamless:
11
+ Writing input files and reading output files is handled internally.
12
+ The user only needs to provide objects like a :class:`Sequence`
13
+ and will receive objects like an :class:`Alignment`.
14
+
15
+ Note that in order to use an interface in :mod:`biotite.application`
16
+ the corresponding software must be installed or the web server must be
17
+ reachable, respectively.
18
+ These programs are not shipped with the *Biotite* package.
19
+
20
+ Each application is represented by its respective :class:`Application`
21
+ class.
22
+ Each :class:`Application` instance has a life cycle, starting with its
23
+ creation and ending with the result extraction.
24
+ Each state in this life cycle is described by the value of the
25
+ *enum* :class:`AppState`, that each :class:`Application` contains:
26
+ Directly after its instantiation the app is in the ``CREATED`` state.
27
+ In this state further parameters can be set for the application run.
28
+ After the user calls the :func:`Application.start()` method, the app
29
+ state is set to ``RUNNING`` and the app performs the calculations.
30
+ When the application finishes the AppState
31
+ changes to ``FINISHED``.
32
+ The user can now call the :func:`Application.join()` method, concluding
33
+ the application in the ``JOINED`` state and making the results of the
34
+ application accessible.
35
+ Furthermore, this may trigger cleanup actions in some applications.
36
+ :func:`Application.join()` can even be called in the ``RUNNING`` state:
37
+ This will constantly check if the application has finished and will
38
+ directly go into the ``JOINED`` state as soon as the application reaches
39
+ the ``FINISHED`` state.
40
+ Calling the :func:`Application.cancel()` method while the application is
41
+ ``RUNNING`` or ``FINISHED`` leaves the application in the ``CANCELLED``
42
+ state.
43
+ This triggers cleanup, too, but there are no accessible results.
44
+ If a method is called in an unsuitable app state, an
45
+ :class:`AppStateError` is called.
46
+ At each state in the life cycle, :class:`Application` type specific
47
+ methods are called, as shown in the following diagram.
48
+
49
+ .. figure:: /static/assets/figures/app_lifecycle.png
50
+ :alt: Application life cycle
51
+ :scale: 50%
52
+
53
+ Taken from
54
+ `Kunzmann & Hamacher 2018 <https://doi.org/10.1186/s12859-018-2367-z>`_
55
+ licensed under `CC BY 4.0 <https://creativecommons.org/licenses/by/4.0/>`_.
56
+
57
+ The execution of an :class:`Application` can run in parallel:
58
+ The time between starting the run and collecting the results can be
59
+ used to run other code, similar to the *Python* :class:`Thread` or
60
+ :class:`Process` classes.
61
+ """
62
+
63
+ __name__ = "biotite.application"
64
+ __author__ = "Patrick Kunzmann"
65
+
66
+ from .application import *
67
+ from .localapp import *
68
+ from .msaapp import *
69
+ from .webapp import *
@@ -0,0 +1,276 @@
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.application"
6
+ __author__ = "Patrick Kunzmann"
7
+ __all__ = [
8
+ "Application",
9
+ "AppStateError",
10
+ "TimeoutError",
11
+ "VersionError",
12
+ "AppState",
13
+ "requires_state",
14
+ ]
15
+
16
+ import abc
17
+ import time
18
+ from enum import Flag, auto
19
+ from functools import wraps
20
+
21
+
22
+ class AppState(Flag):
23
+ """
24
+ This enum type represents the app states of an application.
25
+ """
26
+
27
+ CREATED = auto()
28
+ RUNNING = auto()
29
+ FINISHED = auto()
30
+ JOINED = auto()
31
+ CANCELLED = auto()
32
+
33
+
34
+ def requires_state(app_state):
35
+ """
36
+ A decorator for methods of :class:`Application` subclasses that
37
+ raises an :class:`AppStateError` in case the method is called, when
38
+ the :class:`Application` is not in the specified :class:`AppState`
39
+ `app_state`.
40
+
41
+ Parameters
42
+ ----------
43
+ app_state : AppState
44
+ The required app state.
45
+
46
+ Examples
47
+ --------
48
+ Raises :class:`AppStateError` when `function` is called,
49
+ if :class:`Application` is not in one of the specified states:
50
+
51
+ >>> @requires_state(AppState.RUNNING | AppState.FINISHED)
52
+ ... def function(self):
53
+ ... pass
54
+ """
55
+
56
+ def decorator(func):
57
+ @wraps(func)
58
+ def wrapper(*args, **kwargs):
59
+ # First parameter of method is always 'self'
60
+ try:
61
+ instance = args[0]
62
+ except IndexError:
63
+ raise TypeError("This method must be called from a class instance")
64
+ if not instance._state & app_state:
65
+ raise AppStateError(
66
+ f"The application is in {instance.get_app_state()} state, "
67
+ f"but {app_state} state is required"
68
+ )
69
+ return func(*args, **kwargs)
70
+
71
+ return wrapper
72
+
73
+ return decorator
74
+
75
+
76
+ class Application(metaclass=abc.ABCMeta):
77
+ """
78
+ This class is a wrapper around an external piece of runnable
79
+ software in any sense. Subclasses of this abstract base class
80
+ specify the respective kind of software and the way of interacting
81
+ with it.
82
+
83
+ Every :class:`Application` runs through a different app states
84
+ (instances of enum :class:`AppState`) from its creation until its
85
+ termination.
86
+
87
+ Directly after its instantiation the app is in the *CREATED* state.
88
+ In this state further parameters can be set for the application run.
89
+ After the user calls the :func:`start()` method, the app state is
90
+ set to *RUNNING* and the :class:`Application` type specific
91
+ :func:`run()` method is called.
92
+ When the application finishes the AppState changes to *FINISHED*.
93
+ This is checked via the :class:`Application` type specific
94
+ :func:`is_finished()` method.
95
+ The user can now call the :func:`join()` method, concluding the
96
+ application in the *JOINED* state and making the results of the
97
+ application accessible by executing the :class:`Application`
98
+ type specific :func:`evaluate()` method.
99
+ Furthermore this executes the :class:`Application` type specific
100
+ :func:`clean_up()` method.
101
+ :func:`join()` can even be called in the *RUNNING* state:
102
+ This will constantly check :func:`is_finished()` and will directly
103
+ go into the *JOINED* state as soon as the application reaches the
104
+ *FINISHED* state.
105
+ Calling the :func:`cancel()` method while the application is
106
+ *RUNNING* or *FINISHED* leaves the application in the *CANCELLED*
107
+ state.
108
+ This triggers the :func:`clean_up()` method, too, but there are no
109
+ accessible results.
110
+ If a method is called in an unsuitable app state, an
111
+ :class:`AppStateError` is called.
112
+
113
+ The application run behaves like an additional thread: Between the
114
+ call of :func:`start()` and :func:`join()` other Python code can be
115
+ executed, while the application runs in the background.
116
+ """
117
+
118
+ def __init__(self):
119
+ self._state = AppState.CREATED
120
+
121
+ @requires_state(AppState.CREATED)
122
+ def start(self):
123
+ """
124
+ Start the application run and set its state to *RUNNING*.
125
+ This can only be done from the *CREATED* state.
126
+ """
127
+ self.run()
128
+ self._start_time = time.time()
129
+ self._state = AppState.RUNNING
130
+
131
+ @requires_state(AppState.RUNNING | AppState.FINISHED)
132
+ def join(self, timeout=None):
133
+ """
134
+ Conclude the application run and set its state to *JOINED*.
135
+ This can only be done from the *RUNNING* or *FINISHED* state.
136
+
137
+ If the application is *FINISHED* the joining process happens
138
+ immediately, if otherwise the application is *RUNNING*, this
139
+ method waits until the application is *FINISHED*.
140
+
141
+ Parameters
142
+ ----------
143
+ timeout : float, optional
144
+ If this parameter is specified, the :class:`Application`
145
+ only waits for finishing until this value (in seconds) runs
146
+ out.
147
+ After this time is exceeded a :class:`TimeoutError` is
148
+ raised and the application is cancelled.
149
+
150
+ Raises
151
+ ------
152
+ TimeoutError
153
+ If the joining process exceeds the `timeout` value.
154
+ """
155
+ time.sleep(self.wait_interval())
156
+ while self.get_app_state() != AppState.FINISHED:
157
+ if timeout is not None and time.time() - self._start_time > timeout:
158
+ self.cancel()
159
+ raise TimeoutError(
160
+ f"The application expired its timeout ({timeout:.1f} s)"
161
+ )
162
+ else:
163
+ time.sleep(self.wait_interval())
164
+ time.sleep(self.wait_interval())
165
+ try:
166
+ self.evaluate()
167
+ except AppStateError:
168
+ raise
169
+ except:
170
+ self._state = AppState.CANCELLED
171
+ raise
172
+ else:
173
+ self._state = AppState.JOINED
174
+ self.clean_up()
175
+
176
+ @requires_state(AppState.RUNNING | AppState.FINISHED)
177
+ def cancel(self):
178
+ """
179
+ Cancel the application when in *RUNNING* or *FINISHED* state.
180
+ """
181
+ self._state = AppState.CANCELLED
182
+ self.clean_up()
183
+
184
+ def get_app_state(self):
185
+ """
186
+ Get the current app state.
187
+
188
+ Returns
189
+ -------
190
+ app_state : AppState
191
+ The current app state.
192
+ """
193
+ if self._state == AppState.RUNNING:
194
+ if self.is_finished():
195
+ self._state = AppState.FINISHED
196
+ return self._state
197
+
198
+ @abc.abstractmethod
199
+ def run(self):
200
+ """
201
+ Commence the application run. Called in :func:`start()`.
202
+
203
+ PROTECTED: Override when inheriting.
204
+ """
205
+ pass
206
+
207
+ @abc.abstractmethod
208
+ def is_finished(self):
209
+ """
210
+ Check if the application has finished.
211
+
212
+ PROTECTED: Override when inheriting.
213
+
214
+ Returns
215
+ -------
216
+ finished : bool
217
+ True of the application has finished, false otherwise.
218
+ """
219
+ pass
220
+
221
+ @abc.abstractmethod
222
+ def wait_interval(self):
223
+ """
224
+ The time interval of :func:`is_finished()` calls in the joining
225
+ process.
226
+
227
+ PROTECTED: Override when inheriting.
228
+
229
+ Returns
230
+ -------
231
+ interval : float
232
+ Time (in seconds) between calls of :func:`is_finished()` in
233
+ :func:`join()`.
234
+ """
235
+ pass
236
+
237
+ @abc.abstractmethod
238
+ def evaluate(self):
239
+ """
240
+ Evaluate application results. Called in :func:`join()`.
241
+
242
+ PROTECTED: Override when inheriting.
243
+ """
244
+ pass
245
+
246
+ def clean_up(self):
247
+ """
248
+ Do clean up work after the application terminates.
249
+
250
+ PROTECTED: Optionally override when inheriting.
251
+ """
252
+ pass
253
+
254
+
255
+ class AppStateError(Exception):
256
+ """
257
+ Indicate that the application lifecycle was violated.
258
+ """
259
+
260
+ pass
261
+
262
+
263
+ class TimeoutError(Exception):
264
+ """
265
+ Indicate that the application's timeout expired.
266
+ """
267
+
268
+ pass
269
+
270
+
271
+ class VersionError(Exception):
272
+ """
273
+ Indicate that the application's version is invalid.
274
+ """
275
+
276
+ pass
@@ -0,0 +1,12 @@
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
+ A subpackage for static ligand docking with *Autodock*.
7
+ """
8
+
9
+ __name__ = "biotite.application.autodock"
10
+ __author__ = "Patrick Kunzmann"
11
+
12
+ from .app import *