openprotein-python 0.1.1b8__tar.gz → 0.1.1b10__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 (27) hide show
  1. {openprotein_python-0.1.1b8 → openprotein_python-0.1.1b10}/PKG-INFO +5 -2
  2. {openprotein_python-0.1.1b8 → openprotein_python-0.1.1b10}/README.md +4 -1
  3. {openprotein_python-0.1.1b8/openprotein_python → openprotein_python-0.1.1b10/openprotein}/__init__.py +9 -9
  4. {openprotein_python-0.1.1b8/openprotein_python → openprotein_python-0.1.1b10/openprotein}/_version.py +1 -1
  5. {openprotein_python-0.1.1b8/openprotein_python → openprotein_python-0.1.1b10/openprotein}/api/data.py +4 -4
  6. {openprotein_python-0.1.1b8/openprotein_python → openprotein_python-0.1.1b10/openprotein}/api/design.py +6 -6
  7. {openprotein_python-0.1.1b8/openprotein_python → openprotein_python-0.1.1b10/openprotein}/api/embedding.py +6 -6
  8. {openprotein_python-0.1.1b8/openprotein_python → openprotein_python-0.1.1b10/openprotein}/api/jobs.py +11 -5
  9. {openprotein_python-0.1.1b8/openprotein_python → openprotein_python-0.1.1b10/openprotein}/api/poet.py +6 -6
  10. {openprotein_python-0.1.1b8/openprotein_python → openprotein_python-0.1.1b10/openprotein}/api/predict.py +6 -6
  11. {openprotein_python-0.1.1b8/openprotein_python → openprotein_python-0.1.1b10/openprotein}/api/train.py +5 -5
  12. {openprotein_python-0.1.1b8/openprotein_python → openprotein_python-0.1.1b10/openprotein}/base.py +2 -2
  13. {openprotein_python-0.1.1b8/openprotein_python → openprotein_python-0.1.1b10/openprotein}/models.py +33 -33
  14. {openprotein_python-0.1.1b8 → openprotein_python-0.1.1b10}/pyproject.toml +2 -1
  15. openprotein_python-0.1.1b8/openprotein_python/api/__pycache__/__init__.cpython-38.pyc +0 -0
  16. openprotein_python-0.1.1b8/openprotein_python/api/__pycache__/data.cpython-38.pyc +0 -0
  17. openprotein_python-0.1.1b8/openprotein_python/api/__pycache__/design.cpython-38.pyc +0 -0
  18. openprotein_python-0.1.1b8/openprotein_python/api/__pycache__/embedding.cpython-38.pyc +0 -0
  19. openprotein_python-0.1.1b8/openprotein_python/api/__pycache__/jobs.cpython-38.pyc +0 -0
  20. openprotein_python-0.1.1b8/openprotein_python/api/__pycache__/poet.cpython-38.pyc +0 -0
  21. openprotein_python-0.1.1b8/openprotein_python/api/__pycache__/predict.cpython-38.pyc +0 -0
  22. openprotein_python-0.1.1b8/openprotein_python/api/__pycache__/train.cpython-38.pyc +0 -0
  23. {openprotein_python-0.1.1b8 → openprotein_python-0.1.1b10}/LICENSE.txt +0 -0
  24. {openprotein_python-0.1.1b8/openprotein_python → openprotein_python-0.1.1b10/openprotein}/api/__init__.py +0 -0
  25. {openprotein_python-0.1.1b8/openprotein_python → openprotein_python-0.1.1b10/openprotein}/config.py +0 -0
  26. {openprotein_python-0.1.1b8/openprotein_python → openprotein_python-0.1.1b10/openprotein}/errors.py +0 -0
  27. {openprotein_python-0.1.1b8/openprotein_python → openprotein_python-0.1.1b10/openprotein}/fasta.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: openprotein-python
3
- Version: 0.1.1b8
3
+ Version: 0.1.1b10
4
4
  Summary: OpenProtein Python interface.
5
5
  Home-page: https://docs.openprotein.ai/
6
6
  License: MIT
@@ -22,6 +22,9 @@ Requires-Dist: requests (>=2)
22
22
  Requires-Dist: tqdm (>=4)
23
23
  Description-Content-Type: text/markdown
24
24
 
25
+ [![PyPI version](https://badge.fury.io/py/openprotein-python.svg)](https://pypi.org/project/openprotein-python/)
26
+ [![Coverage](./apidocs/source/coverage.svg)](https://pypi.org/project/openprotein-python/)
27
+
25
28
  # openprotein-python
26
29
  Python interface for the OpenProtein.AI REST API.
27
30
 
@@ -36,7 +39,7 @@ pip install openprotein_python
36
39
 
37
40
  First, create a session using your login credentials.
38
41
  ```
39
- import openprotein
42
+ import openprotein_python
40
43
  session = openprotein.connect(USERNAME, PASSWORD)
41
44
  ```
42
45
 
@@ -1,3 +1,6 @@
1
+ [![PyPI version](https://badge.fury.io/py/openprotein-python.svg)](https://pypi.org/project/openprotein-python/)
2
+ [![Coverage](./apidocs/source/coverage.svg)](https://pypi.org/project/openprotein-python/)
3
+
1
4
  # openprotein-python
2
5
  Python interface for the OpenProtein.AI REST API.
3
6
 
@@ -12,7 +15,7 @@ pip install openprotein_python
12
15
 
13
16
  First, create a session using your login credentials.
14
17
  ```
15
- import openprotein
18
+ import openprotein_python
16
19
  session = openprotein.connect(USERNAME, PASSWORD)
17
20
  ```
18
21
 
@@ -1,13 +1,13 @@
1
- from openprotein_python._version import __version__
1
+ from openprotein._version import __version__
2
2
 
3
- from openprotein_python.base import APISession
4
- from openprotein_python.api.jobs import JobsAPI, Job
5
- from openprotein_python.api.data import DataAPI
6
- from openprotein_python.api.poet import PoetAPI
7
- from openprotein_python.api.embedding import EmbeddingAPI
8
- from openprotein_python.api.train import TrainingAPI
9
- from openprotein_python.api.design import DesignAPI
10
- from openprotein_python.api.predict import PredictAPI
3
+ from openprotein.base import APISession
4
+ from openprotein.api.jobs import JobsAPI, Job
5
+ from openprotein.api.data import DataAPI
6
+ from openprotein.api.poet import PoetAPI
7
+ from openprotein.api.embedding import EmbeddingAPI
8
+ from openprotein.api.train import TrainingAPI
9
+ from openprotein.api.design import DesignAPI
10
+ from openprotein.api.predict import PredictAPI
11
11
  class OpenProtein(APISession):
12
12
  """
13
13
  The base class for accessing OpenProtein API functionality.
@@ -1,2 +1,2 @@
1
- __version_tuple__ = version_tuple = (0, 1, 1, 'b8')
1
+ __version_tuple__ = version_tuple = (0, 1, 1, 'b10')
2
2
  __version__ = version = '.'.join(str(x) for x in __version_tuple__)
@@ -3,10 +3,10 @@ import pydantic
3
3
  from typing import Optional, List
4
4
  from io import BytesIO
5
5
 
6
- from openprotein_python.models import AssayMetadata, AssayDataPage
7
- from openprotein_python.errors import APIError
8
- from openprotein_python.base import APISession
9
- import openprotein_python.config as config
6
+ from openprotein.models import AssayMetadata, AssayDataPage
7
+ from openprotein.errors import APIError
8
+ from openprotein.base import APISession
9
+ import openprotein.config as config
10
10
 
11
11
 
12
12
  def list_models(session: APISession, assay_id: str) -> List:
@@ -1,12 +1,12 @@
1
1
  from typing import Optional
2
2
  import pydantic
3
3
 
4
- from openprotein_python.base import APISession
5
- from openprotein_python.api.jobs import AsyncJobFuture, Job
6
- import openprotein_python.config as config
7
- from openprotein_python.api.jobs import load_job
8
- from openprotein_python.models import DesignJobCreate, JobType, DesignResults
9
- from openprotein_python.errors import (
4
+ from openprotein.base import APISession
5
+ from openprotein.api.jobs import AsyncJobFuture, Job
6
+ import openprotein.config as config
7
+ from openprotein.api.jobs import load_job
8
+ from openprotein.models import DesignJobCreate, JobType, DesignResults
9
+ from openprotein.errors import (
10
10
  APIError,
11
11
  InvalidJob,
12
12
  )
@@ -1,15 +1,15 @@
1
- from openprotein_python.base import APISession
2
- from openprotein_python.api.jobs import (
1
+ from openprotein.base import APISession
2
+ from openprotein.api.jobs import (
3
3
  Job,
4
4
  MappedAsyncJobFuture,
5
5
  PagedAsyncJobFuture,
6
6
  job_get,
7
7
  JobStatus,
8
8
  )
9
- from openprotein_python.errors import InvalidJob
10
- import openprotein_python.config as config
11
- from openprotein_python.api.jobs import load_job
12
- from openprotein_python.models import (
9
+ from openprotein.errors import InvalidJob
10
+ import openprotein.config as config
11
+ from openprotein.api.jobs import load_job
12
+ from openprotein.models import (
13
13
  ModelDescription,
14
14
  TokenInfo,
15
15
  ModelMetadata,
@@ -9,13 +9,19 @@ from enum import Enum
9
9
 
10
10
  import tqdm
11
11
  import pydantic
12
- from pydantic import BaseModel
12
+ from pydantic import BaseModel, ConfigDict
13
13
 
14
- from openprotein_python.errors import TimeoutException
15
- from openprotein_python.base import APISession
16
- import openprotein_python.config as config
14
+ from openprotein.errors import TimeoutException
15
+ from openprotein.base import APISession
16
+ import openprotein.config as config
17
17
 
18
18
 
19
+
20
+ class NewModel(BaseModel):
21
+ model_config = ConfigDict(
22
+ protected_namespaces=()
23
+ )
24
+
19
25
  class JobStatus(str, Enum):
20
26
  PENDING: str = "PENDING"
21
27
  RUNNING: str = "RUNNING"
@@ -34,7 +40,7 @@ class JobStatus(str, Enum):
34
40
 
35
41
 
36
42
 
37
- class Job(BaseModel):
43
+ class Job(NewModel):
38
44
  status: JobStatus
39
45
  job_id: str
40
46
  job_type: str
@@ -5,18 +5,18 @@ import csv
5
5
  import codecs
6
6
  import requests
7
7
 
8
- from openprotein_python.base import APISession
9
- from openprotein_python.api.jobs import (
8
+ from openprotein.base import APISession
9
+ from openprotein.api.jobs import (
10
10
  Job,
11
11
  AsyncJobFuture,
12
12
  StreamingAsyncJobFuture,
13
13
  job_get,
14
14
  job_args_get,
15
15
  )
16
- from openprotein_python.api.jobs import load_job #as base_load_job
17
- import openprotein_python.config as config
16
+ from openprotein.api.jobs import load_job #as base_load_job
17
+ import openprotein.config as config
18
18
 
19
- from openprotein_python.models import (
19
+ from openprotein.models import (
20
20
  MSASamplingMethod,
21
21
  PoetInputType,
22
22
  PoetScoreJob,
@@ -27,7 +27,7 @@ from openprotein_python.models import (
27
27
  PoetSSPJob,
28
28
  PoetSSPResult,
29
29
  )
30
- from openprotein_python.errors import (
30
+ from openprotein.errors import (
31
31
  InvalidParameterError,
32
32
  MissingParameterError,
33
33
  APIError,
@@ -1,18 +1,18 @@
1
1
  from typing import Optional, List, Union
2
2
  import pydantic
3
3
 
4
- from openprotein_python.base import APISession
5
- from openprotein_python.api.jobs import AsyncJobFuture, Job
6
- from openprotein_python.models import (
4
+ from openprotein.base import APISession
5
+ from openprotein.api.jobs import AsyncJobFuture, Job
6
+ from openprotein.models import (
7
7
  SequenceDataset,
8
8
  SequenceData,
9
9
  PredictJob,
10
10
  PredictSingleSiteJob,
11
11
  JobType,
12
12
  )
13
- from openprotein_python.errors import InvalidParameterError, APIError, InvalidJob
14
- from openprotein_python.api.train import TrainFuture
15
- from openprotein_python.api.jobs import load_job
13
+ from openprotein.errors import InvalidParameterError, APIError, InvalidJob
14
+ from openprotein.api.train import TrainFuture
15
+ from openprotein.api.jobs import load_job
16
16
 
17
17
 
18
18
  def _create_predict_job(
@@ -1,11 +1,11 @@
1
1
  from typing import Optional, List, Union
2
2
  import pydantic
3
- from openprotein_python.base import APISession
4
- from openprotein_python.api.jobs import AsyncJobFuture, Job
3
+ from openprotein.base import APISession
4
+ from openprotein.api.jobs import AsyncJobFuture, Job
5
5
 
6
- from openprotein_python.models import TrainGraph, JobType, Jobplus, CVResults
7
- from openprotein_python.errors import InvalidParameterError, APIError, InvalidJob
8
- from openprotein_python.api.data import AssayDataset, AssayMetadata
6
+ from openprotein.models import TrainGraph, JobType, Jobplus, CVResults
7
+ from openprotein.errors import InvalidParameterError, APIError, InvalidJob
8
+ from openprotein.api.data import AssayDataset, AssayMetadata
9
9
 
10
10
 
11
11
  def list_models(session: APISession, job_id: str) -> List:
@@ -1,4 +1,4 @@
1
- import openprotein_python.config as config
1
+ import openprotein.config as config
2
2
 
3
3
  import requests
4
4
  from urllib.parse import urljoin
@@ -7,7 +7,7 @@ from typing import Union
7
7
  from requests.adapters import HTTPAdapter
8
8
  from requests.packages.urllib3.util.retry import Retry
9
9
 
10
- from openprotein_python.errors import APIError, InvalidParameterError, MissingParameterError, AuthError
10
+ from openprotein.errors import APIError, InvalidParameterError, MissingParameterError, AuthError
11
11
 
12
12
  class BearerAuth(requests.auth.AuthBase):
13
13
  """
@@ -3,21 +3,21 @@ from typing import Optional, List, Union, Dict, Literal
3
3
  from datetime import datetime
4
4
  from enum import Enum
5
5
  import numpy as np
6
- from pydantic import BaseModel, Field, validator
7
- from openprotein_python.api.jobs import Job, JobStatus
6
+ from pydantic import BaseModel, Field, validator, ConfigDict
7
+ from openprotein.api.jobs import Job, JobStatus, NewModel
8
8
 
9
- class ModelDescription(BaseModel):
9
+ class ModelDescription(NewModel):
10
10
  citation_title: Optional[str] = None
11
11
  doi: Optional[str] = None
12
12
  summary: str
13
13
 
14
- class TokenInfo(BaseModel):
14
+ class TokenInfo(NewModel):
15
15
  id: int
16
16
  token: str
17
17
  primary: bool
18
18
  description: str
19
19
 
20
- class ModelMetadata(BaseModel):
20
+ class ModelMetadata(NewModel):
21
21
  model_id: str
22
22
  description: ModelDescription
23
23
  max_sequence_length: Optional[int] = None
@@ -27,7 +27,7 @@ class ModelMetadata(BaseModel):
27
27
  output_tokens: List[str]
28
28
  token_descriptions: List[List[TokenInfo]]
29
29
 
30
- class EmbeddedSequence(BaseModel):
30
+ class EmbeddedSequence(NewModel):
31
31
  class Config:
32
32
  arbitrary_types_allowed = True
33
33
 
@@ -52,7 +52,7 @@ class SVDJob(Job):
52
52
  pass
53
53
 
54
54
 
55
- class SVDMetadata(BaseModel):
55
+ class SVDMetadata(NewModel):
56
56
  id: str
57
57
  status: JobStatus
58
58
  created_date: Optional[datetime] = None
@@ -64,15 +64,15 @@ class SVDMetadata(BaseModel):
64
64
  def is_done(self):
65
65
  return self.status.done()
66
66
 
67
- class DesignMetadata(BaseModel):
67
+ class DesignMetadata(NewModel):
68
68
  y_mu: Optional[float] = None
69
69
  y_var: Optional[float] = None
70
70
 
71
- class DesignSubscore(BaseModel):
71
+ class DesignSubscore(NewModel):
72
72
  score: int
73
73
  metadata: DesignMetadata
74
74
 
75
- class DesignStep(BaseModel):
75
+ class DesignStep(NewModel):
76
76
  step: int
77
77
  sample_index: int
78
78
  sequence: str
@@ -88,7 +88,7 @@ class DesignStep(BaseModel):
88
88
  umap2: float
89
89
 
90
90
 
91
- class DesignResults(BaseModel):
91
+ class DesignResults(NewModel):
92
92
  status: str
93
93
  job_id: str
94
94
  created_date: str
@@ -106,20 +106,20 @@ class DirectionEnum(str, Enum):
106
106
  eq = "="
107
107
 
108
108
 
109
- class Criterion(BaseModel):
109
+ class Criterion(NewModel):
110
110
  target: float
111
111
  weight: float
112
112
  direction: str
113
113
 
114
114
 
115
- class ModelCriterion(BaseModel):
115
+ class ModelCriterion(NewModel):
116
116
  criterion_type: Literal["model"]
117
117
  model_id: str
118
118
  measurement_name: str
119
119
  criterion: Criterion
120
120
 
121
121
 
122
- class NMutationCriterion(BaseModel):
122
+ class NMutationCriterion(NewModel):
123
123
  criterion_type: Literal["n_mutations"]
124
124
  # sequences: Optional[List[str]]
125
125
 
@@ -127,7 +127,7 @@ class NMutationCriterion(BaseModel):
127
127
  CriterionItem = Union[ModelCriterion, NMutationCriterion]
128
128
 
129
129
 
130
- class DesignJobCreate(BaseModel):
130
+ class DesignJobCreate(NewModel):
131
131
  assay_id: str
132
132
  criteria: List[List[CriterionItem]]
133
133
  num_steps: Optional[int] = 8
@@ -173,34 +173,34 @@ class Jobplus(Job):
173
173
  sequence_length: Optional[int] = None
174
174
 
175
175
 
176
- class TrainStep(BaseModel):
176
+ class TrainStep(NewModel):
177
177
  step: int
178
178
  loss: float
179
179
  tag: str
180
180
  tags: dict
181
181
 
182
182
 
183
- class TrainGraph(BaseModel):
183
+ class TrainGraph(NewModel):
184
184
  traingraph: List[TrainStep]
185
185
  created_date: datetime
186
186
  job_id: str
187
187
 
188
188
 
189
- class SequenceData(BaseModel):
189
+ class SequenceData(NewModel):
190
190
  sequence: str
191
191
 
192
192
 
193
- class SequenceDataset(BaseModel):
193
+ class SequenceDataset(NewModel):
194
194
  sequences: List[str]
195
195
 
196
196
 
197
- class JobDetails(BaseModel):
197
+ class JobDetails(NewModel):
198
198
  job_id: str
199
199
  job_type: str
200
200
  status: str
201
201
 
202
202
 
203
- class AssayMetadata(BaseModel):
203
+ class AssayMetadata(NewModel):
204
204
  assay_name: str
205
205
  assay_description: str
206
206
  assay_id: str
@@ -212,12 +212,12 @@ class AssayMetadata(BaseModel):
212
212
  sequence_length: Optional[int] = None
213
213
 
214
214
 
215
- class AssayDataRow(BaseModel):
215
+ class AssayDataRow(NewModel):
216
216
  mut_sequence: str
217
217
  measurement_values: List[Union[float, None]]
218
218
 
219
219
 
220
- class AssayDataPage(BaseModel):
220
+ class AssayDataPage(NewModel):
221
221
  assaymetadata: AssayMetadata
222
222
  page_size: int
223
223
  page_offset: int
@@ -243,7 +243,7 @@ class MSASamplingMethod(str, Enum):
243
243
 
244
244
 
245
245
 
246
- class PromptPostParams(BaseModel):
246
+ class PromptPostParams(NewModel):
247
247
  msa_id: str
248
248
  num_sequences: Optional[int] = Field(None, ge=0, lt=100)
249
249
  num_residues: Optional[int] = Field(None, ge=0, lt=24577)
@@ -255,7 +255,7 @@ class PromptPostParams(BaseModel):
255
255
  num_ensemble_prompts: int = 1
256
256
  random_seed: Optional[int] = None
257
257
 
258
- #class PoetSiteResult(BaseModel):
258
+ #class PoetSiteResult(NewModel):
259
259
  # # obsolete
260
260
  # sequence: bytes
261
261
  # score: List[float]
@@ -277,7 +277,7 @@ class PoetInputType(str, Enum):
277
277
  PROMPT = "PROMPT"
278
278
 
279
279
 
280
- class PoetScoreResult(BaseModel):
280
+ class PoetScoreResult(NewModel):
281
281
  sequence: bytes
282
282
  score: List[float]
283
283
  name: Optional[str] = None
@@ -291,7 +291,7 @@ class PoetScoreJob(Job):
291
291
  result: Optional[List[PoetScoreResult]] = None
292
292
  n_completed: Optional[int] = None
293
293
 
294
- class PoetSSPResult(BaseModel):
294
+ class PoetSSPResult(NewModel):
295
295
  sequence: bytes
296
296
  score: List[float]
297
297
  name: Optional[str] = None
@@ -312,7 +312,7 @@ class PoetSSPJob(PoetScoreJob):
312
312
  result: Optional[List[PoetSSPResult]] = None
313
313
  n_completed: Optional[int] = None
314
314
 
315
- class Prediction(BaseModel):
315
+ class Prediction(NewModel):
316
316
  """Prediction details."""
317
317
 
318
318
  model_id: str
@@ -320,7 +320,7 @@ class Prediction(BaseModel):
320
320
  properties: Dict[str, Dict[str, float]]
321
321
 
322
322
 
323
- class PredictJobBase(BaseModel):
323
+ class PredictJobBase(NewModel):
324
324
  """Shared properties for predict job outputs."""
325
325
 
326
326
  # might be none if just fetching
@@ -329,7 +329,7 @@ class PredictJobBase(BaseModel):
329
329
  status: str
330
330
 
331
331
 
332
- class DesignJob(BaseModel):
332
+ class DesignJob(NewModel):
333
333
  job_id: Optional[str] = None
334
334
  job_type: str
335
335
  status: str
@@ -338,7 +338,7 @@ class DesignJob(BaseModel):
338
338
  class PredictJob(PredictJobBase):
339
339
  """Properties about predict job returned via API."""
340
340
 
341
- class SequencePrediction(BaseModel):
341
+ class SequencePrediction(NewModel):
342
342
  """Sequence prediction."""
343
343
 
344
344
  sequence: str
@@ -350,7 +350,7 @@ class PredictJob(PredictJobBase):
350
350
  class PredictSingleSiteJob(PredictJobBase):
351
351
  """Properties about single-site prediction job returned via API."""
352
352
 
353
- class SequencePrediction(BaseModel):
353
+ class SequencePrediction(NewModel):
354
354
  """Sequence prediction."""
355
355
 
356
356
  position: int
@@ -361,7 +361,7 @@ class PredictSingleSiteJob(PredictJobBase):
361
361
  result: Optional[List[SequencePrediction]] = None
362
362
 
363
363
 
364
- class CVItem(BaseModel):
364
+ class CVItem(NewModel):
365
365
  row_index: int
366
366
  sequence: str
367
367
  measurement_name: str
@@ -1,6 +1,7 @@
1
1
  [tool.poetry]
2
2
  name = "openprotein_python"
3
- version = "0.1.1b8"
3
+ packages = [{include = "openprotein"}]
4
+ version = "0.1.1b10"
4
5
  description = "OpenProtein Python interface."
5
6
  license = "MIT"
6
7
  readme = "README.md"