schrodinger.application.matsci.jwsteps module

Steps for use in Workflows

Copyright Schrodinger, LLC. All rights reserved.

schrodinger.application.matsci.jwsteps.import_driver(dpath)
class schrodinger.application.matsci.jwsteps.ParentPathInfo(subdirs, names, outfiles)

Bases: tuple

__contains__(key, /)

Return key in self.

__len__()

Return len(self).

count(value, /)

Return number of occurrences of value.

index(value, start=0, stop=9223372036854775807, /)

Return first index of value.

Raises ValueError if the value is not present.

names

Alias for field number 1

outfiles

Alias for field number 2

subdirs

Alias for field number 0

exception schrodinger.application.matsci.jwsteps.JobCreationError

Bases: Exception

Raised when a job cannot be created

__init__(*args, **kwargs)
args
with_traceback()

Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.

class schrodinger.application.matsci.jwsteps.BaseWorkflow(struct, options, count, jobq, strcleaner=None, logger=None, subhierarchy=None, robust=False, max_retries=None)

Bases: schrodinger.application.matsci.jaguarworkflows.WorkFlow

Base Workflow class

getSteps()

Create all the steps required for this workflow

This method should almost certainly be overridden by any child class. The example given here is just that - an example

write(writer, *args, **kwargs)

Write out the structure for this workflow and all the child structures

Parameters

writer (schrodinger.StructureWriter) – The writer to use to write the structure

writeSmap(filename)

Write smap files for steps that need them and the smap file for the entire job

Parameters

filename (str) – The name of the output structure file

Return type

str or None

Returns

The name of the written smap file or None if no file written

FALLBACK_BASE_NAME = 'structure'
__init__(struct, options, count, jobq, strcleaner=None, logger=None, subhierarchy=None, robust=False, max_retries=None)

Create a Workflow object

Parameters
  • struct (schrodinger.structure.Structure) – The initial structure to use for the workflow

  • options (argparse Namespace object) – The input options.

  • count (int) – A serial number to distinguish this workflow from other workflows. May be used to create a unique base name.

  • jobq (JobDJ) – The queue to submit jobs to

  • strcleaner (schrodinger.application.matsci.jobutils.StringCleaner or None) – A StringCleaner instance used to guarantee unique workflow base names

  • logger (logging.Logger) – The logger for this class

  • subhierarchy (str) – If given, the final structure for all steps other than the main step will be placed in a PT subgroup with this name.

  • robust (bool) – If True, use the robust Jaguar driver to run Jaguar jobs. If false, use Jaguar directly.

  • max_retries (int or None) – see queue.JobControlJob

check(log_zero_steps=False)

Check if this workflow is complete. Also, submit the next step(s) if the previous step has finished.

Parameters

log_zero_steps (bool) – log a message if there are zero steps

Return type

bool

Returns

True if the workflow is complete, False if not

generateBaseName(strcleaner, count)

Come up with a base name for this workflow based on the workflow structure title or a fallback name if the title can’t be used. Pass in a StringCleaner object to guarantee uniqueness.

Parameters
log(msg, prefix=True, level=20, pad=False, pad_below=False)

Add a message to the log file

Parameters
  • msg (str) – The message to add

  • prefix (bool) – Whether to add information about the workflow and step name to the front of the message string

  • level (int) – A logging constant indicating the priority level of the message

  • pad (bool) – Whether to pad above this message with a blank line

  • pad_below (bool) – Whether to pad below this message with a blank line

periodicMaintenance()

The run_workflows function will call this method periodically - it can be used to perform operations while one of the workflow steps is running

recordFailureStatus()

Set properties based on the success/failure of each step, and write workflow structures to a summary failed file if any step failed

stepsInWriteOrder()

Generator for steps in the order they’re output structures should be written to the results file. Main step first, then all other steps in order of creation.

Return type

iterator

Returns

iterator of step objects

class schrodinger.application.matsci.jwsteps.SubdirectoryStepMixin(*args, **kwargs)

Bases: object

A mixin to handle some common functionality for steps that run in subdirectories

__init__(*args, **kwargs)

See parent class for documentation

finishProcessingJobControlJob()

Add all the subjob files to the backend

setSubDir()

Determine the absolute path to this step’s subdirectory so that we can always access it no matter what the current directory is

class schrodinger.application.matsci.jwsteps.BaseStep(*args, procs=1, tag=None, flags=None, archive=False, monitor_globs=None, full_command=None, local_files=None, input_file=None, cpu_hostname=None, gpu_hostname=None, umbrella='per_flag', splitter=False, split_index=1, split_tag='', child_stages=None, use_jc=None, tpp=1, **kwargs)

Bases: schrodinger.application.matsci.jwsteps.SubdirectoryStepMixin, schrodinger.application.matsci.jaguarworkflows.Step

A base class for Steps that are not simple Jaguar jobs. Because this step fires off a Python script that itself fires off Jaguar jobs, we have to modify a number of methods that dealt with the jaguar .in file directly or expected standard Jaguar output.

PROCS = 1
STEP_NAME = 'Base Step'
JOB_BASE = 'base'
DRIVER_PATH = 'driver_dir/driver.py'
DRIVER = None
FLAGS = {}
FLAGS_ADD_INPUT_NAME = True
FLAGS_INPUT_NAME_FLAG = ''
FLAGS_ADD_JOB_NAME = True
FLAGS_ADD_TPP = False
FLAGS_ADD_DOUBLE_DASH = False
CAN_CREATE_TRAJECTORY = False
REQUIRES_CMS_INPUT = False
REQUIRES_TRAJECTORY_INPUT = False
OUTPUTS_CMS = False
USES_JC = True
USES_MULTI_SUBJOBS = False
USES_THREADS = False
RESOURCE = 'cpu'
SUBJOB_RESOURCE = 'cpu'
BUILTIN_WF_FILE = None
SPLITTER = False
COMBINER = False
__init__(*args, procs=1, tag=None, flags=None, archive=False, monitor_globs=None, full_command=None, local_files=None, input_file=None, cpu_hostname=None, gpu_hostname=None, umbrella='per_flag', splitter=False, split_index=1, split_tag='', child_stages=None, use_jc=None, tpp=1, **kwargs)

Create a BaseStep object

Parameters
  • procs (int) – The number of processors to allocate to steps of this class

  • tag – str(tag) will be added to the end of the job name and step name

  • flags (dict) – Command line argument flags in addition to, or that override, the class FLAGS variable. Keys are flag names (“-flag”), values are values for that flag. For flags that take no value, use None as the value. To turn off (not include in the command line) a flag in the class FLAGS variable, use the DO_NOT_USE_FLAG constant as the value.

  • archive (bool) – If True, instead of copying the subdirectory and individual files, will tar.gz up the entire subdirectory and copy that back.

  • monitor_globs (list) – List of valid file globs (i.e. ["*.zip"]) that should be monitored for and copied back to the original job directory when they appear. Note that the interaction of archive and moitor_globs is such that if both are specified, the result will be a subdirectory with the monitored files AND an archive of the entire subdirectory (including any monitored files that remain when this step completes).

  • full_command (list) – the full command line for this step including the driver path, etc. but without $SCHRODINGER/run. The command will be used “as is” except for replacing some pre-defined tokens with job-specific strings - see the createCommand function. Each item of the list is a word of the command line invocation.

  • local_files (list) – A list of file paths to copy into the job subdirectory before running the command

  • input_file (str) – The name of the file containing the input structures/data. It is ignored if there is a parent for this step.

  • cpu_hostname (str) – The name of the host to run CPU processes on

  • gpu_hostname (str) – The name of the host to run GPU processes on

  • umbrella (str) – Whether to run drivers that have GPU subjobs in umbrella mode or not. Should be one of UMBRELLA_ALWAYS (always run in umbrella mode even if the flag is not provided), UMBRELLA_NEVER (never run in umbrella mode even if the flag is provided) or UMBRELLA_PER_FLAG (obey the presence or absence of the -md_umbrella flag for this step). This parameter is only used if both cpu_hostname and gpu_hostname are given - if not, UMBRELLA_ALWAYS is enforced.

  • splitter (bool) – True if this step splits the workflow into parallel workflows, False if it does not. Note that this keyword is ignored if the SPLITTER class constant is True.

  • split_index (int) – If this step STARTS a new split workflow, the 1-based index of that workflow. Otherwise, just use 1 to indicate that it is the same workflow as the parent step.

  • split_tag (str) – An extra tag to add to the step name to distinguish between the same stage in parallel workflows

  • child_stages (list) – A list of child stages that need steps to be created from them. Each item is a jaguar_multistage_workflow_utils.StageData instance. This list contains one StageData item for each child stage no matter how many steps will be created from that stage due to splitting the workflow. For instance, if a workflow is A-B-C-D, and B is a splitter step that splits the workflow into 3 workflows, child_stages for B should be [C], not [C, C, C].

  • use_jc (bool) – True if the step should use job control, False if not. The default value of None defaults to the class USES_JC constant.

  • tpp (int) – The number of threads per process. Serial processes use 1 thread. This will be added to the step command via -TPP tpp.

See parent class for additional documentation

Raises

ValueError – if umbrella is not an allowed value

property output_file_names

Get the names of all the output structures

Return type

list

Returns

Each item of the list is a the name of an output file. The step subdirectory path is NOT prepended to the file name.

getParentalInformation()

Get information about parent and required step names, output and subdirectories.

Return type

(ParentalPathInfo, ParentalPathInfo)

Returns

The first item gives information about the parent job, the second item gives cumulative information about the required steps. In cases where there is multiple information, such as the parent output file names, or multiple required step names, etc, the data is provided as space-delimited strings. The subdirectory paths and output file names are relative to the overall job directory.

addParentalInformationProperties(struct)

Add parental subdirectory properties to the structure

Parameters

struct (schrodinger.structure.Structure) – The structure to add properties to

setStructOrCMSProperty(nottaduck, prop, value)

Set the given property to value on nottaduck, whether nottaduck is a Structure object or CMS object

Parameters
  • nottaduck (structure.Structure or cms.Cms) – The structure-like object to set the property on

  • prop (str) – The property to set

  • value – The value of the property

writeInput(struct)

Write the input file

Parameters

struct (structure.Structure, cms.Cms, or None) – The structure to write. If None it will write the input file. If struct is a cms, only an mae will be written if this class does not require cms input.

getNumSplits()

Get the number of parallel workflows this step will create. A 1 indicates that this step does not split the workflow.

Return type

int

Returns

The number of parallel workflows this step creates. 1 means it does not split the workflow

start()

Start the job - create the input and write it, adding necessary output files to make sure they get copied back

noJobAction()

Subclasses that do not run a job can overwrite this method to perform their action when the step is run.

removeIncomingProperties(struct)

Remove properties on the structure that may have come from previous steps and that we do not want to propagate through this step

Parameters

struct (structure.Structure) – The structure to remove properties from

getStructure()

Get the starting structure for this step

Overrides the parent class to get the initial structure for this workflow if the Step has no parent.

Return type

schrodinger.structure.Structure, None, or str

Returns

The starting structure for this step. None if input is not a structure. str if the starting structure is actually a file structures, in which case the return value is the path to the file.

getStructForChild(index=1)

Get the structure from this step to pass on to a child step

Parameters

index (int) – The 1-based index of the structure to get. Should be 1 unless this step is splitting the workflow into parallel workflows, in which case it is the index of the workflow that will run this structure. Unused in the base class, but subclasses may use this parameter.

Return type

structure.Structure, cms.Cms, or str

Returns

The structure the child step should use. If a str is returned, it is the path to the input structure file

setWAMProperty(oname, structs)

Some workflow types set the WAM property on the structure file rather than the structure. The WAM property needs to be on the structure in order for the WAM to get passed into the final structure file.

Parameters
  • oname (str) – The name of the structure file

  • structs (list) – Each item of the list is a Structure or Cms object that needs to have the WAM property set on it

getOutput(quiet=False)

Read in the results of the calculation

Parameters

quiet (bool) – If True, no error messages will be printed. If False, (default) error messages will be printed. Also, if True, self.ok will not be set to False if the output file cannot be read.

Return type

None or list

Returns

None if the calculation failed, or a list of output structures from a successful calculation.

getFirstOutputStructure()

Get the first output structure from the results

Return type

structure.Structure

Returns

The structure to write to the output file

getStructsForWriting()

Get the structures from this step to write to the final Workflow file

Return type

list of schrodinger.structure.Structure or str

Returns

A list of structures to write or the string constant NO_STRUCTURES to indicate that the step is intentionally returning no structures. An empty list will indicate expected structures were not found.

getInputName()

Get the name of the input structure file

Return type

str

Returns

The input structure file name

getInputPath()

Get the full path to the input file

Return type

str

Returns

The full path to the input file

getOutputName()

Get the name of the output structure file

Return type

str

Returns

The output structure file name

finish()

Finish this step, including processing any output

write(writer, props=None, hierarchy=None)

Add the final structure for this step to the output structure file

Parameters
  • writer (schrodinger.StructureWriter) – The writer to use to write the structure

  • props (dict) – A dictionary of property/value pairs to add to the property dictionary of this object.

  • hierarchy (list) – The project group hierarchy for this result - each item is a str

processSmapInfo()

Create an smap file in the subjob directory to enable Maestro’s little blue v and s buttons if the user manually imports the subjob output. Also copy smap-eligible files to the main job directory and pass back the file information needed for writing the main job smap file.

Return type

list

Returns

Each item of the list is a file name that should appear in the main job smap file for this step.

createCommand()

Create the command line

Return type

list

Returns

The command line in list form

Raises

JobCreationError – If the command cannot be created

addTPPIfNeeded(cmd)

Add, or replace, the value of TPP in the command as needed.

Parameters

cmd (list) – The command line as a list of strings. The list is modified in-place

adjustCommandForQueue(cmd)

Add subhost and umbrella flags that direct this step’s subjobs to the correct host. Modifies the given command list in place.

Parameters

cmd (list) – The current command line as a list of strings

createJob()

Create the job command and object

Return type

jobutils.RobustSubmissionJob

Returns

The job object to run

canDriverUseUmbrella()

Check whether the driver for this step knows the -md_umbrella flag

Return type

bool

Returns

True if -md_umbrella is a known flag, False if not

determineQueueResource(cmd)

Determine what resource this job should request

Parameters

cmd (list) – The command line as a list of strings

Return type

str or None

Returns

The resource (cpu, gpu or None) this job should request

createQJobFromCommand(cmd)

Create the JobDJ job from the list of command line arguments. The job will be set to run in the Step subdirectory.

Return type

jobutils.RobustSubmissionJob

Returns

A job object that can be added to JobDJ

processOutput(output)

Process the output of a job during the finish part of the step

Parameters

output – The output of the job. Type may vary in subclasses

archiveSubDir()

Archive this step’s subdirectory and add it to the backend for copy back

finishProcessingJobControlJob()

Override the parent method to archive the directory if requested

periodicMaintenance()

This method is periodically called while the workflow is running

monitorFiles()

Check for any requested files that need to be copied back immediately

ARCHIVED_INPUT = ['.in', '.mae', '.maegz']
ARCHIVED_KEEPERS = {'.smap', '.spm', '.vib', '.vis'}
archiveFiles()

Create a tar.gz archive of all jaguar files and then removes any files that are no longer needed.

calcsDone()

Check to see if the calculation finished

If finished and the job failed, self.ok will be set to False

Return type

bool

Returns

True if the calculation finished, False if not

canStart()

Check to see if this job can start - if the parent job(s) have finished successfully.

Return type

bool

Returns

True if the job can start, False if not

getInput(override_uhf=True, override_solvent=True)

Get the JaguarInput object for this step, setting the keywords as required.

Return type

None or jaguar_input.JaguarInput

Returns

None if an error occured, or the jaguar_input.JaguarInput object to use for this step

handleFileLinkProperties(struct)

Fix existing Jaguar file link properties and add any new ones

Parameters

struct (structure.Structure) – The structure with the properties

log(msg, prefix=True, level=20)

Add a message to the parent workflow’s log file

Parameters
  • msg (str) – The message to add

  • prefix (bool) – Whether to add information about the workflow and step name to the front of the message string

  • level (int) – A logging constant indicating the priority level of the message

setKeywords(input, keystring)

Set the keywords for this job

Parameters
  • input (jaguar_input.JaguarInput) – The JaguarInput object to set the keywords on

  • keystring (str) – Space separated keyword=value pairs. Each pair must contain an equals sign

setSubDir()

Determine the absolute path to this step’s subdirectory so that we can always access it no matter what the current directory is

storeFilenames()

Store file names associated with this job before we delete the job object

class schrodinger.application.matsci.jwsteps.MacromodelConfSearchStep(*args, procs=1, tag=None, flags=None, archive=False, monitor_globs=None, full_command=None, local_files=None, input_file=None, cpu_hostname=None, gpu_hostname=None, umbrella='per_flag', splitter=False, split_index=1, split_tag='', child_stages=None, use_jc=None, tpp=1, **kwargs)

Bases: schrodinger.application.matsci.jwsteps.BaseStep

Step to perform a macromodel conformational search

STEP_NAME = 'ConfSearch'
JOB_BASE = 'csearch'
DRIVER_PATH = 'bmin'
PROGRAM_NAME = 'Macromodel Conformational Search'
FLAGS = {}
FLAGS_ADD_INPUT_NAME = False
FLAGS_ADD_JOB_NAME = False
BUILTIN_WF_FILE = 'single_stage_macromodel_conformational_search.wfw'
SPLITTER = True
getComUtil()

Get the macromodel com utility that holds the settings to write

Return type

schrodinger.application.macromodel.utils.comUtil

Returns

The comUtil object with settings

writeCom()

Write out the Macromodel com file

getComName()

Get the name of the com file for this step

Return type

str

Returns

The name of the com file

writeInput(struct)

Override the parent method to also write the com file

getNumSplits()

Get the number of parallel workflows this step will create. A 1 indicates that this step does not split the workflow.

Return type

int

Returns

The number of parallel workflows this step creates. 1 means it does not split the workflow

getStructForChild(index=1)

Get the structure from this step to pass on to a child step

Parameters

index (int) – The 1-based index of the structure to get. Should be 1 unless the child step is the first step of a split workflow. In that case, this is the index of the split workflow. Unused in the base class, but subclasses that split workflows may use this.

Return type

structure.Structure or cms.Cms

Returns

The structure the child step should use

getStructsForWriting()

Get the structures from this step to write to the final Workflow file

Return type

list of schrodinger.structure.Structure

Returns

A list of structures to write

ARCHIVED_INPUT = ['.in', '.mae', '.maegz']
ARCHIVED_KEEPERS = {'.smap', '.spm', '.vib', '.vis'}
CAN_CREATE_TRAJECTORY = False
COMBINER = False
DRIVER = None
FLAGS_ADD_DOUBLE_DASH = False
FLAGS_ADD_TPP = False
FLAGS_INPUT_NAME_FLAG = ''
OUTPUTS_CMS = False
PROCS = 1
REQUIRES_CMS_INPUT = False
REQUIRES_TRAJECTORY_INPUT = False
RESOURCE = 'cpu'
SUBJOB_RESOURCE = 'cpu'
USES_JC = True
USES_MULTI_SUBJOBS = False
USES_THREADS = False
__init__(*args, procs=1, tag=None, flags=None, archive=False, monitor_globs=None, full_command=None, local_files=None, input_file=None, cpu_hostname=None, gpu_hostname=None, umbrella='per_flag', splitter=False, split_index=1, split_tag='', child_stages=None, use_jc=None, tpp=1, **kwargs)

Create a BaseStep object

Parameters
  • procs (int) – The number of processors to allocate to steps of this class

  • tag – str(tag) will be added to the end of the job name and step name

  • flags (dict) – Command line argument flags in addition to, or that override, the class FLAGS variable. Keys are flag names (“-flag”), values are values for that flag. For flags that take no value, use None as the value. To turn off (not include in the command line) a flag in the class FLAGS variable, use the DO_NOT_USE_FLAG constant as the value.

  • archive (bool) – If True, instead of copying the subdirectory and individual files, will tar.gz up the entire subdirectory and copy that back.

  • monitor_globs (list) – List of valid file globs (i.e. ["*.zip"]) that should be monitored for and copied back to the original job directory when they appear. Note that the interaction of archive and moitor_globs is such that if both are specified, the result will be a subdirectory with the monitored files AND an archive of the entire subdirectory (including any monitored files that remain when this step completes).

  • full_command (list) – the full command line for this step including the driver path, etc. but without $SCHRODINGER/run. The command will be used “as is” except for replacing some pre-defined tokens with job-specific strings - see the createCommand function. Each item of the list is a word of the command line invocation.

  • local_files (list) – A list of file paths to copy into the job subdirectory before running the command

  • input_file (str) – The name of the file containing the input structures/data. It is ignored if there is a parent for this step.

  • cpu_hostname (str) – The name of the host to run CPU processes on

  • gpu_hostname (str) – The name of the host to run GPU processes on

  • umbrella (str) – Whether to run drivers that have GPU subjobs in umbrella mode or not. Should be one of UMBRELLA_ALWAYS (always run in umbrella mode even if the flag is not provided), UMBRELLA_NEVER (never run in umbrella mode even if the flag is provided) or UMBRELLA_PER_FLAG (obey the presence or absence of the -md_umbrella flag for this step). This parameter is only used if both cpu_hostname and gpu_hostname are given - if not, UMBRELLA_ALWAYS is enforced.

  • splitter (bool) – True if this step splits the workflow into parallel workflows, False if it does not. Note that this keyword is ignored if the SPLITTER class constant is True.

  • split_index (int) – If this step STARTS a new split workflow, the 1-based index of that workflow. Otherwise, just use 1 to indicate that it is the same workflow as the parent step.

  • split_tag (str) – An extra tag to add to the step name to distinguish between the same stage in parallel workflows

  • child_stages (list) – A list of child stages that need steps to be created from them. Each item is a jaguar_multistage_workflow_utils.StageData instance. This list contains one StageData item for each child stage no matter how many steps will be created from that stage due to splitting the workflow. For instance, if a workflow is A-B-C-D, and B is a splitter step that splits the workflow into 3 workflows, child_stages for B should be [C], not [C, C, C].

  • use_jc (bool) – True if the step should use job control, False if not. The default value of None defaults to the class USES_JC constant.

  • tpp (int) – The number of threads per process. Serial processes use 1 thread. This will be added to the step command via -TPP tpp.

See parent class for additional documentation

Raises

ValueError – if umbrella is not an allowed value

addParentalInformationProperties(struct)

Add parental subdirectory properties to the structure

Parameters

struct (schrodinger.structure.Structure) – The structure to add properties to

addTPPIfNeeded(cmd)

Add, or replace, the value of TPP in the command as needed.

Parameters

cmd (list) – The command line as a list of strings. The list is modified in-place

adjustCommandForQueue(cmd)

Add subhost and umbrella flags that direct this step’s subjobs to the correct host. Modifies the given command list in place.

Parameters

cmd (list) – The current command line as a list of strings

archiveFiles()

Create a tar.gz archive of all jaguar files and then removes any files that are no longer needed.

archiveSubDir()

Archive this step’s subdirectory and add it to the backend for copy back

calcsDone()

Check to see if the calculation finished

If finished and the job failed, self.ok will be set to False

Return type

bool

Returns

True if the calculation finished, False if not

canDriverUseUmbrella()

Check whether the driver for this step knows the -md_umbrella flag

Return type

bool

Returns

True if -md_umbrella is a known flag, False if not

canStart()

Check to see if this job can start - if the parent job(s) have finished successfully.

Return type

bool

Returns

True if the job can start, False if not

createCommand()

Create the command line

Return type

list

Returns

The command line in list form

Raises

JobCreationError – If the command cannot be created

createJob()

Create the job command and object

Return type

jobutils.RobustSubmissionJob

Returns

The job object to run

createQJobFromCommand(cmd)

Create the JobDJ job from the list of command line arguments. The job will be set to run in the Step subdirectory.

Return type

jobutils.RobustSubmissionJob

Returns

A job object that can be added to JobDJ

determineQueueResource(cmd)

Determine what resource this job should request

Parameters

cmd (list) – The command line as a list of strings

Return type

str or None

Returns

The resource (cpu, gpu or None) this job should request

finish()

Finish this step, including processing any output

finishProcessingJobControlJob()

Override the parent method to archive the directory if requested

getFirstOutputStructure()

Get the first output structure from the results

Return type

structure.Structure

Returns

The structure to write to the output file

getInput(override_uhf=True, override_solvent=True)

Get the JaguarInput object for this step, setting the keywords as required.

Return type

None or jaguar_input.JaguarInput

Returns

None if an error occured, or the jaguar_input.JaguarInput object to use for this step

getInputName()

Get the name of the input structure file

Return type

str

Returns

The input structure file name

getInputPath()

Get the full path to the input file

Return type

str

Returns

The full path to the input file

getOutput(quiet=False)

Read in the results of the calculation

Parameters

quiet (bool) – If True, no error messages will be printed. If False, (default) error messages will be printed. Also, if True, self.ok will not be set to False if the output file cannot be read.

Return type

None or list

Returns

None if the calculation failed, or a list of output structures from a successful calculation.

getOutputName()

Get the name of the output structure file

Return type

str

Returns

The output structure file name

getParentalInformation()

Get information about parent and required step names, output and subdirectories.

Return type

(ParentalPathInfo, ParentalPathInfo)

Returns

The first item gives information about the parent job, the second item gives cumulative information about the required steps. In cases where there is multiple information, such as the parent output file names, or multiple required step names, etc, the data is provided as space-delimited strings. The subdirectory paths and output file names are relative to the overall job directory.

getStructure()

Get the starting structure for this step

Overrides the parent class to get the initial structure for this workflow if the Step has no parent.

Return type

schrodinger.structure.Structure, None, or str

Returns

The starting structure for this step. None if input is not a structure. str if the starting structure is actually a file structures, in which case the return value is the path to the file.

handleFileLinkProperties(struct)

Fix existing Jaguar file link properties and add any new ones

Parameters

struct (structure.Structure) – The structure with the properties

log(msg, prefix=True, level=20)

Add a message to the parent workflow’s log file

Parameters
  • msg (str) – The message to add

  • prefix (bool) – Whether to add information about the workflow and step name to the front of the message string

  • level (int) – A logging constant indicating the priority level of the message

monitorFiles()

Check for any requested files that need to be copied back immediately

noJobAction()

Subclasses that do not run a job can overwrite this method to perform their action when the step is run.

property output_file_names

Get the names of all the output structures

Return type

list

Returns

Each item of the list is a the name of an output file. The step subdirectory path is NOT prepended to the file name.

periodicMaintenance()

This method is periodically called while the workflow is running

processOutput(output)

Process the output of a job during the finish part of the step

Parameters

output – The output of the job. Type may vary in subclasses

processSmapInfo()

Create an smap file in the subjob directory to enable Maestro’s little blue v and s buttons if the user manually imports the subjob output. Also copy smap-eligible files to the main job directory and pass back the file information needed for writing the main job smap file.

Return type

list

Returns

Each item of the list is a file name that should appear in the main job smap file for this step.

removeIncomingProperties(struct)

Remove properties on the structure that may have come from previous steps and that we do not want to propagate through this step

Parameters

struct (structure.Structure) – The structure to remove properties from

setKeywords(input, keystring)

Set the keywords for this job

Parameters
  • input (jaguar_input.JaguarInput) – The JaguarInput object to set the keywords on

  • keystring (str) – Space separated keyword=value pairs. Each pair must contain an equals sign

setStructOrCMSProperty(nottaduck, prop, value)

Set the given property to value on nottaduck, whether nottaduck is a Structure object or CMS object

Parameters
  • nottaduck (structure.Structure or cms.Cms) – The structure-like object to set the property on

  • prop (str) – The property to set

  • value – The value of the property

setSubDir()

Determine the absolute path to this step’s subdirectory so that we can always access it no matter what the current directory is

setWAMProperty(oname, structs)

Some workflow types set the WAM property on the structure file rather than the structure. The WAM property needs to be on the structure in order for the WAM to get passed into the final structure file.

Parameters
  • oname (str) – The name of the structure file

  • structs (list) – Each item of the list is a Structure or Cms object that needs to have the WAM property set on it

start()

Start the job - create the input and write it, adding necessary output files to make sure they get copied back

storeFilenames()

Store file names associated with this job before we delete the job object

write(writer, props=None, hierarchy=None)

Add the final structure for this step to the output structure file

Parameters
  • writer (schrodinger.StructureWriter) – The writer to use to write the structure

  • props (dict) – A dictionary of property/value pairs to add to the property dictionary of this object.

  • hierarchy (list) – The project group hierarchy for this result - each item is a str

class schrodinger.application.matsci.jwsteps.VoidStep(*args, procs=1, tag=None, flags=None, archive=False, monitor_globs=None, full_command=None, local_files=None, input_file=None, cpu_hostname=None, gpu_hostname=None, umbrella='per_flag', splitter=False, split_index=1, split_tag='', child_stages=None, use_jc=None, tpp=1, **kwargs)

Bases: schrodinger.application.matsci.jwsteps.BaseStep

A step for running the Distributed Voids driver

STEP_NAME = 'Distribute voids'
JOB_BASE = 'voids'
DRIVER_PATH = 'distribute_voids_gui_dir/distribute_voids_driver.py'
DRIVER = <module 'distribute_voids_driver' from '/scr/buildbot/savedbuilds/2024-1/NB/build-133/mmshare-v6.5/python/scripts/distribute_voids_gui_dir/distribute_voids_driver.py'>
FLAGS = {'-force': None, '-void_pct': 10}
getOutputName()

Get the name of the output structure file

Return type

str

Returns

The output structure file name

ARCHIVED_INPUT = ['.in', '.mae', '.maegz']
ARCHIVED_KEEPERS = {'.smap', '.spm', '.vib', '.vis'}
BUILTIN_WF_FILE = None
CAN_CREATE_TRAJECTORY = False
COMBINER = False
FLAGS_ADD_DOUBLE_DASH = False
FLAGS_ADD_INPUT_NAME = True
FLAGS_ADD_JOB_NAME = True
FLAGS_ADD_TPP = False
FLAGS_INPUT_NAME_FLAG = ''
OUTPUTS_CMS = False
PROCS = 1
REQUIRES_CMS_INPUT = False
REQUIRES_TRAJECTORY_INPUT = False
RESOURCE = 'cpu'
SPLITTER = False
SUBJOB_RESOURCE = 'cpu'
USES_JC = True
USES_MULTI_SUBJOBS = False
USES_THREADS = False
__init__(*args, procs=1, tag=None, flags=None, archive=False, monitor_globs=None, full_command=None, local_files=None, input_file=None, cpu_hostname=None, gpu_hostname=None, umbrella='per_flag', splitter=False, split_index=1, split_tag='', child_stages=None, use_jc=None, tpp=1, **kwargs)

Create a BaseStep object

Parameters
  • procs (int) – The number of processors to allocate to steps of this class

  • tag – str(tag) will be added to the end of the job name and step name

  • flags (dict) – Command line argument flags in addition to, or that override, the class FLAGS variable. Keys are flag names (“-flag”), values are values for that flag. For flags that take no value, use None as the value. To turn off (not include in the command line) a flag in the class FLAGS variable, use the DO_NOT_USE_FLAG constant as the value.

  • archive (bool) – If True, instead of copying the subdirectory and individual files, will tar.gz up the entire subdirectory and copy that back.

  • monitor_globs (list) – List of valid file globs (i.e. ["*.zip"]) that should be monitored for and copied back to the original job directory when they appear. Note that the interaction of archive and moitor_globs is such that if both are specified, the result will be a subdirectory with the monitored files AND an archive of the entire subdirectory (including any monitored files that remain when this step completes).

  • full_command (list) – the full command line for this step including the driver path, etc. but without $SCHRODINGER/run. The command will be used “as is” except for replacing some pre-defined tokens with job-specific strings - see the createCommand function. Each item of the list is a word of the command line invocation.

  • local_files (list) – A list of file paths to copy into the job subdirectory before running the command

  • input_file (str) – The name of the file containing the input structures/data. It is ignored if there is a parent for this step.

  • cpu_hostname (str) – The name of the host to run CPU processes on

  • gpu_hostname (str) – The name of the host to run GPU processes on

  • umbrella (str) – Whether to run drivers that have GPU subjobs in umbrella mode or not. Should be one of UMBRELLA_ALWAYS (always run in umbrella mode even if the flag is not provided), UMBRELLA_NEVER (never run in umbrella mode even if the flag is provided) or UMBRELLA_PER_FLAG (obey the presence or absence of the -md_umbrella flag for this step). This parameter is only used if both cpu_hostname and gpu_hostname are given - if not, UMBRELLA_ALWAYS is enforced.

  • splitter (bool) – True if this step splits the workflow into parallel workflows, False if it does not. Note that this keyword is ignored if the SPLITTER class constant is True.

  • split_index (int) – If this step STARTS a new split workflow, the 1-based index of that workflow. Otherwise, just use 1 to indicate that it is the same workflow as the parent step.

  • split_tag (str) – An extra tag to add to the step name to distinguish between the same stage in parallel workflows

  • child_stages (list) – A list of child stages that need steps to be created from them. Each item is a jaguar_multistage_workflow_utils.StageData instance. This list contains one StageData item for each child stage no matter how many steps will be created from that stage due to splitting the workflow. For instance, if a workflow is A-B-C-D, and B is a splitter step that splits the workflow into 3 workflows, child_stages for B should be [C], not [C, C, C].

  • use_jc (bool) – True if the step should use job control, False if not. The default value of None defaults to the class USES_JC constant.

  • tpp (int) – The number of threads per process. Serial processes use 1 thread. This will be added to the step command via -TPP tpp.

See parent class for additional documentation

Raises

ValueError – if umbrella is not an allowed value

addParentalInformationProperties(struct)

Add parental subdirectory properties to the structure

Parameters

struct (schrodinger.structure.Structure) – The structure to add properties to

addTPPIfNeeded(cmd)

Add, or replace, the value of TPP in the command as needed.

Parameters

cmd (list) – The command line as a list of strings. The list is modified in-place

adjustCommandForQueue(cmd)

Add subhost and umbrella flags that direct this step’s subjobs to the correct host. Modifies the given command list in place.

Parameters

cmd (list) – The current command line as a list of strings

archiveFiles()

Create a tar.gz archive of all jaguar files and then removes any files that are no longer needed.

archiveSubDir()

Archive this step’s subdirectory and add it to the backend for copy back

calcsDone()

Check to see if the calculation finished

If finished and the job failed, self.ok will be set to False

Return type

bool

Returns

True if the calculation finished, False if not

canDriverUseUmbrella()

Check whether the driver for this step knows the -md_umbrella flag

Return type

bool

Returns

True if -md_umbrella is a known flag, False if not

canStart()

Check to see if this job can start - if the parent job(s) have finished successfully.

Return type

bool

Returns

True if the job can start, False if not

createCommand()

Create the command line

Return type

list

Returns

The command line in list form

Raises

JobCreationError – If the command cannot be created

createJob()

Create the job command and object

Return type

jobutils.RobustSubmissionJob

Returns

The job object to run

createQJobFromCommand(cmd)

Create the JobDJ job from the list of command line arguments. The job will be set to run in the Step subdirectory.

Return type

jobutils.RobustSubmissionJob

Returns

A job object that can be added to JobDJ

determineQueueResource(cmd)

Determine what resource this job should request

Parameters

cmd (list) – The command line as a list of strings

Return type

str or None

Returns

The resource (cpu, gpu or None) this job should request

finish()

Finish this step, including processing any output

finishProcessingJobControlJob()

Override the parent method to archive the directory if requested

getFirstOutputStructure()

Get the first output structure from the results

Return type

structure.Structure

Returns

The structure to write to the output file

getInput(override_uhf=True, override_solvent=True)

Get the JaguarInput object for this step, setting the keywords as required.

Return type

None or jaguar_input.JaguarInput

Returns

None if an error occured, or the jaguar_input.JaguarInput object to use for this step

getInputName()

Get the name of the input structure file

Return type

str

Returns

The input structure file name

getInputPath()

Get the full path to the input file

Return type

str

Returns

The full path to the input file

getNumSplits()

Get the number of parallel workflows this step will create. A 1 indicates that this step does not split the workflow.

Return type

int

Returns

The number of parallel workflows this step creates. 1 means it does not split the workflow

getOutput(quiet=False)

Read in the results of the calculation

Parameters

quiet (bool) – If True, no error messages will be printed. If False, (default) error messages will be printed. Also, if True, self.ok will not be set to False if the output file cannot be read.

Return type

None or list

Returns

None if the calculation failed, or a list of output structures from a successful calculation.

getParentalInformation()

Get information about parent and required step names, output and subdirectories.

Return type

(ParentalPathInfo, ParentalPathInfo)

Returns

The first item gives information about the parent job, the second item gives cumulative information about the required steps. In cases where there is multiple information, such as the parent output file names, or multiple required step names, etc, the data is provided as space-delimited strings. The subdirectory paths and output file names are relative to the overall job directory.

getStructForChild(index=1)

Get the structure from this step to pass on to a child step

Parameters

index (int) – The 1-based index of the structure to get. Should be 1 unless this step is splitting the workflow into parallel workflows, in which case it is the index of the workflow that will run this structure. Unused in the base class, but subclasses may use this parameter.

Return type

structure.Structure, cms.Cms, or str

Returns

The structure the child step should use. If a str is returned, it is the path to the input structure file

getStructsForWriting()

Get the structures from this step to write to the final Workflow file

Return type

list of schrodinger.structure.Structure or str

Returns

A list of structures to write or the string constant NO_STRUCTURES to indicate that the step is intentionally returning no structures. An empty list will indicate expected structures were not found.

getStructure()

Get the starting structure for this step

Overrides the parent class to get the initial structure for this workflow if the Step has no parent.

Return type

schrodinger.structure.Structure, None, or str

Returns

The starting structure for this step. None if input is not a structure. str if the starting structure is actually a file structures, in which case the return value is the path to the file.

handleFileLinkProperties(struct)

Fix existing Jaguar file link properties and add any new ones

Parameters

struct (structure.Structure) – The structure with the properties

log(msg, prefix=True, level=20)

Add a message to the parent workflow’s log file

Parameters
  • msg (str) – The message to add

  • prefix (bool) – Whether to add information about the workflow and step name to the front of the message string

  • level (int) – A logging constant indicating the priority level of the message

monitorFiles()

Check for any requested files that need to be copied back immediately

noJobAction()

Subclasses that do not run a job can overwrite this method to perform their action when the step is run.

property output_file_names

Get the names of all the output structures

Return type

list

Returns

Each item of the list is a the name of an output file. The step subdirectory path is NOT prepended to the file name.

periodicMaintenance()

This method is periodically called while the workflow is running

processOutput(output)

Process the output of a job during the finish part of the step

Parameters

output – The output of the job. Type may vary in subclasses

processSmapInfo()

Create an smap file in the subjob directory to enable Maestro’s little blue v and s buttons if the user manually imports the subjob output. Also copy smap-eligible files to the main job directory and pass back the file information needed for writing the main job smap file.

Return type

list

Returns

Each item of the list is a file name that should appear in the main job smap file for this step.

removeIncomingProperties(struct)

Remove properties on the structure that may have come from previous steps and that we do not want to propagate through this step

Parameters

struct (structure.Structure) – The structure to remove properties from

setKeywords(input, keystring)

Set the keywords for this job

Parameters
  • input (jaguar_input.JaguarInput) – The JaguarInput object to set the keywords on

  • keystring (str) – Space separated keyword=value pairs. Each pair must contain an equals sign

setStructOrCMSProperty(nottaduck, prop, value)

Set the given property to value on nottaduck, whether nottaduck is a Structure object or CMS object

Parameters
  • nottaduck (structure.Structure or cms.Cms) – The structure-like object to set the property on

  • prop (str) – The property to set

  • value – The value of the property

setSubDir()

Determine the absolute path to this step’s subdirectory so that we can always access it no matter what the current directory is

setWAMProperty(oname, structs)

Some workflow types set the WAM property on the structure file rather than the structure. The WAM property needs to be on the structure in order for the WAM to get passed into the final structure file.

Parameters
  • oname (str) – The name of the structure file

  • structs (list) – Each item of the list is a Structure or Cms object that needs to have the WAM property set on it

start()

Start the job - create the input and write it, adding necessary output files to make sure they get copied back

storeFilenames()

Store file names associated with this job before we delete the job object

write(writer, props=None, hierarchy=None)

Add the final structure for this step to the output structure file

Parameters
  • writer (schrodinger.StructureWriter) – The writer to use to write the structure

  • props (dict) – A dictionary of property/value pairs to add to the property dictionary of this object.

  • hierarchy (list) – The project group hierarchy for this result - each item is a str

writeInput(struct)

Write the input file

Parameters

struct (structure.Structure, cms.Cms, or None) – The structure to write. If None it will write the input file. If struct is a cms, only an mae will be written if this class does not require cms input.

class schrodinger.application.matsci.jwsteps.FreeVolumeStep(*args, procs=1, tag=None, flags=None, archive=False, monitor_globs=None, full_command=None, local_files=None, input_file=None, cpu_hostname=None, gpu_hostname=None, umbrella='per_flag', splitter=False, split_index=1, split_tag='', child_stages=None, use_jc=None, tpp=1, **kwargs)

Bases: schrodinger.application.matsci.jwsteps.BaseStep

A step for running the Distributed Voids driver

STEP_NAME = 'Free volume'
JOB_BASE = 'freevol'
DRIVER_PATH = 'free_volume_analysis_gui_dir/free_volume_analysis_driver.py'
DRIVER = <module 'free_volume_analysis_driver' from '/scr/buildbot/savedbuilds/2024-1/NB/build-133/mmshare-v6.5/python/scripts/free_volume_analysis_gui_dir/free_volume_analysis_driver.py'>
BUILTIN_WF_FILE = 'single_stage_free_volume.wfw'
getOutputName()

Get the name of the output structure file

Return type

str

Returns

The output structure file name

ARCHIVED_INPUT = ['.in', '.mae', '.maegz']
ARCHIVED_KEEPERS = {'.smap', '.spm', '.vib', '.vis'}
CAN_CREATE_TRAJECTORY = False
COMBINER = False
FLAGS = {}
FLAGS_ADD_DOUBLE_DASH = False
FLAGS_ADD_INPUT_NAME = True
FLAGS_ADD_JOB_NAME = True
FLAGS_ADD_TPP = False
FLAGS_INPUT_NAME_FLAG = ''
OUTPUTS_CMS = False
PROCS = 1
REQUIRES_CMS_INPUT = False
REQUIRES_TRAJECTORY_INPUT = False
RESOURCE = 'cpu'
SPLITTER = False
SUBJOB_RESOURCE = 'cpu'
USES_JC = True
USES_MULTI_SUBJOBS = False
USES_THREADS = False
__init__(*args, procs=1, tag=None, flags=None, archive=False, monitor_globs=None, full_command=None, local_files=None, input_file=None, cpu_hostname=None, gpu_hostname=None, umbrella='per_flag', splitter=False, split_index=1, split_tag='', child_stages=None, use_jc=None, tpp=1, **kwargs)

Create a BaseStep object

Parameters
  • procs (int) – The number of processors to allocate to steps of this class

  • tag – str(tag) will be added to the end of the job name and step name

  • flags (dict) – Command line argument flags in addition to, or that override, the class FLAGS variable. Keys are flag names (“-flag”), values are values for that flag. For flags that take no value, use None as the value. To turn off (not include in the command line) a flag in the class FLAGS variable, use the DO_NOT_USE_FLAG constant as the value.

  • archive (bool) – If True, instead of copying the subdirectory and individual files, will tar.gz up the entire subdirectory and copy that back.

  • monitor_globs (list) – List of valid file globs (i.e. ["*.zip"]) that should be monitored for and copied back to the original job directory when they appear. Note that the interaction of archive and moitor_globs is such that if both are specified, the result will be a subdirectory with the monitored files AND an archive of the entire subdirectory (including any monitored files that remain when this step completes).

  • full_command (list) – the full command line for this step including the driver path, etc. but without $SCHRODINGER/run. The command will be used “as is” except for replacing some pre-defined tokens with job-specific strings - see the createCommand function. Each item of the list is a word of the command line invocation.

  • local_files (list) – A list of file paths to copy into the job subdirectory before running the command

  • input_file (str) – The name of the file containing the input structures/data. It is ignored if there is a parent for this step.

  • cpu_hostname (str) – The name of the host to run CPU processes on

  • gpu_hostname (str) – The name of the host to run GPU processes on

  • umbrella (str) – Whether to run drivers that have GPU subjobs in umbrella mode or not. Should be one of UMBRELLA_ALWAYS (always run in umbrella mode even if the flag is not provided), UMBRELLA_NEVER (never run in umbrella mode even if the flag is provided) or UMBRELLA_PER_FLAG (obey the presence or absence of the -md_umbrella flag for this step). This parameter is only used if both cpu_hostname and gpu_hostname are given - if not, UMBRELLA_ALWAYS is enforced.

  • splitter (bool) – True if this step splits the workflow into parallel workflows, False if it does not. Note that this keyword is ignored if the SPLITTER class constant is True.

  • split_index (int) – If this step STARTS a new split workflow, the 1-based index of that workflow. Otherwise, just use 1 to indicate that it is the same workflow as the parent step.

  • split_tag (str) – An extra tag to add to the step name to distinguish between the same stage in parallel workflows

  • child_stages (list) – A list of child stages that need steps to be created from them. Each item is a jaguar_multistage_workflow_utils.StageData instance. This list contains one StageData item for each child stage no matter how many steps will be created from that stage due to splitting the workflow. For instance, if a workflow is A-B-C-D, and B is a splitter step that splits the workflow into 3 workflows, child_stages for B should be [C], not [C, C, C].

  • use_jc (bool) – True if the step should use job control, False if not. The default value of None defaults to the class USES_JC constant.

  • tpp (int) – The number of threads per process. Serial processes use 1 thread. This will be added to the step command via -TPP tpp.

See parent class for additional documentation

Raises

ValueError – if umbrella is not an allowed value

addParentalInformationProperties(struct)

Add parental subdirectory properties to the structure

Parameters

struct (schrodinger.structure.Structure) – The structure to add properties to

addTPPIfNeeded(cmd)

Add, or replace, the value of TPP in the command as needed.

Parameters

cmd (list) – The command line as a list of strings. The list is modified in-place

adjustCommandForQueue(cmd)

Add subhost and umbrella flags that direct this step’s subjobs to the correct host. Modifies the given command list in place.

Parameters

cmd (list) – The current command line as a list of strings

archiveFiles()

Create a tar.gz archive of all jaguar files and then removes any files that are no longer needed.

archiveSubDir()

Archive this step’s subdirectory and add it to the backend for copy back

calcsDone()

Check to see if the calculation finished

If finished and the job failed, self.ok will be set to False

Return type

bool

Returns

True if the calculation finished, False if not

canDriverUseUmbrella()

Check whether the driver for this step knows the -md_umbrella flag

Return type

bool

Returns

True if -md_umbrella is a known flag, False if not

canStart()

Check to see if this job can start - if the parent job(s) have finished successfully.

Return type

bool

Returns

True if the job can start, False if not

createCommand()

Create the command line

Return type

list

Returns

The command line in list form

Raises

JobCreationError – If the command cannot be created

createJob()

Create the job command and object

Return type

jobutils.RobustSubmissionJob

Returns

The job object to run

createQJobFromCommand(cmd)

Create the JobDJ job from the list of command line arguments. The job will be set to run in the Step subdirectory.

Return type

jobutils.RobustSubmissionJob

Returns

A job object that can be added to JobDJ

determineQueueResource(cmd)

Determine what resource this job should request

Parameters

cmd (list) – The command line as a list of strings

Return type

str or None

Returns

The resource (cpu, gpu or None) this job should request

finish()

Finish this step, including processing any output

finishProcessingJobControlJob()

Override the parent method to archive the directory if requested

getFirstOutputStructure()

Get the first output structure from the results

Return type

structure.Structure

Returns

The structure to write to the output file

getInput(override_uhf=True, override_solvent=True)

Get the JaguarInput object for this step, setting the keywords as required.

Return type

None or jaguar_input.JaguarInput

Returns

None if an error occured, or the jaguar_input.JaguarInput object to use for this step

getInputName()

Get the name of the input structure file

Return type

str

Returns

The input structure file name

getInputPath()

Get the full path to the input file

Return type

str

Returns

The full path to the input file

getNumSplits()

Get the number of parallel workflows this step will create. A 1 indicates that this step does not split the workflow.

Return type

int

Returns

The number of parallel workflows this step creates. 1 means it does not split the workflow

getOutput(quiet=False)

Read in the results of the calculation

Parameters

quiet (bool) – If True, no error messages will be printed. If False, (default) error messages will be printed. Also, if True, self.ok will not be set to False if the output file cannot be read.

Return type

None or list

Returns

None if the calculation failed, or a list of output structures from a successful calculation.

getParentalInformation()

Get information about parent and required step names, output and subdirectories.

Return type

(ParentalPathInfo, ParentalPathInfo)

Returns

The first item gives information about the parent job, the second item gives cumulative information about the required steps. In cases where there is multiple information, such as the parent output file names, or multiple required step names, etc, the data is provided as space-delimited strings. The subdirectory paths and output file names are relative to the overall job directory.

getStructForChild(index=1)

Get the structure from this step to pass on to a child step

Parameters

index (int) – The 1-based index of the structure to get. Should be 1 unless this step is splitting the workflow into parallel workflows, in which case it is the index of the workflow that will run this structure. Unused in the base class, but subclasses may use this parameter.

Return type

structure.Structure, cms.Cms, or str

Returns

The structure the child step should use. If a str is returned, it is the path to the input structure file

getStructsForWriting()

Get the structures from this step to write to the final Workflow file

Return type

list of schrodinger.structure.Structure or str

Returns

A list of structures to write or the string constant NO_STRUCTURES to indicate that the step is intentionally returning no structures. An empty list will indicate expected structures were not found.

getStructure()

Get the starting structure for this step

Overrides the parent class to get the initial structure for this workflow if the Step has no parent.

Return type

schrodinger.structure.Structure, None, or str

Returns

The starting structure for this step. None if input is not a structure. str if the starting structure is actually a file structures, in which case the return value is the path to the file.

handleFileLinkProperties(struct)

Fix existing Jaguar file link properties and add any new ones

Parameters

struct (structure.Structure) – The structure with the properties

log(msg, prefix=True, level=20)

Add a message to the parent workflow’s log file

Parameters
  • msg (str) – The message to add

  • prefix (bool) – Whether to add information about the workflow and step name to the front of the message string

  • level (int) – A logging constant indicating the priority level of the message

monitorFiles()

Check for any requested files that need to be copied back immediately

noJobAction()

Subclasses that do not run a job can overwrite this method to perform their action when the step is run.

property output_file_names

Get the names of all the output structures

Return type

list

Returns

Each item of the list is a the name of an output file. The step subdirectory path is NOT prepended to the file name.

periodicMaintenance()

This method is periodically called while the workflow is running

processOutput(output)

Process the output of a job during the finish part of the step

Parameters

output – The output of the job. Type may vary in subclasses

processSmapInfo()

Create an smap file in the subjob directory to enable Maestro’s little blue v and s buttons if the user manually imports the subjob output. Also copy smap-eligible files to the main job directory and pass back the file information needed for writing the main job smap file.

Return type

list

Returns

Each item of the list is a file name that should appear in the main job smap file for this step.

removeIncomingProperties(struct)

Remove properties on the structure that may have come from previous steps and that we do not want to propagate through this step

Parameters

struct (structure.Structure) – The structure to remove properties from

setKeywords(input, keystring)

Set the keywords for this job

Parameters
  • input (jaguar_input.JaguarInput) – The JaguarInput object to set the keywords on

  • keystring (str) – Space separated keyword=value pairs. Each pair must contain an equals sign

setStructOrCMSProperty(nottaduck, prop, value)

Set the given property to value on nottaduck, whether nottaduck is a Structure object or CMS object

Parameters
  • nottaduck (structure.Structure or cms.Cms) – The structure-like object to set the property on

  • prop (str) – The property to set

  • value – The value of the property

setSubDir()

Determine the absolute path to this step’s subdirectory so that we can always access it no matter what the current directory is

setWAMProperty(oname, structs)

Some workflow types set the WAM property on the structure file rather than the structure. The WAM property needs to be on the structure in order for the WAM to get passed into the final structure file.

Parameters
  • oname (str) – The name of the structure file

  • structs (list) – Each item of the list is a Structure or Cms object that needs to have the WAM property set on it

start()

Start the job - create the input and write it, adding necessary output files to make sure they get copied back

storeFilenames()

Store file names associated with this job before we delete the job object

write(writer, props=None, hierarchy=None)

Add the final structure for this step to the output structure file

Parameters
  • writer (schrodinger.StructureWriter) – The writer to use to write the structure

  • props (dict) – A dictionary of property/value pairs to add to the property dictionary of this object.

  • hierarchy (list) – The project group hierarchy for this result - each item is a str

writeInput(struct)

Write the input file

Parameters

struct (structure.Structure, cms.Cms, or None) – The structure to write. If None it will write the input file. If struct is a cms, only an mae will be written if this class does not require cms input.

class schrodinger.application.matsci.jwsteps.BaseMetaJaguarWorkflowStep(*args, procs=1, tag=None, flags=None, archive=False, monitor_globs=None, full_command=None, local_files=None, input_file=None, cpu_hostname=None, gpu_hostname=None, umbrella='per_flag', splitter=False, split_index=1, split_tag='', child_stages=None, use_jc=None, tpp=1, **kwargs)

Bases: schrodinger.application.matsci.jwsteps.BaseStep

Base Step for MatSci workflows that themselves run Jaguar subjobs

FLAGS_ADD_TPP = True
ARCHIVED_INPUT = ['.in', '.mae', '.maegz']
ARCHIVED_KEEPERS = {'.smap', '.spm', '.vib', '.vis'}
BUILTIN_WF_FILE = None
CAN_CREATE_TRAJECTORY = False
COMBINER = False
DRIVER = None
DRIVER_PATH = 'driver_dir/driver.py'
FLAGS = {}
FLAGS_ADD_DOUBLE_DASH = False
FLAGS_ADD_INPUT_NAME = True
FLAGS_ADD_JOB_NAME = True
FLAGS_INPUT_NAME_FLAG = ''
JOB_BASE = 'base'
OUTPUTS_CMS = False
PROCS = 1
REQUIRES_CMS_INPUT = False
REQUIRES_TRAJECTORY_INPUT = False
RESOURCE = 'cpu'
SPLITTER = False
STEP_NAME = 'Base Step'
SUBJOB_RESOURCE = 'cpu'
USES_JC = True
USES_MULTI_SUBJOBS = False
USES_THREADS = False
__init__(*args, procs=1, tag=None, flags=None, archive=False, monitor_globs=None, full_command=None, local_files=None, input_file=None, cpu_hostname=None, gpu_hostname=None, umbrella='per_flag', splitter=False, split_index=1, split_tag='', child_stages=None, use_jc=None, tpp=1, **kwargs)

Create a BaseStep object

Parameters
  • procs (int) – The number of processors to allocate to steps of this class

  • tag – str(tag) will be added to the end of the job name and step name

  • flags (dict) – Command line argument flags in addition to, or that override, the class FLAGS variable. Keys are flag names (“-flag”), values are values for that flag. For flags that take no value, use None as the value. To turn off (not include in the command line) a flag in the class FLAGS variable, use the DO_NOT_USE_FLAG constant as the value.

  • archive (bool) – If True, instead of copying the subdirectory and individual files, will tar.gz up the entire subdirectory and copy that back.

  • monitor_globs (list) – List of valid file globs (i.e. ["*.zip"]) that should be monitored for and copied back to the original job directory when they appear. Note that the interaction of archive and moitor_globs is such that if both are specified, the result will be a subdirectory with the monitored files AND an archive of the entire subdirectory (including any monitored files that remain when this step completes).

  • full_command (list) – the full command line for this step including the driver path, etc. but without $SCHRODINGER/run. The command will be used “as is” except for replacing some pre-defined tokens with job-specific strings - see the createCommand function. Each item of the list is a word of the command line invocation.

  • local_files (list) – A list of file paths to copy into the job subdirectory before running the command

  • input_file (str) – The name of the file containing the input structures/data. It is ignored if there is a parent for this step.

  • cpu_hostname (str) – The name of the host to run CPU processes on

  • gpu_hostname (str) – The name of the host to run GPU processes on

  • umbrella (str) – Whether to run drivers that have GPU subjobs in umbrella mode or not. Should be one of UMBRELLA_ALWAYS (always run in umbrella mode even if the flag is not provided), UMBRELLA_NEVER (never run in umbrella mode even if the flag is provided) or UMBRELLA_PER_FLAG (obey the presence or absence of the -md_umbrella flag for this step). This parameter is only used if both cpu_hostname and gpu_hostname are given - if not, UMBRELLA_ALWAYS is enforced.

  • splitter (bool) – True if this step splits the workflow into parallel workflows, False if it does not. Note that this keyword is ignored if the SPLITTER class constant is True.

  • split_index (int) – If this step STARTS a new split workflow, the 1-based index of that workflow. Otherwise, just use 1 to indicate that it is the same workflow as the parent step.

  • split_tag (str) – An extra tag to add to the step name to distinguish between the same stage in parallel workflows

  • child_stages (list) – A list of child stages that need steps to be created from them. Each item is a jaguar_multistage_workflow_utils.StageData instance. This list contains one StageData item for each child stage no matter how many steps will be created from that stage due to splitting the workflow. For instance, if a workflow is A-B-C-D, and B is a splitter step that splits the workflow into 3 workflows, child_stages for B should be [C], not [C, C, C].

  • use_jc (bool) – True if the step should use job control, False if not. The default value of None defaults to the class USES_JC constant.

  • tpp (int) – The number of threads per process. Serial processes use 1 thread. This will be added to the step command via -TPP tpp.

See parent class for additional documentation

Raises

ValueError – if umbrella is not an allowed value

addParentalInformationProperties(struct)

Add parental subdirectory properties to the structure

Parameters

struct (schrodinger.structure.Structure) – The structure to add properties to

addTPPIfNeeded(cmd)

Add, or replace, the value of TPP in the command as needed.

Parameters

cmd (list) – The command line as a list of strings. The list is modified in-place

adjustCommandForQueue(cmd)

Add subhost and umbrella flags that direct this step’s subjobs to the correct host. Modifies the given command list in place.

Parameters

cmd (list) – The current command line as a list of strings

archiveFiles()

Create a tar.gz archive of all jaguar files and then removes any files that are no longer needed.

archiveSubDir()

Archive this step’s subdirectory and add it to the backend for copy back

calcsDone()

Check to see if the calculation finished

If finished and the job failed, self.ok will be set to False

Return type

bool

Returns

True if the calculation finished, False if not

canDriverUseUmbrella()

Check whether the driver for this step knows the -md_umbrella flag

Return type

bool

Returns

True if -md_umbrella is a known flag, False if not

canStart()

Check to see if this job can start - if the parent job(s) have finished successfully.

Return type

bool

Returns

True if the job can start, False if not

createCommand()

Create the command line

Return type

list

Returns

The command line in list form

Raises

JobCreationError – If the command cannot be created

createJob()

Create the job command and object

Return type

jobutils.RobustSubmissionJob

Returns

The job object to run

createQJobFromCommand(cmd)

Create the JobDJ job from the list of command line arguments. The job will be set to run in the Step subdirectory.

Return type

jobutils.RobustSubmissionJob

Returns

A job object that can be added to JobDJ

determineQueueResource(cmd)

Determine what resource this job should request

Parameters

cmd (list) – The command line as a list of strings

Return type

str or None

Returns

The resource (cpu, gpu or None) this job should request

finish()

Finish this step, including processing any output

finishProcessingJobControlJob()

Override the parent method to archive the directory if requested

getFirstOutputStructure()

Get the first output structure from the results

Return type

structure.Structure

Returns

The structure to write to the output file

getInput(override_uhf=True, override_solvent=True)

Get the JaguarInput object for this step, setting the keywords as required.

Return type

None or jaguar_input.JaguarInput

Returns

None if an error occured, or the jaguar_input.JaguarInput object to use for this step

getInputName()

Get the name of the input structure file

Return type

str

Returns

The input structure file name

getInputPath()

Get the full path to the input file

Return type

str

Returns

The full path to the input file

getNumSplits()

Get the number of parallel workflows this step will create. A 1 indicates that this step does not split the workflow.

Return type

int

Returns

The number of parallel workflows this step creates. 1 means it does not split the workflow

getOutput(quiet=False)

Read in the results of the calculation

Parameters

quiet (bool) – If True, no error messages will be printed. If False, (default) error messages will be printed. Also, if True, self.ok will not be set to False if the output file cannot be read.

Return type

None or list

Returns

None if the calculation failed, or a list of output structures from a successful calculation.

getOutputName()

Get the name of the output structure file

Return type

str

Returns

The output structure file name

getParentalInformation()

Get information about parent and required step names, output and subdirectories.

Return type

(ParentalPathInfo, ParentalPathInfo)

Returns

The first item gives information about the parent job, the second item gives cumulative information about the required steps. In cases where there is multiple information, such as the parent output file names, or multiple required step names, etc, the data is provided as space-delimited strings. The subdirectory paths and output file names are relative to the overall job directory.

getStructForChild(index=1)

Get the structure from this step to pass on to a child step

Parameters

index (int) – The 1-based index of the structure to get. Should be 1 unless this step is splitting the workflow into parallel workflows, in which case it is the index of the workflow that will run this structure. Unused in the base class, but subclasses may use this parameter.

Return type

structure.Structure, cms.Cms, or str

Returns

The structure the child step should use. If a str is returned, it is the path to the input structure file

getStructsForWriting()

Get the structures from this step to write to the final Workflow file

Return type

list of schrodinger.structure.Structure or str

Returns

A list of structures to write or the string constant NO_STRUCTURES to indicate that the step is intentionally returning no structures. An empty list will indicate expected structures were not found.

getStructure()

Get the starting structure for this step

Overrides the parent class to get the initial structure for this workflow if the Step has no parent.

Return type

schrodinger.structure.Structure, None, or str

Returns

The starting structure for this step. None if input is not a structure. str if the starting structure is actually a file structures, in which case the return value is the path to the file.

handleFileLinkProperties(struct)

Fix existing Jaguar file link properties and add any new ones

Parameters

struct (structure.Structure) – The structure with the properties

log(msg, prefix=True, level=20)

Add a message to the parent workflow’s log file

Parameters
  • msg (str) – The message to add

  • prefix (bool) – Whether to add information about the workflow and step name to the front of the message string

  • level (int) – A logging constant indicating the priority level of the message

monitorFiles()

Check for any requested files that need to be copied back immediately

noJobAction()

Subclasses that do not run a job can overwrite this method to perform their action when the step is run.

property output_file_names

Get the names of all the output structures

Return type

list

Returns

Each item of the list is a the name of an output file. The step subdirectory path is NOT prepended to the file name.

periodicMaintenance()

This method is periodically called while the workflow is running

processOutput(output)

Process the output of a job during the finish part of the step

Parameters

output – The output of the job. Type may vary in subclasses

processSmapInfo()

Create an smap file in the subjob directory to enable Maestro’s little blue v and s buttons if the user manually imports the subjob output. Also copy smap-eligible files to the main job directory and pass back the file information needed for writing the main job smap file.

Return type

list

Returns

Each item of the list is a file name that should appear in the main job smap file for this step.

removeIncomingProperties(struct)

Remove properties on the structure that may have come from previous steps and that we do not want to propagate through this step

Parameters

struct (structure.Structure) – The structure to remove properties from

setKeywords(input, keystring)

Set the keywords for this job

Parameters
  • input (jaguar_input.JaguarInput) – The JaguarInput object to set the keywords on

  • keystring (str) – Space separated keyword=value pairs. Each pair must contain an equals sign

setStructOrCMSProperty(nottaduck, prop, value)

Set the given property to value on nottaduck, whether nottaduck is a Structure object or CMS object

Parameters
  • nottaduck (structure.Structure or cms.Cms) – The structure-like object to set the property on

  • prop (str) – The property to set

  • value – The value of the property

setSubDir()

Determine the absolute path to this step’s subdirectory so that we can always access it no matter what the current directory is

setWAMProperty(oname, structs)

Some workflow types set the WAM property on the structure file rather than the structure. The WAM property needs to be on the structure in order for the WAM to get passed into the final structure file.

Parameters
  • oname (str) – The name of the structure file

  • structs (list) – Each item of the list is a Structure or Cms object that needs to have the WAM property set on it

start()

Start the job - create the input and write it, adding necessary output files to make sure they get copied back

storeFilenames()

Store file names associated with this job before we delete the job object

write(writer, props=None, hierarchy=None)

Add the final structure for this step to the output structure file

Parameters
  • writer (schrodinger.StructureWriter) – The writer to use to write the structure

  • props (dict) – A dictionary of property/value pairs to add to the property dictionary of this object.

  • hierarchy (list) – The project group hierarchy for this result - each item is a str

writeInput(struct)

Write the input file

Parameters

struct (structure.Structure, cms.Cms, or None) – The structure to write. If None it will write the input file. If struct is a cms, only an mae will be written if this class does not require cms input.

class schrodinger.application.matsci.jwsteps.JaguarStep(*args, keywords=None, esp_for_md=False, **kwargs)

Bases: schrodinger.application.matsci.jwsteps.BaseMetaJaguarWorkflowStep

A step for running a single Jaguar calculation

STEP_NAME = 'Jaguar'
JOB_BASE = 'jag'
DRIVER_PATH = None
DRIVER = None
FLAGS_ADD_JOB_NAME = False
THREADS = True
__init__(*args, keywords=None, esp_for_md=False, **kwargs)

Create a JaguarStep instance

Parameters
  • keywords (dict) – Keys are keyword names, values are keyword values. This parameter overrides the keystring argument of the base class. If keywords is not given, keystring will be used if keystring is given.

  • esp_for_md (bool) – After Jaguar finishes, store the ESP charges as custom forcefield charges in the .01.mae file

See parent class for additional information

writeInput(struct)

Write the input file

Type

structure.Structure or None

Parameters

struct – The structure to write. If None it will write the input file.

getInputName()

Get the name of the input structure file

Return type

str

Returns

The input structure file name

getOutputName()

Get the name of the output structure file

Return type

str

Returns

The output structure file name

createCommand()

Create the command line

Return type

list

Returns

The command line in list form

processSmapInfo()

Create an smap file in the subjob directory to enable Maestro’s little blue v and s buttons if the user manually imports the subjob output. Also copy smap-eligible files to the main job directory and pass back the file information needed for writing the main job smap file.

Return type

list

Returns

Each item of the list is a file name that should appear in the main job smap file for this step.

processOutput(output)

Process the output of a job during the finish part of the step

Parameters

output (list) – The only item in the list is the output structure

ARCHIVED_INPUT = ['.in', '.mae', '.maegz']
ARCHIVED_KEEPERS = {'.smap', '.spm', '.vib', '.vis'}
BUILTIN_WF_FILE = None
CAN_CREATE_TRAJECTORY = False
COMBINER = False
FLAGS = {}
FLAGS_ADD_DOUBLE_DASH = False
FLAGS_ADD_INPUT_NAME = True
FLAGS_ADD_TPP = True
FLAGS_INPUT_NAME_FLAG = ''
OUTPUTS_CMS = False
PROCS = 1
REQUIRES_CMS_INPUT = False
REQUIRES_TRAJECTORY_INPUT = False
RESOURCE = 'cpu'
SPLITTER = False
SUBJOB_RESOURCE = 'cpu'
USES_JC = True
USES_MULTI_SUBJOBS = False
USES_THREADS = False
addParentalInformationProperties(struct)

Add parental subdirectory properties to the structure

Parameters

struct (schrodinger.structure.Structure) – The structure to add properties to

addTPPIfNeeded(cmd)

Add, or replace, the value of TPP in the command as needed.

Parameters

cmd (list) – The command line as a list of strings. The list is modified in-place

adjustCommandForQueue(cmd)

Add subhost and umbrella flags that direct this step’s subjobs to the correct host. Modifies the given command list in place.

Parameters

cmd (list) – The current command line as a list of strings

archiveFiles()

Create a tar.gz archive of all jaguar files and then removes any files that are no longer needed.

archiveSubDir()

Archive this step’s subdirectory and add it to the backend for copy back

calcsDone()

Check to see if the calculation finished

If finished and the job failed, self.ok will be set to False

Return type

bool

Returns

True if the calculation finished, False if not

canDriverUseUmbrella()

Check whether the driver for this step knows the -md_umbrella flag

Return type

bool

Returns

True if -md_umbrella is a known flag, False if not

canStart()

Check to see if this job can start - if the parent job(s) have finished successfully.

Return type

bool

Returns

True if the job can start, False if not

createJob()

Create the job command and object

Return type

jobutils.RobustSubmissionJob

Returns

The job object to run

createQJobFromCommand(cmd)

Create the JobDJ job from the list of command line arguments. The job will be set to run in the Step subdirectory.

Return type

jobutils.RobustSubmissionJob

Returns

A job object that can be added to JobDJ

determineQueueResource(cmd)

Determine what resource this job should request

Parameters

cmd (list) – The command line as a list of strings

Return type

str or None

Returns

The resource (cpu, gpu or None) this job should request

finish()

Finish this step, including processing any output

finishProcessingJobControlJob()

Override the parent method to archive the directory if requested

getFirstOutputStructure()

Get the first output structure from the results

Return type

structure.Structure

Returns

The structure to write to the output file

getInput(override_uhf=True, override_solvent=True)

Get the JaguarInput object for this step, setting the keywords as required.

Return type

None or jaguar_input.JaguarInput

Returns

None if an error occured, or the jaguar_input.JaguarInput object to use for this step

getInputPath()

Get the full path to the input file

Return type

str

Returns

The full path to the input file

getNumSplits()

Get the number of parallel workflows this step will create. A 1 indicates that this step does not split the workflow.

Return type

int

Returns

The number of parallel workflows this step creates. 1 means it does not split the workflow

getOutput(quiet=False)

Read in the results of the calculation

Parameters

quiet (bool) – If True, no error messages will be printed. If False, (default) error messages will be printed. Also, if True, self.ok will not be set to False if the output file cannot be read.

Return type

None or list

Returns

None if the calculation failed, or a list of output structures from a successful calculation.

getParentalInformation()

Get information about parent and required step names, output and subdirectories.

Return type

(ParentalPathInfo, ParentalPathInfo)

Returns

The first item gives information about the parent job, the second item gives cumulative information about the required steps. In cases where there is multiple information, such as the parent output file names, or multiple required step names, etc, the data is provided as space-delimited strings. The subdirectory paths and output file names are relative to the overall job directory.

getStructForChild(index=1)

Get the structure from this step to pass on to a child step

Parameters

index (int) – The 1-based index of the structure to get. Should be 1 unless this step is splitting the workflow into parallel workflows, in which case it is the index of the workflow that will run this structure. Unused in the base class, but subclasses may use this parameter.

Return type

structure.Structure, cms.Cms, or str

Returns

The structure the child step should use. If a str is returned, it is the path to the input structure file

getStructsForWriting()

Get the structures from this step to write to the final Workflow file

Return type

list of schrodinger.structure.Structure or str

Returns

A list of structures to write or the string constant NO_STRUCTURES to indicate that the step is intentionally returning no structures. An empty list will indicate expected structures were not found.

getStructure()

Get the starting structure for this step

Overrides the parent class to get the initial structure for this workflow if the Step has no parent.

Return type

schrodinger.structure.Structure, None, or str

Returns

The starting structure for this step. None if input is not a structure. str if the starting structure is actually a file structures, in which case the return value is the path to the file.

handleFileLinkProperties(struct)

Fix existing Jaguar file link properties and add any new ones

Parameters

struct (structure.Structure) – The structure with the properties

log(msg, prefix=True, level=20)

Add a message to the parent workflow’s log file

Parameters
  • msg (str) – The message to add

  • prefix (bool) – Whether to add information about the workflow and step name to the front of the message string

  • level (int) – A logging constant indicating the priority level of the message

monitorFiles()

Check for any requested files that need to be copied back immediately

noJobAction()

Subclasses that do not run a job can overwrite this method to perform their action when the step is run.

property output_file_names

Get the names of all the output structures

Return type

list

Returns

Each item of the list is a the name of an output file. The step subdirectory path is NOT prepended to the file name.

periodicMaintenance()

This method is periodically called while the workflow is running

removeIncomingProperties(struct)

Remove properties on the structure that may have come from previous steps and that we do not want to propagate through this step

Parameters

struct (structure.Structure) – The structure to remove properties from

setKeywords(input, keystring)

Set the keywords for this job

Parameters
  • input (jaguar_input.JaguarInput) – The JaguarInput object to set the keywords on

  • keystring (str) – Space separated keyword=value pairs. Each pair must contain an equals sign

setStructOrCMSProperty(nottaduck, prop, value)

Set the given property to value on nottaduck, whether nottaduck is a Structure object or CMS object

Parameters
  • nottaduck (structure.Structure or cms.Cms) – The structure-like object to set the property on

  • prop (str) – The property to set

  • value – The value of the property

setSubDir()

Determine the absolute path to this step’s subdirectory so that we can always access it no matter what the current directory is

setWAMProperty(oname, structs)

Some workflow types set the WAM property on the structure file rather than the structure. The WAM property needs to be on the structure in order for the WAM to get passed into the final structure file.

Parameters
  • oname (str) – The name of the structure file

  • structs (list) – Each item of the list is a Structure or Cms object that needs to have the WAM property set on it

start()

Start the job - create the input and write it, adding necessary output files to make sure they get copied back

storeFilenames()

Store file names associated with this job before we delete the job object

write(writer, props=None, hierarchy=None)

Add the final structure for this step to the output structure file

Parameters
  • writer (schrodinger.StructureWriter) – The writer to use to write the structure

  • props (dict) – A dictionary of property/value pairs to add to the property dictionary of this object.

  • hierarchy (list) – The project group hierarchy for this result - each item is a str

class schrodinger.application.matsci.jwsteps.BDEStep(*args, **kwargs)

Bases: schrodinger.application.matsci.jwsteps.BaseMetaJaguarWorkflowStep

A step for running the Bond Dissociation Energy workflow

KEYS = {'basis': 'MIDIXL', 'dftname': 'B3LYP', 'iaccg': 3, 'igeopt': 1, 'isymm': 0, 'maxit': 100, 'nofail': 1, 'nops_opt_switch': 10}
STEP_NAME = 'BDE'
JOB_BASE = 'bde'
DRIVER_PATH = 'bond_dissociation_gui_dir/bond_dissociation_driver.py'
DRIVER = <module 'bond_dissociation_driver' from '/scr/buildbot/savedbuilds/2024-1/NB/build-133/mmshare-v6.5/python/scripts/bond_dissociation_gui_dir/bond_dissociation_driver.py'>
FLAGS = {'-allow_hx': 'no', '-bonds': None, '-states': 's0'}
FLAGS_ADD_DOUBLE_DASH = True
__init__(*args, **kwargs)

Create a BDEStep instance.

See parent class for additional documentation.

getStructsOfType(stype)

A generator for structures of the given type from BDE results

Parameters

stype (str) – The type of structure to get ‘Reactants’, ‘Reactions’, ‘Fragments’

Return type

Iterator

Returns

Iterator of schrodinger.Structure for the request type

getStructsForWriting()

Get the structure to write for this step. It will be the reactant structure

Return type

list of schrodinger.Structure

Returns

The reactant structure

ARCHIVED_INPUT = ['.in', '.mae', '.maegz']
ARCHIVED_KEEPERS = {'.smap', '.spm', '.vib', '.vis'}
BUILTIN_WF_FILE = None
CAN_CREATE_TRAJECTORY = False
COMBINER = False
FLAGS_ADD_INPUT_NAME = True
FLAGS_ADD_JOB_NAME = True
FLAGS_ADD_TPP = True
FLAGS_INPUT_NAME_FLAG = ''
OUTPUTS_CMS = False
PROCS = 1
REQUIRES_CMS_INPUT = False
REQUIRES_TRAJECTORY_INPUT = False
RESOURCE = 'cpu'
SPLITTER = False
SUBJOB_RESOURCE = 'cpu'
USES_JC = True
USES_MULTI_SUBJOBS = False
USES_THREADS = False
addParentalInformationProperties(struct)

Add parental subdirectory properties to the structure

Parameters

struct (schrodinger.structure.Structure) – The structure to add properties to

addTPPIfNeeded(cmd)

Add, or replace, the value of TPP in the command as needed.

Parameters

cmd (list) – The command line as a list of strings. The list is modified in-place

adjustCommandForQueue(cmd)

Add subhost and umbrella flags that direct this step’s subjobs to the correct host. Modifies the given command list in place.

Parameters

cmd (list) – The current command line as a list of strings

archiveFiles()

Create a tar.gz archive of all jaguar files and then removes any files that are no longer needed.

archiveSubDir()

Archive this step’s subdirectory and add it to the backend for copy back

calcsDone()

Check to see if the calculation finished

If finished and the job failed, self.ok will be set to False

Return type

bool

Returns

True if the calculation finished, False if not

canDriverUseUmbrella()

Check whether the driver for this step knows the -md_umbrella flag

Return type

bool

Returns

True if -md_umbrella is a known flag, False if not

canStart()

Check to see if this job can start - if the parent job(s) have finished successfully.

Return type

bool

Returns

True if the job can start, False if not

createCommand()

Create the command line

Return type

list

Returns

The command line in list form

Raises

JobCreationError – If the command cannot be created

createJob()

Create the job command and object

Return type

jobutils.RobustSubmissionJob

Returns

The job object to run

createQJobFromCommand(cmd)

Create the JobDJ job from the list of command line arguments. The job will be set to run in the Step subdirectory.

Return type

jobutils.RobustSubmissionJob

Returns

A job object that can be added to JobDJ

determineQueueResource(cmd)

Determine what resource this job should request

Parameters

cmd (list) – The command line as a list of strings

Return type

str or None

Returns

The resource (cpu, gpu or None) this job should request

finish()

Finish this step, including processing any output

finishProcessingJobControlJob()

Override the parent method to archive the directory if requested

getFirstOutputStructure()

Get the first output structure from the results

Return type

structure.Structure

Returns

The structure to write to the output file

getInput(override_uhf=True, override_solvent=True)

Get the JaguarInput object for this step, setting the keywords as required.

Return type

None or jaguar_input.JaguarInput

Returns

None if an error occured, or the jaguar_input.JaguarInput object to use for this step

getInputName()

Get the name of the input structure file

Return type

str

Returns

The input structure file name

getInputPath()

Get the full path to the input file

Return type

str

Returns

The full path to the input file

getNumSplits()

Get the number of parallel workflows this step will create. A 1 indicates that this step does not split the workflow.

Return type

int

Returns

The number of parallel workflows this step creates. 1 means it does not split the workflow

getOutput(quiet=False)

Read in the results of the calculation

Parameters

quiet (bool) – If True, no error messages will be printed. If False, (default) error messages will be printed. Also, if True, self.ok will not be set to False if the output file cannot be read.

Return type

None or list

Returns

None if the calculation failed, or a list of output structures from a successful calculation.

getOutputName()

Get the name of the output structure file

Return type

str

Returns

The output structure file name

getParentalInformation()

Get information about parent and required step names, output and subdirectories.

Return type

(ParentalPathInfo, ParentalPathInfo)

Returns

The first item gives information about the parent job, the second item gives cumulative information about the required steps. In cases where there is multiple information, such as the parent output file names, or multiple required step names, etc, the data is provided as space-delimited strings. The subdirectory paths and output file names are relative to the overall job directory.

getStructForChild(index=1)

Get the structure from this step to pass on to a child step

Parameters

index (int) – The 1-based index of the structure to get. Should be 1 unless this step is splitting the workflow into parallel workflows, in which case it is the index of the workflow that will run this structure. Unused in the base class, but subclasses may use this parameter.

Return type

structure.Structure, cms.Cms, or str

Returns

The structure the child step should use. If a str is returned, it is the path to the input structure file

getStructure()

Get the starting structure for this step

Overrides the parent class to get the initial structure for this workflow if the Step has no parent.

Return type

schrodinger.structure.Structure, None, or str

Returns

The starting structure for this step. None if input is not a structure. str if the starting structure is actually a file structures, in which case the return value is the path to the file.

handleFileLinkProperties(struct)

Fix existing Jaguar file link properties and add any new ones

Parameters

struct (structure.Structure) – The structure with the properties

log(msg, prefix=True, level=20)

Add a message to the parent workflow’s log file

Parameters
  • msg (str) – The message to add

  • prefix (bool) – Whether to add information about the workflow and step name to the front of the message string

  • level (int) – A logging constant indicating the priority level of the message

monitorFiles()

Check for any requested files that need to be copied back immediately

noJobAction()

Subclasses that do not run a job can overwrite this method to perform their action when the step is run.

property output_file_names

Get the names of all the output structures

Return type

list

Returns

Each item of the list is a the name of an output file. The step subdirectory path is NOT prepended to the file name.

periodicMaintenance()

This method is periodically called while the workflow is running

processOutput(output)

Process the output of a job during the finish part of the step

Parameters

output – The output of the job. Type may vary in subclasses

processSmapInfo()

Create an smap file in the subjob directory to enable Maestro’s little blue v and s buttons if the user manually imports the subjob output. Also copy smap-eligible files to the main job directory and pass back the file information needed for writing the main job smap file.

Return type

list

Returns

Each item of the list is a file name that should appear in the main job smap file for this step.

removeIncomingProperties(struct)

Remove properties on the structure that may have come from previous steps and that we do not want to propagate through this step

Parameters

struct (structure.Structure) – The structure to remove properties from

setKeywords(input, keystring)

Set the keywords for this job

Parameters
  • input (jaguar_input.JaguarInput) – The JaguarInput object to set the keywords on

  • keystring (str) – Space separated keyword=value pairs. Each pair must contain an equals sign

setStructOrCMSProperty(nottaduck, prop, value)

Set the given property to value on nottaduck, whether nottaduck is a Structure object or CMS object

Parameters
  • nottaduck (structure.Structure or cms.Cms) – The structure-like object to set the property on

  • prop (str) – The property to set

  • value – The value of the property

setSubDir()

Determine the absolute path to this step’s subdirectory so that we can always access it no matter what the current directory is

setWAMProperty(oname, structs)

Some workflow types set the WAM property on the structure file rather than the structure. The WAM property needs to be on the structure in order for the WAM to get passed into the final structure file.

Parameters
  • oname (str) – The name of the structure file

  • structs (list) – Each item of the list is a Structure or Cms object that needs to have the WAM property set on it

start()

Start the job - create the input and write it, adding necessary output files to make sure they get copied back

storeFilenames()

Store file names associated with this job before we delete the job object

write(writer, props=None, hierarchy=None)

Add the final structure for this step to the output structure file

Parameters
  • writer (schrodinger.StructureWriter) – The writer to use to write the structure

  • props (dict) – A dictionary of property/value pairs to add to the property dictionary of this object.

  • hierarchy (list) – The project group hierarchy for this result - each item is a str

writeInput(struct)

Write the input file

Parameters

struct (structure.Structure, cms.Cms, or None) – The structure to write. If None it will write the input file. If struct is a cms, only an mae will be written if this class does not require cms input.

class schrodinger.application.matsci.jwsteps.HOFStep(*args, high=False, **kwargs)

Bases: schrodinger.application.matsci.jwsteps.BaseMetaJaguarWorkflowStep

A step for running the Heat of Formation workflow

PROCS = 2
STEP_NAME = 'HOF'
JOB_BASE = 'hof'
DRIVER_PATH = 'jaguar'
FLAGS = {'-method_sp': 'M06-2X', '-scalfr': '0.9806', '-zpe': None, 'deltah.py': None, 'run': None}
FLAGS_ADD_JOB_NAME = False
HOF_PROP = 'r_j_Delta_H_of_Formation(298K)_(kcal/mol)'
__init__(*args, high=False, **kwargs)

Create a HOFStep instance.

Parameters

high (bool) – True if we are computing heat of formation at the high level of accuracy

See parent class for additional documentation.

outputStructurePath()

Get the path to the subjob subdirectory that contains the results

Return type

str

Returns

The path to the subdirectory inside the subjob’s directory that holds the results.

getInputName()

Get the name of the input structure file

Return type

str

Returns

The input structure file name

getOutputName()

Get the name of the output structure file

Return type

str

Returns

The output structure file name

ARCHIVED_INPUT = ['.in', '.mae', '.maegz']
ARCHIVED_KEEPERS = {'.smap', '.spm', '.vib', '.vis'}
BUILTIN_WF_FILE = None
CAN_CREATE_TRAJECTORY = False
COMBINER = False
DRIVER = None
FLAGS_ADD_DOUBLE_DASH = False
FLAGS_ADD_INPUT_NAME = True
FLAGS_ADD_TPP = True
FLAGS_INPUT_NAME_FLAG = ''
OUTPUTS_CMS = False
REQUIRES_CMS_INPUT = False
REQUIRES_TRAJECTORY_INPUT = False
RESOURCE = 'cpu'
SPLITTER = False
SUBJOB_RESOURCE = 'cpu'
USES_JC = True
USES_MULTI_SUBJOBS = False
USES_THREADS = False
addParentalInformationProperties(struct)

Add parental subdirectory properties to the structure

Parameters

struct (schrodinger.structure.Structure) – The structure to add properties to

addTPPIfNeeded(cmd)

Add, or replace, the value of TPP in the command as needed.

Parameters

cmd (list) – The command line as a list of strings. The list is modified in-place

adjustCommandForQueue(cmd)

Add subhost and umbrella flags that direct this step’s subjobs to the correct host. Modifies the given command list in place.

Parameters

cmd (list) – The current command line as a list of strings

archiveFiles()

Create a tar.gz archive of all jaguar files and then removes any files that are no longer needed.

archiveSubDir()

Archive this step’s subdirectory and add it to the backend for copy back

calcsDone()

Check to see if the calculation finished

If finished and the job failed, self.ok will be set to False

Return type

bool

Returns

True if the calculation finished, False if not

canDriverUseUmbrella()

Check whether the driver for this step knows the -md_umbrella flag

Return type

bool

Returns

True if -md_umbrella is a known flag, False if not

canStart()

Check to see if this job can start - if the parent job(s) have finished successfully.

Return type

bool

Returns

True if the job can start, False if not

createCommand()

Create the command line

Return type

list

Returns

The command line in list form

Raises

JobCreationError – If the command cannot be created

createJob()

Create the job command and object

Return type

jobutils.RobustSubmissionJob

Returns

The job object to run

createQJobFromCommand(cmd)

Create the JobDJ job from the list of command line arguments. The job will be set to run in the Step subdirectory.

Return type

jobutils.RobustSubmissionJob

Returns

A job object that can be added to JobDJ

determineQueueResource(cmd)

Determine what resource this job should request

Parameters

cmd (list) – The command line as a list of strings

Return type

str or None

Returns

The resource (cpu, gpu or None) this job should request

finish()

Finish this step, including processing any output

finishProcessingJobControlJob()

Override the parent method to archive the directory if requested

getFirstOutputStructure()

Get the first output structure from the results

Return type

structure.Structure

Returns

The structure to write to the output file

getInput(override_uhf=True, override_solvent=True)

Get the JaguarInput object for this step, setting the keywords as required.

Return type

None or jaguar_input.JaguarInput

Returns

None if an error occured, or the jaguar_input.JaguarInput object to use for this step

getInputPath()

Get the full path to the input file

Return type

str

Returns

The full path to the input file

getNumSplits()

Get the number of parallel workflows this step will create. A 1 indicates that this step does not split the workflow.

Return type

int

Returns

The number of parallel workflows this step creates. 1 means it does not split the workflow

getOutput(quiet=False)

Read in the results of the calculation

Parameters

quiet (bool) – If True, no error messages will be printed. If False, (default) error messages will be printed. Also, if True, self.ok will not be set to False if the output file cannot be read.

Return type

None or list

Returns

None if the calculation failed, or a list of output structures from a successful calculation.

getParentalInformation()

Get information about parent and required step names, output and subdirectories.

Return type

(ParentalPathInfo, ParentalPathInfo)

Returns

The first item gives information about the parent job, the second item gives cumulative information about the required steps. In cases where there is multiple information, such as the parent output file names, or multiple required step names, etc, the data is provided as space-delimited strings. The subdirectory paths and output file names are relative to the overall job directory.

getStructForChild(index=1)

Get the structure from this step to pass on to a child step

Parameters

index (int) – The 1-based index of the structure to get. Should be 1 unless this step is splitting the workflow into parallel workflows, in which case it is the index of the workflow that will run this structure. Unused in the base class, but subclasses may use this parameter.

Return type

structure.Structure, cms.Cms, or str

Returns

The structure the child step should use. If a str is returned, it is the path to the input structure file

getStructsForWriting()

Get the structures from this step to write to the final Workflow file

Return type

list of schrodinger.structure.Structure or str

Returns

A list of structures to write or the string constant NO_STRUCTURES to indicate that the step is intentionally returning no structures. An empty list will indicate expected structures were not found.

getStructure()

Get the starting structure for this step

Overrides the parent class to get the initial structure for this workflow if the Step has no parent.

Return type

schrodinger.structure.Structure, None, or str

Returns

The starting structure for this step. None if input is not a structure. str if the starting structure is actually a file structures, in which case the return value is the path to the file.

handleFileLinkProperties(struct)

Fix existing Jaguar file link properties and add any new ones

Parameters

struct (structure.Structure) – The structure with the properties

log(msg, prefix=True, level=20)

Add a message to the parent workflow’s log file

Parameters
  • msg (str) – The message to add

  • prefix (bool) – Whether to add information about the workflow and step name to the front of the message string

  • level (int) – A logging constant indicating the priority level of the message

monitorFiles()

Check for any requested files that need to be copied back immediately

noJobAction()

Subclasses that do not run a job can overwrite this method to perform their action when the step is run.

property output_file_names

Get the names of all the output structures

Return type

list

Returns

Each item of the list is a the name of an output file. The step subdirectory path is NOT prepended to the file name.

periodicMaintenance()

This method is periodically called while the workflow is running

processOutput(output)

Process the output of a job during the finish part of the step

Parameters

output – The output of the job. Type may vary in subclasses

processSmapInfo()

Create an smap file in the subjob directory to enable Maestro’s little blue v and s buttons if the user manually imports the subjob output. Also copy smap-eligible files to the main job directory and pass back the file information needed for writing the main job smap file.

Return type

list

Returns

Each item of the list is a file name that should appear in the main job smap file for this step.

removeIncomingProperties(struct)

Remove properties on the structure that may have come from previous steps and that we do not want to propagate through this step

Parameters

struct (structure.Structure) – The structure to remove properties from

setKeywords(input, keystring)

Set the keywords for this job

Parameters
  • input (jaguar_input.JaguarInput) – The JaguarInput object to set the keywords on

  • keystring (str) – Space separated keyword=value pairs. Each pair must contain an equals sign

setStructOrCMSProperty(nottaduck, prop, value)

Set the given property to value on nottaduck, whether nottaduck is a Structure object or CMS object

Parameters
  • nottaduck (structure.Structure or cms.Cms) – The structure-like object to set the property on

  • prop (str) – The property to set

  • value – The value of the property

setSubDir()

Determine the absolute path to this step’s subdirectory so that we can always access it no matter what the current directory is

setWAMProperty(oname, structs)

Some workflow types set the WAM property on the structure file rather than the structure. The WAM property needs to be on the structure in order for the WAM to get passed into the final structure file.

Parameters
  • oname (str) – The name of the structure file

  • structs (list) – Each item of the list is a Structure or Cms object that needs to have the WAM property set on it

start()

Start the job - create the input and write it, adding necessary output files to make sure they get copied back

storeFilenames()

Store file names associated with this job before we delete the job object

write(writer, props=None, hierarchy=None)

Add the final structure for this step to the output structure file

Parameters
  • writer (schrodinger.StructureWriter) – The writer to use to write the structure

  • props (dict) – A dictionary of property/value pairs to add to the property dictionary of this object.

  • hierarchy (list) – The project group hierarchy for this result - each item is a str

writeInput(struct)

Write the input file

Parameters

struct (structure.Structure, cms.Cms, or None) – The structure to write. If None it will write the input file. If struct is a cms, only an mae will be written if this class does not require cms input.

class schrodinger.application.matsci.jwsteps.CustomMaeStep(*args, procs=1, tag=None, flags=None, archive=False, monitor_globs=None, full_command=None, local_files=None, input_file=None, cpu_hostname=None, gpu_hostname=None, umbrella='per_flag', splitter=False, split_index=1, split_tag='', child_stages=None, use_jc=None, tpp=1, **kwargs)

Bases: schrodinger.application.matsci.jwsteps.BaseStep

A step for running custom scripts that output a .mae file

STEP_NAME = 'Custom'
JOB_BASE = 'custom'
USES_JC = False
USES_MULTI_SUBJOBS = True
USES_THREADS = True
ARCHIVED_INPUT = ['.in', '.mae', '.maegz']
ARCHIVED_KEEPERS = {'.smap', '.spm', '.vib', '.vis'}
BUILTIN_WF_FILE = None
CAN_CREATE_TRAJECTORY = False
COMBINER = False
DRIVER = None
DRIVER_PATH = 'driver_dir/driver.py'
FLAGS = {}
FLAGS_ADD_DOUBLE_DASH = False
FLAGS_ADD_INPUT_NAME = True
FLAGS_ADD_JOB_NAME = True
FLAGS_ADD_TPP = False
FLAGS_INPUT_NAME_FLAG = ''
OUTPUTS_CMS = False
PROCS = 1
REQUIRES_CMS_INPUT = False
REQUIRES_TRAJECTORY_INPUT = False
RESOURCE = 'cpu'
SPLITTER = False
SUBJOB_RESOURCE = 'cpu'
__init__(*args, procs=1, tag=None, flags=None, archive=False, monitor_globs=None, full_command=None, local_files=None, input_file=None, cpu_hostname=None, gpu_hostname=None, umbrella='per_flag', splitter=False, split_index=1, split_tag='', child_stages=None, use_jc=None, tpp=1, **kwargs)

Create a BaseStep object

Parameters
  • procs (int) – The number of processors to allocate to steps of this class

  • tag – str(tag) will be added to the end of the job name and step name

  • flags (dict) – Command line argument flags in addition to, or that override, the class FLAGS variable. Keys are flag names (“-flag”), values are values for that flag. For flags that take no value, use None as the value. To turn off (not include in the command line) a flag in the class FLAGS variable, use the DO_NOT_USE_FLAG constant as the value.

  • archive (bool) – If True, instead of copying the subdirectory and individual files, will tar.gz up the entire subdirectory and copy that back.

  • monitor_globs (list) – List of valid file globs (i.e. ["*.zip"]) that should be monitored for and copied back to the original job directory when they appear. Note that the interaction of archive and moitor_globs is such that if both are specified, the result will be a subdirectory with the monitored files AND an archive of the entire subdirectory (including any monitored files that remain when this step completes).

  • full_command (list) – the full command line for this step including the driver path, etc. but without $SCHRODINGER/run. The command will be used “as is” except for replacing some pre-defined tokens with job-specific strings - see the createCommand function. Each item of the list is a word of the command line invocation.

  • local_files (list) – A list of file paths to copy into the job subdirectory before running the command

  • input_file (str) – The name of the file containing the input structures/data. It is ignored if there is a parent for this step.

  • cpu_hostname (str) – The name of the host to run CPU processes on

  • gpu_hostname (str) – The name of the host to run GPU processes on

  • umbrella (str) – Whether to run drivers that have GPU subjobs in umbrella mode or not. Should be one of UMBRELLA_ALWAYS (always run in umbrella mode even if the flag is not provided), UMBRELLA_NEVER (never run in umbrella mode even if the flag is provided) or UMBRELLA_PER_FLAG (obey the presence or absence of the -md_umbrella flag for this step). This parameter is only used if both cpu_hostname and gpu_hostname are given - if not, UMBRELLA_ALWAYS is enforced.

  • splitter (bool) – True if this step splits the workflow into parallel workflows, False if it does not. Note that this keyword is ignored if the SPLITTER class constant is True.

  • split_index (int) – If this step STARTS a new split workflow, the 1-based index of that workflow. Otherwise, just use 1 to indicate that it is the same workflow as the parent step.

  • split_tag (str) – An extra tag to add to the step name to distinguish between the same stage in parallel workflows

  • child_stages (list) – A list of child stages that need steps to be created from them. Each item is a jaguar_multistage_workflow_utils.StageData instance. This list contains one StageData item for each child stage no matter how many steps will be created from that stage due to splitting the workflow. For instance, if a workflow is A-B-C-D, and B is a splitter step that splits the workflow into 3 workflows, child_stages for B should be [C], not [C, C, C].

  • use_jc (bool) – True if the step should use job control, False if not. The default value of None defaults to the class USES_JC constant.

  • tpp (int) – The number of threads per process. Serial processes use 1 thread. This will be added to the step command via -TPP tpp.

See parent class for additional documentation

Raises

ValueError – if umbrella is not an allowed value

addParentalInformationProperties(struct)

Add parental subdirectory properties to the structure

Parameters

struct (schrodinger.structure.Structure) – The structure to add properties to

addTPPIfNeeded(cmd)

Add, or replace, the value of TPP in the command as needed.

Parameters

cmd (list) – The command line as a list of strings. The list is modified in-place

adjustCommandForQueue(cmd)

Add subhost and umbrella flags that direct this step’s subjobs to the correct host. Modifies the given command list in place.

Parameters

cmd (list) – The current command line as a list of strings

archiveFiles()

Create a tar.gz archive of all jaguar files and then removes any files that are no longer needed.

archiveSubDir()

Archive this step’s subdirectory and add it to the backend for copy back

calcsDone()

Check to see if the calculation finished

If finished and the job failed, self.ok will be set to False

Return type

bool

Returns

True if the calculation finished, False if not

canDriverUseUmbrella()

Check whether the driver for this step knows the -md_umbrella flag

Return type

bool

Returns

True if -md_umbrella is a known flag, False if not

canStart()

Check to see if this job can start - if the parent job(s) have finished successfully.

Return type

bool

Returns

True if the job can start, False if not

createCommand()

Create the command line

Return type

list

Returns

The command line in list form

Raises

JobCreationError – If the command cannot be created

createJob()

Create the job command and object

Return type

jobutils.RobustSubmissionJob

Returns

The job object to run

createQJobFromCommand(cmd)

Create the JobDJ job from the list of command line arguments. The job will be set to run in the Step subdirectory.

Return type

jobutils.RobustSubmissionJob

Returns

A job object that can be added to JobDJ

determineQueueResource(cmd)

Determine what resource this job should request

Parameters

cmd (list) – The command line as a list of strings

Return type

str or None

Returns

The resource (cpu, gpu or None) this job should request

finish()

Finish this step, including processing any output

finishProcessingJobControlJob()

Override the parent method to archive the directory if requested

getFirstOutputStructure()

Get the first output structure from the results

Return type

structure.Structure

Returns

The structure to write to the output file

getInput(override_uhf=True, override_solvent=True)

Get the JaguarInput object for this step, setting the keywords as required.

Return type

None or jaguar_input.JaguarInput

Returns

None if an error occured, or the jaguar_input.JaguarInput object to use for this step

getInputName()

Get the name of the input structure file

Return type

str

Returns

The input structure file name

getInputPath()

Get the full path to the input file

Return type

str

Returns

The full path to the input file

getNumSplits()

Get the number of parallel workflows this step will create. A 1 indicates that this step does not split the workflow.

Return type

int

Returns

The number of parallel workflows this step creates. 1 means it does not split the workflow

getOutput(quiet=False)

Read in the results of the calculation

Parameters

quiet (bool) – If True, no error messages will be printed. If False, (default) error messages will be printed. Also, if True, self.ok will not be set to False if the output file cannot be read.

Return type

None or list

Returns

None if the calculation failed, or a list of output structures from a successful calculation.

getOutputName()

Get the name of the output structure file

Return type

str

Returns

The output structure file name

getParentalInformation()

Get information about parent and required step names, output and subdirectories.

Return type

(ParentalPathInfo, ParentalPathInfo)

Returns

The first item gives information about the parent job, the second item gives cumulative information about the required steps. In cases where there is multiple information, such as the parent output file names, or multiple required step names, etc, the data is provided as space-delimited strings. The subdirectory paths and output file names are relative to the overall job directory.

getStructForChild(index=1)

Get the structure from this step to pass on to a child step

Parameters

index (int) – The 1-based index of the structure to get. Should be 1 unless this step is splitting the workflow into parallel workflows, in which case it is the index of the workflow that will run this structure. Unused in the base class, but subclasses may use this parameter.

Return type

structure.Structure, cms.Cms, or str

Returns

The structure the child step should use. If a str is returned, it is the path to the input structure file

getStructsForWriting()

Get the structures from this step to write to the final Workflow file

Return type

list of schrodinger.structure.Structure or str

Returns

A list of structures to write or the string constant NO_STRUCTURES to indicate that the step is intentionally returning no structures. An empty list will indicate expected structures were not found.

getStructure()

Get the starting structure for this step

Overrides the parent class to get the initial structure for this workflow if the Step has no parent.

Return type

schrodinger.structure.Structure, None, or str

Returns

The starting structure for this step. None if input is not a structure. str if the starting structure is actually a file structures, in which case the return value is the path to the file.

handleFileLinkProperties(struct)

Fix existing Jaguar file link properties and add any new ones

Parameters

struct (structure.Structure) – The structure with the properties

log(msg, prefix=True, level=20)

Add a message to the parent workflow’s log file

Parameters
  • msg (str) – The message to add

  • prefix (bool) – Whether to add information about the workflow and step name to the front of the message string

  • level (int) – A logging constant indicating the priority level of the message

monitorFiles()

Check for any requested files that need to be copied back immediately

noJobAction()

Subclasses that do not run a job can overwrite this method to perform their action when the step is run.

property output_file_names

Get the names of all the output structures

Return type

list

Returns

Each item of the list is a the name of an output file. The step subdirectory path is NOT prepended to the file name.

periodicMaintenance()

This method is periodically called while the workflow is running

processOutput(output)

Process the output of a job during the finish part of the step

Parameters

output – The output of the job. Type may vary in subclasses

processSmapInfo()

Create an smap file in the subjob directory to enable Maestro’s little blue v and s buttons if the user manually imports the subjob output. Also copy smap-eligible files to the main job directory and pass back the file information needed for writing the main job smap file.

Return type

list

Returns

Each item of the list is a file name that should appear in the main job smap file for this step.

removeIncomingProperties(struct)

Remove properties on the structure that may have come from previous steps and that we do not want to propagate through this step

Parameters

struct (structure.Structure) – The structure to remove properties from

setKeywords(input, keystring)

Set the keywords for this job

Parameters
  • input (jaguar_input.JaguarInput) – The JaguarInput object to set the keywords on

  • keystring (str) – Space separated keyword=value pairs. Each pair must contain an equals sign

setStructOrCMSProperty(nottaduck, prop, value)

Set the given property to value on nottaduck, whether nottaduck is a Structure object or CMS object

Parameters
  • nottaduck (structure.Structure or cms.Cms) – The structure-like object to set the property on

  • prop (str) – The property to set

  • value – The value of the property

setSubDir()

Determine the absolute path to this step’s subdirectory so that we can always access it no matter what the current directory is

setWAMProperty(oname, structs)

Some workflow types set the WAM property on the structure file rather than the structure. The WAM property needs to be on the structure in order for the WAM to get passed into the final structure file.

Parameters
  • oname (str) – The name of the structure file

  • structs (list) – Each item of the list is a Structure or Cms object that needs to have the WAM property set on it

start()

Start the job - create the input and write it, adding necessary output files to make sure they get copied back

storeFilenames()

Store file names associated with this job before we delete the job object

write(writer, props=None, hierarchy=None)

Add the final structure for this step to the output structure file

Parameters
  • writer (schrodinger.StructureWriter) – The writer to use to write the structure

  • props (dict) – A dictionary of property/value pairs to add to the property dictionary of this object.

  • hierarchy (list) – The project group hierarchy for this result - each item is a str

writeInput(struct)

Write the input file

Parameters

struct (structure.Structure, cms.Cms, or None) – The structure to write. If None it will write the input file. If struct is a cms, only an mae will be written if this class does not require cms input.

class schrodinger.application.matsci.jwsteps.BaseDesmondStep(*args, maestro_in=False, **kwargs)

Bases: schrodinger.application.matsci.jwsteps.BaseStep

Base class for steps that use Desmond as the main engine or produce a cms file

OUTPUTS_CMS = True
RESOURCE = 'cpu'
SUBJOB_RESOURCE = 'gpu'
__init__(*args, maestro_in=False, **kwargs)

Create a BaseDesmondStep instance

Parameters

maestro_in (bool) – If true, the class will write a Maestro input file (.maegz) rather than a CMS (.cms) file

See parent class for additional documentation

REQUIRES_CMS_INPUT = True
getStructsForWriting()

Get the output Maestro structure derived from the output CMS system

Return type

list of schrodinger.Structure

Returns

The output Maestro structure

getOutputName()

Get the name of the output structure file

Return type

str

Returns

The output structure file name

getInputName()

Get the name of the output structure file

Return type

str

Returns

The output structure file name

getTrajectoryName()

Get the name of the output trajectory directory

Return type

str or None

Returns

The output trajectory directory name or None if this step does not create trajectories

ARCHIVED_INPUT = ['.in', '.mae', '.maegz']
ARCHIVED_KEEPERS = {'.smap', '.spm', '.vib', '.vis'}
BUILTIN_WF_FILE = None
CAN_CREATE_TRAJECTORY = False
COMBINER = False
DRIVER = None
DRIVER_PATH = 'driver_dir/driver.py'
FLAGS = {}
FLAGS_ADD_DOUBLE_DASH = False
FLAGS_ADD_INPUT_NAME = True
FLAGS_ADD_JOB_NAME = True
FLAGS_ADD_TPP = False
FLAGS_INPUT_NAME_FLAG = ''
JOB_BASE = 'base'
PROCS = 1
REQUIRES_TRAJECTORY_INPUT = False
SPLITTER = False
STEP_NAME = 'Base Step'
USES_JC = True
USES_MULTI_SUBJOBS = False
USES_THREADS = False
addParentalInformationProperties(struct)

Add parental subdirectory properties to the structure

Parameters

struct (schrodinger.structure.Structure) – The structure to add properties to

addTPPIfNeeded(cmd)

Add, or replace, the value of TPP in the command as needed.

Parameters

cmd (list) – The command line as a list of strings. The list is modified in-place

adjustCommandForQueue(cmd)

Add subhost and umbrella flags that direct this step’s subjobs to the correct host. Modifies the given command list in place.

Parameters

cmd (list) – The current command line as a list of strings

archiveFiles()

Create a tar.gz archive of all jaguar files and then removes any files that are no longer needed.

archiveSubDir()

Archive this step’s subdirectory and add it to the backend for copy back

calcsDone()

Check to see if the calculation finished

If finished and the job failed, self.ok will be set to False

Return type

bool

Returns

True if the calculation finished, False if not

canDriverUseUmbrella()

Check whether the driver for this step knows the -md_umbrella flag

Return type

bool

Returns

True if -md_umbrella is a known flag, False if not

canStart()

Check to see if this job can start - if the parent job(s) have finished successfully.

Return type

bool

Returns

True if the job can start, False if not

createCommand()

Create the command line

Return type

list

Returns

The command line in list form

Raises

JobCreationError – If the command cannot be created

createJob()

Create the job command and object

Return type

jobutils.RobustSubmissionJob

Returns

The job object to run

createQJobFromCommand(cmd)

Create the JobDJ job from the list of command line arguments. The job will be set to run in the Step subdirectory.

Return type

jobutils.RobustSubmissionJob

Returns

A job object that can be added to JobDJ

determineQueueResource(cmd)

Determine what resource this job should request

Parameters

cmd (list) – The command line as a list of strings

Return type

str or None

Returns

The resource (cpu, gpu or None) this job should request

finish()

Finish this step, including processing any output

finishProcessingJobControlJob()

Override the parent method to archive the directory if requested

getFirstOutputStructure()

Get the first output structure from the results

Return type

structure.Structure

Returns

The structure to write to the output file

getInput(override_uhf=True, override_solvent=True)

Get the JaguarInput object for this step, setting the keywords as required.

Return type

None or jaguar_input.JaguarInput

Returns

None if an error occured, or the jaguar_input.JaguarInput object to use for this step

getInputPath()

Get the full path to the input file

Return type

str

Returns

The full path to the input file

getNumSplits()

Get the number of parallel workflows this step will create. A 1 indicates that this step does not split the workflow.

Return type

int

Returns

The number of parallel workflows this step creates. 1 means it does not split the workflow

getOutput(quiet=False)

Read in the results of the calculation

Parameters

quiet (bool) – If True, no error messages will be printed. If False, (default) error messages will be printed. Also, if True, self.ok will not be set to False if the output file cannot be read.

Return type

None or list

Returns

None if the calculation failed, or a list of output structures from a successful calculation.

getParentalInformation()

Get information about parent and required step names, output and subdirectories.

Return type

(ParentalPathInfo, ParentalPathInfo)

Returns

The first item gives information about the parent job, the second item gives cumulative information about the required steps. In cases where there is multiple information, such as the parent output file names, or multiple required step names, etc, the data is provided as space-delimited strings. The subdirectory paths and output file names are relative to the overall job directory.

getStructForChild(index=1)

Get the structure from this step to pass on to a child step

Parameters

index (int) – The 1-based index of the structure to get. Should be 1 unless this step is splitting the workflow into parallel workflows, in which case it is the index of the workflow that will run this structure. Unused in the base class, but subclasses may use this parameter.

Return type

structure.Structure, cms.Cms, or str

Returns

The structure the child step should use. If a str is returned, it is the path to the input structure file

getStructure()

Get the starting structure for this step

Overrides the parent class to get the initial structure for this workflow if the Step has no parent.

Return type

schrodinger.structure.Structure, None, or str

Returns

The starting structure for this step. None if input is not a structure. str if the starting structure is actually a file structures, in which case the return value is the path to the file.

handleFileLinkProperties(struct)

Fix existing Jaguar file link properties and add any new ones

Parameters

struct (structure.Structure) – The structure with the properties

log(msg, prefix=True, level=20)

Add a message to the parent workflow’s log file

Parameters
  • msg (str) – The message to add

  • prefix (bool) – Whether to add information about the workflow and step name to the front of the message string

  • level (int) – A logging constant indicating the priority level of the message

monitorFiles()

Check for any requested files that need to be copied back immediately

noJobAction()

Subclasses that do not run a job can overwrite this method to perform their action when the step is run.

property output_file_names

Get the names of all the output structures

Return type

list

Returns

Each item of the list is a the name of an output file. The step subdirectory path is NOT prepended to the file name.

periodicMaintenance()

This method is periodically called while the workflow is running

processOutput(output)

Process the output of a job during the finish part of the step

Parameters

output – The output of the job. Type may vary in subclasses

processSmapInfo()

Create an smap file in the subjob directory to enable Maestro’s little blue v and s buttons if the user manually imports the subjob output. Also copy smap-eligible files to the main job directory and pass back the file information needed for writing the main job smap file.

Return type

list

Returns

Each item of the list is a file name that should appear in the main job smap file for this step.

removeIncomingProperties(struct)

Remove properties on the structure that may have come from previous steps and that we do not want to propagate through this step

Parameters

struct (structure.Structure) – The structure to remove properties from

setKeywords(input, keystring)

Set the keywords for this job

Parameters
  • input (jaguar_input.JaguarInput) – The JaguarInput object to set the keywords on

  • keystring (str) – Space separated keyword=value pairs. Each pair must contain an equals sign

setStructOrCMSProperty(nottaduck, prop, value)

Set the given property to value on nottaduck, whether nottaduck is a Structure object or CMS object

Parameters
  • nottaduck (structure.Structure or cms.Cms) – The structure-like object to set the property on

  • prop (str) – The property to set

  • value – The value of the property

setSubDir()

Determine the absolute path to this step’s subdirectory so that we can always access it no matter what the current directory is

setWAMProperty(oname, structs)

Some workflow types set the WAM property on the structure file rather than the structure. The WAM property needs to be on the structure in order for the WAM to get passed into the final structure file.

Parameters
  • oname (str) – The name of the structure file

  • structs (list) – Each item of the list is a Structure or Cms object that needs to have the WAM property set on it

start()

Start the job - create the input and write it, adding necessary output files to make sure they get copied back

storeFilenames()

Store file names associated with this job before we delete the job object

write(writer, props=None, hierarchy=None)

Add the final structure for this step to the output structure file

Parameters
  • writer (schrodinger.StructureWriter) – The writer to use to write the structure

  • props (dict) – A dictionary of property/value pairs to add to the property dictionary of this object.

  • hierarchy (list) – The project group hierarchy for this result - each item is a str

writeInput(struct)

Write the input file

Parameters

struct (structure.Structure, cms.Cms, or None) – The structure to write. If None it will write the input file. If struct is a cms, only an mae will be written if this class does not require cms input.

class schrodinger.application.matsci.jwsteps.ReplicateMakerMixin

Bases: object

A mixin for built-in workflows that can optionally produce multiple structures that split the workflow

property output_file_names

Get the names of all the output structures

Return type

list

Returns

Each item of the list is a the name of an output file. The step subdirectory path is NOT prepended to the file name.

getOutputEnding()

Get the output file ending based on the command line flags

Return type

str

Returns

The output file ending appropriate for CMS or MAE output

getOutputFileNamePattern()

A glob pattern that matches output file names

Return type

str

Returns

The pattern to use when globbing for output files

getNumSplits()

Get the number of parallel workflows this step will create. A 1 indicates that this step does not split the workflow.

Return type

int

Returns

The number of parallel workflows this step creates. 1 means it does not split the workflow

getStructForChild(index=1)

Get the structure from this step to pass on to a child step

Parameters

index (int) – The 1-based index of the structure to get. Should be 1 unless this step is splitting the workflow into parallel workflows, in which case it is the index of the workflow that will run this structure. Unused in the base class, but subclasses may use this parameter.

Return type

structure.Structure or cms.Cms

Returns

The structure the child step should use

getStructsForWriting()

Get the structures from this step to write to the final Workflow file

Return type

list of schrodinger.structure.Structure

Returns

A list of structures to write

class schrodinger.application.matsci.jwsteps.DisorderedSystemBuilderStep(*args, **kwargs)

Bases: schrodinger.application.matsci.jwsteps.ReplicateMakerMixin, schrodinger.application.matsci.jwsteps.BaseDesmondStep

A step that runs the Disordered System Builder.

STEP_NAME = 'Disordered system'
JOB_BASE = 'dsb'
DRIVER_PATH = 'disordered_system_builder_gui_dir/disordered_system_builder_driver.py'
DRIVER = <module 'disordered_system_builder_driver' from '/scr/buildbot/savedbuilds/2024-1/NB/build-133/mmshare-v6.5/python/scripts/disordered_system_builder_gui_dir/disordered_system_builder_driver.py'>
FLAGS = {'-forcefield': 'S-OPLS', '-grid': None, '-pack': None, '-split_components': None}
REQUIRES_CMS_INPUT = False
RESOURCE = 'cpu'
SUBJOB_RESOURCE = 'cpu'
USES_MULTI_SUBJOBS = True
BUILTIN_WF_FILE = 'single_stage_disorder_system_single_component.wfw'
MAE_ENDING = '_amorphous.maegz'
CMS_ENDING = '_system-out.cms'
__init__(*args, **kwargs)

Create a DisorderedSystemBuilderStep instance

See parent class for additional documentation

getOutputEnding()

Get the output file ending based on the command line flags

Return type

str

Returns

The output file ending appropriate for CMS or MAE output

getOutputName()

Get the name of the output structure file

Return type

str

Returns

The output structure file name

ARCHIVED_INPUT = ['.in', '.mae', '.maegz']
ARCHIVED_KEEPERS = {'.smap', '.spm', '.vib', '.vis'}
CAN_CREATE_TRAJECTORY = False
COMBINER = False
FLAGS_ADD_DOUBLE_DASH = False
FLAGS_ADD_INPUT_NAME = True
FLAGS_ADD_JOB_NAME = True
FLAGS_ADD_TPP = False
FLAGS_INPUT_NAME_FLAG = ''
OUTPUTS_CMS = True
PROCS = 1
REQUIRES_TRAJECTORY_INPUT = False
SPLITTER = False
USES_JC = True
USES_THREADS = False
addParentalInformationProperties(struct)

Add parental subdirectory properties to the structure

Parameters

struct (schrodinger.structure.Structure) – The structure to add properties to

addTPPIfNeeded(cmd)

Add, or replace, the value of TPP in the command as needed.

Parameters

cmd (list) – The command line as a list of strings. The list is modified in-place

adjustCommandForQueue(cmd)

Add subhost and umbrella flags that direct this step’s subjobs to the correct host. Modifies the given command list in place.

Parameters

cmd (list) – The current command line as a list of strings

archiveFiles()

Create a tar.gz archive of all jaguar files and then removes any files that are no longer needed.

archiveSubDir()

Archive this step’s subdirectory and add it to the backend for copy back

calcsDone()

Check to see if the calculation finished

If finished and the job failed, self.ok will be set to False

Return type

bool

Returns

True if the calculation finished, False if not

canDriverUseUmbrella()

Check whether the driver for this step knows the -md_umbrella flag

Return type

bool

Returns

True if -md_umbrella is a known flag, False if not

canStart()

Check to see if this job can start - if the parent job(s) have finished successfully.

Return type

bool

Returns

True if the job can start, False if not

createCommand()

Create the command line

Return type

list

Returns

The command line in list form

Raises

JobCreationError – If the command cannot be created

createJob()

Create the job command and object

Return type

jobutils.RobustSubmissionJob

Returns

The job object to run

createQJobFromCommand(cmd)

Create the JobDJ job from the list of command line arguments. The job will be set to run in the Step subdirectory.

Return type

jobutils.RobustSubmissionJob

Returns

A job object that can be added to JobDJ

determineQueueResource(cmd)

Determine what resource this job should request

Parameters

cmd (list) – The command line as a list of strings

Return type

str or None

Returns

The resource (cpu, gpu or None) this job should request

finish()

Finish this step, including processing any output

finishProcessingJobControlJob()

Override the parent method to archive the directory if requested

getFirstOutputStructure()

Get the first output structure from the results

Return type

structure.Structure

Returns

The structure to write to the output file

getInput(override_uhf=True, override_solvent=True)

Get the JaguarInput object for this step, setting the keywords as required.

Return type

None or jaguar_input.JaguarInput

Returns

None if an error occured, or the jaguar_input.JaguarInput object to use for this step

getInputName()

Get the name of the output structure file

Return type

str

Returns

The output structure file name

getInputPath()

Get the full path to the input file

Return type

str

Returns

The full path to the input file

getNumSplits()

Get the number of parallel workflows this step will create. A 1 indicates that this step does not split the workflow.

Return type

int

Returns

The number of parallel workflows this step creates. 1 means it does not split the workflow

getOutput(quiet=False)

Read in the results of the calculation

Parameters

quiet (bool) – If True, no error messages will be printed. If False, (default) error messages will be printed. Also, if True, self.ok will not be set to False if the output file cannot be read.

Return type

None or list

Returns

None if the calculation failed, or a list of output structures from a successful calculation.

getOutputFileNamePattern()

A glob pattern that matches output file names

Return type

str

Returns

The pattern to use when globbing for output files

getParentalInformation()

Get information about parent and required step names, output and subdirectories.

Return type

(ParentalPathInfo, ParentalPathInfo)

Returns

The first item gives information about the parent job, the second item gives cumulative information about the required steps. In cases where there is multiple information, such as the parent output file names, or multiple required step names, etc, the data is provided as space-delimited strings. The subdirectory paths and output file names are relative to the overall job directory.

getStructForChild(index=1)

Get the structure from this step to pass on to a child step

Parameters

index (int) – The 1-based index of the structure to get. Should be 1 unless this step is splitting the workflow into parallel workflows, in which case it is the index of the workflow that will run this structure. Unused in the base class, but subclasses may use this parameter.

Return type

structure.Structure or cms.Cms

Returns

The structure the child step should use

getStructsForWriting()

Get the structures from this step to write to the final Workflow file

Return type

list of schrodinger.structure.Structure

Returns

A list of structures to write

getStructure()

Get the starting structure for this step

Overrides the parent class to get the initial structure for this workflow if the Step has no parent.

Return type

schrodinger.structure.Structure, None, or str

Returns

The starting structure for this step. None if input is not a structure. str if the starting structure is actually a file structures, in which case the return value is the path to the file.

getTrajectoryName()

Get the name of the output trajectory directory

Return type

str or None

Returns

The output trajectory directory name or None if this step does not create trajectories

handleFileLinkProperties(struct)

Fix existing Jaguar file link properties and add any new ones

Parameters

struct (structure.Structure) – The structure with the properties

log(msg, prefix=True, level=20)

Add a message to the parent workflow’s log file

Parameters
  • msg (str) – The message to add

  • prefix (bool) – Whether to add information about the workflow and step name to the front of the message string

  • level (int) – A logging constant indicating the priority level of the message

monitorFiles()

Check for any requested files that need to be copied back immediately

noJobAction()

Subclasses that do not run a job can overwrite this method to perform their action when the step is run.

property output_file_names

Get the names of all the output structures

Return type

list

Returns

Each item of the list is a the name of an output file. The step subdirectory path is NOT prepended to the file name.

periodicMaintenance()

This method is periodically called while the workflow is running

processOutput(output)

Process the output of a job during the finish part of the step

Parameters

output – The output of the job. Type may vary in subclasses

processSmapInfo()

Create an smap file in the subjob directory to enable Maestro’s little blue v and s buttons if the user manually imports the subjob output. Also copy smap-eligible files to the main job directory and pass back the file information needed for writing the main job smap file.

Return type

list

Returns

Each item of the list is a file name that should appear in the main job smap file for this step.

removeIncomingProperties(struct)

Remove properties on the structure that may have come from previous steps and that we do not want to propagate through this step

Parameters

struct (structure.Structure) – The structure to remove properties from

setKeywords(input, keystring)

Set the keywords for this job

Parameters
  • input (jaguar_input.JaguarInput) – The JaguarInput object to set the keywords on

  • keystring (str) – Space separated keyword=value pairs. Each pair must contain an equals sign

setStructOrCMSProperty(nottaduck, prop, value)

Set the given property to value on nottaduck, whether nottaduck is a Structure object or CMS object

Parameters
  • nottaduck (structure.Structure or cms.Cms) – The structure-like object to set the property on

  • prop (str) – The property to set

  • value – The value of the property

setSubDir()

Determine the absolute path to this step’s subdirectory so that we can always access it no matter what the current directory is

setWAMProperty(oname, structs)

Some workflow types set the WAM property on the structure file rather than the structure. The WAM property needs to be on the structure in order for the WAM to get passed into the final structure file.

Parameters
  • oname (str) – The name of the structure file

  • structs (list) – Each item of the list is a Structure or Cms object that needs to have the WAM property set on it

start()

Start the job - create the input and write it, adding necessary output files to make sure they get copied back

storeFilenames()

Store file names associated with this job before we delete the job object

write(writer, props=None, hierarchy=None)

Add the final structure for this step to the output structure file

Parameters
  • writer (schrodinger.StructureWriter) – The writer to use to write the structure

  • props (dict) – A dictionary of property/value pairs to add to the property dictionary of this object.

  • hierarchy (list) – The project group hierarchy for this result - each item is a str

writeInput(struct)

Write the input file

Parameters

struct (structure.Structure, cms.Cms, or None) – The structure to write. If None it will write the input file. If struct is a cms, only an mae will be written if this class does not require cms input.

class schrodinger.application.matsci.jwsteps.PolymerBuilderStep(*args, **kwargs)

Bases: schrodinger.application.matsci.jwsteps.ReplicateMakerMixin, schrodinger.application.matsci.jwsteps.BaseDesmondStep

A step that runs the Polymer Builder.

STEP_NAME = 'Polymer Builder'
JOB_BASE = 'polybuild'
DRIVER_PATH = 'polymer_builder_gui_dir/polymer_builder_driver.py'
DRIVER = <module 'polymer_builder_driver' from '/scr/buildbot/savedbuilds/2024-1/NB/build-133/mmshare-v6.5/python/scripts/polymer_builder_gui_dir/polymer_builder_driver.py'>
REQUIRES_CMS_INPUT = False
FLAGS = {'-simple_input': None}
RESOURCE = 'cpu'
SUBJOB_RESOURCE = 'cpu'
USES_MULTI_SUBJOBS = True
BUILTIN_WF_FILE = 'single_stage_polymer_builder.wfw'
MAE_NOCELL_ENDING = '-polymer.maegz'
MAE_CELL_ENDING = '-amcell.maegz'
CMS_ENDING = '_system-out.cms'
__init__(*args, **kwargs)

Create a PolymerBuilderStep instance

See parent class for additional documentation

getInputName()

Get the name of the input structure file

Return type

str

Returns

The input structure file name

removeIncomingProperties(*args, **kwargs)

Override the parent method to do nothing since we don’t have a single simple input structure and the properties do not survive the polymer builder.

getOutputEnding()

Get the output file ending based on the command line flags

Return type

str

Returns

The output file ending appropriate for CMS or MAE output

getOutputName()

Get the name of the output structure file

Return type

str

Returns

The output structure file name

ARCHIVED_INPUT = ['.in', '.mae', '.maegz']
ARCHIVED_KEEPERS = {'.smap', '.spm', '.vib', '.vis'}
CAN_CREATE_TRAJECTORY = False
COMBINER = False
FLAGS_ADD_DOUBLE_DASH = False
FLAGS_ADD_INPUT_NAME = True
FLAGS_ADD_JOB_NAME = True
FLAGS_ADD_TPP = False
FLAGS_INPUT_NAME_FLAG = ''
OUTPUTS_CMS = True
PROCS = 1
REQUIRES_TRAJECTORY_INPUT = False
SPLITTER = False
USES_JC = True
USES_THREADS = False
addParentalInformationProperties(struct)

Add parental subdirectory properties to the structure

Parameters

struct (schrodinger.structure.Structure) – The structure to add properties to

addTPPIfNeeded(cmd)

Add, or replace, the value of TPP in the command as needed.

Parameters

cmd (list) – The command line as a list of strings. The list is modified in-place

adjustCommandForQueue(cmd)

Add subhost and umbrella flags that direct this step’s subjobs to the correct host. Modifies the given command list in place.

Parameters

cmd (list) – The current command line as a list of strings

archiveFiles()

Create a tar.gz archive of all jaguar files and then removes any files that are no longer needed.

archiveSubDir()

Archive this step’s subdirectory and add it to the backend for copy back

calcsDone()

Check to see if the calculation finished

If finished and the job failed, self.ok will be set to False

Return type

bool

Returns

True if the calculation finished, False if not

canDriverUseUmbrella()

Check whether the driver for this step knows the -md_umbrella flag

Return type

bool

Returns

True if -md_umbrella is a known flag, False if not

canStart()

Check to see if this job can start - if the parent job(s) have finished successfully.

Return type

bool

Returns

True if the job can start, False if not

createCommand()

Create the command line

Return type

list

Returns

The command line in list form

Raises

JobCreationError – If the command cannot be created

createJob()

Create the job command and object

Return type

jobutils.RobustSubmissionJob

Returns

The job object to run

createQJobFromCommand(cmd)

Create the JobDJ job from the list of command line arguments. The job will be set to run in the Step subdirectory.

Return type

jobutils.RobustSubmissionJob

Returns

A job object that can be added to JobDJ

determineQueueResource(cmd)

Determine what resource this job should request

Parameters

cmd (list) – The command line as a list of strings

Return type

str or None

Returns

The resource (cpu, gpu or None) this job should request

finish()

Finish this step, including processing any output

finishProcessingJobControlJob()

Override the parent method to archive the directory if requested

getFirstOutputStructure()

Get the first output structure from the results

Return type

structure.Structure

Returns

The structure to write to the output file

getInput(override_uhf=True, override_solvent=True)

Get the JaguarInput object for this step, setting the keywords as required.

Return type

None or jaguar_input.JaguarInput

Returns

None if an error occured, or the jaguar_input.JaguarInput object to use for this step

getInputPath()

Get the full path to the input file

Return type

str

Returns

The full path to the input file

getNumSplits()

Get the number of parallel workflows this step will create. A 1 indicates that this step does not split the workflow.

Return type

int

Returns

The number of parallel workflows this step creates. 1 means it does not split the workflow

getOutput(quiet=False)

Read in the results of the calculation

Parameters

quiet (bool) – If True, no error messages will be printed. If False, (default) error messages will be printed. Also, if True, self.ok will not be set to False if the output file cannot be read.

Return type

None or list

Returns

None if the calculation failed, or a list of output structures from a successful calculation.

getOutputFileNamePattern()

A glob pattern that matches output file names

Return type

str

Returns

The pattern to use when globbing for output files

getParentalInformation()

Get information about parent and required step names, output and subdirectories.

Return type

(ParentalPathInfo, ParentalPathInfo)

Returns

The first item gives information about the parent job, the second item gives cumulative information about the required steps. In cases where there is multiple information, such as the parent output file names, or multiple required step names, etc, the data is provided as space-delimited strings. The subdirectory paths and output file names are relative to the overall job directory.

getStructForChild(index=1)

Get the structure from this step to pass on to a child step

Parameters

index (int) – The 1-based index of the structure to get. Should be 1 unless this step is splitting the workflow into parallel workflows, in which case it is the index of the workflow that will run this structure. Unused in the base class, but subclasses may use this parameter.

Return type

structure.Structure or cms.Cms

Returns

The structure the child step should use

getStructsForWriting()

Get the structures from this step to write to the final Workflow file

Return type

list of schrodinger.structure.Structure

Returns

A list of structures to write

getStructure()

Get the starting structure for this step

Overrides the parent class to get the initial structure for this workflow if the Step has no parent.

Return type

schrodinger.structure.Structure, None, or str

Returns

The starting structure for this step. None if input is not a structure. str if the starting structure is actually a file structures, in which case the return value is the path to the file.

getTrajectoryName()

Get the name of the output trajectory directory

Return type

str or None

Returns

The output trajectory directory name or None if this step does not create trajectories

handleFileLinkProperties(struct)

Fix existing Jaguar file link properties and add any new ones

Parameters

struct (structure.Structure) – The structure with the properties

log(msg, prefix=True, level=20)

Add a message to the parent workflow’s log file

Parameters
  • msg (str) – The message to add

  • prefix (bool) – Whether to add information about the workflow and step name to the front of the message string

  • level (int) – A logging constant indicating the priority level of the message

monitorFiles()

Check for any requested files that need to be copied back immediately

noJobAction()

Subclasses that do not run a job can overwrite this method to perform their action when the step is run.

property output_file_names

Get the names of all the output structures

Return type

list

Returns

Each item of the list is a the name of an output file. The step subdirectory path is NOT prepended to the file name.

periodicMaintenance()

This method is periodically called while the workflow is running

processOutput(output)

Process the output of a job during the finish part of the step

Parameters

output – The output of the job. Type may vary in subclasses

processSmapInfo()

Create an smap file in the subjob directory to enable Maestro’s little blue v and s buttons if the user manually imports the subjob output. Also copy smap-eligible files to the main job directory and pass back the file information needed for writing the main job smap file.

Return type

list

Returns

Each item of the list is a file name that should appear in the main job smap file for this step.

setKeywords(input, keystring)

Set the keywords for this job

Parameters
  • input (jaguar_input.JaguarInput) – The JaguarInput object to set the keywords on

  • keystring (str) – Space separated keyword=value pairs. Each pair must contain an equals sign

setStructOrCMSProperty(nottaduck, prop, value)

Set the given property to value on nottaduck, whether nottaduck is a Structure object or CMS object

Parameters
  • nottaduck (structure.Structure or cms.Cms) – The structure-like object to set the property on

  • prop (str) – The property to set

  • value – The value of the property

setSubDir()

Determine the absolute path to this step’s subdirectory so that we can always access it no matter what the current directory is

setWAMProperty(oname, structs)

Some workflow types set the WAM property on the structure file rather than the structure. The WAM property needs to be on the structure in order for the WAM to get passed into the final structure file.

Parameters
  • oname (str) – The name of the structure file

  • structs (list) – Each item of the list is a Structure or Cms object that needs to have the WAM property set on it

start()

Start the job - create the input and write it, adding necessary output files to make sure they get copied back

storeFilenames()

Store file names associated with this job before we delete the job object

write(writer, props=None, hierarchy=None)

Add the final structure for this step to the output structure file

Parameters
  • writer (schrodinger.StructureWriter) – The writer to use to write the structure

  • props (dict) – A dictionary of property/value pairs to add to the property dictionary of this object.

  • hierarchy (list) – The project group hierarchy for this result - each item is a str

writeInput(struct)

Write the input file

Parameters

struct (structure.Structure, cms.Cms, or None) – The structure to write. If None it will write the input file. If struct is a cms, only an mae will be written if this class does not require cms input.

class schrodinger.application.matsci.jwsteps.PrepForMDStep(*args, **kwargs)

Bases: schrodinger.application.matsci.jwsteps.BaseDesmondStep

A step that runs Prepare for MD to create a Desmond system.

STEP_NAME = 'Prepare for MD'
JOB_BASE = 'prepmd'
DRIVER_PATH = 'prepare_for_md_gui_dir/prepare_for_md_driver.py'
DRIVER = <module 'prepare_for_md_driver' from '/scr/buildbot/savedbuilds/2024-1/NB/build-133/mmshare-v6.5/python/scripts/prepare_for_md_gui_dir/prepare_for_md_driver.py'>
FLAGS = {'-forcefield': 'S-OPLS', '-split_components': None}
REQUIRES_CMS_INPUT = False
RESOURCE = 'cpu'
SUBJOB_RESOURCE = 'cpu'
BUILTIN_WF_FILE = 'single_stage_prepare_for_md.wfw'
__init__(*args, **kwargs)

Create a PrepForMDStep object

See parent class for documentation

getOutputName()

Get the name of the output structure file

Return type

str

Returns

The output structure file name

ARCHIVED_INPUT = ['.in', '.mae', '.maegz']
ARCHIVED_KEEPERS = {'.smap', '.spm', '.vib', '.vis'}
CAN_CREATE_TRAJECTORY = False
COMBINER = False
FLAGS_ADD_DOUBLE_DASH = False
FLAGS_ADD_INPUT_NAME = True
FLAGS_ADD_JOB_NAME = True
FLAGS_ADD_TPP = False
FLAGS_INPUT_NAME_FLAG = ''
OUTPUTS_CMS = True
PROCS = 1
REQUIRES_TRAJECTORY_INPUT = False
SPLITTER = False
USES_JC = True
USES_MULTI_SUBJOBS = False
USES_THREADS = False
addParentalInformationProperties(struct)

Add parental subdirectory properties to the structure

Parameters

struct (schrodinger.structure.Structure) – The structure to add properties to

addTPPIfNeeded(cmd)

Add, or replace, the value of TPP in the command as needed.

Parameters

cmd (list) – The command line as a list of strings. The list is modified in-place

adjustCommandForQueue(cmd)

Add subhost and umbrella flags that direct this step’s subjobs to the correct host. Modifies the given command list in place.

Parameters

cmd (list) – The current command line as a list of strings

archiveFiles()

Create a tar.gz archive of all jaguar files and then removes any files that are no longer needed.

archiveSubDir()

Archive this step’s subdirectory and add it to the backend for copy back

calcsDone()

Check to see if the calculation finished

If finished and the job failed, self.ok will be set to False

Return type

bool

Returns

True if the calculation finished, False if not

canDriverUseUmbrella()

Check whether the driver for this step knows the -md_umbrella flag

Return type

bool

Returns

True if -md_umbrella is a known flag, False if not

canStart()

Check to see if this job can start - if the parent job(s) have finished successfully.

Return type

bool

Returns

True if the job can start, False if not

createCommand()

Create the command line

Return type

list

Returns

The command line in list form

Raises

JobCreationError – If the command cannot be created

createJob()

Create the job command and object

Return type

jobutils.RobustSubmissionJob

Returns

The job object to run

createQJobFromCommand(cmd)

Create the JobDJ job from the list of command line arguments. The job will be set to run in the Step subdirectory.

Return type

jobutils.RobustSubmissionJob

Returns

A job object that can be added to JobDJ

determineQueueResource(cmd)

Determine what resource this job should request

Parameters

cmd (list) – The command line as a list of strings

Return type

str or None

Returns

The resource (cpu, gpu or None) this job should request

finish()

Finish this step, including processing any output

finishProcessingJobControlJob()

Override the parent method to archive the directory if requested

getFirstOutputStructure()

Get the first output structure from the results

Return type

structure.Structure

Returns

The structure to write to the output file

getInput(override_uhf=True, override_solvent=True)

Get the JaguarInput object for this step, setting the keywords as required.

Return type

None or jaguar_input.JaguarInput

Returns

None if an error occured, or the jaguar_input.JaguarInput object to use for this step

getInputName()

Get the name of the output structure file

Return type

str

Returns

The output structure file name

getInputPath()

Get the full path to the input file

Return type

str

Returns

The full path to the input file

getNumSplits()

Get the number of parallel workflows this step will create. A 1 indicates that this step does not split the workflow.

Return type

int

Returns

The number of parallel workflows this step creates. 1 means it does not split the workflow

getOutput(quiet=False)

Read in the results of the calculation

Parameters

quiet (bool) – If True, no error messages will be printed. If False, (default) error messages will be printed. Also, if True, self.ok will not be set to False if the output file cannot be read.

Return type

None or list

Returns

None if the calculation failed, or a list of output structures from a successful calculation.

getParentalInformation()

Get information about parent and required step names, output and subdirectories.

Return type

(ParentalPathInfo, ParentalPathInfo)

Returns

The first item gives information about the parent job, the second item gives cumulative information about the required steps. In cases where there is multiple information, such as the parent output file names, or multiple required step names, etc, the data is provided as space-delimited strings. The subdirectory paths and output file names are relative to the overall job directory.

getStructForChild(index=1)

Get the structure from this step to pass on to a child step

Parameters

index (int) – The 1-based index of the structure to get. Should be 1 unless this step is splitting the workflow into parallel workflows, in which case it is the index of the workflow that will run this structure. Unused in the base class, but subclasses may use this parameter.

Return type

structure.Structure, cms.Cms, or str

Returns

The structure the child step should use. If a str is returned, it is the path to the input structure file

getStructsForWriting()

Get the output Maestro structure derived from the output CMS system

Return type

list of schrodinger.Structure

Returns

The output Maestro structure

getStructure()

Get the starting structure for this step

Overrides the parent class to get the initial structure for this workflow if the Step has no parent.

Return type

schrodinger.structure.Structure, None, or str

Returns

The starting structure for this step. None if input is not a structure. str if the starting structure is actually a file structures, in which case the return value is the path to the file.

getTrajectoryName()

Get the name of the output trajectory directory

Return type

str or None

Returns

The output trajectory directory name or None if this step does not create trajectories

handleFileLinkProperties(struct)

Fix existing Jaguar file link properties and add any new ones

Parameters

struct (structure.Structure) – The structure with the properties

log(msg, prefix=True, level=20)

Add a message to the parent workflow’s log file

Parameters
  • msg (str) – The message to add

  • prefix (bool) – Whether to add information about the workflow and step name to the front of the message string

  • level (int) – A logging constant indicating the priority level of the message

monitorFiles()

Check for any requested files that need to be copied back immediately

noJobAction()

Subclasses that do not run a job can overwrite this method to perform their action when the step is run.

property output_file_names

Get the names of all the output structures

Return type

list

Returns

Each item of the list is a the name of an output file. The step subdirectory path is NOT prepended to the file name.

periodicMaintenance()

This method is periodically called while the workflow is running

processOutput(output)

Process the output of a job during the finish part of the step

Parameters

output – The output of the job. Type may vary in subclasses

processSmapInfo()

Create an smap file in the subjob directory to enable Maestro’s little blue v and s buttons if the user manually imports the subjob output. Also copy smap-eligible files to the main job directory and pass back the file information needed for writing the main job smap file.

Return type

list

Returns

Each item of the list is a file name that should appear in the main job smap file for this step.

removeIncomingProperties(struct)

Remove properties on the structure that may have come from previous steps and that we do not want to propagate through this step

Parameters

struct (structure.Structure) – The structure to remove properties from

setKeywords(input, keystring)

Set the keywords for this job

Parameters
  • input (jaguar_input.JaguarInput) – The JaguarInput object to set the keywords on

  • keystring (str) – Space separated keyword=value pairs. Each pair must contain an equals sign

setStructOrCMSProperty(nottaduck, prop, value)

Set the given property to value on nottaduck, whether nottaduck is a Structure object or CMS object

Parameters
  • nottaduck (structure.Structure or cms.Cms) – The structure-like object to set the property on

  • prop (str) – The property to set

  • value – The value of the property

setSubDir()

Determine the absolute path to this step’s subdirectory so that we can always access it no matter what the current directory is

setWAMProperty(oname, structs)

Some workflow types set the WAM property on the structure file rather than the structure. The WAM property needs to be on the structure in order for the WAM to get passed into the final structure file.

Parameters
  • oname (str) – The name of the structure file

  • structs (list) – Each item of the list is a Structure or Cms object that needs to have the WAM property set on it

start()

Start the job - create the input and write it, adding necessary output files to make sure they get copied back

storeFilenames()

Store file names associated with this job before we delete the job object

write(writer, props=None, hierarchy=None)

Add the final structure for this step to the output structure file

Parameters
  • writer (schrodinger.StructureWriter) – The writer to use to write the structure

  • props (dict) – A dictionary of property/value pairs to add to the property dictionary of this object.

  • hierarchy (list) – The project group hierarchy for this result - each item is a str

writeInput(struct)

Write the input file

Parameters

struct (structure.Structure, cms.Cms, or None) – The structure to write. If None it will write the input file. If struct is a cms, only an mae will be written if this class does not require cms input.

class schrodinger.application.matsci.jwsteps.MolecularDynamicsStep(*args, analysis=False, average=None, **kwargs)

Bases: schrodinger.application.matsci.jwsteps.BaseDesmondStep

A step that runs one or more Desmond MD stages

STEP_NAME = 'Relaxation'
JOB_BASE = 'relax'
ANALYSIS_FRAME_PERCENT = 20
CAN_CREATE_TRAJECTORY = True
RESOURCE = 'gpu'
SUBJOB_RESOURCE = 'gpu'
__init__(*args, analysis=False, average=None, **kwargs)

Create a MolecularDynamicsStep object

Parameters
  • analysis (bool) – Whether to perform a trajectory analysis on the last MD stage

  • average (int) – What percent of the final MD stage trajectory to average the cell size over

See parent class for documentation

addVelocityIfNeeded(kwargs)

Add the velocity write keyword if there will be analysis done

Parameters

kwargs (dict) – dict of current keyword/value pairs - modified if velocity is needed

getStringers()

Create the stringers that define each MD stage

Return type

list

Returns

A list of MSJStringer objects

writeMSJFile()

Write the MSJ file for this step

writeInput(struct)

Write the input structure file and msj file

Parameters

struct (structure.Structure or None) – The structure to write. If None it will write the input file.

getMSJName()

Get the name of the MSJ file

Return type

str

Returns

The MSJ file name

createJob()

Form the command line and create a job for the queue

Return type

jobutils.RobustSubmissionJob

Returns

The job to add to the JobDJ

processOutput(output)

Process the output of a job during the finish part of the step

Parameters

output – The output of the job. If it evaluates to False, no processing is done. Otherwise it is unused.

ARCHIVED_INPUT = ['.in', '.mae', '.maegz']
ARCHIVED_KEEPERS = {'.smap', '.spm', '.vib', '.vis'}
BUILTIN_WF_FILE = None
COMBINER = False
DRIVER = None
DRIVER_PATH = 'driver_dir/driver.py'
FLAGS = {}
FLAGS_ADD_DOUBLE_DASH = False
FLAGS_ADD_INPUT_NAME = True
FLAGS_ADD_JOB_NAME = True
FLAGS_ADD_TPP = False
FLAGS_INPUT_NAME_FLAG = ''
OUTPUTS_CMS = True
PROCS = 1
REQUIRES_CMS_INPUT = True
REQUIRES_TRAJECTORY_INPUT = False
SPLITTER = False
USES_JC = True
USES_MULTI_SUBJOBS = False
USES_THREADS = False
addParentalInformationProperties(struct)

Add parental subdirectory properties to the structure

Parameters

struct (schrodinger.structure.Structure) – The structure to add properties to

addTPPIfNeeded(cmd)

Add, or replace, the value of TPP in the command as needed.

Parameters

cmd (list) – The command line as a list of strings. The list is modified in-place

adjustCommandForQueue(cmd)

Add subhost and umbrella flags that direct this step’s subjobs to the correct host. Modifies the given command list in place.

Parameters

cmd (list) – The current command line as a list of strings

archiveFiles()

Create a tar.gz archive of all jaguar files and then removes any files that are no longer needed.

archiveSubDir()

Archive this step’s subdirectory and add it to the backend for copy back

calcsDone()

Check to see if the calculation finished

If finished and the job failed, self.ok will be set to False

Return type

bool

Returns

True if the calculation finished, False if not

canDriverUseUmbrella()

Check whether the driver for this step knows the -md_umbrella flag

Return type

bool

Returns

True if -md_umbrella is a known flag, False if not

canStart()

Check to see if this job can start - if the parent job(s) have finished successfully.

Return type

bool

Returns

True if the job can start, False if not

createCommand()

Create the command line

Return type

list

Returns

The command line in list form

Raises

JobCreationError – If the command cannot be created

createQJobFromCommand(cmd)

Create the JobDJ job from the list of command line arguments. The job will be set to run in the Step subdirectory.

Return type

jobutils.RobustSubmissionJob

Returns

A job object that can be added to JobDJ

determineQueueResource(cmd)

Determine what resource this job should request

Parameters

cmd (list) – The command line as a list of strings

Return type

str or None

Returns

The resource (cpu, gpu or None) this job should request

finish()

Finish this step, including processing any output

finishProcessingJobControlJob()

Override the parent method to archive the directory if requested

getFirstOutputStructure()

Get the first output structure from the results

Return type

structure.Structure

Returns

The structure to write to the output file

getInput(override_uhf=True, override_solvent=True)

Get the JaguarInput object for this step, setting the keywords as required.

Return type

None or jaguar_input.JaguarInput

Returns

None if an error occured, or the jaguar_input.JaguarInput object to use for this step

getInputName()

Get the name of the output structure file

Return type

str

Returns

The output structure file name

getInputPath()

Get the full path to the input file

Return type

str

Returns

The full path to the input file

getNumSplits()

Get the number of parallel workflows this step will create. A 1 indicates that this step does not split the workflow.

Return type

int

Returns

The number of parallel workflows this step creates. 1 means it does not split the workflow

getOutput(quiet=False)

Read in the results of the calculation

Parameters

quiet (bool) – If True, no error messages will be printed. If False, (default) error messages will be printed. Also, if True, self.ok will not be set to False if the output file cannot be read.

Return type

None or list

Returns

None if the calculation failed, or a list of output structures from a successful calculation.

getOutputName()

Get the name of the output structure file

Return type

str

Returns

The output structure file name

getParentalInformation()

Get information about parent and required step names, output and subdirectories.

Return type

(ParentalPathInfo, ParentalPathInfo)

Returns

The first item gives information about the parent job, the second item gives cumulative information about the required steps. In cases where there is multiple information, such as the parent output file names, or multiple required step names, etc, the data is provided as space-delimited strings. The subdirectory paths and output file names are relative to the overall job directory.

getStructForChild(index=1)

Get the structure from this step to pass on to a child step

Parameters

index (int) – The 1-based index of the structure to get. Should be 1 unless this step is splitting the workflow into parallel workflows, in which case it is the index of the workflow that will run this structure. Unused in the base class, but subclasses may use this parameter.

Return type

structure.Structure, cms.Cms, or str

Returns

The structure the child step should use. If a str is returned, it is the path to the input structure file

getStructsForWriting()

Get the output Maestro structure derived from the output CMS system

Return type

list of schrodinger.Structure

Returns

The output Maestro structure

getStructure()

Get the starting structure for this step

Overrides the parent class to get the initial structure for this workflow if the Step has no parent.

Return type

schrodinger.structure.Structure, None, or str

Returns

The starting structure for this step. None if input is not a structure. str if the starting structure is actually a file structures, in which case the return value is the path to the file.

getTrajectoryName()

Get the name of the output trajectory directory

Return type

str or None

Returns

The output trajectory directory name or None if this step does not create trajectories

handleFileLinkProperties(struct)

Fix existing Jaguar file link properties and add any new ones

Parameters

struct (structure.Structure) – The structure with the properties

log(msg, prefix=True, level=20)

Add a message to the parent workflow’s log file

Parameters
  • msg (str) – The message to add

  • prefix (bool) – Whether to add information about the workflow and step name to the front of the message string

  • level (int) – A logging constant indicating the priority level of the message

monitorFiles()

Check for any requested files that need to be copied back immediately

noJobAction()

Subclasses that do not run a job can overwrite this method to perform their action when the step is run.

property output_file_names

Get the names of all the output structures

Return type

list

Returns

Each item of the list is a the name of an output file. The step subdirectory path is NOT prepended to the file name.

periodicMaintenance()

This method is periodically called while the workflow is running

processSmapInfo()

Create an smap file in the subjob directory to enable Maestro’s little blue v and s buttons if the user manually imports the subjob output. Also copy smap-eligible files to the main job directory and pass back the file information needed for writing the main job smap file.

Return type

list

Returns

Each item of the list is a file name that should appear in the main job smap file for this step.

removeIncomingProperties(struct)

Remove properties on the structure that may have come from previous steps and that we do not want to propagate through this step

Parameters

struct (structure.Structure) – The structure to remove properties from

setKeywords(input, keystring)

Set the keywords for this job

Parameters
  • input (jaguar_input.JaguarInput) – The JaguarInput object to set the keywords on

  • keystring (str) – Space separated keyword=value pairs. Each pair must contain an equals sign

setStructOrCMSProperty(nottaduck, prop, value)

Set the given property to value on nottaduck, whether nottaduck is a Structure object or CMS object

Parameters
  • nottaduck (structure.Structure or cms.Cms) – The structure-like object to set the property on

  • prop (str) – The property to set

  • value – The value of the property

setSubDir()

Determine the absolute path to this step’s subdirectory so that we can always access it no matter what the current directory is

setWAMProperty(oname, structs)

Some workflow types set the WAM property on the structure file rather than the structure. The WAM property needs to be on the structure in order for the WAM to get passed into the final structure file.

Parameters
  • oname (str) – The name of the structure file

  • structs (list) – Each item of the list is a Structure or Cms object that needs to have the WAM property set on it

start()

Start the job - create the input and write it, adding necessary output files to make sure they get copied back

storeFilenames()

Store file names associated with this job before we delete the job object

write(writer, props=None, hierarchy=None)

Add the final structure for this step to the output structure file

Parameters
  • writer (schrodinger.StructureWriter) – The writer to use to write the structure

  • props (dict) – A dictionary of property/value pairs to add to the property dictionary of this object.

  • hierarchy (list) – The project group hierarchy for this result - each item is a str

class schrodinger.application.matsci.jwsteps.BaseRelaxationStep(*args, temp=300.0, **kwargs)

Bases: schrodinger.application.matsci.jwsteps.MolecularDynamicsStep

A base class for relaxation step

STEP_NAME = 'BaseRelaxation'
JOB_BASE = 'baserelax'
__init__(*args, temp=300.0, **kwargs)

Create a base relaxation object

Parameters

temp (float) – Temperature for the final relaxation step

See parent class for documentation

getStringers()

Create the stringers that define each MD stage

Raises

NotImplementedError – Overwrite this method

Return type

str

Returns

A list of MSJStringer objects

ANALYSIS_FRAME_PERCENT = 20
ARCHIVED_INPUT = ['.in', '.mae', '.maegz']
ARCHIVED_KEEPERS = {'.smap', '.spm', '.vib', '.vis'}
BUILTIN_WF_FILE = None
CAN_CREATE_TRAJECTORY = True
COMBINER = False
DRIVER = None
DRIVER_PATH = 'driver_dir/driver.py'
FLAGS = {}
FLAGS_ADD_DOUBLE_DASH = False
FLAGS_ADD_INPUT_NAME = True
FLAGS_ADD_JOB_NAME = True
FLAGS_ADD_TPP = False
FLAGS_INPUT_NAME_FLAG = ''
OUTPUTS_CMS = True
PROCS = 1
REQUIRES_CMS_INPUT = True
REQUIRES_TRAJECTORY_INPUT = False
RESOURCE = 'gpu'
SPLITTER = False
SUBJOB_RESOURCE = 'gpu'
USES_JC = True
USES_MULTI_SUBJOBS = False
USES_THREADS = False
addParentalInformationProperties(struct)

Add parental subdirectory properties to the structure

Parameters

struct (schrodinger.structure.Structure) – The structure to add properties to

addTPPIfNeeded(cmd)

Add, or replace, the value of TPP in the command as needed.

Parameters

cmd (list) – The command line as a list of strings. The list is modified in-place

addVelocityIfNeeded(kwargs)

Add the velocity write keyword if there will be analysis done

Parameters

kwargs (dict) – dict of current keyword/value pairs - modified if velocity is needed

adjustCommandForQueue(cmd)

Add subhost and umbrella flags that direct this step’s subjobs to the correct host. Modifies the given command list in place.

Parameters

cmd (list) – The current command line as a list of strings

archiveFiles()

Create a tar.gz archive of all jaguar files and then removes any files that are no longer needed.

archiveSubDir()

Archive this step’s subdirectory and add it to the backend for copy back

calcsDone()

Check to see if the calculation finished

If finished and the job failed, self.ok will be set to False

Return type

bool

Returns

True if the calculation finished, False if not

canDriverUseUmbrella()

Check whether the driver for this step knows the -md_umbrella flag

Return type

bool

Returns

True if -md_umbrella is a known flag, False if not

canStart()

Check to see if this job can start - if the parent job(s) have finished successfully.

Return type

bool

Returns

True if the job can start, False if not

createCommand()

Create the command line

Return type

list

Returns

The command line in list form

Raises

JobCreationError – If the command cannot be created

createJob()

Form the command line and create a job for the queue

Return type

jobutils.RobustSubmissionJob

Returns

The job to add to the JobDJ

createQJobFromCommand(cmd)

Create the JobDJ job from the list of command line arguments. The job will be set to run in the Step subdirectory.

Return type

jobutils.RobustSubmissionJob

Returns

A job object that can be added to JobDJ

determineQueueResource(cmd)

Determine what resource this job should request

Parameters

cmd (list) – The command line as a list of strings

Return type

str or None

Returns

The resource (cpu, gpu or None) this job should request

finish()

Finish this step, including processing any output

finishProcessingJobControlJob()

Override the parent method to archive the directory if requested

getFirstOutputStructure()

Get the first output structure from the results

Return type

structure.Structure

Returns

The structure to write to the output file

getInput(override_uhf=True, override_solvent=True)

Get the JaguarInput object for this step, setting the keywords as required.

Return type

None or jaguar_input.JaguarInput

Returns

None if an error occured, or the jaguar_input.JaguarInput object to use for this step

getInputName()

Get the name of the output structure file

Return type

str

Returns

The output structure file name

getInputPath()

Get the full path to the input file

Return type

str

Returns

The full path to the input file

getMSJName()

Get the name of the MSJ file

Return type

str

Returns

The MSJ file name

getNumSplits()

Get the number of parallel workflows this step will create. A 1 indicates that this step does not split the workflow.

Return type

int

Returns

The number of parallel workflows this step creates. 1 means it does not split the workflow

getOutput(quiet=False)

Read in the results of the calculation

Parameters

quiet (bool) – If True, no error messages will be printed. If False, (default) error messages will be printed. Also, if True, self.ok will not be set to False if the output file cannot be read.

Return type

None or list

Returns

None if the calculation failed, or a list of output structures from a successful calculation.

getOutputName()

Get the name of the output structure file

Return type

str

Returns

The output structure file name

getParentalInformation()

Get information about parent and required step names, output and subdirectories.

Return type

(ParentalPathInfo, ParentalPathInfo)

Returns

The first item gives information about the parent job, the second item gives cumulative information about the required steps. In cases where there is multiple information, such as the parent output file names, or multiple required step names, etc, the data is provided as space-delimited strings. The subdirectory paths and output file names are relative to the overall job directory.

getStructForChild(index=1)

Get the structure from this step to pass on to a child step

Parameters

index (int) – The 1-based index of the structure to get. Should be 1 unless this step is splitting the workflow into parallel workflows, in which case it is the index of the workflow that will run this structure. Unused in the base class, but subclasses may use this parameter.

Return type

structure.Structure, cms.Cms, or str

Returns

The structure the child step should use. If a str is returned, it is the path to the input structure file

getStructsForWriting()

Get the output Maestro structure derived from the output CMS system

Return type

list of schrodinger.Structure

Returns

The output Maestro structure

getStructure()

Get the starting structure for this step

Overrides the parent class to get the initial structure for this workflow if the Step has no parent.

Return type

schrodinger.structure.Structure, None, or str

Returns

The starting structure for this step. None if input is not a structure. str if the starting structure is actually a file structures, in which case the return value is the path to the file.

getTrajectoryName()

Get the name of the output trajectory directory

Return type

str or None

Returns

The output trajectory directory name or None if this step does not create trajectories

handleFileLinkProperties(struct)

Fix existing Jaguar file link properties and add any new ones

Parameters

struct (structure.Structure) – The structure with the properties

log(msg, prefix=True, level=20)

Add a message to the parent workflow’s log file

Parameters
  • msg (str) – The message to add

  • prefix (bool) – Whether to add information about the workflow and step name to the front of the message string

  • level (int) – A logging constant indicating the priority level of the message

monitorFiles()

Check for any requested files that need to be copied back immediately

noJobAction()

Subclasses that do not run a job can overwrite this method to perform their action when the step is run.

property output_file_names

Get the names of all the output structures

Return type

list

Returns

Each item of the list is a the name of an output file. The step subdirectory path is NOT prepended to the file name.

periodicMaintenance()

This method is periodically called while the workflow is running

processOutput(output)

Process the output of a job during the finish part of the step

Parameters

output – The output of the job. If it evaluates to False, no processing is done. Otherwise it is unused.

processSmapInfo()

Create an smap file in the subjob directory to enable Maestro’s little blue v and s buttons if the user manually imports the subjob output. Also copy smap-eligible files to the main job directory and pass back the file information needed for writing the main job smap file.

Return type

list

Returns

Each item of the list is a file name that should appear in the main job smap file for this step.

removeIncomingProperties(struct)

Remove properties on the structure that may have come from previous steps and that we do not want to propagate through this step

Parameters

struct (structure.Structure) – The structure to remove properties from

setKeywords(input, keystring)

Set the keywords for this job

Parameters
  • input (jaguar_input.JaguarInput) – The JaguarInput object to set the keywords on

  • keystring (str) – Space separated keyword=value pairs. Each pair must contain an equals sign

setStructOrCMSProperty(nottaduck, prop, value)

Set the given property to value on nottaduck, whether nottaduck is a Structure object or CMS object

Parameters
  • nottaduck (structure.Structure or cms.Cms) – The structure-like object to set the property on

  • prop (str) – The property to set

  • value – The value of the property

setSubDir()

Determine the absolute path to this step’s subdirectory so that we can always access it no matter what the current directory is

setWAMProperty(oname, structs)

Some workflow types set the WAM property on the structure file rather than the structure. The WAM property needs to be on the structure in order for the WAM to get passed into the final structure file.

Parameters
  • oname (str) – The name of the structure file

  • structs (list) – Each item of the list is a Structure or Cms object that needs to have the WAM property set on it

start()

Start the job - create the input and write it, adding necessary output files to make sure they get copied back

storeFilenames()

Store file names associated with this job before we delete the job object

write(writer, props=None, hierarchy=None)

Add the final structure for this step to the output structure file

Parameters
  • writer (schrodinger.StructureWriter) – The writer to use to write the structure

  • props (dict) – A dictionary of property/value pairs to add to the property dictionary of this object.

  • hierarchy (list) – The project group hierarchy for this result - each item is a str

writeInput(struct)

Write the input structure file and msj file

Parameters

struct (structure.Structure or None) – The structure to write. If None it will write the input file.

writeMSJFile()

Write the MSJ file for this step

class schrodinger.application.matsci.jwsteps.MatSciMDRelaxationStep(*args, temp=300.0, **kwargs)

Bases: schrodinger.application.matsci.jwsteps.BaseRelaxationStep

A step that runs a MatSci MD relaxation protocol

STEP_NAME = 'MSRelaxation'
JOB_BASE = 'msrelax'
getStringers()

Create the stringers that define each MD stage

Return type

str

Returns

A list of MSJStringer objects

ANALYSIS_FRAME_PERCENT = 20
ARCHIVED_INPUT = ['.in', '.mae', '.maegz']
ARCHIVED_KEEPERS = {'.smap', '.spm', '.vib', '.vis'}
BUILTIN_WF_FILE = None
CAN_CREATE_TRAJECTORY = True
COMBINER = False
DRIVER = None
DRIVER_PATH = 'driver_dir/driver.py'
FLAGS = {}
FLAGS_ADD_DOUBLE_DASH = False
FLAGS_ADD_INPUT_NAME = True
FLAGS_ADD_JOB_NAME = True
FLAGS_ADD_TPP = False
FLAGS_INPUT_NAME_FLAG = ''
OUTPUTS_CMS = True
PROCS = 1
REQUIRES_CMS_INPUT = True
REQUIRES_TRAJECTORY_INPUT = False
RESOURCE = 'gpu'
SPLITTER = False
SUBJOB_RESOURCE = 'gpu'
USES_JC = True
USES_MULTI_SUBJOBS = False
USES_THREADS = False
__init__(*args, temp=300.0, **kwargs)

Create a base relaxation object

Parameters

temp (float) – Temperature for the final relaxation step

See parent class for documentation

addParentalInformationProperties(struct)

Add parental subdirectory properties to the structure

Parameters

struct (schrodinger.structure.Structure) – The structure to add properties to

addTPPIfNeeded(cmd)

Add, or replace, the value of TPP in the command as needed.

Parameters

cmd (list) – The command line as a list of strings. The list is modified in-place

addVelocityIfNeeded(kwargs)

Add the velocity write keyword if there will be analysis done

Parameters

kwargs (dict) – dict of current keyword/value pairs - modified if velocity is needed

adjustCommandForQueue(cmd)

Add subhost and umbrella flags that direct this step’s subjobs to the correct host. Modifies the given command list in place.

Parameters

cmd (list) – The current command line as a list of strings

archiveFiles()

Create a tar.gz archive of all jaguar files and then removes any files that are no longer needed.

archiveSubDir()

Archive this step’s subdirectory and add it to the backend for copy back

calcsDone()

Check to see if the calculation finished

If finished and the job failed, self.ok will be set to False

Return type

bool

Returns

True if the calculation finished, False if not

canDriverUseUmbrella()

Check whether the driver for this step knows the -md_umbrella flag

Return type

bool

Returns

True if -md_umbrella is a known flag, False if not

canStart()

Check to see if this job can start - if the parent job(s) have finished successfully.

Return type

bool

Returns

True if the job can start, False if not

createCommand()

Create the command line

Return type

list

Returns

The command line in list form

Raises

JobCreationError – If the command cannot be created

createJob()

Form the command line and create a job for the queue

Return type

jobutils.RobustSubmissionJob

Returns

The job to add to the JobDJ

createQJobFromCommand(cmd)

Create the JobDJ job from the list of command line arguments. The job will be set to run in the Step subdirectory.

Return type

jobutils.RobustSubmissionJob

Returns

A job object that can be added to JobDJ

determineQueueResource(cmd)

Determine what resource this job should request

Parameters

cmd (list) – The command line as a list of strings

Return type

str or None

Returns

The resource (cpu, gpu or None) this job should request

finish()

Finish this step, including processing any output

finishProcessingJobControlJob()

Override the parent method to archive the directory if requested

getFirstOutputStructure()

Get the first output structure from the results

Return type

structure.Structure

Returns

The structure to write to the output file

getInput(override_uhf=True, override_solvent=True)

Get the JaguarInput object for this step, setting the keywords as required.

Return type

None or jaguar_input.JaguarInput

Returns

None if an error occured, or the jaguar_input.JaguarInput object to use for this step

getInputName()

Get the name of the output structure file

Return type

str

Returns

The output structure file name

getInputPath()

Get the full path to the input file

Return type

str

Returns

The full path to the input file

getMSJName()

Get the name of the MSJ file

Return type

str

Returns

The MSJ file name

getNumSplits()

Get the number of parallel workflows this step will create. A 1 indicates that this step does not split the workflow.

Return type

int

Returns

The number of parallel workflows this step creates. 1 means it does not split the workflow

getOutput(quiet=False)

Read in the results of the calculation

Parameters

quiet (bool) – If True, no error messages will be printed. If False, (default) error messages will be printed. Also, if True, self.ok will not be set to False if the output file cannot be read.

Return type

None or list

Returns

None if the calculation failed, or a list of output structures from a successful calculation.

getOutputName()

Get the name of the output structure file

Return type

str

Returns

The output structure file name

getParentalInformation()

Get information about parent and required step names, output and subdirectories.

Return type

(ParentalPathInfo, ParentalPathInfo)

Returns

The first item gives information about the parent job, the second item gives cumulative information about the required steps. In cases where there is multiple information, such as the parent output file names, or multiple required step names, etc, the data is provided as space-delimited strings. The subdirectory paths and output file names are relative to the overall job directory.

getStructForChild(index=1)

Get the structure from this step to pass on to a child step

Parameters

index (int) – The 1-based index of the structure to get. Should be 1 unless this step is splitting the workflow into parallel workflows, in which case it is the index of the workflow that will run this structure. Unused in the base class, but subclasses may use this parameter.

Return type

structure.Structure, cms.Cms, or str

Returns

The structure the child step should use. If a str is returned, it is the path to the input structure file

getStructsForWriting()

Get the output Maestro structure derived from the output CMS system

Return type

list of schrodinger.Structure

Returns

The output Maestro structure

getStructure()

Get the starting structure for this step

Overrides the parent class to get the initial structure for this workflow if the Step has no parent.

Return type

schrodinger.structure.Structure, None, or str

Returns

The starting structure for this step. None if input is not a structure. str if the starting structure is actually a file structures, in which case the return value is the path to the file.

getTrajectoryName()

Get the name of the output trajectory directory

Return type

str or None

Returns

The output trajectory directory name or None if this step does not create trajectories

handleFileLinkProperties(struct)

Fix existing Jaguar file link properties and add any new ones

Parameters

struct (structure.Structure) – The structure with the properties

log(msg, prefix=True, level=20)

Add a message to the parent workflow’s log file

Parameters
  • msg (str) – The message to add

  • prefix (bool) – Whether to add information about the workflow and step name to the front of the message string

  • level (int) – A logging constant indicating the priority level of the message

monitorFiles()

Check for any requested files that need to be copied back immediately

noJobAction()

Subclasses that do not run a job can overwrite this method to perform their action when the step is run.

property output_file_names

Get the names of all the output structures

Return type

list

Returns

Each item of the list is a the name of an output file. The step subdirectory path is NOT prepended to the file name.

periodicMaintenance()

This method is periodically called while the workflow is running

processOutput(output)

Process the output of a job during the finish part of the step

Parameters

output – The output of the job. If it evaluates to False, no processing is done. Otherwise it is unused.

processSmapInfo()

Create an smap file in the subjob directory to enable Maestro’s little blue v and s buttons if the user manually imports the subjob output. Also copy smap-eligible files to the main job directory and pass back the file information needed for writing the main job smap file.

Return type

list

Returns

Each item of the list is a file name that should appear in the main job smap file for this step.

removeIncomingProperties(struct)

Remove properties on the structure that may have come from previous steps and that we do not want to propagate through this step

Parameters

struct (structure.Structure) – The structure to remove properties from

setKeywords(input, keystring)

Set the keywords for this job

Parameters
  • input (jaguar_input.JaguarInput) – The JaguarInput object to set the keywords on

  • keystring (str) – Space separated keyword=value pairs. Each pair must contain an equals sign

setStructOrCMSProperty(nottaduck, prop, value)

Set the given property to value on nottaduck, whether nottaduck is a Structure object or CMS object

Parameters
  • nottaduck (structure.Structure or cms.Cms) – The structure-like object to set the property on

  • prop (str) – The property to set

  • value – The value of the property

setSubDir()

Determine the absolute path to this step’s subdirectory so that we can always access it no matter what the current directory is

setWAMProperty(oname, structs)

Some workflow types set the WAM property on the structure file rather than the structure. The WAM property needs to be on the structure in order for the WAM to get passed into the final structure file.

Parameters
  • oname (str) – The name of the structure file

  • structs (list) – Each item of the list is a Structure or Cms object that needs to have the WAM property set on it

start()

Start the job - create the input and write it, adding necessary output files to make sure they get copied back

storeFilenames()

Store file names associated with this job before we delete the job object

write(writer, props=None, hierarchy=None)

Add the final structure for this step to the output structure file

Parameters
  • writer (schrodinger.StructureWriter) – The writer to use to write the structure

  • props (dict) – A dictionary of property/value pairs to add to the property dictionary of this object.

  • hierarchy (list) – The project group hierarchy for this result - each item is a str

writeInput(struct)

Write the input structure file and msj file

Parameters

struct (structure.Structure or None) – The structure to write. If None it will write the input file.

writeMSJFile()

Write the MSJ file for this step

class schrodinger.application.matsci.jwsteps.CompressiveRelaxationStep(*args, temp=300.0, **kwargs)

Bases: schrodinger.application.matsci.jwsteps.BaseRelaxationStep

A step that runs a compressive relaxation protocol

STEP_NAME = 'CompressRelaxation'
JOB_BASE = 'comprelax'
getStringers()

Create the stringers that define each MD stage

Return type

str

Returns

A list of MSJStringer objects

ANALYSIS_FRAME_PERCENT = 20
ARCHIVED_INPUT = ['.in', '.mae', '.maegz']
ARCHIVED_KEEPERS = {'.smap', '.spm', '.vib', '.vis'}
BUILTIN_WF_FILE = None
CAN_CREATE_TRAJECTORY = True
COMBINER = False
DRIVER = None
DRIVER_PATH = 'driver_dir/driver.py'
FLAGS = {}
FLAGS_ADD_DOUBLE_DASH = False
FLAGS_ADD_INPUT_NAME = True
FLAGS_ADD_JOB_NAME = True
FLAGS_ADD_TPP = False
FLAGS_INPUT_NAME_FLAG = ''
OUTPUTS_CMS = True
PROCS = 1
REQUIRES_CMS_INPUT = True
REQUIRES_TRAJECTORY_INPUT = False
RESOURCE = 'gpu'
SPLITTER = False
SUBJOB_RESOURCE = 'gpu'
USES_JC = True
USES_MULTI_SUBJOBS = False
USES_THREADS = False
__init__(*args, temp=300.0, **kwargs)

Create a base relaxation object

Parameters

temp (float) – Temperature for the final relaxation step

See parent class for documentation

addParentalInformationProperties(struct)

Add parental subdirectory properties to the structure

Parameters

struct (schrodinger.structure.Structure) – The structure to add properties to

addTPPIfNeeded(cmd)

Add, or replace, the value of TPP in the command as needed.

Parameters

cmd (list) – The command line as a list of strings. The list is modified in-place

addVelocityIfNeeded(kwargs)

Add the velocity write keyword if there will be analysis done

Parameters

kwargs (dict) – dict of current keyword/value pairs - modified if velocity is needed

adjustCommandForQueue(cmd)

Add subhost and umbrella flags that direct this step’s subjobs to the correct host. Modifies the given command list in place.

Parameters

cmd (list) – The current command line as a list of strings

archiveFiles()

Create a tar.gz archive of all jaguar files and then removes any files that are no longer needed.

archiveSubDir()

Archive this step’s subdirectory and add it to the backend for copy back

calcsDone()

Check to see if the calculation finished

If finished and the job failed, self.ok will be set to False

Return type

bool

Returns

True if the calculation finished, False if not

canDriverUseUmbrella()

Check whether the driver for this step knows the -md_umbrella flag

Return type

bool

Returns

True if -md_umbrella is a known flag, False if not

canStart()

Check to see if this job can start - if the parent job(s) have finished successfully.

Return type

bool

Returns

True if the job can start, False if not

createCommand()

Create the command line

Return type

list

Returns

The command line in list form

Raises

JobCreationError – If the command cannot be created

createJob()

Form the command line and create a job for the queue

Return type

jobutils.RobustSubmissionJob

Returns

The job to add to the JobDJ

createQJobFromCommand(cmd)

Create the JobDJ job from the list of command line arguments. The job will be set to run in the Step subdirectory.

Return type

jobutils.RobustSubmissionJob

Returns

A job object that can be added to JobDJ

determineQueueResource(cmd)

Determine what resource this job should request

Parameters

cmd (list) – The command line as a list of strings

Return type

str or None

Returns

The resource (cpu, gpu or None) this job should request

finish()

Finish this step, including processing any output

finishProcessingJobControlJob()

Override the parent method to archive the directory if requested

getFirstOutputStructure()

Get the first output structure from the results

Return type

structure.Structure

Returns

The structure to write to the output file

getInput(override_uhf=True, override_solvent=True)

Get the JaguarInput object for this step, setting the keywords as required.

Return type

None or jaguar_input.JaguarInput

Returns

None if an error occured, or the jaguar_input.JaguarInput object to use for this step

getInputName()

Get the name of the output structure file

Return type

str

Returns

The output structure file name

getInputPath()

Get the full path to the input file

Return type

str

Returns

The full path to the input file

getMSJName()

Get the name of the MSJ file

Return type

str

Returns

The MSJ file name

getNumSplits()

Get the number of parallel workflows this step will create. A 1 indicates that this step does not split the workflow.

Return type

int

Returns

The number of parallel workflows this step creates. 1 means it does not split the workflow

getOutput(quiet=False)

Read in the results of the calculation

Parameters

quiet (bool) – If True, no error messages will be printed. If False, (default) error messages will be printed. Also, if True, self.ok will not be set to False if the output file cannot be read.

Return type

None or list

Returns

None if the calculation failed, or a list of output structures from a successful calculation.

getOutputName()

Get the name of the output structure file

Return type

str

Returns

The output structure file name

getParentalInformation()

Get information about parent and required step names, output and subdirectories.

Return type

(ParentalPathInfo, ParentalPathInfo)

Returns

The first item gives information about the parent job, the second item gives cumulative information about the required steps. In cases where there is multiple information, such as the parent output file names, or multiple required step names, etc, the data is provided as space-delimited strings. The subdirectory paths and output file names are relative to the overall job directory.

getStructForChild(index=1)

Get the structure from this step to pass on to a child step

Parameters

index (int) – The 1-based index of the structure to get. Should be 1 unless this step is splitting the workflow into parallel workflows, in which case it is the index of the workflow that will run this structure. Unused in the base class, but subclasses may use this parameter.

Return type

structure.Structure, cms.Cms, or str

Returns

The structure the child step should use. If a str is returned, it is the path to the input structure file

getStructsForWriting()

Get the output Maestro structure derived from the output CMS system

Return type

list of schrodinger.Structure

Returns

The output Maestro structure

getStructure()

Get the starting structure for this step

Overrides the parent class to get the initial structure for this workflow if the Step has no parent.

Return type

schrodinger.structure.Structure, None, or str

Returns

The starting structure for this step. None if input is not a structure. str if the starting structure is actually a file structures, in which case the return value is the path to the file.

getTrajectoryName()

Get the name of the output trajectory directory

Return type

str or None

Returns

The output trajectory directory name or None if this step does not create trajectories

handleFileLinkProperties(struct)

Fix existing Jaguar file link properties and add any new ones

Parameters

struct (structure.Structure) – The structure with the properties

log(msg, prefix=True, level=20)

Add a message to the parent workflow’s log file

Parameters
  • msg (str) – The message to add

  • prefix (bool) – Whether to add information about the workflow and step name to the front of the message string

  • level (int) – A logging constant indicating the priority level of the message

monitorFiles()

Check for any requested files that need to be copied back immediately

noJobAction()

Subclasses that do not run a job can overwrite this method to perform their action when the step is run.

property output_file_names

Get the names of all the output structures

Return type

list

Returns

Each item of the list is a the name of an output file. The step subdirectory path is NOT prepended to the file name.

periodicMaintenance()

This method is periodically called while the workflow is running

processOutput(output)

Process the output of a job during the finish part of the step

Parameters

output – The output of the job. If it evaluates to False, no processing is done. Otherwise it is unused.

processSmapInfo()

Create an smap file in the subjob directory to enable Maestro’s little blue v and s buttons if the user manually imports the subjob output. Also copy smap-eligible files to the main job directory and pass back the file information needed for writing the main job smap file.

Return type

list

Returns

Each item of the list is a file name that should appear in the main job smap file for this step.

removeIncomingProperties(struct)

Remove properties on the structure that may have come from previous steps and that we do not want to propagate through this step

Parameters

struct (structure.Structure) – The structure to remove properties from

setKeywords(input, keystring)

Set the keywords for this job

Parameters
  • input (jaguar_input.JaguarInput) – The JaguarInput object to set the keywords on

  • keystring (str) – Space separated keyword=value pairs. Each pair must contain an equals sign

setStructOrCMSProperty(nottaduck, prop, value)

Set the given property to value on nottaduck, whether nottaduck is a Structure object or CMS object

Parameters
  • nottaduck (structure.Structure or cms.Cms) – The structure-like object to set the property on

  • prop (str) – The property to set

  • value – The value of the property

setSubDir()

Determine the absolute path to this step’s subdirectory so that we can always access it no matter what the current directory is

setWAMProperty(oname, structs)

Some workflow types set the WAM property on the structure file rather than the structure. The WAM property needs to be on the structure in order for the WAM to get passed into the final structure file.

Parameters
  • oname (str) – The name of the structure file

  • structs (list) – Each item of the list is a Structure or Cms object that needs to have the WAM property set on it

start()

Start the job - create the input and write it, adding necessary output files to make sure they get copied back

storeFilenames()

Store file names associated with this job before we delete the job object

write(writer, props=None, hierarchy=None)

Add the final structure for this step to the output structure file

Parameters
  • writer (schrodinger.StructureWriter) – The writer to use to write the structure

  • props (dict) – A dictionary of property/value pairs to add to the property dictionary of this object.

  • hierarchy (list) – The project group hierarchy for this result - each item is a str

writeInput(struct)

Write the input structure file and msj file

Parameters

struct (structure.Structure or None) – The structure to write. If None it will write the input file.

writeMSJFile()

Write the MSJ file for this step

class schrodinger.application.matsci.jwsteps.SemiCrystalRelaxation1Step(*args, temp=300.0, **kwargs)

Bases: schrodinger.application.matsci.jwsteps.BaseRelaxationStep

A step that runs first Semi-Crystalline relaxation protocol

STEP_NAME = 'SemiCrystalRelaxation1'
JOB_BASE = 'semicrystalrelax1'
getStringers()

Create the stringers that define each MD stage

Return type

str

Returns

A list of MSJStringer objects

ANALYSIS_FRAME_PERCENT = 20
ARCHIVED_INPUT = ['.in', '.mae', '.maegz']
ARCHIVED_KEEPERS = {'.smap', '.spm', '.vib', '.vis'}
BUILTIN_WF_FILE = None
CAN_CREATE_TRAJECTORY = True
COMBINER = False
DRIVER = None
DRIVER_PATH = 'driver_dir/driver.py'
FLAGS = {}
FLAGS_ADD_DOUBLE_DASH = False
FLAGS_ADD_INPUT_NAME = True
FLAGS_ADD_JOB_NAME = True
FLAGS_ADD_TPP = False
FLAGS_INPUT_NAME_FLAG = ''
OUTPUTS_CMS = True
PROCS = 1
REQUIRES_CMS_INPUT = True
REQUIRES_TRAJECTORY_INPUT = False
RESOURCE = 'gpu'
SPLITTER = False
SUBJOB_RESOURCE = 'gpu'
USES_JC = True
USES_MULTI_SUBJOBS = False
USES_THREADS = False
__init__(*args, temp=300.0, **kwargs)

Create a base relaxation object

Parameters

temp (float) – Temperature for the final relaxation step

See parent class for documentation

addParentalInformationProperties(struct)

Add parental subdirectory properties to the structure

Parameters

struct (schrodinger.structure.Structure) – The structure to add properties to

addTPPIfNeeded(cmd)

Add, or replace, the value of TPP in the command as needed.

Parameters

cmd (list) – The command line as a list of strings. The list is modified in-place

addVelocityIfNeeded(kwargs)

Add the velocity write keyword if there will be analysis done

Parameters

kwargs (dict) – dict of current keyword/value pairs - modified if velocity is needed

adjustCommandForQueue(cmd)

Add subhost and umbrella flags that direct this step’s subjobs to the correct host. Modifies the given command list in place.

Parameters

cmd (list) – The current command line as a list of strings

archiveFiles()

Create a tar.gz archive of all jaguar files and then removes any files that are no longer needed.

archiveSubDir()

Archive this step’s subdirectory and add it to the backend for copy back

calcsDone()

Check to see if the calculation finished

If finished and the job failed, self.ok will be set to False

Return type

bool

Returns

True if the calculation finished, False if not

canDriverUseUmbrella()

Check whether the driver for this step knows the -md_umbrella flag

Return type

bool

Returns

True if -md_umbrella is a known flag, False if not

canStart()

Check to see if this job can start - if the parent job(s) have finished successfully.

Return type

bool

Returns

True if the job can start, False if not

createCommand()

Create the command line

Return type

list

Returns

The command line in list form

Raises

JobCreationError – If the command cannot be created

createJob()

Form the command line and create a job for the queue

Return type

jobutils.RobustSubmissionJob

Returns

The job to add to the JobDJ

createQJobFromCommand(cmd)

Create the JobDJ job from the list of command line arguments. The job will be set to run in the Step subdirectory.

Return type

jobutils.RobustSubmissionJob

Returns

A job object that can be added to JobDJ

determineQueueResource(cmd)

Determine what resource this job should request

Parameters

cmd (list) – The command line as a list of strings

Return type

str or None

Returns

The resource (cpu, gpu or None) this job should request

finish()

Finish this step, including processing any output

finishProcessingJobControlJob()

Override the parent method to archive the directory if requested

getFirstOutputStructure()

Get the first output structure from the results

Return type

structure.Structure

Returns

The structure to write to the output file

getInput(override_uhf=True, override_solvent=True)

Get the JaguarInput object for this step, setting the keywords as required.

Return type

None or jaguar_input.JaguarInput

Returns

None if an error occured, or the jaguar_input.JaguarInput object to use for this step