openprotein-python 0.14.0__tar.gz → 0.14.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/PKG-INFO +1 -1
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/clustering/api.py +8 -16
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/clustering/clustering.py +8 -14
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/embeddings/api.py +8 -40
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/embeddings/poet2.py +25 -4
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/fold/api.py +6 -5
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/prompt/api.py +6 -1
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/svd/api.py +3 -10
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/umap/api.py +3 -10
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/.gitignore +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/LICENSE.txt +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/README.md +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/__init__.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/_version.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/align/__init__.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/align/align.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/align/api.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/align/future.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/align/msa.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/align/schemas.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/api/__init__.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/api/align.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/api/assaydata.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/api/deprecated/__init__.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/api/deprecated/design.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/api/deprecated/poet.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/api/deprecated/predict.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/api/deprecated/train.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/api/design.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/api/designer.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/api/embedding.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/api/error.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/api/fold.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/api/job.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/api/predict.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/api/predictor.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/api/prompt.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/api/svd.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/api/train.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/api/umap.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/__init__.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/deprecated.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/__init__.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/align/__init__.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/align/base.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/align/msa.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/align/prompt.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/assaydata.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/deprecated/__init__.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/deprecated/design.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/deprecated/poet.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/deprecated/predict.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/deprecated/train.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/design.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/designer.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/embeddings/__init__.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/embeddings/base.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/embeddings/esm.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/embeddings/future.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/embeddings/openprotein.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/embeddings/poet.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/embeddings/poet2.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/embeddings/test.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/fold/__init__.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/fold/alphafold2.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/fold/base.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/fold/boltz.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/fold/esmfold.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/fold/future.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/futures.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/predict.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/predictor/__init__.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/predictor/predict.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/predictor/predictor.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/predictor/validate.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/prompt.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/svd.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/train.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/models/umap.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/services/__init__.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/services/align.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/services/assaydata.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/services/deprecated/__init__.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/services/deprecated/design.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/services/deprecated/predict.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/services/deprecated/train.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/services/design.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/services/designer.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/services/embeddings.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/services/fold.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/services/job.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/services/predict.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/services/predictor.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/services/prompt.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/services/svd.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/services/train.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/app/services/umap.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/base.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/chains.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/clustering/__init__.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/clustering/models.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/clustering/schemas.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/common/__init__.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/common/features.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/common/model_metadata.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/common/reduction.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/common/residue_contants.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/config.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/csv.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/data/__init__.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/data/api.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/data/assaydataset.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/data/data.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/data/schemas.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/design/__init__.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/design/api.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/design/design.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/design/future.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/design/schemas.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/embeddings/__init__.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/embeddings/ablang.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/embeddings/embeddings.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/embeddings/esm.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/embeddings/future.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/embeddings/models.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/embeddings/openprotein.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/embeddings/poet.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/embeddings/schemas.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/errors.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/fasta.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/fold/__init__.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/fold/alphafold2.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/fold/boltz.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/fold/common.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/fold/complex.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/fold/esmfold.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/fold/esmfold2.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/fold/fold.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/fold/future.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/fold/minifold.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/fold/models.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/fold/protenix.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/fold/rosettafold3.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/fold/schemas.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/jobs/__init__.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/jobs/api.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/jobs/futures.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/jobs/jobs.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/jobs/schemas.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/models/__init__.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/models/base.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/models/foundation/boltzgen.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/models/foundation/boltzgen_schema.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/models/foundation/esmif1.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/models/foundation/proteinmpnn.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/models/foundation/rfdiffusion.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/models/models.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/models/structure_generation.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/molecules/__init__.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/molecules/chains.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/molecules/complex.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/molecules/protein.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/molecules/structure.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/molecules/template.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/predictor/__init__.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/predictor/api.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/predictor/models.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/predictor/prediction.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/predictor/predictor.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/predictor/schemas.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/predictor/validate.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/prompt/__init__.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/prompt/models.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/prompt/prompt.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/prompt/schemas.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/protein.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/scaffolds.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/schemas/__init__.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/schemas/align.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/schemas/assaydata.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/schemas/deprecated/__init__.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/schemas/deprecated/design.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/schemas/deprecated/poet.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/schemas/deprecated/predict.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/schemas/deprecated/train.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/schemas/design.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/schemas/designer.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/schemas/embeddings.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/schemas/features.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/schemas/fold.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/schemas/job.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/schemas/predict.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/schemas/predictor.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/schemas/prompt.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/schemas/svd.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/schemas/train.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/schemas/umap.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/svd/__init__.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/svd/models.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/svd/schemas.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/svd/svd.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/umap/__init__.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/umap/models.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/umap/schemas.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/umap/umap.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/utils/__init__.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/utils/chain_id.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/utils/cif.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/utils/numpy.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/utils/sequence.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/utils/uuid.py +0 -0
- {openprotein_python-0.14.0 → openprotein_python-0.14.2}/pyproject.toml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: openprotein-python
|
|
3
|
-
Version: 0.14.
|
|
3
|
+
Version: 0.14.2
|
|
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,17 +17,17 @@ PATH_PREFIX = "v1/clustering"
|
|
|
17
17
|
def clustering_list_get(
|
|
18
18
|
session: APISession,
|
|
19
19
|
method: str | None = None,
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
limit: int | None = None,
|
|
21
|
+
offset: int | None = None,
|
|
22
22
|
) -> list[ClusteringMetadata]:
|
|
23
23
|
"""List clustering jobs, optionally filtered by method."""
|
|
24
24
|
params: dict = {}
|
|
25
25
|
if method is not None:
|
|
26
26
|
params["method"] = method
|
|
27
|
-
if
|
|
28
|
-
params["
|
|
29
|
-
if
|
|
30
|
-
params["
|
|
27
|
+
if limit is not None:
|
|
28
|
+
params["limit"] = limit
|
|
29
|
+
if offset is not None:
|
|
30
|
+
params["offset"] = offset
|
|
31
31
|
response = session.get(PATH_PREFIX, params=params or None)
|
|
32
32
|
return TypeAdapter(list[ClusteringMetadata]).validate_python(response.json())
|
|
33
33
|
|
|
@@ -80,16 +80,9 @@ def clustering_hierarchical_post(
|
|
|
80
80
|
assay_id: str | None = None,
|
|
81
81
|
reduction: str | None = None,
|
|
82
82
|
svd_id: str | None = None,
|
|
83
|
-
force_recompute: bool = False,
|
|
84
83
|
**kwargs,
|
|
85
84
|
) -> HierarchicalFitJob:
|
|
86
|
-
"""POST to create a hierarchical clustering fit job.
|
|
87
|
-
|
|
88
|
-
Parameters
|
|
89
|
-
----------
|
|
90
|
-
force_recompute : bool
|
|
91
|
-
If True, send ?force=true so the backend bypasses the result cache and recomputes. Default: False.
|
|
92
|
-
"""
|
|
85
|
+
"""POST to create a hierarchical clustering fit job."""
|
|
93
86
|
body: dict = {
|
|
94
87
|
"model_id": model_id,
|
|
95
88
|
"feature_type": feature_type,
|
|
@@ -112,6 +105,5 @@ def clustering_hierarchical_post(
|
|
|
112
105
|
body["assay_id"] = assay_id
|
|
113
106
|
body.update(**kwargs)
|
|
114
107
|
|
|
115
|
-
|
|
116
|
-
response = session.post(f"{PATH_PREFIX}/hierarchical", json=body, params=params)
|
|
108
|
+
response = session.post(f"{PATH_PREFIX}/hierarchical", json=body)
|
|
117
109
|
return HierarchicalFitJob.model_validate(response.json())
|
{openprotein_python-0.14.0 → openprotein_python-0.14.2}/openprotein/clustering/clustering.py
RENAMED
|
@@ -64,9 +64,7 @@ class ClusteringAPI:
|
|
|
64
64
|
assay_id = (
|
|
65
65
|
assay.assay_id
|
|
66
66
|
if isinstance(assay, AssayMetadata)
|
|
67
|
-
else assay.id
|
|
68
|
-
if isinstance(assay, AssayDataset)
|
|
69
|
-
else assay
|
|
67
|
+
else assay.id if isinstance(assay, AssayDataset) else assay
|
|
70
68
|
)
|
|
71
69
|
if sequences is not None and assay_id is not None:
|
|
72
70
|
raise InvalidParameterError(
|
|
@@ -86,9 +84,7 @@ class ClusteringAPI:
|
|
|
86
84
|
feature_type = (
|
|
87
85
|
FeatureType.PLM
|
|
88
86
|
if isinstance(model, EmbeddingModel)
|
|
89
|
-
else FeatureType.SVD
|
|
90
|
-
if isinstance(model, SVDModel)
|
|
91
|
-
else feature_type
|
|
87
|
+
else FeatureType.SVD if isinstance(model, SVDModel) else feature_type
|
|
92
88
|
)
|
|
93
89
|
if feature_type is None:
|
|
94
90
|
raise InvalidParameterError(
|
|
@@ -148,9 +144,6 @@ class ClusteringAPI:
|
|
|
148
144
|
reduction.value if isinstance(reduction, ReductionType) else reduction
|
|
149
145
|
)
|
|
150
146
|
|
|
151
|
-
# Advanced flags such as `force_recompute` are accepted via **kwargs
|
|
152
|
-
# only (intentionally kept out of the typed signature / autocomplete):
|
|
153
|
-
# they bypass the backend result cache and are easy to misuse.
|
|
154
147
|
job = api.clustering_hierarchical_post(
|
|
155
148
|
session=self.session,
|
|
156
149
|
model_id=model_id,
|
|
@@ -175,12 +168,13 @@ class ClusteringAPI:
|
|
|
175
168
|
def list(
|
|
176
169
|
self,
|
|
177
170
|
method: str | None = None,
|
|
178
|
-
|
|
179
|
-
|
|
171
|
+
limit: int | None = None,
|
|
172
|
+
offset: int | None = None,
|
|
180
173
|
) -> list[HierarchicalClusteringFuture]:
|
|
181
174
|
"""List clustering jobs, optionally filtering by method.
|
|
182
175
|
|
|
183
|
-
Pass `
|
|
176
|
+
Pass `limit` / `offset` to paginate (the clustering list endpoint
|
|
177
|
+
uses `limit`/`offset`, unlike the `jobs` endpoint's page_size/page_offset)."""
|
|
184
178
|
# Single-method dispatch today; when new methods are added,
|
|
185
179
|
# branch on metadata.method to pick the concrete future type.
|
|
186
180
|
return [
|
|
@@ -188,7 +182,7 @@ class ClusteringAPI:
|
|
|
188
182
|
for md in api.clustering_list_get(
|
|
189
183
|
self.session,
|
|
190
184
|
method=method,
|
|
191
|
-
|
|
192
|
-
|
|
185
|
+
limit=limit,
|
|
186
|
+
offset=offset,
|
|
193
187
|
)
|
|
194
188
|
]
|
|
@@ -265,7 +265,6 @@ def request_post(
|
|
|
265
265
|
model_id: str,
|
|
266
266
|
sequences: list[bytes] | list[str],
|
|
267
267
|
reduction: str | None = "MEAN",
|
|
268
|
-
force_recompute: bool = False,
|
|
269
268
|
**kwargs,
|
|
270
269
|
) -> EmbeddingsJob:
|
|
271
270
|
"""
|
|
@@ -282,8 +281,6 @@ def request_post(
|
|
|
282
281
|
sequences to request results for
|
|
283
282
|
reduction : str | None
|
|
284
283
|
reduction to apply to the embeddings. options are None, "MEAN", or "SUM". defaul: "MEAN"
|
|
285
|
-
force_recompute : bool
|
|
286
|
-
If True, send ?force=true so the backend bypasses the result cache and recomputes. Default: False.
|
|
287
284
|
**kwargs:
|
|
288
285
|
Optional parameters for models, e.g. prompt_id for PoET
|
|
289
286
|
|
|
@@ -309,8 +306,7 @@ def request_post(
|
|
|
309
306
|
]
|
|
310
307
|
if kwargs.get("decoder_type"):
|
|
311
308
|
body["decoder_type"] = kwargs["decoder_type"]
|
|
312
|
-
|
|
313
|
-
response = session.post(endpoint, json=body, params=params)
|
|
309
|
+
response = session.post(endpoint, json=body)
|
|
314
310
|
return EmbeddingsJob.model_validate(response.json())
|
|
315
311
|
|
|
316
312
|
|
|
@@ -318,7 +314,6 @@ def request_logits_post(
|
|
|
318
314
|
session: APISession,
|
|
319
315
|
model_id: str,
|
|
320
316
|
sequences: list[bytes] | list[str],
|
|
321
|
-
force_recompute: bool = False,
|
|
322
317
|
**kwargs,
|
|
323
318
|
) -> LogitsJob:
|
|
324
319
|
"""
|
|
@@ -333,8 +328,6 @@ def request_logits_post(
|
|
|
333
328
|
model ID to request results from
|
|
334
329
|
sequences : List[bytes]
|
|
335
330
|
sequences to request results for
|
|
336
|
-
force_recompute : bool
|
|
337
|
-
If True, send ?force=true so the backend bypasses the result cache and recomputes. Default: False.
|
|
338
331
|
**kwargs:
|
|
339
332
|
Optional parameters for models, e.g. prompt_id for PoET
|
|
340
333
|
|
|
@@ -358,8 +351,7 @@ def request_logits_post(
|
|
|
358
351
|
]
|
|
359
352
|
if kwargs.get("decoder_type"):
|
|
360
353
|
body["decoder_type"] = kwargs["decoder_type"]
|
|
361
|
-
|
|
362
|
-
response = session.post(endpoint, json=body, params=params)
|
|
354
|
+
response = session.post(endpoint, json=body)
|
|
363
355
|
return LogitsJob.model_validate(response.json())
|
|
364
356
|
|
|
365
357
|
|
|
@@ -367,7 +359,6 @@ def request_attn_post(
|
|
|
367
359
|
session: APISession,
|
|
368
360
|
model_id: str,
|
|
369
361
|
sequences: list[bytes] | list[str],
|
|
370
|
-
force_recompute: bool = False,
|
|
371
362
|
**kwargs,
|
|
372
363
|
) -> AttnJob:
|
|
373
364
|
"""
|
|
@@ -383,8 +374,6 @@ def request_attn_post(
|
|
|
383
374
|
model ID to request results from
|
|
384
375
|
sequences : List[bytes]
|
|
385
376
|
sequences to request results for
|
|
386
|
-
force_recompute : bool
|
|
387
|
-
If True, send ?force=true so the backend bypasses the result cache and recomputes. Default: False.
|
|
388
377
|
**kwargs:
|
|
389
378
|
Optional parameters for models, e.g. prompt_id for PoET
|
|
390
379
|
|
|
@@ -406,8 +395,7 @@ def request_attn_post(
|
|
|
406
395
|
body["use_query_structure_in_decoder"] = kwargs[
|
|
407
396
|
"use_query_structure_in_decoder"
|
|
408
397
|
]
|
|
409
|
-
|
|
410
|
-
response = session.post(endpoint, json=body, params=params)
|
|
398
|
+
response = session.post(endpoint, json=body)
|
|
411
399
|
return AttnJob.model_validate(response.json())
|
|
412
400
|
|
|
413
401
|
|
|
@@ -415,7 +403,6 @@ def request_score_post(
|
|
|
415
403
|
session: APISession,
|
|
416
404
|
model_id: str,
|
|
417
405
|
sequences: list[bytes] | list[str],
|
|
418
|
-
force_recompute: bool = False,
|
|
419
406
|
**kwargs,
|
|
420
407
|
) -> ScoreJob:
|
|
421
408
|
"""
|
|
@@ -431,8 +418,6 @@ def request_score_post(
|
|
|
431
418
|
model ID to request results from
|
|
432
419
|
sequences : List[bytes]
|
|
433
420
|
sequences to request results for
|
|
434
|
-
force_recompute : bool
|
|
435
|
-
If True, send ?force=true so the backend bypasses the result cache and recomputes. Default: False.
|
|
436
421
|
|
|
437
422
|
Returns
|
|
438
423
|
-------
|
|
@@ -453,8 +438,7 @@ def request_score_post(
|
|
|
453
438
|
]
|
|
454
439
|
if kwargs.get("decoder_type"):
|
|
455
440
|
body["decoder_type"] = kwargs["decoder_type"]
|
|
456
|
-
|
|
457
|
-
response = session.post(endpoint, json=body, params=params)
|
|
441
|
+
response = session.post(endpoint, json=body)
|
|
458
442
|
return ScoreJob.model_validate(response.json())
|
|
459
443
|
|
|
460
444
|
|
|
@@ -464,7 +448,6 @@ def request_score_indel_post(
|
|
|
464
448
|
base_sequence: bytes | str,
|
|
465
449
|
insert: str | None = None,
|
|
466
450
|
delete: list[int] | None = None,
|
|
467
|
-
force_recompute: bool = False,
|
|
468
451
|
**kwargs,
|
|
469
452
|
) -> ScoreIndelJob:
|
|
470
453
|
"""
|
|
@@ -484,8 +467,6 @@ def request_score_indel_post(
|
|
|
484
467
|
Insertion fragment at each site.
|
|
485
468
|
delete: int | None
|
|
486
469
|
Range of size of fragment to delete at each site.
|
|
487
|
-
force_recompute : bool
|
|
488
|
-
If True, send ?force=true so the backend bypasses the result cache and recomputes. Default: False.
|
|
489
470
|
**kwargs:
|
|
490
471
|
Optional parameters for models, e.g. prompt_id for PoET
|
|
491
472
|
|
|
@@ -516,8 +497,7 @@ def request_score_indel_post(
|
|
|
516
497
|
]
|
|
517
498
|
if kwargs.get("decoder_type"):
|
|
518
499
|
body["decoder_type"] = kwargs["decoder_type"]
|
|
519
|
-
|
|
520
|
-
response = session.post(endpoint, json=body, params=params)
|
|
500
|
+
response = session.post(endpoint, json=body)
|
|
521
501
|
return ScoreIndelJob.model_validate(response.json())
|
|
522
502
|
|
|
523
503
|
|
|
@@ -525,7 +505,6 @@ def request_score_single_site_post(
|
|
|
525
505
|
session: APISession,
|
|
526
506
|
model_id: str,
|
|
527
507
|
base_sequence: bytes | str,
|
|
528
|
-
force_recompute: bool = False,
|
|
529
508
|
**kwargs,
|
|
530
509
|
) -> ScoreSingleSiteJob:
|
|
531
510
|
"""
|
|
@@ -541,8 +520,6 @@ def request_score_single_site_post(
|
|
|
541
520
|
model ID to request results from
|
|
542
521
|
sequences : List[bytes]
|
|
543
522
|
sequences to request results for
|
|
544
|
-
force_recompute : bool
|
|
545
|
-
If True, send ?force=true so the backend bypasses the result cache and recomputes. Default: False.
|
|
546
523
|
**kwargs:
|
|
547
524
|
Optional parameters for models, e.g. prompt_id for PoET
|
|
548
525
|
|
|
@@ -569,8 +546,7 @@ def request_score_single_site_post(
|
|
|
569
546
|
]
|
|
570
547
|
if kwargs.get("decoder_type"):
|
|
571
548
|
body["decoder_type"] = kwargs["decoder_type"]
|
|
572
|
-
|
|
573
|
-
response = session.post(endpoint, json=body, params=params)
|
|
549
|
+
response = session.post(endpoint, json=body)
|
|
574
550
|
return ScoreSingleSiteJob.model_validate(response.json())
|
|
575
551
|
|
|
576
552
|
|
|
@@ -583,7 +559,6 @@ def request_generate_post(
|
|
|
583
559
|
topp: float | None = None,
|
|
584
560
|
max_length: int = 1000,
|
|
585
561
|
random_seed: int | None = None,
|
|
586
|
-
force_recompute: bool = False,
|
|
587
562
|
**kwargs,
|
|
588
563
|
) -> GenerateJob:
|
|
589
564
|
"""
|
|
@@ -597,8 +572,6 @@ def request_generate_post(
|
|
|
597
572
|
Session object for API communication.
|
|
598
573
|
model_id : str
|
|
599
574
|
model ID to request results from
|
|
600
|
-
force_recompute : bool
|
|
601
|
-
If True, send ?force=true so the backend bypasses the result cache and recomputes. Default: False.
|
|
602
575
|
**kwargs:
|
|
603
576
|
Optional parameters for models, e.g. prompt_id for PoET
|
|
604
577
|
|
|
@@ -638,11 +611,7 @@ def request_generate_post(
|
|
|
638
611
|
query_id = kwargs.get("query_id")
|
|
639
612
|
if query_id is not None:
|
|
640
613
|
assert model_id != "poet", f"Model with id {model_id} does not support query"
|
|
641
|
-
body["query_id"] = (
|
|
642
|
-
list(query_id)
|
|
643
|
-
if isinstance(query_id, list)
|
|
644
|
-
else query_id
|
|
645
|
-
)
|
|
614
|
+
body["query_id"] = list(query_id) if isinstance(query_id, list) else query_id
|
|
646
615
|
if "use_query_structure_in_decoder" in kwargs:
|
|
647
616
|
body["use_query_structure_in_decoder"] = kwargs[
|
|
648
617
|
"use_query_structure_in_decoder"
|
|
@@ -657,6 +626,5 @@ def request_generate_post(
|
|
|
657
626
|
model_id != "poet"
|
|
658
627
|
), f"Model with id {model_id} does not support ensemble_method parameter"
|
|
659
628
|
body["ensemble_method"] = ensemble_method
|
|
660
|
-
|
|
661
|
-
response = session.post(endpoint, json=body, params=params)
|
|
629
|
+
response = session.post(endpoint, json=body)
|
|
662
630
|
return GenerateJob.model_validate(response.json())
|
|
@@ -59,19 +59,20 @@ class PoET2Model(PoETModel, EmbeddingModel):
|
|
|
59
59
|
|
|
60
60
|
def embed(
|
|
61
61
|
self,
|
|
62
|
-
sequences: list[bytes],
|
|
62
|
+
sequences: list[bytes] | list[str],
|
|
63
63
|
reduction: ReductionType | None = ReductionType.MEAN,
|
|
64
64
|
prompt: str | Prompt | None = None,
|
|
65
65
|
query: str | bytes | Protein | Complex | Query | None = None,
|
|
66
66
|
use_query_structure_in_decoder: bool = True,
|
|
67
67
|
decoder_type: Literal["mlm", "clm"] | None = None,
|
|
68
|
+
**kwargs,
|
|
68
69
|
) -> EmbeddingsResultFuture:
|
|
69
70
|
"""
|
|
70
71
|
Embed sequences using this model.
|
|
71
72
|
|
|
72
73
|
Parameters
|
|
73
74
|
----------
|
|
74
|
-
sequences : list of bytes
|
|
75
|
+
sequences : list of bytes or list of str
|
|
75
76
|
Sequences to embed.
|
|
76
77
|
reduction : ReductionType or None, optional
|
|
77
78
|
Embeddings reduction to use (e.g. mean). Default is ReductionType.MEAN.
|
|
@@ -83,6 +84,8 @@ class PoET2Model(PoETModel, EmbeddingModel):
|
|
|
83
84
|
Whether to use query structure in decoder. Default is True.
|
|
84
85
|
decoder_type : {'mlm', 'clm'} or None, optional
|
|
85
86
|
Decoder type. Default is None.
|
|
87
|
+
**kwargs
|
|
88
|
+
Additional keyword arguments.
|
|
86
89
|
|
|
87
90
|
Returns
|
|
88
91
|
-------
|
|
@@ -105,22 +108,24 @@ class PoET2Model(PoETModel, EmbeddingModel):
|
|
|
105
108
|
query_id=query_id,
|
|
106
109
|
use_query_structure_in_decoder=use_query_structure_in_decoder,
|
|
107
110
|
decoder_type=decoder_type,
|
|
111
|
+
**kwargs,
|
|
108
112
|
)
|
|
109
113
|
|
|
110
114
|
def logits(
|
|
111
115
|
self,
|
|
112
|
-
sequences: list[bytes],
|
|
116
|
+
sequences: list[bytes] | list[str],
|
|
113
117
|
prompt: str | Prompt | None = None,
|
|
114
118
|
query: str | bytes | Protein | Complex | Query | None = None,
|
|
115
119
|
use_query_structure_in_decoder: bool = True,
|
|
116
120
|
decoder_type: Literal["mlm", "clm"] | None = None,
|
|
121
|
+
**kwargs,
|
|
117
122
|
) -> EmbeddingsResultFuture:
|
|
118
123
|
"""
|
|
119
124
|
Compute logit embeddings for sequences using this model.
|
|
120
125
|
|
|
121
126
|
Parameters
|
|
122
127
|
----------
|
|
123
|
-
sequences : list of bytes
|
|
128
|
+
sequences : list of bytes or list of str
|
|
124
129
|
Sequences to analyze.
|
|
125
130
|
prompt : str or Prompt or None, optional
|
|
126
131
|
Prompt or prompt_id or prompt from an align workflow to condition PoET model.
|
|
@@ -130,6 +135,8 @@ class PoET2Model(PoETModel, EmbeddingModel):
|
|
|
130
135
|
Whether to use query structure in decoder. Default is True.
|
|
131
136
|
decoder_type : {'mlm', 'clm'} or None, optional
|
|
132
137
|
Decoder type. Default is None.
|
|
138
|
+
**kwargs
|
|
139
|
+
Additional keyword arguments.
|
|
133
140
|
|
|
134
141
|
Returns
|
|
135
142
|
-------
|
|
@@ -151,6 +158,7 @@ class PoET2Model(PoETModel, EmbeddingModel):
|
|
|
151
158
|
query_id=query_id,
|
|
152
159
|
use_query_structure_in_decoder=use_query_structure_in_decoder,
|
|
153
160
|
decoder_type=decoder_type,
|
|
161
|
+
**kwargs,
|
|
154
162
|
)
|
|
155
163
|
|
|
156
164
|
def score(
|
|
@@ -160,6 +168,7 @@ class PoET2Model(PoETModel, EmbeddingModel):
|
|
|
160
168
|
query: str | bytes | Protein | Complex | Query | None = None,
|
|
161
169
|
use_query_structure_in_decoder: bool = True,
|
|
162
170
|
decoder_type: Literal["mlm", "clm"] | None = None,
|
|
171
|
+
**kwargs,
|
|
163
172
|
) -> EmbeddingsScoreFuture:
|
|
164
173
|
"""
|
|
165
174
|
Score query sequences using the specified prompt.
|
|
@@ -176,6 +185,8 @@ class PoET2Model(PoETModel, EmbeddingModel):
|
|
|
176
185
|
Whether to use query structure in decoder. Default is True.
|
|
177
186
|
decoder_type : {'mlm', 'clm'} or None, optional
|
|
178
187
|
Decoder type. Default is None.
|
|
188
|
+
**kwargs
|
|
189
|
+
Additional keyword arguments.
|
|
179
190
|
|
|
180
191
|
Returns
|
|
181
192
|
-------
|
|
@@ -191,6 +202,7 @@ class PoET2Model(PoETModel, EmbeddingModel):
|
|
|
191
202
|
query_id=query_id,
|
|
192
203
|
use_query_structure_in_decoder=use_query_structure_in_decoder,
|
|
193
204
|
decoder_type=decoder_type,
|
|
205
|
+
**kwargs,
|
|
194
206
|
)
|
|
195
207
|
|
|
196
208
|
def indel(
|
|
@@ -247,6 +259,7 @@ class PoET2Model(PoETModel, EmbeddingModel):
|
|
|
247
259
|
decoder_type=decoder_type,
|
|
248
260
|
insert=insert,
|
|
249
261
|
delete=delete,
|
|
262
|
+
**kwargs,
|
|
250
263
|
)
|
|
251
264
|
|
|
252
265
|
def single_site(
|
|
@@ -256,6 +269,7 @@ class PoET2Model(PoETModel, EmbeddingModel):
|
|
|
256
269
|
query: str | bytes | Protein | Complex | Query | None = None,
|
|
257
270
|
use_query_structure_in_decoder: bool = True,
|
|
258
271
|
decoder_type: Literal["mlm", "clm"] | None = None,
|
|
272
|
+
**kwargs,
|
|
259
273
|
) -> EmbeddingsScoreSingleSiteFuture:
|
|
260
274
|
"""
|
|
261
275
|
Score all single substitutions of the query sequence using the specified prompt.
|
|
@@ -272,6 +286,8 @@ class PoET2Model(PoETModel, EmbeddingModel):
|
|
|
272
286
|
Whether to use query structure in decoder. Default is True.
|
|
273
287
|
decoder_type : {'mlm', 'clm'} or None, optional
|
|
274
288
|
Decoder type. Default is None.
|
|
289
|
+
**kwargs
|
|
290
|
+
Additional keyword arguments.
|
|
275
291
|
|
|
276
292
|
Returns
|
|
277
293
|
-------
|
|
@@ -287,6 +303,7 @@ class PoET2Model(PoETModel, EmbeddingModel):
|
|
|
287
303
|
query_id=query_id,
|
|
288
304
|
use_query_structure_in_decoder=use_query_structure_in_decoder,
|
|
289
305
|
decoder_type=decoder_type,
|
|
306
|
+
**kwargs,
|
|
290
307
|
)
|
|
291
308
|
|
|
292
309
|
def generate(
|
|
@@ -311,6 +328,7 @@ class PoET2Model(PoETModel, EmbeddingModel):
|
|
|
311
328
|
seed: int | None = None,
|
|
312
329
|
ensemble_weights: Sequence[float] | None = None,
|
|
313
330
|
ensemble_method: Literal["arithmetic", "geometric"] | None = None,
|
|
331
|
+
**kwargs,
|
|
314
332
|
) -> EmbeddingsGenerateFuture:
|
|
315
333
|
"""
|
|
316
334
|
Generate protein sequences conditioned on a prompt.
|
|
@@ -345,6 +363,8 @@ class PoET2Model(PoETModel, EmbeddingModel):
|
|
|
345
363
|
If "arithmetic", the weighted mean is used; if "geometric", the weighted
|
|
346
364
|
geometric mean is used. If None (default), the method defaults to
|
|
347
365
|
"arithmetic", but this behavior may change in the future.
|
|
366
|
+
**kwargs
|
|
367
|
+
Additional keyword arguments.
|
|
348
368
|
|
|
349
369
|
Returns
|
|
350
370
|
-------
|
|
@@ -384,6 +404,7 @@ class PoET2Model(PoETModel, EmbeddingModel):
|
|
|
384
404
|
use_query_structure_in_decoder=use_query_structure_in_decoder,
|
|
385
405
|
ensemble_weights=ensemble_weights,
|
|
386
406
|
ensemble_method=ensemble_method,
|
|
407
|
+
**kwargs,
|
|
387
408
|
)
|
|
388
409
|
|
|
389
410
|
def fit_svd(
|
|
@@ -211,15 +211,18 @@ def fold_get_extra_result(
|
|
|
211
211
|
|
|
212
212
|
def formatter(response):
|
|
213
213
|
return np.load(io.BytesIO(response.content))
|
|
214
|
+
|
|
214
215
|
elif key in {"confidence", "affinity"}:
|
|
215
216
|
|
|
216
217
|
def formatter(response):
|
|
217
218
|
return response.json()
|
|
219
|
+
|
|
218
220
|
elif key in {"score", "metrics"}:
|
|
219
221
|
import pandas as pd
|
|
220
222
|
|
|
221
223
|
def formatter(response):
|
|
222
224
|
return pd.read_csv(io.StringIO(response.content.decode()))
|
|
225
|
+
|
|
223
226
|
else:
|
|
224
227
|
raise ValueError(f"Unexpected key: {key}")
|
|
225
228
|
endpoint = PATH_PREFIX + f"/{job_id}/{sequence_or_index}/{key}"
|
|
@@ -295,10 +298,12 @@ def fold_get_batch_extra_result(
|
|
|
295
298
|
|
|
296
299
|
def formatter(response):
|
|
297
300
|
return np.load(io.BytesIO(response.content))
|
|
301
|
+
|
|
298
302
|
elif key in {"confidence", "affinity"}:
|
|
299
303
|
|
|
300
304
|
def formatter(response):
|
|
301
305
|
return response.json()
|
|
306
|
+
|
|
302
307
|
else:
|
|
303
308
|
raise ValueError(f"Unexpected key: {key}")
|
|
304
309
|
endpoint = PATH_PREFIX + f"/{job_id}/results/{key}"
|
|
@@ -315,7 +320,6 @@ def fold_models_post(
|
|
|
315
320
|
session: APISession,
|
|
316
321
|
model_id: str,
|
|
317
322
|
sequences: Sequence[Sequence[Mapping[str, Any]]],
|
|
318
|
-
force_recompute: bool = False,
|
|
319
323
|
**kwargs,
|
|
320
324
|
) -> FoldJob:
|
|
321
325
|
"""
|
|
@@ -335,8 +339,6 @@ def fold_models_post(
|
|
|
335
339
|
The outer list represents the batch of requests, and the inner
|
|
336
340
|
list represents the complex, with each item in the list being
|
|
337
341
|
an entity in that complex. A monomer would thus be a single item.
|
|
338
|
-
force_recompute : bool
|
|
339
|
-
If True, send ?force=true so the backend bypasses the result cache and recomputes. Default: False.
|
|
340
342
|
**kwargs
|
|
341
343
|
Additional keyword arguments to be sent with POST body.
|
|
342
344
|
|
|
@@ -355,6 +357,5 @@ def fold_models_post(
|
|
|
355
357
|
if v is not None:
|
|
356
358
|
body[k] = v
|
|
357
359
|
|
|
358
|
-
|
|
359
|
-
response = session.post(endpoint, json=body, params=params)
|
|
360
|
+
response = session.post(endpoint, json=body)
|
|
360
361
|
return FoldJob.model_validate(response.json())
|
|
@@ -426,7 +426,12 @@ def create_query(
|
|
|
426
426
|
"chemical/x-mmcif",
|
|
427
427
|
)
|
|
428
428
|
else:
|
|
429
|
-
|
|
429
|
+
name = query.name or "query"
|
|
430
|
+
qf, filename, typ = (
|
|
431
|
+
b">" + name.encode() + b"\n" + query.sequence + b"\n",
|
|
432
|
+
"query.fasta",
|
|
433
|
+
"text/x-fasta",
|
|
434
|
+
)
|
|
430
435
|
elif isinstance(query, Complex):
|
|
431
436
|
_assert_protein_only(query)
|
|
432
437
|
has_structure = any(p.has_structure for p in query.get_proteins().values())
|
|
@@ -127,7 +127,6 @@ def svd_fit_post(
|
|
|
127
127
|
assay_id: str | None = None,
|
|
128
128
|
n_components: int = 1024,
|
|
129
129
|
reduction: str | None = None,
|
|
130
|
-
force_recompute: bool = False,
|
|
131
130
|
**kwargs,
|
|
132
131
|
) -> SVDFitJob:
|
|
133
132
|
"""
|
|
@@ -151,8 +150,6 @@ def svd_fit_post(
|
|
|
151
150
|
Type of embedding reduction to use for computing features.
|
|
152
151
|
E.g. "MEAN" or "SUM". Useful when dealing with variable length
|
|
153
152
|
sequence. Defaults to None.
|
|
154
|
-
force_recompute : bool
|
|
155
|
-
If True, send ?force=true so the backend bypasses the result cache and recomputes. Default: False.
|
|
156
153
|
kwargs:
|
|
157
154
|
Additional keyword arguments to be passed to foundational models, e.g. prompt_id for PoET models.
|
|
158
155
|
|
|
@@ -183,8 +180,7 @@ def svd_fit_post(
|
|
|
183
180
|
# add kwargs for embeddings kwargs
|
|
184
181
|
body.update(**kwargs)
|
|
185
182
|
|
|
186
|
-
|
|
187
|
-
response = session.post(endpoint, json=body, params=params)
|
|
183
|
+
response = session.post(endpoint, json=body)
|
|
188
184
|
# return job for metadata
|
|
189
185
|
return SVDFitJob.model_validate(response.json())
|
|
190
186
|
|
|
@@ -193,7 +189,7 @@ def svd_embed_post(
|
|
|
193
189
|
session: APISession,
|
|
194
190
|
svd_id: str,
|
|
195
191
|
sequences: list[bytes] | list[str],
|
|
196
|
-
|
|
192
|
+
**kwargs,
|
|
197
193
|
) -> SVDEmbeddingsJob:
|
|
198
194
|
"""
|
|
199
195
|
POST a request for embeddings from the given SVD model.
|
|
@@ -206,8 +202,6 @@ def svd_embed_post(
|
|
|
206
202
|
SVD model to use
|
|
207
203
|
sequences : List[bytes]
|
|
208
204
|
sequences to SVD
|
|
209
|
-
force_recompute : bool
|
|
210
|
-
If True, send ?force=true so the backend bypasses the result cache and recomputes. Default: False.
|
|
211
205
|
|
|
212
206
|
Returns
|
|
213
207
|
-------
|
|
@@ -219,7 +213,6 @@ def svd_embed_post(
|
|
|
219
213
|
body = {
|
|
220
214
|
"sequences": sequences_unicode,
|
|
221
215
|
}
|
|
222
|
-
|
|
223
|
-
response = session.post(endpoint, json=body, params=params)
|
|
216
|
+
response = session.post(endpoint, json=body)
|
|
224
217
|
|
|
225
218
|
return SVDEmbeddingsJob.model_validate(response.json())
|
|
@@ -172,7 +172,6 @@ def umap_fit_post(
|
|
|
172
172
|
n_neighbors: int = 15,
|
|
173
173
|
min_dist: float = 0.1,
|
|
174
174
|
reduction: str | None = None,
|
|
175
|
-
force_recompute: bool = False,
|
|
176
175
|
**kwargs,
|
|
177
176
|
) -> UMAPFitJob:
|
|
178
177
|
"""
|
|
@@ -201,8 +200,6 @@ def umap_fit_post(
|
|
|
201
200
|
Minimum distance in UMAP fitting. Defaults to 0.1.
|
|
202
201
|
reduction : str | None
|
|
203
202
|
Embedding reduction to use for fitting the UMAP. Defaults to None.
|
|
204
|
-
force_recompute : bool
|
|
205
|
-
If True, send ?force=true so the backend bypasses the result cache and recomputes. Default: False.
|
|
206
203
|
kwargs:
|
|
207
204
|
Additional keyword arguments to be passed to foundational models, e.g. prompt_id for PoET models.
|
|
208
205
|
|
|
@@ -236,8 +233,7 @@ def umap_fit_post(
|
|
|
236
233
|
# add kwargs for embeddings kwargs
|
|
237
234
|
body.update(**kwargs)
|
|
238
235
|
|
|
239
|
-
|
|
240
|
-
response = session.post(endpoint, json=body, params=params)
|
|
236
|
+
response = session.post(endpoint, json=body)
|
|
241
237
|
# return job for metadata
|
|
242
238
|
return UMAPFitJob.model_validate(response.json())
|
|
243
239
|
|
|
@@ -246,7 +242,7 @@ def umap_embed_post(
|
|
|
246
242
|
session: APISession,
|
|
247
243
|
umap_id: str,
|
|
248
244
|
sequences: list[bytes] | list[str],
|
|
249
|
-
|
|
245
|
+
**kwargs,
|
|
250
246
|
) -> UMAPEmbeddingsJob:
|
|
251
247
|
"""
|
|
252
248
|
POST a request for embeddings from the given UMAP model.
|
|
@@ -259,8 +255,6 @@ def umap_embed_post(
|
|
|
259
255
|
UMAP model to use
|
|
260
256
|
sequences : List[bytes]
|
|
261
257
|
sequences to UMAP
|
|
262
|
-
force_recompute : bool
|
|
263
|
-
If True, send ?force=true so the backend bypasses the result cache and recomputes. Default: False.
|
|
264
258
|
|
|
265
259
|
Returns
|
|
266
260
|
-------
|
|
@@ -272,7 +266,6 @@ def umap_embed_post(
|
|
|
272
266
|
body = {
|
|
273
267
|
"sequences": sequences_unicode,
|
|
274
268
|
}
|
|
275
|
-
|
|
276
|
-
response = session.post(endpoint, json=body, params=params)
|
|
269
|
+
response = session.post(endpoint, json=body)
|
|
277
270
|
|
|
278
271
|
return UMAPEmbeddingsJob.model_validate(response.json())
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|