Files
SciMesh/scimesh/workloads/help.py

76 lines
2.1 KiB
Python

"""Quick-start help workload."""
from __future__ import annotations
import argparse
from textwrap import dedent
HELP_TEXT = dedent(
"""\
SciMesh quick start
===================
SciMesh runs molecular similarity workloads locally. Input must be a ChEMBL TSV
with chembl_id and canonical_smiles columns.
1. Activate the project environment and create a directory for outputs:
source .venv/bin/activate
mkdir -p results
2. Find molecules similar to gefitinib (CHEMBL939):
scimesh similarity-search chembl_37_chemreps.txt \\
--query-id CHEMBL939 \\
--top-k 20 \\
--max-rows 10000 \\
--output results/gefitinib_top20.csv
3. Search by a SMILES query instead of a ChEMBL ID:
scimesh similarity-search chembl_37_chemreps.txt \\
--query-smiles 'CCO' \\
--top-k 20 \\
--output results/smiles_search.csv
4. Find the least similar molecules. With "less", results are ranked from
lowest similarity upward; --threshold is an optional <= filter:
scimesh similarity-search chembl_37_chemreps.txt \\
--query-id CHEMBL939 \\
--threshold-direction less \\
--threshold 0.1 \\
--top-k 20 \\
--output results/least_similar.csv
5. Build a small exact similarity graph:
scimesh similarity-graph chembl_37_chemreps.txt \\
--max-rows 1000 \\
--threshold 0.7 \\
--block-size 250 \\
--output results/similarity_graph.csv
Use --max-rows for quick local tests; omit it to process the full dataset.
For all options, run:
scimesh similarity-search --help
scimesh similarity-graph --help
"""
)
class HelpWorkload:
"""Expose practical examples without adding special logic to the main CLI."""
name = "help"
help = "Show a quick start and runnable examples."
def configure_parser(self, parser: argparse.ArgumentParser) -> None:
parser.description = "Show SciMesh setup and usage examples."
def run(self, args: argparse.Namespace) -> int:
print(HELP_TEXT)
return 0