openprotein-python 0.15.0__tar.gz → 0.16.0__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 (214) hide show
  1. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/PKG-INFO +1 -1
  2. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/embeddings/models.py +14 -0
  3. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/embeddings/poet.py +14 -0
  4. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/embeddings/poet2.py +14 -0
  5. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/fold/common.py +15 -27
  6. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/models/__init__.py +1 -0
  7. openprotein_python-0.16.0/openprotein/models/foundation/solublempnn.py +25 -0
  8. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/models/models.py +2 -0
  9. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/molecules/protein.py +9 -6
  10. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/predictor/__init__.py +1 -0
  11. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/predictor/api.py +17 -4
  12. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/predictor/predictor.py +33 -0
  13. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/predictor/schemas.py +15 -0
  14. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/svd/models.py +14 -0
  15. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/.gitignore +0 -0
  16. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/LICENSE.txt +0 -0
  17. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/README.md +0 -0
  18. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/__init__.py +0 -0
  19. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/_version.py +0 -0
  20. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/align/__init__.py +0 -0
  21. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/align/align.py +0 -0
  22. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/align/api.py +0 -0
  23. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/align/future.py +0 -0
  24. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/align/msa.py +0 -0
  25. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/align/schemas.py +0 -0
  26. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/api/__init__.py +0 -0
  27. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/api/align.py +0 -0
  28. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/api/assaydata.py +0 -0
  29. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/api/deprecated/__init__.py +0 -0
  30. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/api/deprecated/design.py +0 -0
  31. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/api/deprecated/poet.py +0 -0
  32. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/api/deprecated/predict.py +0 -0
  33. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/api/deprecated/train.py +0 -0
  34. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/api/design.py +0 -0
  35. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/api/designer.py +0 -0
  36. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/api/embedding.py +0 -0
  37. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/api/error.py +0 -0
  38. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/api/fold.py +0 -0
  39. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/api/job.py +0 -0
  40. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/api/predict.py +0 -0
  41. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/api/predictor.py +0 -0
  42. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/api/prompt.py +0 -0
  43. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/api/svd.py +0 -0
  44. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/api/train.py +0 -0
  45. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/api/umap.py +0 -0
  46. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/__init__.py +0 -0
  47. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/deprecated.py +0 -0
  48. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/__init__.py +0 -0
  49. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/align/__init__.py +0 -0
  50. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/align/base.py +0 -0
  51. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/align/msa.py +0 -0
  52. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/align/prompt.py +0 -0
  53. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/assaydata.py +0 -0
  54. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/deprecated/__init__.py +0 -0
  55. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/deprecated/design.py +0 -0
  56. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/deprecated/poet.py +0 -0
  57. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/deprecated/predict.py +0 -0
  58. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/deprecated/train.py +0 -0
  59. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/design.py +0 -0
  60. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/designer.py +0 -0
  61. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/embeddings/__init__.py +0 -0
  62. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/embeddings/base.py +0 -0
  63. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/embeddings/esm.py +0 -0
  64. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/embeddings/future.py +0 -0
  65. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/embeddings/openprotein.py +0 -0
  66. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/embeddings/poet.py +0 -0
  67. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/embeddings/poet2.py +0 -0
  68. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/embeddings/test.py +0 -0
  69. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/fold/__init__.py +0 -0
  70. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/fold/alphafold2.py +0 -0
  71. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/fold/base.py +0 -0
  72. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/fold/boltz.py +0 -0
  73. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/fold/esmfold.py +0 -0
  74. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/fold/future.py +0 -0
  75. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/futures.py +0 -0
  76. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/predict.py +0 -0
  77. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/predictor/__init__.py +0 -0
  78. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/predictor/predict.py +0 -0
  79. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/predictor/predictor.py +0 -0
  80. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/predictor/validate.py +0 -0
  81. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/prompt.py +0 -0
  82. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/svd.py +0 -0
  83. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/train.py +0 -0
  84. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/models/umap.py +0 -0
  85. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/services/__init__.py +0 -0
  86. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/services/align.py +0 -0
  87. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/services/assaydata.py +0 -0
  88. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/services/deprecated/__init__.py +0 -0
  89. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/services/deprecated/design.py +0 -0
  90. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/services/deprecated/predict.py +0 -0
  91. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/services/deprecated/train.py +0 -0
  92. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/services/design.py +0 -0
  93. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/services/designer.py +0 -0
  94. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/services/embeddings.py +0 -0
  95. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/services/fold.py +0 -0
  96. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/services/job.py +0 -0
  97. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/services/predict.py +0 -0
  98. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/services/predictor.py +0 -0
  99. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/services/prompt.py +0 -0
  100. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/services/svd.py +0 -0
  101. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/services/train.py +0 -0
  102. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/app/services/umap.py +0 -0
  103. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/auth_store.py +0 -0
  104. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/base.py +0 -0
  105. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/chains.py +0 -0
  106. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/clustering/__init__.py +0 -0
  107. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/clustering/api.py +0 -0
  108. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/clustering/clustering.py +0 -0
  109. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/clustering/models.py +0 -0
  110. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/clustering/schemas.py +0 -0
  111. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/common/__init__.py +0 -0
  112. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/common/features.py +0 -0
  113. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/common/model_metadata.py +0 -0
  114. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/common/reduction.py +0 -0
  115. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/common/residue_contants.py +0 -0
  116. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/config.py +0 -0
  117. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/csv.py +0 -0
  118. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/data/__init__.py +0 -0
  119. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/data/api.py +0 -0
  120. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/data/assaydataset.py +0 -0
  121. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/data/data.py +0 -0
  122. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/data/schemas.py +0 -0
  123. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/design/__init__.py +0 -0
  124. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/design/api.py +0 -0
  125. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/design/design.py +0 -0
  126. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/design/future.py +0 -0
  127. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/design/schemas.py +0 -0
  128. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/embeddings/__init__.py +0 -0
  129. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/embeddings/ablang.py +0 -0
  130. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/embeddings/api.py +0 -0
  131. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/embeddings/embeddings.py +0 -0
  132. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/embeddings/esm.py +0 -0
  133. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/embeddings/future.py +0 -0
  134. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/embeddings/openprotein.py +0 -0
  135. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/embeddings/schemas.py +0 -0
  136. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/errors.py +0 -0
  137. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/fasta.py +0 -0
  138. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/fold/__init__.py +0 -0
  139. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/fold/alphafold2.py +0 -0
  140. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/fold/api.py +0 -0
  141. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/fold/boltz.py +0 -0
  142. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/fold/complex.py +0 -0
  143. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/fold/esmfold.py +0 -0
  144. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/fold/esmfold2.py +0 -0
  145. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/fold/fold.py +0 -0
  146. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/fold/future.py +0 -0
  147. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/fold/minifold.py +0 -0
  148. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/fold/models.py +0 -0
  149. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/fold/protenix.py +0 -0
  150. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/fold/rosettafold3.py +0 -0
  151. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/fold/schemas.py +0 -0
  152. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/jobs/__init__.py +0 -0
  153. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/jobs/api.py +0 -0
  154. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/jobs/futures.py +0 -0
  155. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/jobs/jobs.py +0 -0
  156. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/jobs/schemas.py +0 -0
  157. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/models/base.py +0 -0
  158. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/models/foundation/boltzgen.py +0 -0
  159. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/models/foundation/boltzgen_schema.py +0 -0
  160. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/models/foundation/esmif1.py +0 -0
  161. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/models/foundation/proteinmpnn.py +0 -0
  162. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/models/foundation/rfdiffusion.py +0 -0
  163. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/models/structure_generation.py +0 -0
  164. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/molecules/__init__.py +0 -0
  165. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/molecules/chains.py +0 -0
  166. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/molecules/complex.py +0 -0
  167. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/molecules/structure.py +0 -0
  168. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/molecules/template.py +0 -0
  169. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/predictor/models.py +0 -0
  170. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/predictor/prediction.py +0 -0
  171. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/predictor/validate.py +0 -0
  172. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/prompt/__init__.py +0 -0
  173. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/prompt/api.py +0 -0
  174. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/prompt/models.py +0 -0
  175. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/prompt/prompt.py +0 -0
  176. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/prompt/schemas.py +0 -0
  177. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/protein.py +0 -0
  178. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/scaffolds.py +0 -0
  179. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/schemas/__init__.py +0 -0
  180. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/schemas/align.py +0 -0
  181. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/schemas/assaydata.py +0 -0
  182. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/schemas/deprecated/__init__.py +0 -0
  183. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/schemas/deprecated/design.py +0 -0
  184. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/schemas/deprecated/poet.py +0 -0
  185. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/schemas/deprecated/predict.py +0 -0
  186. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/schemas/deprecated/train.py +0 -0
  187. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/schemas/design.py +0 -0
  188. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/schemas/designer.py +0 -0
  189. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/schemas/embeddings.py +0 -0
  190. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/schemas/features.py +0 -0
  191. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/schemas/fold.py +0 -0
  192. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/schemas/job.py +0 -0
  193. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/schemas/predict.py +0 -0
  194. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/schemas/predictor.py +0 -0
  195. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/schemas/prompt.py +0 -0
  196. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/schemas/svd.py +0 -0
  197. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/schemas/train.py +0 -0
  198. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/schemas/umap.py +0 -0
  199. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/svd/__init__.py +0 -0
  200. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/svd/api.py +0 -0
  201. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/svd/schemas.py +0 -0
  202. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/svd/svd.py +0 -0
  203. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/umap/__init__.py +0 -0
  204. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/umap/api.py +0 -0
  205. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/umap/models.py +0 -0
  206. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/umap/schemas.py +0 -0
  207. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/umap/umap.py +0 -0
  208. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/utils/__init__.py +0 -0
  209. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/utils/chain_id.py +0 -0
  210. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/utils/cif.py +0 -0
  211. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/utils/numpy.py +0 -0
  212. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/utils/sequence.py +0 -0
  213. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/openprotein/utils/uuid.py +0 -0
  214. {openprotein_python-0.15.0 → openprotein_python-0.16.0}/pyproject.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openprotein-python
3
- Version: 0.15.0
3
+ Version: 0.16.0
4
4
  Summary: OpenProtein Python interface.
5
5
  Author-email: Mark Gee <markgee@ne47.bio>, "Timothy Truong Jr." <ttruong@ne47.bio>, Tristan Bepler <tbepler@ne47.bio>
6
6
  License-Expression: MIT
@@ -17,6 +17,7 @@ from . import api
17
17
  from .future import EmbeddingsResultFuture
18
18
 
19
19
  if TYPE_CHECKING:
20
+ from openprotein.predictor.schemas import KernelType
20
21
  from openprotein.predictor import PredictorModel
21
22
  from openprotein.svd import SVDModel
22
23
  from openprotein.umap import UMAPModel
@@ -352,6 +353,9 @@ class EmbeddingModel:
352
353
  reduction: ReductionType,
353
354
  name: str | None = None,
354
355
  description: str | None = None,
356
+ kernel: "KernelType | str" = "rbf",
357
+ period: float | None = None,
358
+ alpha: float | None = None,
355
359
  **kwargs,
356
360
  ) -> "PredictorModel":
357
361
  """
@@ -363,6 +367,13 @@ class EmbeddingModel:
363
367
  Assay to fit GP on.
364
368
  properties : list of str
365
369
  Properties in the assay to fit the GP on.
370
+ kernel : KernelType or str, optional
371
+ Kernel for the GP, e.g. "rbf", "matern52", "periodic",
372
+ "rational_quadratic". Defaults to "rbf".
373
+ period : float or None, optional
374
+ Period length; only valid for the "periodic" kernel (must be > 0).
375
+ alpha : float or None, optional
376
+ Scale-mixture parameter; only valid for "rational_quadratic" (must be > 0).
366
377
  reduction : ReductionType
367
378
  Type of embedding reduction to use for computing features. PLM must use reduction.
368
379
  name : str or None, optional
@@ -398,6 +409,9 @@ class EmbeddingModel:
398
409
  reduction=reduction,
399
410
  name=name,
400
411
  description=description,
412
+ kernel=kernel,
413
+ period=period,
414
+ alpha=alpha,
401
415
  **kwargs,
402
416
  )
403
417
 
@@ -17,6 +17,7 @@ from .future import (
17
17
  from .models import EmbeddingModel
18
18
 
19
19
  if TYPE_CHECKING:
20
+ from openprotein.predictor.schemas import KernelType
20
21
  from openprotein.predictor import PredictorModel
21
22
  from openprotein.svd import SVDModel
22
23
  from openprotein.umap import UMAPModel
@@ -432,6 +433,9 @@ class PoETModel(EmbeddingModel):
432
433
  name: str | None = None,
433
434
  description: str | None = None,
434
435
  prompt: str | Prompt | None = None,
436
+ kernel: "KernelType | str" = "rbf",
437
+ period: float | None = None,
438
+ alpha: float | None = None,
435
439
  **kwargs,
436
440
  ) -> "PredictorModel":
437
441
  """
@@ -443,6 +447,13 @@ class PoETModel(EmbeddingModel):
443
447
  Assay to fit GP on.
444
448
  properties : list of str
445
449
  Properties in the assay to fit the GP on.
450
+ kernel : KernelType or str, optional
451
+ Kernel for the GP, e.g. "rbf", "matern52", "periodic",
452
+ "rational_quadratic". Defaults to "rbf".
453
+ period : float or None, optional
454
+ Period length; only valid for the "periodic" kernel (must be > 0).
455
+ alpha : float or None, optional
456
+ Scale-mixture parameter; only valid for "rational_quadratic" (must be > 0).
446
457
  prompt : str or Prompt or None, optional
447
458
  Prompt from an align workflow to condition the PoET model.
448
459
  **kwargs
@@ -464,5 +475,8 @@ class PoETModel(EmbeddingModel):
464
475
  name=name,
465
476
  description=description,
466
477
  prompt_id=prompt_id,
478
+ kernel=kernel,
479
+ period=period,
480
+ alpha=alpha,
467
481
  **kwargs,
468
482
  )
@@ -21,6 +21,7 @@ from .models import EmbeddingModel
21
21
  from .poet import PoETModel
22
22
 
23
23
  if TYPE_CHECKING:
24
+ from openprotein.predictor.schemas import KernelType
24
25
  from openprotein.models.structure_generation import StructureGenerationFuture
25
26
  from openprotein.predictor import PredictorModel
26
27
  from openprotein.svd import SVDModel
@@ -533,6 +534,9 @@ class PoET2Model(PoETModel, EmbeddingModel):
533
534
  query: str | bytes | Protein | Complex | Query | None = None,
534
535
  use_query_structure_in_decoder: bool = True,
535
536
  decoder_type: Literal["mlm", "clm"] | None = None,
537
+ kernel: "KernelType | str" = "rbf",
538
+ period: float | None = None,
539
+ alpha: float | None = None,
536
540
  **kwargs,
537
541
  ) -> "PredictorModel":
538
542
  """
@@ -544,6 +548,13 @@ class PoET2Model(PoETModel, EmbeddingModel):
544
548
  Assay to fit GP on.
545
549
  properties : list of str
546
550
  Properties in the assay to fit the GP on.
551
+ kernel : KernelType or str, optional
552
+ Kernel for the GP, e.g. "rbf", "matern52", "periodic",
553
+ "rational_quadratic". Defaults to "rbf".
554
+ period : float or None, optional
555
+ Period length; only valid for the "periodic" kernel (must be > 0).
556
+ alpha : float or None, optional
557
+ Scale-mixture parameter; only valid for "rational_quadratic" (must be > 0).
547
558
  prompt : str or Prompt or None, optional
548
559
  Prompt from an align workflow to condition PoET model.
549
560
  query : str or bytes or Protein or Complex or Query or None, optional
@@ -570,5 +581,8 @@ class PoET2Model(PoETModel, EmbeddingModel):
570
581
  query_id=query_id,
571
582
  use_query_structure_in_decoder=use_query_structure_in_decoder,
572
583
  decoder_type=decoder_type,
584
+ kernel=kernel,
585
+ period=period,
586
+ alpha=alpha,
573
587
  **kwargs,
574
588
  )
@@ -13,40 +13,28 @@ from openprotein.prompt import PromptAPI
13
13
  def normalize_inputs(
14
14
  proteins: Sequence[Complex | Protein | str | bytes],
15
15
  ):
16
- # collate the id's used
17
- used_ids = []
18
16
  normalized_complexes: list[Complex] = []
19
- remaining_proteins: list[Protein] = []
20
- remaining_protein_strings: list[str] = []
21
17
  for protein in proteins:
22
- if isinstance(protein, Protein):
23
- # collate these to init with id_gen
24
- remaining_proteins.append(protein)
25
- elif isinstance(protein, Complex):
26
- used_ids.extend(list(protein.get_chains().keys()))
18
+ if isinstance(protein, Complex):
27
19
  normalized_complexes.append(protein)
20
+ elif isinstance(protein, Protein):
21
+ # a lone protein becomes a single-chain complex
22
+ id_gen = id_generator()
23
+ normalized_complexes.append(Complex(chains={next(id_gen): protein}))
28
24
  else:
29
25
  if isinstance(protein, bytes):
30
26
  protein = protein.decode()
31
- # handle ':'-delimited
27
+ # a ':'-delimited string is one complex, one chain per split sequence.
28
+ # chain ids only need to be unique within the complex, so use a fresh
29
+ # generator per complex.
30
+ id_gen = id_generator()
31
+ chains: dict[str, Protein] = {}
32
32
  for seq in protein.split(":"):
33
- # collate these to init with id_gen
34
- remaining_protein_strings.append(seq)
35
-
36
- # auto generate the chain ids
37
- id_gen = id_generator(used_ids)
38
-
39
- # add the remaining proteins with id gen
40
- for protein in remaining_proteins:
41
- id = next(id_gen)
42
- normalized_complexes.append(Complex(chains={id: protein}))
43
-
44
- for protein_str in remaining_protein_strings:
45
- id = next(id_gen)
46
- protein = Protein(sequence=protein_str)
47
- # protein strings default to null msa
48
- protein.msa = Protein.NullMSA
49
- normalized_complexes.append(Complex(chains={id: protein}))
33
+ chain = Protein(sequence=seq)
34
+ # protein strings default to null msa
35
+ chain.msa = Protein.NullMSA
36
+ chains[next(id_gen)] = chain
37
+ normalized_complexes.append(Complex(chains=chains))
50
38
 
51
39
  return normalized_complexes
52
40
 
@@ -19,6 +19,7 @@ from .foundation.boltzgen import BoltzGenFuture, BoltzGenModel
19
19
  from .foundation.esmif1 import ESMIF1Model
20
20
  from .foundation.proteinmpnn import ProteinMPNNModel
21
21
  from .foundation.rfdiffusion import RFdiffusionFuture, RFdiffusionModel
22
+ from .foundation.solublempnn import SolubleMPNNModel
22
23
  from .models import ModelsAPI
23
24
  from .structure_generation import (
24
25
  StructureGenerationFuture,
@@ -0,0 +1,25 @@
1
+ """SolubleMPNN model: ProteinMPNN variant tuned for soluble protein targets."""
2
+
3
+ from .proteinmpnn import ProteinMPNNModel
4
+
5
+
6
+ class SolubleMPNNModel(ProteinMPNNModel):
7
+ """
8
+ Class for SolubleMPNN model.
9
+
10
+ Soluble-protein variant of ProteinMPNN.
11
+
12
+ Examples
13
+ --------
14
+ View specific model details (including supported tokens) with the `?` operator.
15
+
16
+ Examples
17
+ --------
18
+ .. code-block:: ipython3
19
+
20
+ >>> import openprotein
21
+ >>> session = openprotein.connect(username="user", password="password")
22
+ >>> session.models.solublempnn?
23
+ """
24
+
25
+ model_id = "solublempnn"
@@ -6,6 +6,7 @@ from .foundation.boltzgen import BoltzGenModel
6
6
  from .foundation.esmif1 import ESMIF1Model
7
7
  from .foundation.proteinmpnn import ProteinMPNNModel
8
8
  from .foundation.rfdiffusion import RFdiffusionModel
9
+ from .foundation.solublempnn import SolubleMPNNModel
9
10
 
10
11
  # In the future, we would import other models here:
11
12
  # from .foundation.esm import ESMModel
@@ -30,6 +31,7 @@ class ModelsAPI:
30
31
  """
31
32
  self.rfdiffusion = RFdiffusionModel(session)
32
33
  self.proteinmpnn = ProteinMPNNModel(session)
34
+ self.solublempnn = SolubleMPNNModel(session)
33
35
  self.boltzgen = BoltzGenModel(session)
34
36
  self.esmif1 = ESMIF1Model(session)
35
37
  self.esm_if1 = self.esmif1 # alias mirroring the `esm-if1` model_id
@@ -738,6 +738,7 @@ class Protein:
738
738
  # extract coordinates and plddt
739
739
  coordinates = np.full((len(chain_seq), _N_ATOM, 3), np.nan, dtype=np.float32)
740
740
  plddt = np.full(len(chain_seq), np.nan, dtype=np.float32)
741
+ max_atom_b_iso = -np.inf # max B-factor over all atoms (for pLDDT check below)
741
742
  for residue_idx, residue in enumerate(residues):
742
743
  i = (
743
744
  residue.label_seq - label_seq_offset
@@ -764,6 +765,8 @@ class Protein:
764
765
  )
765
766
  for atom in residue.first_conformer():
766
767
  atom_name = atom.name
768
+ if atom.b_iso != _NAN_BFACTOR_VALUE:
769
+ max_atom_b_iso = max(max_atom_b_iso, atom.b_iso)
767
770
  if residue.name == "MSE" and atom_name == "SE":
768
771
  atom_name = "SD"
769
772
  if (j := _ATOM_TYPE_TO_IDX.get(atom.name)) is None:
@@ -779,12 +782,12 @@ class Protein:
779
782
  and np.isfinite(coordinates[i, _ATOM_TYPE_TO_IDX["CA"]]).all()
780
783
  ):
781
784
  plddt[i] = 100.0
782
- if (
783
- maybe_use_bfactor_as_plddt
784
- and not np.isnan(plddt).all()
785
- and np.nanmax(plddt) <= 10
786
- ):
787
- plddt[~np.isnan(plddt)] = 100.0 # these were almost surely not plddts
785
+ if maybe_use_bfactor_as_plddt and not np.isnan(plddt).all():
786
+ # B-factors that are implausibly low (all <= 10) or impossible for pLDDT
787
+ # (any atom > 100) are almost surely not pLDDTs, so treat the structure
788
+ # as experimental and assign full confidence.
789
+ if np.nanmax(plddt) <= 10 or max_atom_b_iso > 100:
790
+ plddt[~np.isnan(plddt)] = 100.0
788
791
  assert np.isnan(plddt).all() or (
789
792
  (np.nanmin(plddt) >= 0) and (np.nanmax(plddt) <= 100)
790
793
  )
@@ -6,6 +6,7 @@ isort:skip_file
6
6
 
7
7
  from .schemas import (
8
8
  Kernel,
9
+ KernelType,
9
10
  Constraints,
10
11
  Features,
11
12
  Dataset,
@@ -109,6 +109,9 @@ def predictor_fit_gp_post(
109
109
  reduction: str | None = None,
110
110
  name: str | None = None,
111
111
  description: str | None = None,
112
+ kernel: str = "rbf",
113
+ period: float | None = None,
114
+ alpha: float | None = None,
112
115
  **kwargs,
113
116
  ) -> PredictorTrainJob:
114
117
  """
@@ -132,6 +135,13 @@ def predictor_fit_gp_post(
132
135
  Optional name of predictor model. Randomly generated if not provided.
133
136
  description: str | None
134
137
  Optional description to attach to the model.
138
+ kernel : str
139
+ Kernel to train the GP with (e.g. "rbf", "matern52", "periodic",
140
+ "rational_quadratic"). default = "rbf".
141
+ period : float | None
142
+ Period length for the periodic kernel. default = None.
143
+ alpha : float | None
144
+ Scale-mixture parameter for the rational_quadratic kernel. default = None.
135
145
  kwargs:
136
146
  Additional keyword arguments to be passed to foundational models, e.g. prompt_id for PoET models.
137
147
 
@@ -142,6 +152,12 @@ def predictor_fit_gp_post(
142
152
  """
143
153
  endpoint = PATH_PREFIX + "/gp"
144
154
 
155
+ kernel_spec: dict = {"type": kernel}
156
+ if period is not None:
157
+ kernel_spec["period"] = period
158
+ if alpha is not None:
159
+ kernel_spec["alpha"] = alpha
160
+
145
161
  body = {
146
162
  "dataset": {
147
163
  "assay_id": assay_id,
@@ -151,10 +167,7 @@ def predictor_fit_gp_post(
151
167
  "type": feature_type,
152
168
  "model_id": model_id,
153
169
  },
154
- "kernel": {
155
- "type": "rbf",
156
- # "multitask": True
157
- },
170
+ "kernel": kernel_spec,
158
171
  }
159
172
  if reduction is not None:
160
173
  body["features"]["reduction"] = reduction
@@ -13,6 +13,7 @@ from openprotein.svd import SVDAPI, SVDModel
13
13
 
14
14
  from . import api
15
15
  from .models import PredictorModel
16
+ from .schemas import KernelType
16
17
 
17
18
 
18
19
  class PredictorAPI:
@@ -125,6 +126,9 @@ class PredictorAPI:
125
126
  reduction: Reduction | ReductionType | None = None,
126
127
  name: str | None = None,
127
128
  description: str | None = None,
129
+ kernel: KernelType | str = "rbf",
130
+ period: float | None = None,
131
+ alpha: float | None = None,
128
132
  **kwargs,
129
133
  ) -> PredictorModel:
130
134
  """
@@ -147,6 +151,14 @@ class PredictorAPI:
147
151
  Type of embedding reduction to use for computing features.
148
152
  E.g. "MEAN" or "SUM". Used only if using EmbeddingModel, and
149
153
  must be non-nil if using an EmbeddingModel. Defaults to None.
154
+ kernel : KernelType or str, optional
155
+ Kernel for the GP. One of "linear", "rbf", "matern12", "matern32",
156
+ "matern52", "periodic", "rational_quadratic". Defaults to "rbf".
157
+ period : float or None, optional
158
+ Period length, only valid for the "periodic" kernel (must be > 0).
159
+ alpha : float or None, optional
160
+ Scale-mixture parameter, only valid for the "rational_quadratic"
161
+ kernel (must be > 0).
150
162
  kwargs :
151
163
  Additional keyword arguments to be passed to foundational models, e.g. prompt_id for PoET models.
152
164
 
@@ -177,6 +189,24 @@ class PredictorAPI:
177
189
  raise InvalidParameterError(
178
190
  "Training a multitask GP is not yet supported (i.e. number of properties should only be 1 for now)"
179
191
  )
192
+ # kernel selection + hyperparameter validation (fail fast, client-side)
193
+ if not isinstance(kernel, KernelType):
194
+ try:
195
+ kernel = KernelType(kernel)
196
+ except ValueError as e:
197
+ raise InvalidParameterError(
198
+ f"Unknown kernel {kernel!r}; valid options: {[k.value for k in KernelType]}"
199
+ ) from e
200
+ if period is not None:
201
+ if kernel != KernelType.PERIODIC:
202
+ raise InvalidParameterError("`period` is only valid for the 'periodic' kernel")
203
+ if period <= 0:
204
+ raise InvalidParameterError("`period` must be > 0")
205
+ if alpha is not None:
206
+ if kernel != KernelType.RATIONAL_QUADRATIC:
207
+ raise InvalidParameterError("`alpha` is only valid for the 'rational_quadratic' kernel")
208
+ if alpha <= 0:
209
+ raise InvalidParameterError("`alpha` must be > 0")
180
210
  # 2. Check features input
181
211
  # extract feature type
182
212
  feature_type = (
@@ -228,6 +258,9 @@ class PredictorAPI:
228
258
  reduction=reduction,
229
259
  name=name,
230
260
  description=description,
261
+ kernel=kernel.value,
262
+ period=period,
263
+ alpha=alpha,
231
264
  **kwargs,
232
265
  ),
233
266
  )
@@ -10,9 +10,24 @@ from openprotein.common import FeatureType
10
10
  from openprotein.jobs import Job, JobStatus, JobType
11
11
 
12
12
 
13
+ class KernelType(str, Enum):
14
+ """Kernel options for a GP predictor."""
15
+
16
+ LINEAR = "linear"
17
+ RBF = "rbf"
18
+ MATERN12 = "matern12"
19
+ MATERN32 = "matern32"
20
+ MATERN52 = "matern52"
21
+ PERIODIC = "periodic"
22
+ RATIONAL_QUADRATIC = "rational_quadratic"
23
+
24
+
13
25
  class Kernel(BaseModel):
14
26
  type: str
15
27
  multitask: bool = False
28
+ # period applies only to the periodic kernel; alpha only to rational_quadratic
29
+ period: float | None = None
30
+ alpha: float | None = None
16
31
 
17
32
 
18
33
  class Constraints(BaseModel):
@@ -15,6 +15,7 @@ from . import api
15
15
  from .schemas import SVDEmbeddingsJob, SVDFitJob, SVDMetadata
16
16
 
17
17
  if TYPE_CHECKING:
18
+ from openprotein.predictor.schemas import KernelType
18
19
  from openprotein.predictor import PredictorModel
19
20
  from openprotein.umap import UMAPModel
20
21
 
@@ -201,6 +202,9 @@ class SVDModel(Future):
201
202
  properties: list[str],
202
203
  name: str | None = None,
203
204
  description: str | None = None,
205
+ kernel: "KernelType | str" = "rbf",
206
+ period: float | None = None,
207
+ alpha: float | None = None,
204
208
  **kwargs,
205
209
  ) -> "PredictorModel":
206
210
  """
@@ -212,6 +216,13 @@ class SVDModel(Future):
212
216
  Assay to fit GP on. Or its assay_id.
213
217
  properties: list of str
214
218
  Properties in the assay to fit the gp on.
219
+ kernel : KernelType or str, optional
220
+ Kernel for the GP, e.g. "rbf", "matern52", "periodic",
221
+ "rational_quadratic". Defaults to "rbf".
222
+ period : float or None, optional
223
+ Period length; only valid for the "periodic" kernel (must be > 0).
224
+ alpha : float or None, optional
225
+ Scale-mixture parameter; only valid for "rational_quadratic" (must be > 0).
215
226
 
216
227
  Returns
217
228
  -------
@@ -254,6 +265,9 @@ class SVDModel(Future):
254
265
  model=self,
255
266
  name=name,
256
267
  description=description,
268
+ kernel=kernel,
269
+ period=period,
270
+ alpha=alpha,
257
271
  **kwargs,
258
272
  )
259
273