6
6
isort:skip_file
7
7
"""
8
8
9
+ from typing import TYPE_CHECKING
10
+ import warnings
11
+
9
12
from openprotein ._version import __version__
10
13
from openprotein .app import (
11
- AssayDataAPI ,
14
+ DataAPI ,
12
15
JobsAPI ,
13
- TrainingAPI ,
14
- DesignAPI ,
15
16
AlignAPI ,
16
17
EmbeddingsAPI ,
17
18
FoldAPI ,
18
19
SVDAPI ,
19
20
UMAPAPI ,
20
21
PredictorAPI ,
21
- DesignerAPI ,
22
+ DesignAPI ,
22
23
)
23
24
from openprotein .app .models import Future
24
25
from openprotein .base import APISession
25
26
27
+ if TYPE_CHECKING :
28
+ from openprotein .app .deprecated import TrainingAPI , DesignAPI
29
+
26
30
27
31
class OpenProtein (APISession ):
28
32
"""
@@ -31,15 +35,14 @@ class OpenProtein(APISession):
31
35
32
36
_data = None
33
37
_jobs = None
34
- _train = None
35
- _design = None
36
38
_align = None
37
- _embedding = None
39
+ _embeddings = None
38
40
_svd = None
39
41
_umap = None
40
42
_fold = None
41
43
_predictor = None
42
44
_designer = None
45
+ _deprecated = None
43
46
44
47
def wait (self , future : Future , * args , ** kwargs ):
45
48
return future .wait (* args , ** kwargs )
@@ -50,14 +53,20 @@ def load_job(self, job_id):
50
53
return self .jobs .get (job_id = job_id )
51
54
52
55
@property
53
- def data (self ) -> AssayDataAPI :
56
+ def data (self ) -> DataAPI :
54
57
"""
55
58
The data submodule gives access to functionality for uploading and accessing user data.
56
59
"""
57
60
if self ._data is None :
58
- self ._data = AssayDataAPI (self )
61
+ self ._data = DataAPI (self )
59
62
return self ._data
60
63
64
+ @property
65
+ def train (self ):
66
+ raise AttributeError (
67
+ "Access to deprecated train module is under the deprecated property, i.e. session.deprecated.train"
68
+ )
69
+
61
70
@property
62
71
def jobs (self ) -> JobsAPI :
63
72
"""
@@ -67,24 +76,6 @@ def jobs(self) -> JobsAPI:
67
76
self ._jobs = JobsAPI (self )
68
77
return self ._jobs
69
78
70
- @property
71
- def train (self ) -> TrainingAPI :
72
- """
73
- The train submodule gives access to functionality for training and validating ML models.
74
- """
75
- if self ._train is None :
76
- self ._train = TrainingAPI (self )
77
- return self ._train
78
-
79
- @property
80
- def design (self ) -> DesignAPI :
81
- """
82
- The design submodule gives access to functionality for designing new sequences using models from train.
83
- """
84
- if self ._design is None :
85
- self ._design = DesignAPI (self )
86
- return self ._design
87
-
88
79
@property
89
80
def align (self ) -> AlignAPI :
90
81
"""
@@ -99,17 +90,19 @@ def embedding(self) -> EmbeddingsAPI:
99
90
"""
100
91
The embedding submodule gives access to protein embedding models and their inference endpoints.
101
92
"""
102
- if self ._embedding is None :
103
- self ._embedding = EmbeddingsAPI (self )
104
- return self ._embedding
93
+ if self ._embeddings is None :
94
+ self ._embeddings = EmbeddingsAPI (self )
95
+ return self ._embeddings
96
+
97
+ embeddings = embedding
105
98
106
99
@property
107
100
def svd (self ) -> SVDAPI :
108
101
"""
109
102
The embedding submodule gives access to protein embedding models and their inference endpoints.
110
103
"""
111
104
if self ._svd is None :
112
- self ._svd = SVDAPI (self , self .embedding )
105
+ self ._svd = SVDAPI (self , self .embeddings )
113
106
return self ._svd
114
107
115
108
@property
@@ -127,16 +120,16 @@ def predictor(self) -> PredictorAPI:
127
120
The predictor submodule gives access to training and predicting with predictors built on top of embeddings.
128
121
"""
129
122
if self ._predictor is None :
130
- self ._predictor = PredictorAPI (self , self .embedding , self .svd )
123
+ self ._predictor = PredictorAPI (self , self .embeddings , self .svd )
131
124
return self ._predictor
132
125
133
126
@property
134
- def designer (self ) -> DesignerAPI :
127
+ def design (self ) -> DesignAPI :
135
128
"""
136
129
The designer submodule gives access to functionality for designing new sequences using models from predictor train.
137
130
"""
138
131
if self ._designer is None :
139
- self ._designer = DesignerAPI (self )
132
+ self ._designer = DesignAPI (self )
140
133
return self ._designer
141
134
142
135
@property
@@ -148,5 +141,45 @@ def fold(self) -> FoldAPI:
148
141
self ._fold = FoldAPI (self )
149
142
return self ._fold
150
143
144
+ @property
145
+ def deprecated (self ) -> "Deprecated" :
146
+
147
+ if self ._deprecated is None :
148
+ warnings .warn (
149
+ "Support for deprecated APIs will be dropped in the future! Read the documentation to migrate to the updated APIs."
150
+ )
151
+ self ._deprecated = self .Deprecated (self )
152
+ return self ._deprecated
153
+
154
+ class Deprecated :
155
+
156
+ _train = None
157
+ _design = None
158
+
159
+ def __init__ (self , session : APISession ):
160
+ self .session = session
161
+
162
+ @property
163
+ def train (self ) -> "TrainingAPI" :
164
+ """
165
+ The train submodule gives access to functionality for training and validating ML models.
166
+ """
167
+ from openprotein .app .deprecated import TrainingAPI
168
+
169
+ if self ._train is None :
170
+ self ._train = TrainingAPI (self .session )
171
+ return self ._train
172
+
173
+ @property
174
+ def design (self ) -> "DesignAPI" :
175
+ """
176
+ The design submodule gives access to functionality for designing new sequences using models from train.
177
+ """
178
+ from openprotein .app .deprecated import DesignAPI
179
+
180
+ if self ._design is None :
181
+ self ._design = DesignAPI (self .session )
182
+ return self ._design
183
+
151
184
152
185
connect = OpenProtein
0 commit comments