biotite 0.41.2__tar.gz → 1.0.1__tar.gz

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 (318) hide show
  1. {biotite-0.41.2 → biotite-1.0.1}/.gitignore +0 -1
  2. {biotite-0.41.2 → biotite-1.0.1}/CONTRIB.rst +2 -1
  3. {biotite-0.41.2 → biotite-1.0.1}/PKG-INFO +6 -5
  4. {biotite-0.41.2 → biotite-1.0.1}/README.rst +1 -2
  5. biotite-1.0.1/pyproject.toml +135 -0
  6. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/__init__.py +2 -3
  7. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/application/__init__.py +1 -1
  8. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/application/application.py +20 -10
  9. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/application/autodock/__init__.py +1 -1
  10. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/application/autodock/app.py +74 -79
  11. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/application/blast/__init__.py +1 -1
  12. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/application/blast/alignment.py +19 -10
  13. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/application/blast/webapp.py +92 -85
  14. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/application/clustalo/__init__.py +1 -1
  15. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/application/clustalo/app.py +46 -61
  16. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/application/dssp/__init__.py +1 -1
  17. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/application/dssp/app.py +8 -11
  18. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/application/localapp.py +62 -60
  19. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/application/mafft/__init__.py +1 -1
  20. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/application/mafft/app.py +16 -22
  21. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/application/msaapp.py +78 -89
  22. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/application/muscle/__init__.py +1 -1
  23. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/application/muscle/app3.py +50 -64
  24. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/application/muscle/app5.py +23 -31
  25. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/application/sra/__init__.py +1 -1
  26. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/application/sra/app.py +64 -68
  27. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/application/tantan/__init__.py +1 -1
  28. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/application/tantan/app.py +22 -45
  29. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/application/util.py +7 -9
  30. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/application/viennarna/rnaalifold.py +34 -28
  31. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/application/viennarna/rnafold.py +24 -39
  32. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/application/viennarna/rnaplot.py +36 -21
  33. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/application/viennarna/util.py +17 -12
  34. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/application/webapp.py +13 -14
  35. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/copyable.py +13 -13
  36. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/database/__init__.py +1 -1
  37. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/database/entrez/__init__.py +1 -1
  38. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/database/entrez/check.py +2 -3
  39. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/database/entrez/dbnames.py +7 -5
  40. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/database/entrez/download.py +55 -49
  41. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/database/entrez/key.py +1 -1
  42. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/database/entrez/query.py +62 -23
  43. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/database/error.py +2 -1
  44. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/database/pubchem/__init__.py +1 -1
  45. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/database/pubchem/download.py +43 -45
  46. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/database/pubchem/error.py +2 -2
  47. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/database/pubchem/query.py +34 -31
  48. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/database/pubchem/throttle.py +3 -4
  49. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/database/rcsb/__init__.py +1 -1
  50. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/database/rcsb/download.py +44 -52
  51. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/database/rcsb/query.py +85 -80
  52. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/database/uniprot/check.py +6 -3
  53. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/database/uniprot/download.py +6 -11
  54. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/database/uniprot/query.py +115 -31
  55. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/file.py +12 -31
  56. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/__init__.py +2 -2
  57. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/alignment.py +99 -90
  58. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/buckets.py +12 -10
  59. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/cigar.py +43 -52
  60. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/kmeralphabet.pyx +55 -51
  61. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/kmertable.pyx +3 -2
  62. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix.py +81 -82
  63. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/multiple.pyx +1 -1
  64. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/permutation.pyx +12 -4
  65. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/selector.pyx +52 -54
  66. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/statistics.py +32 -33
  67. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/alphabet.py +51 -65
  68. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/annotation.py +78 -77
  69. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/codon.py +90 -79
  70. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/graphics/alignment.py +184 -103
  71. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/graphics/colorschemes.py +10 -12
  72. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/graphics/dendrogram.py +79 -34
  73. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/graphics/features.py +133 -99
  74. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/graphics/logo.py +22 -28
  75. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/graphics/plasmid.py +229 -178
  76. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/io/fasta/__init__.py +1 -1
  77. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/io/fasta/convert.py +44 -33
  78. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/io/fasta/file.py +42 -55
  79. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/io/fastq/__init__.py +1 -1
  80. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/io/fastq/convert.py +11 -14
  81. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/io/fastq/file.py +68 -112
  82. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/io/genbank/__init__.py +2 -2
  83. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/io/genbank/annotation.py +12 -20
  84. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/io/genbank/file.py +74 -76
  85. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/io/genbank/metadata.py +74 -62
  86. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/io/genbank/sequence.py +13 -14
  87. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/io/general.py +39 -30
  88. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/io/gff/__init__.py +2 -2
  89. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/io/gff/convert.py +10 -15
  90. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/io/gff/file.py +81 -65
  91. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/phylo/__init__.py +1 -1
  92. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/profile.py +57 -28
  93. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/search.py +17 -15
  94. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/seqtypes.py +200 -164
  95. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/sequence.py +15 -17
  96. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/__init__.py +3 -3
  97. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/atoms.py +246 -236
  98. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/basepairs.py +260 -271
  99. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/bonds.pyx +29 -32
  100. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/box.py +67 -71
  101. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/chains.py +55 -39
  102. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/compare.py +32 -32
  103. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/density.py +13 -18
  104. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/dotbracket.py +20 -22
  105. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/error.py +10 -2
  106. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/filter.py +83 -78
  107. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/geometry.py +130 -119
  108. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/graphics/atoms.py +60 -43
  109. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/graphics/rna.py +81 -68
  110. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/hbond.py +112 -93
  111. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/info/__init__.py +0 -2
  112. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/info/atoms.py +10 -11
  113. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/info/bonds.py +41 -43
  114. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/info/ccd.py +4 -5
  115. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/info/groups.py +1 -3
  116. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/info/masses.py +5 -10
  117. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/info/misc.py +1 -1
  118. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/info/radii.py +20 -20
  119. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/info/standardize.py +15 -26
  120. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/integrity.py +18 -71
  121. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/io/__init__.py +3 -4
  122. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/io/dcd/__init__.py +1 -1
  123. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/io/dcd/file.py +22 -20
  124. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/io/general.py +47 -61
  125. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/io/gro/__init__.py +1 -1
  126. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/io/gro/file.py +73 -72
  127. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/io/mol/__init__.py +1 -1
  128. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/io/mol/convert.py +8 -11
  129. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/io/mol/ctab.py +37 -36
  130. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/io/mol/header.py +14 -10
  131. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/io/mol/mol.py +9 -53
  132. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/io/mol/sdf.py +47 -50
  133. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/io/netcdf/__init__.py +1 -1
  134. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/io/netcdf/file.py +24 -23
  135. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/io/pdb/__init__.py +1 -1
  136. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/io/pdb/convert.py +32 -20
  137. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/io/pdb/file.py +151 -172
  138. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/io/pdbqt/__init__.py +1 -1
  139. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/io/pdbqt/convert.py +17 -11
  140. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/io/pdbqt/file.py +128 -80
  141. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/io/pdbx/__init__.py +1 -2
  142. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/io/pdbx/bcif.py +36 -44
  143. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/io/pdbx/cif.py +140 -110
  144. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/io/pdbx/component.py +10 -16
  145. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/io/pdbx/convert.py +260 -258
  146. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/io/trajfile.py +90 -107
  147. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/io/trr/__init__.py +1 -1
  148. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/io/trr/file.py +12 -15
  149. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/io/xtc/__init__.py +1 -1
  150. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/io/xtc/file.py +11 -14
  151. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/mechanics.py +9 -11
  152. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/molecules.py +3 -4
  153. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/pseudoknots.py +53 -67
  154. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/rdf.py +23 -21
  155. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/repair.py +137 -86
  156. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/residues.py +26 -16
  157. biotite-0.41.2/src/biotite/structure/resutil.py → biotite-1.0.1/src/biotite/structure/segments.py +24 -23
  158. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/sequence.py +10 -11
  159. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/sse.py +100 -119
  160. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/superimpose.py +39 -77
  161. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/transform.py +97 -71
  162. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/util.py +11 -13
  163. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/version.py +2 -2
  164. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/visualize.py +69 -55
  165. biotite-0.41.2/pyproject.toml +0 -74
  166. biotite-0.41.2/src/biotite/structure/io/ctab.py +0 -72
  167. biotite-0.41.2/src/biotite/structure/io/mmtf/__init__.py +0 -21
  168. biotite-0.41.2/src/biotite/structure/io/mmtf/assembly.py +0 -214
  169. biotite-0.41.2/src/biotite/structure/io/mmtf/convertarray.pyx +0 -341
  170. biotite-0.41.2/src/biotite/structure/io/mmtf/convertfile.pyx +0 -501
  171. biotite-0.41.2/src/biotite/structure/io/mmtf/decode.pyx +0 -152
  172. biotite-0.41.2/src/biotite/structure/io/mmtf/encode.pyx +0 -183
  173. biotite-0.41.2/src/biotite/structure/io/mmtf/file.py +0 -233
  174. biotite-0.41.2/src/biotite/structure/io/npz/__init__.py +0 -20
  175. biotite-0.41.2/src/biotite/structure/io/npz/file.py +0 -152
  176. biotite-0.41.2/src/biotite/structure/io/pdbx/legacy.py +0 -267
  177. biotite-0.41.2/src/biotite/structure/io/tng/__init__.py +0 -13
  178. biotite-0.41.2/src/biotite/structure/io/tng/file.py +0 -46
  179. biotite-0.41.2/src/biotite/temp.py +0 -86
  180. {biotite-0.41.2 → biotite-1.0.1}/LICENSE.rst +0 -0
  181. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/application/viennarna/__init__.py +0 -0
  182. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/database/uniprot/__init__.py +0 -0
  183. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/__init__.py +3 -3
  184. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/banded.pyx +0 -0
  185. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/kmersimilarity.pyx +0 -0
  186. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/localgapped.pyx +0 -0
  187. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/localungapped.pyx +0 -0
  188. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/BLOSUM100.mat +0 -0
  189. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/BLOSUM30.mat +0 -0
  190. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/BLOSUM35.mat +0 -0
  191. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/BLOSUM40.mat +0 -0
  192. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/BLOSUM45.mat +0 -0
  193. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/BLOSUM50.mat +0 -0
  194. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/BLOSUM50_13p.mat +0 -0
  195. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/BLOSUM50_14.3.mat +0 -0
  196. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/BLOSUM50_5.0.mat +0 -0
  197. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/BLOSUM55.mat +0 -0
  198. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/BLOSUM60.mat +0 -0
  199. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/BLOSUM62.mat +0 -0
  200. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/BLOSUM62_13p.mat +0 -0
  201. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/BLOSUM62_14.3.mat +0 -0
  202. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/BLOSUM62_5.0.mat +0 -0
  203. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/BLOSUM65.mat +0 -0
  204. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/BLOSUM70.mat +0 -0
  205. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/BLOSUM75.mat +0 -0
  206. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/BLOSUM80.mat +0 -0
  207. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/BLOSUM85.mat +0 -0
  208. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/BLOSUM90.mat +0 -0
  209. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/BLOSUMN.mat +0 -0
  210. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/CorBLOSUM49_5.0.mat +0 -0
  211. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/CorBLOSUM57_13p.mat +0 -0
  212. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/CorBLOSUM57_14.3.mat +0 -0
  213. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/CorBLOSUM61_5.0.mat +0 -0
  214. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/CorBLOSUM66_13p.mat +0 -0
  215. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/CorBLOSUM67_14.3.mat +0 -0
  216. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/DAYHOFF.mat +0 -0
  217. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/GONNET.mat +0 -0
  218. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/IDENTITY.mat +0 -0
  219. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/MATCH.mat +0 -0
  220. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/NUC.mat +0 -0
  221. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM10.mat +0 -0
  222. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM100.mat +0 -0
  223. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM110.mat +0 -0
  224. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM120.mat +0 -0
  225. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM130.mat +0 -0
  226. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM140.mat +0 -0
  227. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM150.mat +0 -0
  228. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM160.mat +0 -0
  229. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM170.mat +0 -0
  230. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM180.mat +0 -0
  231. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM190.mat +0 -0
  232. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM20.mat +0 -0
  233. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM200.mat +0 -0
  234. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM210.mat +0 -0
  235. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM220.mat +0 -0
  236. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM230.mat +0 -0
  237. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM240.mat +0 -0
  238. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM250.mat +0 -0
  239. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM260.mat +0 -0
  240. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM270.mat +0 -0
  241. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM280.mat +0 -0
  242. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM290.mat +0 -0
  243. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM30.mat +0 -0
  244. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM300.mat +0 -0
  245. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM310.mat +0 -0
  246. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM320.mat +0 -0
  247. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM330.mat +0 -0
  248. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM340.mat +0 -0
  249. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM350.mat +0 -0
  250. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM360.mat +0 -0
  251. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM370.mat +0 -0
  252. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM380.mat +0 -0
  253. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM390.mat +0 -0
  254. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM40.mat +0 -0
  255. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM400.mat +0 -0
  256. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM410.mat +0 -0
  257. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM420.mat +0 -0
  258. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM430.mat +0 -0
  259. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM440.mat +0 -0
  260. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM450.mat +0 -0
  261. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM460.mat +0 -0
  262. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM470.mat +0 -0
  263. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM480.mat +0 -0
  264. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM490.mat +0 -0
  265. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM50.mat +0 -0
  266. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM500.mat +0 -0
  267. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM60.mat +0 -0
  268. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM70.mat +0 -0
  269. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM80.mat +0 -0
  270. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/PAM90.mat +0 -0
  271. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/RBLOSUM52_5.0.mat +0 -0
  272. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/RBLOSUM59_13p.mat +0 -0
  273. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/RBLOSUM59_14.3.mat +0 -0
  274. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/RBLOSUM64_5.0.mat +0 -0
  275. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/RBLOSUM69_13p.mat +0 -0
  276. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/matrix_data/RBLOSUM69_14.3.mat +0 -0
  277. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/pairwise.pyx +0 -0
  278. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/primes.txt +0 -0
  279. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/tracetable.pxd +0 -0
  280. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/align/tracetable.pyx +0 -0
  281. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/codec.pyx +0 -0
  282. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/codon_tables.txt +0 -0
  283. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/graphics/__init__.py +1 -1
  284. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/graphics/color_schemes/autumn.json +0 -0
  285. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/graphics/color_schemes/blossom.json +0 -0
  286. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/graphics/color_schemes/clustalx_dna.json +0 -0
  287. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/graphics/color_schemes/clustalx_protein.json +0 -0
  288. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/graphics/color_schemes/flower.json +0 -0
  289. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/graphics/color_schemes/jalview_buried.json +0 -0
  290. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/graphics/color_schemes/jalview_hydrophobicity.json +0 -0
  291. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/graphics/color_schemes/jalview_prop_helix.json +0 -0
  292. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/graphics/color_schemes/jalview_prop_strand.json +0 -0
  293. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/graphics/color_schemes/jalview_prop_turn.json +0 -0
  294. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/graphics/color_schemes/jalview_taylor.json +0 -0
  295. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/graphics/color_schemes/jalview_zappo.json +0 -0
  296. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/graphics/color_schemes/ocean.json +0 -0
  297. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/graphics/color_schemes/pb_flower.json +0 -0
  298. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/graphics/color_schemes/rainbow_dna.json +0 -0
  299. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/graphics/color_schemes/rainbow_protein.json +0 -0
  300. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/graphics/color_schemes/spring.json +0 -0
  301. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/graphics/color_schemes/sunset.json +0 -0
  302. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/graphics/color_schemes/wither.json +0 -0
  303. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/io/__init__.py +0 -0
  304. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/phylo/nj.pyx +0 -0
  305. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/phylo/tree.pyx +0 -0
  306. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/sequence/phylo/upgma.pyx +0 -0
  307. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/celllist.pyx +0 -0
  308. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/charges.pyx +0 -0
  309. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/graphics/__init__.py +0 -0
  310. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/info/atom_masses.json +0 -0
  311. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/info/ccd/README.rst +0 -0
  312. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/info/ccd/amino_acids.txt +0 -0
  313. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/info/ccd/carbohydrates.txt +0 -0
  314. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/info/ccd/components.bcif +0 -0
  315. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/info/ccd/nucleotides.txt +0 -0
  316. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/io/pdb/hybrid36.pyx +0 -0
  317. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/io/pdbx/encoding.pyx +0 -0
  318. {biotite-0.41.2 → biotite-1.0.1}/src/biotite/structure/sasa.pyx +0 -0
@@ -39,7 +39,6 @@ htmlcov
39
39
  # Ignore all compiled python files (e.g. from running the unit tests)
40
40
  *.pyc
41
41
  *.pyo
42
- *.py{}
43
42
  *.py-e
44
43
 
45
44
  # Ignore potential directory created during install
@@ -17,4 +17,5 @@ CONTRIBUTORS
17
17
  - Jincai Yang <https://github.com/0ut0fcontrol>
18
18
  - Tom Eulenfeld <https://github.com/trichter>
19
19
  - Benjamin E. Mayer <https://github.com/entropybit>
20
- - Natasha Jaffe <https://github.com/tcjaffe>
20
+ - Natasha Jaffe <https://github.com/tcjaffe>
21
+ - Tristen J. Mier <https://github.com/tjmier>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: biotite
3
- Version: 0.41.2
3
+ Version: 1.0.1
4
4
  Summary: A comprehensive library for computational molecular biology
5
5
  Project-URL: homepage, https://www.biotite-python.org
6
6
  Project-URL: repository, https://github.com/biotite-dev/biotite
@@ -37,7 +37,7 @@ License: BSD 3-Clause License
37
37
  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
38
38
  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39
39
  License-File: LICENSE.rst
40
- Classifier: Development Status :: 4 - Beta
40
+ Classifier: Development Status :: 5 - Production/Stable
41
41
  Classifier: Intended Audience :: Developers
42
42
  Classifier: Intended Audience :: Science/Research
43
43
  Classifier: License :: OSI Approved :: BSD License
@@ -49,12 +49,14 @@ Classifier: Programming Language :: Python :: 3
49
49
  Classifier: Programming Language :: Python :: Implementation :: CPython
50
50
  Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
51
51
  Requires-Python: >=3.10
52
+ Requires-Dist: biotraj<2.0,>=1.0
52
53
  Requires-Dist: msgpack>=0.5.6
53
54
  Requires-Dist: networkx>=2.0
54
- Requires-Dist: numpy<2.0,>=1.14.5
55
+ Requires-Dist: numpy>=1.25
55
56
  Requires-Dist: requests>=2.12
56
57
  Provides-Extra: test
57
58
  Requires-Dist: pytest; extra == 'test'
59
+ Requires-Dist: pytest-codspeed; extra == 'test'
58
60
  Description-Content-Type: text/x-rst
59
61
 
60
62
  .. image:: https://img.shields.io/pypi/v/biotite.svg
@@ -80,7 +82,7 @@ This package bundles popular tasks in computational molecular biology
80
82
  into a uniform *Python* library.
81
83
  It can handle a major part of the typical workflow
82
84
  for sequence and biomolecular structure data:
83
-
85
+
84
86
  - Searching and fetching data from biological databases
85
87
  - Reading and writing popular sequence/structure file formats
86
88
  - Analyzing and editing sequence/structure data
@@ -116,7 +118,6 @@ Installation
116
118
 
117
119
  Some functions require some extra packages:
118
120
 
119
- - **mdtraj** - Required for trajetory file I/O operations.
120
121
  - **matplotlib** - Required for plotting purposes.
121
122
 
122
123
  *Biotite* can be installed via *Conda*...
@@ -21,7 +21,7 @@ This package bundles popular tasks in computational molecular biology
21
21
  into a uniform *Python* library.
22
22
  It can handle a major part of the typical workflow
23
23
  for sequence and biomolecular structure data:
24
-
24
+
25
25
  - Searching and fetching data from biological databases
26
26
  - Reading and writing popular sequence/structure file formats
27
27
  - Analyzing and editing sequence/structure data
@@ -57,7 +57,6 @@ Installation
57
57
 
58
58
  Some functions require some extra packages:
59
59
 
60
- - **mdtraj** - Required for trajetory file I/O operations.
61
60
  - **matplotlib** - Required for plotting purposes.
62
61
 
63
62
  *Biotite* can be installed via *Conda*...
@@ -0,0 +1,135 @@
1
+ [project]
2
+ name = "biotite"
3
+ requires-python = ">=3.10"
4
+ description = "A comprehensive library for computational molecular biology"
5
+ readme = "README.rst"
6
+ authors = [{name = "The Biotite contributors"}]
7
+ license = {"file" = "LICENSE.rst"}
8
+ classifiers = [
9
+ "Development Status :: 5 - Production/Stable",
10
+ "Intended Audience :: Developers",
11
+ "Intended Audience :: Science/Research",
12
+ "License :: OSI Approved :: BSD License",
13
+ "Natural Language :: English",
14
+ "Operating System :: POSIX :: Linux",
15
+ "Operating System :: MacOS",
16
+ "Operating System :: Microsoft :: Windows",
17
+ "Programming Language :: Python :: 3",
18
+ "Programming Language :: Python :: Implementation :: CPython",
19
+ "Topic :: Scientific/Engineering :: Bio-Informatics",
20
+ ]
21
+
22
+ dependencies = [
23
+ # Wheels compiled with NumPy 2.0 are backward compatible with NumPy 1.x
24
+ # https://numpy.org/devdocs/dev/depending_on_numpy.html#numpy-2-0-specific-advice
25
+ "numpy >= 1.25",
26
+ "biotraj >= 1.0, < 2.0",
27
+ "requests >= 2.12",
28
+ "msgpack >= 0.5.6",
29
+ "networkx >= 2.0",
30
+ "requests >= 2.12",
31
+ ]
32
+ dynamic = ["version"]
33
+
34
+ [project.optional-dependencies]
35
+ test = [
36
+ "pytest",
37
+ "pytest-codspeed",
38
+ ]
39
+
40
+ [project.urls]
41
+ homepage = "https://www.biotite-python.org"
42
+ repository = "https://github.com/biotite-dev/biotite"
43
+ documentation = "https://www.biotite-python.org"
44
+
45
+ [tool.ruff.lint]
46
+ # pyflakes, pycodestyle isort and varibale naming
47
+ select = ["F", "E", "W", "I", "TID", "N"]
48
+ ignore = [
49
+ # In docstrings long lines are often intentional
50
+ # Most other ocassions are caught by the ruff formatter
51
+ "E501",
52
+ # Due to constants and class placeholders defined in functions
53
+ "N806",
54
+ ]
55
+
56
+ [tool.ruff.lint.per-file-ignores]
57
+ # Due to `* import` of BCIF encoding
58
+ "setup_ccd.py" = ["F405", "F403"]
59
+ # Due to imports after the PATH has been adjusted
60
+ "doc/conf.py" = ["E402"]
61
+ # Due to `from .module import *` imports in `__init__.py` modules
62
+ "__init__.py" = ["F403", "TID252"]
63
+ # Due to pymol scripts that are evaluated in other example scripts
64
+ "doc/examples/**/*_pymol.py" = ["F821"]
65
+
66
+ [tool.ruff.lint.flake8-tidy-imports]
67
+ ban-relative-imports = "all"
68
+
69
+ [tool.ruff.lint.isort]
70
+ # No separator lines between import sections
71
+ no-lines-before = [
72
+ "future",
73
+ "standard-library",
74
+ "third-party",
75
+ "first-party",
76
+ "local-folder",
77
+ ]
78
+ order-by-type = true
79
+ known-first-party = ["biotite"]
80
+
81
+ [tool.pytest.ini_options]
82
+ testpaths = [
83
+ "tests",
84
+ "benchmarks"
85
+ ]
86
+ python_files = [
87
+ "test_*.py",
88
+ "benchmark_*.py",
89
+ ]
90
+ python_functions = [
91
+ "test_*",
92
+ "benchmark_*",
93
+ ]
94
+ filterwarnings = [
95
+ # Appears in loading NetCDF trajectory files
96
+ "ignore:The 'netCDF4' Python package is not installed.",
97
+ "ignore:Input structure has no associated 'BondList'",
98
+ ]
99
+
100
+ [tool.hatch.build.targets.sdist]
101
+ exclude = [
102
+ "tests",
103
+ "benchmarks",
104
+ "doc",
105
+ "environment.yml",
106
+ "setup_ccd.py",
107
+ # .github, .gitignore, .gitattributes
108
+ ".git*",
109
+ ]
110
+
111
+ [tool.hatch.version]
112
+ source = "vcs"
113
+
114
+ [tool.hatch.build.hooks.vcs]
115
+ version-file = "src/biotite/version.py"
116
+
117
+ [tool.hatch.build.targets.wheel.hooks.cython]
118
+ dependencies = ["hatch-cython"]
119
+
120
+ [tool.hatch.build.targets.wheel.hooks.cython.options]
121
+ include_numpy = true
122
+ compile_py = false
123
+ define_macros = [
124
+ ["NPY_NO_DEPRECATED_API", "NPY_1_7_API_VERSION"],
125
+ ]
126
+
127
+ [build-system]
128
+ requires = [
129
+ "hatchling",
130
+ "hatch-vcs == 0.4",
131
+ "hatch-cython == 0.5",
132
+ "numpy >= 2.0",
133
+ "cython >= 3.0",
134
+ ]
135
+ build-backend = "hatchling.build"
@@ -12,8 +12,7 @@ modules.
12
12
  __name__ = "biotite"
13
13
  __author__ = "Patrick Kunzmann"
14
14
 
15
- from .file import *
16
- from .temp import *
17
15
  from .copyable import *
16
+ from .file import *
17
+ from .version import __version__, __version_tuple__ # noqa: F401
18
18
  from .visualize import *
19
- from .version import __version__, __version_tuple__
@@ -65,5 +65,5 @@ __author__ = "Patrick Kunzmann"
65
65
 
66
66
  from .application import *
67
67
  from .localapp import *
68
+ from .msaapp import *
68
69
  from .webapp import *
69
- from .msaapp import *
@@ -4,19 +4,26 @@
4
4
 
5
5
  __name__ = "biotite.application"
6
6
  __author__ = "Patrick Kunzmann"
7
- __all__ = ["Application", "AppStateError", "TimeoutError", "VersionError",
8
- "AppState", "requires_state"]
7
+ __all__ = [
8
+ "Application",
9
+ "AppStateError",
10
+ "TimeoutError",
11
+ "VersionError",
12
+ "AppState",
13
+ "requires_state",
14
+ ]
9
15
 
10
16
  import abc
11
17
  import time
12
- from functools import wraps
13
18
  from enum import Flag, auto
19
+ from functools import wraps
14
20
 
15
21
 
16
22
  class AppState(Flag):
17
23
  """
18
24
  This enum type represents the app states of an application.
19
25
  """
26
+
20
27
  CREATED = auto()
21
28
  RUNNING = auto()
22
29
  FINISHED = auto()
@@ -45,6 +52,7 @@ def requires_state(app_state):
45
52
  ... def function(self):
46
53
  ... pass
47
54
  """
55
+
48
56
  def decorator(func):
49
57
  @wraps(func)
50
58
  def wrapper(*args, **kwargs):
@@ -52,16 +60,16 @@ def requires_state(app_state):
52
60
  try:
53
61
  instance = args[0]
54
62
  except IndexError:
55
- raise TypeError(
56
- "This method must be called from a class instance"
57
- )
63
+ raise TypeError("This method must be called from a class instance")
58
64
  if not instance._state & app_state:
59
65
  raise AppStateError(
60
66
  f"The application is in {instance.get_app_state()} state, "
61
67
  f"but {app_state} state is required"
62
68
  )
63
69
  return func(*args, **kwargs)
70
+
64
71
  return wrapper
72
+
65
73
  return decorator
66
74
 
67
75
 
@@ -146,11 +154,10 @@ class Application(metaclass=abc.ABCMeta):
146
154
  """
147
155
  time.sleep(self.wait_interval())
148
156
  while self.get_app_state() != AppState.FINISHED:
149
- if timeout is not None and time.time()-self._start_time > timeout:
157
+ if timeout is not None and time.time() - self._start_time > timeout:
150
158
  self.cancel()
151
159
  raise TimeoutError(
152
- f"The application expired its timeout "
153
- f"({timeout:.1f} s)"
160
+ f"The application expired its timeout " f"({timeout:.1f} s)"
154
161
  )
155
162
  else:
156
163
  time.sleep(self.wait_interval())
@@ -249,6 +256,7 @@ class AppStateError(Exception):
249
256
  """
250
257
  Indicate that the application lifecycle was violated.
251
258
  """
259
+
252
260
  pass
253
261
 
254
262
 
@@ -256,6 +264,7 @@ class TimeoutError(Exception):
256
264
  """
257
265
  Indicate that the application's timeout expired.
258
266
  """
267
+
259
268
  pass
260
269
 
261
270
 
@@ -263,4 +272,5 @@ class VersionError(Exception):
263
272
  """
264
273
  Indicate that the application's version is invalid.
265
274
  """
266
- pass
275
+
276
+ pass
@@ -9,4 +9,4 @@ A subpackage for static ligand docking with *Autodock*.
9
9
  __name__ = "biotite.application.autodock"
10
10
  __author__ = "Patrick Kunzmann"
11
11
 
12
- from .app import *
12
+ from .app import *
@@ -9,12 +9,12 @@ __all__ = ["VinaApp"]
9
9
  import copy
10
10
  from tempfile import NamedTemporaryFile
11
11
  import numpy as np
12
- from ..localapp import LocalApp, cleanup_tempfile
13
- from ..application import AppState, requires_state
14
- from ...structure.io.pdbqt import PDBQTFile
15
- from ...structure.residues import get_residue_starts_for, get_residue_masks
16
- from ...structure.bonds import find_connected
17
- from ...structure.error import BadStructureError
12
+ from biotite.application.application import AppState, requires_state
13
+ from biotite.application.localapp import LocalApp, cleanup_tempfile
14
+ from biotite.structure.bonds import find_connected
15
+ from biotite.structure.error import BadStructureError
16
+ from biotite.structure.io.pdbqt import PDBQTFile
17
+ from biotite.structure.residues import get_residue_masks, get_residue_starts_for
18
18
 
19
19
 
20
20
  class VinaApp(LocalApp):
@@ -62,8 +62,8 @@ class VinaApp(LocalApp):
62
62
  ... flexible=(receptor.res_id == 2) | (receptor.res_id == 5)
63
63
  ... )
64
64
  """
65
- def __init__(self, ligand, receptor, center, size, flexible=None,
66
- bin_path="vina"):
65
+
66
+ def __init__(self, ligand, receptor, center, size, flexible=None, bin_path="vina"):
67
67
  super().__init__(bin_path)
68
68
 
69
69
  if ligand.bonds is None:
@@ -83,23 +83,17 @@ class VinaApp(LocalApp):
83
83
 
84
84
  if self._is_flexible:
85
85
  flexible_indices = np.where(flexible)[0]
86
- self._flex_res_starts = np.unique(get_residue_starts_for(
87
- receptor, flexible_indices
88
- ))
89
-
90
- self._ligand_file = NamedTemporaryFile(
91
- "w", suffix=".pdbqt", delete=False
92
- )
93
- self._receptor_file = NamedTemporaryFile(
94
- "w", suffix=".pdbqt", delete=False
95
- )
96
- self._receptor_flex_file = NamedTemporaryFile(
86
+ self._flex_res_starts = np.unique(
87
+ get_residue_starts_for(receptor, flexible_indices)
88
+ )
89
+
90
+ self._ligand_file = NamedTemporaryFile("w", suffix=".pdbqt", delete=False)
91
+ self._receptor_file = NamedTemporaryFile("w", suffix=".pdbqt", delete=False)
92
+ self._receptor_flex_file = NamedTemporaryFile(
97
93
  "w", suffix=".pdbqt", delete=False
98
94
  )
99
- self._out_file = NamedTemporaryFile(
100
- "r", suffix=".pdbqt", delete=False
101
- )
102
-
95
+ self._out_file = NamedTemporaryFile("r", suffix=".pdbqt", delete=False)
96
+
103
97
  @requires_state(AppState.CREATED)
104
98
  def set_seed(self, seed):
105
99
  """
@@ -114,7 +108,7 @@ class VinaApp(LocalApp):
114
108
  The seed for the random number generator.
115
109
  """
116
110
  self._seed = seed
117
-
111
+
118
112
  @requires_state(AppState.CREATED)
119
113
  def set_exhaustiveness(self, exhaustiveness):
120
114
  """
@@ -131,7 +125,7 @@ class VinaApp(LocalApp):
131
125
  Must be greater than 0.
132
126
  """
133
127
  self._exhaustiveness = exhaustiveness
134
-
128
+
135
129
  @requires_state(AppState.CREATED)
136
130
  def set_max_number_of_models(self, number):
137
131
  """
@@ -147,7 +141,7 @@ class VinaApp(LocalApp):
147
141
  The maximum number of generated modes/models.
148
142
  """
149
143
  self._number = number
150
-
144
+
151
145
  @requires_state(AppState.CREATED)
152
146
  def set_energy_range(self, energy_range):
153
147
  """
@@ -168,34 +162,31 @@ class VinaApp(LocalApp):
168
162
  # Use different atom ID ranges for atoms in ligand and receptor
169
163
  # for unambiguous assignment, if the receptor contains flexible
170
164
  # residues
171
- self._ligand.set_annotation("atom_id", np.arange(
172
- 1,
173
- self._ligand.array_length() + 1
174
- ))
175
- self._receptor.set_annotation("atom_id", np.arange(
176
- self._ligand.array_length() + 1,
177
- self._ligand.array_length() + self._receptor.array_length() + 1
178
- ))
165
+ self._ligand.set_annotation(
166
+ "atom_id", np.arange(1, self._ligand.array_length() + 1)
167
+ )
168
+ self._receptor.set_annotation(
169
+ "atom_id",
170
+ np.arange(
171
+ self._ligand.array_length() + 1,
172
+ self._ligand.array_length() + self._receptor.array_length() + 1,
173
+ ),
174
+ )
179
175
 
180
176
  ligand_file = PDBQTFile()
181
- # Contains 'true' entries for all atoms that have not been
177
+ # Contains 'true' entries for all atoms that have not been
182
178
  # removed from ligand
183
179
  self._ligand_mask = ligand_file.set_structure(
184
- self._ligand,
185
- rotatable_bonds="all"
180
+ self._ligand, rotatable_bonds="all"
186
181
  )
187
182
  ligand_file.write(self._ligand_file)
188
183
  self._ligand_file.flush()
189
-
184
+
190
185
  if self._is_flexible:
191
- self._rigid_mask = np.ones(
192
- self._receptor.array_length(), dtype=bool
193
- )
194
- # Contains 'true' entries for all atoms that have not been
186
+ self._rigid_mask = np.ones(self._receptor.array_length(), dtype=bool)
187
+ # Contains 'true' entries for all atoms that have not been
195
188
  # removed from receptor in flexible side chains
196
- self._receptor_mask = np.zeros(
197
- self._receptor.array_length(), dtype=bool
198
- )
189
+ self._receptor_mask = np.zeros(self._receptor.array_length(), dtype=bool)
199
190
  for i, start in enumerate(self._flex_res_starts):
200
191
  flex_mask, rigid_mask, root = self._get_flexible_residue(start)
201
192
  self._rigid_mask &= rigid_mask
@@ -207,7 +198,7 @@ class VinaApp(LocalApp):
207
198
  self._receptor[flex_mask],
208
199
  rotatable_bonds="all",
209
200
  root=root_in_flex_residue,
210
- include_torsdof=False
201
+ include_torsdof=False,
211
202
  )
212
203
  # Enclose each flexible residue
213
204
  # with BEGIN_RES and END_RES
@@ -220,7 +211,7 @@ class VinaApp(LocalApp):
220
211
  receptor_file.set_structure(
221
212
  self._receptor[self._rigid_mask],
222
213
  rotatable_bonds=None,
223
- include_torsdof=False
214
+ include_torsdof=False,
224
215
  )
225
216
  receptor_file.write(self._receptor_file)
226
217
  self._receptor_file.flush()
@@ -228,23 +219,30 @@ class VinaApp(LocalApp):
228
219
  else:
229
220
  receptor_file = PDBQTFile()
230
221
  receptor_file.set_structure(
231
- self._receptor,
232
- rotatable_bonds=None,
233
- include_torsdof=False
222
+ self._receptor, rotatable_bonds=None, include_torsdof=False
234
223
  )
235
224
  receptor_file.write(self._receptor_file)
236
225
  self._receptor_file.flush()
237
226
 
238
227
  arguments = [
239
- "--ligand", self._ligand_file.name,
240
- "--receptor", self._receptor_file.name,
241
- "--out", self._out_file.name,
242
- "--center_x", f"{self._center[0]:.3f}",
243
- "--center_y", f"{self._center[1]:.3f}",
244
- "--center_z", f"{self._center[2]:.3f}",
245
- "--size_x", f"{self._size[0]:.3f}",
246
- "--size_y", f"{self._size[1]:.3f}",
247
- "--size_z", f"{self._size[2]:.3f}",
228
+ "--ligand",
229
+ self._ligand_file.name,
230
+ "--receptor",
231
+ self._receptor_file.name,
232
+ "--out",
233
+ self._out_file.name,
234
+ "--center_x",
235
+ f"{self._center[0]:.3f}",
236
+ "--center_y",
237
+ f"{self._center[1]:.3f}",
238
+ "--center_z",
239
+ f"{self._center[2]:.3f}",
240
+ "--size_x",
241
+ f"{self._size[0]:.3f}",
242
+ "--size_y",
243
+ f"{self._size[1]:.3f}",
244
+ "--size_z",
245
+ f"{self._size[2]:.3f}",
248
246
  ]
249
247
  if self._seed is not None:
250
248
  arguments.extend(["--seed", str(self._seed)])
@@ -259,32 +257,32 @@ class VinaApp(LocalApp):
259
257
 
260
258
  self.set_arguments(arguments)
261
259
  super().run()
262
-
260
+
263
261
  def evaluate(self):
264
262
  super().evaluate()
265
263
  out_file = PDBQTFile.read(self._out_file)
266
-
264
+
267
265
  models = out_file.get_structure()
268
266
 
269
267
  n_ligand_atoms = np.count_nonzero(self._ligand_mask)
270
268
  self._ligand_models = models[..., :n_ligand_atoms]
271
269
  self._flex_models = models[..., n_ligand_atoms:]
272
270
  self._n_models = models.stack_depth()
273
-
271
+
274
272
  remarks = out_file.get_remarks()
275
273
  self._energies = np.array(
276
274
  # VINA RESULT: -5.8 0.000 0.000
277
275
  # ^
278
276
  [float(remark[12:].split()[0]) for remark in remarks]
279
277
  )
280
-
278
+
281
279
  def clean_up(self):
282
280
  super().clean_up()
283
281
  cleanup_tempfile(self._ligand_file)
284
282
  cleanup_tempfile(self._receptor_file)
285
283
  cleanup_tempfile(self._receptor_flex_file)
286
284
  cleanup_tempfile(self._out_file)
287
-
285
+
288
286
  @requires_state(AppState.JOINED)
289
287
  def get_energies(self):
290
288
  """
@@ -302,7 +300,7 @@ class VinaApp(LocalApp):
302
300
  @requires_state(AppState.JOINED)
303
301
  def get_ligand_models(self):
304
302
  """
305
- Get the ligand structure with the conformations for each
303
+ Get the ligand structure with the conformations for each
306
304
  generated binding mode.
307
305
 
308
306
  Returns
@@ -312,7 +310,7 @@ class VinaApp(LocalApp):
312
310
  Each model corresponds to one binding mode.
313
311
  The models are sorted from best to worst predicted binding
314
312
  affinity.
315
-
313
+
316
314
  Notes
317
315
  -----
318
316
  The returned structure may contain less atoms than the input
@@ -338,12 +336,11 @@ class VinaApp(LocalApp):
338
336
  atoms are set to *NaN*.
339
337
  """
340
338
  coord = np.full(
341
- (self._n_models, self._ligand.array_length(), 3),
342
- np.nan, dtype=np.float32
339
+ (self._n_models, self._ligand.array_length(), 3), np.nan, dtype=np.float32
343
340
  )
344
341
  coord[:, self._ligand_mask] = self._ligand_models.coord
345
342
  return coord
346
-
343
+
347
344
  @requires_state(AppState.JOINED)
348
345
  def get_flexible_residue_models(self):
349
346
  """
@@ -360,7 +357,7 @@ class VinaApp(LocalApp):
360
357
  Each model corresponds to one binding mode.
361
358
  The models are sorted from best to worst predicted binding
362
359
  affinity.
363
-
360
+
364
361
  Notes
365
362
  -----
366
363
  The returned structure may contain less atoms than the input
@@ -385,7 +382,7 @@ class VinaApp(LocalApp):
385
382
  affinity.
386
383
  Missing coordinates due to the removed nonpolar hydrogen
387
384
  atoms from flexible side chains are set to *NaN*.
388
-
385
+
389
386
  Notes
390
387
  -----
391
388
  The output is only meaningful, if flexible side chains were
@@ -394,8 +391,7 @@ class VinaApp(LocalApp):
394
391
  of the input receptor coordinates.
395
392
  """
396
393
  coord = np.repeat(
397
- self._receptor.coord[np.newaxis, ...],
398
- repeats=self._n_models, axis=0
394
+ self._receptor.coord[np.newaxis, ...], repeats=self._n_models, axis=0
399
395
  )
400
396
  if self._is_flexible:
401
397
  # Replace original coordinates with modeled coordinates
@@ -424,16 +420,16 @@ class VinaApp(LocalApp):
424
420
  root_connect_indices, _ = self._receptor.bonds.get_bonds(root_index)
425
421
  connected_index = None
426
422
  try:
427
- connected_index = root_connect_indices[np.isin(
428
- self._receptor.atom_name[root_connect_indices], ("CB",)
429
- )][0]
423
+ connected_index = root_connect_indices[
424
+ np.isin(self._receptor.atom_name[root_connect_indices], ("CB",))
425
+ ][0]
430
426
  except IndexError:
431
427
  # Residue has no appropriate connection (e.g. in glycine)
432
428
  # -> There is no atom in the flexible side chain
433
429
  flex_mask = np.zeros(self._receptor.array_length(), dtype=bool)
434
430
  rigid_mask = np.ones(self._receptor.array_length(), dtype=bool)
435
431
  return flex_mask, rigid_mask, root_index
436
-
432
+
437
433
  # Remove the root bond from the bond list
438
434
  # to find the atoms involved in the flexible part
439
435
  bonds = self._receptor.bonds.copy()
@@ -442,7 +438,7 @@ class VinaApp(LocalApp):
442
438
  if root_index in flexible_indices:
443
439
  raise BadStructureError(
444
440
  "There are multiple connections between the flexible and "
445
- "rigid part, maybe a cyclic residue like proline was selected"
441
+ "rigid part, maybe a cyclic residue like proline was selected"
446
442
  )
447
443
 
448
444
  flex_mask = np.zeros(self._receptor.array_length(), dtype=bool)
@@ -452,7 +448,6 @@ class VinaApp(LocalApp):
452
448
  flex_mask[root_index] = True
453
449
 
454
450
  return flex_mask, rigid_mask, root_index
455
-
456
451
 
457
452
  @staticmethod
458
453
  def dock(ligand, receptor, center, size, flexible=None, bin_path="vina"):
@@ -10,5 +10,5 @@ using BLAST.
10
10
  __name__ = "biotite.application.blast"
11
11
  __author__ = "Patrick Kunzmann"
12
12
 
13
+ from .alignment import *
13
14
  from .webapp import *
14
- from .alignment import *