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.
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/MANIFEST.in +1 -0
- {pepe_cli-1.3.0/src/pepe_cli.egg-info → pepe_cli-1.4.0}/PKG-INFO +1 -1
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/pyproject.toml +24 -0
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/pepe/__init__.py +3 -3
- pepe_cli-1.4.0/src/pepe/__main__.py +48 -0
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/pepe/api.py +5 -1
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/pepe/embedders/base_embedder.py +325 -156
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/pepe/embedders/custom_embedder.py +44 -24
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/pepe/embedders/esm_embedder.py +39 -26
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/pepe/embedders/huggingface_embedder.py +183 -97
- pepe_cli-1.4.0/src/pepe/model_errors.py +130 -0
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/pepe/model_selecter.py +103 -26
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/pepe/parse_arguments.py +23 -5
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/pepe/utils.py +143 -103
- {pepe_cli-1.3.0 → pepe_cli-1.4.0/src/pepe_cli.egg-info}/PKG-INFO +1 -1
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/pepe_cli.egg-info/SOURCES.txt +11 -3
- pepe_cli-1.4.0/src/tests/__init__.py +0 -0
- pepe_cli-1.4.0/src/tests/conftest.py +137 -0
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/tests/test_api_unittest.py +7 -0
- pepe_cli-1.4.0/src/tests/test_custom_embedder.py +55 -0
- pepe_cli-1.4.0/src/tests/test_esm1_integration.py +65 -0
- pepe_cli-1.4.0/src/tests/test_generic_hf_integration.py +57 -0
- pepe_cli-1.4.0/src/tests/test_generic_safeguards.py +235 -0
- pepe_cli-1.4.0/src/tests/test_model_selection.py +289 -0
- pepe_cli-1.4.0/src/tests/test_reconstruct_mean_pooled.py +87 -0
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/tests/test_splitting.py +0 -1
- pepe_cli-1.4.0/src/tests/test_streaming_roundtrip.py +143 -0
- pepe_cli-1.4.0/src/tests/test_sync_arguments.py +157 -0
- pepe_cli-1.4.0/src/tests/test_t5_antiberta2_integration.py +138 -0
- pepe_cli-1.3.0/src/pepe/__main__.py +0 -25
- pepe_cli-1.3.0/src/tests/test_model_selection.py +0 -104
- pepe_cli-1.3.0/src/tests/test_run.py +0 -45
- pepe_cli-1.3.0/src/tests/verify_cross_tool_consistency.py +0 -132
- pepe_cli-1.3.0/src/tests/verify_readme.py +0 -65
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/LICENSE +0 -0
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/README.md +0 -0
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/examples/custom_model/create_example_custom_model.py +0 -0
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/examples/custom_model/example_protein_model/config.json +0 -0
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/examples/custom_model/example_protein_model/pytorch_model.pt +0 -0
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/examples/custom_model/example_protein_model/special_tokens_map.json +0 -0
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/examples/custom_model/example_protein_model/tokenizer_config.json +0 -0
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/examples/custom_model/example_protein_model/vocab.json +0 -0
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/examples/custom_model/example_protein_model/vocab.txt +0 -0
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/examples/custom_model/example_sequences.fasta +0 -0
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/examples/custom_model/example_substring.csv +0 -0
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/examples/embedding_options.md +0 -0
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/examples/model_selection.md +0 -0
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/requirements.txt +0 -0
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/setup.cfg +0 -0
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/setup.py +0 -0
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/pepe/embedders/__init__.py +0 -0
- /pepe_cli-1.3.0/src/tests/__init__.py → /pepe_cli-1.4.0/src/pepe/py.typed +0 -0
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/pepe_cli.egg-info/dependency_links.txt +0 -0
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/pepe_cli.egg-info/entry_points.txt +0 -0
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/pepe_cli.egg-info/requires.txt +0 -0
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/pepe_cli.egg-info/top_level.txt +0 -0
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/tests/test_device_logic.py +0 -0
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/tests/test_esmc.py +0 -0
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/tests/test_esmc_modes.py +0 -0
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/tests/test_load_layers_default.py +0 -0
- {pepe_cli-1.3.0 → pepe_cli-1.4.0}/src/tests/test_parse_arguments.py +0 -0
|
@@ -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.
|
|
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
|
|
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("
|
|
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(
|
|
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
|
|