ai2_kit.domain.lasp module#
- class ai2_kit.domain.lasp.CllLaspContext(path_prefix: str, resource_manager: ai2_kit.core.resource_manager.ResourceManager, config: ai2_kit.domain.lasp.CllLaspContextConfig)[source]#
Bases:
BaseCllContext
- config: CllLaspContextConfig#
- class ai2_kit.domain.lasp.CllLaspContextConfig(*, lasp_cmd: str = 'lasp', script_template: BashTemplate, concurrency: int = 5)[source]#
Bases:
BaseModel
- concurrency: int#
- lasp_cmd: str#
- model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}#
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid'}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {'concurrency': FieldInfo(annotation=int, required=False, default=5), 'lasp_cmd': FieldInfo(annotation=str, required=False, default='lasp'), 'script_template': FieldInfo(annotation=BashTemplate, required=True)}#
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- script_template: BashTemplate#
- class ai2_kit.domain.lasp.CllLaspInput(config: ai2_kit.domain.lasp.CllLaspInputConfig, type_map: List[str], mass_map: List[float], models: List[ai2_kit.core.artifact.Artifact], new_system_files: List[ai2_kit.core.artifact.Artifact])[source]#
Bases:
object
- config: CllLaspInputConfig#
- mass_map: List[float]#
- type_map: List[str]#
- class ai2_kit.domain.lasp.CllLaspInputConfig(*, input_template: dict, potential: Potential, system_files: List[str])[source]#
Bases:
BaseModel
- class Potential(*, lammps: Optional[LammpsPotential] = None)[source]#
Bases:
BaseModel
- class LammpsPotential(*, input_template: str = 'units metal\nboundary p p p\natom_style atomic\natom_modify map yes\n\n$$read_data_section\n\n$$force_field_section\n\ncompute peratom all pressure NULL virial\n')[source]#
Bases:
BaseModel
- input_template: str#
- model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}#
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid'}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {'input_template': FieldInfo(annotation=str, required=False, default='units metal\nboundary p p p\natom_style atomic\natom_modify map yes\n\n$$read_data_section\n\n$$force_field_section\n\ncompute peratom all pressure NULL virial\n')}#
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- lammps: Optional[LammpsPotential]#
- model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}#
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid'}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {'lammps': FieldInfo(annotation=Union[CllLaspInputConfig.Potential.LammpsPotential, NoneType], required=False, default=None)}#
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- input_template: dict#
Input template for LASP
- model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}#
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid'}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields: ClassVar[dict[str, FieldInfo]] = {'input_template': FieldInfo(annotation=dict, required=True), 'potential': FieldInfo(annotation=CllLaspInputConfig.Potential, required=True), 'system_files': FieldInfo(annotation=List[str], required=True)}#
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- system_files: List[str]#
Initial system files to explore
- class ai2_kit.domain.lasp.CllLaspOutput(output_dirs: List[ai2_kit.core.artifact.Artifact])[source]#
Bases:
ICllExploreOutput
- class ai2_kit.domain.lasp.LammpsInputTemplate(template)[source]#
Bases:
Template
- delimiter = '$$'#
- pattern = re.compile('\n \\$\\$(?:\n (?P<escaped>\\$\\$) | # Escape sequence of two delimiters\n (?P<named>(?a:[_a-z][_a-z0-9]*)) | # delimiter and a Python identifier\n , re.IGNORECASE|re.VERBOSE)#
- async ai2_kit.domain.lasp.cll_lasp(input: CllLaspInput, ctx: CllLaspContext)[source]#
- ai2_kit.domain.lasp.make_lasp_task_dirs(systems: List[ArtifactDict], lasp_in_data: dict, base_dir: str, type_map: List[str], mass_map: List[float], dp_models: List[str], lammps_input_template: Optional[str]) List[ArtifactDict] [source]#
- ai2_kit.domain.lasp.process_lasp_output(task_dir: str, file_name='structures.xyz')[source]#
Align lasp output with model_devi records.
As allstr.arc contains all the structures generated by LASP, we need to use the result of lasp.out for alignment.
The following code is copy from ChecMate, may need to be refactored