pepe-cli 1.0.1__tar.gz → 1.0.3__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.
- {pepe_cli-1.0.1/src/pepe_cli.egg-info → pepe_cli-1.0.3}/PKG-INFO +1 -1
- {pepe_cli-1.0.1 → pepe_cli-1.0.3}/src/pepe/__init__.py +1 -1
- {pepe_cli-1.0.1 → pepe_cli-1.0.3}/src/pepe/__main__.py +3 -1
- {pepe_cli-1.0.1 → pepe_cli-1.0.3}/src/pepe/embedders/esm_embedder.py +19 -1
- {pepe_cli-1.0.1 → pepe_cli-1.0.3}/src/pepe/embedders/huggingface_embedder.py +44 -5
- {pepe_cli-1.0.1 → pepe_cli-1.0.3}/src/pepe/model_selecter.py +20 -5
- {pepe_cli-1.0.1 → pepe_cli-1.0.3}/src/pepe/parse_arguments.py +0 -1
- {pepe_cli-1.0.1 → pepe_cli-1.0.3/src/pepe_cli.egg-info}/PKG-INFO +1 -1
- {pepe_cli-1.0.1 → pepe_cli-1.0.3}/LICENSE +0 -0
- {pepe_cli-1.0.1 → pepe_cli-1.0.3}/MANIFEST.in +0 -0
- {pepe_cli-1.0.1 → pepe_cli-1.0.3}/README.md +0 -0
- {pepe_cli-1.0.1 → pepe_cli-1.0.3}/examples/custom_model/create_example_custom_model.py +0 -0
- {pepe_cli-1.0.1 → pepe_cli-1.0.3}/examples/custom_model/example_protein_model/config.json +0 -0
- {pepe_cli-1.0.1 → pepe_cli-1.0.3}/examples/custom_model/example_protein_model/pytorch_model.pt +0 -0
- {pepe_cli-1.0.1 → pepe_cli-1.0.3}/examples/custom_model/example_protein_model/special_tokens_map.json +0 -0
- {pepe_cli-1.0.1 → pepe_cli-1.0.3}/examples/custom_model/example_protein_model/tokenizer_config.json +0 -0
- {pepe_cli-1.0.1 → pepe_cli-1.0.3}/examples/custom_model/example_protein_model/vocab.json +0 -0
- {pepe_cli-1.0.1 → pepe_cli-1.0.3}/examples/custom_model/example_protein_model/vocab.txt +0 -0
- {pepe_cli-1.0.1 → pepe_cli-1.0.3}/examples/custom_model/example_sequences.fasta +0 -0
- {pepe_cli-1.0.1 → pepe_cli-1.0.3}/examples/custom_model/example_substring.csv +0 -0
- {pepe_cli-1.0.1 → pepe_cli-1.0.3}/examples/embedding_options.md +0 -0
- {pepe_cli-1.0.1 → pepe_cli-1.0.3}/examples/model_selection.md +0 -0
- {pepe_cli-1.0.1 → pepe_cli-1.0.3}/pyproject.toml +0 -0
- {pepe_cli-1.0.1 → pepe_cli-1.0.3}/requirements.txt +0 -0
- {pepe_cli-1.0.1 → pepe_cli-1.0.3}/setup.cfg +0 -0
- {pepe_cli-1.0.1 → pepe_cli-1.0.3}/setup.py +0 -0
- {pepe_cli-1.0.1 → pepe_cli-1.0.3}/src/pepe/embedders/__init__.py +0 -0
- {pepe_cli-1.0.1 → pepe_cli-1.0.3}/src/pepe/embedders/base_embedder.py +0 -0
- {pepe_cli-1.0.1 → pepe_cli-1.0.3}/src/pepe/embedders/custom_embedder.py +0 -0
- {pepe_cli-1.0.1 → pepe_cli-1.0.3}/src/pepe/utils.py +0 -0
- {pepe_cli-1.0.1 → pepe_cli-1.0.3}/src/pepe_cli.egg-info/SOURCES.txt +0 -0
- {pepe_cli-1.0.1 → pepe_cli-1.0.3}/src/pepe_cli.egg-info/dependency_links.txt +0 -0
- {pepe_cli-1.0.1 → pepe_cli-1.0.3}/src/pepe_cli.egg-info/entry_points.txt +0 -0
- {pepe_cli-1.0.1 → pepe_cli-1.0.3}/src/pepe_cli.egg-info/requires.txt +0 -0
- {pepe_cli-1.0.1 → pepe_cli-1.0.3}/src/pepe_cli.egg-info/top_level.txt +0 -0
- {pepe_cli-1.0.1 → pepe_cli-1.0.3}/src/tests/__init__.py +0 -0
- {pepe_cli-1.0.1 → pepe_cli-1.0.3}/src/tests/test_run.py +0 -0
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from pepe.model_selecter import select_model
|
|
3
2
|
from pepe.parse_arguments import parse_arguments
|
|
4
3
|
|
|
5
4
|
logger = logging.getLogger("src.__main__")
|
|
@@ -8,6 +7,9 @@ logger = logging.getLogger("src.__main__")
|
|
|
8
7
|
def main():
|
|
9
8
|
args = parse_arguments()
|
|
10
9
|
|
|
10
|
+
# Lazy import to avoid loading heavy dependencies during --help
|
|
11
|
+
from pepe.model_selecter import select_model
|
|
12
|
+
|
|
11
13
|
selected_model = select_model(args.model_name)
|
|
12
14
|
|
|
13
15
|
embedder = selected_model(args)
|
|
@@ -1,9 +1,23 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
import torch
|
|
3
|
-
from esm import pretrained
|
|
4
3
|
from pepe.embedders.base_embedder import BaseEmbedder
|
|
5
4
|
import pepe.utils
|
|
6
5
|
|
|
6
|
+
|
|
7
|
+
# Lazy imports to avoid loading heavy dependencies at import time
|
|
8
|
+
def _import_esm():
|
|
9
|
+
"""Lazy import of ESM components to avoid loading issues."""
|
|
10
|
+
try:
|
|
11
|
+
from esm import pretrained
|
|
12
|
+
|
|
13
|
+
return pretrained
|
|
14
|
+
except ImportError as e:
|
|
15
|
+
logger.error(f"Failed to import ESM: {e}")
|
|
16
|
+
raise ImportError(
|
|
17
|
+
"Failed to import ESM. Please ensure fair-esm is installed: pip install fair-esm"
|
|
18
|
+
) from e
|
|
19
|
+
|
|
20
|
+
|
|
7
21
|
logger = logging.getLogger("src.embedders.esm_embedder")
|
|
8
22
|
|
|
9
23
|
|
|
@@ -36,6 +50,10 @@ class ESMEmbedder(BaseEmbedder):
|
|
|
36
50
|
"""Initialize the model, tokenizer"""
|
|
37
51
|
# Loading the pretrained model and alphabet for tokenization
|
|
38
52
|
logger.info("Loading model...")
|
|
53
|
+
|
|
54
|
+
# Lazy import ESM components
|
|
55
|
+
pretrained = _import_esm()
|
|
56
|
+
|
|
39
57
|
# model, alphabet = pretrained.load_model_and_alphabet(model_name)
|
|
40
58
|
model, alphabet = pretrained.load_model_and_alphabet_hub(model_name)
|
|
41
59
|
model.eval() # Setting the model to evaluation mode
|
|
@@ -3,11 +3,30 @@ import os
|
|
|
3
3
|
import torch
|
|
4
4
|
import pepe.utils
|
|
5
5
|
from pepe.embedders.base_embedder import BaseEmbedder
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
# Lazy imports to avoid loading heavy dependencies at import time
|
|
9
|
+
def _import_transformers():
|
|
10
|
+
"""Lazy import of transformers components to avoid loading issues."""
|
|
11
|
+
try:
|
|
12
|
+
from transformers import T5EncoderModel, T5Tokenizer
|
|
13
|
+
from transformers import RoFormerTokenizer, RoFormerModel
|
|
14
|
+
from transformers.models.roformer.modeling_roformer import (
|
|
15
|
+
RoFormerSinusoidalPositionalEmbedding,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
return (
|
|
19
|
+
T5EncoderModel,
|
|
20
|
+
T5Tokenizer,
|
|
21
|
+
RoFormerTokenizer,
|
|
22
|
+
RoFormerModel,
|
|
23
|
+
RoFormerSinusoidalPositionalEmbedding,
|
|
24
|
+
)
|
|
25
|
+
except ImportError as e:
|
|
26
|
+
logger.error(f"Failed to import transformers: {e}")
|
|
27
|
+
raise ImportError(
|
|
28
|
+
"Failed to import transformers. Please ensure transformers is installed: pip install transformers"
|
|
29
|
+
) from e
|
|
11
30
|
|
|
12
31
|
|
|
13
32
|
# Set max_split_size_mb
|
|
@@ -141,6 +160,16 @@ class Antiberta2Embedder(HuggingfaceEmbedder):
|
|
|
141
160
|
else:
|
|
142
161
|
device = torch.device("cpu")
|
|
143
162
|
logger.info("No GPU available, using CPU")
|
|
163
|
+
|
|
164
|
+
# Lazy import transformers components
|
|
165
|
+
(
|
|
166
|
+
T5EncoderModel,
|
|
167
|
+
T5Tokenizer,
|
|
168
|
+
RoFormerTokenizer,
|
|
169
|
+
RoFormerModel,
|
|
170
|
+
RoFormerSinusoidalPositionalEmbedding,
|
|
171
|
+
) = _import_transformers()
|
|
172
|
+
|
|
144
173
|
tokenizer = RoFormerTokenizer.from_pretrained(model_link, use_fast=True)
|
|
145
174
|
model = RoFormerModel.from_pretrained(model_link).to(device) # type: ignore
|
|
146
175
|
model.eval()
|
|
@@ -191,6 +220,16 @@ class T5Embedder(HuggingfaceEmbedder):
|
|
|
191
220
|
else:
|
|
192
221
|
device = torch.device("cpu")
|
|
193
222
|
logger.info("No GPU available, using CPU")
|
|
223
|
+
|
|
224
|
+
# Lazy import transformers components
|
|
225
|
+
(
|
|
226
|
+
T5EncoderModel,
|
|
227
|
+
T5Tokenizer,
|
|
228
|
+
RoFormerTokenizer,
|
|
229
|
+
RoFormerModel,
|
|
230
|
+
RoFormerSinusoidalPositionalEmbedding,
|
|
231
|
+
) = _import_transformers()
|
|
232
|
+
|
|
194
233
|
tokenizer = T5Tokenizer.from_pretrained(model_link, use_fast=True)
|
|
195
234
|
model = T5EncoderModel.from_pretrained(model_link).to(device) # type: ignore
|
|
196
235
|
model.eval()
|
|
@@ -1,19 +1,32 @@
|
|
|
1
|
-
from pepe.embedders.esm_embedder import ESMEmbedder
|
|
2
|
-
from pepe.embedders.huggingface_embedder import T5Embedder, Antiberta2Embedder
|
|
3
1
|
from pepe.embedders.custom_embedder import CustomEmbedder
|
|
4
2
|
|
|
5
|
-
|
|
6
3
|
import os
|
|
7
4
|
|
|
8
5
|
|
|
6
|
+
def _get_esm_embedder():
|
|
7
|
+
"""Lazy import of ESM embedder to avoid loading heavy dependencies."""
|
|
8
|
+
from pepe.embedders.esm_embedder import ESMEmbedder
|
|
9
|
+
|
|
10
|
+
return ESMEmbedder
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def _get_huggingface_embedders():
|
|
14
|
+
"""Lazy import of HuggingFace embedders to avoid loading heavy dependencies."""
|
|
15
|
+
from pepe.embedders.huggingface_embedder import T5Embedder, Antiberta2Embedder
|
|
16
|
+
|
|
17
|
+
return T5Embedder, Antiberta2Embedder
|
|
18
|
+
|
|
19
|
+
|
|
9
20
|
def select_model(model_name):
|
|
10
21
|
if "esm2" in model_name.lower():
|
|
11
|
-
return
|
|
22
|
+
return _get_esm_embedder()
|
|
12
23
|
elif "esm1" in model_name.lower():
|
|
13
|
-
return
|
|
24
|
+
return _get_esm_embedder()
|
|
14
25
|
# elif "antiberta2" in model_name.lower() and model_name.startswith("alchemab"):
|
|
26
|
+
# T5Embedder, Antiberta2Embedder = _get_huggingface_embedders()
|
|
15
27
|
# return Antiberta2Embedder
|
|
16
28
|
# elif "t5" in model_name.lower() and model_name.startswith("Rostlab"):
|
|
29
|
+
# T5Embedder, Antiberta2Embedder = _get_huggingface_embedders()
|
|
17
30
|
# return T5Embedder
|
|
18
31
|
elif (
|
|
19
32
|
model_name.endswith(".pt")
|
|
@@ -35,8 +48,10 @@ def select_model(model_name):
|
|
|
35
48
|
model_type = config.model_type.lower()
|
|
36
49
|
|
|
37
50
|
if model_type in ["t5", "mt5"]:
|
|
51
|
+
T5Embedder, Antiberta2Embedder = _get_huggingface_embedders()
|
|
38
52
|
return T5Embedder
|
|
39
53
|
elif model_type in ["roformer"]:
|
|
54
|
+
T5Embedder, Antiberta2Embedder = _get_huggingface_embedders()
|
|
40
55
|
return Antiberta2Embedder
|
|
41
56
|
elif model_type in ["bert"]:
|
|
42
57
|
# For BERT-like models, we could potentially use a generic embedder
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pepe_cli-1.0.1 → pepe_cli-1.0.3}/examples/custom_model/example_protein_model/pytorch_model.pt
RENAMED
|
File without changes
|
|
File without changes
|
{pepe_cli-1.0.1 → pepe_cli-1.0.3}/examples/custom_model/example_protein_model/tokenizer_config.json
RENAMED
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|