schrodinger.application.combinatorial_explorer.driver_utils module

Provides supporting functionality for combinatorial_explorer_driver.py.

Copyright Schrodinger LLC, All Rights Reserved.

class schrodinger.application.combinatorial_explorer.driver_utils.RouteSourceType(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)

Bases: enum.Enum

list = 1
zip = 2
dir = 3
invalid = 4
schrodinger.application.combinatorial_explorer.driver_utils.add_build_args(parser)

Adds arguments for TASK_BUILD.

Parameters

parser (argparse.ArgumentParser) – Argument parser object.

schrodinger.application.combinatorial_explorer.driver_utils.add_describe_args(parser)

Adds arguments for TASK_DESCRIBE.

Parameters

parser (argparse.ArgumentParser) – Argument parser object.

schrodinger.application.combinatorial_explorer.driver_utils.add_reactants_to_database(reactants, reactant_class, smiles_name, fp_generator, db)

Helper function that computes fingerprints/properties for the subset of the supplied reactants that aren’t already in the database, and then adds the resulting reactants to the database.

Parameters
  • reactants (list[phase.RfpReactant]) – The reactants to add. Each reactant is expected to contain a dummy fingerprint and dummy properties, which will be replaced by an actual fingerprint and, optionally, actual properties if the reactant is not already in the database.

  • reactant_class (str) – The class to which all supplied reactants belong

  • smiles_name (list[tuple(str, str)]) – Reactant SMILES, name tuples used to identify reactants which are already in the database

  • fp_generator (canvas.ChmProfiler) – Fingerprint and property generator, configured to generate properties only if storing properties in database

  • db (phase.RfpDatabase) – The database to which reactants are to be added

schrodinger.application.combinatorial_explorer.driver_utils.add_screen_args(parser)

Adds arguments for TASK_SCREEN.

Parameters

parser (argparse.ArgumentParser) – Argument parser object.

schrodinger.application.combinatorial_explorer.driver_utils.build_database(args, logger=None)

Adds records to a reactant fingerprint database. Creates a new database if args.new is True.

Parameters
  • args (argparse.Namespace) – Command line arguments

  • logger (logging.Logger) – Logger to which messages are to be written

Raise

RuntimeError if problems are encountered while building database

schrodinger.application.combinatorial_explorer.driver_utils.describe_database(args)

Returns a string containing a description of the reactant fingerprint database.

Parameters

args (argparse.Namespace) – Command line arguments

Returns

Database description

Return type

str

schrodinger.application.combinatorial_explorer.driver_utils.extract_route_files(zip_archive, dest_dir=None, look_dir=None)

Extracts JSON route files from a Zip archive and returns the sorted names of the route files.

Parameters
  • zip_archive (str) – Zip archive with JSON files at any level

  • dest_dir (str) – The directory to which route files are to be extracted. The default is CWD.

  • look_dir (str) – Look in this directory for extracted route files. This parameter would normally be supplied if extracting to the CWD and one knows that the subdirectory look_dir will be created.

Returns

The sorted names of the extracted route files

Return type

list[str]

schrodinger.application.combinatorial_explorer.driver_utils.filter_routes(route_files, min_depth, max_depth, db_path)

Given a list of route files, this function returns the subset whose reaction depths lie within the specified range and for which all required reactants are found in the reactant fingerprint database.

Parameters
  • route_files (list[str]) – The route files to check

  • min_depth (int) – Minimum reaction depth

  • max_depth (int) – Maximum reaction depth

  • db_path (str) – Reactant fingerprint database file

Returns

Subset of route_files satisfying aforementioned conditions

Return type

list[str]

schrodinger.application.combinatorial_explorer.driver_utils.get_depth_limits(depth)

Given a depth specification of the form <min>:<max>, this function returns the minimum and maximum depth.

Parameters

depth (str) – min and max reaction depths separated by ‘:’

Returns

tuple of min and max values

Return type

tuple[int, int]

Raise

ValueError if specification is invalid

schrodinger.application.combinatorial_explorer.driver_utils.get_distributed_screen_commands(args, nsub)

Returns subjob commands for running a distributed screen.

Parameters
  • args (argparse.Namespace) – Command line arguments

  • nsub (int) – Number of subjobs

Returns

List of subjob commands

Return type

list[list[str]]

schrodinger.application.combinatorial_explorer.driver_utils.get_filter_properties(filter_file)

Returns a sorted, unique list of properties utilized in the provided property filter file.

Parameters

filter_file (str) – Name of property filter file

Returns

Sorted unique property names

Return type

list[str]

schrodinger.application.combinatorial_explorer.driver_utils.get_jobname(db_path, task)

Determines the job name from SCHRODINGER_JOBNAME or from the base name of the reactant fingerprint database file.

Parameters
  • db_path (str) – Reactant fingerprint database file

  • task (str) – The task being performed

Returns

Job name

Return type

str

schrodinger.application.combinatorial_explorer.driver_utils.get_parser()

Creates argparse.ArgumentParser with supported command line options.

Returns

Argument parser object

Return type

argparse.ArgumentParser

schrodinger.application.combinatorial_explorer.driver_utils.get_pfx_files(args)

Returns the names of PathFinder reactant files if they are expected to exist on the current host. Does not actually check for the presence of the files.

Parameters

args (argparse.Namespace) – Command line arguments

Returns

List of file names or empty list

Return type

list[str]

schrodinger.application.combinatorial_explorer.driver_utils.get_reactant_classes_from_routes(db_path, source)

Given a reactant fingerprint database and a valid source of route files, this function returns a dictionary that maps each route file basename to the reactant classes utilized in that route. Ignores routes that contain any reactant classes not present in the database.

Parameters
  • db_path (str) – Reactant fingerprint database file

  • source (str) – Valid source of route files

Returns

Dictionary of route file basename to list of reactant classes

Return type

dict

schrodinger.application.combinatorial_explorer.driver_utils.get_route_files_from_zip(zip_archive)

Given a Zip archive purported to contain synthetic route files, this function returns a sorted list of the names of any JSON files in the archive.

Parameters

zip_archive (str) – Name of Zip archive

Returns

Sorted list of any JSON files in the archive

Return type

list[str]

schrodinger.application.combinatorial_explorer.driver_utils.get_route_input_files(source)

Given a valid source of synthetic route files, this function returns the sorted names of the the associated input files for the job. For a source that consists of a comma-separated list or a directory path, a list of JSON files is returned; for a Zip file, a list containing the name of the Zip file is returned.

Parameters

source (str) – Valid source of route files

Returns

Sorted list of JSON files or Zip file

Return type

list[str]

schrodinger.application.combinatorial_explorer.driver_utils.get_route_source_type(source)

Given the source of synthetic route files, this function determines whether it’s a comma-separated list of JSON files, a Zip archive, a directory or invalid.

Parameters

source (str) – Source of route files

Returns

Route source type

Return type

RouteSourceType

schrodinger.application.combinatorial_explorer.driver_utils.locate_pfx_files(args)

Determines whether PathFinder reactant files must exist and, if so, the directory in which they should be located. Does not actually check for the presence of the files.

Parameters

args (argparse.Namespace) – Command line arguments

Returns

tuple of whether files must exist and path to files

Return type

tuple[bool, str]

schrodinger.application.combinatorial_explorer.driver_utils.log_build_progress(logger, nproc, db)

Writes a build database progress message to the supplied logger if it exists.

Parameters
  • logger (logging.Logger or NoneType) – Logger to which progress message is to be written

  • nproc (int) – The total number of reactants processed thus far

  • db (phase.RfpDatabase) – Reactant database to which reactants are being added

schrodinger.application.combinatorial_explorer.driver_utils.split_route_files(args, cleanup=False)

Splits input route files over a series of Zip files named <jobname>_sub_<1>_routes.zip, <jobname>_sub_<2>_routes.zip, etc. The file <jobname>_sub_<i>_routes.zip holds a directory named <jobname>_sub_<n>_routes, which, in turn, holds one or more JSON route files. The number of Zip files created will be equal to the number of subjobs requested or the total number of usable input route files, whichever is smaller. Zip file names are returned.

Parameters
  • args (argparse.Namespace) – Command line arguments

  • cleanup (bool) – Whether to remove directories created to hold route files being zipped or unzipped

Returns

The names of the Zip files created

Return type

list[str]

Raise

RuntimeError if no route files remain after filtering on reaction depth and database reactant classes

schrodinger.application.combinatorial_explorer.driver_utils.validate_build_args(args)

Checks the validity of command line arguments for TASK_BUILD.

Parameters

args (argparse.Namespace) – Command line arguments

Returns

tuple of validity and non-empty error message if not valid

Return type

tuple[bool, str]

schrodinger.application.combinatorial_explorer.driver_utils.validate_database_args(args)

Checks the validity of the reactant fingerprint database.

Parameters

args (argparse.Namespace) – Command line arguments

Returns

tuple of validity and non-empty error message if not valid

Return type

tuple[bool, str]

schrodinger.application.combinatorial_explorer.driver_utils.validate_describe_args(args)

Checks the validity of command line arguments for TASK_DESCRIBE.

Parameters

args (argparse.Namespace) – Command line arguments

Returns

tuple of validity and non-empty error message if not valid

Return type

tuple[bool, str]

schrodinger.application.combinatorial_explorer.driver_utils.validate_pfx_files(args)

Checks for the presence of PathFinder reactant files if they are expected to exist.

Parameters

args (argparse.Namespace) – Command line arguments

Returns

tuple of validity and non-empty error message if not valid

Return type

tuple[bool, str]

schrodinger.application.combinatorial_explorer.driver_utils.validate_property_filters(args)

Verifies that the property filter file exists and, if not startup time, that all specified properties exist in the database.

Parameters

args (argparse.Namespace) – Command line arguments

Returns

tuple of validity and non-empty error message if not valid

Return type

tuple[bool, str]

schrodinger.application.combinatorial_explorer.driver_utils.validate_routes(source)

Verifies that source is a legal source of synthetic route files.

Parameters

source (str) – A comma-separated list of JSON route files, a Zip archive containing one or more route files or a path to a directory containing route files

Returns

tuple of validity and non-empty error message if not valid

Return type

tuple[bool, str]

schrodinger.application.combinatorial_explorer.driver_utils.validate_screen_args(args)

Checks the validity of command line arguments for TASK_SCREEN.

Parameters

args (argparse.Namespace) – Command line arguments

Returns

tuple of validity and non-empty error message if not valid

Return type

tuple[bool, str]

schrodinger.application.combinatorial_explorer.driver_utils.validate_args(args)

Checks the validity of command line arguments.

Parameters

args (argparse.Namespace) – Command line arguments

Returns

tuple of validity and non-empty error message if not valid

Return type

tuple[bool, str]