feat(validation): add CLI entry point script
This commit is contained in:
89
scripts/validate_macrolactone_db.py
Executable file
89
scripts/validate_macrolactone_db.py
Executable file
@@ -0,0 +1,89 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Validate MacrolactoneDB 12-20 membered rings.
|
||||
|
||||
Usage:
|
||||
pixi run python scripts/validate_macrolactone_db.py \
|
||||
--input data/MacrolactoneDB/ring12_20/temp.csv \
|
||||
--output validation_output \
|
||||
--sample-ratio 0.1
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
# Add src to path
|
||||
sys.path.insert(0, str(Path(__file__).parent.parent / "src"))
|
||||
|
||||
from macro_lactone_toolkit.validation.validator import MacrolactoneValidator
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Validate MacrolactoneDB 12-20 membered rings"
|
||||
)
|
||||
parser.add_argument(
|
||||
"--input",
|
||||
type=str,
|
||||
default="data/MacrolactoneDB/ring12_20/temp.csv",
|
||||
help="Input CSV file path",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--output",
|
||||
type=str,
|
||||
default="validation_output",
|
||||
help="Output directory",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--sample-ratio",
|
||||
type=float,
|
||||
default=0.1,
|
||||
help="Sampling ratio (0.0-1.0)",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--smiles-col",
|
||||
type=str,
|
||||
default="smiles",
|
||||
help="SMILES column name",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--id-col",
|
||||
type=str,
|
||||
default="IDs",
|
||||
help="ID column name",
|
||||
)
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
print("=" * 60)
|
||||
print("MacrolactoneDB Validation")
|
||||
print("=" * 60)
|
||||
print(f"Input: {args.input}")
|
||||
print(f"Output: {args.output}")
|
||||
print(f"Sample ratio: {args.sample_ratio}")
|
||||
print("=" * 60)
|
||||
|
||||
validator = MacrolactoneValidator(
|
||||
output_dir=args.output,
|
||||
sample_ratio=args.sample_ratio,
|
||||
smiles_col=args.smiles_col,
|
||||
id_col=args.id_col,
|
||||
)
|
||||
|
||||
results = validator.run(args.input)
|
||||
|
||||
print("\n" + "=" * 60)
|
||||
print("Validation Complete")
|
||||
print("=" * 60)
|
||||
print(f"Total processed: {results['total']}")
|
||||
print(f"Success: {results['success']}")
|
||||
print(f"Failed: {results['failed']}")
|
||||
print(f"Skipped: {results['skipped']}")
|
||||
print("=" * 60)
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
Reference in New Issue
Block a user