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.
Files changed (37) hide show
  1. {pepe_cli-1.0.1/src/pepe_cli.egg-info → pepe_cli-1.0.3}/PKG-INFO +1 -1
  2. {pepe_cli-1.0.1 → pepe_cli-1.0.3}/src/pepe/__init__.py +1 -1
  3. {pepe_cli-1.0.1 → pepe_cli-1.0.3}/src/pepe/__main__.py +3 -1
  4. {pepe_cli-1.0.1 → pepe_cli-1.0.3}/src/pepe/embedders/esm_embedder.py +19 -1
  5. {pepe_cli-1.0.1 → pepe_cli-1.0.3}/src/pepe/embedders/huggingface_embedder.py +44 -5
  6. {pepe_cli-1.0.1 → pepe_cli-1.0.3}/src/pepe/model_selecter.py +20 -5
  7. {pepe_cli-1.0.1 → pepe_cli-1.0.3}/src/pepe/parse_arguments.py +0 -1
  8. {pepe_cli-1.0.1 → pepe_cli-1.0.3/src/pepe_cli.egg-info}/PKG-INFO +1 -1
  9. {pepe_cli-1.0.1 → pepe_cli-1.0.3}/LICENSE +0 -0
  10. {pepe_cli-1.0.1 → pepe_cli-1.0.3}/MANIFEST.in +0 -0
  11. {pepe_cli-1.0.1 → pepe_cli-1.0.3}/README.md +0 -0
  12. {pepe_cli-1.0.1 → pepe_cli-1.0.3}/examples/custom_model/create_example_custom_model.py +0 -0
  13. {pepe_cli-1.0.1 → pepe_cli-1.0.3}/examples/custom_model/example_protein_model/config.json +0 -0
  14. {pepe_cli-1.0.1 → pepe_cli-1.0.3}/examples/custom_model/example_protein_model/pytorch_model.pt +0 -0
  15. {pepe_cli-1.0.1 → pepe_cli-1.0.3}/examples/custom_model/example_protein_model/special_tokens_map.json +0 -0
  16. {pepe_cli-1.0.1 → pepe_cli-1.0.3}/examples/custom_model/example_protein_model/tokenizer_config.json +0 -0
  17. {pepe_cli-1.0.1 → pepe_cli-1.0.3}/examples/custom_model/example_protein_model/vocab.json +0 -0
  18. {pepe_cli-1.0.1 → pepe_cli-1.0.3}/examples/custom_model/example_protein_model/vocab.txt +0 -0
  19. {pepe_cli-1.0.1 → pepe_cli-1.0.3}/examples/custom_model/example_sequences.fasta +0 -0
  20. {pepe_cli-1.0.1 → pepe_cli-1.0.3}/examples/custom_model/example_substring.csv +0 -0
  21. {pepe_cli-1.0.1 → pepe_cli-1.0.3}/examples/embedding_options.md +0 -0
  22. {pepe_cli-1.0.1 → pepe_cli-1.0.3}/examples/model_selection.md +0 -0
  23. {pepe_cli-1.0.1 → pepe_cli-1.0.3}/pyproject.toml +0 -0
  24. {pepe_cli-1.0.1 → pepe_cli-1.0.3}/requirements.txt +0 -0
  25. {pepe_cli-1.0.1 → pepe_cli-1.0.3}/setup.cfg +0 -0
  26. {pepe_cli-1.0.1 → pepe_cli-1.0.3}/setup.py +0 -0
  27. {pepe_cli-1.0.1 → pepe_cli-1.0.3}/src/pepe/embedders/__init__.py +0 -0
  28. {pepe_cli-1.0.1 → pepe_cli-1.0.3}/src/pepe/embedders/base_embedder.py +0 -0
  29. {pepe_cli-1.0.1 → pepe_cli-1.0.3}/src/pepe/embedders/custom_embedder.py +0 -0
  30. {pepe_cli-1.0.1 → pepe_cli-1.0.3}/src/pepe/utils.py +0 -0
  31. {pepe_cli-1.0.1 → pepe_cli-1.0.3}/src/pepe_cli.egg-info/SOURCES.txt +0 -0
  32. {pepe_cli-1.0.1 → pepe_cli-1.0.3}/src/pepe_cli.egg-info/dependency_links.txt +0 -0
  33. {pepe_cli-1.0.1 → pepe_cli-1.0.3}/src/pepe_cli.egg-info/entry_points.txt +0 -0
  34. {pepe_cli-1.0.1 → pepe_cli-1.0.3}/src/pepe_cli.egg-info/requires.txt +0 -0
  35. {pepe_cli-1.0.1 → pepe_cli-1.0.3}/src/pepe_cli.egg-info/top_level.txt +0 -0
  36. {pepe_cli-1.0.1 → pepe_cli-1.0.3}/src/tests/__init__.py +0 -0
  37. {pepe_cli-1.0.1 → pepe_cli-1.0.3}/src/tests/test_run.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pepe-cli
3
- Version: 1.0.1
3
+ Version: 1.0.3
4
4
  Summary: Pipeline for Easy Protein Embedding - Extract embeddings and attention matrices from protein sequences
5
5
  Home-page: https://github.com/csi-greifflab/pepe-cli
6
6
  Author: Jahn Zhong
@@ -2,7 +2,7 @@ import logging
2
2
  import sys
3
3
 
4
4
  # Package metadata - single source of truth
5
- __version__ = "1.0.1"
5
+ __version__ = "1.0.3"
6
6
  __package_name__ = "pepe-cli"
7
7
  __module_name__ = "pepe"
8
8
  __author__ = "Jahn Zhong"
@@ -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
- from transformers import T5EncoderModel, T5Tokenizer
7
- from transformers import RoFormerTokenizer, RoFormerModel
8
- from transformers.models.roformer.modeling_roformer import (
9
- RoFormerSinusoidalPositionalEmbedding,
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 ESMEmbedder
22
+ return _get_esm_embedder()
12
23
  elif "esm1" in model_name.lower():
13
- return ESMEmbedder
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
@@ -1,5 +1,4 @@
1
1
  import argparse
2
- from pepe.model_selecter import supported_models
3
2
 
4
3
 
5
4
  def str2bool(value):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pepe-cli
3
- Version: 1.0.1
3
+ Version: 1.0.3
4
4
  Summary: Pipeline for Easy Protein Embedding - Extract embeddings and attention matrices from protein sequences
5
5
  Home-page: https://github.com/csi-greifflab/pepe-cli
6
6
  Author: Jahn Zhong
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