def get_sub_workchain_builder(self, scale_factor, reference_workchain=None): """Return the builder for the relax workchain.""" structure = scale_structure(self.inputs.structure, scale_factor) process_class = WorkflowFactory(self.inputs.sub_process_class) builder = process_class.get_input_generator().get_builder( structure, reference_workchain=reference_workchain, **self.inputs.generator_inputs ) builder._update(**self.inputs.get('sub_process', {})) # pylint: disable=protected-access return builder, structure
def get_sub_workchain_builder(self, distance, reference_workchain=None): """Return the builder for the relax workchain.""" molecule = set_distance(self.inputs.molecule, distance) process_class = WorkflowFactory(self.inputs.sub_process_class) builder = process_class.get_input_generator().get_builder( molecule, reference_workchain=reference_workchain, **self.inputs.generator_inputs ) builder._update(**self.inputs.get('sub_process', {})) # pylint: disable=protected-access distance_node = molecule.creator.inputs.distance return builder, distance_node
def validate_inputs(value, _): """Validate the entire input namespace.""" if 'scale_factors' not in value: if 'scale_count' not in value or 'scale_increment' not in value: return 'neither `scale_factors` nor the pair of `scale_count` and `scale_increment` were defined.' # Validate that the provided ``generator_inputs`` are valid for the associated input generator. process_class = WorkflowFactory(value['sub_process_class']) generator = process_class.get_input_generator() try: generator.get_builder(structure=value['structure'], **value['generator_inputs']) except Exception as exc: # pylint: disable=broad-except return f'`{generator.__class__.__name__}.get_builder()` fails for the provided `generator_inputs`: {exc}'
def validate_inputs(value, _): """Validate the entire input namespace.""" if 'distances' not in value: if any(key not in value for key in ['distances_count', 'distance_min', 'distance_max']): return 'neither `distances` nor the `distances_count`, `distance_min`, and `distance_max` set were defined.' if value['distance_min'] >= value['distance_max']: return '`distance_min` must be smaller than `distance_max`' # Validate that the provided ``generator_inputs`` are valid for the associated input generator. process_class = WorkflowFactory(value['sub_process_class']) generator = process_class.get_input_generator() try: generator.get_builder(structure=value['molecule'], **value['generator_inputs']) except Exception as exc: # pylint: disable=broad-except return f'`{generator.__class__.__name__}.get_builder()` fails for the provided `generator_inputs`: {exc}'