| | """ |
| | Symmetry-corrected RMSD calculations in Python |
| | """ |
| |
|
| | if __name__ == "__main__": |
| | import argparse as ap |
| | import importlib.util |
| | import sys |
| |
|
| | from spyrmsd import io |
| | from spyrmsd.rmsd import rmsdwrapper |
| |
|
| | parser = ap.ArgumentParser( |
| | prog="python -m spyrmsd", |
| | description="Symmetry-corrected RMSD calculations in Python.", |
| | ) |
| |
|
| | parser.add_argument("reference", type=str, help="Reference file") |
| | parser.add_argument("molecules", type=str, nargs="+", help="Input file(s)") |
| | parser.add_argument("-m", "--minimize", action="store_true", help="Minimize (fit)") |
| | parser.add_argument( |
| | "-c", "--center", action="store_true", help="Center molecules at origin" |
| | ) |
| | parser.add_argument("--hydrogens", action="store_true", help="Keep hydrogen atoms") |
| | parser.add_argument( |
| | "-n", "--nosymm", action="store_false", help="No graph isomorphism" |
| | ) |
| |
|
| | args = parser.parse_args() |
| |
|
| | if ( |
| | importlib.util.find_spec("openbabel") is None |
| | and importlib.util.find_spec("rdkit") is None |
| | ): |
| | raise ImportError( |
| | "OpenBabel or RDKit not found. Please install OpenBabel or RDKit to use sPyRMSD as a standalone tool." |
| | ) |
| |
|
| | try: |
| | ref = io.loadmol(args.reference) |
| | except OSError: |
| | print("ERROR: Reference file not found.", file=sys.stderr) |
| | exit(-1) |
| |
|
| | |
| | try: |
| | mols = [mol for molfile in args.molecules for mol in io.loadallmols(molfile)] |
| | except OSError: |
| | print("ERROR: Molecule file(s) not found.", file=sys.stderr) |
| | exit(-1) |
| |
|
| | |
| | RMSDlist = rmsdwrapper( |
| | ref, |
| | mols, |
| | symmetry=args.nosymm, |
| | center=args.center, |
| | minimize=args.minimize, |
| | strip=not args.hydrogens, |
| | ) |
| |
|
| | for RMSD in RMSDlist: |
| | print(f"{RMSD:.5f}") |
| |
|