biotite 0.41.1__tar.gz → 0.41.2__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 (321) hide show
  1. {biotite-0.41.1 → biotite-0.41.2}/.gitignore +4 -4
  2. {biotite-0.41.1 → biotite-0.41.2}/CONTRIB.rst +1 -0
  3. {biotite-0.41.1 → biotite-0.41.2}/PKG-INFO +2 -2
  4. {biotite-0.41.1 → biotite-0.41.2}/README.rst +1 -1
  5. {biotite-0.41.1 → biotite-0.41.2}/pyproject.toml +3 -1
  6. biotite-0.41.2/src/biotite/application/__init__.py +69 -0
  7. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/application/application.py +2 -1
  8. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/__init__.py +13 -2
  9. biotite-0.41.2/src/biotite/sequence/align/__init__.py +203 -0
  10. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/multiple.pyx +34 -34
  11. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/alphabet.py +63 -63
  12. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/sequence.py +52 -50
  13. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/atoms.py +8 -8
  14. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/bonds.pyx +59 -68
  15. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/info/ccd.py +17 -2
  16. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/info/groups.py +9 -12
  17. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/pdbx/bcif.py +0 -8
  18. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/version.py +2 -2
  19. biotite-0.41.1/.gitattributes +0 -3
  20. biotite-0.41.1/.github/workflows/test_and_deploy.yml +0 -290
  21. biotite-0.41.1/src/biotite/application/__init__.py +0 -43
  22. biotite-0.41.1/src/biotite/sequence/align/__init__.py +0 -49
  23. {biotite-0.41.1 → biotite-0.41.2}/LICENSE.rst +0 -0
  24. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/__init__.py +0 -0
  25. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/application/autodock/__init__.py +0 -0
  26. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/application/autodock/app.py +0 -0
  27. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/application/blast/__init__.py +0 -0
  28. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/application/blast/alignment.py +0 -0
  29. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/application/blast/webapp.py +0 -0
  30. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/application/clustalo/__init__.py +0 -0
  31. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/application/clustalo/app.py +0 -0
  32. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/application/dssp/__init__.py +0 -0
  33. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/application/dssp/app.py +0 -0
  34. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/application/localapp.py +0 -0
  35. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/application/mafft/__init__.py +0 -0
  36. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/application/mafft/app.py +0 -0
  37. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/application/msaapp.py +0 -0
  38. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/application/muscle/__init__.py +0 -0
  39. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/application/muscle/app3.py +0 -0
  40. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/application/muscle/app5.py +0 -0
  41. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/application/sra/__init__.py +0 -0
  42. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/application/sra/app.py +0 -0
  43. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/application/tantan/__init__.py +0 -0
  44. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/application/tantan/app.py +0 -0
  45. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/application/util.py +0 -0
  46. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/application/viennarna/__init__.py +0 -0
  47. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/application/viennarna/rnaalifold.py +0 -0
  48. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/application/viennarna/rnafold.py +0 -0
  49. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/application/viennarna/rnaplot.py +0 -0
  50. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/application/viennarna/util.py +0 -0
  51. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/application/webapp.py +0 -0
  52. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/copyable.py +0 -0
  53. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/database/__init__.py +0 -0
  54. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/database/entrez/__init__.py +0 -0
  55. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/database/entrez/check.py +0 -0
  56. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/database/entrez/dbnames.py +0 -0
  57. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/database/entrez/download.py +0 -0
  58. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/database/entrez/key.py +0 -0
  59. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/database/entrez/query.py +0 -0
  60. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/database/error.py +0 -0
  61. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/database/pubchem/__init__.py +0 -0
  62. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/database/pubchem/download.py +0 -0
  63. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/database/pubchem/error.py +0 -0
  64. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/database/pubchem/query.py +0 -0
  65. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/database/pubchem/throttle.py +0 -0
  66. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/database/rcsb/__init__.py +0 -0
  67. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/database/rcsb/download.py +0 -0
  68. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/database/rcsb/query.py +0 -0
  69. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/database/uniprot/__init__.py +0 -0
  70. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/database/uniprot/check.py +0 -0
  71. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/database/uniprot/download.py +0 -0
  72. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/database/uniprot/query.py +0 -0
  73. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/file.py +0 -0
  74. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/alignment.py +0 -0
  75. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/banded.pyx +0 -0
  76. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/buckets.py +0 -0
  77. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/cigar.py +0 -0
  78. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/kmeralphabet.pyx +0 -0
  79. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/kmersimilarity.pyx +0 -0
  80. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/kmertable.pyx +0 -0
  81. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/localgapped.pyx +0 -0
  82. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/localungapped.pyx +0 -0
  83. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix.py +0 -0
  84. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/BLOSUM100.mat +0 -0
  85. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/BLOSUM30.mat +0 -0
  86. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/BLOSUM35.mat +0 -0
  87. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/BLOSUM40.mat +0 -0
  88. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/BLOSUM45.mat +0 -0
  89. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/BLOSUM50.mat +0 -0
  90. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/BLOSUM50_13p.mat +0 -0
  91. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/BLOSUM50_14.3.mat +0 -0
  92. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/BLOSUM50_5.0.mat +0 -0
  93. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/BLOSUM55.mat +0 -0
  94. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/BLOSUM60.mat +0 -0
  95. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/BLOSUM62.mat +0 -0
  96. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/BLOSUM62_13p.mat +0 -0
  97. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/BLOSUM62_14.3.mat +0 -0
  98. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/BLOSUM62_5.0.mat +0 -0
  99. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/BLOSUM65.mat +0 -0
  100. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/BLOSUM70.mat +0 -0
  101. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/BLOSUM75.mat +0 -0
  102. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/BLOSUM80.mat +0 -0
  103. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/BLOSUM85.mat +0 -0
  104. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/BLOSUM90.mat +0 -0
  105. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/BLOSUMN.mat +0 -0
  106. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/CorBLOSUM49_5.0.mat +0 -0
  107. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/CorBLOSUM57_13p.mat +0 -0
  108. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/CorBLOSUM57_14.3.mat +0 -0
  109. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/CorBLOSUM61_5.0.mat +0 -0
  110. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/CorBLOSUM66_13p.mat +0 -0
  111. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/CorBLOSUM67_14.3.mat +0 -0
  112. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/DAYHOFF.mat +0 -0
  113. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/GONNET.mat +0 -0
  114. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/IDENTITY.mat +0 -0
  115. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/MATCH.mat +0 -0
  116. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/NUC.mat +0 -0
  117. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM10.mat +0 -0
  118. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM100.mat +0 -0
  119. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM110.mat +0 -0
  120. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM120.mat +0 -0
  121. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM130.mat +0 -0
  122. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM140.mat +0 -0
  123. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM150.mat +0 -0
  124. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM160.mat +0 -0
  125. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM170.mat +0 -0
  126. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM180.mat +0 -0
  127. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM190.mat +0 -0
  128. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM20.mat +0 -0
  129. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM200.mat +0 -0
  130. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM210.mat +0 -0
  131. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM220.mat +0 -0
  132. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM230.mat +0 -0
  133. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM240.mat +0 -0
  134. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM250.mat +0 -0
  135. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM260.mat +0 -0
  136. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM270.mat +0 -0
  137. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM280.mat +0 -0
  138. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM290.mat +0 -0
  139. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM30.mat +0 -0
  140. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM300.mat +0 -0
  141. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM310.mat +0 -0
  142. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM320.mat +0 -0
  143. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM330.mat +0 -0
  144. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM340.mat +0 -0
  145. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM350.mat +0 -0
  146. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM360.mat +0 -0
  147. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM370.mat +0 -0
  148. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM380.mat +0 -0
  149. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM390.mat +0 -0
  150. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM40.mat +0 -0
  151. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM400.mat +0 -0
  152. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM410.mat +0 -0
  153. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM420.mat +0 -0
  154. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM430.mat +0 -0
  155. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM440.mat +0 -0
  156. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM450.mat +0 -0
  157. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM460.mat +0 -0
  158. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM470.mat +0 -0
  159. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM480.mat +0 -0
  160. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM490.mat +0 -0
  161. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM50.mat +0 -0
  162. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM500.mat +0 -0
  163. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM60.mat +0 -0
  164. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM70.mat +0 -0
  165. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM80.mat +0 -0
  166. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/PAM90.mat +0 -0
  167. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/RBLOSUM52_5.0.mat +0 -0
  168. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/RBLOSUM59_13p.mat +0 -0
  169. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/RBLOSUM59_14.3.mat +0 -0
  170. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/RBLOSUM64_5.0.mat +0 -0
  171. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/RBLOSUM69_13p.mat +0 -0
  172. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/matrix_data/RBLOSUM69_14.3.mat +0 -0
  173. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/pairwise.pyx +0 -0
  174. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/permutation.pyx +0 -0
  175. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/primes.txt +0 -0
  176. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/selector.pyx +0 -0
  177. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/statistics.py +0 -0
  178. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/tracetable.pxd +0 -0
  179. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/align/tracetable.pyx +0 -0
  180. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/annotation.py +0 -0
  181. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/codec.pyx +0 -0
  182. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/codon.py +0 -0
  183. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/codon_tables.txt +0 -0
  184. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/graphics/__init__.py +0 -0
  185. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/graphics/alignment.py +0 -0
  186. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/graphics/color_schemes/autumn.json +0 -0
  187. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/graphics/color_schemes/blossom.json +0 -0
  188. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/graphics/color_schemes/clustalx_dna.json +0 -0
  189. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/graphics/color_schemes/clustalx_protein.json +0 -0
  190. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/graphics/color_schemes/flower.json +0 -0
  191. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/graphics/color_schemes/jalview_buried.json +0 -0
  192. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/graphics/color_schemes/jalview_hydrophobicity.json +0 -0
  193. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/graphics/color_schemes/jalview_prop_helix.json +0 -0
  194. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/graphics/color_schemes/jalview_prop_strand.json +0 -0
  195. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/graphics/color_schemes/jalview_prop_turn.json +0 -0
  196. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/graphics/color_schemes/jalview_taylor.json +0 -0
  197. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/graphics/color_schemes/jalview_zappo.json +0 -0
  198. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/graphics/color_schemes/ocean.json +0 -0
  199. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/graphics/color_schemes/pb_flower.json +0 -0
  200. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/graphics/color_schemes/rainbow_dna.json +0 -0
  201. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/graphics/color_schemes/rainbow_protein.json +0 -0
  202. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/graphics/color_schemes/spring.json +0 -0
  203. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/graphics/color_schemes/sunset.json +0 -0
  204. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/graphics/color_schemes/wither.json +0 -0
  205. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/graphics/colorschemes.py +0 -0
  206. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/graphics/dendrogram.py +0 -0
  207. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/graphics/features.py +0 -0
  208. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/graphics/logo.py +0 -0
  209. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/graphics/plasmid.py +0 -0
  210. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/io/__init__.py +0 -0
  211. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/io/fasta/__init__.py +0 -0
  212. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/io/fasta/convert.py +0 -0
  213. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/io/fasta/file.py +0 -0
  214. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/io/fastq/__init__.py +0 -0
  215. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/io/fastq/convert.py +0 -0
  216. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/io/fastq/file.py +0 -0
  217. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/io/genbank/__init__.py +0 -0
  218. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/io/genbank/annotation.py +0 -0
  219. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/io/genbank/file.py +0 -0
  220. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/io/genbank/metadata.py +0 -0
  221. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/io/genbank/sequence.py +0 -0
  222. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/io/general.py +0 -0
  223. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/io/gff/__init__.py +0 -0
  224. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/io/gff/convert.py +0 -0
  225. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/io/gff/file.py +0 -0
  226. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/phylo/__init__.py +0 -0
  227. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/phylo/nj.pyx +0 -0
  228. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/phylo/tree.pyx +0 -0
  229. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/phylo/upgma.pyx +0 -0
  230. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/profile.py +0 -0
  231. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/search.py +0 -0
  232. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/sequence/seqtypes.py +0 -0
  233. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/__init__.py +0 -0
  234. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/basepairs.py +0 -0
  235. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/box.py +0 -0
  236. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/celllist.pyx +0 -0
  237. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/chains.py +0 -0
  238. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/charges.pyx +0 -0
  239. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/compare.py +0 -0
  240. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/density.py +0 -0
  241. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/dotbracket.py +0 -0
  242. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/error.py +0 -0
  243. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/filter.py +0 -0
  244. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/geometry.py +0 -0
  245. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/graphics/__init__.py +0 -0
  246. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/graphics/atoms.py +0 -0
  247. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/graphics/rna.py +0 -0
  248. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/hbond.py +0 -0
  249. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/info/__init__.py +0 -0
  250. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/info/atom_masses.json +0 -0
  251. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/info/atoms.py +0 -0
  252. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/info/bonds.py +0 -0
  253. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/info/ccd/README.rst +0 -0
  254. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/info/ccd/amino_acids.txt +0 -0
  255. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/info/ccd/carbohydrates.txt +0 -0
  256. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/info/ccd/components.bcif +0 -0
  257. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/info/ccd/nucleotides.txt +0 -0
  258. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/info/masses.py +0 -0
  259. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/info/misc.py +0 -0
  260. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/info/radii.py +0 -0
  261. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/info/standardize.py +0 -0
  262. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/integrity.py +0 -0
  263. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/__init__.py +0 -0
  264. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/ctab.py +0 -0
  265. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/dcd/__init__.py +0 -0
  266. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/dcd/file.py +0 -0
  267. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/general.py +0 -0
  268. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/gro/__init__.py +0 -0
  269. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/gro/file.py +0 -0
  270. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/mmtf/__init__.py +0 -0
  271. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/mmtf/assembly.py +0 -0
  272. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/mmtf/convertarray.pyx +0 -0
  273. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/mmtf/convertfile.pyx +0 -0
  274. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/mmtf/decode.pyx +0 -0
  275. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/mmtf/encode.pyx +0 -0
  276. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/mmtf/file.py +0 -0
  277. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/mol/__init__.py +0 -0
  278. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/mol/convert.py +0 -0
  279. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/mol/ctab.py +0 -0
  280. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/mol/header.py +0 -0
  281. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/mol/mol.py +0 -0
  282. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/mol/sdf.py +0 -0
  283. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/netcdf/__init__.py +0 -0
  284. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/netcdf/file.py +0 -0
  285. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/npz/__init__.py +0 -0
  286. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/npz/file.py +0 -0
  287. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/pdb/__init__.py +0 -0
  288. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/pdb/convert.py +0 -0
  289. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/pdb/file.py +0 -0
  290. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/pdb/hybrid36.pyx +0 -0
  291. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/pdbqt/__init__.py +0 -0
  292. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/pdbqt/convert.py +0 -0
  293. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/pdbqt/file.py +0 -0
  294. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/pdbx/__init__.py +0 -0
  295. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/pdbx/cif.py +0 -0
  296. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/pdbx/component.py +0 -0
  297. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/pdbx/convert.py +0 -0
  298. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/pdbx/encoding.pyx +0 -0
  299. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/pdbx/legacy.py +0 -0
  300. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/tng/__init__.py +0 -0
  301. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/tng/file.py +0 -0
  302. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/trajfile.py +0 -0
  303. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/trr/__init__.py +0 -0
  304. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/trr/file.py +0 -0
  305. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/xtc/__init__.py +0 -0
  306. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/io/xtc/file.py +0 -0
  307. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/mechanics.py +0 -0
  308. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/molecules.py +0 -0
  309. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/pseudoknots.py +0 -0
  310. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/rdf.py +0 -0
  311. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/repair.py +0 -0
  312. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/residues.py +0 -0
  313. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/resutil.py +0 -0
  314. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/sasa.pyx +0 -0
  315. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/sequence.py +0 -0
  316. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/sse.py +0 -0
  317. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/superimpose.py +0 -0
  318. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/transform.py +0 -0
  319. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/structure/util.py +0 -0
  320. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/temp.py +0 -0
  321. {biotite-0.41.1 → biotite-0.41.2}/src/biotite/visualize.py +0 -0
@@ -20,10 +20,9 @@ htmlcov
20
20
  # Ignore version file created by hatch-vcs
21
21
  /src/biotite/version.py
22
22
 
23
- # Ignore autogenerated API reference
23
+ # Ignore autogenerated documentation files
24
+ /doc/static/switcher.json
24
25
  /doc/apidoc
25
-
26
- # Ignore autogenerated example gallery
27
26
  /doc/examples/gallery
28
27
  /doc/examples/backreferences
29
28
  /doc/sg_execution_times.rst
@@ -58,8 +57,9 @@ biotite.egg-info
58
57
  *.code-workspace
59
58
  .vscode/*
60
59
 
61
- # Ignore fuse_hidden files on Linux systems
60
+ # Ignore hidden OS related files
62
61
  *.fuse_hidden*
62
+ .DS_Store
63
63
 
64
64
  # Ignore temp files created via Jupyter
65
65
  **/.ipynb_checkpoints/
@@ -4,6 +4,7 @@ CONTRIBUTORS
4
4
  - Fabrice Allain <https://github.com/f-allain>
5
5
  - Jacob Marcel Anter <https://github.com/JacobAnter>
6
6
  - Daniel Bauer <https://github.com/dnlbauer>
7
+ - Lukas Jarosch <https://github.com/ljarosch>
7
8
  - Patrick Kunzmann <https://github.com/padix-key>
8
9
  - Tom David Müller <https://github.com/t0mdavid-m>
9
10
  - Thomas Nevolianis <https://github.com/thomasnevolianis>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: biotite
3
- Version: 0.41.1
3
+ Version: 0.41.2
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
@@ -184,4 +184,4 @@ Contribution
184
184
  Interested in improving *Biotite*?
185
185
  Have a look at the
186
186
  `contribution guidelines <https://www.biotite-python.org/contribute.html>`_.
187
- Feel free to join or community chat on `Discord <https://discord.gg/cUjDguF>`_.
187
+ Feel free to join our community chat on `Discord <https://discord.gg/cUjDguF>`_.
@@ -125,4 +125,4 @@ Contribution
125
125
  Interested in improving *Biotite*?
126
126
  Have a look at the
127
127
  `contribution guidelines <https://www.biotite-python.org/contribute.html>`_.
128
- Feel free to join or community chat on `Discord <https://discord.gg/cUjDguF>`_.
128
+ Feel free to join our community chat on `Discord <https://discord.gg/cUjDguF>`_.
@@ -45,7 +45,9 @@ exclude = [
45
45
  "tests",
46
46
  "doc",
47
47
  "environment.yml",
48
- "setup_ccd.py"
48
+ "setup_ccd.py",
49
+ # .github, .gitignore, .gitattributes
50
+ ".git*",
49
51
  ]
50
52
 
51
53
  [tool.hatch.version]
@@ -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 .webapp import *
69
+ from .msaapp import *
@@ -74,7 +74,8 @@ class Application(metaclass=abc.ABCMeta):
74
74
 
75
75
  Every :class:`Application` runs through a different app states
76
76
  (instances of enum :class:`AppState`) from its creation until its
77
- termination:
77
+ termination.
78
+
78
79
  Directly after its instantiation the app is in the *CREATED* state.
79
80
  In this state further parameters can be set for the application run.
80
81
  After the user calls the :func:`start()` method, the app state is
@@ -24,7 +24,15 @@ For example, ``'A'``, ``'C'``, ``'G'`` and ``'T'`` would be encoded into
24
24
  These integer values are called *symbol code*, the encoding of an entire
25
25
  sequence of symbols is called *sequence code*.
26
26
 
27
- The size of the symbol code type in the array is determined by the
27
+ .. figure:: /static/assets/figures/symbol_encoding.png
28
+ :alt: Symbol encoding in Biotite
29
+ :scale: 50%
30
+
31
+ Taken from
32
+ `Kunzmann & Hamacher 2018 <https://doi.org/10.1186/s12859-018-2367-z>`_
33
+ licensed under `CC BY 4.0 <https://creativecommons.org/licenses/by/4.0/>`_.
34
+
35
+ The size of the symbol code type in the array is determined by the
28
36
  size of the :class:`Alphabet`:
29
37
  If the :class:`Alphabet` contains 256 symbols or less, one byte is used
30
38
  per array element, between 257 and 65536 symbols, two bytes are used,
@@ -41,6 +49,7 @@ This approach has multiple advantages:
41
49
  indifferent to the actual type of sequence.
42
50
  - Symbol codes are directly indices for substitution matrices in
43
51
  alignments
52
+ - *k-mers* can be computed fast
44
53
 
45
54
  The abstract :class:`Sequence` superclass cannot be instantiated
46
55
  directly, as it does not define an :class:`Alphabet` by itself.
@@ -55,10 +64,12 @@ The class :class:`GeneralSequence` allows the usage of a custom
55
64
  Additionally, this subpackage provides support for sequence features,
56
65
  as used in e.g. GenBank or GFF files.
57
66
  A :class:`Feature` stores its key name, its qualifiers and locations.
58
- An :class:`Annotation` is a group of multiple :class:`Feataure` objects
67
+ An :class:`Annotation` is a group of multiple :class:`Feature` objects
59
68
  and offers convenient location based indexing.
60
69
  An :class:`AnnotatedSequence` combines an :class:`Annotation` and a
61
70
  :class:`Sequence`.
71
+
72
+ Sequence profiles can be created with the :class:`SequenceProfile` class.
62
73
  """
63
74
 
64
75
  __name__ = "biotite.sequence"
@@ -0,0 +1,203 @@
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 provides functionality for sequence alignments.
7
+
8
+ The two central classes involved are :class:`SubstitutionMatrix` and
9
+ :class:`Alignment`:
10
+
11
+ Every function that performs an alignment requires a
12
+ :class:`SubstitutionMatrix` that provides similarity scores for each
13
+ symbol combination of two alphabets (usually both alphabets are equal).
14
+ The alphabets in the :class:`SubstitutionMatrix` must match or extend
15
+ the alphabets of the sequences to be aligned.
16
+
17
+ An alignment cannot be directly represented as list of :class:`Sequence`
18
+ objects, since a gap indicates the absence of any symbol.
19
+ Instead, the aligning functions return one or more :class:`Alignment`
20
+ instances.
21
+ These objects contain the original sequences and a trace, that describe
22
+ which positions (indices) in the sequences are aligned.
23
+ Optionally they also contain the similarity score.
24
+
25
+ The aligning functions :func:`align_optimal()` and
26
+ :func:`align_multiple()` cover most use cases for pairwise and multiple
27
+ sequence alignments respectively.
28
+
29
+ However, *Biotite* provides also a modular system to build performant
30
+ heuristic alignment search methods, e.g. for finding homologies in a sequence
31
+ database or map reads to a genome.
32
+ The table below summarizes those provided functionalities.
33
+ The typical stages in alignment search, where those functionalities are used,
34
+ are arranged from top to bottom.
35
+
36
+ .. grid::
37
+ :gutter: 0
38
+ :class-container: sd-text-center
39
+
40
+ .. grid-item::
41
+ :padding: 2
42
+ :outline:
43
+ :columns: 3
44
+
45
+ **Entire k-mer set**
46
+
47
+ .. grid-item::
48
+ :padding: 2
49
+ :outline:
50
+ :columns: 9
51
+
52
+ .. grid::
53
+ :margin: 0
54
+
55
+ .. grid-item::
56
+ :padding: 2
57
+ :columns: 12
58
+
59
+ **k-mer subset selection**
60
+
61
+ .. grid-item::
62
+ :padding: 2
63
+ :columns: 4
64
+
65
+ Minimizers
66
+
67
+ :class:`MinimizerSelector`
68
+
69
+ .. grid-item::
70
+ :padding: 2
71
+ :columns: 4
72
+
73
+ Syncmers
74
+
75
+ :class:`SyncmerSelector`
76
+
77
+ :class:`CachedSyncmerSelector`
78
+
79
+ .. grid-item::
80
+ :padding: 2
81
+ :columns: 4
82
+
83
+ Mincode
84
+
85
+ :class:`MincodeSelector`
86
+
87
+
88
+ .. grid-item::
89
+ :padding: 2
90
+ :outline:
91
+ :columns: 12
92
+
93
+ .. grid::
94
+ :margin: 0
95
+
96
+ .. grid-item::
97
+ :padding: 2
98
+ :columns: 12
99
+
100
+ **k-mer indexing and matching**
101
+
102
+ .. grid-item::
103
+ :padding: 2
104
+ :columns: 6
105
+
106
+ Perfect hashing
107
+
108
+ :class:`KmerTable`
109
+
110
+ .. grid-item::
111
+ :padding: 2
112
+ :columns: 6
113
+
114
+ Space-efficient hashing
115
+
116
+ :class:`BucketKmerTable`
117
+
118
+ :func:`bucket_number()`
119
+
120
+
121
+ .. grid-item::
122
+ :padding: 2
123
+ :outline:
124
+ :columns: 12
125
+
126
+ .. grid::
127
+ :margin: 0
128
+
129
+ .. grid-item::
130
+ :padding: 2
131
+ :columns: 12
132
+
133
+ **Ungapped seed extension**
134
+
135
+ :class:`align_local_ungapped()`
136
+
137
+
138
+ .. grid-item::
139
+ :padding: 2
140
+ :outline:
141
+ :columns: 12
142
+
143
+ .. grid::
144
+ :margin: 0
145
+
146
+ .. grid-item::
147
+ :padding: 2
148
+ :columns: 12
149
+
150
+ **Gapped alignment**
151
+
152
+ .. grid-item::
153
+ :padding: 2
154
+ :columns: 6
155
+
156
+ Banded local/semiglobal alignment
157
+
158
+ :class:`align_banded()`
159
+
160
+ .. grid-item::
161
+ :padding: 2
162
+ :columns: 6
163
+
164
+ Local alignment (*X-drop*)
165
+
166
+ :class:`align_local_gapped()`
167
+
168
+ .. grid-item::
169
+ :padding: 2
170
+ :outline:
171
+ :columns: 12
172
+
173
+ .. grid::
174
+ :margin: 0
175
+
176
+ .. grid-item::
177
+ :padding: 2
178
+ :columns: 12
179
+
180
+ **Significance evaluation**
181
+
182
+ :class:`EValueEstimator`
183
+
184
+ """
185
+
186
+ __name__ = "biotite.sequence.align"
187
+ __author__ = "Patrick Kunzmann"
188
+
189
+ from .alignment import *
190
+ from .banded import *
191
+ from .buckets import *
192
+ from .cigar import *
193
+ from .kmeralphabet import *
194
+ from .kmertable import *
195
+ from .kmersimilarity import *
196
+ from .localgapped import *
197
+ from .localungapped import *
198
+ from .matrix import *
199
+ from .multiple import *
200
+ from .pairwise import *
201
+ from .permutation import *
202
+ from .selector import *
203
+ from .statistics import *
@@ -39,9 +39,9 @@ cdef float32 MAX_FLOAT = np.finfo(np.float32).max
39
39
 
40
40
 
41
41
  class GapSymbol:
42
-
42
+
43
43
  _instance = None
44
-
44
+
45
45
  def __init__(self):
46
46
  if GapSymbol._instance is not None:
47
47
  raise ValueError(
@@ -49,16 +49,16 @@ class GapSymbol:
49
49
  )
50
50
  else:
51
51
  GapSymbol._instance = self
52
-
52
+
53
53
  @staticmethod
54
54
  def instance():
55
55
  if GapSymbol._instance is None:
56
56
  GapSymbol._instance = GapSymbol()
57
57
  return GapSymbol._instance
58
-
58
+
59
59
  def __str__(self):
60
60
  return "-"
61
-
61
+
62
62
  def __hash__(self):
63
63
  return 0
64
64
 
@@ -69,13 +69,13 @@ def align_multiple(sequences, matrix, gap_penalty=-10, terminal_penalty=True,
69
69
  align_multiple(sequences, matrix, gap_penalty=-10,
70
70
  terminal_penalty=True, distances=None,
71
71
  guide_tree=None)
72
-
72
+
73
73
  Perform a multiple sequence alignment using a progressive
74
74
  alignment algorithm. :footcite:`Feng1987`
75
75
 
76
76
  Based on pairwise sequence distances a guide tree is constructed.
77
77
  The sequences are progessively aligned according to the tree,
78
- following the rule 'Once a gap, always a gap'.
78
+ following the rule 'Once a gap, always a gap'.
79
79
 
80
80
  Parameters
81
81
  ----------
@@ -124,7 +124,7 @@ def align_multiple(sequences, matrix, gap_penalty=-10, terminal_penalty=True,
124
124
  distance_matrix : ndarray, shape=(n,n), dtype=float32
125
125
  The pairwise distance matrix used to construct the guide tree.
126
126
  Equal to `distances` if provided.
127
-
127
+
128
128
  Notes
129
129
  -----
130
130
  The similarity to distance conversion is performed according to the
@@ -137,14 +137,14 @@ def align_multiple(sequences, matrix, gap_penalty=-10, terminal_penalty=True,
137
137
  \right)
138
138
 
139
139
  .. math:: S_{a,b}^{max} = \frac{ S_{a,a} + S_{b,b} }{ 2 }
140
-
140
+
141
141
  .. math:: S_{a,b}^{rand} = \frac{1}{L_{a,b}}
142
142
  \left(
143
143
  \sum_{x \in \Omega} \sum_{y \in \Omega}
144
144
  s_{x,y} \cdot N_a(x) \cdot N_b(y)
145
145
  \right)
146
146
  + N_{a,b}^{open} \cdot p^{open} + N_{a,b}^{ext} \cdot p^{ext}
147
-
147
+
148
148
  :math:`D_{a,b}` - The distance between the sequences *a* and *b*.
149
149
 
150
150
  :math:`S_{a,b}` - The similarity score between the sequences *a* and *b*.
@@ -164,17 +164,17 @@ def align_multiple(sequences, matrix, gap_penalty=-10, terminal_penalty=True,
164
164
 
165
165
  In rare cases of extremely unrelated sequences, :math:`S_{a,b}`
166
166
  can be lower than :math:`S_{a,b}^{rand}`.
167
- In this case the logaritmus cannot be calculated and a
167
+ In this case the logarithm cannot be calculated and a
168
168
  :class:`ValueError` is raised.
169
169
 
170
170
  References
171
171
  ----------
172
-
172
+
173
173
  .. footbibliography::
174
174
 
175
175
  Examples
176
176
  --------
177
-
177
+
178
178
  >>> seq1 = ProteinSequence("BIQTITE")
179
179
  >>> seq2 = ProteinSequence("TITANITE")
180
180
  >>> seq3 = ProteinSequence("BISMITE")
@@ -232,7 +232,7 @@ def align_multiple(sequences, matrix, gap_penalty=-10, terminal_penalty=True,
232
232
  else:
233
233
  # Assure that every node in the guide tree is binary
234
234
  guide_tree = as_binary(guide_tree)
235
-
235
+
236
236
  # Create new matrix with neutral gap symbol
237
237
  gap_symbol = GapSymbol.instance()
238
238
  new_alphabet = Alphabet(
@@ -275,7 +275,7 @@ def align_multiple(sequences, matrix, gap_penalty=-10, terminal_penalty=True,
275
275
  ]
276
276
  for i in range(len(aligned_seqs)):
277
277
  aligned_seqs[i].code = aligned_seq_codes[i]
278
-
278
+
279
279
  # Reorder alignmets into original alignemnt
280
280
  new_order = np.argsort(order)
281
281
  aligned_seqs = [aligned_seqs[pos] for pos in new_order]
@@ -290,7 +290,7 @@ def _get_distance_matrix(CodeType[:] _T, sequences, matrix,
290
290
  Create all pairwise alignments for the given sequences and use the
291
291
  method proposed by Feng & Doolittle to calculate the pairwise
292
292
  distance matrix
293
-
293
+
294
294
  Parameters
295
295
  ----------
296
296
  _T : ndarray, dtype=VARAIBLE
@@ -306,7 +306,7 @@ def _get_distance_matrix(CodeType[:] _T, sequences, matrix,
306
306
  terminal_penalty : bool
307
307
  Whether to or not count terminal gap penalties for the
308
308
  alignments.
309
-
309
+
310
310
  Returns
311
311
  -------
312
312
  distances : ndarray, shape=(n,n), dtype=float32
@@ -332,7 +332,7 @@ def _get_distance_matrix(CodeType[:] _T, sequences, matrix,
332
332
  )[0]
333
333
  scores[i,j] = alignment.score
334
334
  alignments[i,j] = alignment
335
-
335
+
336
336
  ### Distance calculation from similarity scores ###
337
337
  # Calculate the occurences of each symbol code in each sequence
338
338
  # This is used later for the random score
@@ -364,7 +364,7 @@ def _get_distance_matrix(CodeType[:] _T, sequences, matrix,
364
364
  cdef CodeType[:] seq_code1, seq_code2
365
365
  cdef CodeType code1, code2
366
366
  cdef float32 score_rand, score_max
367
-
367
+
368
368
  # Calculate distance
369
369
  # i and j are indicating the alignment between the sequences i and j
370
370
  for i in range(scores_v.shape[0]):
@@ -405,14 +405,14 @@ def _count_gaps(int64[:,:] trace_v, bint terminal_penalty):
405
405
  """
406
406
  Count the number of gap openings and gap extensions in an alignment
407
407
  trace.
408
-
408
+
409
409
  Parameters
410
410
  ----------
411
411
  trace_v : ndarary, shape=(n,2), dtype=int
412
412
  The alignemnt trace.
413
413
  terminal_penalty : bool
414
414
  Whether to or not count terminal gap penalties.
415
-
415
+
416
416
  Returns
417
417
  -------
418
418
  gap_open_count, gap_ext_count: int
@@ -440,7 +440,7 @@ def _count_gaps(int64[:,:] trace_v, bint terminal_penalty):
440
440
  if start_index == -1 or stop_index == -1:
441
441
  return 0, 0
442
442
  trace_v = trace_v[start_index : stop_index]
443
-
443
+
444
444
  if trace_v[0,0] == -1:
445
445
  gap_open_count += 1
446
446
  if trace_v[0,1] == -1:
@@ -471,7 +471,7 @@ def _progressive_align(CodeType[:] _T, sequences, tree_node,
471
471
  The gaps inserted in this pairwise alignment are also inserted
472
472
  into all other sequences in the respective sub-MSA at the same
473
473
  position.
474
-
474
+
475
475
  Parameters
476
476
  ----------
477
477
  _T : ndarray, dtype=VARAIBLE
@@ -490,13 +490,13 @@ def _progressive_align(CodeType[:] _T, sequences, tree_node,
490
490
  matrix : SubstitutionMatrix
491
491
  The substitution matrix used for the alignments.
492
492
  gap_symbol_code : int
493
- The symbol code for the gap symbol.
493
+ The symbol code for the gap symbol.
494
494
  gap_penalty : int or tuple(int, int)
495
495
  A linear or affine gap penalty for the alignments.
496
496
  terminal_penalty : bool
497
497
  Whether to or not count terminal gap penalties for the
498
498
  alignments.
499
-
499
+
500
500
  Returns
501
501
  -------
502
502
  order : ndarray, shape=(m,), dtype=int
@@ -515,7 +515,7 @@ def _progressive_align(CodeType[:] _T, sequences, tree_node,
515
515
  cdef int32[:] indices1_v, indices2_v
516
516
  cdef np.ndarray incides1, incides2
517
517
  cdef list aligned_seqs1, aligned_seqs2
518
-
518
+
519
519
  if tree_node.is_leaf():
520
520
  # Child node -> Cannot do an alignment
521
521
  # -> Just return the sequence corresponding to the leaf node
@@ -523,7 +523,7 @@ def _progressive_align(CodeType[:] _T, sequences, tree_node,
523
523
  # when neutral gap character is inserted
524
524
  return np.array([tree_node.index], dtype=np.int32), \
525
525
  [sequences[tree_node.index].copy()]
526
-
526
+
527
527
  else:
528
528
  # Multiple alignment of sequences corresponding to both child nodes
529
529
  child1, child2 = tree_node.children
@@ -537,7 +537,7 @@ def _progressive_align(CodeType[:] _T, sequences, tree_node,
537
537
  gap_symbol_code, gap_penalty, terminal_penalty
538
538
  )
539
539
  indices2_v = incides2
540
-
540
+
541
541
  # Find sequence pair with lowest distance
542
542
  dist_min = MAX_FLOAT
543
543
  for i in range(indices1_v.shape[0]):
@@ -554,7 +554,7 @@ def _progressive_align(CodeType[:] _T, sequences, tree_node,
554
554
  gap_penalty, terminal_penalty, max_number=1
555
555
  )[0]
556
556
  # Place neutral gap symbol for position of new gaps
557
- # in both sequence groups
557
+ # in both sequence groups
558
558
  for i in range(len(aligned_seqs1)):
559
559
  seq = aligned_seqs1[i]
560
560
  seq.code = _replace_gaps(
@@ -580,7 +580,7 @@ def _replace_gaps(CodeType[:] _T,
580
580
 
581
581
  The replacement is required by the progressive alignment algorithm
582
582
  to be able to align gapped sequences with each other.
583
-
583
+
584
584
  Parameters
585
585
  ----------
586
586
  _T : ndarray, dtype=VARAIBLE
@@ -592,8 +592,8 @@ def _replace_gaps(CodeType[:] _T,
592
592
  seq_code : ndarary, shape=(n,)
593
593
  The sequence code representing the given sequence.
594
594
  gap_symbol_code : int
595
- The symbol code for the gap symbol.
596
-
595
+ The symbol code for the gap symbol.
596
+
597
597
  Returns
598
598
  -------
599
599
  new_seq_code : ndarary, shape=(m,)
@@ -609,12 +609,12 @@ def _replace_gaps(CodeType[:] _T,
609
609
  partial_trace_v.shape[0], dtype=seq_code.dtype
610
610
  )
611
611
  cdef CodeType[:] new_seq_code_v = new_seq_code
612
-
612
+
613
613
  for i in range(partial_trace_v.shape[0]):
614
614
  index = partial_trace_v[i]
615
615
  if index == -1:
616
616
  new_seq_code_v[i] = gap_symbol_code
617
617
  else:
618
618
  new_seq_code_v[i] = seq_code[index]
619
-
619
+
620
620
  return new_seq_code