66isort:skip_file
77"""
88
9+ from typing import TYPE_CHECKING
10+ import warnings
11+
912from openprotein ._version import __version__
1013from openprotein .app import (
11- AssayDataAPI ,
14+ DataAPI ,
1215 JobsAPI ,
13- TrainingAPI ,
14- DesignAPI ,
1516 AlignAPI ,
1617 EmbeddingsAPI ,
1718 FoldAPI ,
1819 SVDAPI ,
1920 UMAPAPI ,
2021 PredictorAPI ,
21- DesignerAPI ,
22+ DesignAPI ,
2223)
2324from openprotein .app .models import Future
2425from openprotein .base import APISession
2526
27+ if TYPE_CHECKING :
28+ from openprotein .app .deprecated import TrainingAPI , DesignAPI
29+
2630
2731class OpenProtein (APISession ):
2832 """
@@ -31,15 +35,14 @@ class OpenProtein(APISession):
3135
3236 _data = None
3337 _jobs = None
34- _train = None
35- _design = None
3638 _align = None
37- _embedding = None
39+ _embeddings = None
3840 _svd = None
3941 _umap = None
4042 _fold = None
4143 _predictor = None
4244 _designer = None
45+ _deprecated = None
4346
4447 def wait (self , future : Future , * args , ** kwargs ):
4548 return future .wait (* args , ** kwargs )
@@ -50,14 +53,20 @@ def load_job(self, job_id):
5053 return self .jobs .get (job_id = job_id )
5154
5255 @property
53- def data (self ) -> AssayDataAPI :
56+ def data (self ) -> DataAPI :
5457 """
5558 The data submodule gives access to functionality for uploading and accessing user data.
5659 """
5760 if self ._data is None :
58- self ._data = AssayDataAPI (self )
61+ self ._data = DataAPI (self )
5962 return self ._data
6063
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+
6170 @property
6271 def jobs (self ) -> JobsAPI :
6372 """
@@ -67,24 +76,6 @@ def jobs(self) -> JobsAPI:
6776 self ._jobs = JobsAPI (self )
6877 return self ._jobs
6978
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-
8879 @property
8980 def align (self ) -> AlignAPI :
9081 """
@@ -99,17 +90,19 @@ def embedding(self) -> EmbeddingsAPI:
9990 """
10091 The embedding submodule gives access to protein embedding models and their inference endpoints.
10192 """
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
10598
10699 @property
107100 def svd (self ) -> SVDAPI :
108101 """
109102 The embedding submodule gives access to protein embedding models and their inference endpoints.
110103 """
111104 if self ._svd is None :
112- self ._svd = SVDAPI (self , self .embedding )
105+ self ._svd = SVDAPI (self , self .embeddings )
113106 return self ._svd
114107
115108 @property
@@ -127,16 +120,16 @@ def predictor(self) -> PredictorAPI:
127120 The predictor submodule gives access to training and predicting with predictors built on top of embeddings.
128121 """
129122 if self ._predictor is None :
130- self ._predictor = PredictorAPI (self , self .embedding , self .svd )
123+ self ._predictor = PredictorAPI (self , self .embeddings , self .svd )
131124 return self ._predictor
132125
133126 @property
134- def designer (self ) -> DesignerAPI :
127+ def design (self ) -> DesignAPI :
135128 """
136129 The designer submodule gives access to functionality for designing new sequences using models from predictor train.
137130 """
138131 if self ._designer is None :
139- self ._designer = DesignerAPI (self )
132+ self ._designer = DesignAPI (self )
140133 return self ._designer
141134
142135 @property
@@ -148,5 +141,45 @@ def fold(self) -> FoldAPI:
148141 self ._fold = FoldAPI (self )
149142 return self ._fold
150143
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+
151184
152185connect = OpenProtein
0 commit comments