openprotein-python 0.8.2__1-py3-none-any.whl

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 (84) hide show
  1. openprotein/__init__.py +164 -0
  2. openprotein/_version.py +48 -0
  3. openprotein/align/__init__.py +8 -0
  4. openprotein/align/align.py +395 -0
  5. openprotein/align/api.py +428 -0
  6. openprotein/align/future.py +55 -0
  7. openprotein/align/msa.py +129 -0
  8. openprotein/align/schemas.py +165 -0
  9. openprotein/base.py +181 -0
  10. openprotein/chains.py +88 -0
  11. openprotein/common/__init__.py +5 -0
  12. openprotein/common/features.py +7 -0
  13. openprotein/common/model_metadata.py +33 -0
  14. openprotein/common/reduction.py +8 -0
  15. openprotein/config.py +9 -0
  16. openprotein/csv.py +31 -0
  17. openprotein/data/__init__.py +9 -0
  18. openprotein/data/api.py +218 -0
  19. openprotein/data/assaydataset.py +178 -0
  20. openprotein/data/data.py +93 -0
  21. openprotein/data/schemas.py +27 -0
  22. openprotein/design/__init__.py +16 -0
  23. openprotein/design/api.py +259 -0
  24. openprotein/design/design.py +125 -0
  25. openprotein/design/future.py +146 -0
  26. openprotein/design/schemas.py +607 -0
  27. openprotein/embeddings/__init__.py +27 -0
  28. openprotein/embeddings/api.py +619 -0
  29. openprotein/embeddings/embeddings.py +151 -0
  30. openprotein/embeddings/esm.py +33 -0
  31. openprotein/embeddings/future.py +146 -0
  32. openprotein/embeddings/models.py +421 -0
  33. openprotein/embeddings/openprotein.py +21 -0
  34. openprotein/embeddings/poet.py +446 -0
  35. openprotein/embeddings/poet2.py +505 -0
  36. openprotein/embeddings/schemas.py +78 -0
  37. openprotein/errors.py +76 -0
  38. openprotein/fasta.py +92 -0
  39. openprotein/fold/__init__.py +21 -0
  40. openprotein/fold/alphafold2.py +131 -0
  41. openprotein/fold/api.py +287 -0
  42. openprotein/fold/boltz.py +691 -0
  43. openprotein/fold/esmfold.py +54 -0
  44. openprotein/fold/fold.py +107 -0
  45. openprotein/fold/future.py +509 -0
  46. openprotein/fold/models.py +139 -0
  47. openprotein/fold/schemas.py +39 -0
  48. openprotein/jobs/__init__.py +9 -0
  49. openprotein/jobs/api.py +71 -0
  50. openprotein/jobs/futures.py +746 -0
  51. openprotein/jobs/jobs.py +69 -0
  52. openprotein/jobs/schemas.py +135 -0
  53. openprotein/models/__init__.py +4 -0
  54. openprotein/models/base.py +63 -0
  55. openprotein/models/foundation/rfdiffusion.py +283 -0
  56. openprotein/models/models.py +33 -0
  57. openprotein/predictor/__init__.py +25 -0
  58. openprotein/predictor/api.py +384 -0
  59. openprotein/predictor/models.py +374 -0
  60. openprotein/predictor/prediction.py +79 -0
  61. openprotein/predictor/predictor.py +242 -0
  62. openprotein/predictor/schemas.py +113 -0
  63. openprotein/predictor/validate.py +40 -0
  64. openprotein/prompt/__init__.py +9 -0
  65. openprotein/prompt/api.py +505 -0
  66. openprotein/prompt/models.py +142 -0
  67. openprotein/prompt/prompt.py +130 -0
  68. openprotein/prompt/schemas.py +49 -0
  69. openprotein/protein.py +587 -0
  70. openprotein/svd/__init__.py +9 -0
  71. openprotein/svd/api.py +206 -0
  72. openprotein/svd/models.py +288 -0
  73. openprotein/svd/schemas.py +31 -0
  74. openprotein/svd/svd.py +134 -0
  75. openprotein/umap/__init__.py +9 -0
  76. openprotein/umap/api.py +259 -0
  77. openprotein/umap/models.py +211 -0
  78. openprotein/umap/schemas.py +35 -0
  79. openprotein/umap/umap.py +175 -0
  80. openprotein/utils/uuid.py +29 -0
  81. openprotein_python-0.8.2.dist-info/METADATA +176 -0
  82. openprotein_python-0.8.2.dist-info/RECORD +84 -0
  83. openprotein_python-0.8.2.dist-info/WHEEL +4 -0
  84. openprotein_python-0.8.2.dist-info/licenses/LICENSE.txt +30 -0
@@ -0,0 +1,176 @@
1
+ Metadata-Version: 2.4
2
+ Name: openprotein-python
3
+ Version: 0.8.2
4
+ Summary: OpenProtein Python interface.
5
+ Author-email: Mark Gee <markgee@ne47.bio>, "Timothy Truong Jr." <ttruong@ne47.bio>, Tristan Bepler <tbepler@ne47.bio>
6
+ License-Expression: MIT
7
+ License-File: LICENSE.txt
8
+ Classifier: Development Status :: 4 - Beta
9
+ Classifier: Programming Language :: Python :: 3
10
+ Requires-Python: >=3.10
11
+ Requires-Dist: gemmi<0.8,>=0.7.0
12
+ Requires-Dist: numpy<3,>=1.9
13
+ Requires-Dist: pandas<3,>=2.2.2
14
+ Requires-Dist: pydantic<3,>=2.5
15
+ Requires-Dist: requests<3,>=2.32.3
16
+ Requires-Dist: tqdm<5,>=4.66.5
17
+ Description-Content-Type: text/markdown
18
+
19
+ [![PyPI version](https://badge.fury.io/py/openprotein-python.svg)](https://pypi.org/project/openprotein-python/)
20
+ [![Coverage](https://dev.docs.openprotein.ai/api-python/_images/coverage.svg)](https://pypi.org/project/openprotein-python/)
21
+ [![Conda version](https://anaconda.org/openprotein/openprotein-python/badges/version.svg)](https://anaconda.org/openprotein/openprotein-python)
22
+
23
+
24
+ # openprotein-python
25
+ The OpenProtein.AI Python Interface provides a user-friendly library to interact with the OpenProtein.AI REST API, enabling various tasks related to protein analysis and modeling.
26
+
27
+
28
+
29
+ # Table of Contents
30
+
31
+ | | Workflow | Description |
32
+ |---|----------------------------------------------------|------------------------------------------------------|
33
+ | 0 | [`Quick start`](#Quick-start) | Quick start guide |
34
+ | 1 | [`Installation`](https://docs.openprotein.ai/api-python/installation.html) | Install guide for pip and conda. |
35
+ | 2 | [`Session management`](https://docs.openprotein.ai/api-python/overview.html) | An overview of the OpenProtein Python Client & the asynchronous jobs system. |
36
+ | 3 | [`Asssay-based Sequence Learning`](https://docs.openprotein.ai/api-python/core_workflow.html) | Covers core tasks such as data upload, model training & prediction, and sequence design. |
37
+ | 4 | [`De Novo prediction & generative models (PoET)`](https://docs.openprotein.ai/api-python/poet_workflow.html) | Covers PoET, a protein LLM for *de novo* scoring, as well as sequence generation. |
38
+ | 5 | [`Protein Language Models & Embeddings`](https://docs.openprotein.ai/api-python/embedding_workflow.html) | Covers methods for creating sequence embeddings with proprietary & open-source models. |
39
+
40
+
41
+ # Quick-start
42
+
43
+ Get started with our quickstart README! You can peruse the [official documentation](https://docs.openprotein.ai/api-python/) for more details!
44
+ ## Installation
45
+
46
+ To install the python interface using pip, run the following command:
47
+ ```
48
+ pip install openprotein-python
49
+ ```
50
+
51
+ or with conda:
52
+ ```
53
+ conda install -c openprotein openprotein-python
54
+ ```
55
+
56
+ ### Requirements
57
+
58
+ - Python 3.8 or higher.
59
+ - pydantic version 1.0 or newer.
60
+ - requests version 2.0 or newer.
61
+ - tqdm version 4.0 or newer.
62
+ - pandas version 1.0 or newer.
63
+
64
+ # Getting started
65
+
66
+
67
+ Read on below for the quick-start guide, or see the [docs](https://docs.openprotein.ai/api-python/) for more information!
68
+
69
+ To begin, create a session using your login credentials.
70
+ ```
71
+ import openprotein
72
+
73
+ # replace USERNAME and PASSWORD with your actual login credentials
74
+ session = openprotein.connect(USERNAME, PASSWORD)
75
+ ```
76
+ ## Job Status
77
+
78
+ The interface offers `AsyncJobFuture` objects for asynchronous calls, allowing tracking of job status and result retrieval when ready. Given a future, you can check its status and retrieve results.
79
+
80
+ ### Checking Job Status
81
+ Check the status of an `AsyncJobFuture` using the following methods:
82
+ ```
83
+ future.refresh() # call the backend to update the job status
84
+ future.done() # returns True if the job is done, meaning the status could be SUCCESS, FAILED, or CANCELLED
85
+ ```
86
+
87
+ ### Retrieving Job Results
88
+ Once the job has finished, retrieve the results using the following methods:
89
+ ```
90
+ result = future.wait() # wait until done and then fetch results
91
+
92
+ #verbosity is controlled with verbose arg
93
+ result = future.get(verbose=True) # get the result from a finished job
94
+ ```
95
+
96
+ ## Jobs Interface
97
+
98
+ ### Listing Jobs
99
+ To view all jobs associated with each session, the following method is available, providing an option to filter results by date, job type, or status.
100
+ ```
101
+ session.jobs.list()
102
+ ```
103
+
104
+ ### Retrieving Specific Job
105
+ For detailed information about a particular job, use the following command with the corresponding job ID:
106
+ ```
107
+ session.jobs.get(JOB_ID) # Replace JOB_ID with the ID of the specific job to be retrieved
108
+ ```
109
+
110
+ ### Resuming Jobs
111
+ Jobs from prior workflows can be resumed using the load_job method provided by each API.
112
+ ```
113
+ session.load_job(JOB_ID) # Replace JOB_ID with the ID of the training job to resume
114
+ ```
115
+
116
+ ## PoET interface
117
+ The PoET Interface allows scoring, generating, and retrieving sequences using the PoET model.
118
+
119
+ ### Scoring Sequences
120
+ To score sequences, use the score function. Provide a prompt and a list of queries. The results will be a list of (sequence, score) pydantic objects.
121
+
122
+ ```
123
+ prompt_seqs = b'MALWMRLLPLLALLALWGPDPAAAFVNQHLCGSHLVEALYLVCGERGFFYTPKTRREAEDLQVGQVELGGGPGAGSLQPLALEGSLQKRGIVEQCCTSICSLYQLENYCN'
124
+
125
+ prompt = session.poet.upload_prompt(prompt_seqs)
126
+ ```
127
+
128
+ ```
129
+ queries = [
130
+ b'MALWMRLLPLLALLALWGPDPAAAFVNQHLCGSHLVEALYLVCGERGFFYTPKTRREAEDLQVGQVELGGGPGAGSLQPLALEGSLQKRGIVEQCCTSICSLYQLENYCN',
131
+ b'MALWMRLLPLLVLLALWGPDPASAFVNQHLCGSHLVEALYLVCGERGFFYTPKTRREAEDLQVGQVELGGGPGAGSLQPLALEGSLQKRGIVEQCCTSICSLYQLENYCN',
132
+ b'MALWTRLRPLLALLALWPPPPARAFVNQHLCGSHLVEALYLVCGERGFFYTPKARREVEGPQVGALELAGGPGAGGLEGPPQKRGIVEQCCASVCSLYQLENYCN',
133
+ b'MALWIRSLPLLALLVFSGPGTSYAAANQHLCGSHLVEALYLVCGERGFFYSPKARRDVEQPLVSSPLRGEAGVLPFQQEEYEKVKRGIVEQCCHNTCSLYQLENYCN',
134
+ b'MALWMRLLPLLALLALWAPAPTRAFVNQHLCGSHLVEALYLVCGERGFFYTPKARREVEDLQVRDVELAGAPGEGGLQPLALEGALQKRGIVEQCCTSICSLYQLENYCN',
135
+ ]
136
+ ```
137
+
138
+ ```
139
+ future = session.poet.score(prompt, queries)
140
+ result = future.wait()
141
+ # result is a list of (sequence, score) pydantic objects
142
+ ```
143
+
144
+ ### Scoring Single Site Variants
145
+ For scoring single site variants, use the `single_site function`, providing the original sequence and setting `prompt_is_seed` to True if the prompt is a seed sequence.
146
+ ```
147
+ sequence = "MALWMRLLPLLALLALWGPDPAAAFVNQHLCGSHLVEALYLVCGERGFFYTPKTRREAEDLQVGQVELGGGPGAGSLQPLALEGSLQKRGIVEQCCTSICSLYQLENYCN"
148
+ future = session.poet.single_site(prompt, sequence, prompt_is_seed=True)
149
+ result = future.wait()
150
+ # result is a dictionary of {variant: score}
151
+ ```
152
+
153
+ ### Generating Sequences
154
+ To generate sequences from the PoET model, use the `generate` function with relevant parameters. The result will be a list of generated samples.
155
+ ```
156
+ future = session.poet.generate(
157
+ prompt,
158
+ max_seqs_from_msa=1024,
159
+ num_samples=100,
160
+ temperature=1.0,
161
+ topk=15
162
+ )
163
+ samples = future.wait()
164
+ ```
165
+
166
+ ### Retrieving Input Sequences
167
+ You can retrieve the prompt, MSA, or seed sequences for a PoET job using the `get_input` function or the individual functions for each type.
168
+ ```
169
+ future.get_input(INPUT_TYPE)
170
+ # or, functions for each type
171
+ future.get_prompt()
172
+ future.get_msa()
173
+ future.get_seed()
174
+ ```
175
+
176
+ See more at our [Homepage](https://docs.openprotein.ai/)
@@ -0,0 +1,84 @@
1
+ openprotein/__init__.py,sha256=IbE40dh-Cr8up0C0zj7lwq2ClVqCSjaRi3bU24wmOnQ,4666
2
+ openprotein/_version.py,sha256=Ol2Gd58z4X1DTgHjN9dFdF7yrZu8GhIISayED84Mn0Y,1814
3
+ openprotein/base.py,sha256=G3d2toHiUYHKNwfVGS0DT6THC37dA5K2NsQ0O4xC8Wo,5985
4
+ openprotein/chains.py,sha256=OAIUOZqVlXK6-T1vlmjhAePGbyDb_Kk7q3JOp7HJhrI,2318
5
+ openprotein/config.py,sha256=f0ueMjXZ4SRPSKXDQlU2Ra6UES_JvAAcoYCh3i7N_9o,171
6
+ openprotein/csv.py,sha256=d-36Gx_pPUqciOWkam_22jAFpOL_8ni-W69iWaTg4Vc,715
7
+ openprotein/errors.py,sha256=be97U4setxf5_FdMv0KcWsyQ7vdStK71bV696FdpKyM,1915
8
+ openprotein/fasta.py,sha256=XIxSxfWkr84ySXsSsPSBpG-1NWqwScBtjd9mtbIhSpQ,2609
9
+ openprotein/protein.py,sha256=4ngPBaw5DC40USN2bTcrDq4JNy9wiqTM_NLmRUHDJ34,22548
10
+ openprotein/align/__init__.py,sha256=VeQRdTaNIb_5e666XClvv8aQo54xzimmusvjJGoWBdE,148
11
+ openprotein/align/align.py,sha256=1Sc7JdmaRwaCo65SGW2kmNmV_fkfuEy87kALuy9QiJc,13686
12
+ openprotein/align/api.py,sha256=4DBgbhsRaChzDQk3t-3mdfCllkE2rPmdEwHjNmO27fQ,13013
13
+ openprotein/align/future.py,sha256=wzMZlM73rRjIftjU2dHH1IZRDq3kENjruyk2Ig_n5E8,1277
14
+ openprotein/align/msa.py,sha256=j_nOXCTVgaCclTRUE8g9EyQEkkMK7Drgix73LmNT_oU,4618
15
+ openprotein/align/schemas.py,sha256=IZQ50ajZw-qNfmwxP6ycs29KwBXyjH-0mFmGB0Zl4Eo,4213
16
+ openprotein/common/__init__.py,sha256=cdw3xMVNK8pDuOtu9GUaQhV2yR9UTCJw5R4m5FB-w2Y,195
17
+ openprotein/common/features.py,sha256=RpRBEwJ4oB18jGeJFjyXyvphcCa4SyXnduXk1D57Tbc,87
18
+ openprotein/common/model_metadata.py,sha256=A3Jaegf4XbDsFtB1zvtEpcLeduAJJiM42sCbPeQQtTQ,852
19
+ openprotein/common/reduction.py,sha256=Nmyga79MVxThB2qeCfKA7syb3erxG8EEQ31KE6YUvyk,134
20
+ openprotein/data/__init__.py,sha256=32sumoz0RlczzCtdIwV9AKgsCaBI4N5cV5VOKi-31lo,198
21
+ openprotein/data/api.py,sha256=fD3KKrf2yeiRX17Vym6ehT05NEEbZepPEUc_R4iN3Tk,5718
22
+ openprotein/data/assaydataset.py,sha256=FX2deIZWyAH1nz8Pr4Z-3azx2mvh-llRmdaflTjlBHc,4823
23
+ openprotein/data/data.py,sha256=a7m7XDXUnhycXAQJUejTzMtmy-L2fkGVy9boRPniSjg,2295
24
+ openprotein/data/schemas.py,sha256=ryoprmbRA_cPQHYTbUa0XGN1gDlWPhLJGgUtdZ5Tt4s,565
25
+ openprotein/design/__init__.py,sha256=ZF1FyVTYL8ESYitlCF7fR2CISsP886rxSS6RZHgI2NQ,282
26
+ openprotein/design/api.py,sha256=02-YKyJRZIo4qwIc9vjFE-qtQaB9f39pgAf7tMr58O0,8062
27
+ openprotein/design/design.py,sha256=VxxyoRX-H7ZrYQeap-zN3JqCnuu7FM4ORYSEM92q_zc,4501
28
+ openprotein/design/future.py,sha256=_JehEIEVKjXcLrYVSvAFjGTRM5z984BwRMeyhq9xoVE,4437
29
+ openprotein/design/schemas.py,sha256=aFuxGl8LVJ4_Sto9urfkTBdxW1K7_7MS3fdpORUFFlg,15911
30
+ openprotein/embeddings/__init__.py,sha256=sZ4oxFFehpJ5I-D4XL_fhiB-T_FhFqrGpI4_rDK_OqA,570
31
+ openprotein/embeddings/api.py,sha256=VaZwrsxXuQ9RbbsZBv_FKY6m4_-x9ER_Gwx6fxV7zsY,18646
32
+ openprotein/embeddings/embeddings.py,sha256=AEJwTNvYG04JQYxoZKjipRm9grzuFUlZGX9p3dmDeKU,4759
33
+ openprotein/embeddings/esm.py,sha256=8dB0zE_AWMrn1XjkwqzpUqcIbB_0PDzNaYc0kn1g7SY,896
34
+ openprotein/embeddings/future.py,sha256=KP4OwQcHa3hp4k75Mm-JF19RxjBtjL2BWDnRgmd5UI0,4391
35
+ openprotein/embeddings/models.py,sha256=pnyeErDCikpg7qP-UmU2_ukmDl-9GTzmeoDx9AUrNCA,13967
36
+ openprotein/embeddings/openprotein.py,sha256=FzFLnHTd5-BQ_155N6c7phQJjCGYbfcve1305qZu_s0,590
37
+ openprotein/embeddings/poet.py,sha256=OB_Ixh-RvBsFtljW8zZX_xXn-UlvL7yf_S3zbtsFVEQ,14319
38
+ openprotein/embeddings/poet2.py,sha256=JOFo_Gl677JbUB7JZ8xrHD6zc8RNa8hfmaSwN8T3cSU,19356
39
+ openprotein/embeddings/schemas.py,sha256=utVVIp-42ek22TzrbGj3sOBWchhJNL3DN8HlDzudFEk,1781
40
+ openprotein/fold/__init__.py,sha256=-ZByOGX2M9rCJxhelvezPonBZVsnD5XevSgmTTkP7y0,470
41
+ openprotein/fold/alphafold2.py,sha256=hW9qTpROul0fXVpbrCY-kD2fySNUeBgYuax6_KVZ4es,5422
42
+ openprotein/fold/api.py,sha256=VBT-nf5iZ-tLYKzBWqtxd8GTgRax-x9L4wlkpdWbbFI,7926
43
+ openprotein/fold/boltz.py,sha256=Pk6_g6xt1njl5-BTA9DSUsR2Jpp9aMRQCDF2rM5gcKU,24323
44
+ openprotein/fold/esmfold.py,sha256=9ERpZ4lZc8eWD1RD1X8m7VlogNfpYDctXjLizM9zk6E,1448
45
+ openprotein/fold/fold.py,sha256=Mvn80-qkvQ63GnvoPwJWJTyDy2UrctB_L-6wHa65B_E,3041
46
+ openprotein/fold/future.py,sha256=we1-zjm3JTxHMAA6x3gipmyy0FmX1vKzeNmScYCJjd8,15146
47
+ openprotein/fold/models.py,sha256=XHr7hUL5678lNOVDrQJWgcqIanGznacGZNBXwnmfRLg,3953
48
+ openprotein/fold/schemas.py,sha256=0FbF71XgBdnAR5hNmFnXL47Vb8s5oaUqKw29jT2d2y0,779
49
+ openprotein/jobs/__init__.py,sha256=IpSW9hMXJgZXWuQabm8W7-Bq7dBy16P0S4c01C1Z9V8,208
50
+ openprotein/jobs/api.py,sha256=bjNm-D1Jf0v0NDadZu7VeW5poafeiGvQ_3flK9kx_4g,2135
51
+ openprotein/jobs/futures.py,sha256=xBQDl_1WIcR2aKyliYNYeZV7sn0lCARyvAcvzV84WNY,21853
52
+ openprotein/jobs/jobs.py,sha256=it4GIoUOWN1uDrA-dIO3y0Qw3ITewp5Kv2V74NMqwkU,2010
53
+ openprotein/jobs/schemas.py,sha256=Q2Rr7NvTMxbKdbj0QyKhK2u1PyJZYDnwPu3l_Y7KcD8,3943
54
+ openprotein/models/__init__.py,sha256=b6Vs4YxIdCf0AXwCjRybifHnCAUj5xT25xBNY1D21go,158
55
+ openprotein/models/base.py,sha256=aXLZ4ImbBvf6NBzM3vnpS7HR86YupNR6S8T4L_MXlv0,1746
56
+ openprotein/models/models.py,sha256=AKR_DvU6V2ar_5Q3wuTU-J2K_rzSVPKbWTafAHxsbWs,1094
57
+ openprotein/models/foundation/rfdiffusion.py,sha256=QBnTDi2NZCDfQAgDhP-KWgwUQqeu5VbbKrC01Bn3xgw,10521
58
+ openprotein/predictor/__init__.py,sha256=VyijxJtcWPEu6Qh-kH8Uun5FtbSBsHdeNMDmHxwuGeo,506
59
+ openprotein/predictor/api.py,sha256=_bn9fbeoNKK-4cTyHRZIf8Ezow0EvZlnDOBZx5cFFNM,10691
60
+ openprotein/predictor/models.py,sha256=WCu5ZAgL5wVE50uKXI9UC_S2LgrWuC_GapshTLuwUsU,13523
61
+ openprotein/predictor/prediction.py,sha256=X7MuFHoSiNVExio9Ffz7bEHtdzdlX1l380q5hdGZWTg,2185
62
+ openprotein/predictor/predictor.py,sha256=qabUR0MciB5WTXbFlul8Z7rAqHbBiJAtKg0yFBpFl_g,8142
63
+ openprotein/predictor/schemas.py,sha256=rg4U7D7EiowdyY8Mr4PsL3RfFpuelEW7yXSCoQYZbkQ,2558
64
+ openprotein/predictor/validate.py,sha256=lT0YU8MF6RqLtzXNj_s7mgEql6_s-7hLSvSn0HlR97M,1003
65
+ openprotein/prompt/__init__.py,sha256=jUnpqzsH7xw37vcNYXsf1uJ5BdNTZTkZaI9xu_r3F-g,219
66
+ openprotein/prompt/api.py,sha256=iqwQDSusg1yg_8O1Dx6QpxTcqAuhtdwsGT-I7w3JAsw,15616
67
+ openprotein/prompt/models.py,sha256=R3AN-CKKaV8cN9ESwha4IQmIt7GF76JSeNz5a3WxslM,4233
68
+ openprotein/prompt/prompt.py,sha256=A7-ZRSjnkUwbrpIgn12Mx7ywGHZqT7aXB-QzjaT8N6E,3306
69
+ openprotein/prompt/schemas.py,sha256=jPD5mn-AkygFB5ZPSAbtmcbb8xxHc2lpihPtUloBmwk,1412
70
+ openprotein/svd/__init__.py,sha256=WE-yOdKiFrj5c2k6OtlAUc_5oundBL2b1VW4uHiBSeI,220
71
+ openprotein/svd/api.py,sha256=VSsjzgBxRowkqj99r0tmTPNaIg9QAGfWNhiL5ryf04c,5612
72
+ openprotein/svd/models.py,sha256=sR1PntGRcmb7lUSCrUhOMfpkbnwKL_BRcy_ymOiiXWE,9173
73
+ openprotein/svd/schemas.py,sha256=LU4pz4K78m5Y1nWjM-co2V7iDWZRkid0ecFTptORl-s,686
74
+ openprotein/svd/svd.py,sha256=8qIh_Fpm87PPHyUeEuT4l1m-tWOTKWhsZDMfeJtb-JY,4133
75
+ openprotein/umap/__init__.py,sha256=ErsIahd6R59bv1J8MH5VT3NHpb2TixHQpWzadYGAotQ,231
76
+ openprotein/umap/api.py,sha256=JHxsfdRD-KqRQjdiwd_zOx0JEcFt2_5ukWygJClh88M,7195
77
+ openprotein/umap/models.py,sha256=H7XP3eS-CrgntYKVIkBrexqJWp1ZWLE36gpaLyTmynE,6136
78
+ openprotein/umap/schemas.py,sha256=StAh7cs1jvXOiEjz1SAzagKXUGNx1sWK0egI3iFezz8,821
79
+ openprotein/umap/umap.py,sha256=BnlJUdsCj6iCbv5FhrOEmMIkMScOD85Wai1nLHPbqck,6228
80
+ openprotein/utils/uuid.py,sha256=nq4ESe8cuvtAPEb4OEzRqnCwrnZwZrmEuljpW7QKBFE,596
81
+ openprotein_python-0.8.2.dist-info/METADATA,sha256=uI2BZMfd5tEpYJVvYkiw_WJVjDdOkSnaFsHpfQsxtCA,7165
82
+ openprotein_python-0.8.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
83
+ openprotein_python-0.8.2.dist-info/licenses/LICENSE.txt,sha256=amMkJEL2uNWuwaaj25UfyZ37g-KwGF7E3ingj7_Xu4A,1543
84
+ openprotein_python-0.8.2.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.27.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,30 @@
1
+ Copyright (c) 2021-2023, OpenProtein.
2
+ All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without
5
+ modification, are permitted provided that the following conditions are
6
+ met:
7
+
8
+ * Redistributions of source code must retain the above copyright
9
+ notice, this list of conditions and the following disclaimer.
10
+
11
+ * Redistributions in binary form must reproduce the above
12
+ copyright notice, this list of conditions and the following
13
+ disclaimer in the documentation and/or other materials provided
14
+ with the distribution.
15
+
16
+ * Neither the name of the OPenProtein Developers nor the names of any
17
+ contributors may be used to endorse or promote products derived
18
+ from this software without specific prior written permission.
19
+
20
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.