ai2_kit.domain.lasp module

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]#
models: List[Artifact]#
new_system_files: List[Artifact]#
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.

potential: Potential#
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

get_model_devi_dataset() List[Artifact][source]#
output_dirs: List[Artifact]#
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

ai2_kit.domain.lasp.process_lasp_outputs(task_dirs: List[str], workers: int = 4)[source]#