b2bTools 3.0.7b2__tar.gz → 3.0.8__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.
Files changed (277) hide show
  1. {b2bTools-3.0.7b2 → b2btools-3.0.8}/PKG-INFO +147 -92
  2. {b2bTools-3.0.7b2 → b2btools-3.0.8}/README.md +96 -41
  3. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/__main__.py +76 -31
  4. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/Io.py +326 -188
  5. b2btools-3.0.8/b2bTools/multipleSeq/Predictor.py +287 -0
  6. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/multipleSeq/msa_core.py +61 -31
  7. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/nmr/shiftCrypt/Predictor.py +8 -1
  8. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/nmr/shiftCrypt/shiftCrypt.py +27 -23
  9. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/nmr/shiftCrypt/shiftcrypt_pkg/utils.py +1 -18
  10. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/requirements.txt +0 -1
  11. b2btools-3.0.8/b2bTools/singleSeq/Agmata/Predictor.py +61 -0
  12. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/Agmata/agmata.py +19 -26
  13. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/Agmata/sources/agmata_source.py +44 -50
  14. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DisoMine/Predictor.py +11 -4
  15. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DisoMine/standalone.py +21 -36
  16. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DisoMine/torch_NN_gru_80AUC_prova.py +170 -59
  17. b2btools-3.0.8/b2bTools/singleSeq/DisoMine/vector_builder/runpsipred_single.py +85 -0
  18. b2btools-3.0.8/b2bTools/singleSeq/DisoMine/vector_builder/vettore_gen.py +142 -0
  19. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/Predictor.py +53 -41
  20. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/EFoldMine/Predictor.py +26 -31
  21. b2btools-3.0.8/b2bTools/singleSeq/PSPer/Constants.py +19 -0
  22. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/PSPer/PSPer.py +21 -30
  23. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/PSPer/Predictor.py +13 -8
  24. b2btools-3.0.8/b2bTools/singleSeq/PSPer/_numpy_hmm.py +199 -0
  25. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/PSPer/hmmer_research/hmmsearch_otf.py +68 -22
  26. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/PSPer/phase_transition_hmm.py +204 -338
  27. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/PSPer/standalone.py +36 -42
  28. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/PSPer/torch_NN_gru_80AUC_prova.py +6 -3
  29. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/Predictor.py +32 -14
  30. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/constants.py +11 -3
  31. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/single_core.py +25 -20
  32. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/wrapper_source/wrapper_utils.py +167 -93
  33. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools.egg-info/PKG-INFO +147 -92
  34. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools.egg-info/SOURCES.txt +1 -0
  35. b2btools-3.0.8/b2bTools.egg-info/requires.txt +66 -0
  36. b2btools-3.0.8/b2bTools_version/versioning.py +2 -0
  37. b2btools-3.0.8/requirements-py310.txt +9 -0
  38. b2btools-3.0.8/requirements-py311.txt +9 -0
  39. b2btools-3.0.8/requirements-py312.txt +9 -0
  40. b2btools-3.0.8/requirements-py37.txt +9 -0
  41. b2btools-3.0.8/requirements-py38.txt +9 -0
  42. b2btools-3.0.8/requirements-py39.txt +9 -0
  43. {b2bTools-3.0.7b2 → b2btools-3.0.8}/setup.py +19 -10
  44. b2bTools-3.0.7b2/b2bTools/multipleSeq/Predictor.py +0 -153
  45. b2bTools-3.0.7b2/b2bTools/singleSeq/Agmata/Predictor.py +0 -53
  46. b2bTools-3.0.7b2/b2bTools/singleSeq/DisoMine/vector_builder/runpsipred_single.py +0 -79
  47. b2bTools-3.0.7b2/b2bTools/singleSeq/DisoMine/vector_builder/vettore_gen.py +0 -139
  48. b2bTools-3.0.7b2/b2bTools/singleSeq/PSPer/Constants.py +0 -22
  49. b2bTools-3.0.7b2/b2bTools.egg-info/requires.txt +0 -80
  50. b2bTools-3.0.7b2/b2bTools_version/versioning.py +0 -2
  51. b2bTools-3.0.7b2/requirements-py310.txt +0 -12
  52. b2bTools-3.0.7b2/requirements-py311.txt +0 -10
  53. b2bTools-3.0.7b2/requirements-py312.txt +0 -10
  54. b2bTools-3.0.7b2/requirements-py37.txt +0 -12
  55. b2bTools-3.0.7b2/requirements-py38.txt +0 -12
  56. b2bTools-3.0.7b2/requirements-py39.txt +0 -12
  57. {b2bTools-3.0.7b2 → b2btools-3.0.8}/MANIFEST.in +0 -0
  58. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/__init__.py +0 -0
  59. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/Util.py +0 -0
  60. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/__init__.py +0 -0
  61. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/bmrb/File.py +0 -0
  62. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/bmrb/SaveFrame.py +0 -0
  63. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/bmrb/TagTable.py +0 -0
  64. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/bmrb/Text.py +0 -0
  65. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/bmrb/Utils.py +0 -0
  66. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/bmrb/__init__.py +0 -0
  67. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/bmrb/base.py +0 -0
  68. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/__init__.py +0 -0
  69. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/format/__init__.py +0 -0
  70. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/format/general/Constants.py +0 -0
  71. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/format/general/Util.py +0 -0
  72. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/format/general/__init__.py +0 -0
  73. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/format/general/formatIO.py +0 -0
  74. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/format/nmrStar/__init__.py +0 -0
  75. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/format/nmrStar/chemShiftsIO.py +0 -0
  76. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/format/nmrStar/constants.py +0 -0
  77. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/format/nmrStar/coordinatesIO.py +0 -0
  78. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/format/nmrStar/csaIO.py +0 -0
  79. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/format/nmrStar/dihedralConstraintsIO.py +0 -0
  80. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/format/nmrStar/distanceConstraintsIO.py +0 -0
  81. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/format/nmrStar/generalIO.py +0 -0
  82. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/format/nmrStar/hBondConstraintsIO.py +0 -0
  83. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/format/nmrStar/hExchProtectionIO.py +0 -0
  84. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/format/nmrStar/hExchRateIO.py +0 -0
  85. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/format/nmrStar/hetNoeIO.py +0 -0
  86. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/format/nmrStar/jCouplingIO.py +0 -0
  87. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/format/nmrStar/nmrStarDict.py +0 -0
  88. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/format/nmrStar/orderParamIO.py +0 -0
  89. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/format/nmrStar/peopleAndCitationsIO.py +0 -0
  90. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/format/nmrStar/projectIO.py +0 -0
  91. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/format/nmrStar/rdcConstraintsIO.py +0 -0
  92. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/format/nmrStar/rdcIO.py +0 -0
  93. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/format/nmrStar/sequenceIO.py +0 -0
  94. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/format/nmrStar/t1RelaxIO.py +0 -0
  95. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/format/nmrStar/t1RhoRelaxIO.py +0 -0
  96. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/format/nmrStar/t2RelaxIO.py +0 -0
  97. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/format/nmrStar/util.py +0 -0
  98. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/general/Constants.py +0 -0
  99. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/general/__init__.py +0 -0
  100. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/universal/Constants.py +0 -0
  101. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/universal/Io.py +0 -0
  102. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/universal/Util.py +0 -0
  103. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/ccpn/universal/__init__.py +0 -0
  104. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/parsers/__init__.py +0 -0
  105. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/parsers/alignments.py +0 -0
  106. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/parsers/fasta.py +0 -0
  107. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/parsers/nef.py +0 -0
  108. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/parsers/nmr_star.py +0 -0
  109. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/general/plotter.py +0 -0
  110. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/multipleSeq/__init__.py +0 -0
  111. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/multipleSeq/mapToMSA.py +0 -0
  112. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/multipleSeq/msa_plot.py +0 -0
  113. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/multipleSeq/msa_quantification.py +0 -0
  114. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/nmr/__init__.py +0 -0
  115. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/nmr/shiftCrypt/__init__.py +0 -0
  116. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/nmr/shiftCrypt/alignment.py +0 -0
  117. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/nmr/shiftCrypt/models/__init__.py +0 -0
  118. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/nmr/shiftCrypt/models/new_NH.mtorch +0 -0
  119. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/nmr/shiftCrypt/models/new_NH_p27.mtorch +0 -0
  120. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/nmr/shiftCrypt/models/new_NH_p37.mtorch +0 -0
  121. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/nmr/shiftCrypt/models/new_commons.mtorch +0 -0
  122. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/nmr/shiftCrypt/models/new_commons_p27.mtorch +0 -0
  123. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/nmr/shiftCrypt/models/new_commons_p37.mtorch +0 -0
  124. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/nmr/shiftCrypt/models/new_full.mtorch +0 -0
  125. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/nmr/shiftCrypt/models/new_full_p27.mtorch +0 -0
  126. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/nmr/shiftCrypt/models/new_full_p37.mtorch +0 -0
  127. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/nmr/shiftCrypt/shiftcrypt_pkg/__init__.py +0 -0
  128. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/nmr/shiftCrypt/shiftcrypt_pkg/autoenc_solo4.py +0 -0
  129. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/nmr/shiftCrypt/shiftcrypt_pkg/autoenchoder_standalone_version.py +0 -0
  130. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/nmr/shiftCrypt/shiftcrypt_pkg/chemical_shifts_custom_model.py +0 -0
  131. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/nmr/shiftCrypt/shiftcrypt_pkg/parser.py +0 -0
  132. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/nmr/shiftCrypt/shiftcrypt_pkg/shiftcrypt_parser.py +0 -0
  133. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/requirements-dev.txt +0 -0
  134. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/Agmata/__init__.py +0 -0
  135. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/Agmata/bin/__init__.py +0 -0
  136. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/Agmata/bin/agmata_c_final_linux +0 -0
  137. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/Agmata/bin/agmata_c_final_mac +0 -0
  138. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/Agmata/marshalled/__init__.py +0 -0
  139. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/Agmata/marshalled/agmata_discriminative_converted.m +0 -0
  140. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/Agmata/marshalled/discriminative.m +0 -0
  141. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/Agmata/marshalled/model_parameters.m +0 -0
  142. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/Agmata/sources/__init__.py +0 -0
  143. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DisoMine/__init__.py +0 -0
  144. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DisoMine/disomine_converted.mtorch +0 -0
  145. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DisoMine/gru80_final.mtorch +0 -0
  146. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DisoMine/vector_builder/.DS_Store +0 -0
  147. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DisoMine/vector_builder/__init__.py +0 -0
  148. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DisoMine/vector_builder/psipred/.DS_Store +0 -0
  149. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DisoMine/vector_builder/psipred/__init__.py +0 -0
  150. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DisoMine/vector_builder/psipred/bin/__init__.py +0 -0
  151. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DisoMine/vector_builder/psipred/bin/linux/__init__.py +0 -0
  152. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DisoMine/vector_builder/psipred/bin/linux/chkparse +0 -0
  153. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DisoMine/vector_builder/psipred/bin/linux/psipass2 +0 -0
  154. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DisoMine/vector_builder/psipred/bin/linux/psipred +0 -0
  155. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DisoMine/vector_builder/psipred/bin/linux/seq2mtx +0 -0
  156. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DisoMine/vector_builder/psipred/bin/osx/__init__.py +0 -0
  157. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DisoMine/vector_builder/psipred/bin/osx/chkparse +0 -0
  158. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DisoMine/vector_builder/psipred/bin/osx/psipass2 +0 -0
  159. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DisoMine/vector_builder/psipred/bin/osx/psipred +0 -0
  160. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DisoMine/vector_builder/psipred/bin/osx/seq2mtx +0 -0
  161. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DisoMine/vector_builder/psipred/data/__init__.py +0 -0
  162. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DisoMine/vector_builder/psipred/data/weights.dat +0 -0
  163. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DisoMine/vector_builder/psipred/data/weights.dat2 +0 -0
  164. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DisoMine/vector_builder/psipred/data/weights.dat3 +0 -0
  165. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DisoMine/vector_builder/psipred/data/weights_p2.dat +0 -0
  166. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DisoMine/vector_builder/psipred/data/weights_s.dat +0 -0
  167. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DisoMine/vector_builder/psipred/data/weights_s.dat2 +0 -0
  168. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DisoMine/vector_builder/psipred/data/weights_s.dat3 +0 -0
  169. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/__init__.py +0 -0
  170. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/__init__.py +0 -0
  171. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/backbone/README.txt +0 -0
  172. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/backbone/__init__.py +0 -0
  173. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/backbone/read11.model.pkl.bz2 +0 -0
  174. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/backbone/read13.model.pkl.bz2 +0 -0
  175. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/backbone/read15.model.pkl.bz2 +0 -0
  176. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/backbone/read17.model.pkl.bz2 +0 -0
  177. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/backbone/read19.model.pkl.bz2 +0 -0
  178. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/backbone/read21.model.pkl.bz2 +0 -0
  179. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/backbone/read23.model.pkl.bz2 +0 -0
  180. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/backbone/read25.model.pkl.bz2 +0 -0
  181. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/backbone/read3.model.pkl.bz2 +0 -0
  182. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/backbone/read5.model.pkl.bz2 +0 -0
  183. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/backbone/read51.model.pkl.bz2 +0 -0
  184. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/backbone/read7.model.pkl.bz2 +0 -0
  185. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/backbone/read9.model.pkl.bz2 +0 -0
  186. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/coil/__init__.py +0 -0
  187. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/coil/read11.model_new.pkl.bz2 +0 -0
  188. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/coil/read13.model_new.pkl.bz2 +0 -0
  189. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/coil/read15.model_new.pkl.bz2 +0 -0
  190. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/coil/read17.model_new.pkl.bz2 +0 -0
  191. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/coil/read19.model_new.pkl.bz2 +0 -0
  192. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/coil/read25.model_new.pkl.bz2 +0 -0
  193. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/coil/read3.model_new.pkl.bz2 +0 -0
  194. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/coil/read38.model_new.pkl.bz2 +0 -0
  195. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/coil/read5.model_new.pkl.bz2 +0 -0
  196. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/coil/read51.model_new.pkl.bz2 +0 -0
  197. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/coil/read7.model_new.pkl.bz2 +0 -0
  198. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/coil/read9.model_new.pkl.bz2 +0 -0
  199. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/helix/__init__.py +0 -0
  200. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/helix/read11.model_new.pkl.bz2 +0 -0
  201. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/helix/read13.model_new.pkl.bz2 +0 -0
  202. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/helix/read15.model_new.pkl.bz2 +0 -0
  203. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/helix/read17.model_new.pkl.bz2 +0 -0
  204. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/helix/read19.model_new.pkl.bz2 +0 -0
  205. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/helix/read25.model_new.pkl.bz2 +0 -0
  206. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/helix/read3.model_new.pkl.bz2 +0 -0
  207. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/helix/read38.model_new.pkl.bz2 +0 -0
  208. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/helix/read5.model_new.pkl.bz2 +0 -0
  209. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/helix/read51.model_new.pkl.bz2 +0 -0
  210. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/helix/read7.model_new.pkl.bz2 +0 -0
  211. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/helix/read9.model_new.pkl.bz2 +0 -0
  212. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/ppII/__init__.py +0 -0
  213. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/ppII/read11.model_new.pkl.bz2 +0 -0
  214. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/ppII/read13.model_new.pkl.bz2 +0 -0
  215. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/ppII/read15.model_new.pkl.bz2 +0 -0
  216. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/ppII/read17.model_new.pkl.bz2 +0 -0
  217. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/ppII/read19.model_new.pkl.bz2 +0 -0
  218. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/ppII/read25.model_new.pkl.bz2 +0 -0
  219. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/ppII/read3.model_new.pkl.bz2 +0 -0
  220. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/ppII/read38.model_new.pkl.bz2 +0 -0
  221. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/ppII/read5.model_new.pkl.bz2 +0 -0
  222. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/ppII/read51.model_new.pkl.bz2 +0 -0
  223. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/ppII/read7.model_new.pkl.bz2 +0 -0
  224. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/ppII/read9.model_new.pkl.bz2 +0 -0
  225. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/sheet/__init__.py +0 -0
  226. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/sheet/read11.model_new.pkl.bz2 +0 -0
  227. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/sheet/read13.model_new.pkl.bz2 +0 -0
  228. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/sheet/read15.model_new.pkl.bz2 +0 -0
  229. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/sheet/read17.model_new.pkl.bz2 +0 -0
  230. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/sheet/read19.model_new.pkl.bz2 +0 -0
  231. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/sheet/read25.model_new.pkl.bz2 +0 -0
  232. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/sheet/read3.model_new.pkl.bz2 +0 -0
  233. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/sheet/read38.model_new.pkl.bz2 +0 -0
  234. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/sheet/read5.model_new.pkl.bz2 +0 -0
  235. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/sheet/read51.model_new.pkl.bz2 +0 -0
  236. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/sheet/read7.model_new.pkl.bz2 +0 -0
  237. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/sheet/read9.model_new.pkl.bz2 +0 -0
  238. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/sidechain/README.txt +0 -0
  239. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/sidechain/__init__.py +0 -0
  240. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/sidechain/read11.model.pkl.bz2 +0 -0
  241. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/sidechain/read13.model.pkl.bz2 +0 -0
  242. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/sidechain/read15.model.pkl.bz2 +0 -0
  243. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/sidechain/read17.model.pkl.bz2 +0 -0
  244. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/sidechain/read19.model.pkl.bz2 +0 -0
  245. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/sidechain/read21.model.pkl.bz2 +0 -0
  246. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/sidechain/read23.model.pkl.bz2 +0 -0
  247. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/sidechain/read25.model.pkl.bz2 +0 -0
  248. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/sidechain/read3.model.pkl.bz2 +0 -0
  249. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/sidechain/read5.model.pkl.bz2 +0 -0
  250. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/sidechain/read51.model.pkl.bz2 +0 -0
  251. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/sidechain/read7.model.pkl.bz2 +0 -0
  252. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/DynaMine/models/sidechain/read9.model.pkl.bz2 +0 -0
  253. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/EFoldMine/__init__.py +0 -0
  254. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/EFoldMine/models/__init__.py +0 -0
  255. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/EFoldMine/models/efModelRBF2016.proba.cPickle +0 -0
  256. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/EFoldMine/models/efoldmine_converted.cPickle +0 -0
  257. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/PSPer/__init__.py +0 -0
  258. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/PSPer/hmmer_research/PF00270_DEAD_seed.txt +0 -0
  259. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/PSPer/hmmer_research/__init__.py +0 -0
  260. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/PSPer/hmmer_research/phase_trans.hmm +0 -0
  261. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/PSPer/hmmer_research/rrm_align.pfam +0 -0
  262. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/PSPer/marshalled/__init__.py +0 -0
  263. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/PSPer/marshalled/emissions.m +0 -0
  264. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/PSPer/marshalled/scaler.m +0 -0
  265. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/PSPer/marshalled/scaler_new.m +0 -0
  266. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/PSPer/source/__init__.py +0 -0
  267. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/PSPer/source/utils.py +0 -0
  268. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/README.md +0 -0
  269. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/singleSeq/__init__.py +0 -0
  270. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/web_predictor.py +0 -0
  271. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/wrapper_source/__init__.py +0 -0
  272. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools/wrapper_source/metadata.py +0 -0
  273. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools.egg-info/dependency_links.txt +0 -0
  274. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools.egg-info/entry_points.txt +0 -0
  275. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools.egg-info/top_level.txt +0 -0
  276. {b2bTools-3.0.7b2 → b2btools-3.0.8}/b2bTools_version/__init__.py +0 -0
  277. {b2bTools-3.0.7b2 → b2btools-3.0.8}/setup.cfg +0 -0
@@ -1,15 +1,15 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: b2bTools
3
- Version: 3.0.7b2
3
+ Version: 3.0.8
4
4
  Summary: bio2Byte software suite to predict protein biophysical properties from their amino-acid sequences
5
5
  Home-page: https://bio2byte.be
6
6
  Author: Wim Vranken
7
7
  Author-email: Wim.Vranken@vub.be
8
- Maintainer: Jose Gavalda-Garcia, Adrian Diaz, Wim Vranken
9
- Maintainer-email: jose.gavalda.garcia@vub.be, adrian.diaz@vub.be, wim.vranken@vub.be
8
+ Maintainer: Adrián Díaz, Sophie-Luise Heidig, Wim Vranken
9
+ Maintainer-email: bio2byte@vub.be
10
10
  License: OSI Approved :: GNU General Public License v3 (GPLv3)
11
11
  Project-URL: Documentation, https://bio2byte.be/b2btools/package-documentation
12
- Project-URL: HTML interface, https://bio2byte.be/b2btools
12
+ Project-URL: HTML interface, https://bio2byte.be/online_predictors
13
13
  Keywords: bio2byte,b2bTools,biology,bioinformatics,bio-informatics,fasta,proteins,protein-folding
14
14
  Classifier: Natural Language :: English
15
15
  Classifier: Programming Language :: Python :: 3.7
@@ -29,74 +29,74 @@ Classifier: Intended Audience :: Education
29
29
  Classifier: Development Status :: 5 - Production/Stable
30
30
  Requires-Python: >=3.7, <3.13
31
31
  Description-Content-Type: text/markdown
32
- Requires-Dist: biopython~=1.81; python_version == "3.7"
33
- Requires-Dist: Cython~=0.29.37; python_version == "3.7"
34
- Requires-Dist: matplotlib~=3.5.3; python_version == "3.7"
32
+ Requires-Dist: biopython~=1.79; python_version == "3.7"
33
+ Requires-Dist: matplotlib~=3.5; python_version == "3.7"
35
34
  Requires-Dist: numpy~=1.21; python_version == "3.7"
36
35
  Requires-Dist: pandas~=1.1; python_version == "3.7"
37
- Requires-Dist: pomegranate~=0.14; python_version == "3.7"
38
36
  Requires-Dist: requests~=2.0; python_version == "3.7"
39
37
  Requires-Dist: scikit-learn~=1.0.2; python_version == "3.7"
40
- Requires-Dist: scipy==1.7.3; python_version == "3.7"
41
- Requires-Dist: torch==1.13.1; python_version == "3.7"
42
- Requires-Dist: torchvision==0.14.1; python_version == "3.7"
38
+ Requires-Dist: scipy~=1.7.3; python_version == "3.7"
39
+ Requires-Dist: torch~=1.13.0; python_version == "3.7"
43
40
  Requires-Dist: urllib3~=1.26.6; python_version == "3.7"
44
41
  Requires-Dist: biopython~=1.81; python_version == "3.8"
45
- Requires-Dist: Cython~=0.29.37; python_version == "3.8"
46
- Requires-Dist: matplotlib~=3.5.3; python_version == "3.8"
42
+ Requires-Dist: matplotlib~=3.5; python_version == "3.8"
47
43
  Requires-Dist: numpy~=1.24; python_version == "3.8"
48
- Requires-Dist: pandas~=1.1; python_version == "3.8"
49
- Requires-Dist: pomegranate~=0.14; python_version == "3.8"
44
+ Requires-Dist: pandas<2,~=1.1; python_version == "3.8"
50
45
  Requires-Dist: requests~=2.0; python_version == "3.8"
51
46
  Requires-Dist: scikit-learn~=1.0.2; python_version == "3.8"
52
- Requires-Dist: scipy==1.10.1; python_version == "3.8"
53
- Requires-Dist: torch==1.13.1; python_version == "3.8"
54
- Requires-Dist: torchvision==0.14.1; python_version == "3.8"
55
- Requires-Dist: urllib3~=1.26.6; python_version == "3.8"
47
+ Requires-Dist: scipy~=1.10.1; python_version == "3.8"
48
+ Requires-Dist: torch~=1.13; python_version == "3.8"
49
+ Requires-Dist: urllib3~=1.26; python_version == "3.8"
56
50
  Requires-Dist: biopython~=1.81; python_version == "3.9"
57
- Requires-Dist: Cython~=0.29.37; python_version == "3.9"
58
- Requires-Dist: matplotlib~=3.5.3; python_version == "3.9"
51
+ Requires-Dist: matplotlib~=3.9.4; python_version == "3.9"
59
52
  Requires-Dist: numpy~=1.24; python_version == "3.9"
60
- Requires-Dist: pandas~=1.1; python_version == "3.9"
61
- Requires-Dist: pomegranate~=0.14; python_version == "3.9"
53
+ Requires-Dist: pandas<2,~=1.1; python_version == "3.9"
62
54
  Requires-Dist: requests~=2.0; python_version == "3.9"
63
55
  Requires-Dist: scikit-learn~=1.0.2; python_version == "3.9"
64
- Requires-Dist: scipy==1.10.1; python_version == "3.9"
65
- Requires-Dist: torch==1.13.1; python_version == "3.9"
66
- Requires-Dist: torchvision==0.14.1; python_version == "3.9"
67
- Requires-Dist: urllib3~=1.26.6; python_version == "3.9"
56
+ Requires-Dist: scipy~=1.10.1; python_version == "3.9"
57
+ Requires-Dist: torch~=1.13; python_version == "3.9"
58
+ Requires-Dist: urllib3~=1.26; python_version == "3.9"
68
59
  Requires-Dist: biopython~=1.83; python_version == "3.10"
69
- Requires-Dist: Cython~=0.29.37; python_version == "3.10"
70
- Requires-Dist: matplotlib~=3.5.3; python_version == "3.10"
60
+ Requires-Dist: matplotlib~=3.5; python_version == "3.10"
71
61
  Requires-Dist: numpy~=1.26.4; python_version == "3.10"
72
- Requires-Dist: pandas~=1.5.3; python_version == "3.10"
73
- Requires-Dist: pomegranate~=0.14; python_version == "3.10"
74
- Requires-Dist: requests~=2.31.0; python_version == "3.10"
62
+ Requires-Dist: pandas~=2.0; python_version == "3.10"
63
+ Requires-Dist: requests~=2.31; python_version == "3.10"
75
64
  Requires-Dist: scikit-learn~=1.0.2; python_version == "3.10"
76
65
  Requires-Dist: scipy~=1.12.0; python_version == "3.10"
77
- Requires-Dist: torch~=1.13.1; python_version == "3.10"
78
- Requires-Dist: torchvision~=0.14.1; python_version == "3.10"
79
- Requires-Dist: urllib3~=1.26.6; python_version == "3.10"
66
+ Requires-Dist: torch~=1.13; python_version == "3.10"
67
+ Requires-Dist: urllib3~=1.26; python_version == "3.10"
80
68
  Requires-Dist: biopython~=1.83; python_version == "3.11"
81
- Requires-Dist: matplotlib~=3.8.3; python_version == "3.11"
69
+ Requires-Dist: matplotlib~=3.8; python_version == "3.11"
82
70
  Requires-Dist: numpy~=1.26.4; python_version == "3.11"
83
- Requires-Dist: pandas~=1.5.3; python_version == "3.11"
84
- Requires-Dist: pomegranate~=0.14.9; python_version == "3.11"
85
- Requires-Dist: requests~=2.31.0; python_version == "3.11"
86
- Requires-Dist: scikit-learn~=1.4.1.post1; python_version == "3.11"
71
+ Requires-Dist: pandas~=2.0; python_version == "3.11"
72
+ Requires-Dist: requests~=2.31; python_version == "3.11"
73
+ Requires-Dist: scikit-learn~=1.1.0; python_version == "3.11"
87
74
  Requires-Dist: scipy~=1.12.0; python_version == "3.11"
88
75
  Requires-Dist: torch~=2.2.0; python_version == "3.11"
89
- Requires-Dist: urllib3~=1.26.18; python_version == "3.11"
90
- Requires-Dist: biopython~=1.83; python_version == "3.12"
91
- Requires-Dist: matplotlib~=3.8.3; python_version == "3.12"
92
- Requires-Dist: numpy~=1.26.4; python_version == "3.12"
93
- Requires-Dist: pandas~=2.1.0; python_version == "3.12"
94
- Requires-Dist: pomegranate~=0.14.9; python_version == "3.12"
95
- Requires-Dist: requests~=2.31.0; python_version == "3.12"
96
- Requires-Dist: scikit-learn~=1.4.1.post1; python_version == "3.12"
76
+ Requires-Dist: urllib3~=1.26; python_version == "3.11"
77
+ Requires-Dist: biopython~=1.87.0; python_version == "3.12"
78
+ Requires-Dist: matplotlib~=3.10.9; python_version == "3.12"
79
+ Requires-Dist: numpy~=1.26.0; python_version == "3.12"
80
+ Requires-Dist: pandas~=2.2.3; python_version == "3.12"
81
+ Requires-Dist: requests~=2.33.1; python_version == "3.12"
82
+ Requires-Dist: scikit-learn~=1.4.0; python_version == "3.12"
97
83
  Requires-Dist: scipy~=1.12.0; python_version == "3.12"
98
- Requires-Dist: torch~=2.2.0; python_version == "3.12"
99
- Requires-Dist: urllib3~=1.26.6; python_version == "3.12"
84
+ Requires-Dist: torch~=2.2.2; python_version == "3.12"
85
+ Requires-Dist: urllib3~=1.26.20; python_version == "3.12"
86
+ Dynamic: author
87
+ Dynamic: author-email
88
+ Dynamic: classifier
89
+ Dynamic: description
90
+ Dynamic: description-content-type
91
+ Dynamic: home-page
92
+ Dynamic: keywords
93
+ Dynamic: license
94
+ Dynamic: maintainer
95
+ Dynamic: maintainer-email
96
+ Dynamic: project-url
97
+ Dynamic: requires-dist
98
+ Dynamic: requires-python
99
+ Dynamic: summary
100
100
 
101
101
  <h1 align="center">
102
102
  <a href="bio2byte.be/b2btools" target="_blank" ref="noreferrer noopener">
@@ -142,7 +142,13 @@ To install the latest version of this package:
142
142
  $ pip install b2bTools
143
143
  ```
144
144
 
145
- **⚠️ Important notes:** [Hmmer](http://hmmer.org) and [T-Coffee](https://tcoffee.crg.eu) are required to run several features. Please install them following their official guidelines.
145
+ Supported Python versions: `>=3.7, <3.13` (Python 3.7, 3.8, 3.9, 3.10, 3.11 and 3.12).
146
+
147
+ **⚠️ Important notes:** [HMMER](http://hmmer.org) is required by PSPer, and [T-Coffee](https://tcoffee.crg.eu) is required by alignment-generation workflows. Please install them following their official guidelines.
148
+
149
+ **Performance notes:** DisoMine can use Apple MPS acceleration for the PyTorch inference step when running on supported Apple hardware. This is disabled by default because CPU execution is the deterministic baseline and is safer when multiple Python environments run predictions in parallel. From the command line, enable it with `--enable-mps`; Python API usage remains CPU-based unless acceleration is enabled by the CLI entrypoint.
150
+
151
+ PSPer calls HMMER through `subprocess` and automatically passes a bounded `--cpu` value based on available CPU cores, capped to avoid oversubscribing shared machines. Predictor runtime differs substantially by tool and input size; see [PREDICTORS.md](PREDICTORS.md) for the dependency order, qualitative runtime ranking, and implementation notes.
146
152
 
147
153
  ### Single Sequence predictions
148
154
 
@@ -401,6 +407,16 @@ $ pip install b2bTools
401
407
  !pip install b2bTools
402
408
  ```
403
409
 
410
+ ### Development and QA
411
+
412
+ For local development from the repository root, run the maintained pytest suite through:
413
+
414
+ ```console
415
+ $ make test
416
+ ```
417
+
418
+ The test command uses explicit test directories and disables third-party pytest plugin autoloading for faster, more predictable collection. The full suite intentionally avoids `pytest-xdist` parallelism because predictor tests call external binaries and runtime caches that must remain deterministic across Python 3.7-3.12.
419
+
404
420
  ## 📦 Package content
405
421
 
406
422
  ### 🔍 General Tools
@@ -481,6 +497,9 @@ Given a predictor might be built on top of other, it is usual to get more output
481
497
  | EfoldMine | Dynamine |
482
498
  | Disomine | EfoldMine, Dynamine |
483
499
  | AgMata | EfoldMine, Dynamine |
500
+ | PSPer | Disomine, EfoldMine, Dynamine |
501
+
502
+ Requested predictors are executed in dependency order, so asking for a downstream predictor can also add prerequisite outputs. For example, requesting PSPer also produces the DynaMine, EFoldMine and DisoMine predictions it needs.
484
503
 
485
504
  These are all the available options to use inside the tools array parameter:
486
505
 
@@ -505,7 +524,7 @@ The next table shows all the available predictor values by predictor:
505
524
  | EfoldMine | `"earlyFolding"` | `[Float]` |
506
525
  | Disomine | `"disoMine"` | `[Float]` |
507
526
  | AgMata | `"agmata"` | `[Float]` |
508
- | PSPer | `"viterbi"` | `[Float]` |
527
+ | PSPer | `"viterbi"` | `[String]` |
509
528
  | PSPer | `"complexity"` | `[Float]` |
510
529
  | PSPer | `"tyr"` | `[Float]` |
511
530
  | PSPer | `"arg"` | `[Float]` |
@@ -529,47 +548,45 @@ multiple_seq.get_all_predictions_msa_distrib()['results']
529
548
  | EfoldMine | `"earlyFolding"` | `['median', 'thirdQuartile', 'firstQuartile', 'topOutlier', 'bottomOutlier']` |
530
549
  | Disomine | `"disoMine"` | `['median', 'thirdQuartile', 'firstQuartile', 'topOutlier', 'bottomOutlier']` |
531
550
  | AgMata | `"agmata"` | `['median', 'thirdQuartile', 'firstQuartile', 'topOutlier', 'bottomOutlier']` |
532
- | PSPer | `"viterbi"` | `['median', 'thirdQuartile', 'firstQuartile', 'topOutlier', 'bottomOutlier']` |
533
551
  | PSPer | `"complexity"` | `['median', 'thirdQuartile', 'firstQuartile', 'topOutlier', 'bottomOutlier']` |
534
552
  | PSPer | `"tyr"` | `['median', 'thirdQuartile', 'firstQuartile', 'topOutlier', 'bottomOutlier']` |
535
553
  | PSPer | `"arg"` | `['median', 'thirdQuartile', 'firstQuartile', 'topOutlier', 'bottomOutlier']` |
536
554
  | PSPer | `"RRM"` | `['median', 'thirdQuartile', 'firstQuartile', 'topOutlier', 'bottomOutlier']` |
537
555
  | PSPer | `"disorder"` | `['median', 'thirdQuartile', 'firstQuartile', 'topOutlier', 'bottomOutlier']` |
538
556
 
557
+ `viterbi` is categorical and is intentionally excluded from MSA distribution statistics.
558
+
539
559
  The method `get_all_predictions` will return a dictionary with the following structure:
540
560
 
541
561
  ```python
542
562
  {
543
- "SEQUENCE_ID_000": {
544
- "seq": "the input sequence 0",
545
- "result001": [0.001, 0.002, ..., 0.00],
546
- "result002": [0.001, 0.002, ..., 0.00],
547
- "...": [...],
548
- "resultN": [0.001, 0.002, ..., 0.00]
549
- },
550
- "SEQUENCE_ID_001": {
551
- "seq": "the input sequence 1",
552
- "result001": [0.001, 0.002, ..., 0.00],
553
- "result002": [0.001, 0.002, ..., 0.00],
554
- "...": [...],
555
- "resultN": [0.001, 0.002, ..., 0.00]
556
- },
557
- "...": { ... },
558
- "SEQUENCE_ID_N": {
559
- "seq": "the input sequence N",
560
- "result001": [0.001, 0.002, ..., 0.00],
561
- "result002": [0.001, 0.002, ..., 0.00],
562
- "...": [...],
563
- "resultN": [0.001, 0.002, ..., 0.00]
563
+ "proteins": {
564
+ "SEQUENCE_ID_000": {
565
+ "seq": ["M", "A", "K", "..."],
566
+ "backbone": [0.001, 0.002, "..."],
567
+ "sidechain": [0.001, 0.002, "..."],
568
+ "...": ["..."]
569
+ },
570
+ "SEQUENCE_ID_001": {
571
+ "seq": ["M", "E", "T", "..."],
572
+ "backbone": [0.001, 0.002, "..."],
573
+ "sidechain": [0.001, 0.002, "..."],
574
+ "...": ["..."]
575
+ }
564
576
  },
577
+ "metadata": {
578
+ "title": "...",
579
+ "tools": ["dynamine", "..."],
580
+ "...": "..."
581
+ }
565
582
  }
566
583
  ```
567
584
 
568
585
  You are ready to use the sequence and predictions to work with them. Here is an example of plotting the data.
569
586
 
570
587
  ```python
571
- backbone_pred = predictions['SEQ001']['backbone']
572
- sidechain_pred = predictions['SEQ001']['sidechain']
588
+ backbone_pred = predictions['proteins']['SEQ001']['backbone']
589
+ sidechain_pred = predictions['proteins']['SEQ001']['sidechain']
573
590
 
574
591
  plt.plot(range(len(backbone_pred)), backbone_pred, label = "Backbone")
575
592
  plt.plot(range(len(sidechain_pred)), sidechain_pred, label = "Sidechain")
@@ -588,12 +605,15 @@ You are able to use this package directly from your console session with no Pyth
588
605
  usage: b2bTools [-h] [-v] -i INPUT_FILE -o OUTPUT_JSON_FILE
589
606
  [-t OUTPUT_TABULAR_FILE] [-m METADATA_FILE]
590
607
  [-dj DISTRIBUTION_JSON_FILE] [-dt DISTRIBUTION_TABULAR_FILE]
591
- [-s {comma,tab}] [--short_ids] [--mode {single_seq,msa}]
592
- [--dynamine] [--disomine] [--efoldmine] [--agmata] [--psper]
608
+ [-s {comma,tab}] [--short_ids]
609
+ [--log-level {DEBUG,INFO,WARNING,ERROR,CRITICAL}]
610
+ [--mode {single_seq,msa}]
611
+ [--enable-mps] [--dynamine] [--disomine] [--efoldmine]
612
+ [--agmata] [--psper] [-id SEQUENCE_ID]
593
613
 
594
614
  Bio2Byte Tool - Command Line Interface
595
615
 
596
- optional arguments:
616
+ options:
597
617
  -h, --help show this help message and exit
598
618
  -v, --version show program's version number and exit
599
619
  -i INPUT_FILE, --input_file INPUT_FILE
@@ -607,19 +627,28 @@ optional arguments:
607
627
  -dj DISTRIBUTION_JSON_FILE, --distribution_json_file DISTRIBUTION_JSON_FILE
608
628
  Path to distribution output JSON file
609
629
  -dt DISTRIBUTION_TABULAR_FILE, --distribution_tabular_file DISTRIBUTION_TABULAR_FILE
610
- Path to distribution output JSON file
630
+ Path to distribution output tabular file
611
631
  -s {comma,tab}, --sep {comma,tab}
612
632
  Tabular separator
613
633
  --short_ids Trim sequence ids (up to 20 chars per seq)
634
+ --log-level {DEBUG,INFO,WARNING,ERROR,CRITICAL}, --verbose-level {DEBUG,INFO,WARNING,ERROR,CRITICAL}
635
+ Logger verbosity level
614
636
  --mode {single_seq,msa}
615
637
  Execution mode: Single Sequence or MSA Analysis
638
+ --enable-mps Enable Apple MPS acceleration where supported. Disabled
639
+ by default for deterministic parallel runs.
616
640
  --dynamine Run DynaMine predictor
617
641
  --disomine Run DisoMine predictor
618
642
  --efoldmine Run EFoldMine predictor
619
643
  --agmata Run AgMata predictor
620
644
  --psper Run PSPer predictor
645
+ -id SEQUENCE_ID, --sequence_id SEQUENCE_ID
646
+ Sequence to extract results instead of getting all the
647
+ results
621
648
  ```
622
649
 
650
+ By default the CLI runs DynaMine. Add `--disomine`, `--efoldmine`, `--agmata` and/or `--psper` to request additional predictors. Prerequisite predictors are still executed automatically when a selected tool depends on them.
651
+
623
652
  ##### To display the help section
624
653
 
625
654
  ```console
@@ -641,7 +670,21 @@ b2bTools \
641
670
  --input_file /path/to/input/example_toy.fasta \
642
671
  --output_json_file /path/to/output/example_toy.json \
643
672
  --output_tabular_file /path/to/output/example_toy.csv \
644
- --metadata_file /path/to/output/example_toy.meta.csv
673
+ --metadata_file /path/to/output/example_toy.meta.csv \
674
+ --disomine \
675
+ --efoldmine \
676
+ --agmata \
677
+ --psper
678
+ ```
679
+
680
+ To enable Apple MPS acceleration for supported DisoMine inference from the CLI, add `--enable-mps`:
681
+
682
+ ```console
683
+ b2bTools \
684
+ --input_file /path/to/input/example_toy.fasta \
685
+ --output_json_file /path/to/output/example_toy.json \
686
+ --disomine \
687
+ --enable-mps
645
688
  ```
646
689
 
647
690
  Expected output:
@@ -649,7 +692,7 @@ Expected output:
649
692
  ```console
650
693
  2023-07-04 16:04:23,630 [b2bTools v3.0.6 INFO] Arguments parsed with success
651
694
  2023-07-04 16:04:23,630 [b2bTools v3.0.6 INFO] Reading sequences from: /path/to/input/example_toy.fasta
652
- 2023-07-04 16:04:23,630 [b2bTools v3.0.6 INFO] Tools to execute: ['dynamine']
695
+ 2023-07-04 16:04:23,630 [b2bTools v3.0.6 INFO] Tools to execute: ['dynamine', 'disomine', 'efoldmine', 'agmata', 'psper']
653
696
  2023-07-04 16:04:23,630 [b2bTools v3.0.6 INFO] Predicting sequence(s)
654
697
  ...
655
698
  2023-07-04 16:04:23,986 [b2bTools v3.0.6 INFO] Saving results in JSON format in: /path/to/output/example_toy.json
@@ -666,14 +709,18 @@ b2bTools \
666
709
  --input_file /path/to/input/example_toy.fasta \
667
710
  --output_json_file /path/to/output/example_toy.json \
668
711
  --output_tabular_file /path/to/output/example_toy.csv \
669
- --metadata_file /path/to/output/example_toy.meta.csv
712
+ --metadata_file /path/to/output/example_toy.meta.csv \
713
+ --disomine \
714
+ --efoldmine \
715
+ --agmata \
716
+ --psper
670
717
  ```
671
718
 
672
719
  ```console
673
720
  2023-07-04 16:25:35,486 [b2bTools v3.0.6 INFO] Arguments parsed with success
674
721
  2023-07-04 16:25:35,486 [b2bTools v3.0.6 INFO] Reading sequences from: /path/to/input/example_toy.fasta
675
722
  2023-07-04 16:25:35,486 [b2bTools v3.0.6 INFO] Sequence to filter: Q647G9
676
- 2023-07-04 16:25:35,486 [b2bTools v3.0.6 INFO] Tools to execute: ['dynamine']
723
+ 2023-07-04 16:25:35,486 [b2bTools v3.0.6 INFO] Tools to execute: ['dynamine', 'disomine', 'efoldmine', 'agmata', 'psper']
677
724
  2023-07-04 16:25:35,486 [b2bTools v3.0.6 INFO] Predicting sequence(s)
678
725
  ...
679
726
  2023-07-04 16:25:35,842 [b2bTools v3.0.6 INFO] Saving results for Q647G9 in JSON format in: /path/to/output/example_toy.json
@@ -694,7 +741,11 @@ b2bTools \
694
741
  --output_tabular_file /path/to/output/small_alignment.clustal.csv \
695
742
  --metadata_file /path/to/output/small_alignment.clustal.meta.csv \
696
743
  --distribution_json_file /path/to/output/small_alignment.clustal.distrib.json \
697
- --distribution_tabular_file /path/to/output/small_alignment.clustal.distrib.csv
744
+ --distribution_tabular_file /path/to/output/small_alignment.clustal.distrib.csv \
745
+ --disomine \
746
+ --efoldmine \
747
+ --agmata \
748
+ --psper
698
749
  ```
699
750
 
700
751
  Expected output:
@@ -702,7 +753,7 @@ Expected output:
702
753
  ```console
703
754
  2023-07-04 16:06:40,524 [b2bTools v3.0.6 INFO] Arguments parsed with success
704
755
  2023-07-04 16:06:40,524 [b2bTools v3.0.6 INFO] Reading sequences from: /path/to/input/small_alignment.clustal
705
- 2023-07-04 16:06:40,524 [b2bTools v3.0.6 INFO] Tools to execute: ['dynamine']
756
+ 2023-07-04 16:06:40,524 [b2bTools v3.0.6 INFO] Tools to execute: ['dynamine', 'disomine', 'efoldmine', 'agmata', 'psper']
706
757
  2023-07-04 16:06:40,524 [b2bTools v3.0.6 INFO] Predicting sequence(s)
707
758
  ...
708
759
  2023-07-04 16:06:40,749 [b2bTools v3.0.6 INFO] Saving results in JSON format in: /path/to/output/small_alignment.clustal.json
@@ -718,20 +769,24 @@ Otherwise, if you need to extract only one sequence from the input file:
718
769
  ```console
719
770
  b2bTools \
720
771
  --mode msa \
721
- --sequence_id SEQ_1
772
+ --sequence_id SEQ_1 \
722
773
  --input_file /path/to/input/small_alignment.clustal \
723
774
  --output_json_file /path/to/output/small_alignment.clustal.json \
724
775
  --output_tabular_file /path/to/output/small_alignment.clustal.csv \
725
776
  --metadata_file /path/to/output/small_alignment.clustal.meta.csv \
726
777
  --distribution_json_file /path/to/output/small_alignment.clustal.distrib.json \
727
- --distribution_tabular_file /path/to/output/small_alignment.clustal.distrib.csv
778
+ --distribution_tabular_file /path/to/output/small_alignment.clustal.distrib.csv \
779
+ --disomine \
780
+ --efoldmine \
781
+ --agmata \
782
+ --psper
728
783
  ```
729
784
 
730
785
  ```console
731
786
  2023-07-04 16:28:34,388 [b2bTools v3.0.6 INFO] Arguments parsed with success
732
787
  2023-07-04 16:28:34,388 [b2bTools v3.0.6 INFO] Reading sequences from: /path/to/input/small_alignment.clustal
733
788
  2023-07-04 16:28:34,388 [b2bTools v3.0.6 INFO] Sequence to filter: SEQ_1
734
- 2023-07-04 16:28:34,388 [b2bTools v3.0.6 INFO] Tools to execute: ['dynamine']
789
+ 2023-07-04 16:28:34,388 [b2bTools v3.0.6 INFO] Tools to execute: ['dynamine', 'disomine', 'efoldmine', 'agmata', 'psper']
735
790
  2023-07-04 16:28:34,388 [b2bTools v3.0.6 INFO] Predicting sequence(s)
736
791
  ...
737
792
  2023-07-04 16:28:34,602 [b2bTools v3.0.6 INFO] Saving results for SEQ_1 in JSON format in: /path/to/output/small_alignment.clustal.json
@@ -928,7 +983,7 @@ If you use this package or data in this package, please cite:
928
983
  | Predictor | Authors | Cite | Digital Object Identifier (DOI) |
929
984
  | --------- | --------- | --------- | --------- |
930
985
  | Dynamine | Elisa Cilia, Rita Pancsa, Peter Tompa, Tom Lenaerts, and Wim Vranken | _Elisa Cilia, Rita Pancsa, Peter Tompa, Tom Lenaerts, and Wim Vranken._ From protein sequence to dynamics and disorder with DynaMine **Nature Communications 4:2741 (2013)** | https://www.nature.com/articles/ncomms3741 |
931
- | Disomine | Gabriele Orlando, Daniele Raimondi, Francesco Codice, Francesco Tabaro, Wim Vranken | _Gabriele Orlando, Daniele Raimondi, Francesco Codice, Francesco Tabaro, Wim Vranken._ Prediction of disordered regions in proteins with recurrent Neural Networks and protein dynamics. **bioRxiv 2020.05.25.115253 (2020)** | https://www.biorxiv.org/content/10.1101/2020.05.25.115253v1 |
986
+ | Disomine | Gabriele Orlando, Daniele Raimondi, Francesco Codice, Francesco Tabaro, Wim Vranken | _Gabriele Orlando, Daniele Raimondi, Francesco Codice, Francesco Tabaro, Wim Vranken._ Prediction of disordered regions in proteins with recurrent Neural Networks and protein dynamics. **bioRxiv 2020.05.25.115253 (2020)** | 10.1016/j.jmb.2022.167579 |
932
987
  | EfoldMine | Raimondi, D., Orlando, G., Pancsa, R. et al | _Raimondi, D., Orlando, G., Pancsa, R. et al._ Exploring the Sequence-based Prediction of Folding Initiation Sites in Proteins. **Sci Rep 7, 8826 (2017)** | https://doi.org/10.1038/s41598-017-08366-3 |
933
988
  | AgMata | Gabriele Orlando, Alexandra Silva, Sandra Macedo-Ribeiro, Daniele Raimondi, Wim Vranken | _Gabriele Orlando, Alexandra Silva, Sandra Macedo-Ribeiro, Daniele Raimondi, Wim Vranken._ Accurate prediction of protein beta-aggregation with generalized statistical potentials **Bioinformatics , Volume 36, Issue 7, 1 April 2020, Pages 2076–2081 (2020)** | https://academic.oup.com/bioinformatics/article/36/7/2076/5670527 |
934
989
  | PSPer | Gabriele Orlando, Daniele Raimondi, Francesco Tabaro, Francesco Codicè, Yves Moreau, Wim F Vranken | _Gabriele Orlando and others_, Computational identification of prion-like RNA-binding proteins that form liquid phase-separated condensates, **Bioinformatics, Volume 35, Issue 22, November 2019, Pages 4617–4623** | https://doi.org/10.1093/bioinformatics/btz274 |
@@ -944,7 +999,7 @@ Bio2Byte Tools is free and open-source software licensed under the Apache 2.0 Li
944
999
  1. The Bio2Byte group aims to promote open science by providing freely available online services, database and software relating to the life sciences, with focus on proteins. Where we present scientific data generated by others we impose no additional restriction on the use of the contributed data than those provided by the data owner.
945
1000
  1. The Bio2Byte group expects attribution (e.g. in publications, services or products) for any of its online services, databases or software in accordance with good scientific practice. The expected attribution will be indicated in 'How to cite' sections (or equivalent).
946
1001
  1. The Bio2Byte group is not liable to you or third parties claiming through you, for any loss or damage.
947
- 1. Any questions or comments concerning these Terms of Use can be addressed to [Wim Vranken](mailto:wim.vranken@vub.be).
1002
+ 1. Any questions or comments concerning these Terms of Use can be addressed to [Wim Vranken](mailto:bio2byte@vub.be).
948
1003
 
949
1004
  <hr/>
950
1005
  <p align="center">© Wim Vranken, Bio2Byte group, VUB, Belgium</p>