From bbfbbe1754bada9114b74d60cd7de3d0b9a9b054 Mon Sep 17 00:00:00 2001 From: Zhuoyuan <75076820+ZLI-afk@users.noreply.github.com> Date: Wed, 17 Apr 2024 17:45:26 +0800 Subject: [PATCH 01/35] fix: minor error --- apex/archive.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apex/archive.py b/apex/archive.py index ff175a4..5dbe507 100644 --- a/apex/archive.py +++ b/apex/archive.py @@ -199,7 +199,7 @@ def archive2db_from_json(config, json_file): if config.archive_key: data_id = config.archive_key else: - data_id = str(data_dict["work_path"]) + data_id = data_dict['archive_key'] data_dict['_id'] = data_id archive2db(config, data_dict, data_id) From 6ed652228568b551657ffd06a83d0ecd83249b7c Mon Sep 17 00:00:00 2001 From: Zhuoyuan <75076820+ZLI-afk@users.noreply.github.com> Date: Wed, 17 Apr 2024 17:47:49 +0800 Subject: [PATCH 02/35] feat(elastic): support auto modification of input relaxed POSCAR-structure into IEEE-standard format before elastic deformation in Elastic.py --- apex/core/property/Elastic.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/apex/core/property/Elastic.py b/apex/core/property/Elastic.py index 5d27ddf..a9b4d94 100644 --- a/apex/core/property/Elastic.py +++ b/apex/core/property/Elastic.py @@ -10,6 +10,9 @@ from pymatgen.analysis.elasticity.strain import DeformedStructureSet, Strain from pymatgen.analysis.elasticity.stress import Stress from pymatgen.core.structure import Structure +from pymatgen.core.tensors import Tensor +from pymatgen.core.operations import SymmOp +from pymatgen.core.lattice import Lattice from pymatgen.io.vasp import Incar, Kpoints from apex.core.calculator.lib import abacus_utils @@ -32,6 +35,8 @@ def __init__(self, parameter, inter_param=None): self.shear_deform = parameter["shear_deform"] parameter.setdefault("conventional", False) self.conventional = parameter["conventional"] + parameter.setdefault("ieee", True) + self.ieee = parameter["ieee"] parameter.setdefault("cal_type", "relaxation") self.cal_type = parameter["cal_type"] default_cal_setting = { @@ -141,6 +146,12 @@ def make_confs(self, path_to_work, path_to_equi, refine=False): ss = st.conventional_structure ss.to(os.path.join(path_to_work, "POSCAR.conv"), "POSCAR") + # convert to IEEE-standard + if self.ieee: + rot = Tensor.get_ieee_rotation(ss) + op = SymmOp.from_rotation_and_translation(rot) + ss.apply_operation(op) + dfm_ss = DeformedStructureSet( ss, symmetry=False, From 13671ecee47ed895762c0bde268013043110cf1e Mon Sep 17 00:00:00 2001 From: Zhuoyuan <75076820+ZLI-afk@users.noreply.github.com> Date: Wed, 17 Apr 2024 17:53:13 +0800 Subject: [PATCH 03/35] feat(elastic): support auto modification of input relaxed POSCAR-structure into IEEE-standard format before elastic deformation in Elastic.py --- README.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index f03c670..fd892d0 100644 --- a/README.md +++ b/README.md @@ -252,11 +252,12 @@ Below are three examples (for detailed explanations of each parameter, please re | vol_abs | Bool | False | Whether to treat vol_start and vol_end as absolute volume, default = False | ##### 3.1.2.2. Elastic - | Key words | Data structure | Example | Description | - |:-------------|----------------|---------|----------------------------------------------------| - | norm_deform | Float | 0.01 | The deformation in xx, yy, zz, defaul = 1e-2 | - | shear_deform | Float | 0.01 | The deformation in other directions, default = 1e-2 | - | conventional | Bool | False | Whether adopt conventional cell for deformation | + | Key words | Data structure | Example | Description | + |:-------------|----------------|---------|-----------------------------------------------------------------------------------------------------------------------------------| + | norm_deform | Float | 0.01 | The deformation in xx, yy, zz, defaul = 1e-2 | + | shear_deform | Float | 0.01 | The deformation in other directions, default = 1e-2 | + | conventional | Bool | False | Whether adopt conventional cell for deformation | + | ieee | Bool | True | Whether rotate relaxed structure into IEEE-standard format before deformation ([ref](https://ieeexplore.ieee.org/document/26560)) | ##### 3.1.2.3. Surface | Key words | Data structure | Example | Description | From fb25a9fcdd633d431c23d0f5022cfc36b4e3e1d8 Mon Sep 17 00:00:00 2001 From: Zhuoyuan <75076820+ZLI-afk@users.noreply.github.com> Date: Wed, 17 Apr 2024 17:59:07 +0800 Subject: [PATCH 04/35] feat(elastic): support auto modification of input relaxed POSCAR-structure into IEEE-standard format before elastic deformation in Elastic.py --- apex/core/property/Elastic.py | 1 - 1 file changed, 1 deletion(-) diff --git a/apex/core/property/Elastic.py b/apex/core/property/Elastic.py index a9b4d94..f0a524f 100644 --- a/apex/core/property/Elastic.py +++ b/apex/core/property/Elastic.py @@ -12,7 +12,6 @@ from pymatgen.core.structure import Structure from pymatgen.core.tensors import Tensor from pymatgen.core.operations import SymmOp -from pymatgen.core.lattice import Lattice from pymatgen.io.vasp import Incar, Kpoints from apex.core.calculator.lib import abacus_utils From 74eeede5e6cdd6aa3d942f085a999f4c7fff193a Mon Sep 17 00:00:00 2001 From: Zhuoyuan <75076820+ZLI-afk@users.noreply.github.com> Date: Thu, 18 Apr 2024 13:35:38 +0800 Subject: [PATCH 05/35] test only --- apex/core/property/Elastic.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/apex/core/property/Elastic.py b/apex/core/property/Elastic.py index f0a524f..de69bbd 100644 --- a/apex/core/property/Elastic.py +++ b/apex/core/property/Elastic.py @@ -4,7 +4,7 @@ import re from shutil import copyfile -import numpy as np +import dpdata from monty.serialization import dumpfn, loadfn from pymatgen.analysis.elasticity.elastic import ElasticTensor from pymatgen.analysis.elasticity.strain import DeformedStructureSet, Strain @@ -150,6 +150,7 @@ def make_confs(self, path_to_work, path_to_equi, refine=False): rot = Tensor.get_ieee_rotation(ss) op = SymmOp.from_rotation_and_translation(rot) ss.apply_operation(op) + ss.to(os.path.join(path_to_work, "POSCAR.ieee"), "POSCAR") dfm_ss = DeformedStructureSet( ss, @@ -177,9 +178,12 @@ def make_confs(self, path_to_work, path_to_equi, refine=False): os.remove(jj) task_list.append(output_task) dfm_ss.deformed_structures[ii].to("POSCAR", "POSCAR") + sys = dpdata.System("POSCAR", fmt='vasp/poscar') + os.remove("POSCAR") + sys.to("vasp/poscar", "poscar") if self.inter_param["type"] == "abacus": abacus_utils.poscar2stru("POSCAR", self.inter_param, "STRU") - os.remove("POSCAR") + #os.remove("POSCAR") # record strain df = Strain.from_deformation(dfm_ss.deformations[ii]) dumpfn(df.as_dict(), "strain.json", indent=4) From d0c296727fde59c7442bebb74891b8fdf11931a5 Mon Sep 17 00:00:00 2001 From: Zhuoyuan <75076820+ZLI-afk@users.noreply.github.com> Date: Thu, 18 Apr 2024 13:50:21 +0800 Subject: [PATCH 06/35] test only --- apex/core/property/Elastic.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apex/core/property/Elastic.py b/apex/core/property/Elastic.py index de69bbd..aa17511 100644 --- a/apex/core/property/Elastic.py +++ b/apex/core/property/Elastic.py @@ -179,8 +179,7 @@ def make_confs(self, path_to_work, path_to_equi, refine=False): task_list.append(output_task) dfm_ss.deformed_structures[ii].to("POSCAR", "POSCAR") sys = dpdata.System("POSCAR", fmt='vasp/poscar') - os.remove("POSCAR") - sys.to("vasp/poscar", "poscar") + sys.to("vasp/poscar", "POSCAR") if self.inter_param["type"] == "abacus": abacus_utils.poscar2stru("POSCAR", self.inter_param, "STRU") #os.remove("POSCAR") From cf2f43253f2b1e13a6016c76deb2766fdaf7f760 Mon Sep 17 00:00:00 2001 From: Zhuoyuan <75076820+ZLI-afk@users.noreply.github.com> Date: Thu, 18 Apr 2024 16:33:15 +0800 Subject: [PATCH 07/35] undo test commit --- apex/core/property/Elastic.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/apex/core/property/Elastic.py b/apex/core/property/Elastic.py index aa17511..ab55a24 100644 --- a/apex/core/property/Elastic.py +++ b/apex/core/property/Elastic.py @@ -178,8 +178,6 @@ def make_confs(self, path_to_work, path_to_equi, refine=False): os.remove(jj) task_list.append(output_task) dfm_ss.deformed_structures[ii].to("POSCAR", "POSCAR") - sys = dpdata.System("POSCAR", fmt='vasp/poscar') - sys.to("vasp/poscar", "POSCAR") if self.inter_param["type"] == "abacus": abacus_utils.poscar2stru("POSCAR", self.inter_param, "STRU") #os.remove("POSCAR") From 037ae1928c767db4ce96664d089f3b8d1c8101e2 Mon Sep 17 00:00:00 2001 From: Zhuoyuan <75076820+ZLI-afk@users.noreply.github.com> Date: Sun, 21 Apr 2024 19:37:15 +0800 Subject: [PATCH 08/35] change: set default of ieee to be False in Elastic.py --- apex/core/property/Elastic.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apex/core/property/Elastic.py b/apex/core/property/Elastic.py index ab55a24..64364f0 100644 --- a/apex/core/property/Elastic.py +++ b/apex/core/property/Elastic.py @@ -34,7 +34,7 @@ def __init__(self, parameter, inter_param=None): self.shear_deform = parameter["shear_deform"] parameter.setdefault("conventional", False) self.conventional = parameter["conventional"] - parameter.setdefault("ieee", True) + parameter.setdefault("ieee", False) self.ieee = parameter["ieee"] parameter.setdefault("cal_type", "relaxation") self.cal_type = parameter["cal_type"] From 8250da4ecb63106311b8b2d65d619e1f6addcf55 Mon Sep 17 00:00:00 2001 From: Zhuoyuan <75076820+ZLI-afk@users.noreply.github.com> Date: Mon, 22 Apr 2024 17:17:32 +0800 Subject: [PATCH 09/35] fix: unexpect termination of relaxation monitoring loop --- apex/flow.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apex/flow.py b/apex/flow.py index a19dcd5..ad264d3 100644 --- a/apex/flow.py +++ b/apex/flow.py @@ -77,7 +77,10 @@ def _monitor_relax(self): wf_status = self.workflow.query_status() if wf_status == 'Failed': raise RuntimeError(f'Workflow failed (ID: {self.workflow.id}, UID: {self.workflow.uid})') - relax_post = step_info.get_step(name='relaxation-cal')[0] + try: + relax_post = step_info.get_step(name='relaxation-cal')[0] + except IndexError: + continue if relax_post['phase'] == 'Succeeded': print(f'Relaxation finished (ID: {self.workflow.id}, UID: {self.workflow.uid})') print('Retrieving completed tasks to local...') From d0e2904067dd808aa46746c5b74cc284114f052c Mon Sep 17 00:00:00 2001 From: Zhuoyuan <75076820+ZLI-afk@users.noreply.github.com> Date: Mon, 22 Apr 2024 19:40:42 +0800 Subject: [PATCH 10/35] change: turn on default ieee translation --- apex/core/property/Elastic.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apex/core/property/Elastic.py b/apex/core/property/Elastic.py index 64364f0..b6bcd22 100644 --- a/apex/core/property/Elastic.py +++ b/apex/core/property/Elastic.py @@ -4,7 +4,6 @@ import re from shutil import copyfile -import dpdata from monty.serialization import dumpfn, loadfn from pymatgen.analysis.elasticity.elastic import ElasticTensor from pymatgen.analysis.elasticity.strain import DeformedStructureSet, Strain @@ -34,7 +33,7 @@ def __init__(self, parameter, inter_param=None): self.shear_deform = parameter["shear_deform"] parameter.setdefault("conventional", False) self.conventional = parameter["conventional"] - parameter.setdefault("ieee", False) + parameter.setdefault("ieee", True) self.ieee = parameter["ieee"] parameter.setdefault("cal_type", "relaxation") self.cal_type = parameter["cal_type"] From 0ca18b80576ddba5871980a869379551f4d9ca16 Mon Sep 17 00:00:00 2001 From: Zhuoyuan <75076820+ZLI-afk@users.noreply.github.com> Date: Wed, 24 Apr 2024 16:33:30 +0800 Subject: [PATCH 11/35] feat(change): add `flow_name` to submit sub-mode for specification of workflow name; change default workflow name from flow type to workdir basename --- apex/config.py | 5 ++++- apex/flow.py | 29 ++++++++++++++++++++++++++--- apex/main.py | 6 ++++++ apex/submit.py | 10 ++++++++++ 4 files changed, 46 insertions(+), 4 deletions(-) diff --git a/apex/config.py b/apex/config.py index a9c15bb..21ba1cb 100644 --- a/apex/config.py +++ b/apex/config.py @@ -50,7 +50,7 @@ class Config: remote_password: str = None port: int = 22 - # calculator config + # basic run config run_image_name: str = None run_command: str = None apex_image_name: str = "zhuoyli/apex_amd64" @@ -63,8 +63,11 @@ class Config: vasp_run_command: str = None abacus_image_name: str = None abacus_run_command: str = None + + # common APEX config is_bohrium_dflow: bool = False submit_only: bool = False + flow_name: str = None database_type: str = 'local' archive_method: str = 'sync' diff --git a/apex/flow.py b/apex/flow.py index ad264d3..1e502e6 100644 --- a/apex/flow.py +++ b/apex/flow.py @@ -69,6 +69,23 @@ def __init__( self.executor = executor self.upload_python_packages = upload_python_packages + @staticmethod + def regulate_name(name): + """ + Adjusts the given workflow name to conform to RFC 1123 subdomain requirements. + It ensures the name is lowercase, contains only alphanumeric characters and hyphens, + and starts and ends with an alphanumeric character. + """ + # lowercase the name + name = name.lower() + # substitute invalid characters with hyphens + name = re.sub(r'[^a-z0-9\-]', '-', name) + # make sure the name starts and ends with an alphanumeric character + name = re.sub(r'^[^a-z0-9]+', '', name) + name = re.sub(r'[^a-z0-9]+$', '', name) + + return name + def _monitor_relax(self): print('Waiting for relaxation result...') while True: @@ -249,12 +266,14 @@ def submit_relax( download_path: Union[os.PathLike, str], relax_parameter: dict, submit_only: bool = False, + name: Optional[str] = None, labels: Optional[dict] = None ) -> str: self.upload_path = upload_path self.download_path = download_path self.relax_param = relax_parameter - self.workflow = Workflow(name='relaxation', labels=labels) + flow_name = name if name else self.regulate_name(os.path.basename(download_path)) + self.workflow = Workflow(name=flow_name, labels=labels) relaxation = self._set_relax_flow( input_work_dir=upload_artifact(upload_path), relax_parameter=relax_parameter @@ -275,12 +294,14 @@ def submit_props( download_path: Union[os.PathLike, str], props_parameter: dict, submit_only: bool = False, + name: Optional[str] = None, labels: Optional[dict] = None ) -> str: self.upload_path = upload_path self.download_path = download_path self.props_param = props_parameter - self.workflow = Workflow(name='property', labels=labels) + flow_name = name if name else self.regulate_name(os.path.basename(download_path)) + self.workflow = Workflow(name=flow_name, labels=labels) subprops_list, subprops_key_list = self._set_props_flow( input_work_dir=upload_artifact(upload_path), props_parameter=props_parameter @@ -302,13 +323,15 @@ def submit_joint( relax_parameter: dict, props_parameter: dict, submit_only: bool = False, + name: Optional[str] = None, labels: Optional[dict] = None ) -> str: self.upload_path = upload_path self.download_path = download_path self.relax_param = relax_parameter self.props_param = props_parameter - self.workflow = Workflow(name='joint', labels=labels) + flow_name = name if name else self.regulate_name(os.path.basename(download_path)) + self.workflow = Workflow(name=flow_name, labels=labels) relaxation = self._set_relax_flow( input_work_dir=upload_artifact(upload_path), relax_parameter=self.relax_param diff --git a/apex/main.py b/apex/main.py index 55b8ade..8009127 100644 --- a/apex/main.py +++ b/apex/main.py @@ -76,6 +76,11 @@ def parse_args(): choices=['relax', 'props', 'joint'], help="(Optional) Specify type of workflow to submit: (relax | props | joint)" ) + parser_submit.add_argument( + "-n", "--name", + type=str, default=None, + help="(Optional) Specify name of the workflow", + ) ########################################## # Do single step locally @@ -526,6 +531,7 @@ def main(): config_file=args.config, work_dirs=args.work, indicated_flow_type=args.flow, + flow_name=args.name, submit_only=args.submit_only, is_debug=args.debug ) diff --git a/apex/submit.py b/apex/submit.py index ab2ebdb..0aa2a05 100644 --- a/apex/submit.py +++ b/apex/submit.py @@ -131,6 +131,7 @@ def submit( ) flow_id = None + flow_name = wf_config.flow_name submit_only = wf_config.submit_only if flow_type == 'relax': flow_id = flow.submit_relax( @@ -138,6 +139,7 @@ def submit( download_path=work_dir, relax_parameter=relax_param, submit_only=submit_only, + name=flow_name, labels=labels ) elif flow_type == 'props': @@ -146,6 +148,7 @@ def submit( download_path=work_dir, props_parameter=props_param, submit_only=submit_only, + name=flow_name, labels=labels ) elif flow_type == 'joint': @@ -155,6 +158,7 @@ def submit( props_parameter=props_param, relax_parameter=relax_param, submit_only=submit_only, + name=flow_name, labels=labels ) @@ -169,6 +173,7 @@ def submit_workflow( config_dict: dict, work_dirs: List[os.PathLike], indicated_flow_type: str, + flow_name: str = None, submit_only=False, is_debug=False, labels=None @@ -188,6 +193,9 @@ def submit_workflow( config["debug_workdir"] = config_dict.get("debug_workdir", tmp_work_dir.name) s3_config["storage_client"] = None + if flow_name: + wf_config.flow_name = flow_name + # judge basic flow info from user indicated parameter files (run_op, calculator, flow_type, relax_param, props_param) = judge_flow(parameter_dicts, indicated_flow_type) @@ -269,6 +277,7 @@ def submit_from_args( config_file: os.PathLike, work_dirs, indicated_flow_type: str, + flow_name: str = None, submit_only=False, is_debug=False, ): @@ -278,6 +287,7 @@ def submit_from_args( config_dict=load_config_file(config_file), work_dirs=work_dirs, indicated_flow_type=indicated_flow_type, + flow_name=flow_name, submit_only=submit_only, is_debug=is_debug, ) From 06996170588eb15f4194a709b98345e566f74c8e Mon Sep 17 00:00:00 2001 From: Zhuoyuan <75076820+ZLI-afk@users.noreply.github.com> Date: Wed, 24 Apr 2024 16:34:26 +0800 Subject: [PATCH 12/35] change: change default of `ieee` to False in Elastic.py --- apex/core/property/Elastic.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apex/core/property/Elastic.py b/apex/core/property/Elastic.py index b6bcd22..e0f63b4 100644 --- a/apex/core/property/Elastic.py +++ b/apex/core/property/Elastic.py @@ -33,7 +33,7 @@ def __init__(self, parameter, inter_param=None): self.shear_deform = parameter["shear_deform"] parameter.setdefault("conventional", False) self.conventional = parameter["conventional"] - parameter.setdefault("ieee", True) + parameter.setdefault("ieee", False) self.ieee = parameter["ieee"] parameter.setdefault("cal_type", "relaxation") self.cal_type = parameter["cal_type"] From 37f793c83237a9cc36dade9408db2492a8b787ed Mon Sep 17 00:00:00 2001 From: Zhuoyuan <75076820+ZLI-afk@users.noreply.github.com> Date: Wed, 24 Apr 2024 16:44:10 +0800 Subject: [PATCH 13/35] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index fd892d0..4863b39 100644 --- a/README.md +++ b/README.md @@ -109,7 +109,8 @@ The instructions regarding global configuration, [dflow](https://github.com/deep | group_size | Int | 1 | Number of tasks per parallel run group | | pool_size | Int | 1 | For multi tasks per parallel group, the pool size of multiprocessing pool to handle each task (1 for serial, -1 for infinity) | | upload_python_package | Optional[List] | None | Additional python packages required in the container | - | debug_pool_workers | Int | 1 | Pool size of parallel tasks running in the debug mode | + | debug_pool_workers | Int | 1 | Pool size of parallel tasks running in the debug mode | + | flow_name | String | None | Specify name of workflow to be submitted (default: work path name) | | submit_only | Bool | False | Submit workflow only without automatic result retrieving | * **Dflow config** From 0ec7455c1999510745fb298af0a94b2cbb1a10da Mon Sep 17 00:00:00 2001 From: Zhuoyuan <75076820+ZLI-afk@users.noreply.github.com> Date: Wed, 24 Apr 2024 16:51:43 +0800 Subject: [PATCH 14/35] change(minor): add `flow_type` to default `flow_name` --- apex/flow.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/apex/flow.py b/apex/flow.py index 1e502e6..6d00180 100644 --- a/apex/flow.py +++ b/apex/flow.py @@ -273,6 +273,7 @@ def submit_relax( self.download_path = download_path self.relax_param = relax_parameter flow_name = name if name else self.regulate_name(os.path.basename(download_path)) + flow_name += '-relax' self.workflow = Workflow(name=flow_name, labels=labels) relaxation = self._set_relax_flow( input_work_dir=upload_artifact(upload_path), @@ -301,6 +302,7 @@ def submit_props( self.download_path = download_path self.props_param = props_parameter flow_name = name if name else self.regulate_name(os.path.basename(download_path)) + flow_name += '-props' self.workflow = Workflow(name=flow_name, labels=labels) subprops_list, subprops_key_list = self._set_props_flow( input_work_dir=upload_artifact(upload_path), @@ -331,6 +333,7 @@ def submit_joint( self.relax_param = relax_parameter self.props_param = props_parameter flow_name = name if name else self.regulate_name(os.path.basename(download_path)) + flow_name += '-joint' self.workflow = Workflow(name=flow_name, labels=labels) relaxation = self._set_relax_flow( input_work_dir=upload_artifact(upload_path), From be475c51f993000935ebd6abdab5d2fe617b4664 Mon Sep 17 00:00:00 2001 From: Zhuoyuan <75076820+ZLI-afk@users.noreply.github.com> Date: Fri, 26 Apr 2024 13:25:23 +0800 Subject: [PATCH 15/35] change(minor): turn of defult `ieee` correction in Elastic.py --- apex/core/property/Elastic.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apex/core/property/Elastic.py b/apex/core/property/Elastic.py index e0f63b4..b6bcd22 100644 --- a/apex/core/property/Elastic.py +++ b/apex/core/property/Elastic.py @@ -33,7 +33,7 @@ def __init__(self, parameter, inter_param=None): self.shear_deform = parameter["shear_deform"] parameter.setdefault("conventional", False) self.conventional = parameter["conventional"] - parameter.setdefault("ieee", False) + parameter.setdefault("ieee", True) self.ieee = parameter["ieee"] parameter.setdefault("cal_type", "relaxation") self.cal_type = parameter["cal_type"] From d5106b463cbe28ad02a05b677ea208859b009e9e Mon Sep 17 00:00:00 2001 From: Zhuoyuan <75076820+ZLI-afk@users.noreply.github.com> Date: Sat, 27 Apr 2024 00:57:00 +0800 Subject: [PATCH 16/35] fix: reporter AttributeError by popping out `archive_key` from load dict from all_results.json in report.py --- apex/report.py | 1 + 1 file changed, 1 insertion(+) diff --git a/apex/report.py b/apex/report.py index 79249d7..873beda 100644 --- a/apex/report.py +++ b/apex/report.py @@ -50,6 +50,7 @@ def report_local(input_path_list): data_dict = loadfn(kk) try: workdir_id = data_dict.pop('work_path') + _ = data_dict.pop('archive_key') except KeyError: logging.warning(msg=f'Invalid json for result archive, will skip: {kk}') continue From 85415cf357daac8e1c7d0b957db91fd1869c88f2 Mon Sep 17 00:00:00 2001 From: Zhuoyuan <75076820+ZLI-afk@users.noreply.github.com> Date: Sat, 27 Apr 2024 16:58:02 +0800 Subject: [PATCH 17/35] feat: simplify tmp upload dirs --- apex/utils.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/apex/utils.py b/apex/utils.py index bf7fff2..7cf495a 100644 --- a/apex/utils.py +++ b/apex/utils.py @@ -42,13 +42,20 @@ def generate_random_string(length): return random_string -def copy_all_other_files(src_dir, dst_dir, ignore_list=None) -> None: +def copy_all_other_files( + src_dir, + dst_dir, + exclude_files=[], + include_dirs=[] +) -> None: """ - Copies all files from the source directory to the destination directory with some files excluded. + Copies all files from the source directory to the destination directory with some files excluded + and some directories included. :param src_dir: The path to the source directory. :param dst_dir: The path to the destination directory. - :ignore_list: files to be ignored. + :exclude_files: files to be ignored. + :include_dirs: directories to be included. """ if not os.path.exists(src_dir): raise FileNotFoundError(f"Source directory {src_dir} does not exist.") @@ -57,14 +64,12 @@ def copy_all_other_files(src_dir, dst_dir, ignore_list=None) -> None: os.makedirs(dst_dir) for item in os.listdir(src_dir): - if ignore_list and item in ignore_list: - continue src_path = os.path.join(src_dir, item) dst_path = os.path.join(dst_dir, item) - if os.path.isfile(src_path): + if os.path.isfile(src_path) and item not in exclude_files: shutil.copy2(src_path, dst_path) - elif os.path.isdir(src_path): + elif os.path.isdir(src_path) and item in include_dirs: shutil.copytree(src_path, dst_path) From cdc0e2b096cd81cf7a42ff5d36421bd773b9fdb5 Mon Sep 17 00:00:00 2001 From: Zhuoyuan <75076820+ZLI-afk@users.noreply.github.com> Date: Sat, 27 Apr 2024 17:00:13 +0800 Subject: [PATCH 18/35] feat: simplify tmp upload dirs --- apex/submit.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/apex/submit.py b/apex/submit.py index 0aa2a05..27b5d50 100644 --- a/apex/submit.py +++ b/apex/submit.py @@ -41,6 +41,15 @@ def pack_upload_dir( os.chdir(work_dir) relax_confs = relax_param.get("structures", []) if relax_param else [] prop_confs = prop_param.get("structures", []) if prop_param else [] + relax_prefix = relax_param["interaction"].get("potcar_prefix", None) if relax_param else None + prop_prefix = prop_param["interaction"].get("potcar_prefix", None) if prop_param else None + include_dirs = set() + if relax_prefix: + relax_prefix_base = relax_prefix.split('/')[0] + include_dirs.add(relax_prefix_base) + if prop_prefix: + prop_prefix_base = prop_prefix.split('/')[0] + include_dirs.add(prop_prefix_base) confs = relax_confs + prop_confs assert len(confs) > 0, "No configuration path indicated!" conf_dirs = [] @@ -66,13 +75,11 @@ def pack_upload_dir( backup_path(path_to_prop) """copy necessary files and directories into temp upload directory""" - # exclude 'all_result.json' from copy - conf_root_list = [conf.split('/')[0] for conf in conf_dirs] - conf_root_list = list(set(conf_root_list)) - conf_root_list.sort() - ignore_copy_list = conf_root_list - ignore_copy_list.append("all_result.json") - copy_all_other_files(work_dir, upload_dir, ignore_list=ignore_copy_list) + copy_all_other_files( + work_dir, upload_dir, + exclude_files=["all_result.json"], + include_dirs=list(include_dirs) + ) for ii in conf_dirs: build_conf_path = os.path.join(upload_dir, ii) os.makedirs(build_conf_path, exist_ok=True) From 9d30174b591f41642977f44202b6e9cbfe468b85 Mon Sep 17 00:00:00 2001 From: Zhuoyuan <75076820+ZLI-afk@users.noreply.github.com> Date: Sun, 28 Apr 2024 13:08:59 +0800 Subject: [PATCH 19/35] add nightly version tag --- apex/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apex/__init__.py b/apex/__init__.py index d810b1f..72faa07 100644 --- a/apex/__init__.py +++ b/apex/__init__.py @@ -1,5 +1,5 @@ import os -__version__ = '1.2.0' +__version__ = '1.2.0.nightly-2024-04-28' LOCAL_PATH = os.getcwd() From b33c8fc5ead80072ba6b101d9eb3e861ae5d3270 Mon Sep 17 00:00:00 2001 From: Zhuoyuan <75076820+ZLI-afk@users.noreply.github.com> Date: Tue, 30 Apr 2024 13:28:10 +0800 Subject: [PATCH 20/35] add doi badge --- README.md | 4 ++++ apex/__init__.py | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4863b39..49ab8ab 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,10 @@ * Add four additional **ML** pair styles (`snap`, `gap`, `rann` and `mace`) and an extra `meam-spline` in LAMMPS interation type support * Modify the single-step run command from `test` to `do` for improved clarity and consistencey +## How to cite APEX +If you use APEX in your research, please cite the following paper: +[![](https://img.shields.io/badge/{doi}-{arXiv:2404.17330}-{blue}.svg)]({https://doi.org/10.48550/arXiv.2404.17330}) + ## Table of Contents - [APEX: Alloy Property EXplorer](#apex-alloy-property-explorer) diff --git a/apex/__init__.py b/apex/__init__.py index 72faa07..d810b1f 100644 --- a/apex/__init__.py +++ b/apex/__init__.py @@ -1,5 +1,5 @@ import os -__version__ = '1.2.0.nightly-2024-04-28' +__version__ = '1.2.0' LOCAL_PATH = os.getcwd() From 8826c09a14de6d2533f6e75922e5e64101ed93f1 Mon Sep 17 00:00:00 2001 From: Zhuoyuan <75076820+ZLI-afk@users.noreply.github.com> Date: Tue, 30 Apr 2024 13:32:30 +0800 Subject: [PATCH 21/35] add doi badge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 49ab8ab..3448fe6 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ ## How to cite APEX If you use APEX in your research, please cite the following paper: -[![](https://img.shields.io/badge/{doi}-{arXiv:2404.17330}-{blue}.svg)]({https://doi.org/10.48550/arXiv.2404.17330}) +[![](https://img.shields.io/badge/doi-arXiv:2404.17330-blue.svg)](https://doi.org/10.48550/arXiv.2404.17330) ## Table of Contents From 16ff500b7c0c4a39d8cbcee795f81d3fb871760a Mon Sep 17 00:00:00 2001 From: Zhuoyuan <75076820+ZLI-afk@users.noreply.github.com> Date: Tue, 30 Apr 2024 13:37:36 +0800 Subject: [PATCH 22/35] add doi badge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3448fe6..aed60d4 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ # APEX: Alloy Property EXplorer [APEX](https://github.com/deepmodeling/APEX): Alloy Property EXplorer is a component of the [AI Square](https://aissquare.com/) project that involves the restructuring of the [DP-GEN](https://github.com/deepmodeling/dpgen) `auto_test` module to develop a versatile and extensible Python package for general alloy property calculations. This package enables users to conveniently establish a wide range of cloud-native property-test workflows by utilizing various computational approaches, including LAMMPS, VASP, ABACUS, and others. - +[![](https://img.shields.io/badge/release-1.2.0-blue.svg)](https://github.com/deepmodeling/APEX) [![](https://img.shields.io/badge/doi-arXiv:2404.17330-red.svg)](https://doi.org/10.48550/arXiv.2404.17330) * Add a `retrieve` sub-command to allow results to be retrieved independently and manually for multiple properties (Remove `Distributor` and `Collector` OP) * Support common **dflow operations** with terminal commands * Incorporate results `archive` function to both local paths and NoSQL database ([MongoDB](https://www.mongodb.com/) and [DynamoDB](https://aws.amazon.com/cn/dynamodb/)) From 74a624c55448a6b334849b8f158f3e034d2b4984 Mon Sep 17 00:00:00 2001 From: Zhuoyuan <75076820+ZLI-afk@users.noreply.github.com> Date: Tue, 30 Apr 2024 13:38:14 +0800 Subject: [PATCH 23/35] add doi badge --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index aed60d4..bbc3bb1 100644 --- a/README.md +++ b/README.md @@ -3,9 +3,9 @@ # APEX: Alloy Property EXplorer - -[APEX](https://github.com/deepmodeling/APEX): Alloy Property EXplorer is a component of the [AI Square](https://aissquare.com/) project that involves the restructuring of the [DP-GEN](https://github.com/deepmodeling/dpgen) `auto_test` module to develop a versatile and extensible Python package for general alloy property calculations. This package enables users to conveniently establish a wide range of cloud-native property-test workflows by utilizing various computational approaches, including LAMMPS, VASP, ABACUS, and others. [![](https://img.shields.io/badge/release-1.2.0-blue.svg)](https://github.com/deepmodeling/APEX) [![](https://img.shields.io/badge/doi-arXiv:2404.17330-red.svg)](https://doi.org/10.48550/arXiv.2404.17330) +[APEX](https://github.com/deepmodeling/APEX): Alloy Property EXplorer is a component of the [AI Square](https://aissquare.com/) project that involves the restructuring of the [DP-GEN](https://github.com/deepmodeling/dpgen) `auto_test` module to develop a versatile and extensible Python package for general alloy property calculations. This package enables users to conveniently establish a wide range of cloud-native property-test workflows by utilizing various computational approaches, including LAMMPS, VASP, ABACUS, and others. + * Add a `retrieve` sub-command to allow results to be retrieved independently and manually for multiple properties (Remove `Distributor` and `Collector` OP) * Support common **dflow operations** with terminal commands * Incorporate results `archive` function to both local paths and NoSQL database ([MongoDB](https://www.mongodb.com/) and [DynamoDB](https://aws.amazon.com/cn/dynamodb/)) From af7dd4379637bd7bad143c651dbdbe1208997c65 Mon Sep 17 00:00:00 2001 From: Zhuoyuan <75076820+ZLI-afk@users.noreply.github.com> Date: Tue, 30 Apr 2024 13:40:46 +0800 Subject: [PATCH 24/35] add doi badge --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index bbc3bb1..1c48eee 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ # APEX: Alloy Property EXplorer [![](https://img.shields.io/badge/release-1.2.0-blue.svg)](https://github.com/deepmodeling/APEX) [![](https://img.shields.io/badge/doi-arXiv:2404.17330-red.svg)](https://doi.org/10.48550/arXiv.2404.17330) + [APEX](https://github.com/deepmodeling/APEX): Alloy Property EXplorer is a component of the [AI Square](https://aissquare.com/) project that involves the restructuring of the [DP-GEN](https://github.com/deepmodeling/dpgen) `auto_test` module to develop a versatile and extensible Python package for general alloy property calculations. This package enables users to conveniently establish a wide range of cloud-native property-test workflows by utilizing various computational approaches, including LAMMPS, VASP, ABACUS, and others. * Add a `retrieve` sub-command to allow results to be retrieved independently and manually for multiple properties (Remove `Distributor` and `Collector` OP) @@ -17,7 +18,7 @@ ## How to cite APEX If you use APEX in your research, please cite the following paper: -[![](https://img.shields.io/badge/doi-arXiv:2404.17330-blue.svg)](https://doi.org/10.48550/arXiv.2404.17330) +[arXiv:2404.17330](https://doi.org/10.48550/arXiv.2404.17330) ## Table of Contents From f84068daf2f4befa1852d3e5df80cb569278e190 Mon Sep 17 00:00:00 2001 From: Zhuoyuan <75076820+ZLI-afk@users.noreply.github.com> Date: Tue, 30 Apr 2024 16:35:28 +0800 Subject: [PATCH 25/35] add citation to header and README.md --- README.md | 4 ++-- apex/__init__.py | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1c48eee..6bb9102 100644 --- a/README.md +++ b/README.md @@ -17,8 +17,8 @@ * Modify the single-step run command from `test` to `do` for improved clarity and consistencey ## How to cite APEX -If you use APEX in your research, please cite the following paper: -[arXiv:2404.17330](https://doi.org/10.48550/arXiv.2404.17330) +If you use APEX in your future research, please cite the following paper for general purpose [![](https://img.shields.io/badge/doi-arXiv:2404.17330-red.svg)](https://doi.org/10.48550/arXiv.2404.17330) : +> Z. Li, T. Wen, Y. Zhang, X. Liu, C. Zhang, A. S. L. S. Pattamatta, X. Gong, B. Ye, H.Wang, L. Zhang, D. J. Srolovitz, An extendable cloud- native alloy property explorer (2024). arXiv:2404.17330. ## Table of Contents diff --git a/apex/__init__.py b/apex/__init__.py index d810b1f..c0808e9 100644 --- a/apex/__init__.py +++ b/apex/__init__.py @@ -27,5 +27,9 @@ def header(): header_str += " AAA AAA PPP EEEEEEEEEE XXX XXX\n" header_str += "---------------------------------------------------------------\n" header_str += f"==>> Alloy Property EXplorer using simulations (v{__version__})\n" + header_str += "Please read and cite: \n" + header_str += "Li et al, An extendable cloud- native alloy property explorer (2024). arXiv:2404.17330." + header_str += "See https://github.com/deepmodeling/APEX for more information.\n" + header_str += "---------------------------------------------------------------\n" header_str += "Checking input files..." print(header_str) From 8c280fb913376bbafbe654d056540e8ab0b82540 Mon Sep 17 00:00:00 2001 From: Zhuoyuan <75076820+ZLI-afk@users.noreply.github.com> Date: Tue, 30 Apr 2024 16:47:34 +0800 Subject: [PATCH 26/35] add citation to header and README.md --- README.md | 7 +++++-- apex/__init__.py | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 6bb9102..6fca3fc 100644 --- a/README.md +++ b/README.md @@ -17,12 +17,15 @@ * Modify the single-step run command from `test` to `do` for improved clarity and consistencey ## How to cite APEX -If you use APEX in your future research, please cite the following paper for general purpose [![](https://img.shields.io/badge/doi-arXiv:2404.17330-red.svg)](https://doi.org/10.48550/arXiv.2404.17330) : -> Z. Li, T. Wen, Y. Zhang, X. Liu, C. Zhang, A. S. L. S. Pattamatta, X. Gong, B. Ye, H.Wang, L. Zhang, D. J. Srolovitz, An extendable cloud- native alloy property explorer (2024). arXiv:2404.17330. +If you use APEX in your future research, please cite the following paper for general purpose: + +[![](https://img.shields.io/badge/doi-arXiv:2404.17330-red.svg)](https://doi.org/10.48550/arXiv.2404.17330) +> Z. Li, T. Wen, Y. Zhang, X. Liu, C. Zhang, A. S. L. S. Pattamatta, X. Gong, B. Ye, H.Wang, L. Zhang, D. J. Srolovitz, An extendable cloud-native alloy property explorer (2024). arXiv:2404.17330. ## Table of Contents - [APEX: Alloy Property EXplorer](#apex-alloy-property-explorer) + - [How to cite APEX](#how-to-cite-apex) - [Table of Contents](#table-of-contents) - [1. Overview](#1-overview) - [2. Easy Install](#2-easy-install) diff --git a/apex/__init__.py b/apex/__init__.py index c0808e9..1487fd2 100644 --- a/apex/__init__.py +++ b/apex/__init__.py @@ -27,8 +27,8 @@ def header(): header_str += " AAA AAA PPP EEEEEEEEEE XXX XXX\n" header_str += "---------------------------------------------------------------\n" header_str += f"==>> Alloy Property EXplorer using simulations (v{__version__})\n" - header_str += "Please read and cite: \n" - header_str += "Li et al, An extendable cloud- native alloy property explorer (2024). arXiv:2404.17330." + header_str += "Please cite DOI: 10.48550/arXiv.2404.17330\n" + header_str += "Li et al, An extendable cloud-native alloy property explorer (2024).\n" header_str += "See https://github.com/deepmodeling/APEX for more information.\n" header_str += "---------------------------------------------------------------\n" header_str += "Checking input files..." From b5ade621e821e5f03c8a82ffe7226054f8357a6e Mon Sep 17 00:00:00 2001 From: Zhuoyuan <75076820+ZLI-afk@users.noreply.github.com> Date: Tue, 30 Apr 2024 16:48:30 +0800 Subject: [PATCH 27/35] add citation to header and README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6fca3fc..01593e6 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ # APEX: Alloy Property EXplorer -[![](https://img.shields.io/badge/release-1.2.0-blue.svg)](https://github.com/deepmodeling/APEX) [![](https://img.shields.io/badge/doi-arXiv:2404.17330-red.svg)](https://doi.org/10.48550/arXiv.2404.17330) +[![](https://img.shields.io/badge/release-1.2.0-blue.svg)](https://github.com/deepmodeling/APEX) [![](https://img.shields.io/badge/DOI-10.48550/arXiv.2404.17330-red.svg)](https://doi.org/10.48550/arXiv.2404.17330) [APEX](https://github.com/deepmodeling/APEX): Alloy Property EXplorer is a component of the [AI Square](https://aissquare.com/) project that involves the restructuring of the [DP-GEN](https://github.com/deepmodeling/dpgen) `auto_test` module to develop a versatile and extensible Python package for general alloy property calculations. This package enables users to conveniently establish a wide range of cloud-native property-test workflows by utilizing various computational approaches, including LAMMPS, VASP, ABACUS, and others. @@ -19,7 +19,7 @@ ## How to cite APEX If you use APEX in your future research, please cite the following paper for general purpose: -[![](https://img.shields.io/badge/doi-arXiv:2404.17330-red.svg)](https://doi.org/10.48550/arXiv.2404.17330) +[![](https://img.shields.io/badge/DOI-10.48550/arXiv.2404.17330-red.svg)](https://doi.org/10.48550/arXiv.2404.17330) > Z. Li, T. Wen, Y. Zhang, X. Liu, C. Zhang, A. S. L. S. Pattamatta, X. Gong, B. Ye, H.Wang, L. Zhang, D. J. Srolovitz, An extendable cloud-native alloy property explorer (2024). arXiv:2404.17330. ## Table of Contents From 480c6d6ab515db19c51ebce29c28c37e96cb45a9 Mon Sep 17 00:00:00 2001 From: Zhuoyuan <75076820+ZLI-afk@users.noreply.github.com> Date: Tue, 30 Apr 2024 17:01:31 +0800 Subject: [PATCH 28/35] add citation to header and README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 01593e6..0b9a62f 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ # APEX: Alloy Property EXplorer -[![](https://img.shields.io/badge/release-1.2.0-blue.svg)](https://github.com/deepmodeling/APEX) [![](https://img.shields.io/badge/DOI-10.48550/arXiv.2404.17330-red.svg)](https://doi.org/10.48550/arXiv.2404.17330) +[![](https://img.shields.io/badge/release-1.2.0-blue.svg)](https://github.com/deepmodeling/APEX) [APEX](https://github.com/deepmodeling/APEX): Alloy Property EXplorer is a component of the [AI Square](https://aissquare.com/) project that involves the restructuring of the [DP-GEN](https://github.com/deepmodeling/dpgen) `auto_test` module to develop a versatile and extensible Python package for general alloy property calculations. This package enables users to conveniently establish a wide range of cloud-native property-test workflows by utilizing various computational approaches, including LAMMPS, VASP, ABACUS, and others. From 04d45e257b60ac268dea3b8f5372b7c92ef60d01 Mon Sep 17 00:00:00 2001 From: Zhuoyuan <75076820+ZLI-afk@users.noreply.github.com> Date: Mon, 6 May 2024 12:04:20 +0800 Subject: [PATCH 29/35] add app link to header and README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0b9a62f..a8895c4 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ # APEX: Alloy Property EXplorer -[![](https://img.shields.io/badge/release-1.2.0-blue.svg)](https://github.com/deepmodeling/APEX) +[![](https://img.shields.io/badge/release-1.2.0-blue.svg)](https://github.com/deepmodeling/APEX) [![](https://img.shields.io/badge/APP-BohriumApp-orange.svg)](https://app.bohrium.dp.tech/apex/) [APEX](https://github.com/deepmodeling/APEX): Alloy Property EXplorer is a component of the [AI Square](https://aissquare.com/) project that involves the restructuring of the [DP-GEN](https://github.com/deepmodeling/dpgen) `auto_test` module to develop a versatile and extensible Python package for general alloy property calculations. This package enables users to conveniently establish a wide range of cloud-native property-test workflows by utilizing various computational approaches, including LAMMPS, VASP, ABACUS, and others. From 1dc01136ebe23e9f5073dae14d8a7ab691698e8a Mon Sep 17 00:00:00 2001 From: Zhuoyuan <75076820+ZLI-afk@users.noreply.github.com> Date: Mon, 6 May 2024 15:36:06 +0800 Subject: [PATCH 30/35] add app link to header and README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index a8895c4..66c0d08 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ [APEX](https://github.com/deepmodeling/APEX): Alloy Property EXplorer is a component of the [AI Square](https://aissquare.com/) project that involves the restructuring of the [DP-GEN](https://github.com/deepmodeling/dpgen) `auto_test` module to develop a versatile and extensible Python package for general alloy property calculations. This package enables users to conveniently establish a wide range of cloud-native property-test workflows by utilizing various computational approaches, including LAMMPS, VASP, ABACUS, and others. +## v1.2 Main Features Update * Add a `retrieve` sub-command to allow results to be retrieved independently and manually for multiple properties (Remove `Distributor` and `Collector` OP) * Support common **dflow operations** with terminal commands * Incorporate results `archive` function to both local paths and NoSQL database ([MongoDB](https://www.mongodb.com/) and [DynamoDB](https://aws.amazon.com/cn/dynamodb/)) @@ -25,6 +26,7 @@ If you use APEX in your future research, please cite the following paper for gen ## Table of Contents - [APEX: Alloy Property EXplorer](#apex-alloy-property-explorer) + - [v1.2 Main Features Update](#v12-main-features-update) - [How to cite APEX](#how-to-cite-apex) - [Table of Contents](#table-of-contents) - [1. Overview](#1-overview) From 62c237014027b2f13b2abd194cf2dcaa4aac5b19 Mon Sep 17 00:00:00 2001 From: Zhuoyuan <75076820+ZLI-afk@users.noreply.github.com> Date: Mon, 6 May 2024 15:48:01 +0800 Subject: [PATCH 31/35] add app link to header and README.md --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 66c0d08..3c8b144 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ # APEX: Alloy Property EXplorer -[![](https://img.shields.io/badge/release-1.2.0-blue.svg)](https://github.com/deepmodeling/APEX) [![](https://img.shields.io/badge/APP-BohriumApp-orange.svg)](https://app.bohrium.dp.tech/apex/) +[![](https://img.shields.io/badge/release-1.2.0-blue.svg)](https://github.com/deepmodeling/APEX) [APEX](https://github.com/deepmodeling/APEX): Alloy Property EXplorer is a component of the [AI Square](https://aissquare.com/) project that involves the restructuring of the [DP-GEN](https://github.com/deepmodeling/dpgen) `auto_test` module to develop a versatile and extensible Python package for general alloy property calculations. This package enables users to conveniently establish a wide range of cloud-native property-test workflows by utilizing various computational approaches, including LAMMPS, VASP, ABACUS, and others. @@ -17,6 +17,10 @@ * Add four additional **ML** pair styles (`snap`, `gap`, `rann` and `mace`) and an extra `meam-spline` in LAMMPS interation type support * Modify the single-step run command from `test` to `do` for improved clarity and consistencey +## APEX Bohrium App +[![](https://img.shields.io/badge/APP-BohriumApp-orange.svg)](https://app.bohrium.dp.tech/apex/) +APEX also provides a web-based [Bohrium App](https://app.bohrium.dp.tech/apex/) for rapid and easy alloy property calculations without intensive JSON configuration (Notice: one will need a Bohrium account to access this service). + ## How to cite APEX If you use APEX in your future research, please cite the following paper for general purpose: From 48fcc949c88892a7220556a0bf1b8ce2b41c79de Mon Sep 17 00:00:00 2001 From: Zhuoyuan <75076820+ZLI-afk@users.noreply.github.com> Date: Mon, 6 May 2024 15:50:37 +0800 Subject: [PATCH 32/35] add app link to header and README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3c8b144..e18f6e8 100644 --- a/README.md +++ b/README.md @@ -19,12 +19,14 @@ ## APEX Bohrium App [![](https://img.shields.io/badge/APP-BohriumApp-orange.svg)](https://app.bohrium.dp.tech/apex/) + APEX also provides a web-based [Bohrium App](https://app.bohrium.dp.tech/apex/) for rapid and easy alloy property calculations without intensive JSON configuration (Notice: one will need a Bohrium account to access this service). ## How to cite APEX +[![](https://img.shields.io/badge/DOI-10.48550/arXiv.2404.17330-red.svg)](https://doi.org/10.48550/arXiv.2404.17330) + If you use APEX in your future research, please cite the following paper for general purpose: -[![](https://img.shields.io/badge/DOI-10.48550/arXiv.2404.17330-red.svg)](https://doi.org/10.48550/arXiv.2404.17330) > Z. Li, T. Wen, Y. Zhang, X. Liu, C. Zhang, A. S. L. S. Pattamatta, X. Gong, B. Ye, H.Wang, L. Zhang, D. J. Srolovitz, An extendable cloud-native alloy property explorer (2024). arXiv:2404.17330. ## Table of Contents From fdfdca8affa23f9f70fc6114ad0afa25fe0cafb2 Mon Sep 17 00:00:00 2001 From: Zhuoyuan <75076820+ZLI-afk@users.noreply.github.com> Date: Mon, 6 May 2024 15:51:40 +0800 Subject: [PATCH 33/35] add app link to header and README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e18f6e8..2cc3946 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ ## APEX Bohrium App [![](https://img.shields.io/badge/APP-BohriumApp-orange.svg)](https://app.bohrium.dp.tech/apex/) -APEX also provides a web-based [Bohrium App](https://app.bohrium.dp.tech/apex/) for rapid and easy alloy property calculations without intensive JSON configuration (Notice: one will need a Bohrium account to access this service). +APEX also provides a web-based [Bohrium App](https://app.bohrium.dp.tech/apex/) for rapid and easy alloy property calculations without intensive JSON configuration (Note: one will need a Bohrium account to access this service). ## How to cite APEX [![](https://img.shields.io/badge/DOI-10.48550/arXiv.2404.17330-red.svg)](https://doi.org/10.48550/arXiv.2404.17330) From 1ab7ddd1e5debc6a8b8c40e03b071e2c0869a89f Mon Sep 17 00:00:00 2001 From: Zhuoyuan <75076820+ZLI-afk@users.noreply.github.com> Date: Mon, 6 May 2024 16:29:34 +0800 Subject: [PATCH 34/35] update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 2cc3946..e049bd3 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,7 @@ If you use APEX in your future research, please cite the following paper for gen - [APEX: Alloy Property EXplorer](#apex-alloy-property-explorer) - [v1.2 Main Features Update](#v12-main-features-update) + - [APEX Bohrium App](#apex-bohrium-app) - [How to cite APEX](#how-to-cite-apex) - [Table of Contents](#table-of-contents) - [1. Overview](#1-overview) From 92b9ea6262953686c7b6f4a53953628d0637ef5b Mon Sep 17 00:00:00 2001 From: Zhuoyuan <75076820+ZLI-afk@users.noreply.github.com> Date: Mon, 6 May 2024 17:26:49 +0800 Subject: [PATCH 35/35] update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e049bd3..0f9001e 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ APEX also provides a web-based [Bohrium App](https://app.bohrium.dp.tech/apex/) ## How to cite APEX [![](https://img.shields.io/badge/DOI-10.48550/arXiv.2404.17330-red.svg)](https://doi.org/10.48550/arXiv.2404.17330) -If you use APEX in your future research, please cite the following paper for general purpose: +If you use APEX in your research, please cite the following paper for general purpose: > Z. Li, T. Wen, Y. Zhang, X. Liu, C. Zhang, A. S. L. S. Pattamatta, X. Gong, B. Ye, H.Wang, L. Zhang, D. J. Srolovitz, An extendable cloud-native alloy property explorer (2024). arXiv:2404.17330.