pepe-cli 1.3.0__tar.gz → 1.4.0__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 (61) hide show
  1. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/MANIFEST.in +1 -0
  2. {pepe_cli-1.3.0/src/pepe_cli.egg-info → pepe_cli-1.4.0}/PKG-INFO +1 -1
  3. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/pyproject.toml +24 -0
  4. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/pepe/__init__.py +3 -3
  5. pepe_cli-1.4.0/src/pepe/__main__.py +48 -0
  6. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/pepe/api.py +5 -1
  7. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/pepe/embedders/base_embedder.py +325 -156
  8. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/pepe/embedders/custom_embedder.py +44 -24
  9. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/pepe/embedders/esm_embedder.py +39 -26
  10. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/pepe/embedders/huggingface_embedder.py +183 -97
  11. pepe_cli-1.4.0/src/pepe/model_errors.py +130 -0
  12. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/pepe/model_selecter.py +103 -26
  13. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/pepe/parse_arguments.py +23 -5
  14. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/pepe/utils.py +143 -103
  15. {pepe_cli-1.3.0 → pepe_cli-1.4.0/src/pepe_cli.egg-info}/PKG-INFO +1 -1
  16. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/pepe_cli.egg-info/SOURCES.txt +11 -3
  17. pepe_cli-1.4.0/src/tests/__init__.py +0 -0
  18. pepe_cli-1.4.0/src/tests/conftest.py +137 -0
  19. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/tests/test_api_unittest.py +7 -0
  20. pepe_cli-1.4.0/src/tests/test_custom_embedder.py +55 -0
  21. pepe_cli-1.4.0/src/tests/test_esm1_integration.py +65 -0
  22. pepe_cli-1.4.0/src/tests/test_generic_hf_integration.py +57 -0
  23. pepe_cli-1.4.0/src/tests/test_generic_safeguards.py +235 -0
  24. pepe_cli-1.4.0/src/tests/test_model_selection.py +289 -0
  25. pepe_cli-1.4.0/src/tests/test_reconstruct_mean_pooled.py +87 -0
  26. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/tests/test_splitting.py +0 -1
  27. pepe_cli-1.4.0/src/tests/test_streaming_roundtrip.py +143 -0
  28. pepe_cli-1.4.0/src/tests/test_sync_arguments.py +157 -0
  29. pepe_cli-1.4.0/src/tests/test_t5_antiberta2_integration.py +138 -0
  30. pepe_cli-1.3.0/src/pepe/__main__.py +0 -25
  31. pepe_cli-1.3.0/src/tests/test_model_selection.py +0 -104
  32. pepe_cli-1.3.0/src/tests/test_run.py +0 -45
  33. pepe_cli-1.3.0/src/tests/verify_cross_tool_consistency.py +0 -132
  34. pepe_cli-1.3.0/src/tests/verify_readme.py +0 -65
  35. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/LICENSE +0 -0
  36. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/README.md +0 -0
  37. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/examples/custom_model/create_example_custom_model.py +0 -0
  38. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/examples/custom_model/example_protein_model/config.json +0 -0
  39. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/examples/custom_model/example_protein_model/pytorch_model.pt +0 -0
  40. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/examples/custom_model/example_protein_model/special_tokens_map.json +0 -0
  41. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/examples/custom_model/example_protein_model/tokenizer_config.json +0 -0
  42. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/examples/custom_model/example_protein_model/vocab.json +0 -0
  43. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/examples/custom_model/example_protein_model/vocab.txt +0 -0
  44. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/examples/custom_model/example_sequences.fasta +0 -0
  45. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/examples/custom_model/example_substring.csv +0 -0
  46. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/examples/embedding_options.md +0 -0
  47. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/examples/model_selection.md +0 -0
  48. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/requirements.txt +0 -0
  49. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/setup.cfg +0 -0
  50. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/setup.py +0 -0
  51. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/pepe/embedders/__init__.py +0 -0
  52. /pepe_cli-1.3.0/src/tests/__init__.py → /pepe_cli-1.4.0/src/pepe/py.typed +0 -0
  53. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/pepe_cli.egg-info/dependency_links.txt +0 -0
  54. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/pepe_cli.egg-info/entry_points.txt +0 -0
  55. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/pepe_cli.egg-info/requires.txt +0 -0
  56. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/pepe_cli.egg-info/top_level.txt +0 -0
  57. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/tests/test_device_logic.py +0 -0
  58. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/tests/test_esmc.py +0 -0
  59. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/tests/test_esmc_modes.py +0 -0
  60. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/tests/test_load_layers_default.py +0 -0
  61. {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/tests/test_parse_arguments.py +0 -0
@@ -3,6 +3,7 @@ include LICENSE
3
3
  include requirements.txt
4
4
  include pyproject.toml
5
5
  recursive-include src *.py
6
+ include src/pepe/py.typed
6
7
  recursive-include examples *
7
8
  recursive-exclude * __pycache__
8
9
  recursive-exclude * *.py[co]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pepe-cli
3
- Version: 1.3.0
3
+ Version: 1.4.0
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
@@ -52,5 +52,29 @@ package-dir = {"" = "src"}
52
52
  [tool.setuptools.packages.find]
53
53
  where = ["src"]
54
54
 
55
+ [tool.setuptools.package-data]
56
+ pepe = ["py.typed"]
57
+
55
58
  [tool.setuptools.dynamic]
56
59
  version = {attr = "pepe.__version__"}
60
+
61
+ [tool.mypy]
62
+ python_version = "3.10"
63
+ warn_return_any = false
64
+ warn_unused_ignores = true
65
+ ignore_missing_imports = true
66
+ check_untyped_defs = false
67
+ disallow_untyped_defs = false
68
+
69
+ [[tool.mypy.overrides]]
70
+ module = [
71
+ "pepe.api",
72
+ "pepe.model_selecter",
73
+ "pepe.model_errors",
74
+ "pepe.embedders.base_embedder",
75
+ "pepe.embedders.huggingface_embedder",
76
+ "pepe.embedders.custom_embedder",
77
+ "pepe.embedders.esm_embedder",
78
+ "pepe.utils",
79
+ ]
80
+ check_untyped_defs = true
@@ -7,7 +7,7 @@ except ImportError:
7
7
  pass
8
8
 
9
9
  # Package metadata - single source of truth
10
- __version__ = "1.3.0"
10
+ __version__ = "1.4.0"
11
11
  __package_name__ = "pepe-cli"
12
12
  __module_name__ = "pepe"
13
13
  __author__ = "Jahn Zhong"
@@ -16,7 +16,7 @@ __description__ = "Pipeline for Easy Protein Embedding - Extract embeddings and
16
16
  __homepage__ = "https://github.com/csi-greifflab/pepe-cli"
17
17
 
18
18
 
19
- # Configure logging for the embedairr package
19
+ # Configure logging for the pepe package
20
20
  def setup_logging(level=logging.INFO):
21
21
  """Set up logging configuration for the PEPE package."""
22
22
  # Create formatter
@@ -30,7 +30,7 @@ def setup_logging(level=logging.INFO):
30
30
  console_handler.setFormatter(formatter)
31
31
 
32
32
  # Get root logger for the package
33
- logger = logging.getLogger("src")
33
+ logger = logging.getLogger("pepe")
34
34
  logger.setLevel(level)
35
35
 
36
36
  # Remove existing handlers to avoid duplication
@@ -0,0 +1,48 @@
1
+ import logging
2
+ import sys
3
+ from pepe.parse_arguments import parse_arguments
4
+
5
+ logger = logging.getLogger("pepe.__main__")
6
+
7
+
8
+ def main():
9
+ args = parse_arguments()
10
+
11
+ if args.check_model:
12
+ from pepe.model_selecter import report_model
13
+
14
+ report_model(args.check_model, trust_remote_code=args.trust_remote_code)
15
+ return
16
+
17
+ missing = []
18
+ if not args.model_name:
19
+ missing.append("--model_name")
20
+ if not args.fasta_path:
21
+ missing.append("--fasta_path")
22
+ if not args.output_path:
23
+ missing.append("--output_path")
24
+ if missing:
25
+ print(
26
+ f"Error: the following arguments are required: {', '.join(missing)}",
27
+ file=sys.stderr,
28
+ )
29
+ sys.exit(2)
30
+
31
+ # Lazy import to avoid loading heavy dependencies during --help
32
+ from pepe.model_selecter import select_model
33
+
34
+ selected_model = select_model(
35
+ args.model_name, trust_remote_code=args.trust_remote_code
36
+ )
37
+
38
+ embedder = selected_model(args)
39
+
40
+ logger.info("Embedder initialized")
41
+
42
+ embedder.run()
43
+
44
+ logger.info("All outputs saved.")
45
+
46
+
47
+ if __name__ == "__main__":
48
+ main()
@@ -90,15 +90,19 @@ def embed(
90
90
  "split_long_sequences": kwargs.get("split_long_sequences", False),
91
91
  "split_overlap": kwargs.get("split_overlap", 0),
92
92
  "force_split_length": kwargs.get("force_split_length"),
93
+ "trust_remote_code": kwargs.get("trust_remote_code", False),
93
94
  "num_workers": kwargs.get("num_workers", 8),
94
95
  "disable_special_tokens": kwargs.get("disable_special_tokens", False),
95
96
  "flatten": kwargs.get("flatten", False),
96
97
  "flush_batches_after": kwargs.get("flush_batches_after", 128),
98
+ "verbose": kwargs.get("verbose", False),
97
99
  }
98
100
 
99
101
  args = SimpleNamespace(**args_dict)
100
102
 
101
- selected_model_class = select_model(model_name)
103
+ selected_model_class = select_model(
104
+ model_name, trust_remote_code=args.trust_remote_code
105
+ )
102
106
  embedder = selected_model_class(args)
103
107
  embedder.run()
104
108