From 05149b1a6b8e02848649d6742427235481befbfa Mon Sep 17 00:00:00 2001 From: Han Wang <92130845+wanghan-iapcm@users.noreply.github.com> Date: Fri, 26 Jan 2024 11:37:23 +0800 Subject: [PATCH] fix code style (#177) * fix import * Update test_model.py * delete unused files * pre-commit * fix import * fix import * fix imports Signed-off-by: Jinzhe Zeng * fix jit error Signed-off-by: Jinzhe Zeng * disable --failfast so we can check all failure Signed-off-by: Jinzhe Zeng * ignore RUF005 Signed-off-by: Jinzhe Zeng * seed Signed-off-by: Jinzhe Zeng * fix seed Signed-off-by: Jinzhe Zeng --------- Signed-off-by: Jinzhe Zeng Co-authored-by: Duo <50307526+iProzd@users.noreply.github.com> Co-authored-by: Jinzhe Zeng --- .github/workflows/ci-test.yml | 2 +- .license-header.txt | 1 + .pre-commit-config.yaml | 113 + LICENSE | 2 +- README.md | 2 +- deepmd_pt/__init__.py | 5 +- deepmd_pt/entrypoints/__init__.py | 1 + deepmd_pt/entrypoints/main.py | 333 +- .../examples/water/dpa1-denoise/input.json | 174 +- .../water/dpa1-ener-model6/input.json | 188 +- .../dpa1-ener-warmup-grad-clip/input.json | 182 +- deepmd_pt/examples/water/dpa1-ener/input.json | 172 +- .../examples/water/dpa1-force-ener/input.json | 170 +- .../examples/water/dpa1-force/input.json | 170 +- .../examples/water/dpa2-denoise/input.json | 206 +- deepmd_pt/examples/water/dpa2-ener/input.json | 198 +- .../examples/water/dpa2-force-ener/input.json | 200 +- .../examples/water/dpa2-force/input.json | 201 +- .../examples/water/dpau-denoise/input.json | 130 +- deepmd_pt/examples/water/dpau-ener/input.json | 129 +- .../examples/water/dpau-force-ener/input.json | 127 +- .../examples/water/hybrid-denoise/input.json | 244 +- .../examples/water/hybrid-ener/input.json | 244 +- .../water/hybrid-force-ener/input.json | 230 +- deepmd_pt/examples/water/multitask/input.json | 370 +- deepmd_pt/examples/water/se_a/input.json | 144 +- deepmd_pt/infer/__init__.py | 1 + deepmd_pt/infer/deep_eval.py | 276 +- deepmd_pt/infer/inference.py | 251 +- deepmd_pt/loss/__init__.py | 19 +- deepmd_pt/loss/denoise.py | 58 +- deepmd_pt/loss/ener.py | 125 +- deepmd_pt/loss/loss.py | 8 +- deepmd_pt/model/__init__.py | 1 + deepmd_pt/model/backbone/__init__.py | 14 +- deepmd_pt/model/backbone/backbone.py | 18 +- deepmd_pt/model/backbone/evoformer2b.py | 90 +- deepmd_pt/model/descriptor/__init__.py | 56 +- deepmd_pt/model/descriptor/descriptor.py | 165 +- deepmd_pt/model/descriptor/dpa1.py | 288 +- deepmd_pt/model/descriptor/dpa2.py | 675 +- deepmd_pt/model/descriptor/env_mat.py | 21 +- deepmd_pt/model/descriptor/gaussian_lcc.py | 263 +- deepmd_pt/model/descriptor/hybrid.py | 206 +- deepmd_pt/model/descriptor/repformer_layer.py | 456 +- deepmd_pt/model/descriptor/repformers.py | 594 +- deepmd_pt/model/descriptor/se_a.py | 483 +- deepmd_pt/model/descriptor/se_atten.py | 251 +- deepmd_pt/model/model/__init__.py | 33 +- deepmd_pt/model/model/atomic_model.py | 123 +- deepmd_pt/model/model/dp_atomic_model.py | 381 +- deepmd_pt/model/model/ener.py | 100 +- deepmd_pt/model/model/make_model.py | 111 +- deepmd_pt/model/model/model.py | 143 +- deepmd_pt/model/model/transform_output.py | 304 +- deepmd_pt/model/network/__init__.py | 2 +- deepmd_pt/model/network/mlp.py | 333 +- deepmd_pt/model/network/network.py | 952 +- deepmd_pt/model/task/__init__.py | 41 +- deepmd_pt/model/task/atten_lcc.py | 63 +- deepmd_pt/model/task/denoise.py | 117 +- deepmd_pt/model/task/dipole.py | 42 +- deepmd_pt/model/task/ener.py | 183 +- deepmd_pt/model/task/fitting.py | 98 +- deepmd_pt/model/task/task.py | 10 +- deepmd_pt/model/task/type_predict.py | 46 +- deepmd_pt/optimizer/KFWrapper.py | 30 +- deepmd_pt/optimizer/LKF.py | 26 +- deepmd_pt/optimizer/__init__.py | 11 +- deepmd_pt/train/__init__.py | 1 + deepmd_pt/train/training.py | 534 +- deepmd_pt/train/wrapper.py | 149 +- deepmd_pt/utils/__init__.py | 1 + deepmd_pt/utils/ase_calc.py | 52 +- deepmd_pt/utils/auto_batch_size.py | 3 +- deepmd_pt/utils/cache.py | 5 +- deepmd_pt/utils/dataloader.py | 86 +- deepmd_pt/utils/dataset.py | 489 +- deepmd_pt/utils/dp_random.py | 5 +- deepmd_pt/utils/env.py | 21 +- deepmd_pt/utils/finetune.py | 87 +- deepmd_pt/utils/learning_rate.py | 16 +- deepmd_pt/utils/multi_task.py | 94 +- deepmd_pt/utils/nlist.py | 624 +- deepmd_pt/utils/plugin.py | 2 +- deepmd_pt/utils/preprocess.py | 142 +- deepmd_pt/utils/region.py | 145 +- deepmd_pt/utils/stat.py | 18 +- deepmd_pt/utils/utils.py | 14 +- deploy/CMakeLists.txt | 7 - deploy/test.cpp | 35 - deploy/test.py | 24 - deploy/test_model.cpp | 62 - pyproject.toml | 35 + rmse_over_step.png | Bin 42863 -> 0 bytes .../distributed_data_parallel_slurm_run.bash | 10 - .../distributed_data_parallel_slurm_setup.py | 44 - ...stributed_data_parallel_slurm_setup.sbatch | 24 - source/api_cc/build.sh | 4 +- source/api_cc/include/DeepPot.h | 112 +- source/api_cc/include/common.h | 634 +- source/api_cc/src/DeepPot.cc | 340 +- source/api_cc/src/common.cc | 95 +- source/api_cc/test/cppapi/CMakeLists.txt | 7 +- source/api_cc/test/cppapi/test.cpp | 49 +- source/lmp/build_lammps.sh | 2 +- source/lmp/pair_deepmd.cpp | 106 +- source/lmp/pair_deepmd.h | 16 +- tests/AlMgCu/input_AlCuMg.json | 15012 +++++++-------- tests/AlMgCu/job.json | 23 +- tests/Cu/job.json | 23 +- tests/Cu/se_e2_a.json | 128 +- tests/LiGePS/0310.json | 233 +- tests/LiGePS/job.json | 23 +- tests/__init__.py | 1 + tests/models/dpa1.json | 58 +- tests/models/dpa2.json | 76 +- tests/models/dpa2_hyb.json | 122 +- tests/test_LKF.py | 7 +- tests/test_autodiff.py | 245 +- tests/test_calculator.py | 40 +- tests/test_deeppot.py | 68 +- tests/test_descriptor.py | 138 +- tests/test_descriptor_dpa1.py | 488 +- tests/test_descriptor_dpa2.py | 400 +- tests/test_dp_test.py | 30 +- tests/test_embedding_net.py | 129 +- tests/test_env_mat.py | 78 +- tests/test_fitting_net.py | 86 +- tests/test_force_grad.py | 102 +- tests/test_jit.py | 58 +- tests/test_loss.py | 167 +- tests/test_lr.py | 35 +- tests/test_mlp.py | 523 +- tests/test_model.py | 339 +- tests/test_nlist.py | 339 +- tests/test_permutation.py | 455 +- tests/test_permutation_denoise.py | 131 +- tests/test_region.py | 119 +- tests/test_rot.py | 258 +- tests/test_rot_denoise.py | 195 +- tests/test_rotation.py | 120 +- tests/test_sampler.py | 119 +- tests/test_saveload_dpa1.py | 113 +- tests/test_saveload_se_e2_a.py | 108 +- tests/test_se_e2_a.py | 268 +- tests/test_smooth.py | 314 +- tests/test_smooth_denoise.py | 237 +- tests/test_stat.py | 162 +- tests/test_training.py | 41 +- tests/test_trans.py | 186 +- tests/test_trans_denoise.py | 130 +- tests/test_unused_params.py | 145 +- tests/water/input_AlCuMg.json | 15018 ++++++++-------- tests/water/job.json | 23 +- tests/water/lkf.json | 148 +- tests/water/se_atten.json | 162 +- tests/water/se_e2_a.json | 144 +- tests/water/water_large.json | 144 +- visualize.py | 71 - 160 files changed, 28112 insertions(+), 25170 deletions(-) create mode 100644 .license-header.txt create mode 100644 .pre-commit-config.yaml delete mode 100644 deploy/CMakeLists.txt delete mode 100644 deploy/test.cpp delete mode 100644 deploy/test.py delete mode 100644 deploy/test_model.cpp delete mode 100644 rmse_over_step.png delete mode 100644 slurm/distributed_data_parallel_slurm_run.bash delete mode 100644 slurm/distributed_data_parallel_slurm_setup.py delete mode 100644 slurm/distributed_data_parallel_slurm_setup.sbatch delete mode 100644 visualize.py diff --git a/.github/workflows/ci-test.yml b/.github/workflows/ci-test.yml index aae5d92f..fc3ee39f 100644 --- a/.github/workflows/ci-test.yml +++ b/.github/workflows/ci-test.yml @@ -21,5 +21,5 @@ jobs: pip install -e . pip install -r tests/requirements.txt - name: Test - run: DEVICE=cpu PREPROCESS_DEVICE=cpu DISABLE_TQDM=True coverage run --source=./deepmd_pt -m unittest -v -f && coverage report + run: DEVICE=cpu PREPROCESS_DEVICE=cpu DISABLE_TQDM=True coverage run --source=./deepmd_pt -m unittest -v && coverage report - uses: codecov/codecov-action@v3 diff --git a/.license-header.txt b/.license-header.txt new file mode 100644 index 00000000..4352084d --- /dev/null +++ b/.license-header.txt @@ -0,0 +1 @@ +SPDX-License-Identifier: LGPL-3.0-or-later diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 00000000..73e1de74 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,113 @@ +# See https://pre-commit.com for more information +# See https://pre-commit.com/hooks.html for more hooks +repos: +- repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.5.0 + hooks: + - id: trailing-whitespace + exclude: "^.+\\.pth$" + - id: end-of-file-fixer + exclude: "^.+\\.pth$" + - id: check-yaml + - id: check-json + - id: check-added-large-files + args: ['--maxkb=1024', '--enforce-all'] + - id: check-merge-conflict + - id: check-symlinks + - id: check-toml +# Python +- repo: https://github.com/PyCQA/isort + rev: 5.13.2 + hooks: + - id: isort + files: \.py$ + exclude: ^source/3rdparty +- repo: https://github.com/astral-sh/ruff-pre-commit + # Ruff version. + rev: v0.1.13 + hooks: + - id: ruff + args: ["--fix"] + exclude: ^source/3rdparty + types_or: [python, pyi, jupyter] + - id: ruff-format + exclude: ^source/3rdparty + types_or: [python, pyi, jupyter] +# numpydoc +- repo: https://github.com/Carreau/velin + rev: 0.0.12 + hooks: + - id: velin + args: ["--write"] + exclude: ^source/3rdparty +# Python inside docs +- repo: https://github.com/asottile/blacken-docs + rev: 1.16.0 + hooks: + - id: blacken-docs +# C++ +- repo: https://github.com/pre-commit/mirrors-clang-format + rev: v17.0.6 + hooks: + - id: clang-format + exclude: ^source/3rdparty|source/lib/src/gpu/cudart/.+\.inc +# CSS +- repo: https://github.com/pre-commit/mirrors-csslint + rev: v1.0.5 + hooks: + - id: csslint +# Shell +- repo: https://github.com/scop/pre-commit-shfmt + rev: v3.7.0-4 + hooks: + - id: shfmt +# CMake +- repo: https://github.com/cheshirekow/cmake-format-precommit + rev: v0.6.13 + hooks: + - id: cmake-format + #- id: cmake-lint +# license header +- repo: https://github.com/Lucas-C/pre-commit-hooks + rev: v1.5.4 + hooks: + # C++, js + - id: insert-license + files: \.(c|cc|cpp|js|ts|h|hpp)$ + args: + - --license-filepath + - .license-header.txt + - --comment-style + - // + - --no-extra-eol + exclude: ^source/3rdparty|source/lib/src/gpu/cudart/.+\.inc + # CSS + - id: insert-license + files: \.(css|scss)$ + args: + - --license-filepath + - .license-header.txt + - --comment-style + - /*| *| */ + - --no-extra-eol + # Python + - id: insert-license + files: \.(py|pyx)$ + args: + - --license-filepath + - .license-header.txt + - --comment-style + - "#" + - --no-extra-eol + exclude: ^source/3rdparty + # HTML + - id: insert-license + files: \.(html|vue|xml)$ + args: + - --license-filepath + - .license-header.txt + - --comment-style + - + - --no-extra-eol +ci: + autoupdate_branch: devel diff --git a/LICENSE b/LICENSE index 153d416d..0a041280 100644 --- a/LICENSE +++ b/LICENSE @@ -162,4 +162,4 @@ General Public License ever published by the Free Software Foundation. whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the -Library. \ No newline at end of file +Library. diff --git a/README.md b/README.md index 82dee36b..c7eebcea 100644 --- a/README.md +++ b/README.md @@ -142,7 +142,7 @@ self.dataloaders: List[DataLoader] = [] for system in systems: dl = create_dataloader(system) self.dataloaders.append(dl) - for _ in range(len(dl)): # len(dl) == how many mini-batches in this system + for _ in range(len(dl)): # len(dl) == how many mini-batches in this system index.append(len(self.dataloaders) - 1) ``` diff --git a/deepmd_pt/__init__.py b/deepmd_pt/__init__.py index 4217e612..9dcc4ab4 100644 --- a/deepmd_pt/__init__.py +++ b/deepmd_pt/__init__.py @@ -1,6 +1,5 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later try: from ._version import version as __version__ except ImportError: - from .__about__ import ( - __version__, - ) + from .__about__ import __version__ as __version__ diff --git a/deepmd_pt/entrypoints/__init__.py b/deepmd_pt/entrypoints/__init__.py index e69de29b..6ceb116d 100644 --- a/deepmd_pt/entrypoints/__init__.py +++ b/deepmd_pt/entrypoints/__init__.py @@ -0,0 +1 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later diff --git a/deepmd_pt/entrypoints/main.py b/deepmd_pt/entrypoints/main.py index cc886365..85828042 100644 --- a/deepmd_pt/entrypoints/main.py +++ b/deepmd_pt/entrypoints/main.py @@ -1,62 +1,99 @@ -import os +# SPDX-License-Identifier: LGPL-3.0-or-later import argparse import json import logging +import os + import torch -from deepmd_pt.utils import env -from deepmd_pt.train import training -from deepmd_pt.infer import inference import torch.distributed as dist -from deepmd_pt.utils.dataset import DeepmdDataSet -from deepmd_pt.utils.dataloader import DpLoaderSet -from torch.distributed.elastic.multiprocessing.errors import record +from torch.distributed.elastic.multiprocessing.errors import ( + record, +) -from deepmd_pt.utils.finetune import change_finetune_model_params -from deepmd_pt.utils.stat import make_stat_input -from deepmd_pt.utils.multi_task import preprocess_shared_params -from deepmd_pt.model.descriptor import Descriptor +from deepmd_pt import ( + __version__, +) +from deepmd_pt.infer import ( + inference, +) +from deepmd_pt.model.descriptor import ( + Descriptor, +) +from deepmd_pt.train import ( + training, +) +from deepmd_pt.utils import ( + env, +) +from deepmd_pt.utils.dataloader import ( + DpLoaderSet, +) +from deepmd_pt.utils.finetune import ( + change_finetune_model_params, +) +from deepmd_pt.utils.multi_task import ( + preprocess_shared_params, +) +from deepmd_pt.utils.stat import ( + make_stat_input, +) -from deepmd_pt import __version__ - -def get_trainer(config, init_model=None, restart_model=None, finetune_model=None, model_branch='', force_load=False): +def get_trainer( + config, + init_model=None, + restart_model=None, + finetune_model=None, + model_branch="", + force_load=False, +): # Initialize DDP - local_rank = os.environ.get('LOCAL_RANK') + local_rank = os.environ.get("LOCAL_RANK") if local_rank is not None: local_rank = int(local_rank) assert dist.is_nccl_available() - dist.init_process_group(backend='nccl') + dist.init_process_group(backend="nccl") multi_task = "model_dict" in config["model"] ckpt = init_model if init_model is not None else restart_model - config["model"] = change_finetune_model_params(ckpt, finetune_model, config["model"], multi_task=multi_task, model_branch=model_branch) + config["model"] = change_finetune_model_params( + ckpt, + finetune_model, + config["model"], + multi_task=multi_task, + model_branch=model_branch, + ) config["model"]["resuming"] = (finetune_model is not None) or (ckpt is not None) shared_links = None if multi_task: config["model"], shared_links = preprocess_shared_params(config["model"]) - def prepare_trainer_input_single(model_params_single, data_dict_single, loss_dict_single, suffix=''): - training_dataset_params = data_dict_single['training_data'] + def prepare_trainer_input_single( + model_params_single, data_dict_single, loss_dict_single, suffix="" + ): + training_dataset_params = data_dict_single["training_data"] type_split = False - if model_params_single['descriptor']['type'] in ['se_e2_a']: + if model_params_single["descriptor"]["type"] in ["se_e2_a"]: type_split = True - validation_dataset_params = data_dict_single['validation_data'] - training_systems = training_dataset_params['systems'] - validation_systems = validation_dataset_params['systems'] + validation_dataset_params = data_dict_single["validation_data"] + training_systems = training_dataset_params["systems"] + validation_systems = validation_dataset_params["systems"] # noise params noise_settings = None - if loss_dict_single.get('type', 'ener') == 'denoise': - noise_settings = {"noise_type": loss_dict_single.pop("noise_type", "uniform"), - "noise": loss_dict_single.pop("noise", 1.0), - "noise_mode": loss_dict_single.pop("noise_mode", "fix_num"), - "mask_num": loss_dict_single.pop("mask_num", 8), - "mask_prob": loss_dict_single.pop("mask_prob", 0.15), - "same_mask": loss_dict_single.pop("same_mask", False), - "mask_coord": loss_dict_single.pop("mask_coord", False), - "mask_type": loss_dict_single.pop("mask_type", False), - "max_fail_num": loss_dict_single.pop("max_fail_num", 10), - "mask_type_idx": len(model_params_single["type_map"]) - 1} + if loss_dict_single.get("type", "ener") == "denoise": + noise_settings = { + "noise_type": loss_dict_single.pop("noise_type", "uniform"), + "noise": loss_dict_single.pop("noise", 1.0), + "noise_mode": loss_dict_single.pop("noise_mode", "fix_num"), + "mask_num": loss_dict_single.pop("mask_num", 8), + "mask_prob": loss_dict_single.pop("mask_prob", 0.15), + "same_mask": loss_dict_single.pop("same_mask", False), + "mask_coord": loss_dict_single.pop("mask_coord", False), + "mask_type": loss_dict_single.pop("mask_type", False), + "max_fail_num": loss_dict_single.pop("max_fail_num", 10), + "mask_type_idx": len(model_params_single["type_map"]) - 1, + } # noise_settings = None # stat files @@ -66,114 +103,182 @@ def prepare_trainer_input_single(model_params_single, data_dict_single, loss_dic ### this design requires "rcut", "rcut_smth" and "sel" in the descriptor ### VERY BAD DESIGN!!!! ### not all descriptors provides these parameter in their constructor - default_stat_file_name = Descriptor.get_stat_name(model_params_single["descriptor"]) - model_params_single["stat_file_dir"] = data_dict_single.get("stat_file_dir", f"stat_files{suffix}") - model_params_single["stat_file"] = data_dict_single.get("stat_file", default_stat_file_name) - model_params_single["stat_file_path"] = os.path.join(model_params_single["stat_file_dir"], - model_params_single["stat_file"]) + default_stat_file_name = Descriptor.get_stat_name( + model_params_single["descriptor"] + ) + model_params_single["stat_file_dir"] = data_dict_single.get( + "stat_file_dir", f"stat_files{suffix}" + ) + model_params_single["stat_file"] = data_dict_single.get( + "stat_file", default_stat_file_name + ) + model_params_single["stat_file_path"] = os.path.join( + model_params_single["stat_file_dir"], model_params_single["stat_file"] + ) if not os.path.exists(model_params_single["stat_file_path"]): has_stat_file_path = False else: ### need to remove this default_stat_file_name = [] for descrpt in model_params_single["descriptor"]["list"]: - default_stat_file_name.append(f'stat_file_rcut{descrpt["rcut"]:.2f}_' - f'smth{descrpt["rcut_smth"]:.2f}_' - f'sel{descrpt["sel"]}_{descrpt["type"]}.npz') - model_params_single["stat_file_dir"] = data_dict_single.get("stat_file_dir", f"stat_files{suffix}") - model_params_single["stat_file"] = data_dict_single.get("stat_file", default_stat_file_name) - assert isinstance(model_params_single["stat_file"], list), "Stat file of hybrid descriptor must be a list!" + default_stat_file_name.append( + f'stat_file_rcut{descrpt["rcut"]:.2f}_' + f'smth{descrpt["rcut_smth"]:.2f}_' + f'sel{descrpt["sel"]}_{descrpt["type"]}.npz' + ) + model_params_single["stat_file_dir"] = data_dict_single.get( + "stat_file_dir", f"stat_files{suffix}" + ) + model_params_single["stat_file"] = data_dict_single.get( + "stat_file", default_stat_file_name + ) + assert isinstance( + model_params_single["stat_file"], list + ), "Stat file of hybrid descriptor must be a list!" stat_file_path = [] for stat_file_path_item in model_params_single["stat_file"]: - single_file_path = os.path.join(model_params_single["stat_file_dir"], stat_file_path_item) + single_file_path = os.path.join( + model_params_single["stat_file_dir"], stat_file_path_item + ) stat_file_path.append(single_file_path) if not os.path.exists(single_file_path): has_stat_file_path = False model_params_single["stat_file_path"] = stat_file_path # validation and training data - validation_data_single = DpLoaderSet(validation_systems, validation_dataset_params['batch_size'], - model_params_single, - type_split=type_split, noise_settings=noise_settings) + validation_data_single = DpLoaderSet( + validation_systems, + validation_dataset_params["batch_size"], + model_params_single, + type_split=type_split, + noise_settings=noise_settings, + ) if ckpt or finetune_model or has_stat_file_path: - train_data_single = DpLoaderSet(training_systems, training_dataset_params['batch_size'], - model_params_single, - type_split=type_split, noise_settings=noise_settings) + train_data_single = DpLoaderSet( + training_systems, + training_dataset_params["batch_size"], + model_params_single, + type_split=type_split, + noise_settings=noise_settings, + ) sampled_single = None else: - train_data_single = DpLoaderSet(training_systems, training_dataset_params['batch_size'], - model_params_single, - type_split=type_split) - data_stat_nbatch = model_params_single.get('data_stat_nbatch', 10) - sampled_single = make_stat_input(train_data_single.systems, train_data_single.dataloaders, data_stat_nbatch) + train_data_single = DpLoaderSet( + training_systems, + training_dataset_params["batch_size"], + model_params_single, + type_split=type_split, + ) + data_stat_nbatch = model_params_single.get("data_stat_nbatch", 10) + sampled_single = make_stat_input( + train_data_single.systems, + train_data_single.dataloaders, + data_stat_nbatch, + ) if noise_settings is not None: - train_data_single = DpLoaderSet(training_systems, training_dataset_params['batch_size'], - model_params_single, - type_split=type_split, noise_settings=noise_settings) + train_data_single = DpLoaderSet( + training_systems, + training_dataset_params["batch_size"], + model_params_single, + type_split=type_split, + noise_settings=noise_settings, + ) return train_data_single, validation_data_single, sampled_single if not multi_task: - train_data, validation_data, sampled = \ - prepare_trainer_input_single(config['model'], - config['training'], - config['loss']) + train_data, validation_data, sampled = prepare_trainer_input_single( + config["model"], config["training"], config["loss"] + ) else: train_data, validation_data, sampled = {}, {}, {} - for model_key in config['model']['model_dict']: - train_data[model_key], validation_data[model_key], sampled[model_key] = \ - prepare_trainer_input_single(config['model']['model_dict'][model_key], - config['training']['data_dict'][model_key], - config['loss_dict'][model_key], - suffix=f'_{model_key}') + for model_key in config["model"]["model_dict"]: + ( + train_data[model_key], + validation_data[model_key], + sampled[model_key], + ) = prepare_trainer_input_single( + config["model"]["model_dict"][model_key], + config["training"]["data_dict"][model_key], + config["loss_dict"][model_key], + suffix=f"_{model_key}", + ) - trainer = training.Trainer(config, train_data, sampled, validation_data=validation_data, init_model=init_model, - restart_model=restart_model, finetune_model=finetune_model, force_load=force_load, - shared_links=shared_links) + trainer = training.Trainer( + config, + train_data, + sampled, + validation_data=validation_data, + init_model=init_model, + restart_model=restart_model, + finetune_model=finetune_model, + force_load=force_load, + shared_links=shared_links, + ) return trainer def train(FLAGS): - logging.info('Configuration path: %s', FLAGS.INPUT) - with open(FLAGS.INPUT, 'r') as fin: + logging.info("Configuration path: %s", FLAGS.INPUT) + with open(FLAGS.INPUT) as fin: config = json.load(fin) - trainer = get_trainer(config, FLAGS.init_model, FLAGS.restart, FLAGS.finetune, FLAGS.model_branch, FLAGS.force_load) + trainer = get_trainer( + config, + FLAGS.init_model, + FLAGS.restart, + FLAGS.finetune, + FLAGS.model_branch, + FLAGS.force_load, + ) trainer.run() def test(FLAGS): - trainer = inference.Tester(FLAGS.model, - input_script=FLAGS.input_script, - system=FLAGS.system, - datafile=FLAGS.datafile, - numb_test=FLAGS.numb_test, - detail_file=FLAGS.detail_file, - shuffle_test=FLAGS.shuffle_test, - head=FLAGS.head) + trainer = inference.Tester( + FLAGS.model, + input_script=FLAGS.input_script, + system=FLAGS.system, + datafile=FLAGS.datafile, + numb_test=FLAGS.numb_test, + detail_file=FLAGS.detail_file, + shuffle_test=FLAGS.shuffle_test, + head=FLAGS.head, + ) trainer.run() def freeze(FLAGS): - model = torch.jit.script(inference.Tester(FLAGS.model, numb_test=1, head=FLAGS.head).model) - torch.jit.save(model, FLAGS.output, { - # TODO: _extra_files - }) + model = torch.jit.script( + inference.Tester(FLAGS.model, numb_test=1, head=FLAGS.head).model + ) + torch.jit.save( + model, + FLAGS.output, + { + # TODO: _extra_files + }, + ) + -#avoid logger conflicts of tf version +# avoid logger conflicts of tf version def clean_loggers(): logger = logging.getLogger() while logger.hasHandlers(): logger.removeHandler(logger.handlers[0]) + + @record def main(args=None): clean_loggers() logging.basicConfig( level=logging.WARNING if env.LOCAL_RANK else logging.INFO, - format=f"%(asctime)-15s {os.environ.get('RANK') or ''} [%(filename)s:%(lineno)d] %(levelname)s %(message)s" + format=f"%(asctime)-15s {os.environ.get('RANK') or ''} [%(filename)s:%(lineno)d] %(levelname)s %(message)s", + ) + logging.info("DeepMD version: %s", __version__) + parser = argparse.ArgumentParser( + description="A tool to manager deep models of potential energy surface." ) - logging.info('DeepMD version: %s', __version__) - parser = argparse.ArgumentParser(description='A tool to manager deep models of potential energy surface.') - subparsers = parser.add_subparsers(dest='command') - train_parser = subparsers.add_parser('train', help='Train a model.') - train_parser.add_argument('INPUT', help='A Json-format configuration file.') + subparsers = parser.add_subparsers(dest="command") + train_parser = subparsers.add_parser("train", help="Train a model.") + train_parser.add_argument("INPUT", help="A Json-format configuration file.") parser_train_subgroup = train_parser.add_mutually_exclusive_group() parser_train_subgroup.add_argument( "-i", @@ -200,13 +305,16 @@ def main(args=None): "-m", "--model-branch", type=str, - default='', + default="", help="Model branch chosen for fine-tuning if multi-task. If not specified, it will re-init the fitting net.", ) - train_parser.add_argument("--force-load", action="store_true", - help='Force load from ckpt, other missing tensors will init from scratch') + train_parser.add_argument( + "--force-load", + action="store_true", + help="Force load from ckpt, other missing tensors will init from scratch", + ) - test_parser = subparsers.add_parser('test', help='Test a model.') + test_parser = subparsers.add_parser("test", help="Test a model.") test_parser_subgroup = test_parser.add_mutually_exclusive_group() test_parser_subgroup.add_argument( "-s", @@ -242,7 +350,9 @@ def main(args=None): type=str, help="Task head to test if in multi-task mode.", ) - test_parser.add_argument("-n", "--numb-test", default=100, type=int, help="The number of data for test") + test_parser.add_argument( + "-n", "--numb-test", default=100, type=int, help="The number of data for test" + ) test_parser.add_argument( "-d", "--detail-file", @@ -254,10 +364,15 @@ def main(args=None): "--shuffle-test", action="store_true", default=False, help="Shuffle test data" ) - freeze_parser = subparsers.add_parser('freeze', help='Freeze a model.') - freeze_parser.add_argument('model', help='Resumes from checkpoint.') - freeze_parser.add_argument("-o", "--output", type=str, default='frozen_model.pth', - help="The frozen model path") + freeze_parser = subparsers.add_parser("freeze", help="Freeze a model.") + freeze_parser.add_argument("model", help="Resumes from checkpoint.") + freeze_parser.add_argument( + "-o", + "--output", + type=str, + default="frozen_model.pth", + help="The frozen model path", + ) freeze_parser.add_argument( "--head", default=None, @@ -266,16 +381,16 @@ def main(args=None): ) FLAGS = parser.parse_args(args) - if FLAGS.command == 'train': + if FLAGS.command == "train": train(FLAGS) - elif FLAGS.command == 'test': + elif FLAGS.command == "test": test(FLAGS) - elif FLAGS.command == 'freeze': + elif FLAGS.command == "freeze": freeze(FLAGS) else: - logging.error('Invalid command!') + logging.error("Invalid command!") parser.print_help() -if __name__ == '__main__': +if __name__ == "__main__": main() diff --git a/deepmd_pt/examples/water/dpa1-denoise/input.json b/deepmd_pt/examples/water/dpa1-denoise/input.json index 4cb57f75..02337de8 100644 --- a/deepmd_pt/examples/water/dpa1-denoise/input.json +++ b/deepmd_pt/examples/water/dpa1-denoise/input.json @@ -1,92 +1,92 @@ { - "_comment": "that's all", - "model": { - "type_map": [ - "O", - "H", - "MASKED_TOKEN" - ], - "descriptor": { - "type": "dpa1", - "sel": 120, - "rcut_smth": 0.5, - "rcut": 6.0, - "neuron": [ - 25, - 50, - 100 - ], - "axis_neuron": 16, - "attn": 128, - "attn_layer": 2, - "attn_dotr": true, - "attn_mask": false, - "post_ln": true, - "ffn": false, - "ffn_embed_dim": 1024, - "activation": "tanh", - "scaling_factor": 1.0, - "head_num": 1, - "normalize": true, - "temperature": 1.0 + "_comment": "that's all", + "model": { + "type_map": [ + "O", + "H", + "MASKED_TOKEN" + ], + "descriptor": { + "type": "dpa1", + "sel": 120, + "rcut_smth": 0.5, + "rcut": 6.0, + "neuron": [ + 25, + 50, + 100 + ], + "axis_neuron": 16, + "attn": 128, + "attn_layer": 2, + "attn_dotr": true, + "attn_mask": false, + "post_ln": true, + "ffn": false, + "ffn_embed_dim": 1024, + "activation": "tanh", + "scaling_factor": 1.0, + "head_num": 1, + "normalize": true, + "temperature": 1.0 + }, + "_comment": " that's all" }, - "_comment": " that's all" - }, - "learning_rate": { - "type": "exp", - "decay_steps": 5000, - "start_lr": 0.001, - "stop_lr": 3.51e-08, - "_comment": "that's all" - }, - "loss": { - "type": "denoise", - "noise_type": "uniform", - "noise": 1.0, - "noise_mode": "fix_num", - "mask_num": 8, - "mask_prob": 0.15, - "mask_coord": true, - "mask_type": false, - "same_mask": false, - "max_fail_num": 10, - "masked_token_loss": 1.0, - "masked_coord_loss": 1.0, - "norm_loss": 0.0, - "use_l1": true, - "beta": 1.0, - "mask_loss_coord": true, - "mask_loss_token": false, - "_comment": " that's all" - }, - "training": { - "training_data": { - "systems": [ - "../data/data_0", - "../data/data_1", - "../data/data_2" - ], - "batch_size": 1, - "_comment": "that's all" + "learning_rate": { + "type": "exp", + "decay_steps": 5000, + "start_lr": 0.001, + "stop_lr": 3.51e-08, + "_comment": "that's all" }, - "validation_data": { - "systems": [ - "../data/data_3" - ], - "batch_size": 1, - "numb_btch": 3, - "_comment": "that's all" + "loss": { + "type": "denoise", + "noise_type": "uniform", + "noise": 1.0, + "noise_mode": "fix_num", + "mask_num": 8, + "mask_prob": 0.15, + "mask_coord": true, + "mask_type": false, + "same_mask": false, + "max_fail_num": 10, + "masked_token_loss": 1.0, + "masked_coord_loss": 1.0, + "norm_loss": 0.0, + "use_l1": true, + "beta": 1.0, + "mask_loss_coord": true, + "mask_loss_token": false, + "_comment": " that's all" }, - "wandb_config":{ - "wandb_enabled": false, - "entity": "dp_model_engineering", - "project": "DPA" - }, - "numb_steps": 1000000, - "seed": 10, - "disp_file": "lcurve.out", - "disp_freq": 100, - "save_freq": 1000, - "_comment": "that's all" - } + "training": { + "training_data": { + "systems": [ + "../data/data_0", + "../data/data_1", + "../data/data_2" + ], + "batch_size": 1, + "_comment": "that's all" + }, + "validation_data": { + "systems": [ + "../data/data_3" + ], + "batch_size": 1, + "numb_btch": 3, + "_comment": "that's all" + }, + "wandb_config": { + "wandb_enabled": false, + "entity": "dp_model_engineering", + "project": "DPA" + }, + "numb_steps": 1000000, + "seed": 10, + "disp_file": "lcurve.out", + "disp_freq": 100, + "save_freq": 1000, + "_comment": "that's all" + } } diff --git a/deepmd_pt/examples/water/dpa1-ener-model6/input.json b/deepmd_pt/examples/water/dpa1-ener-model6/input.json index ce097245..c2d19324 100644 --- a/deepmd_pt/examples/water/dpa1-ener-model6/input.json +++ b/deepmd_pt/examples/water/dpa1-ener-model6/input.json @@ -1,98 +1,100 @@ { - "_comment": "that's all", - "model": { - "type_map": [ - "O", - "H" - ], - "type_embedding": { - "neuron": [8], - "tebd_input_mode": "dot_residual_t" + "_comment": "that's all", + "model": { + "type_map": [ + "O", + "H" + ], + "type_embedding": { + "neuron": [ + 8 + ], + "tebd_input_mode": "dot_residual_t" + }, + "descriptor": { + "type": "se_atten", + "sel": 120, + "rcut_smth": 0.5, + "rcut": 6.0, + "neuron": [ + 25, + 50, + 100 + ], + "resnet_dt": false, + "axis_neuron": 16, + "seed": 1, + "attn": 128, + "attn_layer": 2, + "attn_dotr": true, + "attn_mask": false, + "post_ln": true, + "ffn": false, + "ffn_embed_dim": 1024, + "activation": "tanh", + "scaling_factor": 1.0, + "head_num": 1, + "normalize": true, + "temperature": 1.0, + "_comment": " that's all" + }, + "fitting_net": { + "neuron": [ + 240, + 240, + 240 + ], + "resnet_dt": true, + "seed": 1, + "_comment": " that's all" + }, + "_comment": " that's all" }, - "descriptor": { - "type": "se_atten", - "sel": 120, - "rcut_smth": 0.5, - "rcut": 6.0, - "neuron": [ - 25, - 50, - 100 - ], - "resnet_dt": false, - "axis_neuron": 16, - "seed": 1, - "attn": 128, - "attn_layer": 2, - "attn_dotr": true, - "attn_mask": false, - "post_ln": true, - "ffn": false, - "ffn_embed_dim": 1024, - "activation": "tanh", - "scaling_factor": 1.0, - "head_num": 1, - "normalize": true, - "temperature": 1.0, - "_comment": " that's all" + "learning_rate": { + "type": "exp", + "decay_steps": 5000, + "start_lr": 0.001, + "stop_lr": 3.51e-08, + "_comment": "that's all" }, - "fitting_net": { - "neuron": [ - 240, - 240, - 240 - ], - "resnet_dt": true, - "seed": 1, - "_comment": " that's all" + "loss": { + "type": "ener", + "start_pref_e": 0.02, + "limit_pref_e": 1, + "start_pref_f": 1000, + "limit_pref_f": 1, + "start_pref_v": 0, + "limit_pref_v": 0, + "_comment": " that's all" }, - "_comment": " that's all" - }, - "learning_rate": { - "type": "exp", - "decay_steps": 5000, - "start_lr": 0.001, - "stop_lr": 3.51e-08, - "_comment": "that's all" - }, - "loss": { - "type": "ener", - "start_pref_e": 0.02, - "limit_pref_e": 1, - "start_pref_f": 1000, - "limit_pref_f": 1, - "start_pref_v": 0, - "limit_pref_v": 0, - "_comment": " that's all" - }, - "training": { - "training_data": { - "systems": [ - "../data/data_0", - "../data/data_1", - "../data/data_2" - ], - "batch_size": 1, - "_comment": "that's all" - }, - "validation_data": { - "systems": [ - "../data/data_3" - ], - "batch_size": 1, - "numb_btch": 3, - "_comment": "that's all" - }, - "wandb_config":{ - "wandb_enabled": false, - "entity": "dp_model_engineering", - "project": "DPA" - }, - "numb_steps": 1000000, - "seed": 10, - "disp_file": "lcurve.out", - "disp_freq": 100, - "save_freq": 1000, - "_comment": "that's all" - } + "training": { + "training_data": { + "systems": [ + "../data/data_0", + "../data/data_1", + "../data/data_2" + ], + "batch_size": 1, + "_comment": "that's all" + }, + "validation_data": { + "systems": [ + "../data/data_3" + ], + "batch_size": 1, + "numb_btch": 3, + "_comment": "that's all" + }, + "wandb_config": { + "wandb_enabled": false, + "entity": "dp_model_engineering", + "project": "DPA" + }, + "numb_steps": 1000000, + "seed": 10, + "disp_file": "lcurve.out", + "disp_freq": 100, + "save_freq": 1000, + "_comment": "that's all" + } } diff --git a/deepmd_pt/examples/water/dpa1-ener-warmup-grad-clip/input.json b/deepmd_pt/examples/water/dpa1-ener-warmup-grad-clip/input.json index 1863988e..960e3cbb 100644 --- a/deepmd_pt/examples/water/dpa1-ener-warmup-grad-clip/input.json +++ b/deepmd_pt/examples/water/dpa1-ener-warmup-grad-clip/input.json @@ -1,96 +1,96 @@ { - "_comment": "that's all", - "model": { - "type_map": [ - "O", - "H" - ], - "descriptor": { - "type": "se_atten", - "sel": 120, - "rcut_smth": 0.5, - "rcut": 6.0, - "neuron": [ - 25, - 50, - 100 - ], - "resnet_dt": false, - "axis_neuron": 16, - "seed": 1, - "attn": 128, - "attn_layer": 2, - "attn_dotr": true, - "attn_mask": false, - "post_ln": true, - "ffn": false, - "ffn_embed_dim": 1024, - "activation": "tanh", - "scaling_factor": 1.0, - "head_num": 1, - "normalize": true, - "temperature": 1.0, - "_comment": " that's all" + "_comment": "that's all", + "model": { + "type_map": [ + "O", + "H" + ], + "descriptor": { + "type": "se_atten", + "sel": 120, + "rcut_smth": 0.5, + "rcut": 6.0, + "neuron": [ + 25, + 50, + 100 + ], + "resnet_dt": false, + "axis_neuron": 16, + "seed": 1, + "attn": 128, + "attn_layer": 2, + "attn_dotr": true, + "attn_mask": false, + "post_ln": true, + "ffn": false, + "ffn_embed_dim": 1024, + "activation": "tanh", + "scaling_factor": 1.0, + "head_num": 1, + "normalize": true, + "temperature": 1.0, + "_comment": " that's all" + }, + "fitting_net": { + "neuron": [ + 240, + 240, + 240 + ], + "resnet_dt": true, + "seed": 1, + "_comment": " that's all" + }, + "_comment": " that's all" }, - "fitting_net": { - "neuron": [ - 240, - 240, - 240 - ], - "resnet_dt": true, - "seed": 1, - "_comment": " that's all" + "learning_rate": { + "type": "exp", + "decay_steps": 5000, + "start_lr": 0.001, + "stop_lr": 3.51e-08, + "_comment": "that's all" }, - "_comment": " that's all" - }, - "learning_rate": { - "type": "exp", - "decay_steps": 5000, - "start_lr": 0.001, - "stop_lr": 3.51e-08, - "_comment": "that's all" - }, - "loss": { - "type": "ener", - "start_pref_e": 0.02, - "limit_pref_e": 1, - "start_pref_f": 1000, - "limit_pref_f": 1, - "start_pref_v": 0, - "limit_pref_v": 0, - "_comment": " that's all" - }, - "training": { - "training_data": { - "systems": [ - "../data/data_0", - "../data/data_1", - "../data/data_2" - ], - "batch_size": 1, - "_comment": "that's all" + "loss": { + "type": "ener", + "start_pref_e": 0.02, + "limit_pref_e": 1, + "start_pref_f": 1000, + "limit_pref_f": 1, + "start_pref_v": 0, + "limit_pref_v": 0, + "_comment": " that's all" }, - "validation_data": { - "systems": [ - "../data/data_3" - ], - "batch_size": 1, - "numb_btch": 3, - "_comment": "that's all" - }, - "wandb_config":{ - "wandb_enabled": false, - "entity": "dp_model_engineering", - "project": "DPA" - }, - "numb_steps": 1000000, - "warmup_steps": 10000, - "gradient_max_norm": 5.0, - "seed": 10, - "disp_file": "lcurve.out", - "disp_freq": 100, - "save_freq": 1000, - "_comment": "that's all" - } + "training": { + "training_data": { + "systems": [ + "../data/data_0", + "../data/data_1", + "../data/data_2" + ], + "batch_size": 1, + "_comment": "that's all" + }, + "validation_data": { + "systems": [ + "../data/data_3" + ], + "batch_size": 1, + "numb_btch": 3, + "_comment": "that's all" + }, + "wandb_config": { + "wandb_enabled": false, + "entity": "dp_model_engineering", + "project": "DPA" + }, + "numb_steps": 1000000, + "warmup_steps": 10000, + "gradient_max_norm": 5.0, + "seed": 10, + "disp_file": "lcurve.out", + "disp_freq": 100, + "save_freq": 1000, + "_comment": "that's all" + } } diff --git a/deepmd_pt/examples/water/dpa1-ener/input.json b/deepmd_pt/examples/water/dpa1-ener/input.json index b466ee07..7da3d641 100644 --- a/deepmd_pt/examples/water/dpa1-ener/input.json +++ b/deepmd_pt/examples/water/dpa1-ener/input.json @@ -1,91 +1,91 @@ { - "_comment": "that's all", - "model": { - "type_map": [ - "O", - "H" - ], - "descriptor": { - "type": "dpa1", - "sel": 120, - "rcut_smth": 0.5, - "rcut": 6.0, - "neuron": [ - 25, - 50, - 100 - ], - "axis_neuron": 16, - "attn": 128, - "attn_layer": 2, - "attn_dotr": true, - "attn_mask": false, - "post_ln": true, - "ffn": false, - "ffn_embed_dim": 1024, - "activation": "tanh", - "scaling_factor": 1.0, - "head_num": 1, - "normalize": true, - "temperature": 1.0 + "_comment": "that's all", + "model": { + "type_map": [ + "O", + "H" + ], + "descriptor": { + "type": "dpa1", + "sel": 120, + "rcut_smth": 0.5, + "rcut": 6.0, + "neuron": [ + 25, + 50, + 100 + ], + "axis_neuron": 16, + "attn": 128, + "attn_layer": 2, + "attn_dotr": true, + "attn_mask": false, + "post_ln": true, + "ffn": false, + "ffn_embed_dim": 1024, + "activation": "tanh", + "scaling_factor": 1.0, + "head_num": 1, + "normalize": true, + "temperature": 1.0 + }, + "fitting_net": { + "neuron": [ + 240, + 240, + 240 + ], + "resnet_dt": true, + "seed": 1, + "_comment": " that's all" + }, + "_comment": " that's all" }, - "fitting_net": { - "neuron": [ - 240, - 240, - 240 - ], - "resnet_dt": true, - "seed": 1, - "_comment": " that's all" + "learning_rate": { + "type": "exp", + "decay_steps": 5000, + "start_lr": 0.001, + "stop_lr": 3.51e-08, + "_comment": "that's all" }, - "_comment": " that's all" - }, - "learning_rate": { - "type": "exp", - "decay_steps": 5000, - "start_lr": 0.001, - "stop_lr": 3.51e-08, - "_comment": "that's all" - }, - "loss": { - "type": "ener", - "start_pref_e": 0.02, - "limit_pref_e": 1, - "start_pref_f": 1000, - "limit_pref_f": 1, - "start_pref_v": 0, - "limit_pref_v": 0, - "_comment": " that's all" - }, - "training": { - "training_data": { - "systems": [ - "../data/data_0", - "../data/data_1", - "../data/data_2" - ], - "batch_size": 1, - "_comment": "that's all" + "loss": { + "type": "ener", + "start_pref_e": 0.02, + "limit_pref_e": 1, + "start_pref_f": 1000, + "limit_pref_f": 1, + "start_pref_v": 0, + "limit_pref_v": 0, + "_comment": " that's all" }, - "validation_data": { - "systems": [ - "../data/data_3" - ], - "batch_size": 1, - "numb_btch": 3, - "_comment": "that's all" - }, - "wandb_config":{ - "wandb_enabled": false, - "entity": "dp_model_engineering", - "project": "DPA" - }, - "numb_steps": 1000000, - "seed": 10, - "disp_file": "lcurve.out", - "disp_freq": 100, - "save_freq": 1000, - "_comment": "that's all" - } + "training": { + "training_data": { + "systems": [ + "../data/data_0", + "../data/data_1", + "../data/data_2" + ], + "batch_size": 1, + "_comment": "that's all" + }, + "validation_data": { + "systems": [ + "../data/data_3" + ], + "batch_size": 1, + "numb_btch": 3, + "_comment": "that's all" + }, + "wandb_config": { + "wandb_enabled": false, + "entity": "dp_model_engineering", + "project": "DPA" + }, + "numb_steps": 1000000, + "seed": 10, + "disp_file": "lcurve.out", + "disp_freq": 100, + "save_freq": 1000, + "_comment": "that's all" + } } diff --git a/deepmd_pt/examples/water/dpa1-force-ener/input.json b/deepmd_pt/examples/water/dpa1-force-ener/input.json index b7f158e0..249f2dfa 100644 --- a/deepmd_pt/examples/water/dpa1-force-ener/input.json +++ b/deepmd_pt/examples/water/dpa1-force-ener/input.json @@ -1,90 +1,90 @@ { - "_comment": "that's all", - "model": { - "type_map": [ - "O", - "H" - ], - "descriptor": { - "type": "dpa1", - "sel": 120, - "rcut_smth": 0.5, - "rcut": 6.0, - "neuron": [ - 25, - 50, - 100 - ], - "axis_neuron": 16, - "attn": 128, - "attn_layer": 2, - "attn_dotr": true, - "attn_mask": false, - "post_ln": true, - "ffn": false, - "ffn_embed_dim": 1024, - "activation": "tanh", - "scaling_factor": 1.0, - "head_num": 1, - "normalize": true, - "temperature": 1.0 + "_comment": "that's all", + "model": { + "type_map": [ + "O", + "H" + ], + "descriptor": { + "type": "dpa1", + "sel": 120, + "rcut_smth": 0.5, + "rcut": 6.0, + "neuron": [ + 25, + 50, + 100 + ], + "axis_neuron": 16, + "attn": 128, + "attn_layer": 2, + "attn_dotr": true, + "attn_mask": false, + "post_ln": true, + "ffn": false, + "ffn_embed_dim": 1024, + "activation": "tanh", + "scaling_factor": 1.0, + "head_num": 1, + "normalize": true, + "temperature": 1.0 + }, + "fitting_net": { + "type": "direct_force_ener", + "neuron": [ + 240, + 240, + 240 + ], + "resnet_dt": true, + "seed": 1, + "_comment": " that's all" + }, + "_comment": " that's all" }, - "fitting_net": { - "type": "direct_force_ener", - "neuron": [ - 240, - 240, - 240 - ], - "resnet_dt": true, - "seed": 1, - "_comment": " that's all" + "learning_rate": { + "type": "exp", + "decay_steps": 5000, + "start_lr": 0.001, + "stop_lr": 3.51e-08, + "_comment": "that's all" }, - "_comment": " that's all" - }, - "learning_rate": { - "type": "exp", - "decay_steps": 5000, - "start_lr": 0.001, - "stop_lr": 3.51e-08, - "_comment": "that's all" - }, - "loss": { - "type": "ener", - "start_pref_e": 0.02, - "limit_pref_e": 1, - "start_pref_f": 1000, - "limit_pref_f": 1, - "_comment": " that's all" - }, - "training": { - "training_data": { - "systems": [ - "../data/data_0", - "../data/data_1", - "../data/data_2" - ], - "batch_size": 1, - "_comment": "that's all" + "loss": { + "type": "ener", + "start_pref_e": 0.02, + "limit_pref_e": 1, + "start_pref_f": 1000, + "limit_pref_f": 1, + "_comment": " that's all" }, - "validation_data": { - "systems": [ - "../data/data_3" - ], - "batch_size": 1, - "numb_btch": 3, - "_comment": "that's all" - }, - "wandb_config":{ - "wandb_enabled": false, - "entity": "dp_model_engineering", - "project": "DPA" - }, - "numb_steps": 1000000, - "seed": 10, - "disp_file": "lcurve.out", - "disp_freq": 100, - "save_freq": 1000, - "_comment": "that's all" - } + "training": { + "training_data": { + "systems": [ + "../data/data_0", + "../data/data_1", + "../data/data_2" + ], + "batch_size": 1, + "_comment": "that's all" + }, + "validation_data": { + "systems": [ + "../data/data_3" + ], + "batch_size": 1, + "numb_btch": 3, + "_comment": "that's all" + }, + "wandb_config": { + "wandb_enabled": false, + "entity": "dp_model_engineering", + "project": "DPA" + }, + "numb_steps": 1000000, + "seed": 10, + "disp_file": "lcurve.out", + "disp_freq": 100, + "save_freq": 1000, + "_comment": "that's all" + } } diff --git a/deepmd_pt/examples/water/dpa1-force/input.json b/deepmd_pt/examples/water/dpa1-force/input.json index 51141bfb..79f9af54 100644 --- a/deepmd_pt/examples/water/dpa1-force/input.json +++ b/deepmd_pt/examples/water/dpa1-force/input.json @@ -1,90 +1,90 @@ { - "_comment": "that's all", - "model": { - "type_map": [ - "O", - "H" - ], - "descriptor": { - "type": "dpa1", - "sel": 120, - "rcut_smth": 0.5, - "rcut": 6.0, - "neuron": [ - 25, - 50, - 100 - ], - "axis_neuron": 16, - "attn": 128, - "attn_layer": 2, - "attn_dotr": true, - "attn_mask": false, - "post_ln": true, - "ffn": false, - "ffn_embed_dim": 1024, - "activation": "tanh", - "scaling_factor": 1.0, - "head_num": 1, - "normalize": true, - "temperature": 1.0 + "_comment": "that's all", + "model": { + "type_map": [ + "O", + "H" + ], + "descriptor": { + "type": "dpa1", + "sel": 120, + "rcut_smth": 0.5, + "rcut": 6.0, + "neuron": [ + 25, + 50, + 100 + ], + "axis_neuron": 16, + "attn": 128, + "attn_layer": 2, + "attn_dotr": true, + "attn_mask": false, + "post_ln": true, + "ffn": false, + "ffn_embed_dim": 1024, + "activation": "tanh", + "scaling_factor": 1.0, + "head_num": 1, + "normalize": true, + "temperature": 1.0 + }, + "fitting_net": { + "type": "direct_force", + "neuron": [ + 240, + 240, + 240 + ], + "resnet_dt": true, + "seed": 1, + "_comment": " that's all" + }, + "_comment": " that's all" }, - "fitting_net": { - "type": "direct_force", - "neuron": [ - 240, - 240, - 240 - ], - "resnet_dt": true, - "seed": 1, - "_comment": " that's all" + "learning_rate": { + "type": "exp", + "decay_steps": 5000, + "start_lr": 0.001, + "stop_lr": 3.51e-08, + "_comment": "that's all" }, - "_comment": " that's all" - }, - "learning_rate": { - "type": "exp", - "decay_steps": 5000, - "start_lr": 0.001, - "stop_lr": 3.51e-08, - "_comment": "that's all" - }, - "loss": { - "type": "ener", - "start_pref_e": 0, - "limit_pref_e": 0, - "start_pref_f": 1, - "limit_pref_f": 1, - "_comment": " that's all" - }, - "training": { - "training_data": { - "systems": [ - "../data/data_0", - "../data/data_1", - "../data/data_2" - ], - "batch_size": 1, - "_comment": "that's all" + "loss": { + "type": "ener", + "start_pref_e": 0, + "limit_pref_e": 0, + "start_pref_f": 1, + "limit_pref_f": 1, + "_comment": " that's all" }, - "validation_data": { - "systems": [ - "../data/data_3" - ], - "batch_size": 1, - "numb_btch": 3, - "_comment": "that's all" - }, - "wandb_config":{ - "wandb_enabled": false, - "entity": "dp_model_engineering", - "project": "DPA" - }, - "numb_steps": 1000000, - "seed": 10, - "disp_file": "lcurve.out", - "disp_freq": 100, - "save_freq": 1000, - "_comment": "that's all" - } + "training": { + "training_data": { + "systems": [ + "../data/data_0", + "../data/data_1", + "../data/data_2" + ], + "batch_size": 1, + "_comment": "that's all" + }, + "validation_data": { + "systems": [ + "../data/data_3" + ], + "batch_size": 1, + "numb_btch": 3, + "_comment": "that's all" + }, + "wandb_config": { + "wandb_enabled": false, + "entity": "dp_model_engineering", + "project": "DPA" + }, + "numb_steps": 1000000, + "seed": 10, + "disp_file": "lcurve.out", + "disp_freq": 100, + "save_freq": 1000, + "_comment": "that's all" + } } diff --git a/deepmd_pt/examples/water/dpa2-denoise/input.json b/deepmd_pt/examples/water/dpa2-denoise/input.json index acbed6bd..326c77fd 100644 --- a/deepmd_pt/examples/water/dpa2-denoise/input.json +++ b/deepmd_pt/examples/water/dpa2-denoise/input.json @@ -1,108 +1,108 @@ { - "_comment": "that's all", - "model": { - "type_map": [ - "O", - "H", - "MASKED_TOKEN" - ], - "descriptor": { - "type": "se_atten", - "sel": 120, - "rcut_smth": 0.5, - "rcut": 6.0, - "neuron": [ - 25, - 50, - 100 - ], - "resnet_dt": false, - "axis_neuron": 16, - "seed": 1, - "attn": 128, - "attn_layer": 2, - "attn_dotr": true, - "attn_mask": false, - "post_ln": true, - "ffn": false, - "ffn_embed_dim": 1024, - "activation": "tanh", - "scaling_factor": 1.0, - "head_num": 1, - "normalize": true, - "temperature": 1.0, - "_comment": " that's all" + "_comment": "that's all", + "model": { + "type_map": [ + "O", + "H", + "MASKED_TOKEN" + ], + "descriptor": { + "type": "se_atten", + "sel": 120, + "rcut_smth": 0.5, + "rcut": 6.0, + "neuron": [ + 25, + 50, + 100 + ], + "resnet_dt": false, + "axis_neuron": 16, + "seed": 1, + "attn": 128, + "attn_layer": 2, + "attn_dotr": true, + "attn_mask": false, + "post_ln": true, + "ffn": false, + "ffn_embed_dim": 1024, + "activation": "tanh", + "scaling_factor": 1.0, + "head_num": 1, + "normalize": true, + "temperature": 1.0, + "_comment": " that's all" + }, + "backbone": { + "type": "evo-2b", + "layer_num": 6, + "attn_head": 8, + "feature_dim": 1024, + "ffn_dim": 2048, + "post_ln": false, + "final_layer_norm": true, + "final_head_layer_norm": false, + "emb_layer_norm": false, + "atomic_residual": false, + "activation_function": "gelu" + }, + "_comment": " that's all" }, - "backbone":{ - "type": "evo-2b", - "layer_num": 6, - "attn_head": 8, - "feature_dim": 1024, - "ffn_dim": 2048, - "post_ln": false, - "final_layer_norm": true, - "final_head_layer_norm": false, - "emb_layer_norm": false, - "atomic_residual": false, - "activation_function": "gelu" + "learning_rate": { + "type": "exp", + "decay_steps": 5000, + "start_lr": 0.001, + "stop_lr": 3.51e-08, + "_comment": "that's all" }, - "_comment": " that's all" - }, - "learning_rate": { - "type": "exp", - "decay_steps": 5000, - "start_lr": 0.001, - "stop_lr": 3.51e-08, - "_comment": "that's all" - }, - "loss": { - "type": "denoise", - "noise_type": "uniform", - "noise": 1.0, - "noise_mode": "fix_num", - "mask_num": 8, - "mask_prob": 0.15, - "mask_coord": true, - "mask_type": false, - "same_mask": false, - "max_fail_num": 10, - "masked_token_loss": 1.0, - "masked_coord_loss": 1.0, - "norm_loss": 0.0, - "use_l1": true, - "beta": 1.0, - "mask_loss_coord": true, - "mask_loss_token": false, - "_comment": " that's all" - }, - "training": { - "training_data": { - "systems": [ - "../data/data_0", - "../data/data_1", - "../data/data_2" - ], - "batch_size": 1, - "_comment": "that's all" + "loss": { + "type": "denoise", + "noise_type": "uniform", + "noise": 1.0, + "noise_mode": "fix_num", + "mask_num": 8, + "mask_prob": 0.15, + "mask_coord": true, + "mask_type": false, + "same_mask": false, + "max_fail_num": 10, + "masked_token_loss": 1.0, + "masked_coord_loss": 1.0, + "norm_loss": 0.0, + "use_l1": true, + "beta": 1.0, + "mask_loss_coord": true, + "mask_loss_token": false, + "_comment": " that's all" }, - "validation_data": { - "systems": [ - "../data/data_3" - ], - "batch_size": 1, - "numb_btch": 3, - "_comment": "that's all" - }, - "wandb_config":{ - "wandb_enabled": false, - "entity": "dp_model_engineering", - "project": "DPA" - }, - "numb_steps": 1000000, - "seed": 10, - "disp_file": "lcurve.out", - "disp_freq": 100, - "save_freq": 1000, - "_comment": "that's all" - } + "training": { + "training_data": { + "systems": [ + "../data/data_0", + "../data/data_1", + "../data/data_2" + ], + "batch_size": 1, + "_comment": "that's all" + }, + "validation_data": { + "systems": [ + "../data/data_3" + ], + "batch_size": 1, + "numb_btch": 3, + "_comment": "that's all" + }, + "wandb_config": { + "wandb_enabled": false, + "entity": "dp_model_engineering", + "project": "DPA" + }, + "numb_steps": 1000000, + "seed": 10, + "disp_file": "lcurve.out", + "disp_freq": 100, + "save_freq": 1000, + "_comment": "that's all" + } } diff --git a/deepmd_pt/examples/water/dpa2-ener/input.json b/deepmd_pt/examples/water/dpa2-ener/input.json index 57a934a3..c124e712 100644 --- a/deepmd_pt/examples/water/dpa2-ener/input.json +++ b/deepmd_pt/examples/water/dpa2-ener/input.json @@ -1,103 +1,107 @@ { - "_comment": "that's all", - "model": { - "type_embedding": { - "neuron": [ - 8 - ], - "tebd_input_mode": "concat" - }, - "type_map": [ - "O", - "H" - ], - "descriptor": { - "type": "dpa2", - "repinit_rcut": 9.0, - "repinit_rcut_smth": 8.0, - "repinit_nsel": 120, - "repformer_rcut": 4.0, - "repformer_rcut_smth": 3.5, - "repformer_nsel": 40, - "repinit_neuron": [25, 50, 100], - "repinit_axis_neuron": 12, - "repinit_activation": "tanh", - "repformer_nlayers": 12, - "repformer_g1_dim": 128, - "repformer_g2_dim": 32, - "repformer_attn2_hidden": 32, - "repformer_attn2_nhead": 4, - "repformer_attn1_hidden": 128, - "repformer_attn1_nhead": 4, - "repformer_axis_dim": 4, - "repformer_update_h2": false, - "repformer_update_g1_has_conv": true, - "repformer_update_g1_has_grrg": true, - "repformer_update_g1_has_drrd": true, - "repformer_update_g1_has_attn": true, - "repformer_update_g2_has_g1g1": true, - "repformer_update_g2_has_attn": true, - "repformer_attn2_has_gate": true, - "repformer_add_type_ebd_to_seq": false - }, - "fitting_net": { - "neuron": [ - 240, - 240, - 240 - ], - "resnet_dt": true, - "seed": 1, - "_comment": " that's all" - }, - "_comment": " that's all" + "_comment": "that's all", + "model": { + "type_embedding": { + "neuron": [ + 8 + ], + "tebd_input_mode": "concat" + }, + "type_map": [ + "O", + "H" + ], + "descriptor": { + "type": "dpa2", + "repinit_rcut": 9.0, + "repinit_rcut_smth": 8.0, + "repinit_nsel": 120, + "repformer_rcut": 4.0, + "repformer_rcut_smth": 3.5, + "repformer_nsel": 40, + "repinit_neuron": [ + 25, + 50, + 100 + ], + "repinit_axis_neuron": 12, + "repinit_activation": "tanh", + "repformer_nlayers": 12, + "repformer_g1_dim": 128, + "repformer_g2_dim": 32, + "repformer_attn2_hidden": 32, + "repformer_attn2_nhead": 4, + "repformer_attn1_hidden": 128, + "repformer_attn1_nhead": 4, + "repformer_axis_dim": 4, + "repformer_update_h2": false, + "repformer_update_g1_has_conv": true, + "repformer_update_g1_has_grrg": true, + "repformer_update_g1_has_drrd": true, + "repformer_update_g1_has_attn": true, + "repformer_update_g2_has_g1g1": true, + "repformer_update_g2_has_attn": true, + "repformer_attn2_has_gate": true, + "repformer_add_type_ebd_to_seq": false }, - "learning_rate": { - "type": "exp", - "decay_steps": 5000, - "start_lr": 0.0002, - "stop_lr": 3.51e-08, - "_comment": "that's all" + "fitting_net": { + "neuron": [ + 240, + 240, + 240 + ], + "resnet_dt": true, + "seed": 1, + "_comment": " that's all" }, - "loss": { - "type": "ener", - "start_pref_e": 0.02, - "limit_pref_e": 1, - "start_pref_f": 1000, - "limit_pref_f": 1, - "start_pref_v": 0, - "limit_pref_v": 0, - "_comment": " that's all" + "_comment": " that's all" + }, + "learning_rate": { + "type": "exp", + "decay_steps": 5000, + "start_lr": 0.0002, + "stop_lr": 3.51e-08, + "_comment": "that's all" + }, + "loss": { + "type": "ener", + "start_pref_e": 0.02, + "limit_pref_e": 1, + "start_pref_f": 1000, + "limit_pref_f": 1, + "start_pref_v": 0, + "limit_pref_v": 0, + "_comment": " that's all" + }, + "training": { + "training_data": { + "systems": [ + "../data/data_0", + "../data/data_1", + "../data/data_2" + ], + "batch_size": 1, + "_comment": "that's all" }, - "training": { - "training_data": { - "systems": [ - "../data/data_0", - "../data/data_1", - "../data/data_2" - ], - "batch_size": 1, - "_comment": "that's all" - }, - "validation_data": { - "systems": [ - "../data/data_3" - ], - "batch_size": 1, - "_comment": "that's all" - }, - "numb_steps": 1000000, - "warmup_steps": 0, - "gradient_max_norm": 5.0, - "seed": 10, - "disp_file": "lcurve.out", - "disp_freq": 100, - "save_freq": 2000, - "_comment": "that's all", - "wandb_config": { - "wandb_enabled": false, - "entity": "dp_model_engineering", - "project": "DPA" - } + "validation_data": { + "systems": [ + "../data/data_3" + ], + "batch_size": 1, + "_comment": "that's all" + }, + "numb_steps": 1000000, + "warmup_steps": 0, + "gradient_max_norm": 5.0, + "seed": 10, + "disp_file": "lcurve.out", + "disp_freq": 100, + "save_freq": 2000, + "_comment": "that's all", + "wandb_config": { + "wandb_enabled": false, + "entity": "dp_model_engineering", + "project": "DPA" } + } } diff --git a/deepmd_pt/examples/water/dpa2-force-ener/input.json b/deepmd_pt/examples/water/dpa2-force-ener/input.json index 30959bff..5804deb7 100644 --- a/deepmd_pt/examples/water/dpa2-force-ener/input.json +++ b/deepmd_pt/examples/water/dpa2-force-ener/input.json @@ -1,104 +1,108 @@ { - "_comment": "that's all", - "model": { - "type_embedding": { - "neuron": [ - 8 - ], - "tebd_input_mode": "concat" - }, - "type_map": [ - "O", - "H" - ], - "descriptor": { - "type": "dpa2", - "repinit_rcut": 9.0, - "repinit_rcut_smth": 8.0, - "repinit_nsel": 120, - "repformer_rcut": 4.0, - "repformer_rcut_smth": 3.5, - "repformer_nsel": 40, - "repinit_neuron": [25, 50, 100], - "repinit_axis_neuron": 12, - "repinit_activation": "tanh", - "repformer_nlayers": 12, - "repformer_g1_dim": 128, - "repformer_g2_dim": 32, - "repformer_attn2_hidden": 32, - "repformer_attn2_nhead": 4, - "repformer_attn1_hidden": 128, - "repformer_attn1_nhead": 4, - "repformer_axis_dim": 4, - "repformer_update_h2": false, - "repformer_update_g1_has_conv": true, - "repformer_update_g1_has_grrg": true, - "repformer_update_g1_has_drrd": true, - "repformer_update_g1_has_attn": true, - "repformer_update_g2_has_g1g1": true, - "repformer_update_g2_has_attn": true, - "repformer_attn2_has_gate": true, - "repformer_add_type_ebd_to_seq": false - }, - "fitting_net": { - "type": "direct_force_ener", - "neuron": [ - 240, - 240, - 240 - ], - "resnet_dt": true, - "seed": 1, - "_comment": " that's all" - }, - "_comment": " that's all" + "_comment": "that's all", + "model": { + "type_embedding": { + "neuron": [ + 8 + ], + "tebd_input_mode": "concat" + }, + "type_map": [ + "O", + "H" + ], + "descriptor": { + "type": "dpa2", + "repinit_rcut": 9.0, + "repinit_rcut_smth": 8.0, + "repinit_nsel": 120, + "repformer_rcut": 4.0, + "repformer_rcut_smth": 3.5, + "repformer_nsel": 40, + "repinit_neuron": [ + 25, + 50, + 100 + ], + "repinit_axis_neuron": 12, + "repinit_activation": "tanh", + "repformer_nlayers": 12, + "repformer_g1_dim": 128, + "repformer_g2_dim": 32, + "repformer_attn2_hidden": 32, + "repformer_attn2_nhead": 4, + "repformer_attn1_hidden": 128, + "repformer_attn1_nhead": 4, + "repformer_axis_dim": 4, + "repformer_update_h2": false, + "repformer_update_g1_has_conv": true, + "repformer_update_g1_has_grrg": true, + "repformer_update_g1_has_drrd": true, + "repformer_update_g1_has_attn": true, + "repformer_update_g2_has_g1g1": true, + "repformer_update_g2_has_attn": true, + "repformer_attn2_has_gate": true, + "repformer_add_type_ebd_to_seq": false }, - "learning_rate": { - "type": "exp", - "decay_steps": 5000, - "start_lr": 0.0002, - "stop_lr": 3.51e-08, - "_comment": "that's all" + "fitting_net": { + "type": "direct_force_ener", + "neuron": [ + 240, + 240, + 240 + ], + "resnet_dt": true, + "seed": 1, + "_comment": " that's all" }, - "loss": { - "type": "ener", - "start_pref_e": 0.02, - "limit_pref_e": 1, - "start_pref_f": 1000, - "limit_pref_f": 1, - "start_pref_v": 0, - "limit_pref_v": 0, - "_comment": " that's all" + "_comment": " that's all" + }, + "learning_rate": { + "type": "exp", + "decay_steps": 5000, + "start_lr": 0.0002, + "stop_lr": 3.51e-08, + "_comment": "that's all" + }, + "loss": { + "type": "ener", + "start_pref_e": 0.02, + "limit_pref_e": 1, + "start_pref_f": 1000, + "limit_pref_f": 1, + "start_pref_v": 0, + "limit_pref_v": 0, + "_comment": " that's all" + }, + "training": { + "training_data": { + "systems": [ + "../data/data_0", + "../data/data_1", + "../data/data_2" + ], + "batch_size": 1, + "_comment": "that's all" }, - "training": { - "training_data": { - "systems": [ - "../data/data_0", - "../data/data_1", - "../data/data_2" - ], - "batch_size": 1, - "_comment": "that's all" - }, - "validation_data": { - "systems": [ - "../data/data_3" - ], - "batch_size": 1, - "_comment": "that's all" - }, - "numb_steps": 1000000, - "warmup_steps": 0, - "gradient_max_norm": 5.0, - "seed": 10, - "disp_file": "lcurve.out", - "disp_freq": 100, - "save_freq": 2000, - "_comment": "that's all", - "wandb_config": { - "wandb_enabled": false, - "entity": "dp_model_engineering", - "project": "DPA" - } + "validation_data": { + "systems": [ + "../data/data_3" + ], + "batch_size": 1, + "_comment": "that's all" + }, + "numb_steps": 1000000, + "warmup_steps": 0, + "gradient_max_norm": 5.0, + "seed": 10, + "disp_file": "lcurve.out", + "disp_freq": 100, + "save_freq": 2000, + "_comment": "that's all", + "wandb_config": { + "wandb_enabled": false, + "entity": "dp_model_engineering", + "project": "DPA" } + } } diff --git a/deepmd_pt/examples/water/dpa2-force/input.json b/deepmd_pt/examples/water/dpa2-force/input.json index 80667dd7..7d61cf15 100644 --- a/deepmd_pt/examples/water/dpa2-force/input.json +++ b/deepmd_pt/examples/water/dpa2-force/input.json @@ -1,105 +1,108 @@ { - "_comment": "that's all", - "model": { - "type_embedding": { - "neuron": [ - 8 - ], - "tebd_input_mode": "concat" - }, - "type_map": [ - "O", - "H" - ], - "descriptor": { - "type": "dpa2", - "repinit_rcut": 9.0, - "repinit_rcut_smth": 8.0, - "repinit_nsel": 120, - "repformer_rcut": 4.0, - "repformer_rcut_smth": 3.5, - "repformer_nsel": 40, - "repinit_neuron": [25, 50, 100], - "repinit_axis_neuron": 12, - "repinit_activation": "tanh", - "repformer_nlayers": 12, - "repformer_g1_dim": 128, - "repformer_g2_dim": 32, - "repformer_attn2_hidden": 32, - "repformer_attn2_nhead": 4, - "repformer_attn1_hidden": 128, - "repformer_attn1_nhead": 4, - "repformer_axis_dim": 4, - "repformer_update_h2": false, - "repformer_update_g1_has_conv": true, - "repformer_update_g1_has_grrg": true, - "repformer_update_g1_has_drrd": true, - "repformer_update_g1_has_attn": true, - "repformer_update_g2_has_g1g1": true, - "repformer_update_g2_has_attn": true, - "repformer_attn2_has_gate": true, - "repformer_add_type_ebd_to_seq": false - }, - "fitting_net": { - "type": "direct_force", - "neuron": [ - 240, - 240, - 240 - ], - "resnet_dt": true, - "seed": 1, - "_comment": " that's all" - }, - "_comment": " that's all" + "_comment": "that's all", + "model": { + "type_embedding": { + "neuron": [ + 8 + ], + "tebd_input_mode": "concat" + }, + "type_map": [ + "O", + "H" + ], + "descriptor": { + "type": "dpa2", + "repinit_rcut": 9.0, + "repinit_rcut_smth": 8.0, + "repinit_nsel": 120, + "repformer_rcut": 4.0, + "repformer_rcut_smth": 3.5, + "repformer_nsel": 40, + "repinit_neuron": [ + 25, + 50, + 100 + ], + "repinit_axis_neuron": 12, + "repinit_activation": "tanh", + "repformer_nlayers": 12, + "repformer_g1_dim": 128, + "repformer_g2_dim": 32, + "repformer_attn2_hidden": 32, + "repformer_attn2_nhead": 4, + "repformer_attn1_hidden": 128, + "repformer_attn1_nhead": 4, + "repformer_axis_dim": 4, + "repformer_update_h2": false, + "repformer_update_g1_has_conv": true, + "repformer_update_g1_has_grrg": true, + "repformer_update_g1_has_drrd": true, + "repformer_update_g1_has_attn": true, + "repformer_update_g2_has_g1g1": true, + "repformer_update_g2_has_attn": true, + "repformer_attn2_has_gate": true, + "repformer_add_type_ebd_to_seq": false }, - "learning_rate": { - "type": "exp", - "decay_steps": 5000, - "start_lr": 0.0002, - "stop_lr": 3.51e-08, - "_comment": "that's all" + "fitting_net": { + "type": "direct_force", + "neuron": [ + 240, + 240, + 240 + ], + "resnet_dt": true, + "seed": 1, + "_comment": " that's all" }, - "loss": { - "type": "ener", - "start_pref_e": 0, - "limit_pref_e": 0, - "start_pref_f": 1, - "limit_pref_f": 1, - "start_pref_v": 0, - "limit_pref_v": 0, - "_comment": " that's all" + "_comment": " that's all" + }, + "learning_rate": { + "type": "exp", + "decay_steps": 5000, + "start_lr": 0.0002, + "stop_lr": 3.51e-08, + "_comment": "that's all" + }, + "loss": { + "type": "ener", + "start_pref_e": 0, + "limit_pref_e": 0, + "start_pref_f": 1, + "limit_pref_f": 1, + "start_pref_v": 0, + "limit_pref_v": 0, + "_comment": " that's all" + }, + "training": { + "training_data": { + "systems": [ + "../data/data_0", + "../data/data_1", + "../data/data_2" + ], + "batch_size": 1, + "_comment": "that's all" }, - "training": { - "training_data": { - "systems": [ - "../data/data_0", - "../data/data_1", - "../data/data_2" - ], - "batch_size": 1, - "_comment": "that's all" - }, - "validation_data": { - "systems": [ - "../data/data_3" - ], - "batch_size": 1, - "_comment": "that's all" - }, - "numb_steps": 1000000, - "warmup_steps": 0, - "gradient_max_norm": 5.0, - "seed": 10, - "disp_file": "lcurve.out", - "disp_freq": 100, - "save_freq": 2000, - "_comment": "that's all", - "wandb_config": { - "wandb_enabled": false, - "entity": "dp_model_engineering", - "project": "DPA" - } + "validation_data": { + "systems": [ + "../data/data_3" + ], + "batch_size": 1, + "_comment": "that's all" + }, + "numb_steps": 1000000, + "warmup_steps": 0, + "gradient_max_norm": 5.0, + "seed": 10, + "disp_file": "lcurve.out", + "disp_freq": 100, + "save_freq": 2000, + "_comment": "that's all", + "wandb_config": { + "wandb_enabled": false, + "entity": "dp_model_engineering", + "project": "DPA" } + } } - diff --git a/deepmd_pt/examples/water/dpau-denoise/input.json b/deepmd_pt/examples/water/dpau-denoise/input.json index c4ccffd1..56bc0dd3 100644 --- a/deepmd_pt/examples/water/dpau-denoise/input.json +++ b/deepmd_pt/examples/water/dpau-denoise/input.json @@ -1,10 +1,16 @@ { - "_comment": "that's all", - "model": { - "type_map": ["O","H","MASKED_TOKEN"], - "descriptor": { + "_comment": "that's all", + "model": { + "type_map": [ + "O", + "H", + "MASKED_TOKEN" + ], + "descriptor": { "type": "se_uni", - "sel": [40], + "sel": [ + 40 + ], "rcut_smth": 0.5, "rcut": 4.0, "nlayers": 3, @@ -22,65 +28,65 @@ "update_g1_has_attn": true, "update_g2_has_g1g1": true, "update_g2_has_attn": true, + "_comment": " that's all" + }, "_comment": " that's all" }, - "_comment": " that's all" - }, - "learning_rate": { - "type": "exp", - "decay_steps": 5000, - "start_lr": 0.001, - "stop_lr": 3.51e-08, - "_comment": "that's all" - }, - "loss": { - "type": "denoise", - "noise_type": "uniform", - "noise": 1.0, - "noise_mode": "fix_num", - "mask_num": 8, - "mask_prob": 0.15, - "mask_coord": true, - "mask_type": false, - "same_mask": false, - "max_fail_num": 10, - "masked_token_loss": 1.0, - "masked_coord_loss": 1.0, - "norm_loss": 0.0, - "use_l1": true, - "beta": 1.0, - "mask_loss_coord": true, - "mask_loss_token": false, - "_comment": " that's all" - }, - "training": { - "training_data": { - "systems": [ - "../data/data_0", - "../data/data_1", - "../data/data_2" - ], - "batch_size": 1, - "_comment": "that's all" + "learning_rate": { + "type": "exp", + "decay_steps": 5000, + "start_lr": 0.001, + "stop_lr": 3.51e-08, + "_comment": "that's all" }, - "validation_data": { - "systems": [ - "../data/data_3" - ], - "batch_size": 1, - "numb_btch": 3, - "_comment": "that's all" - }, - "wandb_config":{ - "wandb_enabled": false, - "entity": "dp_model_engineering", - "project": "DPA" + "loss": { + "type": "denoise", + "noise_type": "uniform", + "noise": 1.0, + "noise_mode": "fix_num", + "mask_num": 8, + "mask_prob": 0.15, + "mask_coord": true, + "mask_type": false, + "same_mask": false, + "max_fail_num": 10, + "masked_token_loss": 1.0, + "masked_coord_loss": 1.0, + "norm_loss": 0.0, + "use_l1": true, + "beta": 1.0, + "mask_loss_coord": true, + "mask_loss_token": false, + "_comment": " that's all" }, - "numb_steps": 1000000, - "seed": 10, - "disp_file": "lcurve.out", - "disp_freq": 100, - "save_freq": 1000, - "_comment": "that's all" - } + "training": { + "training_data": { + "systems": [ + "../data/data_0", + "../data/data_1", + "../data/data_2" + ], + "batch_size": 1, + "_comment": "that's all" + }, + "validation_data": { + "systems": [ + "../data/data_3" + ], + "batch_size": 1, + "numb_btch": 3, + "_comment": "that's all" + }, + "wandb_config": { + "wandb_enabled": false, + "entity": "dp_model_engineering", + "project": "DPA" + }, + "numb_steps": 1000000, + "seed": 10, + "disp_file": "lcurve.out", + "disp_freq": 100, + "save_freq": 1000, + "_comment": "that's all" + } } diff --git a/deepmd_pt/examples/water/dpau-ener/input.json b/deepmd_pt/examples/water/dpau-ener/input.json index a97c9044..c9b33929 100644 --- a/deepmd_pt/examples/water/dpau-ener/input.json +++ b/deepmd_pt/examples/water/dpau-ener/input.json @@ -1,10 +1,15 @@ { - "_comment": "that's all", - "model": { - "type_map": ["O","H"], - "descriptor": { + "_comment": "that's all", + "model": { + "type_map": [ + "O", + "H" + ], + "descriptor": { "type": "se_uni", - "sel": [40], + "sel": [ + 40 + ], "rcut_smth": 0.5, "rcut": 4.0, "nlayers": 3, @@ -22,65 +27,65 @@ "update_g1_has_attn": true, "update_g2_has_g1g1": true, "update_g2_has_attn": true, + "_comment": " that's all" + }, + "fitting_net": { + "neuron": [ + 240, + 240, + 240 + ], + "resnet_dt": true, + "seed": 1, + "_comment": " that's all" + }, "_comment": " that's all" }, - "fitting_net": { - "neuron": [ - 240, - 240, - 240 - ], - "resnet_dt": true, - "seed": 1, - "_comment": " that's all" + "learning_rate": { + "type": "exp", + "decay_steps": 5000, + "start_lr": 0.001, + "stop_lr": 3.51e-08, + "_comment": "that's all" }, - "_comment": " that's all" - }, - "learning_rate": { - "type": "exp", - "decay_steps": 5000, - "start_lr": 0.001, - "stop_lr": 3.51e-08, - "_comment": "that's all" - }, - "loss": { - "type": "ener", - "start_pref_e": 0.02, - "limit_pref_e": 1, - "start_pref_f": 1000, - "limit_pref_f": 1, - "start_pref_v": 0, - "limit_pref_v": 0, - "_comment": " that's all" - }, - "training": { - "training_data": { - "systems": [ - "../data/data_0", - "../data/data_1", - "../data/data_2" - ], - "batch_size": 1, - "_comment": "that's all" - }, - "validation_data": { - "systems": [ - "../data/data_3" - ], - "batch_size": 1, - "numb_btch": 3, - "_comment": "that's all" - }, - "wandb_config":{ - "wandb_enabled": false, - "entity": "dp_model_engineering", - "project": "DPA" + "loss": { + "type": "ener", + "start_pref_e": 0.02, + "limit_pref_e": 1, + "start_pref_f": 1000, + "limit_pref_f": 1, + "start_pref_v": 0, + "limit_pref_v": 0, + "_comment": " that's all" }, - "numb_steps": 1000000, - "seed": 10, - "disp_file": "lcurve.out", - "disp_freq": 100, - "save_freq": 1000, - "_comment": "that's all" - } + "training": { + "training_data": { + "systems": [ + "../data/data_0", + "../data/data_1", + "../data/data_2" + ], + "batch_size": 1, + "_comment": "that's all" + }, + "validation_data": { + "systems": [ + "../data/data_3" + ], + "batch_size": 1, + "numb_btch": 3, + "_comment": "that's all" + }, + "wandb_config": { + "wandb_enabled": false, + "entity": "dp_model_engineering", + "project": "DPA" + }, + "numb_steps": 1000000, + "seed": 10, + "disp_file": "lcurve.out", + "disp_freq": 100, + "save_freq": 1000, + "_comment": "that's all" + } } diff --git a/deepmd_pt/examples/water/dpau-force-ener/input.json b/deepmd_pt/examples/water/dpau-force-ener/input.json index e07bf667..48193d4f 100644 --- a/deepmd_pt/examples/water/dpau-force-ener/input.json +++ b/deepmd_pt/examples/water/dpau-force-ener/input.json @@ -1,10 +1,15 @@ { - "_comment": "that's all", - "model": { - "type_map": ["O","H"], - "descriptor": { + "_comment": "that's all", + "model": { + "type_map": [ + "O", + "H" + ], + "descriptor": { "type": "se_uni", - "sel": [40], + "sel": [ + 40 + ], "rcut_smth": 0.5, "rcut": 4.0, "nlayers": 3, @@ -22,64 +27,64 @@ "update_g1_has_attn": true, "update_g2_has_g1g1": true, "update_g2_has_attn": true, + "_comment": " that's all" + }, + "fitting_net": { + "type": "direct_force_ener", + "neuron": [ + 240, + 240, + 240 + ], + "resnet_dt": true, + "seed": 1, + "_comment": " that's all" + }, "_comment": " that's all" }, - "fitting_net": { - "type": "direct_force_ener", - "neuron": [ - 240, - 240, - 240 - ], - "resnet_dt": true, - "seed": 1, - "_comment": " that's all" + "learning_rate": { + "type": "exp", + "decay_steps": 5000, + "start_lr": 0.001, + "stop_lr": 3.51e-08, + "_comment": "that's all" }, - "_comment": " that's all" - }, - "learning_rate": { - "type": "exp", - "decay_steps": 5000, - "start_lr": 0.001, - "stop_lr": 3.51e-08, - "_comment": "that's all" - }, - "loss": { - "type": "ener", - "start_pref_e": 0.02, - "limit_pref_e": 1, - "start_pref_f": 1000, - "limit_pref_f": 1, - "_comment": " that's all" - }, - "training": { - "training_data": { - "systems": [ - "../data/data_0", - "../data/data_1", - "../data/data_2" - ], - "batch_size": 1, - "_comment": "that's all" - }, - "validation_data": { - "systems": [ - "../data/data_3" - ], - "batch_size": 1, - "numb_btch": 3, - "_comment": "that's all" - }, - "wandb_config":{ - "wandb_enabled": false, - "entity": "dp_model_engineering", - "project": "DPA" + "loss": { + "type": "ener", + "start_pref_e": 0.02, + "limit_pref_e": 1, + "start_pref_f": 1000, + "limit_pref_f": 1, + "_comment": " that's all" }, - "numb_steps": 1000000, - "seed": 10, - "disp_file": "lcurve.out", - "disp_freq": 100, - "save_freq": 1000, - "_comment": "that's all" - } + "training": { + "training_data": { + "systems": [ + "../data/data_0", + "../data/data_1", + "../data/data_2" + ], + "batch_size": 1, + "_comment": "that's all" + }, + "validation_data": { + "systems": [ + "../data/data_3" + ], + "batch_size": 1, + "numb_btch": 3, + "_comment": "that's all" + }, + "wandb_config": { + "wandb_enabled": false, + "entity": "dp_model_engineering", + "project": "DPA" + }, + "numb_steps": 1000000, + "seed": 10, + "disp_file": "lcurve.out", + "disp_freq": 100, + "save_freq": 1000, + "_comment": "that's all" + } } diff --git a/deepmd_pt/examples/water/hybrid-denoise/input.json b/deepmd_pt/examples/water/hybrid-denoise/input.json index 063bcd41..bee0cb5c 100644 --- a/deepmd_pt/examples/water/hybrid-denoise/input.json +++ b/deepmd_pt/examples/water/hybrid-denoise/input.json @@ -1,128 +1,128 @@ { - "_comment": "that's all", - "model": { - "type_map": [ - "O", - "H", - "MASKED_TOKEN" - ], - "descriptor": { - "type": "hybrid", - "hybrid_mode": "sequential", - "list": [ - { - "type": "se_atten", - "sel": 120, - "rcut_smth": 2.0, - "rcut": 9.0, - "neuron": [ - 25, - 50, - 100 - ], - "resnet_dt": false, - "axis_neuron": 12, - "seed": 1, - "attn": 128, - "attn_layer": 0, - "attn_dotr": true, - "attn_mask": false, - "post_ln": true, - "ffn": false, - "ffn_embed_dim": 1024, - "activation": "tanh", - "scaling_factor": 1.0, - "head_num": 1, - "normalize": true, - "temperature": 1.0, - "add": "concat", - "pre_add": true, - "_comment": " that's all" + "_comment": "that's all", + "model": { + "type_map": [ + "O", + "H", + "MASKED_TOKEN" + ], + "descriptor": { + "type": "hybrid", + "hybrid_mode": "sequential", + "list": [ + { + "type": "se_atten", + "sel": 120, + "rcut_smth": 2.0, + "rcut": 9.0, + "neuron": [ + 25, + 50, + 100 + ], + "resnet_dt": false, + "axis_neuron": 12, + "seed": 1, + "attn": 128, + "attn_layer": 0, + "attn_dotr": true, + "attn_mask": false, + "post_ln": true, + "ffn": false, + "ffn_embed_dim": 1024, + "activation": "tanh", + "scaling_factor": 1.0, + "head_num": 1, + "normalize": true, + "temperature": 1.0, + "add": "concat", + "pre_add": true, + "_comment": " that's all" + }, + { + "type": "se_uni", + "sel": 40, + "rcut_smth": 0.5, + "rcut": 4.0, + "nlayers": 12, + "g1_dim": 128, + "g2_dim": 32, + "attn2_hidden": 32, + "attn2_nhead": 4, + "attn1_hidden": 128, + "attn1_nhead": 4, + "axis_dim": 4, + "update_h2": false, + "update_g1_has_conv": true, + "update_g1_has_grrg": true, + "update_g1_has_drrd": true, + "update_g1_has_attn": true, + "update_g2_has_g1g1": true, + "update_g2_has_attn": true, + "attn2_has_gate": true, + "add_type_ebd_to_seq": false, + "smooth": true, + "_comment": " that's all" + } + ] }, - { - "type": "se_uni", - "sel": 40, - "rcut_smth": 0.5, - "rcut": 4.0, - "nlayers": 12, - "g1_dim": 128, - "g2_dim": 32, - "attn2_hidden": 32, - "attn2_nhead": 4, - "attn1_hidden": 128, - "attn1_nhead": 4, - "axis_dim": 4, - "update_h2": false, - "update_g1_has_conv": true, - "update_g1_has_grrg": true, - "update_g1_has_drrd": true, - "update_g1_has_attn": true, - "update_g2_has_g1g1": true, - "update_g2_has_attn": true, - "attn2_has_gate": true, - "add_type_ebd_to_seq": false, - "smooth": true, - "_comment": " that's all" - } - ] + "_comment": " that's all" }, - "_comment": " that's all" - }, - "learning_rate": { - "type": "exp", - "decay_steps": 5000, - "start_lr": 0.0002, - "stop_lr": 3.51e-08, - "_comment": "that's all" - }, - "loss": { - "type": "denoise", - "noise_type": "uniform", - "noise": 1.0, - "noise_mode": "fix_num", - "mask_num": 8, - "mask_prob": 0.15, - "mask_coord": true, - "mask_type": false, - "same_mask": false, - "max_fail_num": 10, - "masked_token_loss": 1.0, - "masked_coord_loss": 1.0, - "norm_loss": 0.0, - "use_l1": true, - "beta": 1.0, - "mask_loss_coord": true, - "mask_loss_token": false, - "_comment": " that's all" - }, - "training": { - "training_data": { - "systems": [ - "../data/data_0", - "../data/data_1", - "../data/data_2" - ], - "batch_size": 1, - "_comment": "that's all" + "learning_rate": { + "type": "exp", + "decay_steps": 5000, + "start_lr": 0.0002, + "stop_lr": 3.51e-08, + "_comment": "that's all" }, - "validation_data": { - "systems": [ - "../data/data_3" - ], - "batch_size": 1, - "numb_btch": 3, - "_comment": "that's all" + "loss": { + "type": "denoise", + "noise_type": "uniform", + "noise": 1.0, + "noise_mode": "fix_num", + "mask_num": 8, + "mask_prob": 0.15, + "mask_coord": true, + "mask_type": false, + "same_mask": false, + "max_fail_num": 10, + "masked_token_loss": 1.0, + "masked_coord_loss": 1.0, + "norm_loss": 0.0, + "use_l1": true, + "beta": 1.0, + "mask_loss_coord": true, + "mask_loss_token": false, + "_comment": " that's all" }, - "wandb_config": { - "wandb_enabled": false, - "entity": "dp_model_engineering", - "project": "DPA" - }, - "numb_steps": 1000000, - "seed": 10, - "disp_file": "lcurve.out", - "disp_freq": 100, - "save_freq": 1000, - "_comment": "that's all" - } + "training": { + "training_data": { + "systems": [ + "../data/data_0", + "../data/data_1", + "../data/data_2" + ], + "batch_size": 1, + "_comment": "that's all" + }, + "validation_data": { + "systems": [ + "../data/data_3" + ], + "batch_size": 1, + "numb_btch": 3, + "_comment": "that's all" + }, + "wandb_config": { + "wandb_enabled": false, + "entity": "dp_model_engineering", + "project": "DPA" + }, + "numb_steps": 1000000, + "seed": 10, + "disp_file": "lcurve.out", + "disp_freq": 100, + "save_freq": 1000, + "_comment": "that's all" + } } diff --git a/deepmd_pt/examples/water/hybrid-ener/input.json b/deepmd_pt/examples/water/hybrid-ener/input.json index a9926e90..41c31450 100644 --- a/deepmd_pt/examples/water/hybrid-ener/input.json +++ b/deepmd_pt/examples/water/hybrid-ener/input.json @@ -1,127 +1,127 @@ { - "_comment": "that's all", - "model": { - "type_map": [ - "O", - "H" - ], - "descriptor": { - "type": "hybrid", - "hybrid_mode": "sequential", - "list": [ - { - "type": "se_atten", - "sel": 120, - "rcut_smth": 2.0, - "rcut": 9.0, - "neuron": [ - 25, - 50, - 100 - ], - "resnet_dt": false, - "axis_neuron": 12, - "seed": 1, - "attn": 128, - "attn_layer": 0, - "attn_dotr": true, - "attn_mask": false, - "post_ln": true, - "ffn": false, - "ffn_embed_dim": 1024, - "activation": "tanh", - "scaling_factor": 1.0, - "head_num": 1, - "normalize": true, - "temperature": 1.0, - "add": "concat", - "pre_add": true, - "_comment": " that's all" + "_comment": "that's all", + "model": { + "type_map": [ + "O", + "H" + ], + "descriptor": { + "type": "hybrid", + "hybrid_mode": "sequential", + "list": [ + { + "type": "se_atten", + "sel": 120, + "rcut_smth": 2.0, + "rcut": 9.0, + "neuron": [ + 25, + 50, + 100 + ], + "resnet_dt": false, + "axis_neuron": 12, + "seed": 1, + "attn": 128, + "attn_layer": 0, + "attn_dotr": true, + "attn_mask": false, + "post_ln": true, + "ffn": false, + "ffn_embed_dim": 1024, + "activation": "tanh", + "scaling_factor": 1.0, + "head_num": 1, + "normalize": true, + "temperature": 1.0, + "add": "concat", + "pre_add": true, + "_comment": " that's all" + }, + { + "type": "se_uni", + "sel": 40, + "rcut_smth": 0.5, + "rcut": 4.0, + "nlayers": 12, + "g1_dim": 128, + "g2_dim": 32, + "attn2_hidden": 32, + "attn2_nhead": 4, + "attn1_hidden": 128, + "attn1_nhead": 4, + "axis_dim": 4, + "update_h2": false, + "update_g1_has_conv": true, + "update_g1_has_grrg": true, + "update_g1_has_drrd": true, + "update_g1_has_attn": true, + "update_g2_has_g1g1": true, + "update_g2_has_attn": true, + "attn2_has_gate": true, + "add_type_ebd_to_seq": false, + "smooth": true, + "_comment": " that's all" + } + ] }, - { - "type": "se_uni", - "sel": 40, - "rcut_smth": 0.5, - "rcut": 4.0, - "nlayers": 12, - "g1_dim": 128, - "g2_dim": 32, - "attn2_hidden": 32, - "attn2_nhead": 4, - "attn1_hidden": 128, - "attn1_nhead": 4, - "axis_dim": 4, - "update_h2": false, - "update_g1_has_conv": true, - "update_g1_has_grrg": true, - "update_g1_has_drrd": true, - "update_g1_has_attn": true, - "update_g2_has_g1g1": true, - "update_g2_has_attn": true, - "attn2_has_gate": true, - "add_type_ebd_to_seq": false, - "smooth": true, - "_comment": " that's all" - } - ] - }, - "fitting_net": { - "neuron": [ - 240, - 240, - 240 - ], - "resnet_dt": true, - "seed": 1, - "_comment": " that's all" - }, - "_comment": " that's all" - }, - "learning_rate": { - "type": "exp", - "decay_steps": 5000, - "start_lr": 0.0002, - "stop_lr": 3.51e-08, - "_comment": "that's all" - }, - "loss": { - "type": "ener", - "start_pref_e": 0.02, - "limit_pref_e": 1, - "start_pref_f": 1000, - "limit_pref_f": 1, - "start_pref_v": 0, - "limit_pref_v": 0, - "_comment": " that's all" - }, - "training": { - "training_data": { - "systems": [ - "../data/data_0", - "../data/data_1", - "../data/data_2" - ], - "batch_size": 1, - "_comment": "that's all" + "fitting_net": { + "neuron": [ + 240, + 240, + 240 + ], + "resnet_dt": true, + "seed": 1, + "_comment": " that's all" + }, + "_comment": " that's all" }, - "validation_data": { - "systems": [ - "../data/data_3" - ], - "batch_size": 1, - "numb_btch": 3, - "_comment": "that's all" + "learning_rate": { + "type": "exp", + "decay_steps": 5000, + "start_lr": 0.0002, + "stop_lr": 3.51e-08, + "_comment": "that's all" }, - "wandb_config": { - "wandb_enabled": false, - "entity": "dp_model_engineering", - "project": "DPA" + "loss": { + "type": "ener", + "start_pref_e": 0.02, + "limit_pref_e": 1, + "start_pref_f": 1000, + "limit_pref_f": 1, + "start_pref_v": 0, + "limit_pref_v": 0, + "_comment": " that's all" }, - "numb_steps": 1000000, - "seed": 10, - "disp_file": "lcurve.out", - "disp_freq": 100, - "save_freq": 1000, - "_comment": "that's all" - } -} \ No newline at end of file + "training": { + "training_data": { + "systems": [ + "../data/data_0", + "../data/data_1", + "../data/data_2" + ], + "batch_size": 1, + "_comment": "that's all" + }, + "validation_data": { + "systems": [ + "../data/data_3" + ], + "batch_size": 1, + "numb_btch": 3, + "_comment": "that's all" + }, + "wandb_config": { + "wandb_enabled": false, + "entity": "dp_model_engineering", + "project": "DPA" + }, + "numb_steps": 1000000, + "seed": 10, + "disp_file": "lcurve.out", + "disp_freq": 100, + "save_freq": 1000, + "_comment": "that's all" + } +} diff --git a/deepmd_pt/examples/water/hybrid-force-ener/input.json b/deepmd_pt/examples/water/hybrid-force-ener/input.json index 27f98252..7e3988e8 100644 --- a/deepmd_pt/examples/water/hybrid-force-ener/input.json +++ b/deepmd_pt/examples/water/hybrid-force-ener/input.json @@ -1,120 +1,120 @@ { - "_comment": "that's all", - "model": { - "type_map": [ - "O", - "H" - ], - "descriptor": { - "type": "hybrid", - "list": [ - { - "type": "se_uni", - "sel": 40, - "rcut_smth": 0.5, - "rcut": 4.0, - "nlayers": 3, - "g1_dim": 128, - "g2_dim": 32, - "attn2_hidden": 32, - "attn2_nhead": 4, - "attn1_hidden": 128, - "attn1_nhead": 4, - "axis_dim": 4, - "update_h2": false, - "update_g1_has_conv": true, - "update_g1_has_grrg": true, - "update_g1_has_drrd": true, - "update_g1_has_attn": true, - "update_g2_has_g1g1": true, - "update_g2_has_attn": true, - "_comment": " that's all" + "_comment": "that's all", + "model": { + "type_map": [ + "O", + "H" + ], + "descriptor": { + "type": "hybrid", + "list": [ + { + "type": "se_uni", + "sel": 40, + "rcut_smth": 0.5, + "rcut": 4.0, + "nlayers": 3, + "g1_dim": 128, + "g2_dim": 32, + "attn2_hidden": 32, + "attn2_nhead": 4, + "attn1_hidden": 128, + "attn1_nhead": 4, + "axis_dim": 4, + "update_h2": false, + "update_g1_has_conv": true, + "update_g1_has_grrg": true, + "update_g1_has_drrd": true, + "update_g1_has_attn": true, + "update_g2_has_g1g1": true, + "update_g2_has_attn": true, + "_comment": " that's all" + }, + { + "type": "se_atten", + "sel": 120, + "rcut_smth": 0.5, + "rcut": 6.0, + "neuron": [ + 25, + 50, + 100 + ], + "resnet_dt": false, + "axis_neuron": 16, + "seed": 1, + "attn": 128, + "attn_layer": 0, + "attn_dotr": true, + "attn_mask": false, + "post_ln": true, + "ffn": false, + "ffn_embed_dim": 1024, + "activation": "tanh", + "scaling_factor": 1.0, + "head_num": 1, + "normalize": true, + "temperature": 1.0, + "_comment": " that's all" + } + ] }, - { - "type": "se_atten", - "sel": 120, - "rcut_smth": 0.5, - "rcut": 6.0, - "neuron": [ - 25, - 50, - 100 - ], - "resnet_dt": false, - "axis_neuron": 16, - "seed": 1, - "attn": 128, - "attn_layer": 0, - "attn_dotr": true, - "attn_mask": false, - "post_ln": true, - "ffn": false, - "ffn_embed_dim": 1024, - "activation": "tanh", - "scaling_factor": 1.0, - "head_num": 1, - "normalize": true, - "temperature": 1.0, - "_comment": " that's all" - } - ] - }, - "fitting_net": { - "type": "direct_force_ener", - "neuron": [ - 240, - 240, - 240 - ], - "resnet_dt": true, - "seed": 1, - "_comment": " that's all" - }, - "_comment": " that's all" - }, - "learning_rate": { - "type": "exp", - "decay_steps": 5000, - "start_lr": 0.001, - "stop_lr": 3.51e-08, - "_comment": "that's all" - }, - "loss": { - "type": "ener", - "start_pref_e": 0.02, - "limit_pref_e": 1, - "start_pref_f": 1000, - "limit_pref_f": 1, - "_comment": " that's all" - }, - "training": { - "training_data": { - "systems": [ - "../data/data_0", - "../data/data_1", - "../data/data_2" - ], - "batch_size": 1, - "_comment": "that's all" + "fitting_net": { + "type": "direct_force_ener", + "neuron": [ + 240, + 240, + 240 + ], + "resnet_dt": true, + "seed": 1, + "_comment": " that's all" + }, + "_comment": " that's all" }, - "validation_data": { - "systems": [ - "../data/data_3" - ], - "batch_size": 1, - "numb_btch": 3, - "_comment": "that's all" + "learning_rate": { + "type": "exp", + "decay_steps": 5000, + "start_lr": 0.001, + "stop_lr": 3.51e-08, + "_comment": "that's all" }, - "wandb_config": { - "wandb_enabled": false, - "entity": "dp_model_engineering", - "project": "DPA" + "loss": { + "type": "ener", + "start_pref_e": 0.02, + "limit_pref_e": 1, + "start_pref_f": 1000, + "limit_pref_f": 1, + "_comment": " that's all" }, - "numb_steps": 1000000, - "seed": 10, - "disp_file": "lcurve.out", - "disp_freq": 100, - "save_freq": 1000, - "_comment": "that's all" - } -} \ No newline at end of file + "training": { + "training_data": { + "systems": [ + "../data/data_0", + "../data/data_1", + "../data/data_2" + ], + "batch_size": 1, + "_comment": "that's all" + }, + "validation_data": { + "systems": [ + "../data/data_3" + ], + "batch_size": 1, + "numb_btch": 3, + "_comment": "that's all" + }, + "wandb_config": { + "wandb_enabled": false, + "entity": "dp_model_engineering", + "project": "DPA" + }, + "numb_steps": 1000000, + "seed": 10, + "disp_file": "lcurve.out", + "disp_freq": 100, + "save_freq": 1000, + "_comment": "that's all" + } +} diff --git a/deepmd_pt/examples/water/multitask/input.json b/deepmd_pt/examples/water/multitask/input.json index b66ae24e..43b38cb0 100644 --- a/deepmd_pt/examples/water/multitask/input.json +++ b/deepmd_pt/examples/water/multitask/input.json @@ -1,196 +1,196 @@ { - "_comment": "that's all", - "model": { - "shared_dict": { - "type_map_all": [ - "O", - "H" + "_comment": "that's all", + "model": { + "shared_dict": { + "type_map_all": [ + "O", + "H" + ], + "tebd_1": { + "neuron": [ + 8 + ], + "tebd_input_mode": "concat" + }, + "dpa1_dpau_descriptor_1": { + "type": "hybrid", + "hybrid_mode": "sequential", + "list": [ + { + "type": "se_atten", + "sel": 120, + "rcut_smth": 8.0, + "rcut": 9.0, + "neuron": [ + 25, + 50, + 100 ], - "tebd_1": { - "neuron": [ - 8 - ], - "tebd_input_mode": "concat" - }, - "dpa1_dpau_descriptor_1": { - "type": "hybrid", - "hybrid_mode": "sequential", - "list": [ - { - "type": "se_atten", - "sel": 120, - "rcut_smth": 8.0, - "rcut": 9.0, - "neuron": [ - 25, - 50, - 100 - ], - "resnet_dt": false, - "axis_neuron": 12, - "seed": 1, - "attn": 128, - "attn_layer": 0, - "attn_dotr": true, - "attn_mask": false, - "post_ln": true, - "ffn": false, - "ffn_embed_dim": 1024, - "activation": "tanh", - "scaling_factor": 1.0, - "head_num": 1, - "normalize": true, - "temperature": 1.0, - "add": "concat", - "pre_add": true, - "_comment": " that's all" - }, - { - "type": "se_uni", - "sel": 40, - "rcut_smth": 3.5, - "rcut": 4.0, - "nlayers": 12, - "g1_dim": 128, - "g2_dim": 32, - "attn2_hidden": 32, - "attn2_nhead": 4, - "attn1_hidden": 128, - "attn1_nhead": 4, - "axis_dim": 4, - "update_h2": false, - "update_g1_has_conv": true, - "update_g1_has_grrg": true, - "update_g1_has_drrd": true, - "update_g1_has_attn": true, - "update_g2_has_g1g1": true, - "update_g2_has_attn": true, - "attn2_has_gate": true, - "smooth": true, - "add_type_ebd_to_seq": false, - "_comment": " that's all" - } - ] - }, - "_comment": "that's all" - }, - "model_dict": { - "water_1": { - "type_map": "type_map_all", - "type_embedding": "tebd_1", - "descriptor": "dpa1_dpau_descriptor_1", - "fitting_net": { - "neuron": [ - 240, - 240, - 240 - ], - "resnet_dt": true, - "seed": 1, - "_comment": " that's all" - } - }, - "water_2": { - "type_map": "type_map_all", - "type_embedding": "tebd_1", - "descriptor": "dpa1_dpau_descriptor_1", - "fitting_net": { - "neuron": [ - 240, - 240, - 240 - ], - "resnet_dt": true, - "seed": 1, - "_comment": " that's all" - } - } + "resnet_dt": false, + "axis_neuron": 12, + "seed": 1, + "attn": 128, + "attn_layer": 0, + "attn_dotr": true, + "attn_mask": false, + "post_ln": true, + "ffn": false, + "ffn_embed_dim": 1024, + "activation": "tanh", + "scaling_factor": 1.0, + "head_num": 1, + "normalize": true, + "temperature": 1.0, + "add": "concat", + "pre_add": true, + "_comment": " that's all" + }, + { + "type": "se_uni", + "sel": 40, + "rcut_smth": 3.5, + "rcut": 4.0, + "nlayers": 12, + "g1_dim": 128, + "g2_dim": 32, + "attn2_hidden": 32, + "attn2_nhead": 4, + "attn1_hidden": 128, + "attn1_nhead": 4, + "axis_dim": 4, + "update_h2": false, + "update_g1_has_conv": true, + "update_g1_has_grrg": true, + "update_g1_has_drrd": true, + "update_g1_has_attn": true, + "update_g2_has_g1g1": true, + "update_g2_has_attn": true, + "attn2_has_gate": true, + "smooth": true, + "add_type_ebd_to_seq": false, + "_comment": " that's all" + } + ] + }, + "_comment": "that's all" + }, + "model_dict": { + "water_1": { + "type_map": "type_map_all", + "type_embedding": "tebd_1", + "descriptor": "dpa1_dpau_descriptor_1", + "fitting_net": { + "neuron": [ + 240, + 240, + 240 + ], + "resnet_dt": true, + "seed": 1, + "_comment": " that's all" } + }, + "water_2": { + "type_map": "type_map_all", + "type_embedding": "tebd_1", + "descriptor": "dpa1_dpau_descriptor_1", + "fitting_net": { + "neuron": [ + 240, + 240, + 240 + ], + "resnet_dt": true, + "seed": 1, + "_comment": " that's all" + } + } + } + }, + "learning_rate": { + "type": "exp", + "decay_steps": 5000, + "start_lr": 0.0002, + "decay_rate": 0.98, + "stop_lr": 3.51e-08, + "_comment": "that's all" + }, + "loss_dict": { + "_comment": " that's all", + "water_1": { + "type": "ener", + "start_pref_e": 0.02, + "limit_pref_e": 1, + "start_pref_f": 1000, + "limit_pref_f": 1, + "start_pref_v": 0, + "limit_pref_v": 0 }, - "learning_rate": { - "type": "exp", - "decay_steps": 5000, - "start_lr": 0.0002, - "decay_rate": 0.98, - "stop_lr": 3.51e-08, - "_comment": "that's all" + "water_2": { + "type": "ener", + "start_pref_e": 0.02, + "limit_pref_e": 1, + "start_pref_f": 1000, + "limit_pref_f": 1, + "start_pref_v": 0, + "limit_pref_v": 0 + } + }, + "training": { + "model_prob": { + "water_1": 0.5, + "water_2": 0.5 }, - "loss_dict": { - "_comment": " that's all", - "water_1": { - "type": "ener", - "start_pref_e": 0.02, - "limit_pref_e": 1, - "start_pref_f": 1000, - "limit_pref_f": 1, - "start_pref_v": 0, - "limit_pref_v": 0 + "data_dict": { + "water_1": { + "training_data": { + "systems": [ + "../data/data_0", + "../data/data_1", + "../data/data_2" + ], + "batch_size": 1, + "_comment": "that's all" }, - "water_2": { - "type": "ener", - "start_pref_e": 0.02, - "limit_pref_e": 1, - "start_pref_f": 1000, - "limit_pref_f": 1, - "start_pref_v": 0, - "limit_pref_v": 0 + "validation_data": { + "systems": [ + "../data/data_3" + ], + "batch_size": 1, + "_comment": "that's all" } - }, - "training": { - "model_prob": { - "water_1": 0.5, - "water_2": 0.5 - }, - "data_dict": { - "water_1": { - "training_data": { - "systems": [ - "../data/data_0", - "../data/data_1", - "../data/data_2" - ], - "batch_size": 1, - "_comment": "that's all" - }, - "validation_data": { - "systems": [ - "../data/data_3" - ], - "batch_size": 1, - "_comment": "that's all" - } - }, - "water_2": { - "training_data": { - "systems": [ - "../data/data_0", - "../data/data_1", - "../data/data_2" - ], - "batch_size": 1, - "_comment": "that's all" - }, - "validation_data": { - "systems": [ - "../data/data_3" - ], - "batch_size": 1, - "_comment": "that's all" - } - } + }, + "water_2": { + "training_data": { + "systems": [ + "../data/data_0", + "../data/data_1", + "../data/data_2" + ], + "batch_size": 1, + "_comment": "that's all" }, - "numb_steps": 100000, - "warmup_steps": 0, - "gradient_max_norm": 5.0, - "seed": 10, - "disp_file": "lcurve.out", - "disp_freq": 100, - "save_freq": 2000, - "_comment": "that's all", - "wandb_config": { - "wandb_enabled": false, - "entity": "dp_model_engineering", - "project": "DPA" + "validation_data": { + "systems": [ + "../data/data_3" + ], + "batch_size": 1, + "_comment": "that's all" } + } + }, + "numb_steps": 100000, + "warmup_steps": 0, + "gradient_max_norm": 5.0, + "seed": 10, + "disp_file": "lcurve.out", + "disp_freq": 100, + "save_freq": 2000, + "_comment": "that's all", + "wandb_config": { + "wandb_enabled": false, + "entity": "dp_model_engineering", + "project": "DPA" } + } } diff --git a/deepmd_pt/examples/water/se_a/input.json b/deepmd_pt/examples/water/se_a/input.json index dce9eae9..053a721a 100644 --- a/deepmd_pt/examples/water/se_a/input.json +++ b/deepmd_pt/examples/water/se_a/input.json @@ -1,79 +1,79 @@ { - "model": { - "type_map": [ - "O", - "H" - ], - "descriptor": { - "type": "se_e2_a", - "sel": [ - 46, - 92 - ], - "rcut_smth": 0.50, - "rcut": 6.00, - "neuron": [ - 25, - 50, - 100 - ], - "resnet_dt": false, - "axis_neuron": 16, - "seed": 1, - "_comment": " that's all" - }, - "fitting_net": { - "neuron": [ - 240, - 240, - 240 - ], - "resnet_dt": true, - "seed": 1, - "_comment": " that's all" - }, - "data_stat_nbatch": 20, - "_comment": " that's all" + "model": { + "type_map": [ + "O", + "H" + ], + "descriptor": { + "type": "se_e2_a", + "sel": [ + 46, + 92 + ], + "rcut_smth": 0.50, + "rcut": 6.00, + "neuron": [ + 25, + 50, + 100 + ], + "resnet_dt": false, + "axis_neuron": 16, + "seed": 1, + "_comment": " that's all" }, - "learning_rate": { - "type": "exp", - "decay_steps": 5000, - "start_lr": 0.001, - "stop_lr": 3.51e-8, - "_comment": "that's all" + "fitting_net": { + "neuron": [ + 240, + 240, + 240 + ], + "resnet_dt": true, + "seed": 1, + "_comment": " that's all" }, - "loss": { - "type": "ener", - "start_pref_e": 0.02, - "limit_pref_e": 1, - "start_pref_f": 1000, - "limit_pref_f": 1, - "_comment": " that's all" + "data_stat_nbatch": 20, + "_comment": " that's all" + }, + "learning_rate": { + "type": "exp", + "decay_steps": 5000, + "start_lr": 0.001, + "stop_lr": 3.51e-8, + "_comment": "that's all" + }, + "loss": { + "type": "ener", + "start_pref_e": 0.02, + "limit_pref_e": 1, + "start_pref_f": 1000, + "limit_pref_f": 1, + "_comment": " that's all" + }, + "training": { + "training_data": { + "systems": [ + "../data/data_0", + "../data/data_1", + "../data/data_2" + ], + "batch_size": 1, + "_comment": "that's all" }, - "training": { - "training_data": { - "systems": [ - "../data/data_0", - "../data/data_1", - "../data/data_2" - ], - "batch_size": 1, - "_comment": "that's all" - }, - "validation_data": { - "systems": [ - "../data/data_3" - ], - "batch_size": 1, - "numb_btch": 3, - "_comment": "that's all" - }, - "numb_steps": 100000, - "seed": 10, - "disp_file": "lcurve.out", - "disp_freq": 100, - "save_freq": 10000, - "_comment": "that's all" + "validation_data": { + "systems": [ + "../data/data_3" + ], + "batch_size": 1, + "numb_btch": 3, + "_comment": "that's all" }, + "numb_steps": 100000, + "seed": 10, + "disp_file": "lcurve.out", + "disp_freq": 100, + "save_freq": 10000, "_comment": "that's all" + }, + "_comment": "that's all" } diff --git a/deepmd_pt/infer/__init__.py b/deepmd_pt/infer/__init__.py index e69de29b..6ceb116d 100644 --- a/deepmd_pt/infer/__init__.py +++ b/deepmd_pt/infer/__init__.py @@ -0,0 +1 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later diff --git a/deepmd_pt/infer/deep_eval.py b/deepmd_pt/infer/deep_eval.py index 878f8a6b..f9a88464 100644 --- a/deepmd_pt/infer/deep_eval.py +++ b/deepmd_pt/infer/deep_eval.py @@ -1,37 +1,57 @@ -from pathlib import Path -import torch +# SPDX-License-Identifier: LGPL-3.0-or-later +from pathlib import ( + Path, +) +from typing import ( + Callable, + List, + Optional, + Tuple, + Union, +) + import numpy as np -from deepmd_pt.utils.env import DEVICE, PREPROCESS_DEVICE, GLOBAL_PT_FLOAT_PRECISION -from deepmd_pt.model.model import get_model -from deepmd_pt.train.wrapper import ModelWrapper -from deepmd_pt.utils.preprocess import Region3D, normalize_coord, make_env_mat -from deepmd_pt.utils.dataloader import collate_batch -from typing import Callable, Optional, Tuple, Union, List -from deepmd_pt.utils import env -from deepmd_pt.utils.auto_batch_size import AutoBatchSize -from deepmd_utils.infer.deep_pot import DeepPot as DeepPotBase +import torch +from deepmd.infer.deep_pot import DeepPot as DeepPotBase + +from deepmd_pt.model.model import ( + get_model, +) +from deepmd_pt.train.wrapper import ( + ModelWrapper, +) +from deepmd_pt.utils import ( + env, +) +from deepmd_pt.utils.auto_batch_size import ( + AutoBatchSize, +) +from deepmd_pt.utils.env import ( + DEVICE, + GLOBAL_PT_FLOAT_PRECISION, +) class DeepEval: def __init__( - self, - model_file: "Path", - auto_batch_size: Union[bool, int, AutoBatchSize] = True, + self, + model_file: "Path", + auto_batch_size: Union[bool, int, AutoBatchSize] = True, ): self.model_path = model_file state_dict = torch.load(model_file, map_location=env.DEVICE) if "model" in state_dict: state_dict = state_dict["model"] - self.input_param = state_dict['_extra_state']['model_params'] - self.input_param['resuming'] = True + self.input_param = state_dict["_extra_state"]["model_params"] + self.input_param["resuming"] = True self.multi_task = "model_dict" in self.input_param assert not self.multi_task, "multitask mode currently not supported!" - self.type_split = self.input_param['descriptor']['type'] in ['se_e2_a'] - self.type_map = self.input_param['type_map'] + self.type_split = self.input_param["descriptor"]["type"] in ["se_e2_a"] + self.type_map = self.input_param["type_map"] self.dp = ModelWrapper(get_model(self.input_param, None).to(DEVICE)) self.dp.load_state_dict(state_dict) - self.rcut = self.dp.model['Default'].descriptor.get_rcut() - self.sec = np.cumsum(self.dp.model['Default'].descriptor.get_sel()) + self.rcut = self.dp.model["Default"].descriptor.get_rcut() + self.sec = np.cumsum(self.dp.model["Default"].descriptor.get_sel()) if isinstance(auto_batch_size, bool): if auto_batch_size: self.auto_batch_size = AutoBatchSize() @@ -45,11 +65,11 @@ def __init__( raise TypeError("auto_batch_size should be bool, int, or AutoBatchSize") def eval( - self, - coords: Union[np.ndarray, torch.Tensor], - cells: Optional[Union[np.ndarray, torch.Tensor]], - atom_types: Union[np.ndarray, torch.Tensor, List[int]], - atomic: bool = False, + self, + coords: Union[np.ndarray, torch.Tensor], + cells: Optional[Union[np.ndarray, torch.Tensor]], + atom_types: Union[np.ndarray, torch.Tensor, List[int]], + atomic: bool = False, ): raise NotImplementedError @@ -63,7 +83,7 @@ def __init__( ): if neighbor_list is not None: raise NotImplementedError - super(DeepPot, self).__init__( + super().__init__( model_file, auto_batch_size=auto_batch_size, ) @@ -86,8 +106,12 @@ def eval( coords = np.array(coords) if cells is not None: cells = np.array(cells) - natoms, numb_test = self._get_natoms_and_nframes(coords, atom_types, len(atom_types.shape) > 1) - return self._eval_func(self._eval_model, numb_test, natoms)(coords, cells, atom_types, atomic) + natoms, numb_test = self._get_natoms_and_nframes( + coords, atom_types, len(atom_types.shape) > 1 + ) + return self._eval_func(self._eval_model, numb_test, natoms)( + coords, cells, atom_types, atomic + ) def _eval_func(self, inner_func: Callable, numb_test: int, natoms: int) -> Callable: """Wrapper method with auto batch size. @@ -155,28 +179,40 @@ def _eval_model( else: natoms = len(atom_types[0]) - coord_input = torch.tensor(coords.reshape([-1, natoms, 3]), dtype=GLOBAL_PT_FLOAT_PRECISION).to(DEVICE) + coord_input = torch.tensor( + coords.reshape([-1, natoms, 3]), dtype=GLOBAL_PT_FLOAT_PRECISION + ).to(DEVICE) type_input = torch.tensor(atom_types, dtype=torch.long).to(DEVICE) if cells is not None: - box_input = torch.tensor(cells.reshape([-1, 3, 3]), dtype=GLOBAL_PT_FLOAT_PRECISION).to(DEVICE) + box_input = torch.tensor( + cells.reshape([-1, 3, 3]), dtype=GLOBAL_PT_FLOAT_PRECISION + ).to(DEVICE) else: box_input = None - batch_output = model(coord_input, type_input, box=box_input, do_atomic_virial=atomic) + batch_output = model( + coord_input, type_input, box=box_input, do_atomic_virial=atomic + ) if isinstance(batch_output, tuple): batch_output = batch_output[0] - energy_out = batch_output['energy'].detach().cpu().numpy() - if 'atom_energy' in batch_output: - atomic_energy_out = batch_output['atom_energy'].detach().cpu().numpy() - force_out = batch_output['force'].detach().cpu().numpy() - virial_out = batch_output['virial'].detach().cpu().numpy() - if 'atomic_virial' in batch_output: - atomic_virial_out = batch_output['atomic_virial'].detach().cpu().numpy() + energy_out = batch_output["energy"].detach().cpu().numpy() + if "atom_energy" in batch_output: + atomic_energy_out = batch_output["atom_energy"].detach().cpu().numpy() + force_out = batch_output["force"].detach().cpu().numpy() + virial_out = batch_output["virial"].detach().cpu().numpy() + if "atomic_virial" in batch_output: + atomic_virial_out = batch_output["atomic_virial"].detach().cpu().numpy() if not atomic: return energy_out, force_out, virial_out else: - return energy_out, force_out, virial_out, atomic_energy_out, atomic_virial_out + return ( + energy_out, + force_out, + virial_out, + atomic_energy_out, + atomic_virial_out, + ) def get_ntypes(self) -> int: """Get the number of atom types of this model.""" @@ -213,8 +249,10 @@ def eval_model( atomic_virial_out = [] updated_coord_out = [] logits_out = [] - err_msg = f"All inputs should be the same format, " \ - f"but found {type(coords)}, {type(cells)}, {type(atom_types)} instead! " + err_msg = ( + f"All inputs should be the same format, " + f"but found {type(coords)}, {type(cells)}, {type(atom_types)} instead! " + ) return_tensor = True if isinstance(coords, torch.Tensor): if cells is not None: @@ -232,81 +270,143 @@ def eval_model( if len(atom_types.shape) == 1: natoms = len(atom_types) if isinstance(atom_types, torch.Tensor): - atom_types = torch.tile(atom_types.unsqueeze(0), [nframes, 1]).reshape(nframes, -1) + atom_types = torch.tile(atom_types.unsqueeze(0), [nframes, 1]).reshape( + nframes, -1 + ) else: atom_types = np.tile(atom_types, nframes).reshape(nframes, -1) else: natoms = len(atom_types[0]) - coord_input = torch.tensor(coords.reshape([-1, natoms, 3]), dtype=GLOBAL_PT_FLOAT_PRECISION).to(DEVICE) + coord_input = torch.tensor( + coords.reshape([-1, natoms, 3]), dtype=GLOBAL_PT_FLOAT_PRECISION + ).to(DEVICE) type_input = torch.tensor(atom_types, dtype=torch.long).to(DEVICE) box_input = None if cells is None: pbc = False else: pbc = True - box_input = torch.tensor(cells.reshape([-1, 3, 3]), dtype=GLOBAL_PT_FLOAT_PRECISION).to(DEVICE) + box_input = torch.tensor( + cells.reshape([-1, 3, 3]), dtype=GLOBAL_PT_FLOAT_PRECISION + ).to(DEVICE) num_iter = int((nframes + infer_batch_size - 1) / infer_batch_size) for ii in range(num_iter): - batch_coord = coord_input[ii * infer_batch_size:(ii + 1) * infer_batch_size] - batch_atype = type_input[ii * infer_batch_size:(ii + 1) * infer_batch_size] + batch_coord = coord_input[ii * infer_batch_size : (ii + 1) * infer_batch_size] + batch_atype = type_input[ii * infer_batch_size : (ii + 1) * infer_batch_size] batch_box = None if pbc: - batch_box = box_input[ii * infer_batch_size:(ii + 1) * infer_batch_size] + batch_box = box_input[ii * infer_batch_size : (ii + 1) * infer_batch_size] batch_output = model(batch_coord, batch_atype, box=batch_box) if isinstance(batch_output, tuple): batch_output = batch_output[0] if not return_tensor: - if 'energy' in batch_output: - energy_out.append(batch_output['energy'].detach().cpu().numpy()) - if 'atom_energy' in batch_output: - atomic_energy_out.append(batch_output['atom_energy'].detach().cpu().numpy()) - if 'force' in batch_output: - force_out.append(batch_output['force'].detach().cpu().numpy()) - if 'virial' in batch_output: - virial_out.append(batch_output['virial'].detach().cpu().numpy()) - if 'atomic_virial' in batch_output: - atomic_virial_out.append(batch_output['atomic_virial'].detach().cpu().numpy()) - if 'updated_coord' in batch_output: - updated_coord_out.append(batch_output['updated_coord'].detach().cpu().numpy()) - if 'logits' in batch_output: - logits_out.append(batch_output['logits'].detach().cpu().numpy()) + if "energy" in batch_output: + energy_out.append(batch_output["energy"].detach().cpu().numpy()) + if "atom_energy" in batch_output: + atomic_energy_out.append( + batch_output["atom_energy"].detach().cpu().numpy() + ) + if "force" in batch_output: + force_out.append(batch_output["force"].detach().cpu().numpy()) + if "virial" in batch_output: + virial_out.append(batch_output["virial"].detach().cpu().numpy()) + if "atomic_virial" in batch_output: + atomic_virial_out.append( + batch_output["atomic_virial"].detach().cpu().numpy() + ) + if "updated_coord" in batch_output: + updated_coord_out.append( + batch_output["updated_coord"].detach().cpu().numpy() + ) + if "logits" in batch_output: + logits_out.append(batch_output["logits"].detach().cpu().numpy()) else: - if 'energy' in batch_output: - energy_out.append(batch_output['energy']) - if 'atom_energy' in batch_output: - atomic_energy_out.append(batch_output['atom_energy']) - if 'force' in batch_output: - force_out.append(batch_output['force']) - if 'virial' in batch_output: - virial_out.append(batch_output['virial']) - if 'atomic_virial' in batch_output: - atomic_virial_out.append(batch_output['atomic_virial']) - if 'updated_coord' in batch_output: - updated_coord_out.append(batch_output['updated_coord']) - if 'logits' in batch_output: - logits_out.append(batch_output['logits']) + if "energy" in batch_output: + energy_out.append(batch_output["energy"]) + if "atom_energy" in batch_output: + atomic_energy_out.append(batch_output["atom_energy"]) + if "force" in batch_output: + force_out.append(batch_output["force"]) + if "virial" in batch_output: + virial_out.append(batch_output["virial"]) + if "atomic_virial" in batch_output: + atomic_virial_out.append(batch_output["atomic_virial"]) + if "updated_coord" in batch_output: + updated_coord_out.append(batch_output["updated_coord"]) + if "logits" in batch_output: + logits_out.append(batch_output["logits"]) if not return_tensor: - energy_out = np.concatenate(energy_out) if energy_out else np.zeros([nframes, 1]) - atomic_energy_out = np.concatenate(atomic_energy_out) if atomic_energy_out else np.zeros([nframes, natoms, 1]) - force_out = np.concatenate(force_out) if force_out else np.zeros([nframes, natoms, 3]) - virial_out = np.concatenate(virial_out) if virial_out else np.zeros([nframes, 3, 3]) - atomic_virial_out = np.concatenate(atomic_virial_out) if atomic_virial_out else np.zeros([nframes, natoms, 3, 3]) - updated_coord_out = np.concatenate(updated_coord_out) if updated_coord_out else None + energy_out = ( + np.concatenate(energy_out) if energy_out else np.zeros([nframes, 1]) + ) + atomic_energy_out = ( + np.concatenate(atomic_energy_out) + if atomic_energy_out + else np.zeros([nframes, natoms, 1]) + ) + force_out = ( + np.concatenate(force_out) if force_out else np.zeros([nframes, natoms, 3]) + ) + virial_out = ( + np.concatenate(virial_out) if virial_out else np.zeros([nframes, 3, 3]) + ) + atomic_virial_out = ( + np.concatenate(atomic_virial_out) + if atomic_virial_out + else np.zeros([nframes, natoms, 3, 3]) + ) + updated_coord_out = ( + np.concatenate(updated_coord_out) if updated_coord_out else None + ) logits_out = np.concatenate(logits_out) if logits_out else None else: - energy_out = torch.cat(energy_out) if energy_out else torch.zeros([nframes, 1], dtype=GLOBAL_PT_FLOAT_PRECISION).to(DEVICE) - atomic_energy_out = torch.cat(atomic_energy_out) if atomic_energy_out else torch.zeros([nframes, natoms, 1], dtype=GLOBAL_PT_FLOAT_PRECISION).to(DEVICE) - force_out = torch.cat(force_out) if force_out else torch.zeros([nframes, natoms, 3], dtype=GLOBAL_PT_FLOAT_PRECISION).to(DEVICE) - virial_out = torch.cat(virial_out) if virial_out else torch.zeros([nframes, 3, 3], dtype=GLOBAL_PT_FLOAT_PRECISION).to(DEVICE) - atomic_virial_out = torch.cat(atomic_virial_out) if atomic_virial_out else torch.zeros([nframes, natoms, 3, 3], dtype=GLOBAL_PT_FLOAT_PRECISION).to(DEVICE) + energy_out = ( + torch.cat(energy_out) + if energy_out + else torch.zeros([nframes, 1], dtype=GLOBAL_PT_FLOAT_PRECISION).to(DEVICE) + ) + atomic_energy_out = ( + torch.cat(atomic_energy_out) + if atomic_energy_out + else torch.zeros([nframes, natoms, 1], dtype=GLOBAL_PT_FLOAT_PRECISION).to( + DEVICE + ) + ) + force_out = ( + torch.cat(force_out) + if force_out + else torch.zeros([nframes, natoms, 3], dtype=GLOBAL_PT_FLOAT_PRECISION).to( + DEVICE + ) + ) + virial_out = ( + torch.cat(virial_out) + if virial_out + else torch.zeros([nframes, 3, 3], dtype=GLOBAL_PT_FLOAT_PRECISION).to( + DEVICE + ) + ) + atomic_virial_out = ( + torch.cat(atomic_virial_out) + if atomic_virial_out + else torch.zeros( + [nframes, natoms, 3, 3], dtype=GLOBAL_PT_FLOAT_PRECISION + ).to(DEVICE) + ) updated_coord_out = torch.cat(updated_coord_out) if updated_coord_out else None logits_out = torch.cat(logits_out) if logits_out else None if denoise: return updated_coord_out, logits_out - else: + else: if not atomic: return energy_out, force_out, virial_out else: - return energy_out, force_out, virial_out, atomic_energy_out, atomic_virial_out + return ( + energy_out, + force_out, + virial_out, + atomic_energy_out, + atomic_virial_out, + ) diff --git a/deepmd_pt/infer/inference.py b/deepmd_pt/infer/inference.py index 060a20bb..992d08eb 100644 --- a/deepmd_pt/infer/inference.py +++ b/deepmd_pt/infer/inference.py @@ -1,32 +1,58 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later +import json import logging import math -from copy import deepcopy -from typing import Any, Dict -from pathlib import Path -import numpy as np -import json +from copy import ( + deepcopy, +) +from pathlib import ( + Path, +) +import numpy as np import torch -from deepmd_pt.loss import EnergyStdLoss, DenoiseLoss -from deepmd_pt.model.model import get_model -from deepmd_pt.train.wrapper import ModelWrapper -from deepmd_pt.utils import dp_random -from deepmd_pt.utils.dataloader import BufferedIterator, DpLoaderSet -from deepmd_pt.utils.env import DEVICE, JIT -from deepmd_pt.utils.stat import make_stat_input -from torch.utils.data import DataLoader, RandomSampler from deepmd.common import ( expand_sys_str, ) +from torch.utils.data import ( + DataLoader, + RandomSampler, +) + +from deepmd_pt.loss import ( + DenoiseLoss, + EnergyStdLoss, +) +from deepmd_pt.model.model import ( + get_model, +) +from deepmd_pt.train.wrapper import ( + ModelWrapper, +) +from deepmd_pt.utils.dataloader import ( + DpLoaderSet, +) +from deepmd_pt.utils.env import ( + DEVICE, + JIT, +) if torch.__version__.startswith("2"): import torch._dynamo -class Tester(object): - - def __init__(self, model_ckpt, input_script=None, system=None, datafile=None, - numb_test=100, detail_file=None, shuffle_test=False, head=None): +class Tester: + def __init__( + self, + model_ckpt, + input_script=None, + system=None, + datafile=None, + numb_test=100, + detail_file=None, + shuffle_test=False, + head=None, + ): """Construct a DeePMD tester. Args: @@ -39,46 +65,64 @@ def __init__(self, model_ckpt, input_script=None, system=None, datafile=None, state_dict = torch.load(model_ckpt, map_location=DEVICE) if "model" in state_dict: state_dict = state_dict["model"] - model_params = state_dict['_extra_state']['model_params'] + model_params = state_dict["_extra_state"]["model_params"] self.multi_task = "model_dict" in model_params if self.multi_task: assert head is not None, "Head must be specified in multitask mode!" self.head = head - assert head in model_params['model_dict'], f"Specified head {head} not found in model {model_ckpt}! " \ - f"Available ones are {list(model_params['model_dict'].keys())}." - model_params = model_params['model_dict'][head] + assert head in model_params["model_dict"], ( + f"Specified head {head} not found in model {model_ckpt}! " + f"Available ones are {list(model_params['model_dict'].keys())}." + ) + model_params = model_params["model_dict"][head] state_dict_head = {"_extra_state": state_dict["_extra_state"]} for item in state_dict: if f"model.{head}." in item: - state_dict_head[item.replace(f"model.{head}.", "model.Default.")] = state_dict[item].clone() + state_dict_head[ + item.replace(f"model.{head}.", "model.Default.") + ] = state_dict[item].clone() state_dict = state_dict_head # Data if input_script is not None: - with open(input_script, 'r') as fin: + with open(input_script) as fin: self.input_script = json.load(fin) training_params = self.input_script["training"] if not self.multi_task: - assert "validation_data" in training_params, f"Validation systems not found in {input_script}!" + assert ( + "validation_data" in training_params + ), f"Validation systems not found in {input_script}!" self.systems = training_params["validation_data"]["systems"] self.batchsize = training_params["validation_data"]["batch_size"] - logging.info(f"Testing validation systems in input script: {input_script}") + logging.info( + f"Testing validation systems in input script: {input_script}" + ) else: - assert "data_dict" in training_params, f"Input script {input_script} is not in multi-task mode!" - assert head in training_params["data_dict"], \ - f"Specified head {head} not found in input script {input_script}! " \ + assert ( + "data_dict" in training_params + ), f"Input script {input_script} is not in multi-task mode!" + assert head in training_params["data_dict"], ( + f"Specified head {head} not found in input script {input_script}! " f"Available ones are {list(training_params['data_dict'].keys())}." - assert "validation_data" in training_params["data_dict"][head], \ - f"Validation systems not found in head {head} of {input_script}!" - self.systems = training_params["data_dict"][head]["validation_data"]["systems"] - self.batchsize = training_params["data_dict"][head]["validation_data"]["batch_size"] - logging.info(f"Testing validation systems in head {head} of input script: {input_script}") + ) + assert ( + "validation_data" in training_params["data_dict"][head] + ), f"Validation systems not found in head {head} of {input_script}!" + self.systems = training_params["data_dict"][head]["validation_data"][ + "systems" + ] + self.batchsize = training_params["data_dict"][head]["validation_data"][ + "batch_size" + ] + logging.info( + f"Testing validation systems in head {head} of input script: {input_script}" + ) elif system is not None: self.systems = expand_sys_str(system) self.batchsize = "auto" logging.info("Testing systems in path: %s", system) elif datafile is not None: - with open(datafile, 'r') as fin: + with open(datafile) as fin: self.systems = fin.read().splitlines() self.batchsize = "auto" logging.info("Testing systems in file: %s", datafile) @@ -101,19 +145,25 @@ def __init__(self, model_ckpt, input_script=None, system=None, datafile=None, # Loss if "fitting_net" not in model_params: - assert input_script is not None, "Denoise model must use --input-script mode!" + assert ( + input_script is not None + ), "Denoise model must use --input-script mode!" loss_params = self.input_script["loss"] loss_type = loss_params.pop("type", "ener") - assert loss_type == 'denoise', "Models without fitting_net only support denoise test!" - self.noise_settings = {"noise_type": loss_params.pop("noise_type", "uniform"), - "noise": loss_params.pop("noise", 1.0), - "noise_mode": loss_params.pop("noise_mode", "fix_num"), - "mask_num": loss_params.pop("mask_num", 8), - "same_mask": loss_params.pop("same_mask", False), - "mask_coord": loss_params.pop("mask_coord", False), - "mask_type": loss_params.pop("mask_type", False), - "mask_type_idx": len(model_params["type_map"]) - 1} - loss_params['ntypes'] = len(model_params['type_map']) + assert ( + loss_type == "denoise" + ), "Models without fitting_net only support denoise test!" + self.noise_settings = { + "noise_type": loss_params.pop("noise_type", "uniform"), + "noise": loss_params.pop("noise", 1.0), + "noise_mode": loss_params.pop("noise_mode", "fix_num"), + "mask_num": loss_params.pop("mask_num", 8), + "same_mask": loss_params.pop("same_mask", False), + "mask_coord": loss_params.pop("mask_coord", False), + "mask_type": loss_params.pop("mask_type", False), + "mask_type_idx": len(model_params["type_map"]) - 1, + } + loss_params["ntypes"] = len(model_params["type_map"]) self.loss = DenoiseLoss(**loss_params) else: self.noise_settings = None @@ -123,7 +173,7 @@ def __init__(self, model_ckpt, input_script=None, system=None, datafile=None, def get_data(data): batch_data = next(iter(data)) for key in batch_data.keys(): - if key == 'sid' or key == 'fid': + if key == "sid" or key == "fid": continue elif not isinstance(batch_data[key], list): if batch_data[key] is not None: @@ -141,7 +191,15 @@ def get_data(data): else: input_dict[item] = None label_dict = {} - for item in ["energy", "force", "virial", "clean_coord", "clean_type", "coord_mask", "type_mask"]: + for item in [ + "energy", + "force", + "virial", + "clean_coord", + "clean_type", + "coord_mask", + "type_mask", + ]: if item in batch_data: label_dict[item] = batch_data[item] return input_dict, label_dict @@ -155,11 +213,21 @@ def run(self): logging.info(f"# testing system : {system}") system_pred = [] system_label = [] - dataset = DpLoaderSet([system], self.batchsize, self.model_params, - type_split=self.type_split, noise_settings=self.noise_settings, shuffle=self.shuffle_test) - sampler = RandomSampler(dataset,replacement=True,num_samples=dataset.total_batch) - if sampler == None: - logging.warning("Sampler not specified!")#None sampler will lead to a premature stop iteration. Replacement should be True in attribute of the sampler to produce expected number of items in one iteration. + dataset = DpLoaderSet( + [system], + self.batchsize, + self.model_params, + type_split=self.type_split, + noise_settings=self.noise_settings, + shuffle=self.shuffle_test, + ) + sampler = RandomSampler( + dataset, replacement=True, num_samples=dataset.total_batch + ) + if sampler is None: + logging.warning( + "Sampler not specified!" + ) # None sampler will lead to a premature stop iteration. Replacement should be True in attribute of the sampler to produce expected number of items in one iteration. dataloader = DataLoader( dataset, sampler=sampler, @@ -176,31 +244,55 @@ def run(self): try: input_dict, label_dict = self.get_data(data) except StopIteration: - if ii < dataset.total_batch:#Unexpected stop iteration.(test step < total batch) + if ( + ii < dataset.total_batch + ): # Unexpected stop iteration.(test step < total batch) raise StopIteration else: break model_pred, _, _ = self.wrapper(**input_dict) - system_pred.append({item: model_pred[item].detach().cpu().numpy() for item in model_pred}) - system_label.append({item: label_dict[item].detach().cpu().numpy() for item in label_dict}) + system_pred.append( + { + item: model_pred[item].detach().cpu().numpy() + for item in model_pred + } + ) + system_label.append( + { + item: label_dict[item].detach().cpu().numpy() + for item in label_dict + } + ) natoms = int(input_dict["atype"].shape[-1]) - _, more_loss = self.loss(model_pred, label_dict, natoms, 1.0, mae=True) # TODO: lr here is useless + _, more_loss = self.loss( + model_pred, label_dict, natoms, 1.0, mae=True + ) # TODO: lr here is useless if sys_natoms is None: sys_natoms = natoms else: - assert sys_natoms == natoms, "Frames in one system must be the same!" + assert ( + sys_natoms == natoms + ), "Frames in one system must be the same!" sum_natoms += natoms for k, v in more_loss.items(): if "mae" in k: single_results[k] = single_results.get(k, 0.0) + v * natoms else: - single_results[k] = single_results.get(k, 0.0) + v ** 2 * natoms + single_results[k] = single_results.get(k, 0.0) + v**2 * natoms if self.detail_file is not None: - save_detail_file(Path(self.detail_file), system_pred, system_label, sys_natoms, system_name=system, append=(cc != 0)) + save_detail_file( + Path(self.detail_file), + system_pred, + system_label, + sys_natoms, + system_name=system, + append=(cc != 0), + ) results = { - k: v / sum_natoms if "mae" in k else math.sqrt(v / sum_natoms) for k, v in single_results.items() + k: v / sum_natoms if "mae" in k else math.sqrt(v / sum_natoms) + for k, v in single_results.items() } - for item in sorted(list(results.keys())): + for item in sorted(results.keys()): logging.info(f"{item}: {results[item]:.4f}") logging.info("# ----------------------------------------------- ") for k, v in single_results.items(): @@ -208,14 +300,15 @@ def run(self): global_sum_natoms += sum_natoms global_results = { - k: v / global_sum_natoms if "mae" in k else math.sqrt(v / global_sum_natoms) for k, v in system_results.items() + k: v / global_sum_natoms if "mae" in k else math.sqrt(v / global_sum_natoms) + for k, v in system_results.items() } logging.info("# ----------weighted average of errors----------- ") if not self.multi_task: logging.info(f"# number of systems : {len(systems)}") else: logging.info(f"# number of systems for {self.head}: {len(systems)}") - for item in sorted(list(global_results.keys())): + for item in sorted(global_results.keys()): logging.info(f"{item}: {global_results[item]:.4f}") logging.info("# ----------------------------------------------- ") return global_results @@ -242,10 +335,12 @@ def save_txt_file( np.savetxt(fp, data, header=header) -def save_detail_file(detail_path, system_pred, system_label, natoms, system_name, append=False): +def save_detail_file( + detail_path, system_pred, system_label, natoms, system_name, append=False +): ntest = len(system_pred) - data_e = np.concatenate([item['energy'] for item in system_label]).reshape([-1, 1]) - pred_e = np.concatenate([item['energy'] for item in system_pred]).reshape([-1, 1]) + data_e = np.concatenate([item["energy"] for item in system_label]).reshape([-1, 1]) + pred_e = np.concatenate([item["energy"] for item in system_pred]).reshape([-1, 1]) pe = np.concatenate( ( data_e, @@ -267,8 +362,12 @@ def save_detail_file(detail_path, system_pred, system_label, natoms, system_name append=append, ) if "force" in system_pred[0]: - data_f = np.concatenate([item['force'] for item in system_label]).reshape([-1, 3]) - pred_f = np.concatenate([item['force'] for item in system_pred]).reshape([-1, 3]) + data_f = np.concatenate([item["force"] for item in system_label]).reshape( + [-1, 3] + ) + pred_f = np.concatenate([item["force"] for item in system_pred]).reshape( + [-1, 3] + ) pf = np.concatenate( ( data_f, @@ -283,8 +382,12 @@ def save_detail_file(detail_path, system_pred, system_label, natoms, system_name append=append, ) if "virial" in system_pred[0]: - data_v = np.concatenate([item['virial'] for item in system_label]).reshape([-1, 9]) - pred_v = np.concatenate([item['virial'] for item in system_pred]).reshape([-1, 9]) + data_v = np.concatenate([item["virial"] for item in system_label]).reshape( + [-1, 9] + ) + pred_v = np.concatenate([item["virial"] for item in system_pred]).reshape( + [-1, 9] + ) pv = np.concatenate( ( data_v, @@ -296,8 +399,8 @@ def save_detail_file(detail_path, system_pred, system_label, natoms, system_name detail_path.with_suffix(".v.out"), pv, header=f"{system_name}: data_vxx data_vxy data_vxz data_vyx data_vyy " - "data_vyz data_vzx data_vzy data_vzz pred_vxx pred_vxy pred_vxz pred_vyx " - "pred_vyy pred_vyz pred_vzx pred_vzy pred_vzz", + "data_vyz data_vzx data_vzy data_vzz pred_vxx pred_vxy pred_vxz pred_vyx " + "pred_vyy pred_vyz pred_vzx pred_vzy pred_vzz", append=append, ) pv_atom = pv / natoms @@ -305,7 +408,7 @@ def save_detail_file(detail_path, system_pred, system_label, natoms, system_name detail_path.with_suffix(".v_peratom.out"), pv_atom, header=f"{system_name}: data_vxx data_vxy data_vxz data_vyx data_vyy " - "data_vyz data_vzx data_vzy data_vzz pred_vxx pred_vxy pred_vxz pred_vyx " - "pred_vyy pred_vyz pred_vzx pred_vzy pred_vzz", + "data_vyz data_vzx data_vzy data_vzz pred_vxx pred_vxy pred_vxz pred_vyx " + "pred_vyy pred_vyz pred_vzx pred_vzy pred_vzz", append=append, ) diff --git a/deepmd_pt/loss/__init__.py b/deepmd_pt/loss/__init__.py index 10e74e31..d3a095ce 100644 --- a/deepmd_pt/loss/__init__.py +++ b/deepmd_pt/loss/__init__.py @@ -1,3 +1,16 @@ -from .loss import TaskLoss -from .ener import EnergyStdLoss -from .denoise import DenoiseLoss +# SPDX-License-Identifier: LGPL-3.0-or-later +from .denoise import ( + DenoiseLoss, +) +from .ener import ( + EnergyStdLoss, +) +from .loss import ( + TaskLoss, +) + +__all__ = [ + "DenoiseLoss", + "EnergyStdLoss", + "TaskLoss", +] diff --git a/deepmd_pt/loss/denoise.py b/deepmd_pt/loss/denoise.py index abdd89cc..0e3c6b5a 100644 --- a/deepmd_pt/loss/denoise.py +++ b/deepmd_pt/loss/denoise.py @@ -1,25 +1,30 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later import torch - -from deepmd_pt.utils.env import GLOBAL_PT_FLOAT_PRECISION -from deepmd_pt.loss import TaskLoss import torch.nn.functional as F -from deepmd_pt.utils import env +from deepmd_pt.loss.loss import ( + TaskLoss, +) +from deepmd_pt.utils import ( + env, +) -class DenoiseLoss(TaskLoss): - def __init__(self, - ntypes, - masked_token_loss=1.0, - masked_coord_loss=1.0, - norm_loss=0.01, - use_l1=True, - beta=1.00, - mask_loss_coord=True, - mask_loss_token=True, - **kwargs): +class DenoiseLoss(TaskLoss): + def __init__( + self, + ntypes, + masked_token_loss=1.0, + masked_coord_loss=1.0, + norm_loss=0.01, + use_l1=True, + beta=1.00, + mask_loss_coord=True, + mask_loss_token=True, + **kwargs, + ): """Construct a layer to compute loss on coord, and type reconstruction.""" - super(DenoiseLoss, self).__init__() + super().__init__() self.ntypes = ntypes self.masked_token_loss = masked_token_loss self.masked_coord_loss = masked_coord_loss @@ -36,15 +41,16 @@ def __init__(self, def forward(self, model_pred, label, natoms, learning_rate, mae=False): """Return loss on coord and type denoise. - Returns: + Returns + ------- - loss: Loss to minimize. """ updated_coord = model_pred["updated_coord"] logits = model_pred["logits"] clean_coord = label["clean_coord"] clean_type = label["clean_type"] - coord_mask = label['coord_mask'] - type_mask = label['type_mask'] + coord_mask = label["coord_mask"] + type_mask = label["type_mask"] loss = torch.tensor(0.0, dtype=env.GLOBAL_PT_FLOAT_PRECISION, device=env.DEVICE) more_loss = {} @@ -60,7 +66,9 @@ def forward(self, model_pred, label, natoms, learning_rate, mae=False): beta=self.beta, ) else: - coord_loss = torch.tensor(0.0, dtype=env.GLOBAL_PT_FLOAT_PRECISION, device=env.DEVICE) + coord_loss = torch.tensor( + 0.0, dtype=env.GLOBAL_PT_FLOAT_PRECISION, device=env.DEVICE + ) else: coord_loss = F.smooth_l1_loss( updated_coord.view(-1, 3), @@ -69,7 +77,7 @@ def forward(self, model_pred, label, natoms, learning_rate, mae=False): beta=self.beta, ) loss += self.masked_coord_loss * coord_loss - more_loss['coord_l1_error'] = coord_loss.detach() + more_loss["coord_l1_error"] = coord_loss.detach() if self.has_token: if self.mask_loss_token: masked_logits = logits[type_mask] @@ -81,7 +89,9 @@ def forward(self, model_pred, label, natoms, learning_rate, mae=False): reduction="mean", ) else: - token_loss = torch.tensor(0.0, dtype=env.GLOBAL_PT_FLOAT_PRECISION, device=env.DEVICE) + token_loss = torch.tensor( + 0.0, dtype=env.GLOBAL_PT_FLOAT_PRECISION, device=env.DEVICE + ) else: token_loss = F.nll_loss( F.log_softmax(logits.view(-1, self.ntypes - 1), dim=-1), @@ -89,11 +99,11 @@ def forward(self, model_pred, label, natoms, learning_rate, mae=False): reduction="mean", ) loss += self.masked_token_loss * token_loss - more_loss['token_error'] = token_loss.detach() + more_loss["token_error"] = token_loss.detach() if self.has_norm: norm_x = model_pred["norm_x"] norm_delta_pair_rep = model_pred["norm_delta_pair_rep"] loss += self.norm_loss * (norm_x + norm_delta_pair_rep) - more_loss['norm_loss'] = norm_x.detach() + norm_delta_pair_rep.detach() + more_loss["norm_loss"] = norm_x.detach() + norm_delta_pair_rep.detach() return loss, more_loss diff --git a/deepmd_pt/loss/ener.py b/deepmd_pt/loss/ener.py index 3ab99059..ad5611fe 100644 --- a/deepmd_pt/loss/ener.py +++ b/deepmd_pt/loss/ener.py @@ -1,25 +1,34 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later import torch -from deepmd_pt.utils.env import GLOBAL_PT_FLOAT_PRECISION -from deepmd_pt.loss import TaskLoss -from deepmd_pt.utils import env import torch.nn.functional as F +from deepmd_pt.loss.loss import ( + TaskLoss, +) +from deepmd_pt.utils import ( + env, +) +from deepmd_pt.utils.env import ( + GLOBAL_PT_FLOAT_PRECISION, +) -class EnergyStdLoss(TaskLoss): - def __init__(self, - starter_learning_rate=1.0, - start_pref_e=0.0, - limit_pref_e=0.0, - start_pref_f=0.0, - limit_pref_f=0.0, - start_pref_v=0.0, - limit_pref_v=0.0, - use_l1_all: bool = False, - inference=False, - **kwargs): +class EnergyStdLoss(TaskLoss): + def __init__( + self, + starter_learning_rate=1.0, + start_pref_e=0.0, + limit_pref_e=0.0, + start_pref_f=0.0, + limit_pref_f=0.0, + start_pref_v=0.0, + limit_pref_v=0.0, + use_l1_all: bool = False, + inference=False, + **kwargs, + ): """Construct a layer to compute loss on energy, force and virial.""" - super(EnergyStdLoss, self).__init__() + super().__init__() self.starter_learning_rate = starter_learning_rate self.has_e = (start_pref_e != 0.0 and limit_pref_e != 0.0) or inference self.has_f = (start_pref_f != 0.0 and limit_pref_f != 0.0) or inference @@ -43,7 +52,8 @@ def forward(self, model_pred, label, natoms, learning_rate, mae=False): - l_energy: Actual energy of all atoms. - l_force: Actual force per atom. - Returns: + Returns + ------- - loss: Loss to minimize. """ coef = learning_rate / self.starter_learning_rate @@ -54,71 +64,92 @@ def forward(self, model_pred, label, natoms, learning_rate, mae=False): more_loss = {} # more_loss['log_keys'] = [] # showed when validation on the fly # more_loss['test_keys'] = [] # showed when doing dp test - atom_norm = 1. / natoms - if self.has_e and 'energy' in model_pred and 'energy' in label: + atom_norm = 1.0 / natoms + if self.has_e and "energy" in model_pred and "energy" in label: if not self.use_l1_all: - l2_ener_loss = torch.mean(torch.square(model_pred['energy'] - label['energy'])) + l2_ener_loss = torch.mean( + torch.square(model_pred["energy"] - label["energy"]) + ) if not self.inference: - more_loss['l2_ener_loss'] = l2_ener_loss.detach() + more_loss["l2_ener_loss"] = l2_ener_loss.detach() loss += atom_norm * (pref_e * l2_ener_loss) rmse_e = l2_ener_loss.sqrt() * atom_norm - more_loss['rmse_e'] = rmse_e.detach() + more_loss["rmse_e"] = rmse_e.detach() # more_loss['log_keys'].append('rmse_e') else: # use l1 and for all atoms - l1_ener_loss = F.l1_loss(model_pred['energy'].reshape(-1), label['energy'].reshape(-1), reduction="sum") - loss += (pref_e * l1_ener_loss) - more_loss['mae_e'] = F.l1_loss(model_pred['energy'].reshape(-1), label['energy'].reshape(-1), reduction="mean").detach() + l1_ener_loss = F.l1_loss( + model_pred["energy"].reshape(-1), + label["energy"].reshape(-1), + reduction="sum", + ) + loss += pref_e * l1_ener_loss + more_loss["mae_e"] = F.l1_loss( + model_pred["energy"].reshape(-1), + label["energy"].reshape(-1), + reduction="mean", + ).detach() # more_loss['log_keys'].append('rmse_e') if mae: - mae_e = torch.mean(torch.abs(model_pred['energy'] - label['energy'])) * atom_norm - more_loss['mae_e'] = mae_e.detach() - mae_e_all = torch.mean(torch.abs(model_pred['energy'] - label['energy'])) - more_loss['mae_e_all'] = mae_e_all.detach() + mae_e = ( + torch.mean(torch.abs(model_pred["energy"] - label["energy"])) + * atom_norm + ) + more_loss["mae_e"] = mae_e.detach() + mae_e_all = torch.mean( + torch.abs(model_pred["energy"] - label["energy"]) + ) + more_loss["mae_e_all"] = mae_e_all.detach() - if self.has_f and 'force' in model_pred and 'force' in label: - if 'force_target_mask' in model_pred: - force_target_mask = model_pred['force_target_mask'] + if self.has_f and "force" in model_pred and "force" in label: + if "force_target_mask" in model_pred: + force_target_mask = model_pred["force_target_mask"] else: force_target_mask = None if not self.use_l1_all: if force_target_mask is not None: - diff_f = (label['force'] - model_pred['force']) * force_target_mask + diff_f = (label["force"] - model_pred["force"]) * force_target_mask force_cnt = force_target_mask.squeeze(-1).sum(-1) - l2_force_loss = torch.mean(torch.square(diff_f).mean(-1).sum(-1)/force_cnt) + l2_force_loss = torch.mean( + torch.square(diff_f).mean(-1).sum(-1) / force_cnt + ) else: - diff_f = label['force'] - model_pred['force'] + diff_f = label["force"] - model_pred["force"] l2_force_loss = torch.mean(torch.square(diff_f)) if not self.inference: - more_loss['l2_force_loss'] = l2_force_loss.detach() + more_loss["l2_force_loss"] = l2_force_loss.detach() loss += (pref_f * l2_force_loss).to(GLOBAL_PT_FLOAT_PRECISION) rmse_f = l2_force_loss.sqrt() - more_loss['rmse_f'] = rmse_f.detach() + more_loss["rmse_f"] = rmse_f.detach() else: - l1_force_loss = F.l1_loss(label['force'], model_pred['force'], reduction="none") + l1_force_loss = F.l1_loss( + label["force"], model_pred["force"], reduction="none" + ) if force_target_mask is not None: l1_force_loss *= force_target_mask force_cnt = force_target_mask.squeeze(-1).sum(-1) - more_loss['mae_f'] = (l1_force_loss.mean(-1).sum(-1) / force_cnt).mean() + more_loss["mae_f"] = ( + l1_force_loss.mean(-1).sum(-1) / force_cnt + ).mean() l1_force_loss = (l1_force_loss.sum(-1).sum(-1) / force_cnt).sum() else: - more_loss['mae_f'] = l1_force_loss.mean().detach() + more_loss["mae_f"] = l1_force_loss.mean().detach() l1_force_loss = l1_force_loss.sum(-1).mean(-1).sum() loss += (pref_f * l1_force_loss).to(GLOBAL_PT_FLOAT_PRECISION) if mae: mae_f = torch.mean(torch.abs(diff_f)) - more_loss['mae_f'] = mae_f.detach() + more_loss["mae_f"] = mae_f.detach() - if self.has_v and 'virial' in model_pred and 'virial' in label: - diff_v = label['virial'] - model_pred['virial'].reshape(-1, 9) + if self.has_v and "virial" in model_pred and "virial" in label: + diff_v = label["virial"] - model_pred["virial"].reshape(-1, 9) l2_virial_loss = torch.mean(torch.square(diff_v)) if not self.inference: - more_loss['l2_virial_loss'] = l2_virial_loss.detach() + more_loss["l2_virial_loss"] = l2_virial_loss.detach() loss += atom_norm * (pref_v * l2_virial_loss) rmse_v = l2_virial_loss.sqrt() * atom_norm - more_loss['rmse_v'] = rmse_v.detach() + more_loss["rmse_v"] = rmse_v.detach() if mae: mae_v = torch.mean(torch.abs(diff_v)) * atom_norm - more_loss['mae_v'] = mae_v.detach() + more_loss["mae_v"] = mae_v.detach() if not self.inference: - more_loss['rmse'] = torch.sqrt(loss.detach()) + more_loss["rmse"] = torch.sqrt(loss.detach()) return loss, more_loss diff --git a/deepmd_pt/loss/loss.py b/deepmd_pt/loss/loss.py index 4c8220b3..9f2c3a7e 100644 --- a/deepmd_pt/loss/loss.py +++ b/deepmd_pt/loss/loss.py @@ -1,14 +1,12 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later import torch class TaskLoss(torch.nn.Module): - def __init__(self, **kwargs): """Construct loss.""" - super(TaskLoss, self).__init__() + super().__init__() def forward(self, model_pred, label, natoms, learning_rate): - """Return loss . - """ + """Return loss .""" raise NotImplementedError - diff --git a/deepmd_pt/model/__init__.py b/deepmd_pt/model/__init__.py index e69de29b..6ceb116d 100644 --- a/deepmd_pt/model/__init__.py +++ b/deepmd_pt/model/__init__.py @@ -0,0 +1 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later diff --git a/deepmd_pt/model/backbone/__init__.py b/deepmd_pt/model/backbone/__init__.py index 8b1d792a..a76bdb2a 100644 --- a/deepmd_pt/model/backbone/__init__.py +++ b/deepmd_pt/model/backbone/__init__.py @@ -1,2 +1,12 @@ -from .backbone import BackBone -from .evoformer2b import Evoformer2bBackBone +# SPDX-License-Identifier: LGPL-3.0-or-later +from .backbone import ( + BackBone, +) +from .evoformer2b import ( + Evoformer2bBackBone, +) + +__all__ = [ + "BackBone", + "Evoformer2bBackBone", +] diff --git a/deepmd_pt/model/backbone/backbone.py b/deepmd_pt/model/backbone/backbone.py index a16a98f9..ddeedfef 100644 --- a/deepmd_pt/model/backbone/backbone.py +++ b/deepmd_pt/model/backbone/backbone.py @@ -1,22 +1,12 @@ -import numpy as np +# SPDX-License-Identifier: LGPL-3.0-or-later import torch -from deepmd_pt.utils import env - -try: - from typing import Final -except: - from torch.jit import Final - class BackBone(torch.nn.Module): def __init__(self, **kwargs): - """ - BackBone base method. - """ - super(BackBone, self).__init__() + """BackBone base method.""" + super().__init__() def forward(self, **kwargs): - """Calculate backBone. - """ + """Calculate backBone.""" raise NotImplementedError diff --git a/deepmd_pt/model/backbone/evoformer2b.py b/deepmd_pt/model/backbone/evoformer2b.py index 50c703f7..82a257f0 100644 --- a/deepmd_pt/model/backbone/evoformer2b.py +++ b/deepmd_pt/model/backbone/evoformer2b.py @@ -1,39 +1,34 @@ -import numpy as np -import torch - -from deepmd_pt.utils import env - -try: - from typing import Final -except: - from torch.jit import Final - -from deepmd_pt.model.backbone import BackBone -from deepmd_pt.model.network import Evoformer2bEncoder +# SPDX-License-Identifier: LGPL-3.0-or-later +from deepmd_pt.model.backbone import ( + BackBone, +) +from deepmd_pt.model.network.network import ( + Evoformer2bEncoder, +) class Evoformer2bBackBone(BackBone): - def __init__(self, - nnei, - layer_num=6, - attn_head=8, - atomic_dim=1024, - pair_dim=100, - feature_dim=1024, - ffn_dim=2048, - post_ln=False, - final_layer_norm=True, - final_head_layer_norm=False, - emb_layer_norm=False, - atomic_residual=False, - evo_residual=False, - residual_factor=1.0, - activation_function="gelu", - **kwargs): - """Construct an evoformer backBone. - - """ - super(Evoformer2bBackBone, self).__init__() + def __init__( + self, + nnei, + layer_num=6, + attn_head=8, + atomic_dim=1024, + pair_dim=100, + feature_dim=1024, + ffn_dim=2048, + post_ln=False, + final_layer_norm=True, + final_head_layer_norm=False, + emb_layer_norm=False, + atomic_residual=False, + evo_residual=False, + residual_factor=1.0, + activation_function="gelu", + **kwargs, + ): + """Construct an evoformer backBone.""" + super().__init__() self.nnei = nnei self.layer_num = layer_num self.attn_head = attn_head @@ -41,7 +36,9 @@ def __init__(self, self.pair_dim = pair_dim self.feature_dim = feature_dim self.head_dim = feature_dim // attn_head - assert feature_dim % attn_head == 0, f"feature_dim {feature_dim} must be divided by attn_head {attn_head}!" + assert ( + feature_dim % attn_head == 0 + ), f"feature_dim {feature_dim} must be divided by attn_head {attn_head}!" self.ffn_dim = ffn_dim self.post_ln = post_ln self.final_layer_norm = final_layer_norm @@ -66,7 +63,8 @@ def __init__(self, atomic_residual=self.atomic_residual, evo_residual=self.evo_residual, residual_factor=self.residual_factor, - activation_function=self.activation_function) + activation_function=self.activation_function, + ) def forward(self, atomic_rep, pair_rep, nlist, nlist_type, nlist_mask): """Encoder the atomic and pair representations. @@ -78,7 +76,8 @@ def forward(self, atomic_rep, pair_rep, nlist, nlist_type, nlist_mask): - nlist_type: Neighbor types with shape [nframes, nloc, nnei]. - nlist_mask: Neighbor mask with shape [nframes, nloc, nnei], `False` if blank. - Returns: + Returns + ------- - atomic_rep: Atomic representation after encoder with shape [nframes, nloc, feature_dim]. - transformed_atomic_rep: Transformed atomic representation after encoder with shape [nframes, nloc, atomic_dim]. - pair_rep: Pair representation after encoder with shape [nframes, nloc, nnei, attn_head]. @@ -86,6 +85,19 @@ def forward(self, atomic_rep, pair_rep, nlist, nlist_type, nlist_mask): - norm_x: Normalization loss of atomic_rep. - norm_delta_pair_rep: Normalization loss of delta_pair_rep. """ - atomic_rep, transformed_atomic_rep, pair_rep, delta_pair_rep, norm_x, norm_delta_pair_rep = \ - self.encoder(atomic_rep, pair_rep, nlist, nlist_type, nlist_mask) - return atomic_rep, transformed_atomic_rep, pair_rep, delta_pair_rep, norm_x, norm_delta_pair_rep + ( + atomic_rep, + transformed_atomic_rep, + pair_rep, + delta_pair_rep, + norm_x, + norm_delta_pair_rep, + ) = self.encoder(atomic_rep, pair_rep, nlist, nlist_type, nlist_mask) + return ( + atomic_rep, + transformed_atomic_rep, + pair_rep, + delta_pair_rep, + norm_x, + norm_delta_pair_rep, + ) diff --git a/deepmd_pt/model/descriptor/__init__.py b/deepmd_pt/model/descriptor/__init__.py index ed0154af..4252e349 100644 --- a/deepmd_pt/model/descriptor/__init__.py +++ b/deepmd_pt/model/descriptor/__init__.py @@ -1,10 +1,46 @@ -from .env_mat import prod_env_mat_se_a -from .descriptor import Descriptor, DescriptorBlock, compute_std, make_default_type_embedding -from .se_a import DescrptSeA -from .dpa1 import DescrptDPA1 -from .dpa2 import DescrptDPA2 -from .hybrid import DescrptBlockHybrid -from .se_a import DescrptBlockSeA -from .se_atten import DescrptBlockSeAtten -from .repformers import DescrptBlockRepformers -from .gaussian_lcc import DescrptGaussianLcc +# SPDX-License-Identifier: LGPL-3.0-or-later +from .descriptor import ( + Descriptor, + DescriptorBlock, + compute_std, + make_default_type_embedding, +) +from .dpa1 import ( + DescrptBlockSeAtten, + DescrptDPA1, +) +from .dpa2 import ( + DescrptDPA2, +) +from .env_mat import ( + prod_env_mat_se_a, +) +from .gaussian_lcc import ( + DescrptGaussianLcc, +) +from .hybrid import ( + DescrptBlockHybrid, +) +from .repformers import ( + DescrptBlockRepformers, +) +from .se_a import ( + DescrptBlockSeA, + DescrptSeA, +) + +__all__ = [ + "Descriptor", + "DescriptorBlock", + "compute_std", + "make_default_type_embedding", + "DescrptBlockSeA", + "DescrptBlockSeAtten", + "DescrptSeA", + "DescrptDPA1", + "DescrptDPA2", + "prod_env_mat_se_a", + "DescrptGaussianLcc", + "DescrptBlockHybrid", + "DescrptBlockRepformers", +] diff --git a/deepmd_pt/model/descriptor/descriptor.py b/deepmd_pt/model/descriptor/descriptor.py index 2d207331..d1eb8860 100644 --- a/deepmd_pt/model/descriptor/descriptor.py +++ b/deepmd_pt/model/descriptor/descriptor.py @@ -1,21 +1,28 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later +from abc import ( + ABC, + abstractmethod, +) +from typing import ( + Callable, + List, + Optional, +) + import numpy as np import torch -from abc import ABC, abstractmethod -from typing import Callable, Optional, List - -from deepmd_pt.utils import env -from deepmd_pt.utils.plugin import Plugin, PluginVariant -from deepmd_pt.model.network import TypeEmbedNet -try: - from typing import Final -except: - from torch.jit import Final +from deepmd_pt.model.network.network import ( + TypeEmbedNet, +) +from deepmd_pt.utils.plugin import ( + Plugin, +) class Descriptor(torch.nn.Module, ABC): """The descriptor. - Given the atomic coordinates, atomic types and neighbor list, + Given the atomic coordinates, atomic types and neighbor list, calculate the descriptor. """ @@ -23,62 +30,38 @@ class Descriptor(torch.nn.Module, ABC): local_cluster = False @abstractmethod - def get_rcut(self)->float: - """ - Returns the cut-off radius - """ + def get_rcut(self) -> float: + """Returns the cut-off radius.""" raise NotImplementedError @abstractmethod - def get_nsel(self)->int: - """ - Returns the number of selected atoms in the cut-off radius - """ + def get_nsel(self) -> int: + """Returns the number of selected atoms in the cut-off radius.""" raise NotImplementedError @abstractmethod - def get_sel(self)->List[int]: - """ - Returns the number of selected atoms for each type. - """ + def get_sel(self) -> List[int]: + """Returns the number of selected atoms for each type.""" raise NotImplementedError @abstractmethod - def get_ntype(self)->int: - """ - Returns the number of element types - """ + def get_ntype(self) -> int: + """Returns the number of element types.""" raise NotImplementedError @abstractmethod - def get_dim_out(self)->int: - """ - Returns the output dimension - """ + def get_dim_out(self) -> int: + """Returns the output dimension.""" raise NotImplementedError @abstractmethod def compute_input_stats(self, merged): - """Update mean and stddev for descriptor elements. - """ + """Update mean and stddev for descriptor elements.""" raise NotImplementedError @abstractmethod def init_desc_stat(self, sumr, suma, sumn, sumr2, suma2): - """Initialize the model bias by the statistics - """ - raise NotImplementedError - - @abstractmethod - def compute_input_stats(self, merged): - """Update mean and stddev for descriptor elements. - """ - raise NotImplementedError - - @abstractmethod - def init_desc_stat(self, sumr, suma, sumn, sumr2, suma2): - """Initialize the model bias by the statistics - """ + """Initialize the model bias by the statistics.""" raise NotImplementedError @abstractmethod @@ -89,8 +72,7 @@ def forward( nlist, mapping: Optional[torch.Tensor] = None, ): - """Calculate descriptor. - """ + """Calculate descriptor.""" raise NotImplementedError @staticmethod @@ -140,7 +122,7 @@ def __new__(cls, *args, **kwargs): class DescriptorBlock(torch.nn.Module, ABC): """The building block of descriptor. - Given the input descriptor, provide with the atomic coordinates, + Given the input descriptor, provide with the atomic coordinates, atomic types and neighbor list, calculate the new descriptor. """ @@ -182,69 +164,74 @@ def __new__(cls, *args, **kwargs): return super().__new__(cls) @abstractmethod - def get_rcut(self)->float: - """ - Returns the cut-off radius - """ + def get_rcut(self) -> float: + """Returns the cut-off radius.""" raise NotImplementedError @abstractmethod - def get_nsel(self)->int: - """ - Returns the number of selected atoms in the cut-off radius - """ + def get_nsel(self) -> int: + """Returns the number of selected atoms in the cut-off radius.""" raise NotImplementedError @abstractmethod - def get_sel(self)->List[int]: - """ - Returns the number of selected atoms for each type - """ + def get_sel(self) -> List[int]: + """Returns the number of selected atoms for each type.""" raise NotImplementedError @abstractmethod - def get_ntype(self)->int: - """ - Returns the number of element types - """ + def get_ntype(self) -> int: + """Returns the number of element types.""" raise NotImplementedError @abstractmethod - def get_dim_out(self)->int: - """ - Returns the output dimension - """ + def get_dim_out(self) -> int: + """Returns the output dimension.""" raise NotImplementedError @abstractmethod - def get_dim_in(self)->int: - """ - Returns the output dimension - """ + def get_dim_in(self) -> int: + """Returns the output dimension.""" raise NotImplementedError @abstractmethod def compute_input_stats(self, merged): - """Update mean and stddev for DescriptorBlock elements. - """ + """Update mean and stddev for DescriptorBlock elements.""" raise NotImplementedError @abstractmethod def init_desc_stat(self, sumr, suma, sumn, sumr2, suma2): - """Initialize the model bias by the statistics - """ + """Initialize the model bias by the statistics.""" raise NotImplementedError def share_params(self, base_class, shared_level, resume=False): - assert self.__class__ == base_class.__class__, "Only descriptors of the same type can share params!" + assert ( + self.__class__ == base_class.__class__ + ), "Only descriptors of the same type can share params!" if shared_level == 0: # link buffers - if hasattr(self, 'mean') and not resume: + if hasattr(self, "mean") and not resume: # in case of change params during resume - sumr_base, suma_base, sumn_base, sumr2_base, suma2_base = \ - base_class.sumr, base_class.suma, base_class.sumn, base_class.sumr2, base_class.suma2 - sumr, suma, sumn, sumr2, suma2 = self.sumr, self.suma, self.sumn, self.sumr2, self.suma2 - base_class.init_desc_stat(sumr_base + sumr, suma_base + suma, sumn_base + sumn, sumr2_base + sumr2, suma2_base + suma2) + sumr_base, suma_base, sumn_base, sumr2_base, suma2_base = ( + base_class.sumr, + base_class.suma, + base_class.sumn, + base_class.sumr2, + base_class.suma2, + ) + sumr, suma, sumn, sumr2, suma2 = ( + self.sumr, + self.suma, + self.sumn, + self.sumr2, + self.suma2, + ) + base_class.init_desc_stat( + sumr_base + sumr, + suma_base + suma, + sumn_base + sumn, + sumr2_base + sumr2, + suma2_base + suma2, + ) self.mean = base_class.mean self.stddev = base_class.stddev # self.load_state_dict(base_class.state_dict()) # this does not work, because it only inits the model @@ -263,8 +250,7 @@ def forward( extended_atype_embd: Optional[torch.Tensor] = None, mapping: Optional[torch.Tensor] = None, ): - """Calculate DescriptorBlock. - """ + """Calculate DescriptorBlock.""" raise NotImplementedError @@ -281,7 +267,6 @@ def compute_std(sumv2, sumv, sumn, rcut_r): def make_default_type_embedding( ntypes, ): - aux = {} - aux['tebd_dim'] = 8 - return TypeEmbedNet(ntypes, aux['tebd_dim']), aux - + aux = {} + aux["tebd_dim"] = 8 + return TypeEmbedNet(ntypes, aux["tebd_dim"]), aux diff --git a/deepmd_pt/model/descriptor/dpa1.py b/deepmd_pt/model/descriptor/dpa1.py index 7e984a29..28a4efb6 100644 --- a/deepmd_pt/model/descriptor/dpa1.py +++ b/deepmd_pt/model/descriptor/dpa1.py @@ -1,162 +1,152 @@ -import numpy as np -import torch -import logging -try: - from typing import Final -except: - from torch.jit import Final +# SPDX-License-Identifier: LGPL-3.0-or-later from typing import ( - List, Optional, Tuple, + List, + Optional, +) + +import torch + +from deepmd_pt.model.descriptor import ( + Descriptor, ) -from deepmd_pt.utils import env -from deepmd_pt.utils.utils import get_activation_fn, ActivationFn -from deepmd_pt.model.descriptor import prod_env_mat_se_a, Descriptor, compute_std -from deepmd_pt.model.network import ( - TypeEmbedNet, SimpleLinear, Identity, Linear +from deepmd_pt.model.network.network import ( + TypeEmbedNet, +) + +from .se_atten import ( + DescrptBlockSeAtten, ) -from deepmd_pt.utils.nlist import build_multiple_neighbor_list -from .se_atten import analyze_descrpt -from .se_atten import DescrptBlockSeAtten @Descriptor.register("dpa1") @Descriptor.register("se_atten") class DescrptDPA1(Descriptor): - def __init__( - self, - rcut, - rcut_smth, - sel, - ntypes: int, - neuron: list = [25, 50, 100], - axis_neuron: int = 16, - tebd_dim: int = 8, - tebd_input_mode: str = 'concat', - # set_davg_zero: bool = False, - set_davg_zero: bool = True, # TODO - attn: int = 128, - attn_layer: int = 2, - attn_dotr: bool = True, - attn_mask: bool = False, - post_ln=True, - ffn=False, - ffn_embed_dim=1024, - activation="tanh", - scaling_factor=1.0, - head_num=1, - normalize=True, - temperature=None, - return_rot=False, - concat_output_tebd: bool = True, - type: Optional[str] = None, - ): - super(DescrptDPA1, self).__init__() - del type - self.se_atten = DescrptBlockSeAtten( - rcut, rcut_smth, sel, ntypes, - neuron=neuron, - axis_neuron=axis_neuron, - tebd_dim=tebd_dim, - tebd_input_mode=tebd_input_mode, - set_davg_zero=set_davg_zero, - attn=attn, - attn_layer=attn_layer, - attn_dotr=attn_dotr, - attn_mask=attn_mask, - post_ln=post_ln, - ffn=ffn, - ffn_embed_dim=ffn_embed_dim, - activation=activation, - scaling_factor=scaling_factor, - head_num=head_num, - normalize=normalize, - temperature=temperature, - return_rot=return_rot, - ) - self.type_embedding = TypeEmbedNet(ntypes, tebd_dim) - self.tebd_dim = tebd_dim - self.concat_output_tebd = concat_output_tebd - - def get_rcut(self)->float: - """ - Returns the cut-off radius - """ - return self.se_atten.get_rcut() - - def get_nsel(self)->int: - """ - Returns the number of selected atoms in the cut-off radius - """ - return self.se_atten.get_nsel() - - def get_sel(self)->List[int]: - """ - Returns the number of selected atoms for each type. - """ - return self.se_atten.get_sel() - - def get_ntype(self)->int: - """ - Returns the number of element types - """ - return self.se_atten.get_ntype() - - def get_dim_out(self)->int: - """ - Returns the output dimension - """ - ret = self.se_atten.get_dim_out() - if self.concat_output_tebd: - ret += self.tebd_dim - return ret - - @property - def dim_out(self): - return self.get_dim_out() - - @property - def dim_emb(self): - return self.se_atten.dim_emb - - - def compute_input_stats(self, merged): - return self.se_atten.compute_input_stats(merged) - - def init_desc_stat(self, sumr, suma, sumn, sumr2, suma2): - self.se_atten.init_desc_stat(sumr, suma, sumn, sumr2, suma2) - - @classmethod - def get_stat_name(cls, config): - descrpt_type = config["type"] - assert descrpt_type in ["dpa1", "se_atten"] - return f'stat_file_dpa1_rcut{config["rcut"]:.2f}_smth{config["rcut_smth"]:.2f}_sel{config["sel"]}.npz' - - @classmethod - def get_data_process_key(cls, config): - descrpt_type = config["type"] - assert descrpt_type in ["dpa1", "se_atten"] - return {"sel": config["sel"], "rcut": config["rcut"]} - - def forward( + def __init__( + self, + rcut, + rcut_smth, + sel, + ntypes: int, + neuron: list = [25, 50, 100], + axis_neuron: int = 16, + tebd_dim: int = 8, + tebd_input_mode: str = "concat", + # set_davg_zero: bool = False, + set_davg_zero: bool = True, # TODO + attn: int = 128, + attn_layer: int = 2, + attn_dotr: bool = True, + attn_mask: bool = False, + post_ln=True, + ffn=False, + ffn_embed_dim=1024, + activation="tanh", + scaling_factor=1.0, + head_num=1, + normalize=True, + temperature=None, + return_rot=False, + concat_output_tebd: bool = True, + type: Optional[str] = None, + ): + super().__init__() + del type + self.se_atten = DescrptBlockSeAtten( + rcut, + rcut_smth, + sel, + ntypes, + neuron=neuron, + axis_neuron=axis_neuron, + tebd_dim=tebd_dim, + tebd_input_mode=tebd_input_mode, + set_davg_zero=set_davg_zero, + attn=attn, + attn_layer=attn_layer, + attn_dotr=attn_dotr, + attn_mask=attn_mask, + post_ln=post_ln, + ffn=ffn, + ffn_embed_dim=ffn_embed_dim, + activation=activation, + scaling_factor=scaling_factor, + head_num=head_num, + normalize=normalize, + temperature=temperature, + return_rot=return_rot, + ) + self.type_embedding = TypeEmbedNet(ntypes, tebd_dim) + self.tebd_dim = tebd_dim + self.concat_output_tebd = concat_output_tebd + + def get_rcut(self) -> float: + """Returns the cut-off radius.""" + return self.se_atten.get_rcut() + + def get_nsel(self) -> int: + """Returns the number of selected atoms in the cut-off radius.""" + return self.se_atten.get_nsel() + + def get_sel(self) -> List[int]: + """Returns the number of selected atoms for each type.""" + return self.se_atten.get_sel() + + def get_ntype(self) -> int: + """Returns the number of element types.""" + return self.se_atten.get_ntype() + + def get_dim_out(self) -> int: + """Returns the output dimension.""" + ret = self.se_atten.get_dim_out() + if self.concat_output_tebd: + ret += self.tebd_dim + return ret + + @property + def dim_out(self): + return self.get_dim_out() + + @property + def dim_emb(self): + return self.se_atten.dim_emb + + def compute_input_stats(self, merged): + return self.se_atten.compute_input_stats(merged) + + def init_desc_stat(self, sumr, suma, sumn, sumr2, suma2): + self.se_atten.init_desc_stat(sumr, suma, sumn, sumr2, suma2) + + @classmethod + def get_stat_name(cls, config): + descrpt_type = config["type"] + assert descrpt_type in ["dpa1", "se_atten"] + return f'stat_file_dpa1_rcut{config["rcut"]:.2f}_smth{config["rcut_smth"]:.2f}_sel{config["sel"]}.npz' + + @classmethod + def get_data_process_key(cls, config): + descrpt_type = config["type"] + assert descrpt_type in ["dpa1", "se_atten"] + return {"sel": config["sel"], "rcut": config["rcut"]} + + def forward( self, extended_coord: torch.Tensor, extended_atype: torch.Tensor, nlist: torch.Tensor, mapping: Optional[torch.Tensor] = None, - ): - del mapping - nframes, nloc, nnei = nlist.shape - nall = extended_coord.view(nframes, -1).shape[1] // 3 - g1_ext = self.type_embedding(extended_atype) - g1_inp = g1_ext[:,:nloc,:] - g1, env_mat, diff, rot_mat, sw = self.se_atten( - nlist, - extended_coord, - extended_atype, - g1_ext, mapping=None, - ) - if self.concat_output_tebd: - g1 = torch.cat([g1, g1_inp], dim=-1) - return g1, env_mat, diff, rot_mat, sw - - + ): + del mapping + nframes, nloc, nnei = nlist.shape + nall = extended_coord.view(nframes, -1).shape[1] // 3 + g1_ext = self.type_embedding(extended_atype) + g1_inp = g1_ext[:, :nloc, :] + g1, env_mat, diff, rot_mat, sw = self.se_atten( + nlist, + extended_coord, + extended_atype, + g1_ext, + mapping=None, + ) + if self.concat_output_tebd: + g1 = torch.cat([g1, g1_inp], dim=-1) + return g1, env_mat, diff, rot_mat, sw diff --git a/deepmd_pt/model/descriptor/dpa2.py b/deepmd_pt/model/descriptor/dpa2.py index 5a6987ac..38281172 100644 --- a/deepmd_pt/model/descriptor/dpa2.py +++ b/deepmd_pt/model/descriptor/dpa2.py @@ -1,358 +1,375 @@ -import numpy as np -import torch -import logging -try: - from typing import Final -except: - from torch.jit import Final +# SPDX-License-Identifier: LGPL-3.0-or-later from typing import ( - List, Optional, Tuple, + List, + Optional, +) + +import torch + +from deepmd_pt.model.descriptor import ( + Descriptor, ) -from deepmd_pt.utils import env -from deepmd_pt.utils.utils import get_activation_fn, ActivationFn -from deepmd_pt.model.descriptor import prod_env_mat_se_a, Descriptor, compute_std -from deepmd_pt.model.network import ( - TypeEmbedNet, SimpleLinear, Identity, Linear +from deepmd_pt.model.network.network import ( + Identity, + Linear, + TypeEmbedNet, ) from deepmd_pt.utils.nlist import ( - get_multiple_nlist_key, build_multiple_neighbor_list + build_multiple_neighbor_list, + get_multiple_nlist_key, ) -from .se_atten import analyze_descrpt -from .se_atten import DescrptBlockSeAtten -from .repformers import DescrptBlockRepformers +from .repformers import ( + DescrptBlockRepformers, +) +from .se_atten import ( + DescrptBlockSeAtten, +) @Descriptor.register("dpa2") class DescrptDPA2(Descriptor): - def __init__( - self, - ntypes: int, - repinit_rcut: float, - repinit_rcut_smth: float, - repinit_nsel: int, - repformer_rcut: float, - repformer_rcut_smth: float, - repformer_nsel: int, - # kwargs - tebd_dim: int = 8, - concat_output_tebd: bool = True, - repinit_neuron: List[int] = [25, 50, 100], - repinit_axis_neuron: int = 16, - repinit_set_davg_zero: bool = True, # TODO - repinit_activation="tanh", - # repinit still unclear: - # ffn, ffn_embed_dim, scaling_factor, normalize, - repformer_nlayers : int = 3, - repformer_g1_dim: int = 128, - repformer_g2_dim: int = 16, - repformer_axis_dim: int = 4, - repformer_do_bn_mode: str = 'no', - repformer_bn_momentum: float = 0.1, - repformer_update_g1_has_conv: bool = True, - repformer_update_g1_has_drrd: bool = True, - repformer_update_g1_has_grrg: bool = True, - repformer_update_g1_has_attn: bool = True, - repformer_update_g2_has_g1g1: bool = True, - repformer_update_g2_has_attn: bool = True, - repformer_update_h2: bool = False, - repformer_attn1_hidden: int = 64, - repformer_attn1_nhead: int = 4, - repformer_attn2_hidden: int = 16, - repformer_attn2_nhead: int = 4, - repformer_attn2_has_gate: bool = False, - repformer_activation: str = "tanh", - repformer_update_style: str = "res_avg", - repformer_set_davg_zero: bool = True, # TODO - repformer_add_type_ebd_to_seq: bool = False, - type: Optional[str] = None, # work around the bad design in get_trainer and DpLoaderSet! - rcut: Optional[float] = None, # work around the bad design in get_trainer and DpLoaderSet! - rcut_smth: Optional[float] = None,# work around the bad design in get_trainer and DpLoaderSet! - sel: Optional[int] = None, # work around the bad design in get_trainer and DpLoaderSet! - ): - """ The DPA-2 descriptor. see https://arxiv.org/abs/2312.15492 - - Parameters - ---------- - ntypes : int - Number of atom types - repinit_rcut : float - The cut-off radius of the repinit block - repinit_rcut_smth : float - From this position the inverse distance smoothly decays - to 0 at the cut-off. Use in the repinit block. - repinit_nsel: int - Maximally possible number of neighbors for repinit block. - repformer_rcut : float - The cut-off radius of the repformer block - repformer_rcut_smth : float - From this position the inverse distance smoothly decays - to 0 at the cut-off. Use in the repformer block. - repformer_nsel: int - Maximally possible number of neighbors for repformer block. - tebd_dim: int - The dimension of atom type embedding - concat_output_tebd: bool - Whether to concat type embedding at the output of the descriptor. - repinit_neuron: List[int] - repinit block: the number of neurons in the embedding net. - repinit_axis_neuron: int - repinit block: the number of dimension of split in the - symmetrization op. - repinit_activation: str - repinit block: the activation function in the embedding net - repformer_nlayers: int - repformers block: the number of repformer layers - repformer_g1_dim: int - repformers block: the dimension of single-atom rep - repformer_g2_dim: int - repformers block: the dimension of invariant pair-atom rep - repformer_axis_dim: int - repformers block: the number of dimension of split in the - symmetrization ops. - repformer_do_bn_mode: bool - repformers block: do batch norm in the repformer layers - repformer_bn_momentum: float - repformers block: moment in the batch normalization - repformer_update_g1_has_conv: bool - repformers block: update the g1 rep with convolution term - repformer_update_g1_has_drrd: bool - repformers block: update the g1 rep with the drrd term - repformer_update_g1_has_grrg: bool - repformers block: update the g1 rep with the grrg term - repformer_update_g1_has_attn: bool - repformers block: update the g1 rep with the localized - self-attention - repformer_update_g2_has_g1g1: bool - repformers block: update the g2 rep with the g1xg1 term - repformer_update_g2_has_attn: bool - repformers block: update the g2 rep with the gated self-attention - repformer_update_h2: bool - repformers block: update the h2 rep - repformer_attn1_hidden: int - repformers block: the hidden dimension of localized self-attention - repformer_attn1_nhead: int - repformers block: the number of heads in localized self-attention - repformer_attn2_hidden: int - repformers block: the hidden dimension of gated self-attention - repformer_attn2_nhead: int - repformers block: the number of heads in gated self-attention - repformer_attn2_has_gate: bool - repformers block: has gate in the gated self-attention - repformer_activation: str - repformers block: the activation function in the MLPs. - repformer_update_style: str - repformers block: style of update a rep. - can be res_avg or res_incr. - res_avg updates a rep `u` with: - u = 1/\sqrt{n+1} (u + u_1 + u_2 + ... + u_n) - res_incr updates a rep `u` with: - u = u + 1/\sqrt{n} (u_1 + u_2 + ... + u_n) - repformer_set_davg_zero: bool - repformers block: set the avg to zero in statistics - repformer_add_type_ebd_to_seq: bool - repformers block: concatenate the type embedding at the output. + def __init__( + self, + ntypes: int, + repinit_rcut: float, + repinit_rcut_smth: float, + repinit_nsel: int, + repformer_rcut: float, + repformer_rcut_smth: float, + repformer_nsel: int, + # kwargs + tebd_dim: int = 8, + concat_output_tebd: bool = True, + repinit_neuron: List[int] = [25, 50, 100], + repinit_axis_neuron: int = 16, + repinit_set_davg_zero: bool = True, # TODO + repinit_activation="tanh", + # repinit still unclear: + # ffn, ffn_embed_dim, scaling_factor, normalize, + repformer_nlayers: int = 3, + repformer_g1_dim: int = 128, + repformer_g2_dim: int = 16, + repformer_axis_dim: int = 4, + repformer_do_bn_mode: str = "no", + repformer_bn_momentum: float = 0.1, + repformer_update_g1_has_conv: bool = True, + repformer_update_g1_has_drrd: bool = True, + repformer_update_g1_has_grrg: bool = True, + repformer_update_g1_has_attn: bool = True, + repformer_update_g2_has_g1g1: bool = True, + repformer_update_g2_has_attn: bool = True, + repformer_update_h2: bool = False, + repformer_attn1_hidden: int = 64, + repformer_attn1_nhead: int = 4, + repformer_attn2_hidden: int = 16, + repformer_attn2_nhead: int = 4, + repformer_attn2_has_gate: bool = False, + repformer_activation: str = "tanh", + repformer_update_style: str = "res_avg", + repformer_set_davg_zero: bool = True, # TODO + repformer_add_type_ebd_to_seq: bool = False, + type: Optional[ + str + ] = None, # work around the bad design in get_trainer and DpLoaderSet! + rcut: Optional[ + float + ] = None, # work around the bad design in get_trainer and DpLoaderSet! + rcut_smth: Optional[ + float + ] = None, # work around the bad design in get_trainer and DpLoaderSet! + sel: Optional[ + int + ] = None, # work around the bad design in get_trainer and DpLoaderSet! + ): + r"""The DPA-2 descriptor. see https://arxiv.org/abs/2312.15492. + + Parameters + ---------- + ntypes : int + Number of atom types + repinit_rcut : float + The cut-off radius of the repinit block + repinit_rcut_smth : float + From this position the inverse distance smoothly decays + to 0 at the cut-off. Use in the repinit block. + repinit_nsel : int + Maximally possible number of neighbors for repinit block. + repformer_rcut : float + The cut-off radius of the repformer block + repformer_rcut_smth : float + From this position the inverse distance smoothly decays + to 0 at the cut-off. Use in the repformer block. + repformer_nsel : int + Maximally possible number of neighbors for repformer block. + tebd_dim : int + The dimension of atom type embedding + concat_output_tebd : bool + Whether to concat type embedding at the output of the descriptor. + repinit_neuron : List[int] + repinit block: the number of neurons in the embedding net. + repinit_axis_neuron : int + repinit block: the number of dimension of split in the + symmetrization op. + repinit_activation : str + repinit block: the activation function in the embedding net + repformer_nlayers : int + repformers block: the number of repformer layers + repformer_g1_dim : int + repformers block: the dimension of single-atom rep + repformer_g2_dim : int + repformers block: the dimension of invariant pair-atom rep + repformer_axis_dim : int + repformers block: the number of dimension of split in the + symmetrization ops. + repformer_do_bn_mode : bool + repformers block: do batch norm in the repformer layers + repformer_bn_momentum : float + repformers block: moment in the batch normalization + repformer_update_g1_has_conv : bool + repformers block: update the g1 rep with convolution term + repformer_update_g1_has_drrd : bool + repformers block: update the g1 rep with the drrd term + repformer_update_g1_has_grrg : bool + repformers block: update the g1 rep with the grrg term + repformer_update_g1_has_attn : bool + repformers block: update the g1 rep with the localized + self-attention + repformer_update_g2_has_g1g1 : bool + repformers block: update the g2 rep with the g1xg1 term + repformer_update_g2_has_attn : bool + repformers block: update the g2 rep with the gated self-attention + repformer_update_h2 : bool + repformers block: update the h2 rep + repformer_attn1_hidden : int + repformers block: the hidden dimension of localized self-attention + repformer_attn1_nhead : int + repformers block: the number of heads in localized self-attention + repformer_attn2_hidden : int + repformers block: the hidden dimension of gated self-attention + repformer_attn2_nhead : int + repformers block: the number of heads in gated self-attention + repformer_attn2_has_gate : bool + repformers block: has gate in the gated self-attention + repformer_activation : str + repformers block: the activation function in the MLPs. + repformer_update_style : str + repformers block: style of update a rep. + can be res_avg or res_incr. + res_avg updates a rep `u` with: + u = 1/\sqrt{n+1} (u + u_1 + u_2 + ... + u_n) + res_incr updates a rep `u` with: + u = u + 1/\sqrt{n} (u_1 + u_2 + ... + u_n) + repformer_set_davg_zero : bool + repformers block: set the avg to zero in statistics + repformer_add_type_ebd_to_seq : bool + repformers block: concatenate the type embedding at the output. - Returns - ------- - descriptor: torch.Tensor - the descriptor of shape nb x nloc x g1_dim. - invariant single-atom representation. - g2: torch.Tensor - invariant pair-atom representation. - h2: torch.Tensor - equivariant pair-atom representation. - rot_mat: torch.Tensor - rotation matrix for equivariant fittings - sw: torch.Tensor - The switch function for decaying inverse distance. + Returns + ------- + descriptor: torch.Tensor + the descriptor of shape nb x nloc x g1_dim. + invariant single-atom representation. + g2: torch.Tensor + invariant pair-atom representation. + h2: torch.Tensor + equivariant pair-atom representation. + rot_mat: torch.Tensor + rotation matrix for equivariant fittings + sw: torch.Tensor + The switch function for decaying inverse distance. - """ - super(DescrptDPA2, self).__init__() - del type, rcut, rcut_smth, sel - self.repinit = DescrptBlockSeAtten( - repinit_rcut, - repinit_rcut_smth, - repinit_nsel, - ntypes, - attn_layer=0, - neuron=repinit_neuron, - axis_neuron=repinit_axis_neuron, - tebd_dim=tebd_dim, - tebd_input_mode='concat', - # tebd_input_mode='dot_residual_s', - set_davg_zero=repinit_set_davg_zero, - activation=repinit_activation, - ) - self.repformers = DescrptBlockRepformers( - repformer_rcut, - repformer_rcut_smth, - repformer_nsel, - ntypes, - nlayers=repformer_nlayers, - g1_dim=repformer_g1_dim, - g2_dim=repformer_g2_dim, - axis_dim=repformer_axis_dim, - direct_dist=False, - do_bn_mode=repformer_do_bn_mode, - bn_momentum=repformer_bn_momentum, - update_g1_has_conv=repformer_update_g1_has_conv, - update_g1_has_drrd=repformer_update_g1_has_drrd, - update_g1_has_grrg=repformer_update_g1_has_grrg, - update_g1_has_attn=repformer_update_g1_has_attn, - update_g2_has_g1g1=repformer_update_g2_has_g1g1, - update_g2_has_attn=repformer_update_g2_has_attn, - update_h2=repformer_update_h2, - attn1_hidden=repformer_attn1_hidden, - attn1_nhead=repformer_attn1_nhead, - attn2_hidden=repformer_attn2_hidden, - attn2_nhead=repformer_attn2_nhead, - attn2_has_gate=repformer_attn2_has_gate, - activation=repformer_activation, - update_style=repformer_update_style, - set_davg_zero=repformer_set_davg_zero, - smooth=True, - add_type_ebd_to_seq=repformer_add_type_ebd_to_seq, - ) - self.type_embedding = TypeEmbedNet(ntypes, tebd_dim) - if self.repinit.dim_out == self.repformers.dim_in: - self.g1_shape_tranform = Identity() - else: - self.g1_shape_tranform = Linear( - self.repinit.dim_out, - self.repformers.dim_in, - bias=False, - init="glorot", - ) - assert self.repinit.rcut > self.repformers.rcut - assert self.repinit.sel[0] > self.repformers.sel[0] - self.concat_output_tebd = concat_output_tebd - self.tebd_dim = tebd_dim - self.rcut = self.repinit.get_rcut() - self.ntypes = ntypes - self.sel = self.repinit.sel + """ + super().__init__() + del type, rcut, rcut_smth, sel + self.repinit = DescrptBlockSeAtten( + repinit_rcut, + repinit_rcut_smth, + repinit_nsel, + ntypes, + attn_layer=0, + neuron=repinit_neuron, + axis_neuron=repinit_axis_neuron, + tebd_dim=tebd_dim, + tebd_input_mode="concat", + # tebd_input_mode='dot_residual_s', + set_davg_zero=repinit_set_davg_zero, + activation=repinit_activation, + ) + self.repformers = DescrptBlockRepformers( + repformer_rcut, + repformer_rcut_smth, + repformer_nsel, + ntypes, + nlayers=repformer_nlayers, + g1_dim=repformer_g1_dim, + g2_dim=repformer_g2_dim, + axis_dim=repformer_axis_dim, + direct_dist=False, + do_bn_mode=repformer_do_bn_mode, + bn_momentum=repformer_bn_momentum, + update_g1_has_conv=repformer_update_g1_has_conv, + update_g1_has_drrd=repformer_update_g1_has_drrd, + update_g1_has_grrg=repformer_update_g1_has_grrg, + update_g1_has_attn=repformer_update_g1_has_attn, + update_g2_has_g1g1=repformer_update_g2_has_g1g1, + update_g2_has_attn=repformer_update_g2_has_attn, + update_h2=repformer_update_h2, + attn1_hidden=repformer_attn1_hidden, + attn1_nhead=repformer_attn1_nhead, + attn2_hidden=repformer_attn2_hidden, + attn2_nhead=repformer_attn2_nhead, + attn2_has_gate=repformer_attn2_has_gate, + activation=repformer_activation, + update_style=repformer_update_style, + set_davg_zero=repformer_set_davg_zero, + smooth=True, + add_type_ebd_to_seq=repformer_add_type_ebd_to_seq, + ) + self.type_embedding = TypeEmbedNet(ntypes, tebd_dim) + if self.repinit.dim_out == self.repformers.dim_in: + self.g1_shape_tranform = Identity() + else: + self.g1_shape_tranform = Linear( + self.repinit.dim_out, + self.repformers.dim_in, + bias=False, + init="glorot", + ) + assert self.repinit.rcut > self.repformers.rcut + assert self.repinit.sel[0] > self.repformers.sel[0] + self.concat_output_tebd = concat_output_tebd + self.tebd_dim = tebd_dim + self.rcut = self.repinit.get_rcut() + self.ntypes = ntypes + self.sel = self.repinit.sel - def get_rcut(self)->float: - """ - Returns the cut-off radius - """ - return self.rcut + def get_rcut(self) -> float: + """Returns the cut-off radius.""" + return self.rcut - def get_nsel(self)->int: - """ - Returns the number of selected atoms in the cut-off radius - """ - return sum(self.sel) + def get_nsel(self) -> int: + """Returns the number of selected atoms in the cut-off radius.""" + return sum(self.sel) - def get_sel(self)->List[int]: - """ - Returns the number of selected atoms for each type. - """ - return self.sel + def get_sel(self) -> List[int]: + """Returns the number of selected atoms for each type.""" + return self.sel - def get_ntype(self)->int: - """ - Returns the number of element types - """ - return self.ntypes + def get_ntype(self) -> int: + """Returns the number of element types.""" + return self.ntypes - def get_dim_out(self)->int: - """ - Returns the output dimension of this descriptor - """ - ret = self.repformers.dim_out - if self.concat_output_tebd: - ret += self.tebd_dim - return ret + def get_dim_out(self) -> int: + """Returns the output dimension of this descriptor.""" + ret = self.repformers.dim_out + if self.concat_output_tebd: + ret += self.tebd_dim + return ret - @property - def dim_out(self): - return self.get_dim_out() + @property + def dim_out(self): + return self.get_dim_out() - @property - def dim_emb(self): - """ - Returns the embedding dimension g2 - """ - return self.repformers.dim_emb + @property + def dim_emb(self): + """Returns the embedding dimension g2.""" + return self.repformers.dim_emb - def compute_input_stats(self, merged): - sumr, suma, sumn, sumr2, suma2 = [], [], [], [], [] - for ii, descrpt in enumerate([self.repinit, self.repformers]): - merged_tmp = [ - {key: item[key] if not isinstance(item[key], list) else item[key][ii] \ - for key in item} \ - for item in merged - ] - sumr_tmp, suma_tmp, sumn_tmp, sumr2_tmp, suma2_tmp = descrpt.compute_input_stats(merged_tmp) - sumr.append(sumr_tmp) - suma.append(suma_tmp) - sumn.append(sumn_tmp) - sumr2.append(sumr2_tmp) - suma2.append(suma2_tmp) - return sumr, suma, sumn, sumr2, suma2 - + def compute_input_stats(self, merged): + sumr, suma, sumn, sumr2, suma2 = [], [], [], [], [] + for ii, descrpt in enumerate([self.repinit, self.repformers]): + merged_tmp = [ + { + key: item[key] if not isinstance(item[key], list) else item[key][ii] + for key in item + } + for item in merged + ] + ( + sumr_tmp, + suma_tmp, + sumn_tmp, + sumr2_tmp, + suma2_tmp, + ) = descrpt.compute_input_stats(merged_tmp) + sumr.append(sumr_tmp) + suma.append(suma_tmp) + sumn.append(sumn_tmp) + sumr2.append(sumr2_tmp) + suma2.append(suma2_tmp) + return sumr, suma, sumn, sumr2, suma2 - def init_desc_stat(self, sumr, suma, sumn, sumr2, suma2): - for ii, descrpt in enumerate([self.repinit, self.repformers]): - descrpt.init_desc_stat(sumr[ii], suma[ii], sumn[ii], sumr2[ii], suma2[ii]) + def init_desc_stat(self, sumr, suma, sumn, sumr2, suma2): + for ii, descrpt in enumerate([self.repinit, self.repformers]): + descrpt.init_desc_stat(sumr[ii], suma[ii], sumn[ii], sumr2[ii], suma2[ii]) - @classmethod - def get_stat_name(cls, config): - descrpt_type = config["type"] - assert descrpt_type in ["dpa2"] - return f'stat_file_dpa2_repinit_rcut{config["repinit_rcut"]:.2f}_smth{config["repinit_rcut_smth"]:.2f}_sel{config["repinit_nsel"]}' \ - f'_repformer_rcut{config["repformer_rcut"]:.2f}_smth{config["repformer_rcut_smth"]:.2f}_sel{config["repformer_nsel"]}.npz' + @classmethod + def get_stat_name(cls, config): + descrpt_type = config["type"] + assert descrpt_type in ["dpa2"] + return ( + f'stat_file_dpa2_repinit_rcut{config["repinit_rcut"]:.2f}_smth{config["repinit_rcut_smth"]:.2f}_sel{config["repinit_nsel"]}' + f'_repformer_rcut{config["repformer_rcut"]:.2f}_smth{config["repformer_rcut_smth"]:.2f}_sel{config["repformer_nsel"]}.npz' + ) - @classmethod - def get_data_process_key(cls, config): - descrpt_type = config["type"] - assert descrpt_type in ["dpa2"] - return {"sel": [config["repinit_nsel"], config["repformer_nsel"]], "rcut": [config["repinit_rcut"], config["repformer_rcut"]]} + @classmethod + def get_data_process_key(cls, config): + descrpt_type = config["type"] + assert descrpt_type in ["dpa2"] + return { + "sel": [config["repinit_nsel"], config["repformer_nsel"]], + "rcut": [config["repinit_rcut"], config["repformer_rcut"]], + } - def forward( + def forward( self, extended_coord: torch.Tensor, extended_atype: torch.Tensor, nlist: torch.Tensor, mapping: Optional[torch.Tensor] = None, - ): - nframes, nloc, nnei = nlist.shape - nall = extended_coord.view(nframes, -1).shape[1] // 3 - # nlists - nlist_dict = build_multiple_neighbor_list( - extended_coord, - nlist, - [self.repformers.get_rcut(), self.repinit.get_rcut()], - [self.repformers.get_nsel(), self.repinit.get_nsel()], - ) - # repinit - g1_ext = self.type_embedding(extended_atype) - g1_inp = g1_ext[:,:nloc,:] - g1, _, _, _, _ = self.repinit( - nlist_dict[get_multiple_nlist_key( - self.repinit.get_rcut(), self.repinit.get_nsel())], - extended_coord, - extended_atype, - g1_ext, mapping, - ) - # linear to change shape - g1 = self.g1_shape_tranform(g1) - # mapping g1 - assert mapping is not None - mapping_ext = mapping.view(nframes, nall)\ - .unsqueeze(-1)\ - .expand(-1, -1, g1.shape[-1]) - g1_ext = torch.gather(g1, 1, mapping_ext) - # repformer - g1, g2, h2, rot_mat, sw = self.repformers( - nlist_dict[get_multiple_nlist_key( - self.repformers.get_rcut(), self.repformers.get_nsel())], - extended_coord, - extended_atype, - g1_ext, mapping, - ) - if self.concat_output_tebd: - g1 = torch.cat([g1, g1_inp], dim=-1) - return g1, g2, h2, rot_mat, sw - + ): + nframes, nloc, nnei = nlist.shape + nall = extended_coord.view(nframes, -1).shape[1] // 3 + # nlists + nlist_dict = build_multiple_neighbor_list( + extended_coord, + nlist, + [self.repformers.get_rcut(), self.repinit.get_rcut()], + [self.repformers.get_nsel(), self.repinit.get_nsel()], + ) + # repinit + g1_ext = self.type_embedding(extended_atype) + g1_inp = g1_ext[:, :nloc, :] + g1, _, _, _, _ = self.repinit( + nlist_dict[ + get_multiple_nlist_key(self.repinit.get_rcut(), self.repinit.get_nsel()) + ], + extended_coord, + extended_atype, + g1_ext, + mapping, + ) + # linear to change shape + g1 = self.g1_shape_tranform(g1) + # mapping g1 + assert mapping is not None + mapping_ext = ( + mapping.view(nframes, nall).unsqueeze(-1).expand(-1, -1, g1.shape[-1]) + ) + g1_ext = torch.gather(g1, 1, mapping_ext) + # repformer + g1, g2, h2, rot_mat, sw = self.repformers( + nlist_dict[ + get_multiple_nlist_key( + self.repformers.get_rcut(), self.repformers.get_nsel() + ) + ], + extended_coord, + extended_atype, + g1_ext, + mapping, + ) + if self.concat_output_tebd: + g1 = torch.cat([g1, g1_inp], dim=-1) + return g1, g2, h2, rot_mat, sw diff --git a/deepmd_pt/model/descriptor/env_mat.py b/deepmd_pt/model/descriptor/env_mat.py index e6e7bef6..58caf036 100644 --- a/deepmd_pt/model/descriptor/env_mat.py +++ b/deepmd_pt/model/descriptor/env_mat.py @@ -1,7 +1,9 @@ -import logging -import numpy as np +# SPDX-License-Identifier: LGPL-3.0-or-later import torch -from deepmd_pt.utils.preprocess import compute_smooth_weight + +from deepmd_pt.utils.preprocess import ( + compute_smooth_weight, +) def _make_env_mat_se_a(nlist, coord, rcut: float, ruct_smth: float): @@ -19,15 +21,15 @@ def _make_env_mat_se_a(nlist, coord, rcut: float, ruct_smth: float): # for index 0 nloc atom length = length + ~mask.unsqueeze(-1) t0 = 1 / length - t1 = diff / length ** 2 + t1 = diff / length**2 weight = compute_smooth_weight(length, ruct_smth, rcut) env_mat_se_a = torch.cat([t0, t1], dim=-1) * weight * mask.unsqueeze(-1) return env_mat_se_a, diff * mask.unsqueeze(-1), weight def prod_env_mat_se_a( - extended_coord, nlist, atype, - mean, stddev, rcut: float, rcut_smth: float): + extended_coord, nlist, atype, mean, stddev, rcut: float, rcut_smth: float +): """Generate smooth environment matrix from atom coordinates and other context. Args: @@ -41,11 +43,14 @@ def prod_env_mat_se_a( - rcut: Cut-off radius. - rcut_smth: Smooth hyper-parameter for pair force & energy. - Returns: + Returns + ------- - env_mat_se_a: Shape is [nframes, natoms[1]*nnei*4]. """ nframes = extended_coord.shape[0] # 样本数量 - _env_mat_se_a, diff, switch = _make_env_mat_se_a(nlist, extended_coord, rcut, rcut_smth) # shape [n_atom, dim, 4] + _env_mat_se_a, diff, switch = _make_env_mat_se_a( + nlist, extended_coord, rcut, rcut_smth + ) # shape [n_atom, dim, 4] t_avg = mean[atype] # [n_atom, dim, 4] t_std = stddev[atype] # [n_atom, dim, 4] env_mat_se_a = (_env_mat_se_a - t_avg) / t_std diff --git a/deepmd_pt/model/descriptor/gaussian_lcc.py b/deepmd_pt/model/descriptor/gaussian_lcc.py index f05421e7..9507a002 100644 --- a/deepmd_pt/model/descriptor/gaussian_lcc.py +++ b/deepmd_pt/model/descriptor/gaussian_lcc.py @@ -1,46 +1,49 @@ -import numpy as np +# SPDX-License-Identifier: LGPL-3.0-or-later import torch import torch.nn as nn -from deepmd_pt.utils import env -from deepmd_pt.model.descriptor import prod_env_mat_se_a, Descriptor, compute_std - -try: - from typing import Final -except: - from torch.jit import Final - -from deepmd_pt.model.network import TypeFilter, TypeEmbedNet, GaussianEmbedding, Evoformer3bEncoder +from deepmd_pt.model.descriptor import ( + Descriptor, +) +from deepmd_pt.model.network.network import ( + Evoformer3bEncoder, + GaussianEmbedding, + TypeEmbedNet, +) +from deepmd_pt.utils import ( + env, +) class DescrptGaussianLcc(Descriptor): - - def __init__(self, - rcut, - rcut_smth, - sel: int, - ntypes: int, - num_pair: int, - embed_dim: int = 768, - kernel_num: int = 128, - pair_embed_dim: int = 64, - num_block: int = 1, - layer_num: int = 12, - attn_head: int = 48, - pair_hidden_dim: int = 16, - ffn_embedding_dim: int = 768, - dropout: float = 0.0, - droppath_prob: float = 0.1, - pair_dropout: float = 0.25, - attention_dropout: float = 0.1, - activation_dropout: float = 0.1, - pre_ln: bool = True, - do_tag_embedding: bool = False, - tag_ener_pref: bool = False, - atomic_sum_gbf: bool = False, - pre_add_seq: bool = True, - tri_update: bool = True, - **kwargs): + def __init__( + self, + rcut, + rcut_smth, + sel: int, + ntypes: int, + num_pair: int, + embed_dim: int = 768, + kernel_num: int = 128, + pair_embed_dim: int = 64, + num_block: int = 1, + layer_num: int = 12, + attn_head: int = 48, + pair_hidden_dim: int = 16, + ffn_embedding_dim: int = 768, + dropout: float = 0.0, + droppath_prob: float = 0.1, + pair_dropout: float = 0.25, + attention_dropout: float = 0.1, + activation_dropout: float = 0.1, + pre_ln: bool = True, + do_tag_embedding: bool = False, + tag_ener_pref: bool = False, + atomic_sum_gbf: bool = False, + pre_add_seq: bool = True, + tri_update: bool = True, + **kwargs, + ): """Construct a descriptor of Gaussian Based Local Cluster. Args: @@ -67,7 +70,7 @@ def __init__(self, - atomic_sum_gbf: Add sum of gaussian outputs to atomic representation or not. - pre_add_seq: Add output of other descriptor (if has) to the atomic representation before attention. """ - super(DescrptGaussianLcc, self).__init__() + super().__init__() self.rcut = rcut self.rcut_smth = rcut_smth self.embed_dim = embed_dim @@ -103,64 +106,72 @@ def __init__(self, self.tag_encoder = nn.Embedding(3, self.embed_dim) self.tag_encoder2 = nn.Embedding(2, self.embed_dim) self.tag_type_embedding = TypeEmbedNet(10, pair_embed_dim) - self.edge_type_embedding = nn.Embedding((ntypes + 1) * (ntypes + 1), - pair_embed_dim, padding_idx=(ntypes + 1) * (ntypes + 1) - 1, - dtype=env.GLOBAL_PT_FLOAT_PRECISION) - self.gaussian_encoder = GaussianEmbedding(rcut, kernel_num, num_pair, embed_dim, - pair_embed_dim, sel, ntypes, atomic_sum_gbf) - self.backbone = Evoformer3bEncoder(self.nnei, - layer_num=self.layer_num, - attn_head=self.attention_heads, - atomic_dim=self.embed_dim, - pair_dim=self.pair_embed_dim, - pair_hidden_dim=self.pair_hidden_dim, - ffn_embedding_dim=self.ffn_embedding_dim, - dropout=self.dropout, - droppath_prob=self.droppath_prob, - pair_dropout=self.pair_dropout, - attention_dropout=self.attention_dropout, - activation_dropout=self.activation_dropout, - pre_ln=self.pre_ln, - tri_update=self.tri_update) + self.edge_type_embedding = nn.Embedding( + (ntypes + 1) * (ntypes + 1), + pair_embed_dim, + padding_idx=(ntypes + 1) * (ntypes + 1) - 1, + dtype=env.GLOBAL_PT_FLOAT_PRECISION, + ) + self.gaussian_encoder = GaussianEmbedding( + rcut, + kernel_num, + num_pair, + embed_dim, + pair_embed_dim, + sel, + ntypes, + atomic_sum_gbf, + ) + self.backbone = Evoformer3bEncoder( + self.nnei, + layer_num=self.layer_num, + attn_head=self.attention_heads, + atomic_dim=self.embed_dim, + pair_dim=self.pair_embed_dim, + pair_hidden_dim=self.pair_hidden_dim, + ffn_embedding_dim=self.ffn_embedding_dim, + dropout=self.dropout, + droppath_prob=self.droppath_prob, + pair_dropout=self.pair_dropout, + attention_dropout=self.attention_dropout, + activation_dropout=self.activation_dropout, + pre_ln=self.pre_ln, + tri_update=self.tri_update, + ) @property def dim_out(self): - """ - Returns the output dimension of atomic representation. - """ + """Returns the output dimension of atomic representation.""" return self.embed_dim @property def dim_in(self): - """ - Returns the atomic input dimension of this descriptor - """ + """Returns the atomic input dimension of this descriptor.""" return self.embed_dim @property def dim_emb(self): - """ - Returns the output dimension of pair representation. - """ + """Returns the output dimension of pair representation.""" return self.pair_embed_dim def compute_input_stats(self, merged): - """Update mean and stddev for descriptor elements. - """ + """Update mean and stddev for descriptor elements.""" return [], [], [], [], [] def init_desc_stat(self, sumr, suma, sumn, sumr2, suma2): pass - def forward(self, - extended_coord, - nlist, - atype, - nlist_type, - nlist_loc=None, - atype_tebd=None, - nlist_tebd=None, - seq_input=None): + def forward( + self, + extended_coord, + nlist, + atype, + nlist_type, + nlist_loc=None, + atype_tebd=None, + nlist_tebd=None, + seq_input=None, + ): """Calculate the atomic and pair representations of this descriptor. Args: @@ -174,18 +185,31 @@ def forward(self, - seq_input: The sequential input from other descriptor with shape [nframes, nloc, tebd_dim] or [nframes * nloc, 1 + nnei, tebd_dim] - Returns: + Returns + ------- - result: descriptor with shape [nframes, nloc, self.filter_neuron[-1] * self.axis_neuron]. - ret: environment matrix with shape [nframes, nloc, self.neei, out_size] """ nframes, nloc = nlist.shape[:2] nall = extended_coord.shape[1] nlist2 = torch.cat( - [torch.arange(0, nloc, device=nlist.device).reshape(1, nloc, 1).expand(nframes, -1, -1), - nlist], dim=-1) + [ + torch.arange(0, nloc, device=nlist.device) + .reshape(1, nloc, 1) + .expand(nframes, -1, -1), + nlist, + ], + dim=-1, + ) nlist_loc2 = torch.cat( - [torch.arange(0, nloc, device=nlist_loc.device).reshape(1, nloc, 1).expand(nframes, -1, -1), - nlist_loc], dim=-1) + [ + torch.arange(0, nloc, device=nlist_loc.device) + .reshape(1, nloc, 1) + .expand(nframes, -1, -1), + nlist_loc, + ], + dim=-1, + ) nlist_type2 = torch.cat([atype.reshape(nframes, nloc, 1), nlist_type], dim=-1) nnei2_mask = nlist2 != -1 padding_mask = nlist2 == -1 @@ -195,22 +219,29 @@ def forward(self, # nframes x nloc x (1 + nnei2) x (1 + nnei2) pair_mask = nnei2_mask.unsqueeze(-1) * nnei2_mask.unsqueeze(-2) # nframes x nloc x (1 + nnei2) x (1 + nnei2) x head - attn_mask = torch.zeros([nframes, nloc, 1 + self.nnei, 1 + self.nnei, self.attention_heads], - device=nlist.device, - dtype=extended_coord.dtype) - attn_mask.masked_fill_( - padding_mask.unsqueeze(2).unsqueeze(-1), - float("-inf") + attn_mask = torch.zeros( + [nframes, nloc, 1 + self.nnei, 1 + self.nnei, self.attention_heads], + device=nlist.device, + dtype=extended_coord.dtype, ) + attn_mask.masked_fill_(padding_mask.unsqueeze(2).unsqueeze(-1), float("-inf")) # (nframes x nloc) x head x (1 + nnei2) x (1 + nnei2) - attn_mask = attn_mask.reshape( - nframes * nloc, 1 + self.nnei, 1 + self.nnei, self.attention_heads - ).permute(0, 3, 1, 2).contiguous() + attn_mask = ( + attn_mask.reshape( + nframes * nloc, 1 + self.nnei, 1 + self.nnei, self.attention_heads + ) + .permute(0, 3, 1, 2) + .contiguous() + ) # Atomic feature # [(nframes x nloc) x (1 + nnei2) x tebd_dim] atom_feature = torch.gather( - atype_tebd, dim=1, index=nlist_loc2.reshape(nframes, -1).unsqueeze(-1).expand(-1, -1, self.embed_dim) + atype_tebd, + dim=1, + index=nlist_loc2.reshape(nframes, -1) + .unsqueeze(-1) + .expand(-1, -1, self.embed_dim), ).reshape(nframes * nloc, 1 + self.nnei, self.embed_dim) if self.pre_add_seq and seq_input is not None: first_dim = seq_input.shape[0] @@ -218,43 +249,67 @@ def forward(self, atom_feature += seq_input elif first_dim == nframes: atom_feature_seq = torch.gather( - seq_input, dim=1, index=nlist_loc2.reshape(nframes, -1).unsqueeze(-1).expand(-1, -1, self.embed_dim) + seq_input, + dim=1, + index=nlist_loc2.reshape(nframes, -1) + .unsqueeze(-1) + .expand(-1, -1, self.embed_dim), ).reshape(nframes * nloc, 1 + self.nnei, self.embed_dim) atom_feature += atom_feature_seq else: raise RuntimeError - atom_feature = atom_feature * nnei2_mask.reshape(nframes * nloc, 1 + self.nnei, 1) + atom_feature = atom_feature * nnei2_mask.reshape( + nframes * nloc, 1 + self.nnei, 1 + ) # Pair feature # [(nframes x nloc) x (1 + nnei2)] nlist_type2_reshape = nlist_type2.reshape(nframes * nloc, 1 + self.nnei) # [(nframes x nloc) x (1 + nnei2) x (1 + nnei2)] - edge_type = nlist_type2_reshape.unsqueeze(-1) * (self.ntypes + 1) + nlist_type2_reshape.unsqueeze(-2) + edge_type = nlist_type2_reshape.unsqueeze(-1) * ( + self.ntypes + 1 + ) + nlist_type2_reshape.unsqueeze(-2) # [(nframes x nloc) x (1 + nnei2) x (1 + nnei2) x pair_dim] edge_feature = self.edge_type_embedding(edge_type) # [(nframes x nloc) x (1 + nnei2) x (1 + nnei2) x 2] edge_type_2dim = torch.cat( - [nlist_type2_reshape.view(nframes * nloc, 1 + self.nnei, 1, 1).expand(-1, -1, 1 + self.nnei, -1), - nlist_type2_reshape.view(nframes * nloc, 1, 1 + self.nnei, 1).expand(-1, 1 + self.nnei, -1, - -1) + self.ntypes], + [ + nlist_type2_reshape.view(nframes * nloc, 1 + self.nnei, 1, 1).expand( + -1, -1, 1 + self.nnei, -1 + ), + nlist_type2_reshape.view(nframes * nloc, 1, 1 + self.nnei, 1).expand( + -1, 1 + self.nnei, -1, -1 + ) + + self.ntypes, + ], dim=-1, ) # [(nframes x nloc) x (1 + nnei2) x 3] coord_selected = torch.gather( - extended_coord.unsqueeze(1).expand(-1, nloc, -1, -1).reshape(nframes * nloc, nall, 3), - dim=1, index=nlist2.reshape(nframes * nloc, 1 + self.nnei, 1).expand(-1, -1, 3)) + extended_coord.unsqueeze(1) + .expand(-1, nloc, -1, -1) + .reshape(nframes * nloc, nall, 3), + dim=1, + index=nlist2.reshape(nframes * nloc, 1 + self.nnei, 1).expand(-1, -1, 3), + ) # Update pair features (or and atomic features) with gbf features # delta_pos: [(nframes x nloc) x (1 + nnei2) x (1 + nnei2) x 3]. - atomic_feature, pair_feature, delta_pos = self.gaussian_encoder(coord_selected, atom_feature, - edge_type_2dim, edge_feature) + atomic_feature, pair_feature, delta_pos = self.gaussian_encoder( + coord_selected, atom_feature, edge_type_2dim, edge_feature + ) # [(nframes x nloc) x (1 + nnei2) x (1 + nnei2) x pair_dim] attn_bias = pair_feature # output: [(nframes x nloc) x (1 + nnei2) x tebd_dim] # pair: [(nframes x nloc) x (1 + nnei2) x (1 + nnei2) x pair_dim] - output, pair = self.backbone(atomic_feature, pair=attn_bias, attn_mask=attn_mask, pair_mask=pair_mask, - atom_mask=nnei2_mask.reshape(nframes * nloc, 1 + self.nnei)) + output, pair = self.backbone( + atomic_feature, + pair=attn_bias, + attn_mask=attn_mask, + pair_mask=pair_mask, + atom_mask=nnei2_mask.reshape(nframes * nloc, 1 + self.nnei), + ) return output, pair, delta_pos, None diff --git a/deepmd_pt/model/descriptor/hybrid.py b/deepmd_pt/model/descriptor/hybrid.py index c360c09e..6eac4212 100644 --- a/deepmd_pt/model/descriptor/hybrid.py +++ b/deepmd_pt/model/descriptor/hybrid.py @@ -1,44 +1,49 @@ -import numpy as np -import torch +# SPDX-License-Identifier: LGPL-3.0-or-later +from typing import ( + List, + Optional, +) -from deepmd_pt.utils import env -from deepmd_pt.model.descriptor import prod_env_mat_se_a, DescriptorBlock, compute_std -from deepmd_pt.model.network import Identity, Linear -from typing import Optional, List +import torch -try: - from typing import Final -except: - from torch.jit import Final +from deepmd_pt.model.descriptor import ( + DescriptorBlock, +) +from deepmd_pt.model.network.network import ( + Identity, + Linear, +) @DescriptorBlock.register("hybrid") class DescrptBlockHybrid(DescriptorBlock): - - def __init__(self, - list, - ntypes: int, - tebd_dim: int = 8, - tebd_input_mode: str = 'concat', - hybrid_mode: str = "concat", - **kwargs): + def __init__( + self, + list, + ntypes: int, + tebd_dim: int = 8, + tebd_input_mode: str = "concat", + hybrid_mode: str = "concat", + **kwargs, + ): """Construct a hybrid descriptor. Args: - descriptor_list: list of descriptors. - descriptor_param: descriptor configs. """ - super(DescrptBlockHybrid, self).__init__() - supported_descrpt = ['se_atten', 'se_uni'] + super().__init__() + supported_descrpt = ["se_atten", "se_uni"] descriptor_list = [] for descriptor_param_item in list: - descriptor_type_tmp = descriptor_param_item['type'] - assert descriptor_type_tmp in supported_descrpt, \ - f'Only descriptors in {supported_descrpt} are supported for `hybrid` descriptor!' - descriptor_param_item['ntypes'] = ntypes + descriptor_type_tmp = descriptor_param_item["type"] + assert ( + descriptor_type_tmp in supported_descrpt + ), f"Only descriptors in {supported_descrpt} are supported for `hybrid` descriptor!" + descriptor_param_item["ntypes"] = ntypes if descriptor_type_tmp == "se_atten": - descriptor_param_item['tebd_dim'] = tebd_dim - descriptor_param_item['tebd_input_mode'] = tebd_input_mode + descriptor_param_item["tebd_dim"] = tebd_dim + descriptor_param_item["tebd_input_mode"] = tebd_input_mode descriptor_list.append(DescriptorBlock(**descriptor_param_item)) self.descriptor_list = torch.nn.ModuleList(descriptor_list) self.descriptor_param = list @@ -46,7 +51,9 @@ def __init__(self, self.sec = [descrpt.sec for descrpt in self.descriptor_list] self.sel = [descrpt.sel for descrpt in self.descriptor_list] self.split_sel = [sum(ii) for ii in self.sel] - self.local_cluster_list = [descrpt.local_cluster for descrpt in self.descriptor_list] + self.local_cluster_list = [ + descrpt.local_cluster for descrpt in self.descriptor_list + ] self.local_cluster = True in self.local_cluster_list self.hybrid_mode = hybrid_mode self.tebd_dim = tebd_dim @@ -57,53 +64,45 @@ def __init__(self, if descriptor_list[ii].dim_out == descriptor_list[ii + 1].dim_in: sequential_transform.append(Identity()) else: - sequential_transform.append(Linear(descriptor_list[ii].dim_out, descriptor_list[ii + 1].dim_in, - bias=False, init="glorot")) + sequential_transform.append( + Linear( + descriptor_list[ii].dim_out, + descriptor_list[ii + 1].dim_in, + bias=False, + init="glorot", + ) + ) sequential_transform.append(Identity()) self.sequential_transform = torch.nn.ModuleList(sequential_transform) self.ntypes = ntypes - def get_rcut(self)->float: - """ - Returns the cut-off radius - """ - return self.rcut - - def get_nsel(self)->int: - """ - Returns the number of selected atoms in the cut-off radius - """ - return [sum(ii) for ii in self.get_sel()] - - def get_sel(self)->List[int]: - """ - Returns the number of selected atoms for each type. - """ - return self.sel - - def get_ntype(self)->int: - """ - Returns the number of element types - """ - return self.ntypes - - def get_dim_out(self)->int: - """ - Returns the output dimension - """ - return self.dim_out - - def get_dim_in(self)->int: - """ - Returns the input dimension - """ - return self.dim_in + def get_rcut(self) -> float: + """Returns the cut-off radius.""" + return self.rcut + + def get_nsel(self) -> int: + """Returns the number of selected atoms in the cut-off radius.""" + return [sum(ii) for ii in self.get_sel()] + + def get_sel(self) -> List[int]: + """Returns the number of selected atoms for each type.""" + return self.sel + + def get_ntype(self) -> int: + """Returns the number of element types.""" + return self.ntypes + + def get_dim_out(self) -> int: + """Returns the output dimension.""" + return self.dim_out + + def get_dim_in(self) -> int: + """Returns the input dimension.""" + return self.dim_in @property def dim_out(self): - """ - Returns the output dimension of this descriptor - """ + """Returns the output dimension of this descriptor.""" if self.hybrid_mode == "concat": return sum([descrpt.dim_out for descrpt in self.descriptor_list]) elif self.hybrid_mode == "sequential": @@ -113,16 +112,12 @@ def dim_out(self): @property def dim_emb_list(self) -> List[int]: - """ - Returns the output dimension list of embeddings - """ + """Returns the output dimension list of embeddings.""" return [descrpt.dim_emb for descrpt in self.descriptor_list] @property def dim_emb(self): - """ - Returns the output dimension of embedding - """ + """Returns the output dimension of embedding.""" if self.hybrid_mode == "concat": return sum(self.dim_emb_list) elif self.hybrid_mode == "sequential": @@ -131,23 +126,37 @@ def dim_emb(self): raise RuntimeError def share_params(self, base_class, shared_level, resume=False): - assert self.__class__ == base_class.__class__, "Only descriptors of the same type can share params!" + assert ( + self.__class__ == base_class.__class__ + ), "Only descriptors of the same type can share params!" if shared_level == 0: for ii, des in enumerate(self.descriptor_list): - self.descriptor_list[ii].share_params(base_class.descriptor_list[ii], shared_level, resume=resume) + self.descriptor_list[ii].share_params( + base_class.descriptor_list[ii], shared_level, resume=resume + ) if self.hybrid_mode == "sequential": self.sequential_transform = base_class.sequential_transform else: raise NotImplementedError def compute_input_stats(self, merged): - """Update mean and stddev for descriptor elements. - """ + """Update mean and stddev for descriptor elements.""" sumr, suma, sumn, sumr2, suma2 = [], [], [], [], [] for ii, descrpt in enumerate(self.descriptor_list): - merged_tmp = [{key: item[key] if not isinstance(item[key], list) else item[key][ii] for key in item} for - item in merged] - sumr_tmp, suma_tmp, sumn_tmp, sumr2_tmp, suma2_tmp = descrpt.compute_input_stats(merged_tmp) + merged_tmp = [ + { + key: item[key] if not isinstance(item[key], list) else item[key][ii] + for key in item + } + for item in merged + ] + ( + sumr_tmp, + suma_tmp, + sumn_tmp, + sumr2_tmp, + suma2_tmp, + ) = descrpt.compute_input_stats(merged_tmp) sumr.append(sumr_tmp) suma.append(suma_tmp) sumn.append(sumn_tmp) @@ -177,27 +186,27 @@ def forward( - atype_tebd: Tell simulation box with shape [nframes, 9]. - nlist_tebd: Tell simulation box with shape [nframes, 9]. - Returns: + Returns + ------- - result: descriptor with shape [nframes, nloc, self.filter_neuron[-1] * self.axis_neuron]. - ret: environment matrix with shape [nframes, nloc, self.neei, out_size] """ nlist_list = list(torch.split(nlist, self.split_sel, -1)) nframes, nloc, nnei = nlist.shape concat_rot_mat = True - if self.hybrid_mode == 'concat': + if self.hybrid_mode == "concat": out_descriptor = [] # out_env_mat = [] out_rot_mat_list = [] # out_diff = [] for ii, descrpt in enumerate(self.descriptor_list): - descriptor, env_mat, diff, rot_mat, sw = \ - descrpt( - nlist_list[ii], + descriptor, env_mat, diff, rot_mat, sw = descrpt( + nlist_list[ii], extended_coord, extended_atype, extended_atype_embd, mapping, - ) + ) if descriptor.shape[0] == nframes * nloc: # [nframes * nloc, 1 + nnei, emb_dim] descriptor = descriptor[:, 0, :].reshape(nframes, nloc, -1) @@ -213,28 +222,33 @@ def forward( else: out_rot_mat = None return out_descriptor, None, None, out_rot_mat, sw - elif self.hybrid_mode == 'sequential': + elif self.hybrid_mode == "sequential": assert extended_atype_embd is not None assert mapping is not None nframes, nloc, nnei = nlist.shape nall = extended_coord.view(nframes, -1).shape[1] // 3 seq_input_ext = extended_atype_embd - seq_input = seq_input_ext[:, :nloc, :] if len(self.descriptor_list) == 0 else None + seq_input = ( + seq_input_ext[:, :nloc, :] if len(self.descriptor_list) == 0 else None + ) env_mat, diff, rot_mat, sw = None, None, None, None env_mat_list, diff_list = [], [] - for ii, (descrpt, seq_transform) in enumerate(zip(self.descriptor_list, self.sequential_transform)): - seq_output, env_mat, diff, rot_mat, sw = \ - descrpt( - nlist_list[ii], + for ii, (descrpt, seq_transform) in enumerate( + zip(self.descriptor_list, self.sequential_transform) + ): + seq_output, env_mat, diff, rot_mat, sw = descrpt( + nlist_list[ii], extended_coord, extended_atype, seq_input_ext, mapping, - ) + ) seq_input = seq_transform(seq_output) - mapping_ext = mapping.view(nframes, nall)\ - .unsqueeze(-1)\ - .expand(-1, -1, seq_input.shape[-1]) + mapping_ext = ( + mapping.view(nframes, nall) + .unsqueeze(-1) + .expand(-1, -1, seq_input.shape[-1]) + ) seq_input_ext = torch.gather(seq_input, 1, mapping_ext) env_mat_list.append(env_mat) diff_list.append(diff) diff --git a/deepmd_pt/model/descriptor/repformer_layer.py b/deepmd_pt/model/descriptor/repformer_layer.py index 8ea24b03..56e6fad8 100644 --- a/deepmd_pt/model/descriptor/repformer_layer.py +++ b/deepmd_pt/model/descriptor/repformer_layer.py @@ -1,28 +1,31 @@ -import numpy as np +# SPDX-License-Identifier: LGPL-3.0-or-later +from typing import ( + Callable, + List, +) + import torch -import logging -try: - from typing import Final -except: - from torch.jit import Final -from typing import ( - List, Optional, Tuple, Callable +from deepmd_pt.model.network.network import ( + SimpleLinear, +) +from deepmd_pt.utils import ( + env, ) -from deepmd_pt.utils import env -from deepmd_pt.utils.utils import get_activation_fn, ActivationFn -from deepmd_pt.model.network import ( - TypeEmbedNet, SimpleLinear +from deepmd_pt.utils.utils import ( + get_activation_fn, ) def torch_linear(*args, **kwargs): - return torch.nn.Linear(*args, **kwargs, dtype= env.GLOBAL_PT_FLOAT_PRECISION, device=env.DEVICE) + return torch.nn.Linear( + *args, **kwargs, dtype=env.GLOBAL_PT_FLOAT_PRECISION, device=env.DEVICE + ) def _make_nei_g1( - g1_ext: torch.Tensor, - nlist: torch.Tensor, + g1_ext: torch.Tensor, + nlist: torch.Tensor, ) -> torch.Tensor: # nlist: nb x nloc x nnei nb, nloc, nnei = nlist.shape @@ -38,25 +41,22 @@ def _make_nei_g1( def _apply_nlist_mask( - gg: torch.Tensor, - nlist_mask: torch.Tensor, + gg: torch.Tensor, + nlist_mask: torch.Tensor, ) -> torch.Tensor: # gg: nf x nloc x nnei x ng # msk: nf x nloc x nnei - return gg.masked_fill(~nlist_mask.unsqueeze(-1), float(0.)) + return gg.masked_fill(~nlist_mask.unsqueeze(-1), 0.0) -def _apply_switch( - gg: torch.Tensor, - sw: torch.Tensor -) -> torch.Tensor: +def _apply_switch(gg: torch.Tensor, sw: torch.Tensor) -> torch.Tensor: # gg: nf x nloc x nnei x ng # sw: nf x nloc x nnei return gg * sw.unsqueeze(-1) def _apply_h_norm( - hh: torch.Tensor, # nf x nloc x nnei x 3 + hh: torch.Tensor, # nf x nloc x nnei x 3 ) -> torch.Tensor: """Normalize h by the std of vector length. do not have an idea if this is a good way. @@ -67,21 +67,21 @@ def _apply_h_norm( # nf x nloc std = torch.std(normh, dim=-1) # nf x nloc x nnei x 3 - hh = hh[:, :, :, :] / (1. + std[:, :, None, None]) + hh = hh[:, :, :, :] / (1.0 + std[:, :, None, None]) return hh class Atten2Map(torch.nn.Module): def __init__( - self, - ni: int, - nd: int, - nh: int, - has_gate: bool = False, # apply gate to attn map - smooth: bool = True, - attnw_shift: float = 20.0, + self, + ni: int, + nd: int, + nh: int, + has_gate: bool = False, # apply gate to attn map + smooth: bool = True, + attnw_shift: float = 20.0, ): - super(Atten2Map, self).__init__() + super().__init__() self.ni = ni self.nd = nd self.nh = nh @@ -91,13 +91,18 @@ def __init__( self.attnw_shift = attnw_shift def forward( - self, - g2: torch.Tensor, # nb x nloc x nnei x ng2 - h2: torch.Tensor, # nb x nloc x nnei x 3 - nlist_mask: torch.Tensor, # nb x nloc x nnei - sw: torch.Tensor # nb x nloc x nnei + self, + g2: torch.Tensor, # nb x nloc x nnei x ng2 + h2: torch.Tensor, # nb x nloc x nnei x 3 + nlist_mask: torch.Tensor, # nb x nloc x nnei + sw: torch.Tensor, # nb x nloc x nnei ) -> torch.Tensor: - nb, nloc, nnei, _, = g2.shape + ( + nb, + nloc, + nnei, + _, + ) = g2.shape nd, nh = self.nd, self.nh # nb x nloc x nnei x nd x (nh x 2) g2qk = self.mapqk(g2).view(nb, nloc, nnei, nd, nh * 2) @@ -108,7 +113,7 @@ def forward( # g2q = torch.nn.functional.normalize(g2q, dim=-1) # g2k = torch.nn.functional.normalize(g2k, dim=-1) # nb x nloc x nh x nnei x nnei - attnw = torch.matmul(g2q, torch.transpose(g2k, -1, -2)) / nd ** 0.5 + attnw = torch.matmul(g2q, torch.transpose(g2k, -1, -2)) / nd**0.5 if self.has_gate: gate = torch.matmul(h2, torch.transpose(h2, -1, -2)).unsqueeze(-3) attnw = attnw * gate @@ -117,17 +122,28 @@ def forward( # mask the attenmap, nb x nloc x 1 x nnei x 1 attnw_mask_c = ~nlist_mask.unsqueeze(2).unsqueeze(-1) if self.smooth: - attnw = (attnw + self.attnw_shift) * sw[:,:,None,:,None] * sw[:,:,None,None,:] - self.attnw_shift + attnw = (attnw + self.attnw_shift) * sw[:, :, None, :, None] * sw[ + :, :, None, None, : + ] - self.attnw_shift else: - attnw = attnw.masked_fill(attnw_mask, float("-inf"), ) + attnw = attnw.masked_fill( + attnw_mask, + float("-inf"), + ) attnw = torch.softmax(attnw, dim=-1) - attnw = attnw.masked_fill(attnw_mask, float(0.0), ) + attnw = attnw.masked_fill( + attnw_mask, + 0.0, + ) # nb x nloc x nh x nnei x nnei - attnw = attnw.masked_fill(attnw_mask_c, float(0.0), ) + attnw = attnw.masked_fill( + attnw_mask_c, + 0.0, + ) if self.smooth: - attnw = attnw * sw[:,:,None,:,None] * sw[:,:,None,None,:] + attnw = attnw * sw[:, :, None, :, None] * sw[:, :, None, None, :] # nb x nloc x nnei x nnei - h2h2t = torch.matmul(h2, torch.transpose(h2, -1, -2)) / 3. ** 0.5 + h2h2t = torch.matmul(h2, torch.transpose(h2, -1, -2)) / 3.0**0.5 # nb x nloc x nh x nnei x nnei ret = attnw * h2h2t[:, :, None, :, :] # ret = torch.softmax(g2qk, dim=-1) @@ -138,20 +154,20 @@ def forward( class Atten2MultiHeadApply(torch.nn.Module): def __init__( - self, - ni: int, - nh: int, + self, + ni: int, + nh: int, ): - super(Atten2MultiHeadApply, self).__init__() + super().__init__() self.ni = ni self.nh = nh self.mapv = SimpleLinear(ni, ni * nh, bias=False) self.head_map = SimpleLinear(ni * nh, ni) def forward( - self, - AA: torch.Tensor, # nf x nloc x nnei x nnei x nh - g2: torch.Tensor, # nf x nloc x nnei x ng2 + self, + AA: torch.Tensor, # nf x nloc x nnei x nnei x nh + g2: torch.Tensor, # nf x nloc x nnei x ng2 ) -> torch.Tensor: nf, nloc, nnei, ng2 = g2.shape nh = self.nh @@ -172,19 +188,19 @@ def forward( class Atten2EquiVarApply(torch.nn.Module): def __init__( - self, - ni: int, - nh: int, + self, + ni: int, + nh: int, ): - super(Atten2EquiVarApply, self).__init__() + super().__init__() self.ni = ni self.nh = nh self.head_map = SimpleLinear(nh, 1, bias=False) def forward( - self, - AA: torch.Tensor, # nf x nloc x nnei x nnei x nh - h2: torch.Tensor, # nf x nloc x nnei x 3 + self, + AA: torch.Tensor, # nf x nloc x nnei x nnei x nh + h2: torch.Tensor, # nf x nloc x nnei x 3 ) -> torch.Tensor: nf, nloc, nnei, _ = h2.shape nh = self.nh @@ -203,14 +219,14 @@ def forward( class LocalAtten(torch.nn.Module): def __init__( - self, - ni: int, - nd: int, - nh: int, - smooth: bool = True, - attnw_shift: float = 20.0, + self, + ni: int, + nd: int, + nh: int, + smooth: bool = True, + attnw_shift: float = 20.0, ): - super(LocalAtten, self).__init__() + super().__init__() self.ni = ni self.nd = nd self.nh = nh @@ -221,11 +237,11 @@ def __init__( self.attnw_shift = attnw_shift def forward( - self, - g1: torch.Tensor, # nb x nloc x ng1 - gg1: torch.Tensor, # nb x nloc x nnei x ng1 - nlist_mask: torch.Tensor, # nb x nloc x nnei - sw: torch.Tensor, # nb x nloc x nnei + self, + g1: torch.Tensor, # nb x nloc x ng1 + gg1: torch.Tensor, # nb x nloc x nnei x ng1 + nlist_mask: torch.Tensor, # nb x nloc x nnei + sw: torch.Tensor, # nb x nloc x nnei ) -> torch.Tensor: nb, nloc, nnei = nlist_mask.shape ni, nd, nh = self.ni, self.nd, self.nh @@ -242,9 +258,7 @@ def forward( gg1k, gg1v = torch.split(gg1kv, [nd, ni], dim=-1) # nb x nloc x nh x 1 x nnei - attnw = torch.matmul( - g1q.unsqueeze(-2), - torch.transpose(gg1k, -1, -2)) / nd ** 0.5 + attnw = torch.matmul(g1q.unsqueeze(-2), torch.transpose(gg1k, -1, -2)) / nd**0.5 # nb x nloc x nh x nnei attnw = attnw.squeeze(-2) # mask the attenmap, nb x nloc x 1 x nnei @@ -253,16 +267,22 @@ def forward( if self.smooth: attnw = (attnw + self.attnw_shift) * sw.unsqueeze(-2) - self.attnw_shift else: - attnw = attnw.masked_fill(attnw_mask, float("-inf"), ) + attnw = attnw.masked_fill( + attnw_mask, + float("-inf"), + ) attnw = torch.softmax(attnw, dim=-1) - attnw = attnw.masked_fill(attnw_mask, float(0.0), ) + attnw = attnw.masked_fill( + attnw_mask, + 0.0, + ) if self.smooth: attnw = attnw * sw.unsqueeze(-2) # nb x nloc x nh x ng1 - ret = torch.matmul(attnw.unsqueeze(-2), gg1v) \ - .squeeze(-2) \ - .view(nb, nloc, nh * ni) + ret = ( + torch.matmul(attnw.unsqueeze(-2), gg1v).squeeze(-2).view(nb, nloc, nh * ni) + ) # nb x nloc x ng1 ret = self.head_map(ret) return ret @@ -270,35 +290,35 @@ def forward( class RepformerLayer(torch.nn.Module): def __init__( - self, - rcut, - rcut_smth, - sel: int, - ntypes: int, - g1_dim=128, - g2_dim=16, - axis_dim: int = 4, - update_chnnl_2: bool = True, - do_bn_mode: str = 'no', - bn_momentum: float = 0.1, - update_g1_has_conv: bool = True, - update_g1_has_drrd: bool = True, - update_g1_has_grrg: bool = True, - update_g1_has_attn: bool = True, - update_g2_has_g1g1: bool = True, - update_g2_has_attn: bool = True, - update_h2: bool = False, - attn1_hidden: int = 64, - attn1_nhead: int = 4, - attn2_hidden: int = 16, - attn2_nhead: int = 4, - attn2_has_gate: bool = False, - activation: str = "tanh", - update_style: str = "res_avg", - set_davg_zero: bool = True, # TODO - smooth: bool = True, + self, + rcut, + rcut_smth, + sel: int, + ntypes: int, + g1_dim=128, + g2_dim=16, + axis_dim: int = 4, + update_chnnl_2: bool = True, + do_bn_mode: str = "no", + bn_momentum: float = 0.1, + update_g1_has_conv: bool = True, + update_g1_has_drrd: bool = True, + update_g1_has_grrg: bool = True, + update_g1_has_attn: bool = True, + update_g2_has_g1g1: bool = True, + update_g2_has_attn: bool = True, + update_h2: bool = False, + attn1_hidden: int = 64, + attn1_nhead: int = 4, + attn2_hidden: int = 16, + attn2_nhead: int = 4, + attn2_has_gate: bool = False, + activation: str = "tanh", + update_style: str = "res_avg", + set_davg_zero: bool = True, # TODO + smooth: bool = True, ): - super(RepformerLayer, self).__init__() + super().__init__() self.epsilon = 1e-4 # protection of 1./nnei self.rcut = rcut self.rcut_smth = rcut_smth @@ -346,33 +366,36 @@ def __init__( if self.update_g2_has_g1g1: self.proj_g1g1g2 = SimpleLinear(g1_dim, g2_dim, bias=False) if self.update_g2_has_attn: - self.attn2g_map = Atten2Map(g2_dim, attn2_hidden, attn2_nhead, attn2_has_gate, self.smooth) + self.attn2g_map = Atten2Map( + g2_dim, attn2_hidden, attn2_nhead, attn2_has_gate, self.smooth + ) self.attn2_mh_apply = Atten2MultiHeadApply(g2_dim, attn2_nhead) self.attn2_lm = torch.nn.LayerNorm( - g2_dim, elementwise_affine=True, device=env.DEVICE, dtype=env.GLOBAL_PT_FLOAT_PRECISION) + g2_dim, + elementwise_affine=True, + device=env.DEVICE, + dtype=env.GLOBAL_PT_FLOAT_PRECISION, + ) if self.update_h2: - self.attn2h_map = Atten2Map(g2_dim, attn2_hidden, attn2_nhead, attn2_has_gate, self.smooth) + self.attn2h_map = Atten2Map( + g2_dim, attn2_hidden, attn2_nhead, attn2_has_gate, self.smooth + ) self.attn2_ev_apply = Atten2EquiVarApply(g2_dim, attn2_nhead) if self.update_g1_has_attn: self.loc_attn = LocalAtten(g1_dim, attn1_hidden, attn1_nhead, self.smooth) - if self.do_bn_mode == 'uniform': + if self.do_bn_mode == "uniform": self.bn1 = self._bn_layer() self.bn2 = self._bn_layer() - elif self.do_bn_mode == 'component': + elif self.do_bn_mode == "component": self.bn1 = self._bn_layer(nf=g1_dim) self.bn2 = self._bn_layer(nf=g2_dim) - elif self.do_bn_mode == 'no': + elif self.do_bn_mode == "no": self.bn1, self.bn2 = None, None else: raise RuntimeError(f"unknown bn_mode {self.do_bn_mode}") - def cal_1_dim( - self, - g1d: int, - g2d: int, - ax: int - ) -> int: + def cal_1_dim(self, g1d: int, g2d: int, ax: int) -> int: ret = g1d if self.update_g1_has_grrg: ret += g2d * ax @@ -383,11 +406,11 @@ def cal_1_dim( return ret def _update_h2( - self, - g2: torch.Tensor, - h2: torch.Tensor, - nlist_mask: torch.Tensor, - sw: torch.Tensor + self, + g2: torch.Tensor, + h2: torch.Tensor, + nlist_mask: torch.Tensor, + sw: torch.Tensor, ) -> torch.Tensor: assert self.attn2h_map is not None assert self.attn2_ev_apply is not None @@ -402,11 +425,11 @@ def _update_h2( return h2_1 def _update_g1_conv( - self, - gg1: torch.Tensor, - g2: torch.Tensor, - nlist_mask: torch.Tensor, - sw: torch.Tensor + self, + gg1: torch.Tensor, + g2: torch.Tensor, + nlist_mask: torch.Tensor, + sw: torch.Tensor, ) -> torch.Tensor: assert self.proj_g1g2 is not None nb, nloc, nnei, _ = g2.shape @@ -419,20 +442,22 @@ def _update_g1_conv( if not self.smooth: # normalized by number of neighbors, not smooth # nb x nloc x 1 - invnnei = 1. / (self.epsilon + torch.sum(nlist_mask, dim=-1)).unsqueeze(-1) + invnnei = 1.0 / (self.epsilon + torch.sum(nlist_mask, dim=-1)).unsqueeze(-1) else: gg1 = _apply_switch(gg1, sw) - invnnei = (1. / float(nnei)) * torch.ones((nb, nloc, 1), dtype=env.GLOBAL_PT_FLOAT_PRECISION, device=env.DEVICE) + invnnei = (1.0 / float(nnei)) * torch.ones( + (nb, nloc, 1), dtype=env.GLOBAL_PT_FLOAT_PRECISION, device=env.DEVICE + ) # nb x nloc x ng2 g1_11 = torch.sum(g2 * gg1, dim=2) * invnnei return g1_11 def _cal_h2g2( - self, - g2: torch.Tensor, - h2: torch.Tensor, - nlist_mask: torch.Tensor, - sw: torch.Tensor + self, + g2: torch.Tensor, + h2: torch.Tensor, + nlist_mask: torch.Tensor, + sw: torch.Tensor, ) -> torch.Tensor: # g2: nf x nloc x nnei x ng2 # h2: nf x nloc x nnei x 3 @@ -443,38 +468,35 @@ def _cal_h2g2( g2 = _apply_nlist_mask(g2, nlist_mask) if not self.smooth: # nb x nloc - invnnei = 1. / (self.epsilon + torch.sum(nlist_mask, dim=-1)) + invnnei = 1.0 / (self.epsilon + torch.sum(nlist_mask, dim=-1)) # nb x nloc x 1 x 1 invnnei = invnnei.unsqueeze(-1).unsqueeze(-1) else: g2 = _apply_switch(g2, sw) - invnnei = (1. / float(nnei)) * torch.ones((nb, nloc, 1, 1), dtype=env.GLOBAL_PT_FLOAT_PRECISION, device=env.DEVICE) + invnnei = (1.0 / float(nnei)) * torch.ones( + (nb, nloc, 1, 1), dtype=env.GLOBAL_PT_FLOAT_PRECISION, device=env.DEVICE + ) # nb x nloc x 3 x ng2 - h2g2 = torch.matmul( - torch.transpose(h2, -1, -2), g2) * invnnei + h2g2 = torch.matmul(torch.transpose(h2, -1, -2), g2) * invnnei return h2g2 - def _cal_grrg( - self, - h2g2: torch.Tensor - ) -> torch.Tensor: + def _cal_grrg(self, h2g2: torch.Tensor) -> torch.Tensor: # nb x nloc x 3 x ng2 nb, nloc, _, ng2 = h2g2.shape # nb x nloc x 3 x axis h2g2m = torch.split(h2g2, self.axis_dim, dim=-1)[0] # nb x nloc x axis x ng2 - g1_13 = torch.matmul( - torch.transpose(h2g2m, -1, -2), h2g2) / (float(3.) ** 1) + g1_13 = torch.matmul(torch.transpose(h2g2m, -1, -2), h2g2) / (3.0**1) # nb x nloc x (axisxng2) g1_13 = g1_13.view(nb, nloc, self.axis_dim * ng2) return g1_13 def _update_g1_grrg( - self, - g2: torch.Tensor, - h2: torch.Tensor, - nlist_mask: torch.Tensor, - sw: torch.Tensor + self, + g2: torch.Tensor, + h2: torch.Tensor, + nlist_mask: torch.Tensor, + sw: torch.Tensor, ) -> torch.Tensor: # g2: nf x nloc x nnei x ng2 # h2: nf x nloc x nnei x 3 @@ -488,11 +510,11 @@ def _update_g1_grrg( return g1_13 def _update_g2_g1g1( - self, - g1: torch.Tensor, # nb x nloc x ng1 - gg1: torch.Tensor, # nb x nloc x nnei x ng1 - nlist_mask: torch.Tensor, # nb x nloc x nnei - sw: torch.Tensor, # nb x nloc x nnei + self, + g1: torch.Tensor, # nb x nloc x ng1 + gg1: torch.Tensor, # nb x nloc x nnei x ng1 + nlist_mask: torch.Tensor, # nb x nloc x nnei + sw: torch.Tensor, # nb x nloc x nnei ) -> torch.Tensor: ret = g1.unsqueeze(-2) * gg1 # nb x nloc x nnei x ng1 @@ -502,22 +524,18 @@ def _update_g2_g1g1( return ret def _apply_bn( - self, - bn_number: int, - gg: torch.Tensor, + self, + bn_number: int, + gg: torch.Tensor, ): - if self.do_bn_mode == 'uniform': + if self.do_bn_mode == "uniform": return self._apply_bn_uni(bn_number, gg) - elif self.do_bn_mode == 'component': + elif self.do_bn_mode == "component": return self._apply_bn_comp(bn_number, gg) else: return gg - def _apply_nb_1( - self, - bn_number: int, - gg: torch.Tensor - ) -> torch.Tensor: + def _apply_nb_1(self, bn_number: int, gg: torch.Tensor) -> torch.Tensor: nb, nl, nf = gg.shape gg = gg.view([nb, 1, nl * nf]) if bn_number == 1: @@ -529,9 +547,9 @@ def _apply_nb_1( return gg.view([nb, nl, nf]) def _apply_nb_2( - self, - bn_number: int, - gg: torch.Tensor, + self, + bn_number: int, + gg: torch.Tensor, ) -> torch.Tensor: nb, nl, nnei, nf = gg.shape gg = gg.view([nb, 1, nl * nnei * nf]) @@ -544,22 +562,22 @@ def _apply_nb_2( return gg.view([nb, nl, nnei, nf]) def _apply_bn_uni( - self, - bn_number: int, - gg: torch.Tensor, - mode: str = '1', + self, + bn_number: int, + gg: torch.Tensor, + mode: str = "1", ) -> torch.Tensor: if len(gg.shape) == 3: return self._apply_nb_1(bn_number, gg) elif len(gg.shape) == 4: return self._apply_nb_2(bn_number, gg) else: - raise RuntimeError(f'unsupported input shape {gg.shape}') + raise RuntimeError(f"unsupported input shape {gg.shape}") def _apply_bn_comp( - self, - bn_number: int, - gg: torch.Tensor, + self, + bn_number: int, + gg: torch.Tensor, ) -> torch.Tensor: ss = gg.shape nf = ss[-1] @@ -573,33 +591,40 @@ def _apply_bn_comp( return gg def forward( - self, - g1_ext: torch.Tensor, # nf x nall x ng1 - g2: torch.Tensor, # nf x nloc x nnei x ng2 - h2: torch.Tensor, # nf x nloc x nnei x 3 - nlist: torch.Tensor, # nf x nloc x nnei - nlist_mask: torch.Tensor, # nf x nloc x nnei - sw: torch.Tensor, # switch func, nf x nloc x nnei + self, + g1_ext: torch.Tensor, # nf x nall x ng1 + g2: torch.Tensor, # nf x nloc x nnei x ng2 + h2: torch.Tensor, # nf x nloc x nnei x 3 + nlist: torch.Tensor, # nf x nloc x nnei + nlist_mask: torch.Tensor, # nf x nloc x nnei + sw: torch.Tensor, # switch func, nf x nloc x nnei ): """ - Parameters: - g1_ext: nf x nall x ng1 extended single-atom chanel - g2: nf x nloc x nnei x ng2 pair-atom channel, invariant - h2: nf x nloc x nnei x 3 pair-atom channel, equivariant - nlist: nf x nloc x nnei neighbor list (padded neis are set to 0) - nlist_mask: nf x nloc x nnei masks of the neighbor list. real nei 1 otherwise 0 - sw: nf x nloc x nnei switch function - - Returns: + Parameters + ---------- + g1_ext : nf x nall x ng1 extended single-atom chanel + g2 : nf x nloc x nnei x ng2 pair-atom channel, invariant + h2 : nf x nloc x nnei x 3 pair-atom channel, equivariant + nlist : nf x nloc x nnei neighbor list (padded neis are set to 0) + nlist_mask : nf x nloc x nnei masks of the neighbor list. real nei 1 otherwise 0 + sw : nf x nloc x nnei switch function + + Returns + ------- g1: nf x nloc x ng1 updated single-atom chanel g2: nf x nloc x nnei x ng2 updated pair-atom channel, invariant h2: nf x nloc x nnei x 3 updated pair-atom channel, equivariant """ - cal_gg1 = self.update_g1_has_drrd or self.update_g1_has_conv or self.update_g1_has_attn or self.update_g2_has_g1g1 + cal_gg1 = ( + self.update_g1_has_drrd + or self.update_g1_has_conv + or self.update_g1_has_attn + or self.update_g2_has_g1g1 + ) nb, nloc, nnei, _ = g2.shape nall = g1_ext.shape[1] - g1,_ = torch.split(g1_ext, [nloc,nall-nloc], dim=1) + g1, _ = torch.split(g1_ext, [nloc, nall - nloc], dim=1) assert (nb, nloc) == g1.shape[:2] assert (nb, nloc, nnei) == h2.shape[:3] ng1 = g1.shape[-1] @@ -632,8 +657,9 @@ def forward( if self.update_g2_has_g1g1: assert gg1 is not None assert self.proj_g1g1g2 is not None - g2_update.append(self.proj_g1g1g2( - self._update_g2_g1g1(g1, gg1, nlist_mask, sw))) + g2_update.append( + self.proj_g1g1g2(self._update_g2_g1g1(g1, gg1, nlist_mask, sw)) + ) if self.update_g2_has_attn: assert self.attn2g_map is not None @@ -662,9 +688,7 @@ def forward( # nb x nloc x [ng1+ng2+(axisxng2)+(axisxng1)] # conv grrg drrd - g1_1 = self.act(self.linear1( - torch.cat(g1_mlp, dim=-1) - )) + g1_1 = self.act(self.linear1(torch.cat(g1_mlp, dim=-1))) g1_update.append(g1_1) if self.update_g1_has_attn: @@ -683,9 +707,9 @@ def forward( @torch.jit.export def list_update_res_avg( - self, - update_list: List[torch.Tensor], - )-> torch.Tensor: + self, + update_list: List[torch.Tensor], + ) -> torch.Tensor: nitem = len(update_list) uu = update_list[0] for ii in range(1, nitem): @@ -693,22 +717,16 @@ def list_update_res_avg( return uu / (float(nitem) ** 0.5) @torch.jit.export - def list_update_res_incr( - self, - update_list: List[torch.Tensor] - ) -> torch.Tensor: + def list_update_res_incr(self, update_list: List[torch.Tensor]) -> torch.Tensor: nitem = len(update_list) uu = update_list[0] - scale = 1. / (float(nitem - 1) ** 0.5) if nitem > 1 else 0. + scale = 1.0 / (float(nitem - 1) ** 0.5) if nitem > 1 else 0.0 for ii in range(1, nitem): uu = uu + scale * update_list[ii] return uu @torch.jit.export - def list_update( - self, - update_list: List[torch.Tensor] - ) -> torch.Tensor: + def list_update(self, update_list: List[torch.Tensor]) -> torch.Tensor: if self.update_style == "res_avg": return self.list_update_res_avg(update_list) elif self.update_style == "res_incr": @@ -717,9 +735,15 @@ def list_update( raise RuntimeError(f"unknown update style {self.update_style}") def _bn_layer( - self, - nf: int = 1, + self, + nf: int = 1, ) -> Callable: return torch.nn.BatchNorm1d( - nf, eps=1e-5, momentum=self.bn_momentum, affine=False, - track_running_stats=True, device=env.DEVICE, dtype=env.GLOBAL_PT_FLOAT_PRECISION) + nf, + eps=1e-5, + momentum=self.bn_momentum, + affine=False, + track_running_stats=True, + device=env.DEVICE, + dtype=env.GLOBAL_PT_FLOAT_PRECISION, + ) diff --git a/deepmd_pt/model/descriptor/repformers.py b/deepmd_pt/model/descriptor/repformers.py index 7f20c65c..81e668f1 100644 --- a/deepmd_pt/model/descriptor/repformers.py +++ b/deepmd_pt/model/descriptor/repformers.py @@ -1,326 +1,348 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later +from typing import ( + List, + Optional, +) + import numpy as np import torch -import logging -try: - from typing import Final -except: - from torch.jit import Final -from typing import ( - List, Optional, Tuple, + +from deepmd_pt.model.descriptor.descriptor import ( + DescriptorBlock, + compute_std, +) +from deepmd_pt.model.descriptor.env_mat import ( + prod_env_mat_se_a, ) -from deepmd_pt.utils import env -from deepmd_pt.utils.utils import get_activation_fn, ActivationFn -from deepmd_pt.model.descriptor import prod_env_mat_se_a, DescriptorBlock, compute_std -from deepmd_pt.model.network import ( - TypeEmbedNet, SimpleLinear +from deepmd_pt.model.network.network import ( + SimpleLinear, +) +from deepmd_pt.utils import ( + env, +) +from deepmd_pt.utils.nlist import ( + build_neighbor_list, +) +from deepmd_pt.utils.utils import ( + get_activation_fn, +) + +from .repformer_layer import ( + RepformerLayer, +) +from .se_atten import ( + analyze_descrpt, ) -from .se_atten import analyze_descrpt -from .repformer_layer import RepformerLayer -from deepmd_pt.utils.nlist import extend_coord_with_ghosts, build_neighbor_list mydtype = env.GLOBAL_PT_FLOAT_PRECISION mydev = env.DEVICE + def torch_linear(*args, **kwargs): - return torch.nn.Linear(*args, **kwargs, dtype=mydtype, device=mydev) -simple_linear = SimpleLinear + return torch.nn.Linear(*args, **kwargs, dtype=mydtype, device=mydev) + + +simple_linear = SimpleLinear mylinear = simple_linear @DescriptorBlock.register("se_repformer") @DescriptorBlock.register("se_uni") class DescrptBlockRepformers(DescriptorBlock): - def __init__( - self, - rcut, - rcut_smth, - sel: int, - ntypes: int, - nlayers: int = 3, - g1_dim = 128, - g2_dim = 16, - axis_dim: int = 4, - direct_dist: bool = False, - do_bn_mode: str = 'no', - bn_momentum: float = 0.1, - update_g1_has_conv: bool = True, - update_g1_has_drrd: bool = True, - update_g1_has_grrg: bool = True, - update_g1_has_attn: bool = True, - update_g2_has_g1g1: bool = True, - update_g2_has_attn: bool = True, - update_h2: bool = False, - attn1_hidden: int = 64, - attn1_nhead: int = 4, - attn2_hidden: int = 16, - attn2_nhead: int = 4, - attn2_has_gate: bool = False, - activation: str = "tanh", - update_style: str = "res_avg", - set_davg_zero: bool = True, # TODO - smooth: bool = True, - add_type_ebd_to_seq: bool = False, - type: Optional[str] = None, - ): - """ - smooth: - If strictly smooth, cannot be used with update_g1_has_attn - add_type_ebd_to_seq: - At the presence of seq_input (optional input to forward), - whether or not add an type embedding to seq_input. - If no seq_input is given, it has no effect. - """ - super(DescrptBlockRepformers, self).__init__() - del type - self.epsilon = 1e-4 # protection of 1./nnei - self.rcut = rcut - self.rcut_smth = rcut_smth - self.ntypes = ntypes - self.nlayers = nlayers - sel = [sel] if isinstance(sel, int) else sel - self.nnei = sum(sel) # 总的邻居数量 - assert len(sel) == 1 - self.sel = sel # 每种元素在邻居中的位移 - self.sec = self.sel - self.split_sel = self.sel - self.axis_dim = axis_dim - self.set_davg_zero = set_davg_zero - self.g1_dim = g1_dim - self.g2_dim = g2_dim - self.act = get_activation_fn(activation) - self.direct_dist = direct_dist - self.add_type_ebd_to_seq = add_type_ebd_to_seq + def __init__( + self, + rcut, + rcut_smth, + sel: int, + ntypes: int, + nlayers: int = 3, + g1_dim=128, + g2_dim=16, + axis_dim: int = 4, + direct_dist: bool = False, + do_bn_mode: str = "no", + bn_momentum: float = 0.1, + update_g1_has_conv: bool = True, + update_g1_has_drrd: bool = True, + update_g1_has_grrg: bool = True, + update_g1_has_attn: bool = True, + update_g2_has_g1g1: bool = True, + update_g2_has_attn: bool = True, + update_h2: bool = False, + attn1_hidden: int = 64, + attn1_nhead: int = 4, + attn2_hidden: int = 16, + attn2_nhead: int = 4, + attn2_has_gate: bool = False, + activation: str = "tanh", + update_style: str = "res_avg", + set_davg_zero: bool = True, # TODO + smooth: bool = True, + add_type_ebd_to_seq: bool = False, + type: Optional[str] = None, + ): + """ + smooth: + If strictly smooth, cannot be used with update_g1_has_attn + add_type_ebd_to_seq: + At the presence of seq_input (optional input to forward), + whether or not add an type embedding to seq_input. + If no seq_input is given, it has no effect. + """ + super().__init__() + del type + self.epsilon = 1e-4 # protection of 1./nnei + self.rcut = rcut + self.rcut_smth = rcut_smth + self.ntypes = ntypes + self.nlayers = nlayers + sel = [sel] if isinstance(sel, int) else sel + self.nnei = sum(sel) # 总的邻居数量 + assert len(sel) == 1 + self.sel = sel # 每种元素在邻居中的位移 + self.sec = self.sel + self.split_sel = self.sel + self.axis_dim = axis_dim + self.set_davg_zero = set_davg_zero + self.g1_dim = g1_dim + self.g2_dim = g2_dim + self.act = get_activation_fn(activation) + self.direct_dist = direct_dist + self.add_type_ebd_to_seq = add_type_ebd_to_seq - self.g2_embd = mylinear(1, self.g2_dim) - layers = [] - for ii in range(nlayers): - layers.append( - RepformerLayer( - rcut, rcut_smth, sel, ntypes, self.g1_dim, self.g2_dim, - axis_dim=self.axis_dim, - update_chnnl_2=(ii != nlayers - 1), - do_bn_mode=do_bn_mode, - bn_momentum=bn_momentum, - update_g1_has_conv=update_g1_has_conv, - update_g1_has_drrd=update_g1_has_drrd, - update_g1_has_grrg=update_g1_has_grrg, - update_g1_has_attn=update_g1_has_attn, - update_g2_has_g1g1=update_g2_has_g1g1, - update_g2_has_attn=update_g2_has_attn, - update_h2=update_h2, - attn1_hidden=attn1_hidden, - attn1_nhead=attn1_nhead, - attn2_has_gate=attn2_has_gate, - attn2_hidden=attn2_hidden, - attn2_nhead=attn2_nhead, - activation=activation, - update_style=update_style, - smooth=smooth, - )) - self.layers = torch.nn.ModuleList(layers) + self.g2_embd = mylinear(1, self.g2_dim) + layers = [] + for ii in range(nlayers): + layers.append( + RepformerLayer( + rcut, + rcut_smth, + sel, + ntypes, + self.g1_dim, + self.g2_dim, + axis_dim=self.axis_dim, + update_chnnl_2=(ii != nlayers - 1), + do_bn_mode=do_bn_mode, + bn_momentum=bn_momentum, + update_g1_has_conv=update_g1_has_conv, + update_g1_has_drrd=update_g1_has_drrd, + update_g1_has_grrg=update_g1_has_grrg, + update_g1_has_attn=update_g1_has_attn, + update_g2_has_g1g1=update_g2_has_g1g1, + update_g2_has_attn=update_g2_has_attn, + update_h2=update_h2, + attn1_hidden=attn1_hidden, + attn1_nhead=attn1_nhead, + attn2_has_gate=attn2_has_gate, + attn2_hidden=attn2_hidden, + attn2_nhead=attn2_nhead, + activation=activation, + update_style=update_style, + smooth=smooth, + ) + ) + self.layers = torch.nn.ModuleList(layers) - sshape = (self.ntypes, self.nnei, 4) - mean = torch.zeros(sshape, dtype=mydtype, device=mydev) - stddev = torch.ones(sshape, dtype=mydtype, device=mydev) - self.register_buffer('mean', mean) - self.register_buffer('stddev', stddev) + sshape = (self.ntypes, self.nnei, 4) + mean = torch.zeros(sshape, dtype=mydtype, device=mydev) + stddev = torch.ones(sshape, dtype=mydtype, device=mydev) + self.register_buffer("mean", mean) + self.register_buffer("stddev", stddev) - def get_rcut(self)->float: - """ - Returns the cut-off radius - """ - return self.rcut + def get_rcut(self) -> float: + """Returns the cut-off radius.""" + return self.rcut - def get_nsel(self)->int: - """ - Returns the number of selected atoms in the cut-off radius - """ - return sum(self.sel) + def get_nsel(self) -> int: + """Returns the number of selected atoms in the cut-off radius.""" + return sum(self.sel) - def get_sel(self)->List[int]: - """ - Returns the number of selected atoms for each type. - """ - return self.sel + def get_sel(self) -> List[int]: + """Returns the number of selected atoms for each type.""" + return self.sel - def get_ntype(self)->int: - """ - Returns the number of element types - """ - return self.ntypes + def get_ntype(self) -> int: + """Returns the number of element types.""" + return self.ntypes - def get_dim_out(self)->int: - """ - Returns the output dimension - """ - return self.dim_out + def get_dim_out(self) -> int: + """Returns the output dimension.""" + return self.dim_out - def get_dim_in(self)->int: - """ - Returns the input dimension - """ - return self.dim_in + def get_dim_in(self) -> int: + """Returns the input dimension.""" + return self.dim_in - @property - def dim_out(self): - """ - Returns the output dimension of this descriptor - """ - return self.g1_dim + @property + def dim_out(self): + """Returns the output dimension of this descriptor.""" + return self.g1_dim - @property - def dim_in(self): - """ - Returns the atomic input dimension of this descriptor - """ - return self.g1_dim + @property + def dim_in(self): + """Returns the atomic input dimension of this descriptor.""" + return self.g1_dim - @property - def dim_emb(self): - """ - Returns the embedding dimension g2 - """ - return self.g2_dim + @property + def dim_emb(self): + """Returns the embedding dimension g2.""" + return self.g2_dim - def forward( + def forward( self, nlist: torch.Tensor, extended_coord: torch.Tensor, extended_atype: torch.Tensor, extended_atype_embd: Optional[torch.Tensor] = None, mapping: Optional[torch.Tensor] = None, - ): - - """ - extended_coord: [nb, nloc x 3] - atype: [nb, nloc] - """ - assert mapping is not None - assert extended_atype_embd is not None - nframes, nloc, nnei = nlist.shape - nall = extended_coord.view(nframes, -1).shape[1] // 3 - atype = extended_atype[:,:nloc] - # nb x nloc x nnei x 4, nb x nloc x nnei x 3, nb x nloc x nnei x 1 - dmatrix, diff, sw = prod_env_mat_se_a( - extended_coord, nlist, atype, - self.mean, self.stddev, - self.rcut, self.rcut_smth) - nlist_mask = (nlist != -1) - sw = torch.squeeze(sw, -1) - # beyond the cutoff sw should be 0.0 - sw = sw.masked_fill(~nlist_mask, float(0.0)) + ): + assert mapping is not None + assert extended_atype_embd is not None + nframes, nloc, nnei = nlist.shape + nall = extended_coord.view(nframes, -1).shape[1] // 3 + atype = extended_atype[:, :nloc] + # nb x nloc x nnei x 4, nb x nloc x nnei x 3, nb x nloc x nnei x 1 + dmatrix, diff, sw = prod_env_mat_se_a( + extended_coord, + nlist, + atype, + self.mean, + self.stddev, + self.rcut, + self.rcut_smth, + ) + nlist_mask = nlist != -1 + sw = torch.squeeze(sw, -1) + # beyond the cutoff sw should be 0.0 + sw = sw.masked_fill(~nlist_mask, 0.0) - # [nframes, nloc, tebd_dim] - atype_embd = extended_atype_embd[:,:nloc,:] - assert list(atype_embd.shape) == [nframes, nloc, self.g1_dim] + # [nframes, nloc, tebd_dim] + atype_embd = extended_atype_embd[:, :nloc, :] + assert list(atype_embd.shape) == [nframes, nloc, self.g1_dim] - g1 = self.act(atype_embd) - # nb x nloc x nnei x 1, nb x nloc x nnei x 3 - if not self.direct_dist: - g2, h2 = torch.split(dmatrix, [1, 3], dim=-1) - else: - g2, h2 = torch.linalg.norm(diff, dim=-1, keepdim=True), diff - g2 = g2 / self.rcut - h2 = h2 / self.rcut - # nb x nloc x nnei x ng2 - g2 = self.act(self.g2_embd(g2)) + g1 = self.act(atype_embd) + # nb x nloc x nnei x 1, nb x nloc x nnei x 3 + if not self.direct_dist: + g2, h2 = torch.split(dmatrix, [1, 3], dim=-1) + else: + g2, h2 = torch.linalg.norm(diff, dim=-1, keepdim=True), diff + g2 = g2 / self.rcut + h2 = h2 / self.rcut + # nb x nloc x nnei x ng2 + g2 = self.act(self.g2_embd(g2)) - # set all padding positions to index of 0 - # if the a neighbor is real or not is indicated by nlist_mask - nlist[nlist == -1] = 0 - # nb x nall x ng1 - mapping = mapping.view(nframes, nall).unsqueeze(-1).expand(-1, -1, self.g1_dim) - for idx,ll in enumerate(self.layers): - # g1: nb x nloc x ng1 - # g1_ext: nb x nall x ng1 - g1_ext = torch.gather(g1, 1, mapping) - g1, g2, h2 = ll.forward(g1_ext, g2, h2, nlist, nlist_mask, sw,) + # set all padding positions to index of 0 + # if the a neighbor is real or not is indicated by nlist_mask + nlist[nlist == -1] = 0 + # nb x nall x ng1 + mapping = mapping.view(nframes, nall).unsqueeze(-1).expand(-1, -1, self.g1_dim) + for idx, ll in enumerate(self.layers): + # g1: nb x nloc x ng1 + # g1_ext: nb x nall x ng1 + g1_ext = torch.gather(g1, 1, mapping) + g1, g2, h2 = ll.forward( + g1_ext, + g2, + h2, + nlist, + nlist_mask, + sw, + ) - # uses the last layer. - # nb x nloc x 3 x ng2 - h2g2 = ll._cal_h2g2(g2, h2, nlist_mask, sw) - # (nb x nloc) x ng2 x 3 - rot_mat = torch.permute(h2g2, (0, 1, 3, 2)) + # uses the last layer. + # nb x nloc x 3 x ng2 + h2g2 = ll._cal_h2g2(g2, h2, nlist_mask, sw) + # (nb x nloc) x ng2 x 3 + rot_mat = torch.permute(h2g2, (0, 1, 3, 2)) - return g1, g2, h2, rot_mat.view(-1, self.dim_emb, 3), sw + return g1, g2, h2, rot_mat.view(-1, self.dim_emb, 3), sw - def compute_input_stats(self, merged): - """Update mean and stddev for descriptor elements. - """ - ndescrpt = self.nnei * 4 # 描述符的元素数量 - sumr = [] - suma = [] - sumn = [] - sumr2 = [] - suma2 = [] - mixed_type = 'real_natoms_vec' in merged[0] - for system in merged: # 逐个 system 的分析 - index = system['mapping'].unsqueeze(-1).expand(-1, -1, 3) - extended_coord = torch.gather(system['coord'], dim=1, index=index) - extended_coord = extended_coord - system['shift'] - index = system['mapping'] - extended_atype = torch.gather(system['atype'], dim=1, index=index) - nloc = system['atype'].shape[-1] - ####################################################### - # dirty hack here! the interface of dataload should be - # redesigned to support descriptors like dpa2 - ####################################################### - nlist = build_neighbor_list( - extended_coord, - extended_atype, - nloc, - self.rcut, - self.get_sel(), - distinguish_types=False, - ) - env_mat, _, _ = prod_env_mat_se_a( - extended_coord, nlist, system['atype'], - self.mean, self.stddev, - self.rcut, self.rcut_smth, - ) - if not mixed_type: - sysr, sysr2, sysa, sysa2, sysn = analyze_descrpt( - env_mat.detach().cpu().numpy(), ndescrpt, - system['natoms']) - else: - sysr, sysr2, sysa, sysa2, sysn = analyze_descrpt( - env_mat.detach().cpu().numpy(), ndescrpt, - system['real_natoms_vec'], mixed_type=mixed_type, - real_atype=system['atype'].detach().cpu().numpy()) - sumr.append(sysr) - suma.append(sysa) - sumn.append(sysn) - sumr2.append(sysr2) - suma2.append(sysa2) - sumr = np.sum(sumr, axis=0) - suma = np.sum(suma, axis=0) - sumn = np.sum(sumn, axis=0) - sumr2 = np.sum(sumr2, axis=0) - suma2 = np.sum(suma2, axis=0) - return sumr, suma, sumn, sumr2, suma2 + def compute_input_stats(self, merged): + """Update mean and stddev for descriptor elements.""" + ndescrpt = self.nnei * 4 # 描述符的元素数量 + sumr = [] + suma = [] + sumn = [] + sumr2 = [] + suma2 = [] + mixed_type = "real_natoms_vec" in merged[0] + for system in merged: # 逐个 system 的分析 + index = system["mapping"].unsqueeze(-1).expand(-1, -1, 3) + extended_coord = torch.gather(system["coord"], dim=1, index=index) + extended_coord = extended_coord - system["shift"] + index = system["mapping"] + extended_atype = torch.gather(system["atype"], dim=1, index=index) + nloc = system["atype"].shape[-1] + ####################################################### + # dirty hack here! the interface of dataload should be + # redesigned to support descriptors like dpa2 + ####################################################### + nlist = build_neighbor_list( + extended_coord, + extended_atype, + nloc, + self.rcut, + self.get_sel(), + distinguish_types=False, + ) + env_mat, _, _ = prod_env_mat_se_a( + extended_coord, + nlist, + system["atype"], + self.mean, + self.stddev, + self.rcut, + self.rcut_smth, + ) + if not mixed_type: + sysr, sysr2, sysa, sysa2, sysn = analyze_descrpt( + env_mat.detach().cpu().numpy(), ndescrpt, system["natoms"] + ) + else: + sysr, sysr2, sysa, sysa2, sysn = analyze_descrpt( + env_mat.detach().cpu().numpy(), + ndescrpt, + system["real_natoms_vec"], + mixed_type=mixed_type, + real_atype=system["atype"].detach().cpu().numpy(), + ) + sumr.append(sysr) + suma.append(sysa) + sumn.append(sysn) + sumr2.append(sysr2) + suma2.append(sysa2) + sumr = np.sum(sumr, axis=0) + suma = np.sum(suma, axis=0) + sumn = np.sum(sumn, axis=0) + sumr2 = np.sum(sumr2, axis=0) + suma2 = np.sum(suma2, axis=0) + return sumr, suma, sumn, sumr2, suma2 - def init_desc_stat(self, sumr, suma, sumn, sumr2, suma2): - all_davg = [] - all_dstd = [] - for type_i in range(self.ntypes): - davgunit = [[sumr[type_i] / (sumn[type_i] + 1e-15), 0, 0, 0]] - dstdunit = [[ - compute_std(sumr2[type_i], sumr[type_i], sumn[type_i], self.rcut), - compute_std(suma2[type_i], suma[type_i], sumn[type_i], self.rcut), - compute_std(suma2[type_i], suma[type_i], sumn[type_i], self.rcut), - compute_std(suma2[type_i], suma[type_i], sumn[type_i], self.rcut) - ]] - davg = np.tile(davgunit, [self.nnei, 1]) - dstd = np.tile(dstdunit, [self.nnei, 1]) - all_davg.append(davg) - all_dstd.append(dstd) - self.sumr = sumr - self.suma = suma - self.sumn = sumn - self.sumr2 = sumr2 - self.suma2 = suma2 - if not self.set_davg_zero: - mean = np.stack(all_davg) - self.mean.copy_(torch.tensor(mean, device=env.DEVICE)) - stddev = np.stack(all_dstd) - self.stddev.copy_(torch.tensor(stddev, device=env.DEVICE)) + def init_desc_stat(self, sumr, suma, sumn, sumr2, suma2): + all_davg = [] + all_dstd = [] + for type_i in range(self.ntypes): + davgunit = [[sumr[type_i] / (sumn[type_i] + 1e-15), 0, 0, 0]] + dstdunit = [ + [ + compute_std(sumr2[type_i], sumr[type_i], sumn[type_i], self.rcut), + compute_std(suma2[type_i], suma[type_i], sumn[type_i], self.rcut), + compute_std(suma2[type_i], suma[type_i], sumn[type_i], self.rcut), + compute_std(suma2[type_i], suma[type_i], sumn[type_i], self.rcut), + ] + ] + davg = np.tile(davgunit, [self.nnei, 1]) + dstd = np.tile(dstdunit, [self.nnei, 1]) + all_davg.append(davg) + all_dstd.append(dstd) + self.sumr = sumr + self.suma = suma + self.sumn = sumn + self.sumr2 = sumr2 + self.suma2 = suma2 + if not self.set_davg_zero: + mean = np.stack(all_davg) + self.mean.copy_(torch.tensor(mean, device=env.DEVICE)) + stddev = np.stack(all_dstd) + self.stddev.copy_(torch.tensor(stddev, device=env.DEVICE)) diff --git a/deepmd_pt/model/descriptor/se_a.py b/deepmd_pt/model/descriptor/se_a.py index 549022ff..3ddc9d9c 100644 --- a/deepmd_pt/model/descriptor/se_a.py +++ b/deepmd_pt/model/descriptor/se_a.py @@ -1,24 +1,41 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later +from typing import ( + ClassVar, + List, + Optional, +) + import numpy as np import torch -from typing import Optional, List, Dict -from deepmd_pt.utils import env -from deepmd_pt.model.descriptor import prod_env_mat_se_a, Descriptor, DescriptorBlock, compute_std +from deepmd_pt.model.descriptor import ( + Descriptor, + DescriptorBlock, + compute_std, + prod_env_mat_se_a, +) +from deepmd_pt.utils import ( + env, +) from deepmd_pt.utils.env import ( - PRECISION_DICT, - DEFAULT_PRECISION, + PRECISION_DICT, ) try: - from typing import Final -except: + from typing import ( + Final, + ) +except ImportError: from torch.jit import Final -from deepmd_pt.model.network import TypeFilter -from deepmd_pt.model.network.mlp import EmbeddingNet, NetworkCollection +from deepmd.model_format import EnvMat as DPEnvMat -from deepmd_utils.model_format import ( - EnvMat as DPEnvMat, +from deepmd_pt.model.network.mlp import ( + EmbeddingNet, + NetworkCollection, +) +from deepmd_pt.model.network.network import ( + TypeFilter, ) @@ -38,57 +55,52 @@ def __init__( old_impl: bool = False, **kwargs, ): - super(DescrptSeA, self).__init__() - self.sea = DescrptBlockSeA( - rcut, rcut_smth, sel, neuron, axis_neuron, set_davg_zero, - activation_function, precision, resnet_dt, old_impl, - **kwargs, - ) - - def get_rcut(self)->float: - """ - Returns the cut-off radius - """ - return self.sea.get_rcut() - - def get_nsel(self)->int: - """ - Returns the number of selected atoms in the cut-off radius - """ - return self.sea.get_nsel() - - def get_sel(self)->List[int]: - """ - Returns the number of selected atoms for each type. - """ - return self.sea.get_sel() - - def get_ntype(self)->int: - """ - Returns the number of element types - """ - return self.sea.get_ntype() - - def get_dim_out(self)->int: - """ - Returns the output dimension - """ - return self.sea.get_dim_out() + super().__init__() + self.sea = DescrptBlockSeA( + rcut, + rcut_smth, + sel, + neuron, + axis_neuron, + set_davg_zero, + activation_function, + precision, + resnet_dt, + old_impl, + **kwargs, + ) + + def get_rcut(self) -> float: + """Returns the cut-off radius.""" + return self.sea.get_rcut() + + def get_nsel(self) -> int: + """Returns the number of selected atoms in the cut-off radius.""" + return self.sea.get_nsel() + + def get_sel(self) -> List[int]: + """Returns the number of selected atoms for each type.""" + return self.sea.get_sel() + + def get_ntype(self) -> int: + """Returns the number of element types.""" + return self.sea.get_ntype() + + def get_dim_out(self) -> int: + """Returns the output dimension.""" + return self.sea.get_dim_out() @property def dim_out(self): - """ - Returns the output dimension of this descriptor - """ + """Returns the output dimension of this descriptor.""" return self.sea.dim_out def compute_input_stats(self, merged): - """Update mean and stddev for descriptor elements. - """ + """Update mean and stddev for descriptor elements.""" return self.sea.compute_input_stats(merged) def init_desc_stat(self, sumr, suma, sumn, sumr2, suma2): - self.sea.init_desc_stat( sumr, suma, sumn, sumr2, suma2) + self.sea.init_desc_stat(sumr, suma, sumn, sumr2, suma2) @classmethod def get_stat_name(cls, config): @@ -109,73 +121,76 @@ def forward( nlist: torch.Tensor, mapping: Optional[torch.Tensor] = None, ): - return self.sea.forward( - nlist, extended_coord, extended_atype, None, mapping) + return self.sea.forward(nlist, extended_coord, extended_atype, None, mapping) def set_stat_mean_and_stddev( self, mean: torch.Tensor, stddev: torch.Tensor, - )->None: - self.sea.mean = mean - self.sea.stddev = stddev - - - def serialize(self)->dict: - obj = self.sea - return { - "rcut": obj.rcut, - "rcut_smth": obj.rcut_smth, - "sel": obj.sel, - "neuron": obj.neuron, - "axis_neuron": obj.axis_neuron, - "resnet_dt": obj.resnet_dt, - "set_davg_zero": obj.set_davg_zero, - "activation_function": obj.activation_function, - "precision": obj.precision, - "embeddings": obj.filter_layers.serialize(), - "env_mat": DPEnvMat(obj.rcut, obj.rcut_smth).serialize(), - "@variables" : { - "davg" : obj["davg"].detach().cpu().numpy(), - "dstd" : obj["dstd"].detach().cpu().numpy(), - }, - ## to be updated when the options are supported. - "trainable": True, - "type_one_side": True, - "exclude_types": [], - "spin": None, - } - + ) -> None: + self.sea.mean = mean + self.sea.stddev = stddev + + def serialize(self) -> dict: + obj = self.sea + return { + "rcut": obj.rcut, + "rcut_smth": obj.rcut_smth, + "sel": obj.sel, + "neuron": obj.neuron, + "axis_neuron": obj.axis_neuron, + "resnet_dt": obj.resnet_dt, + "set_davg_zero": obj.set_davg_zero, + "activation_function": obj.activation_function, + "precision": obj.precision, + "embeddings": obj.filter_layers.serialize(), + "env_mat": DPEnvMat(obj.rcut, obj.rcut_smth).serialize(), + "@variables": { + "davg": obj["davg"].detach().cpu().numpy(), + "dstd": obj["dstd"].detach().cpu().numpy(), + }, + ## to be updated when the options are supported. + "trainable": True, + "type_one_side": True, + "exclude_types": [], + "spin": None, + } + @classmethod - def deserialize(cls, data: dict)->"DescrptSeA": - variables = data.pop("@variables") - embeddings = data.pop("embeddings") - env_mat = data.pop("env_mat") - obj = cls(**data) - t_cvt = lambda xx: torch.tensor(xx, dtype=obj.sea.prec, device=env.DEVICE) - obj.sea["davg"] = t_cvt(variables["davg"]) - obj.sea["dstd"] = t_cvt(variables["dstd"]) - obj.sea.filter_layers = NetworkCollection.deserialize(embeddings) - return obj + def deserialize(cls, data: dict) -> "DescrptSeA": + variables = data.pop("@variables") + embeddings = data.pop("embeddings") + env_mat = data.pop("env_mat") + obj = cls(**data) + + def t_cvt(xx): + return torch.tensor(xx, dtype=obj.sea.prec, device=env.DEVICE) + + obj.sea["davg"] = t_cvt(variables["davg"]) + obj.sea["dstd"] = t_cvt(variables["dstd"]) + obj.sea.filter_layers = NetworkCollection.deserialize(embeddings) + return obj @DescriptorBlock.register("se_e2_a") class DescrptBlockSeA(DescriptorBlock): ndescrpt: Final[int] - __constants__ = ['ndescrpt'] - - def __init__(self, - rcut, - rcut_smth, - sel, - neuron=[25, 50, 100], - axis_neuron=16, - set_davg_zero: bool = False, - activation_function: str = "tanh", - precision: str = "float64", - resnet_dt: bool = False, - old_impl: bool = False, - **kwargs): + __constants__: ClassVar[list] = ["ndescrpt"] + + def __init__( + self, + rcut, + rcut_smth, + sel, + neuron=[25, 50, 100], + axis_neuron=16, + set_davg_zero: bool = False, + activation_function: str = "tanh", + precision: str = "float64", + resnet_dt: bool = False, + old_impl: bool = False, + **kwargs, + ): """Construct an embedding net of type `se_a`. Args: @@ -185,7 +200,7 @@ def __init__(self, - filter_neuron: Number of neurons in each hidden layers of the embedding net. - axis_neuron: Number of columns of the sub-matrix of the embedding matrix. """ - super(DescrptBlockSeA, self).__init__() + super().__init__() self.rcut = rcut self.rcut_smth = rcut_smth self.neuron = neuron @@ -200,7 +215,9 @@ def __init__(self, self.ntypes = len(sel) # 元素数量 self.sel = sel # 每种元素在邻居中的位移 - self.sec = torch.tensor(np.append([0], np.cumsum(self.sel)), dtype=int, device=env.DEVICE) + self.sec = torch.tensor( + np.append([0], np.cumsum(self.sel)), dtype=int, device=env.DEVICE + ) self.split_sel = self.sel self.nnei = sum(sel) # 总的邻居数量 self.ndescrpt = self.nnei * 4 # 描述符的元素数量 @@ -208,83 +225,67 @@ def __init__(self, wanted_shape = (self.ntypes, self.nnei, 4) mean = torch.zeros(wanted_shape, dtype=self.prec, device=env.DEVICE) stddev = torch.ones(wanted_shape, dtype=self.prec, device=env.DEVICE) - self.register_buffer('mean', mean) - self.register_buffer('stddev', stddev) + self.register_buffer("mean", mean) + self.register_buffer("stddev", stddev) self.filter_layers_old = None self.filter_layers = None - if self.old_impl: - filter_layers = [] - # TODO: remove - start_index = 0 - for type_i in range(self.ntypes): - one = TypeFilter(start_index, sel[type_i], self.filter_neuron) - filter_layers.append(one) - start_index += sel[type_i] - self.filter_layers_old = torch.nn.ModuleList(filter_layers) + filter_layers = [] + # TODO: remove + start_index = 0 + for type_i in range(self.ntypes): + one = TypeFilter(start_index, sel[type_i], self.filter_neuron) + filter_layers.append(one) + start_index += sel[type_i] + self.filter_layers_old = torch.nn.ModuleList(filter_layers) else: - filter_layers = NetworkCollection(ndim=1, ntypes=len(sel), network_type="embedding_network") - # TODO: ndim=2 if type_one_side=False - for ii in range(self.ntypes): - filter_layers[(ii,)] = EmbeddingNet( - 1, - self.filter_neuron, - activation_function=self.activation_function, - precision=self.precision, - resnet_dt=self.resnet_dt, - ) - self.filter_layers = filter_layers - - - def get_rcut(self)->float: - """ - Returns the cut-off radius - """ - return self.rcut - - def get_nsel(self)->int: - """ - Returns the number of selected atoms in the cut-off radius - """ - return sum(self.sel) - - def get_sel(self)->List[int]: - """ - Returns the number of selected atoms for each type. - """ - return self.sel - - def get_ntype(self)->int: - """ - Returns the number of element types - """ - return self.ntypes - - def get_dim_out(self)->int: - """ - Returns the output dimension - """ - return self.dim_out - - def get_dim_in(self)->int: - """ - Returns the input dimension - """ - return self.dim_in + filter_layers = NetworkCollection( + ndim=1, ntypes=len(sel), network_type="embedding_network" + ) + # TODO: ndim=2 if type_one_side=False + for ii in range(self.ntypes): + filter_layers[(ii,)] = EmbeddingNet( + 1, + self.filter_neuron, + activation_function=self.activation_function, + precision=self.precision, + resnet_dt=self.resnet_dt, + ) + self.filter_layers = filter_layers + + def get_rcut(self) -> float: + """Returns the cut-off radius.""" + return self.rcut + + def get_nsel(self) -> int: + """Returns the number of selected atoms in the cut-off radius.""" + return sum(self.sel) + + def get_sel(self) -> List[int]: + """Returns the number of selected atoms for each type.""" + return self.sel + + def get_ntype(self) -> int: + """Returns the number of element types.""" + return self.ntypes + + def get_dim_out(self) -> int: + """Returns the output dimension.""" + return self.dim_out + + def get_dim_in(self) -> int: + """Returns the input dimension.""" + return self.dim_in @property def dim_out(self): - """ - Returns the output dimension of this descriptor - """ + """Returns the output dimension of this descriptor.""" return self.filter_neuron[-1] * self.axis_neuron @property def dim_in(self): - """ - Returns the atomic input dimension of this descriptor - """ + """Returns the atomic input dimension of this descriptor.""" return 0 def __setitem__(self, key, value): @@ -303,26 +304,29 @@ def __getitem__(self, key): else: raise KeyError(key) - def compute_input_stats(self, merged): - """Update mean and stddev for descriptor elements. - """ + """Update mean and stddev for descriptor elements.""" sumr = [] suma = [] sumn = [] sumr2 = [] suma2 = [] for system in merged: # 逐个 system 的分析 - index = system['mapping'].unsqueeze(-1).expand(-1, -1, 3) - extended_coord = torch.gather(system['coord'], dim=1, index=index) - extended_coord = extended_coord - system['shift'] + index = system["mapping"].unsqueeze(-1).expand(-1, -1, 3) + extended_coord = torch.gather(system["coord"], dim=1, index=index) + extended_coord = extended_coord - system["shift"] env_mat, _, _ = prod_env_mat_se_a( - extended_coord, system['nlist'], system['atype'], - self.mean, self.stddev, - self.rcut, self.rcut_smth, + extended_coord, + system["nlist"], + system["atype"], + self.mean, + self.stddev, + self.rcut, + self.rcut_smth, + ) + sysr, sysr2, sysa, sysa2, sysn = analyze_descrpt( + env_mat.detach().cpu().numpy(), self.ndescrpt, system["natoms"] ) - sysr, sysr2, sysa, sysa2, sysn = analyze_descrpt(env_mat.detach().cpu().numpy(), self.ndescrpt, - system['natoms']) sumr.append(sysr) suma.append(sysa) sumn.append(sysn) @@ -340,12 +344,14 @@ def init_desc_stat(self, sumr, suma, sumn, sumr2, suma2): all_dstd = [] for type_i in range(self.ntypes): davgunit = [[sumr[type_i] / (sumn[type_i] + 1e-15), 0, 0, 0]] - dstdunit = [[ - compute_std(sumr2[type_i], sumr[type_i], sumn[type_i], self.rcut), - compute_std(suma2[type_i], suma[type_i], sumn[type_i], self.rcut), - compute_std(suma2[type_i], suma[type_i], sumn[type_i], self.rcut), - compute_std(suma2[type_i], suma[type_i], sumn[type_i], self.rcut) - ]] + dstdunit = [ + [ + compute_std(sumr2[type_i], sumr[type_i], sumn[type_i], self.rcut), + compute_std(suma2[type_i], suma[type_i], sumn[type_i], self.rcut), + compute_std(suma2[type_i], suma[type_i], sumn[type_i], self.rcut), + compute_std(suma2[type_i], suma[type_i], sumn[type_i], self.rcut), + ] + ] davg = np.tile(davgunit, [self.nnei, 1]) dstd = np.tile(dstdunit, [self.nnei, 1]) all_davg.append(davg) @@ -361,9 +367,8 @@ def init_desc_stat(self, sumr, suma, sumn, sumr2, suma2): stddev = np.stack(all_dstd) self.stddev.copy_(torch.tensor(stddev, device=env.DEVICE)) - def forward( - self, + self, nlist: torch.Tensor, extended_coord: torch.Tensor, extended_atype: torch.Tensor, @@ -378,51 +383,69 @@ def forward( - natoms: Tell atom count and element count. Its shape is [2+self.ntypes]. - box: Tell simulation box with shape [nframes, 9]. - Returns: + Returns + ------- - `torch.Tensor`: descriptor matrix with shape [nframes, natoms[0]*self.filter_neuron[-1]*self.axis_neuron]. """ del extended_atype_embd, mapping nloc = nlist.shape[1] atype = extended_atype[:, :nloc] dmatrix, diff, _ = prod_env_mat_se_a( - extended_coord, nlist, atype, - self.mean, self.stddev, - self.rcut, self.rcut_smth, + extended_coord, + nlist, + atype, + self.mean, + self.stddev, + self.rcut, + self.rcut_smth, ) if self.old_impl: - assert self.filter_layers_old is not None - dmatrix = dmatrix.view(-1, self.ndescrpt) # shape is [nframes*nall, self.ndescrpt] - xyz_scatter = torch.empty(1, ) - ret = self.filter_layers_old[0](dmatrix) - xyz_scatter = ret - for ii, transform in enumerate(self.filter_layers_old[1:]): - # shape is [nframes*nall, 4, self.filter_neuron[-1]] - ret = transform.forward(dmatrix) - xyz_scatter = xyz_scatter + ret + assert self.filter_layers_old is not None + dmatrix = dmatrix.view( + -1, self.ndescrpt + ) # shape is [nframes*nall, self.ndescrpt] + xyz_scatter = torch.empty( + 1, + ) + ret = self.filter_layers_old[0](dmatrix) + xyz_scatter = ret + for ii, transform in enumerate(self.filter_layers_old[1:]): + # shape is [nframes*nall, 4, self.filter_neuron[-1]] + ret = transform.forward(dmatrix) + xyz_scatter = xyz_scatter + ret else: - assert self.filter_layers is not None - dmatrix = dmatrix.view(-1, self.nnei, 4) - nfnl = dmatrix.shape[0] - # pre-allocate a shape to pass jit - xyz_scatter = torch.zeros([nfnl, 4, self.filter_neuron[-1]], dtype=self.prec, device=env.DEVICE) - for ii,ll in enumerate(self.filter_layers.networks): - # nfnl x nt x 4 - rr = dmatrix[:, self.sec[ii]:self.sec[ii+1], :] - ss = rr[:,:,:1] - # nfnl x nt x ng - gg = ll.forward(ss) - # nfnl x 4 x ng - gr = torch.matmul(rr.permute(0,2,1), gg) - xyz_scatter += gr + assert self.filter_layers is not None + dmatrix = dmatrix.view(-1, self.nnei, 4) + nfnl = dmatrix.shape[0] + # pre-allocate a shape to pass jit + xyz_scatter = torch.zeros( + [nfnl, 4, self.filter_neuron[-1]], dtype=self.prec, device=env.DEVICE + ) + for ii, ll in enumerate(self.filter_layers.networks): + # nfnl x nt x 4 + rr = dmatrix[:, self.sec[ii] : self.sec[ii + 1], :] + ss = rr[:, :, :1] + # nfnl x nt x ng + gg = ll.forward(ss) + # nfnl x 4 x ng + gr = torch.matmul(rr.permute(0, 2, 1), gg) + xyz_scatter += gr xyz_scatter /= self.nnei xyz_scatter_1 = xyz_scatter.permute(0, 2, 1) rot_mat = xyz_scatter_1[:, :, 1:4] - xyz_scatter_2 = xyz_scatter[:, :, 0:self.axis_neuron] - result = torch.matmul(xyz_scatter_1, - xyz_scatter_2) # shape is [nframes*nall, self.filter_neuron[-1], self.axis_neuron] - return result.view(-1, nloc, self.filter_neuron[-1] * self.axis_neuron), None, None, None, None + xyz_scatter_2 = xyz_scatter[:, :, 0 : self.axis_neuron] + result = torch.matmul( + xyz_scatter_1, xyz_scatter_2 + ) # shape is [nframes*nall, self.filter_neuron[-1], self.axis_neuron] + return ( + result.view(-1, nloc, self.filter_neuron[-1] * self.axis_neuron), + None, + None, + None, + None, + ) def analyze_descrpt(matrix, ndescrpt, natoms): @@ -438,14 +461,16 @@ def analyze_descrpt(matrix, ndescrpt, natoms): end_index = start_index + natoms[0, 2 + type_i] dd = matrix[:, start_index:end_index] # 本元素所有原子的 descriptor start_index = end_index - dd = np.reshape(dd, [-1, 4]) # Shape is [nframes*natoms[2+type_id]*self.nnei, 4] + dd = np.reshape( + dd, [-1, 4] + ) # Shape is [nframes*natoms[2+type_id]*self.nnei, 4] ddr = dd[:, :1] # 径向值 dda = dd[:, 1:] # XYZ 轴分量 sumr = np.sum(ddr) - suma = np.sum(dda) / 3. + suma = np.sum(dda) / 3.0 sumn = dd.shape[0] # Value is nframes*natoms[2+type_id]*self.nnei sumr2 = np.sum(np.multiply(ddr, ddr)) - suma2 = np.sum(np.multiply(dda, dda)) / 3. + suma2 = np.sum(np.multiply(dda, dda)) / 3.0 sysr.append(sumr) sysa.append(suma) sysn.append(sumn) diff --git a/deepmd_pt/model/descriptor/se_atten.py b/deepmd_pt/model/descriptor/se_atten.py index 26ea594a..1c2ba575 100644 --- a/deepmd_pt/model/descriptor/se_atten.py +++ b/deepmd_pt/model/descriptor/se_atten.py @@ -1,16 +1,26 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later +from typing import ( + List, + Optional, +) + import numpy as np import torch -from typing import Optional, List, Dict -from deepmd_pt.utils import env -from deepmd_pt.model.descriptor import prod_env_mat_se_a, DescriptorBlock, compute_std - -try: - from typing import Final -except: - from torch.jit import Final -from typing import Any, Union, Tuple, List -from deepmd_pt.model.network import TypeFilter, NeighborWiseAttention +from deepmd_pt.model.descriptor.descriptor import ( + DescriptorBlock, + compute_std, +) +from deepmd_pt.model.descriptor.env_mat import ( + prod_env_mat_se_a, +) +from deepmd_pt.model.network.network import ( + NeighborWiseAttention, + TypeFilter, +) +from deepmd_pt.utils import ( + env, +) @DescriptorBlock.register("se_atten") @@ -24,7 +34,7 @@ def __init__( neuron: list = [25, 50, 100], axis_neuron: int = 16, tebd_dim: int = 8, - tebd_input_mode: str = 'concat', + tebd_input_mode: str = "concat", # set_davg_zero: bool = False, set_davg_zero: bool = True, # TODO attn: int = 128, @@ -51,7 +61,7 @@ def __init__( - filter_neuron: Number of neurons in each hidden layers of the embedding net. - axis_neuron: Number of columns of the sub-matrix of the embedding matrix. """ - super(DescrptBlockSeAtten, self).__init__() + super().__init__() del type self.rcut = rcut self.rcut_smth = rcut_smth @@ -83,107 +93,118 @@ def __init__( self.split_sel = self.sel self.nnei = sum(sel) # 总的邻居数量 self.ndescrpt = self.nnei * 4 # 描述符的元素数量 - self.dpa1_attention = NeighborWiseAttention(self.attn_layer, self.nnei, self.filter_neuron[-1], self.attn_dim, - dotr=self.attn_dotr, do_mask=self.attn_mask, post_ln=self.post_ln, - ffn=self.ffn, ffn_embed_dim=self.ffn_embed_dim, - activation=self.activation, scaling_factor=self.scaling_factor, - head_num=self.head_num, normalize=self.normalize, - temperature=self.temperature) + self.dpa1_attention = NeighborWiseAttention( + self.attn_layer, + self.nnei, + self.filter_neuron[-1], + self.attn_dim, + dotr=self.attn_dotr, + do_mask=self.attn_mask, + post_ln=self.post_ln, + ffn=self.ffn, + ffn_embed_dim=self.ffn_embed_dim, + activation=self.activation, + scaling_factor=self.scaling_factor, + head_num=self.head_num, + normalize=self.normalize, + temperature=self.temperature, + ) wanted_shape = (self.ntypes, self.nnei, 4) - mean = torch.zeros(wanted_shape, dtype=env.GLOBAL_PT_FLOAT_PRECISION, device=env.DEVICE) - stddev = torch.ones(wanted_shape, dtype=env.GLOBAL_PT_FLOAT_PRECISION, device=env.DEVICE) - self.register_buffer('mean', mean) - self.register_buffer('stddev', stddev) + mean = torch.zeros( + wanted_shape, dtype=env.GLOBAL_PT_FLOAT_PRECISION, device=env.DEVICE + ) + stddev = torch.ones( + wanted_shape, dtype=env.GLOBAL_PT_FLOAT_PRECISION, device=env.DEVICE + ) + self.register_buffer("mean", mean) + self.register_buffer("stddev", stddev) filter_layers = [] - one = TypeFilter(0, self.nnei, self.filter_neuron, return_G=True, tebd_dim=self.tebd_dim, use_tebd=True, - tebd_mode=self.tebd_input_mode) + one = TypeFilter( + 0, + self.nnei, + self.filter_neuron, + return_G=True, + tebd_dim=self.tebd_dim, + use_tebd=True, + tebd_mode=self.tebd_input_mode, + ) filter_layers.append(one) self.filter_layers = torch.nn.ModuleList(filter_layers) - def get_rcut(self)->float: - """ - Returns the cut-off radius - """ + def get_rcut(self) -> float: + """Returns the cut-off radius.""" return self.rcut - def get_nsel(self)->int: - """ - Returns the number of selected atoms in the cut-off radius - """ + def get_nsel(self) -> int: + """Returns the number of selected atoms in the cut-off radius.""" return sum(self.sel) - def get_sel(self)->List[int]: - """ - Returns the number of selected atoms for each type. - """ + def get_sel(self) -> List[int]: + """Returns the number of selected atoms for each type.""" return self.sel - def get_ntype(self)->int: - """ - Returns the number of element types - """ + def get_ntype(self) -> int: + """Returns the number of element types.""" return self.ntypes - def get_dim_in(self)->int: - """ - Returns the output dimension - """ + def get_dim_in(self) -> int: + """Returns the output dimension.""" return self.dim_in - def get_dim_out(self)->int: - """ - Returns the output dimension - """ + def get_dim_out(self) -> int: + """Returns the output dimension.""" return self.dim_out @property def dim_out(self): - """ - Returns the output dimension of this descriptor - """ + """Returns the output dimension of this descriptor.""" return self.filter_neuron[-1] * self.axis_neuron @property def dim_in(self): - """ - Returns the atomic input dimension of this descriptor - """ + """Returns the atomic input dimension of this descriptor.""" return self.tebd_dim @property def dim_emb(self): - """ - Returns the output dimension of embedding - """ + """Returns the output dimension of embedding.""" return self.filter_neuron[-1] def compute_input_stats(self, merged): - """Update mean and stddev for descriptor elements. - """ + """Update mean and stddev for descriptor elements.""" sumr = [] suma = [] sumn = [] sumr2 = [] suma2 = [] - mixed_type = 'real_natoms_vec' in merged[0] + mixed_type = "real_natoms_vec" in merged[0] for system in merged: # 逐个 system 的分析 - index = system['mapping'].unsqueeze(-1).expand(-1, -1, 3) - extended_coord = torch.gather(system['coord'], dim=1, index=index) - extended_coord = extended_coord - system['shift'] + index = system["mapping"].unsqueeze(-1).expand(-1, -1, 3) + extended_coord = torch.gather(system["coord"], dim=1, index=index) + extended_coord = extended_coord - system["shift"] env_mat, _, _ = prod_env_mat_se_a( - extended_coord, system['nlist'], system['atype'], - self.mean, self.stddev, - self.rcut, self.rcut_smth, + extended_coord, + system["nlist"], + system["atype"], + self.mean, + self.stddev, + self.rcut, + self.rcut_smth, ) if not mixed_type: - sysr, sysr2, sysa, sysa2, sysn = analyze_descrpt(env_mat.detach().cpu().numpy(), self.ndescrpt, - system['natoms']) + sysr, sysr2, sysa, sysa2, sysn = analyze_descrpt( + env_mat.detach().cpu().numpy(), self.ndescrpt, system["natoms"] + ) else: - sysr, sysr2, sysa, sysa2, sysn = analyze_descrpt(env_mat.detach().cpu().numpy(), self.ndescrpt, - system['real_natoms_vec'], mixed_type=mixed_type, - real_atype=system['atype'].detach().cpu().numpy()) + sysr, sysr2, sysa, sysa2, sysn = analyze_descrpt( + env_mat.detach().cpu().numpy(), + self.ndescrpt, + system["real_natoms_vec"], + mixed_type=mixed_type, + real_atype=system["atype"].detach().cpu().numpy(), + ) sumr.append(sysr) suma.append(sysa) sumn.append(sysn) @@ -201,12 +222,14 @@ def init_desc_stat(self, sumr, suma, sumn, sumr2, suma2): all_dstd = [] for type_i in range(self.ntypes): davgunit = [[sumr[type_i] / (sumn[type_i] + 1e-15), 0, 0, 0]] - dstdunit = [[ - compute_std(sumr2[type_i], sumr[type_i], sumn[type_i], self.rcut), - compute_std(suma2[type_i], suma[type_i], sumn[type_i], self.rcut), - compute_std(suma2[type_i], suma[type_i], sumn[type_i], self.rcut), - compute_std(suma2[type_i], suma[type_i], sumn[type_i], self.rcut) - ]] + dstdunit = [ + [ + compute_std(sumr2[type_i], sumr[type_i], sumn[type_i], self.rcut), + compute_std(suma2[type_i], suma[type_i], sumn[type_i], self.rcut), + compute_std(suma2[type_i], suma[type_i], sumn[type_i], self.rcut), + compute_std(suma2[type_i], suma[type_i], sumn[type_i], self.rcut), + ] + ] davg = np.tile(davgunit, [self.nnei, 1]) dstd = np.tile(dstdunit, [self.nnei, 1]) all_davg.append(davg) @@ -223,7 +246,7 @@ def init_desc_stat(self, sumr, suma, sumn, sumr2, suma2): self.stddev.copy_(torch.tensor(stddev, device=env.DEVICE)) def forward( - self, + self, nlist: torch.Tensor, extended_coord: torch.Tensor, extended_atype: torch.Tensor, @@ -238,29 +261,36 @@ def forward( - natoms: Tell atom count and element count. Its shape is [2+self.ntypes]. - box: Tell simulation box with shape [nframes, 9]. - Returns: + Returns + ------- - result: descriptor with shape [nframes, nloc, self.filter_neuron[-1] * self.axis_neuron]. - ret: environment matrix with shape [nframes, nloc, self.neei, out_size] """ del mapping assert extended_atype_embd is not None nframes, nloc, nnei = nlist.shape - atype = extended_atype[:,:nloc] + atype = extended_atype[:, :nloc] nb = nframes nall = extended_coord.view(nb, -1, 3).shape[1] dmatrix, diff, sw = prod_env_mat_se_a( - extended_coord, nlist, atype, - self.mean, self.stddev, - self.rcut, self.rcut_smth, + extended_coord, + nlist, + atype, + self.mean, + self.stddev, + self.rcut, + self.rcut_smth, ) - dmatrix = dmatrix.view(-1, self.ndescrpt) # shape is [nframes*nall, self.ndescrpt] - nlist_mask = (nlist != -1) + dmatrix = dmatrix.view( + -1, self.ndescrpt + ) # shape is [nframes*nall, self.ndescrpt] + nlist_mask = nlist != -1 nlist[nlist == -1] = 0 sw = torch.squeeze(sw, -1) # beyond the cutoff sw should be 0.0 - sw = sw.masked_fill(~nlist_mask, float(0.0)) + sw = sw.masked_fill(~nlist_mask, 0.0) # nf x nloc x nt -> nf x nloc x nnei x nt - atype_tebd = extended_atype_embd[:,:nloc,:] + atype_tebd = extended_atype_embd[:, :nloc, :] atype_tebd_nnei = atype_tebd.unsqueeze(2).expand(-1, -1, self.nnei, -1) # nf x nall x nt nt = extended_atype_embd.shape[-1] @@ -272,23 +302,36 @@ def forward( # nb x nloc x nnei x nt atype_tebd_nlist = atype_tebd_nlist.view(nb, nloc, nnei, nt) ret = self.filter_layers[0]( - dmatrix, - atype_tebd=atype_tebd_nnei, - nlist_tebd=atype_tebd_nlist, + dmatrix, + atype_tebd=atype_tebd_nnei, + nlist_tebd=atype_tebd_nlist, ) # shape is [nframes*nall, self.neei, out_size] - input_r = torch.nn.functional.normalize(dmatrix.reshape(-1, self.nnei, 4)[:, :, 1:4], dim=-1) - ret = self.dpa1_attention(ret, nlist_mask, input_r=input_r, sw=sw) # shape is [nframes*nloc, self.neei, out_size] - inputs_reshape = dmatrix.view(-1, self.nnei, 4).permute(0, 2, 1) # shape is [nframes*natoms[0], 4, self.neei] - xyz_scatter = torch.matmul(inputs_reshape, ret) # shape is [nframes*natoms[0], 4, out_size] + input_r = torch.nn.functional.normalize( + dmatrix.reshape(-1, self.nnei, 4)[:, :, 1:4], dim=-1 + ) + ret = self.dpa1_attention( + ret, nlist_mask, input_r=input_r, sw=sw + ) # shape is [nframes*nloc, self.neei, out_size] + inputs_reshape = dmatrix.view(-1, self.nnei, 4).permute( + 0, 2, 1 + ) # shape is [nframes*natoms[0], 4, self.neei] + xyz_scatter = torch.matmul( + inputs_reshape, ret + ) # shape is [nframes*natoms[0], 4, out_size] xyz_scatter = xyz_scatter / self.nnei xyz_scatter_1 = xyz_scatter.permute(0, 2, 1) rot_mat = xyz_scatter_1[:, :, 1:4] - xyz_scatter_2 = xyz_scatter[:, :, 0:self.axis_neuron] - result = torch.matmul(xyz_scatter_1, - xyz_scatter_2) # shape is [nframes*nloc, self.filter_neuron[-1], self.axis_neuron] - return result.view(-1, nloc, self.filter_neuron[-1] * self.axis_neuron), \ - ret.view(-1, nloc, self.nnei, self.filter_neuron[-1]), diff, \ - rot_mat.view(-1, self.filter_neuron[-1], 3), sw + xyz_scatter_2 = xyz_scatter[:, :, 0 : self.axis_neuron] + result = torch.matmul( + xyz_scatter_1, xyz_scatter_2 + ) # shape is [nframes*nloc, self.filter_neuron[-1], self.axis_neuron] + return ( + result.view(-1, nloc, self.filter_neuron[-1] * self.axis_neuron), + ret.view(-1, nloc, self.nnei, self.filter_neuron[-1]), + diff, + rot_mat.view(-1, self.filter_neuron[-1], 3), + sw, + ) def analyze_descrpt(matrix, ndescrpt, natoms, mixed_type=False, real_atype=None): @@ -305,14 +348,16 @@ def analyze_descrpt(matrix, ndescrpt, natoms, mixed_type=False, real_atype=None) end_index = start_index + natoms[0, 2 + type_i] dd = matrix[:, start_index:end_index] # 本元素所有原子的 descriptor start_index = end_index - dd = np.reshape(dd, [-1, 4]) # Shape is [nframes*natoms[2+type_id]*self.nnei, 4] + dd = np.reshape( + dd, [-1, 4] + ) # Shape is [nframes*natoms[2+type_id]*self.nnei, 4] ddr = dd[:, :1] # 径向值 dda = dd[:, 1:] # XYZ 轴分量 sumr = np.sum(ddr) - suma = np.sum(dda) / 3. + suma = np.sum(dda) / 3.0 sumn = dd.shape[0] # Value is nframes*natoms[2+type_id]*self.nnei sumr2 = np.sum(np.multiply(ddr, ddr)) - suma2 = np.sum(np.multiply(dda, dda)) / 3. + suma2 = np.sum(np.multiply(dda, dda)) / 3.0 sysr.append(sumr) sysa.append(suma) sysn.append(sumn) diff --git a/deepmd_pt/model/model/__init__.py b/deepmd_pt/model/model/__init__.py index 62f44ad1..a3db3dbd 100644 --- a/deepmd_pt/model/model/__init__.py +++ b/deepmd_pt/model/model/__init__.py @@ -1,14 +1,27 @@ -from .model import BaseModel -from .ener import EnergyModel +# SPDX-License-Identifier: LGPL-3.0-or-later +from .ener import ( + EnergyModel, +) +from .model import ( + BaseModel, +) + def get_model(model_params, sampled=None): return EnergyModel( - descriptor=model_params['descriptor'], - fitting_net=model_params.get('fitting_net', None), - type_map=model_params['type_map'], - type_embedding=model_params.get('type_embedding', None), - resuming=model_params.get("resuming", False), - stat_file_dir=model_params.get("stat_file_dir", None), - stat_file_path=model_params.get("stat_file_path", None), - sampled=sampled, + descriptor=model_params["descriptor"], + fitting_net=model_params.get("fitting_net", None), + type_map=model_params["type_map"], + type_embedding=model_params.get("type_embedding", None), + resuming=model_params.get("resuming", False), + stat_file_dir=model_params.get("stat_file_dir", None), + stat_file_path=model_params.get("stat_file_path", None), + sampled=sampled, ) + + +__all__ = [ + "BaseModel", + "EnergyModel", + "get_model", +] diff --git a/deepmd_pt/model/model/atomic_model.py b/deepmd_pt/model/model/atomic_model.py index 3ec741d5..41020cbd 100644 --- a/deepmd_pt/model/model/atomic_model.py +++ b/deepmd_pt/model/model/atomic_model.py @@ -1,70 +1,77 @@ -from abc import ABC, abstractmethod -import torch -import logging -import os +# SPDX-License-Identifier: LGPL-3.0-or-later +from abc import ( + ABC, + abstractmethod, +) from typing import ( - Optional, - Dict, - List, + Dict, + List, + Optional, +) + +import torch +from deepmd.model_format import ( + FittingOutputDef, +) + +from deepmd_pt.model.task import ( + Fitting, ) -from deepmd_utils.model_format import FittingOutputDef -from deepmd_pt.model.task import Fitting class AtomicModel(ABC): + @abstractmethod + def get_fitting_net(self) -> Fitting: + raise NotImplementedError + + @abstractmethod + def get_fitting_output_def(self) -> FittingOutputDef: + raise NotImplementedError - @abstractmethod - def get_fitting_net(self)->Fitting: - raise NotImplementedError + @abstractmethod + def get_rcut(self) -> float: + raise NotImplementedError - @abstractmethod - def get_fitting_output_def(self)->FittingOutputDef: - raise NotImplementedError + @abstractmethod + def get_sel(self) -> List[int]: + raise NotImplementedError - @abstractmethod - def get_rcut(self)->float: - raise NotImplementedError + @abstractmethod + def distinguish_types(self) -> bool: + raise NotImplementedError - @abstractmethod - def get_sel(self)->List[int]: - raise NotImplementedError + @abstractmethod + def forward_atomic( + self, + extended_coord, + extended_atype, + nlist, + mapping: Optional[torch.Tensor] = None, + do_atomic_virial: bool = False, + ) -> Dict[str, torch.Tensor]: + raise NotImplementedError - @abstractmethod - def distinguish_types(self)->bool: - raise NotImplementedError + def do_grad( + self, + var_name: Optional[str] = None, + ) -> bool: + """Tell if the output variable `var_name` is differentiable. + if var_name is None, returns if any of the variable is differentiable. - @abstractmethod - def forward_atomic( - self, - extended_coord, - extended_atype, - nlist, - mapping: Optional[torch.Tensor] = None, - do_atomic_virial: bool = False, - ) -> Dict[str, torch.Tensor]: - raise NotImplementedError - - def do_grad( - self, - var_name: Optional[str] = None, - )->bool: - """Tell if the output variable `var_name` is differentiable. - if var_name is None, returns if any of the variable is differentiable. - - """ - odef = self.get_fitting_output_def() - if var_name is None: - require: List[bool] = [] - for vv in odef.keys(): - require.append(self.do_grad_(vv)) - return any(require) - else: - return self.do_grad_(var_name) + """ + odef = self.get_fitting_output_def() + if var_name is None: + require: List[bool] = [] + for vv in odef.keys(): + require.append(self.do_grad_(vv)) + return any(require) + else: + return self.do_grad_(var_name) - def do_grad_( - self, - var_name: str, - )->bool: - """Tell if the output variable `var_name` is differentiable.""" - assert var_name is not None - return self.get_fitting_output_def()[var_name].differentiable + def do_grad_( + self, + var_name: str, + ) -> bool: + """Tell if the output variable `var_name` is differentiable.""" + assert var_name is not None + return self.get_fitting_output_def()[var_name].differentiable diff --git a/deepmd_pt/model/model/dp_atomic_model.py b/deepmd_pt/model/model/dp_atomic_model.py index 9f388bb3..ebe9bbaa 100644 --- a/deepmd_pt/model/model/dp_atomic_model.py +++ b/deepmd_pt/model/model/dp_atomic_model.py @@ -1,195 +1,214 @@ -import numpy as np -import torch -import logging -import os +# SPDX-License-Identifier: LGPL-3.0-or-later from typing import ( - Optional, - Dict, - List, + Dict, + List, + Optional, +) + +import torch +from deepmd.model_format import ( + FittingOutputDef, +) + +from deepmd_pt.model.descriptor.descriptor import ( + Descriptor, +) +from deepmd_pt.model.task import ( + DenoiseNet, + Fitting, ) -from deepmd_utils.model_format import FittingOutputDef -from deepmd_pt.model.descriptor import Descriptor -from deepmd_pt.model.task import Fitting, DenoiseNet -from deepmd_pt.model.network import TypeEmbedNet -from .model import BaseModel -from .atomic_model import AtomicModel +from .atomic_model import ( + AtomicModel, +) +from .model import ( + BaseModel, +) class DPAtomicModel(BaseModel, AtomicModel): - """Model give atomic prediction of some physical property. - - Parameters - ---------- - descriptor - Descriptor - fitting_net - Fitting net - type_map - Mapping atom type to the name (str) of the type. - For example `type_map[1]` gives the name of the type 1. - type_embedding - Type embedding net - resuming - Whether to resume/fine-tune from checkpoint or not. - stat_file_dir - The directory to the state files. - stat_file_path - The path to the state files. - sampled - Sampled frames to compute the statistics. - """ - - def __init__( - self, - descriptor: dict, - fitting_net: dict, - type_map: Optional[List[str]], - type_embedding: Optional[dict] = None, - resuming: bool = False, - stat_file_dir=None, - stat_file_path=None, - sampled=None, - **kwargs, - ): - super().__init__() - # Descriptor + Type Embedding Net (Optional) - ntypes = len(type_map) - self.type_map = type_map - self.ntypes = ntypes - descriptor['ntypes'] = ntypes - self.combination = descriptor.get('combination',False) - if(self.combination): - self.prefactor=descriptor.get('prefactor', [0.5,0.5]) - self.descriptor_type = descriptor['type'] - - self.type_split = True - if self.descriptor_type not in ['se_e2_a']: - self.type_split = False - - self.descriptor = Descriptor(**descriptor) - self.rcut = self.descriptor.get_rcut() - self.sel = self.descriptor.get_sel() - self.split_nlist = False - - # Statistics - self.compute_or_load_stat(fitting_net, ntypes, - resuming=resuming, - type_map=type_map, - stat_file_dir=stat_file_dir, - stat_file_path=stat_file_path, - sampled=sampled) - - # Fitting - if fitting_net: - fitting_net['type'] = fitting_net.get('type', 'ener') - if self.descriptor_type not in ['se_e2_a']: - fitting_net['ntypes'] = 1 - else: - fitting_net['ntypes'] = self.descriptor.get_ntype() - fitting_net['use_tebd'] = False - fitting_net['embedding_width'] = self.descriptor.dim_out - - self.grad_force = 'direct' not in fitting_net['type'] - if not self.grad_force: - fitting_net['out_dim'] = self.descriptor.dim_emb - if 'ener' in fitting_net['type']: - fitting_net['return_energy'] = True - self.fitting_net = Fitting(**fitting_net) - else: - self.fitting_net = None - self.grad_force = False - if not self.split_nlist: - self.coord_denoise_net = DenoiseNet(self.descriptor.dim_out, self.ntypes - 1, self.descriptor.dim_emb) - elif self.combination: - self.coord_denoise_net = DenoiseNet(self.descriptor.dim_out, self.ntypes - 1, self.descriptor.dim_emb_list, self.prefactor) - else: - self.coord_denoise_net = DenoiseNet(self.descriptor.dim_out, self.ntypes - 1, self.descriptor.dim_emb) - - - def get_fitting_net(self)->Fitting: - """Get the fitting net.""" - return ( - self.fitting_net - if self.fitting_net is not None - else self.coord_denoise_net - ) - - def get_fitting_output_def(self)->FittingOutputDef: - """Get the output def of the fitting net.""" - return ( - self.fitting_net.output_def() - if self.fitting_net is not None - else self.coord_denoise_net.output_def() - ) - - def get_rcut(self)->float: - """Get the cut-off radius.""" - return self.rcut - - def get_sel(self)->List[int]: - """Get the neighbor selection.""" - return self.sel - - def distinguish_types(self)->bool: - """If distinguish different types by sorting.""" - return self.type_split - - - def forward_atomic( - self, - extended_coord, - extended_atype, - nlist, - mapping: Optional[torch.Tensor] = None, - ) -> Dict[str, torch.Tensor]: - """Return atomic prediction. + """Model give atomic prediction of some physical property. Parameters ---------- - extended_coord - coodinates in extended region - extended_atype - atomic type in extended region - nlist - neighbor list. nf x nloc x nsel - mapping - mapps the extended indices to local indices - - Return - ------ - result_dict - the result dict, defined by the fitting net output def. - + descriptor + Descriptor + fitting_net + Fitting net + type_map + Mapping atom type to the name (str) of the type. + For example `type_map[1]` gives the name of the type 1. + type_embedding + Type embedding net + resuming + Whether to resume/fine-tune from checkpoint or not. + stat_file_dir + The directory to the state files. + stat_file_path + The path to the state files. + sampled + Sampled frames to compute the statistics. """ - nframes, nloc, nnei = nlist.shape - atype = extended_atype[:, :nloc] - if self.do_grad(): - extended_coord.requires_grad_(True) - descriptor, env_mat, diff, rot_mat, sw = \ - self.descriptor( + + def __init__( + self, + descriptor: dict, + fitting_net: dict, + type_map: Optional[List[str]], + type_embedding: Optional[dict] = None, + resuming: bool = False, + stat_file_dir=None, + stat_file_path=None, + sampled=None, + **kwargs, + ): + super().__init__() + # Descriptor + Type Embedding Net (Optional) + ntypes = len(type_map) + self.type_map = type_map + self.ntypes = ntypes + descriptor["ntypes"] = ntypes + self.combination = descriptor.get("combination", False) + if self.combination: + self.prefactor = descriptor.get("prefactor", [0.5, 0.5]) + self.descriptor_type = descriptor["type"] + + self.type_split = True + if self.descriptor_type not in ["se_e2_a"]: + self.type_split = False + + self.descriptor = Descriptor(**descriptor) + self.rcut = self.descriptor.get_rcut() + self.sel = self.descriptor.get_sel() + self.split_nlist = False + + # Statistics + self.compute_or_load_stat( + fitting_net, + ntypes, + resuming=resuming, + type_map=type_map, + stat_file_dir=stat_file_dir, + stat_file_path=stat_file_path, + sampled=sampled, + ) + + # Fitting + if fitting_net: + fitting_net["type"] = fitting_net.get("type", "ener") + if self.descriptor_type not in ["se_e2_a"]: + fitting_net["ntypes"] = 1 + else: + fitting_net["ntypes"] = self.descriptor.get_ntype() + fitting_net["use_tebd"] = False + fitting_net["embedding_width"] = self.descriptor.dim_out + + self.grad_force = "direct" not in fitting_net["type"] + if not self.grad_force: + fitting_net["out_dim"] = self.descriptor.dim_emb + if "ener" in fitting_net["type"]: + fitting_net["return_energy"] = True + self.fitting_net = Fitting(**fitting_net) + else: + self.fitting_net = None + self.grad_force = False + if not self.split_nlist: + self.coord_denoise_net = DenoiseNet( + self.descriptor.dim_out, self.ntypes - 1, self.descriptor.dim_emb + ) + elif self.combination: + self.coord_denoise_net = DenoiseNet( + self.descriptor.dim_out, + self.ntypes - 1, + self.descriptor.dim_emb_list, + self.prefactor, + ) + else: + self.coord_denoise_net = DenoiseNet( + self.descriptor.dim_out, self.ntypes - 1, self.descriptor.dim_emb + ) + + def get_fitting_net(self) -> Fitting: + """Get the fitting net.""" + return ( + self.fitting_net if self.fitting_net is not None else self.coord_denoise_net + ) + + def get_fitting_output_def(self) -> FittingOutputDef: + """Get the output def of the fitting net.""" + return ( + self.fitting_net.output_def() + if self.fitting_net is not None + else self.coord_denoise_net.output_def() + ) + + def get_rcut(self) -> float: + """Get the cut-off radius.""" + return self.rcut + + def get_sel(self) -> List[int]: + """Get the neighbor selection.""" + return self.sel + + def distinguish_types(self) -> bool: + """If distinguish different types by sorting.""" + return self.type_split + + def forward_atomic( + self, extended_coord, extended_atype, nlist, - mapping=mapping, - ) - assert descriptor is not None - # energy, force - if self.fitting_net is not None: - fit_ret = self.fitting_net(descriptor, atype, atype_tebd=None, rot_mat=rot_mat) - # denoise - else: - nlist_list = [nlist] - if not self.split_nlist: - nnei_mask = nlist != -1 - elif self.combination: - nnei_mask = [] - for item in nlist_list: - nnei_mask_item = item != -1 - nnei_mask.append(nnei_mask_item) + mapping: Optional[torch.Tensor] = None, + ) -> Dict[str, torch.Tensor]: + """Return atomic prediction. + + Parameters + ---------- + extended_coord + coodinates in extended region + extended_atype + atomic type in extended region + nlist + neighbor list. nf x nloc x nsel + mapping + mapps the extended indices to local indices + + Returns + ------- + result_dict + the result dict, defined by the fitting net output def. + + """ + nframes, nloc, nnei = nlist.shape + atype = extended_atype[:, :nloc] + if self.do_grad(): + extended_coord.requires_grad_(True) + descriptor, env_mat, diff, rot_mat, sw = self.descriptor( + extended_coord, + extended_atype, + nlist, + mapping=mapping, + ) + assert descriptor is not None + # energy, force + if self.fitting_net is not None: + fit_ret = self.fitting_net( + descriptor, atype, atype_tebd=None, rot_mat=rot_mat + ) + # denoise else: - env_mat = env_mat[-1] - diff = diff[-1] - nnei_mask = nlist_list[-1] != -1 - fit_ret = self.coord_denoise_net(env_mat, diff, nnei_mask, descriptor, sw) - return fit_ret + nlist_list = [nlist] + if not self.split_nlist: + nnei_mask = nlist != -1 + elif self.combination: + nnei_mask = [] + for item in nlist_list: + nnei_mask_item = item != -1 + nnei_mask.append(nnei_mask_item) + else: + env_mat = env_mat[-1] + diff = diff[-1] + nnei_mask = nlist_list[-1] != -1 + fit_ret = self.coord_denoise_net(env_mat, diff, nnei_mask, descriptor, sw) + return fit_ret diff --git a/deepmd_pt/model/model/ener.py b/deepmd_pt/model/model/ener.py index 60cb9b9c..c316c99a 100644 --- a/deepmd_pt/model/model/ener.py +++ b/deepmd_pt/model/model/ener.py @@ -1,27 +1,23 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later +from typing import ( + Dict, + List, + Optional, +) + import torch -from typing import Optional, List, Union, Dict -from deepmd_pt.model.model import BaseModel -from deepmd_pt.utils.nlist import extend_coord_with_ghosts, build_neighbor_list -from deepmd_pt.utils.region import normalize_coord -from deepmd_pt.model.descriptor import make_default_type_embedding -from deepmd_pt.model.model.transform_output import ( - fit_output_to_model_output, - communicate_extended_output, +from .dp_atomic_model import ( + DPAtomicModel, ) -from deepmd_utils.model_format import ( - model_check_output, - ModelOutputDef, +from .make_model import ( + make_model, ) -from .dp_atomic_model import DPAtomicModel -from .make_model import make_model - DPModel = make_model(DPAtomicModel) class EnergyModel(DPModel): - model_type = "ener" def __init__( @@ -35,10 +31,12 @@ def forward( self, coord, atype, - box: Optional[torch.Tensor] = None, + box: Optional[torch.Tensor] = None, do_atomic_virial: bool = False, ) -> Dict[str, torch.Tensor]: - model_ret = self.forward_common(coord, atype, box, do_atomic_virial=do_atomic_virial) + model_ret = self.forward_common( + coord, atype, box, do_atomic_virial=do_atomic_virial + ) if self.fitting_net is not None: model_predict = {} model_predict["atom_energy"] = model_ret["energy"] @@ -46,48 +44,54 @@ def forward( if self.do_grad("energy"): model_predict["force"] = model_ret["energy_derv_r"].squeeze(-2) if do_atomic_virial: - model_predict["atomic_virial"] = model_ret["energy_derv_c"].squeeze(-3) + model_predict["atomic_virial"] = model_ret["energy_derv_c"].squeeze( + -3 + ) model_predict["virial"] = model_ret["energy_derv_c_redu"].squeeze(-3) else: - model_predict['force'] = model_ret['dforce'] + model_predict["force"] = model_ret["dforce"] else: model_predict = model_ret - model_predict['updated_coord'] += coord + model_predict["updated_coord"] += coord return model_predict - def forward_lower( - self, - extended_coord, - extended_atype, + self, + extended_coord, + extended_atype, nlist, mapping: Optional[torch.Tensor] = None, do_atomic_virial: bool = False, ): model_ret = self.common_forward_lower( - extended_coord, extended_atype, nlist, mapping, - do_atomic_virial=do_atomic_virial) + extended_coord, + extended_atype, + nlist, + mapping, + do_atomic_virial=do_atomic_virial, + ) if self.fitting_net is not None: model_predict = {} model_predict["atom_energy"] = model_ret["energy"] model_predict["energy"] = model_ret["energy_redu"] if self.do_grad("energy"): - model_predict['extended_force'] = model_ret['energy_derv_r'].squeeze(-2) + model_predict["extended_force"] = model_ret["energy_derv_r"].squeeze(-2) if do_atomic_virial: - model_predict['extended_virial'] = model_ret['energy_derv_c'].squeeze(-3) + model_predict["extended_virial"] = model_ret[ + "energy_derv_c" + ].squeeze(-3) else: assert model_ret["dforce"] is not None - model_predict["dforce"] = model_ret["dforce"] + model_predict["dforce"] = model_ret["dforce"] else: model_predict = model_ret return model_predict - # should be a stand-alone function!!!! def process_nlist( - nlist, - extended_atype, + nlist, + extended_atype, mapping: Optional[torch.Tensor] = None, ): # process the nlist_type and nlist_loc @@ -96,25 +100,26 @@ def process_nlist( nlist[nmask] = 0 if mapping is not None: nlist_loc = torch.gather( - mapping, - dim=1, - index=nlist.reshape(nframes, -1), + mapping, + dim=1, + index=nlist.reshape(nframes, -1), ).reshape(nframes, nloc, -1) nlist_loc[nmask] = -1 else: nlist_loc = None nlist_type = torch.gather( - extended_atype, - dim=1, - index=nlist.reshape(nframes, -1), - ).reshape(nframes, nloc,-1) + extended_atype, + dim=1, + index=nlist.reshape(nframes, -1), + ).reshape(nframes, nloc, -1) nlist_type[nmask] = -1 nlist[nmask] = -1 return nlist_loc, nlist_type, nframes, nloc + def process_nlist_gathered( - nlist, - extended_atype, + nlist, + extended_atype, split_sel: List[int], mapping: Optional[torch.Tensor] = None, ): @@ -126,15 +131,14 @@ def process_nlist_gathered( nmask = nlist_item == -1 nlist_item[nmask] = 0 if mapping is not None: - nlist_loc_item = torch.gather(mapping, dim=1, index=nlist_item.reshape(nframes, -1)).reshape( - nframes, nloc, - -1) + nlist_loc_item = torch.gather( + mapping, dim=1, index=nlist_item.reshape(nframes, -1) + ).reshape(nframes, nloc, -1) nlist_loc_item[nmask] = -1 nlist_loc_list.append(nlist_loc_item) - nlist_type_item = torch.gather(extended_atype, dim=1, index=nlist_item.reshape(nframes, -1)).reshape( - nframes, - nloc, - -1) + nlist_type_item = torch.gather( + extended_atype, dim=1, index=nlist_item.reshape(nframes, -1) + ).reshape(nframes, nloc, -1) nlist_type_item[nmask] = -1 nlist_type_list.append(nlist_type_item) nlist_item[nmask] = -1 diff --git a/deepmd_pt/model/model/make_model.py b/deepmd_pt/model/model/make_model.py index 80c02fb2..680a7787 100644 --- a/deepmd_pt/model/model/make_model.py +++ b/deepmd_pt/model/model/make_model.py @@ -1,42 +1,48 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later +from typing import ( + Dict, + Optional, +) + import torch -from typing import Optional, List, Union, Dict -from deepmd_pt.utils.nlist import extend_coord_with_ghosts, build_neighbor_list -from deepmd_pt.utils.region import normalize_coord +from deepmd.model_format import ( + ModelOutputDef, +) + from deepmd_pt.model.model.transform_output import ( - fit_output_to_model_output, - communicate_extended_output, + communicate_extended_output, + fit_output_to_model_output, ) -from deepmd_utils.model_format import ( - model_check_output, - ModelOutputDef, +from deepmd_pt.utils.nlist import ( + build_neighbor_list, + extend_coord_with_ghosts, +) +from deepmd_pt.utils.region import ( + normalize_coord, ) def make_model(T_AtomicModel): - class CM(T_AtomicModel): - def __init__( self, *args, **kwargs, ): super().__init__( - *args, - **kwargs, + *args, + **kwargs, ) def get_model_output_def(self): - return ModelOutputDef( - self.get_fitting_output_def() - ) + return ModelOutputDef(self.get_fitting_output_def()) # cannot use the name forward. torch script does not work def forward_common( self, coord, atype, - box: Optional[torch.Tensor] = None, + box: Optional[torch.Tensor] = None, do_atomic_virial: bool = False, ) -> Dict[str, torch.Tensor]: """Return total energy of the system. @@ -46,7 +52,9 @@ def forward_common( - natoms: Atom statisics with shape [self.ntypes+2]. - box: Simulation box with shape [nframes, 9]. - atomic_virial: Whether or not compoute the atomic virial. - Returns: + + Returns + ------- - energy: Energy per atom. - force: XYZ force per atom. """ @@ -56,31 +64,36 @@ def forward_common( else: coord_normalized = coord.clone() extended_coord, extended_atype, mapping = extend_coord_with_ghosts( - coord_normalized, atype, box, self.get_rcut()) + coord_normalized, atype, box, self.get_rcut() + ) nlist = build_neighbor_list( - extended_coord, extended_atype, nloc, - self.get_rcut(), self.get_sel(), distinguish_types=self.distinguish_types()) + extended_coord, + extended_atype, + nloc, + self.get_rcut(), + self.get_sel(), + distinguish_types=self.distinguish_types(), + ) extended_coord = extended_coord.reshape(nframes, -1, 3) model_predict_lower = self.forward_common_lower( - extended_coord, - extended_atype, - nlist, - mapping, - do_atomic_virial=do_atomic_virial, + extended_coord, + extended_atype, + nlist, + mapping, + do_atomic_virial=do_atomic_virial, ) model_predict = communicate_extended_output( - model_predict_lower, - self.get_model_output_def(), - mapping, - do_atomic_virial=do_atomic_virial, + model_predict_lower, + self.get_model_output_def(), + mapping, + do_atomic_virial=do_atomic_virial, ) return model_predict - def forward_common_lower( - self, - extended_coord, - extended_atype, + self, + extended_coord, + extended_atype, nlist, mapping: Optional[torch.Tensor] = None, do_atomic_virial: bool = False, @@ -90,33 +103,33 @@ def forward_common_lower( Parameters ---------- extended_coord - coodinates in extended region + coodinates in extended region extended_atype - atomic type in extended region + atomic type in extended region nlist - neighbor list. nf x nloc x nsel + neighbor list. nf x nloc x nsel mapping - mapps the extended indices to local indices + mapps the extended indices to local indices do_atomic_virial - whether do atomic virial + whether do atomic virial - Return - ------ + Returns + ------- result_dict - the result dict, defined by the fitting net output def. + the result dict, defined by the fitting net output def. """ atomic_ret = self.forward_atomic( - extended_coord, - extended_atype, - nlist, - mapping=mapping, + extended_coord, + extended_atype, + nlist, + mapping=mapping, ) model_predict = fit_output_to_model_output( - atomic_ret, - self.get_fitting_output_def(), - extended_coord, - do_atomic_virial=do_atomic_virial, + atomic_ret, + self.get_fitting_output_def(), + extended_coord, + do_atomic_virial=do_atomic_virial, ) return model_predict diff --git a/deepmd_pt/model/model/model.py b/deepmd_pt/model/model/model.py index 2c363549..9883a472 100644 --- a/deepmd_pt/model/model/model.py +++ b/deepmd_pt/model/model/model.py @@ -1,26 +1,39 @@ -import numpy as np -import torch +# SPDX-License-Identifier: LGPL-3.0-or-later import logging import os -from deepmd_pt.utils import env -from deepmd_pt.utils.stat import compute_output_stats, make_stat_input +import numpy as np +import torch + +from deepmd_pt.utils import ( + env, +) +from deepmd_pt.utils.stat import ( + compute_output_stats, +) -class BaseModel(torch.nn.Module): +class BaseModel(torch.nn.Module): def __init__(self): - """Construct a basic model for different tasks. - """ - super(BaseModel, self).__init__() + """Construct a basic model for different tasks.""" + super().__init__() def forward(self, *args, **kwargs): - """Model output. - """ + """Model output.""" raise NotImplementedError - def compute_or_load_stat(self, fitting_param, ntypes, - resuming=False, type_map=None, stat_file_dir=None, stat_file_path=None, sampled=None): - if fitting_param is None: fitting_param = {} + def compute_or_load_stat( + self, + fitting_param, + ntypes, + resuming=False, + type_map=None, + stat_file_dir=None, + stat_file_path=None, + sampled=None, + ): + if fitting_param is None: + fitting_param = {} if not resuming: if sampled is not None: # compute stat for sys in sampled: @@ -30,76 +43,108 @@ def compute_or_load_stat(self, fitting_param, ntypes, else: if sys[key] is not None: sys[key] = sys[key].to(env.DEVICE) - sumr, suma, sumn, sumr2, suma2 = self.descriptor.compute_input_stats(sampled) + sumr, suma, sumn, sumr2, suma2 = self.descriptor.compute_input_stats( + sampled + ) - energy = [item['energy'] for item in sampled] - mixed_type = 'real_natoms_vec' in sampled[0] + energy = [item["energy"] for item in sampled] + mixed_type = "real_natoms_vec" in sampled[0] if mixed_type: - input_natoms = [item['real_natoms_vec'] for item in sampled] + input_natoms = [item["real_natoms_vec"] for item in sampled] else: - input_natoms = [item['natoms'] for item in sampled] + input_natoms = [item["natoms"] for item in sampled] tmp = compute_output_stats(energy, input_natoms) - fitting_param['bias_atom_e'] = tmp[:, 0] + fitting_param["bias_atom_e"] = tmp[:, 0] if stat_file_path is not None: if not os.path.exists(stat_file_dir): os.mkdir(stat_file_dir) if not isinstance(stat_file_path, list): - logging.info(f'Saving stat file to {stat_file_path}') - np.savez_compressed(stat_file_path, - sumr=sumr, suma=suma, sumn=sumn, sumr2=sumr2, suma2=suma2, - bias_atom_e=fitting_param['bias_atom_e'], type_map=type_map) + logging.info(f"Saving stat file to {stat_file_path}") + np.savez_compressed( + stat_file_path, + sumr=sumr, + suma=suma, + sumn=sumn, + sumr2=sumr2, + suma2=suma2, + bias_atom_e=fitting_param["bias_atom_e"], + type_map=type_map, + ) else: for ii, file_path in enumerate(stat_file_path): - logging.info(f'Saving stat file to {file_path}') - np.savez_compressed(file_path, - sumr=sumr[ii], suma=suma[ii], sumn=sumn[ii], sumr2=sumr2[ii], suma2=suma2[ii], - bias_atom_e=fitting_param['bias_atom_e'], - type_map=type_map) + logging.info(f"Saving stat file to {file_path}") + np.savez_compressed( + file_path, + sumr=sumr[ii], + suma=suma[ii], + sumn=sumn[ii], + sumr2=sumr2[ii], + suma2=suma2[ii], + bias_atom_e=fitting_param["bias_atom_e"], + type_map=type_map, + ) else: # load stat target_type_map = type_map if not isinstance(stat_file_path, list): - logging.info(f'Loading stat file from {stat_file_path}') + logging.info(f"Loading stat file from {stat_file_path}") stats = np.load(stat_file_path) stat_type_map = list(stats["type_map"]) - missing_type = [i for i in target_type_map if i not in stat_type_map] - assert not missing_type, \ - f"These type are not in stat file {stat_file_path}: {missing_type}! Please change the stat file path!" + missing_type = [ + i for i in target_type_map if i not in stat_type_map + ] + assert not missing_type, f"These type are not in stat file {stat_file_path}: {missing_type}! Please change the stat file path!" idx_map = [stat_type_map.index(i) for i in target_type_map] if stats["sumr"].size: - sumr, suma, sumn, sumr2, suma2 = stats["sumr"][idx_map], stats["suma"][idx_map], \ - stats["sumn"][idx_map], stats["sumr2"][idx_map], \ - stats["suma2"][idx_map] + sumr, suma, sumn, sumr2, suma2 = ( + stats["sumr"][idx_map], + stats["suma"][idx_map], + stats["sumn"][idx_map], + stats["sumr2"][idx_map], + stats["suma2"][idx_map], + ) else: sumr, suma, sumn, sumr2, suma2 = [], [], [], [], [] - fitting_param['bias_atom_e'] = stats["bias_atom_e"][idx_map] + fitting_param["bias_atom_e"] = stats["bias_atom_e"][idx_map] else: sumr, suma, sumn, sumr2, suma2 = [], [], [], [], [] id_bias_atom_e = None for ii, file_path in enumerate(stat_file_path): - logging.info(f'Loading stat file from {file_path}') + logging.info(f"Loading stat file from {file_path}") stats = np.load(file_path) stat_type_map = list(stats["type_map"]) - missing_type = [i for i in target_type_map if i not in stat_type_map] - assert not missing_type, \ - f"These type are not in stat file {file_path}: {missing_type}! Please change the stat file path!" + missing_type = [ + i for i in target_type_map if i not in stat_type_map + ] + assert not missing_type, f"These type are not in stat file {file_path}: {missing_type}! Please change the stat file path!" idx_map = [stat_type_map.index(i) for i in target_type_map] if stats["sumr"].size: - sumr_tmp, suma_tmp, sumn_tmp, sumr2_tmp, suma2_tmp = stats["sumr"][idx_map], stats["suma"][idx_map], \ - stats["sumn"][idx_map], stats["sumr2"][idx_map], \ - stats["suma2"][idx_map] + sumr_tmp, suma_tmp, sumn_tmp, sumr2_tmp, suma2_tmp = ( + stats["sumr"][idx_map], + stats["suma"][idx_map], + stats["sumn"][idx_map], + stats["sumr2"][idx_map], + stats["suma2"][idx_map], + ) else: - sumr_tmp, suma_tmp, sumn_tmp, sumr2_tmp, suma2_tmp = [], [], [], [], [] + sumr_tmp, suma_tmp, sumn_tmp, sumr2_tmp, suma2_tmp = ( + [], + [], + [], + [], + [], + ) sumr.append(sumr_tmp) suma.append(suma_tmp) sumn.append(sumn_tmp) sumr2.append(sumr2_tmp) suma2.append(suma2_tmp) - fitting_param['bias_atom_e'] = stats["bias_atom_e"][idx_map] + fitting_param["bias_atom_e"] = stats["bias_atom_e"][idx_map] if id_bias_atom_e is None: - id_bias_atom_e = fitting_param['bias_atom_e'] + id_bias_atom_e = fitting_param["bias_atom_e"] else: - assert (id_bias_atom_e == fitting_param['bias_atom_e']).all(), \ - "bias_atom_e in stat files are not consistent!" + assert ( + id_bias_atom_e == fitting_param["bias_atom_e"] + ).all(), "bias_atom_e in stat files are not consistent!" self.descriptor.init_desc_stat(sumr, suma, sumn, sumr2, suma2) else: # resuming for checkpoint; init model params from scratch - fitting_param['bias_atom_e'] = [0.0] * ntypes + fitting_param["bias_atom_e"] = [0.0] * ntypes diff --git a/deepmd_pt/model/model/transform_output.py b/deepmd_pt/model/model/transform_output.py index 5ed310d0..a2a410bd 100644 --- a/deepmd_pt/model/model/transform_output.py +++ b/deepmd_pt/model/model/transform_output.py @@ -1,43 +1,54 @@ -import torch -import numpy as np +# SPDX-License-Identifier: LGPL-3.0-or-later from typing import ( - List, - Optional, - Dict, + Dict, + List, + Optional, ) -from deepmd_utils.model_format import ( - get_reduce_name, - get_deriv_name, - OutputVariableDef, - FittingOutputDef, - ModelOutputDef, +import torch +from deepmd.model_format import ( + FittingOutputDef, + ModelOutputDef, + OutputVariableDef, + get_deriv_name, + get_reduce_name, ) def atomic_virial_corr( - extended_coord: torch.Tensor, + extended_coord: torch.Tensor, atom_energy: torch.Tensor, ): - nall = extended_coord.shape[1] - nloc = atom_energy.shape[1] - coord, _ = torch.split(extended_coord, [nloc, nall-nloc], dim=1) - # no derivative with respect to the loc coord. - coord = coord.detach() - ce = coord * atom_energy - sumce0, sumce1, sumce2 = torch.split(torch.sum(ce, dim=1), [1,1,1], dim=-1) - faked_grad = torch.ones_like(sumce0) - lst = torch.jit.annotate(List[Optional[torch.Tensor]], [faked_grad]) - extended_virial_corr0 = torch.autograd.grad([sumce0], [extended_coord], grad_outputs=lst, create_graph=True)[0] - assert extended_virial_corr0 is not None - extended_virial_corr1 = torch.autograd.grad([sumce1], [extended_coord], grad_outputs=lst, create_graph=True)[0] - assert extended_virial_corr1 is not None - extended_virial_corr2 = torch.autograd.grad([sumce2], [extended_coord], grad_outputs=lst, create_graph=True)[0] - assert extended_virial_corr2 is not None - extended_virial_corr = torch.concat([extended_virial_corr0.unsqueeze(-1), - extended_virial_corr1.unsqueeze(-1), - extended_virial_corr2.unsqueeze(-1)], dim=-1) - return extended_virial_corr + nall = extended_coord.shape[1] + nloc = atom_energy.shape[1] + coord, _ = torch.split(extended_coord, [nloc, nall - nloc], dim=1) + # no derivative with respect to the loc coord. + coord = coord.detach() + ce = coord * atom_energy + sumce0, sumce1, sumce2 = torch.split(torch.sum(ce, dim=1), [1, 1, 1], dim=-1) + faked_grad = torch.ones_like(sumce0) + lst = torch.jit.annotate(List[Optional[torch.Tensor]], [faked_grad]) + extended_virial_corr0 = torch.autograd.grad( + [sumce0], [extended_coord], grad_outputs=lst, create_graph=True + )[0] + assert extended_virial_corr0 is not None + extended_virial_corr1 = torch.autograd.grad( + [sumce1], [extended_coord], grad_outputs=lst, create_graph=True + )[0] + assert extended_virial_corr1 is not None + extended_virial_corr2 = torch.autograd.grad( + [sumce2], [extended_coord], grad_outputs=lst, create_graph=True + )[0] + assert extended_virial_corr2 is not None + extended_virial_corr = torch.concat( + [ + extended_virial_corr0.unsqueeze(-1), + extended_virial_corr1.unsqueeze(-1), + extended_virial_corr2.unsqueeze(-1), + ], + dim=-1, + ) + return extended_virial_corr def task_deriv_one( @@ -46,35 +57,37 @@ def task_deriv_one( extended_coord: torch.Tensor, do_atomic_virial: bool = False, ): - faked_grad = torch.ones_like(energy) - lst = torch.jit.annotate(List[Optional[torch.Tensor]], [faked_grad]) - extended_force = torch.autograd.grad([energy], [extended_coord], grad_outputs=lst, create_graph=True)[0] - assert extended_force is not None - extended_force = -extended_force - extended_virial = extended_force.unsqueeze(-1) @ extended_coord.unsqueeze(-2) - # the correction sums to zero, which does not contribute to global virial - if do_atomic_virial: - extended_virial_corr = atomic_virial_corr(extended_coord, atom_energy) - extended_virial = extended_virial + extended_virial_corr - return extended_force, extended_virial + faked_grad = torch.ones_like(energy) + lst = torch.jit.annotate(List[Optional[torch.Tensor]], [faked_grad]) + extended_force = torch.autograd.grad( + [energy], [extended_coord], grad_outputs=lst, create_graph=True + )[0] + assert extended_force is not None + extended_force = -extended_force + extended_virial = extended_force.unsqueeze(-1) @ extended_coord.unsqueeze(-2) + # the correction sums to zero, which does not contribute to global virial + if do_atomic_virial: + extended_virial_corr = atomic_virial_corr(extended_coord, atom_energy) + extended_virial = extended_virial + extended_virial_corr + return extended_force, extended_virial def get_leading_dims( - vv: torch.Tensor, + vv: torch.Tensor, vdef: OutputVariableDef, ): - """Get the dimensions of nf x nloc. - """ - vshape = vv.shape - return list(vshape[:(len(vshape) - len(vdef.shape))]) + """Get the dimensions of nf x nloc.""" + vshape = vv.shape + return list(vshape[: (len(vshape) - len(vdef.shape))]) + def get_atom_axis( vdef: torch.Tensor, ): - """Get the axis of atoms - """ - atom_axis = -(len(vdef.shape) + 1) - return atom_axis + """Get the axis of atoms.""" + atom_axis = -(len(vdef.shape) + 1) + return atom_axis + def take_deriv( vv: torch.Tensor, @@ -83,105 +96,118 @@ def take_deriv( coord_ext: torch.Tensor, do_atomic_virial: bool = False, ): - size = 1 - for ii in vdef.shape: - size *= ii - vv1 = vv.view(get_leading_dims(vv, vdef) + [size]) - svv1 = svv.view(get_leading_dims(svv, vdef) + [size]) - split_vv1 = torch.split(vv1, [1]*size, dim=-1) - split_svv1 = torch.split(svv1, [1]*size, dim=-1) - split_ff, split_avir = [], [] - for vvi, svvi in zip(split_vv1, split_svv1): - # nf x nloc x 3, nf x nloc x 3 x 3 - ffi, aviri = task_deriv_one(vvi, svvi, coord_ext, do_atomic_virial=do_atomic_virial) - # nf x nloc x 1 x 3, nf x nloc x 1 x 3 x 3 - ffi = ffi.unsqueeze(-2) - aviri = aviri.unsqueeze(-3) - split_ff.append(ffi) - split_avir.append(aviri) - # nf x nloc x v_dim x 3, nf x nloc x v_dim x 3 x 3 - ff = torch.concat(split_ff, dim=-2) - avir = torch.concat(split_avir, dim=-3) - return ff, avir + size = 1 + for ii in vdef.shape: + size *= ii + vv1 = vv.view(list(get_leading_dims(vv, vdef)) + [size]) # noqa: RUF005 + svv1 = svv.view(list(get_leading_dims(svv, vdef)) + [size]) # noqa: RUF005 + split_vv1 = torch.split(vv1, [1] * size, dim=-1) + split_svv1 = torch.split(svv1, [1] * size, dim=-1) + split_ff, split_avir = [], [] + for vvi, svvi in zip(split_vv1, split_svv1): + # nf x nloc x 3, nf x nloc x 3 x 3 + ffi, aviri = task_deriv_one( + vvi, svvi, coord_ext, do_atomic_virial=do_atomic_virial + ) + # nf x nloc x 1 x 3, nf x nloc x 1 x 3 x 3 + ffi = ffi.unsqueeze(-2) + aviri = aviri.unsqueeze(-3) + split_ff.append(ffi) + split_avir.append(aviri) + # nf x nloc x v_dim x 3, nf x nloc x v_dim x 3 x 3 + ff = torch.concat(split_ff, dim=-2) + avir = torch.concat(split_avir, dim=-3) + return ff, avir def fit_output_to_model_output( - fit_ret : Dict[str, torch.Tensor], + fit_ret: Dict[str, torch.Tensor], fit_output_def: FittingOutputDef, coord_ext: torch.Tensor, do_atomic_virial: bool = False, ) -> Dict[str, torch.Tensor]: - """Transform the output of the fitting network to - the model output. - - """ - model_ret = {kk:vv for kk,vv in fit_ret.items()} - for kk, vv in fit_ret.items(): - vdef = fit_output_def[kk] - shap = vdef.shape - atom_axis = -(len(shap) + 1) - if vdef.reduciable: - kk_redu = get_reduce_name(kk) - model_ret[kk_redu] = torch.sum(vv, dim=atom_axis) - if vdef.differentiable: - kk_derv_r, kk_derv_c = get_deriv_name(kk) - dr, dc = take_deriv( - vv, model_ret[kk_redu], vdef, coord_ext, do_atomic_virial=do_atomic_virial) - model_ret[kk_derv_r] = dr - model_ret[kk_derv_c] = dc - return model_ret + """Transform the output of the fitting network to + the model output. + + """ + model_ret = dict(fit_ret.items()) + for kk, vv in fit_ret.items(): + vdef = fit_output_def[kk] + shap = vdef.shape + atom_axis = -(len(shap) + 1) + if vdef.reduciable: + kk_redu = get_reduce_name(kk) + model_ret[kk_redu] = torch.sum(vv, dim=atom_axis) + if vdef.differentiable: + kk_derv_r, kk_derv_c = get_deriv_name(kk) + dr, dc = take_deriv( + vv, + model_ret[kk_redu], + vdef, + coord_ext, + do_atomic_virial=do_atomic_virial, + ) + model_ret[kk_derv_r] = dr + model_ret[kk_derv_c] = dc + return model_ret def communicate_extended_output( model_ret: Dict[str, torch.Tensor], model_output_def: ModelOutputDef, - mapping: torch.Tensor, # nf x nloc + mapping: torch.Tensor, # nf x nloc do_atomic_virial: bool = False, ) -> Dict[str, torch.Tensor]: - """Transform the output of the model network defined on - local and ghost (extended) atoms to local atoms. - - """ - new_ret = {} - for kk in model_output_def.keys_outp(): - vv = model_ret[kk] - vdef = model_output_def[kk] - new_ret[kk] = vv - if vdef.reduciable: - kk_redu = get_reduce_name(kk) - new_ret[kk_redu] = model_ret[kk_redu] - if vdef.differentiable: - # nf x nloc - vldims = get_leading_dims(vv, vdef) - # nf x nall - mldims = list(mapping.shape) - kk_derv_r, kk_derv_c = get_deriv_name(kk) - # vdim x 3 - derv_r_ext_dims = vdef.shape + [3] - mapping = mapping\ - .view(mldims + [1] * len(derv_r_ext_dims))\ - .expand([-1]*len(mldims) + derv_r_ext_dims) - force = torch.zeros(vldims + derv_r_ext_dims, dtype=vv.dtype, device=vv.device) - # nf x nloc x 1 x 3 - new_ret[kk_derv_r] = torch.scatter_reduce( - force, 1, - index=mapping, - src=model_ret[kk_derv_r], - reduce='sum', - ) - mapping = mapping\ - .unsqueeze(-1)\ - .expand([-1]*(len(mldims) + len(derv_r_ext_dims)) + [3]) - virial = torch.zeros(vldims + derv_r_ext_dims + [3], dtype=vv.dtype, device=vv.device) - # nf x nloc x 1 x 3 - new_ret[kk_derv_c] = torch.scatter_reduce( - virial, 1, - index=mapping, - src=model_ret[kk_derv_c], - reduce='sum', - ) - new_ret[kk_derv_c+'_redu'] = torch.sum(new_ret[kk_derv_c], dim=1) - if not do_atomic_virial: - # pop atomic virial, because it is not correctly calculated. - new_ret.pop(kk_derv_c) - return new_ret + """Transform the output of the model network defined on + local and ghost (extended) atoms to local atoms. + + """ + new_ret = {} + for kk in model_output_def.keys_outp(): + vv = model_ret[kk] + vdef = model_output_def[kk] + new_ret[kk] = vv + if vdef.reduciable: + kk_redu = get_reduce_name(kk) + new_ret[kk_redu] = model_ret[kk_redu] + if vdef.differentiable: + # nf x nloc + vldims = get_leading_dims(vv, vdef) + # nf x nall + mldims = list(mapping.shape) + kk_derv_r, kk_derv_c = get_deriv_name(kk) + # vdim x 3 + derv_r_ext_dims = list(vdef.shape) + [3] # noqa:RUF005 + mapping = mapping.view(mldims + [1] * len(derv_r_ext_dims)).expand( + [-1] * len(mldims) + derv_r_ext_dims + ) + force = torch.zeros( + vldims + derv_r_ext_dims, dtype=vv.dtype, device=vv.device + ) + # nf x nloc x 1 x 3 + new_ret[kk_derv_r] = torch.scatter_reduce( + force, + 1, + index=mapping, + src=model_ret[kk_derv_r], + reduce="sum", + ) + mapping = mapping.unsqueeze(-1).expand( + [-1] * (len(mldims) + len(derv_r_ext_dims)) + [3] + ) + virial = torch.zeros( + vldims + derv_r_ext_dims + [3], dtype=vv.dtype, device=vv.device + ) + # nf x nloc x 1 x 3 + new_ret[kk_derv_c] = torch.scatter_reduce( + virial, + 1, + index=mapping, + src=model_ret[kk_derv_c], + reduce="sum", + ) + new_ret[kk_derv_c + "_redu"] = torch.sum(new_ret[kk_derv_c], dim=1) + if not do_atomic_virial: + # pop atomic virial, because it is not correctly calculated. + new_ret.pop(kk_derv_c) + return new_ret diff --git a/deepmd_pt/model/network/__init__.py b/deepmd_pt/model/network/__init__.py index 6cf34ce8..6ceb116d 100644 --- a/deepmd_pt/model/network/__init__.py +++ b/deepmd_pt/model/network/__init__.py @@ -1 +1 @@ -from .network import * +# SPDX-License-Identifier: LGPL-3.0-or-later diff --git a/deepmd_pt/model/network/mlp.py b/deepmd_pt/model/network/mlp.py index 4b7c6648..95f85297 100644 --- a/deepmd_pt/model/network/mlp.py +++ b/deepmd_pt/model/network/mlp.py @@ -1,31 +1,40 @@ -from typing import ClassVar, Dict, Optional, List, Union -from deepmd_utils.model_format.network import NativeNet +# SPDX-License-Identifier: LGPL-3.0-or-later +from typing import ( + ClassVar, + Dict, + Optional, +) + import numpy as np import torch import torch.nn as nn -from deepmd_pt.utils import env + +from deepmd_pt.utils import ( + env, +) device = env.DEVICE -from deepmd_pt.utils.env import ( - PRECISION_DICT, - DEFAULT_PRECISION, +from deepmd.model_format import ( + NativeLayer, +) +from deepmd.model_format import NetworkCollection as DPNetworkCollection +from deepmd.model_format import ( + make_embedding_network, + make_fitting_network, + make_multilayer_network, ) -from deepmd_utils.model_format import ( - NativeLayer, - NativeNet, - NetworkCollection as DPNetworkCollection, - load_dp_model, - save_dp_model, - make_multilayer_network, - make_embedding_network, - make_fitting_network, +from deepmd_pt.utils.env import ( + DEFAULT_PRECISION, + PRECISION_DICT, +) +from deepmd_pt.utils.utils import ( + ActivationFn, ) -from deepmd_pt.utils.utils import get_activation_fn, ActivationFn try: - from deepmd_utils._version import version as __version__ + from deepmd._version import version as __version__ except ImportError: __version__ = "unknown" @@ -33,160 +42,161 @@ def empty_t(shape, precision): return torch.empty(shape, dtype=precision, device=device) + class MLPLayer(nn.Module): - def __init__( - self, - num_in, - num_out, - bias: bool = True, - use_timestep: bool = False, - activation_function: Optional[str] = None, - resnet: bool = False, - bavg: float = 0., - stddev: float = 1., - precision: str = DEFAULT_PRECISION, - ): - super(MLPLayer, self).__init__() - self.use_timestep = use_timestep - self.activate_name = activation_function - self.activate = ActivationFn(self.activate_name) - self.precision = precision - self.prec = PRECISION_DICT[self.precision] - self.matrix = nn.Parameter( - data=empty_t((num_in, num_out), self.prec) - ) - nn.init.normal_(self.matrix.data, std=stddev / np.sqrt(num_out + num_in)) - if bias: - self.bias = nn.Parameter( - data=empty_t([num_out], self.prec), - ) - nn.init.normal_(self.bias.data, mean=bavg, std=stddev) - else: - self.bias = None - if self.use_timestep: - self.idt = nn.Parameter( - data=empty_t([num_out], self.prec) - ) - nn.init.normal_(self.idt.data, mean=0.1, std=0.001) - else: - self.idt = None - self.resnet = resnet - - - def check_type_consistency(self): - precision = self.precision - - def check_var(var): - if var is not None: - # assertion "float64" == "double" would fail - assert PRECISION_DICT[var.dtype.name] is PRECISION_DICT[precision] - - check_var(self.w) - check_var(self.b) - check_var(self.idt) - - - def dim_in(self) -> int: - return self.matrix.shape[0] - - def dim_out(self) -> int: - return self.matrix.shape[1] - - - def forward( - self, - xx: torch.Tensor, - )->torch.Tensor: - """One MLP layer used by DP model. - - Parameters - ---------- - xx: torch.Tensor - The input. - - Returns - ------- - yy: torch.Tensor - The output. - """ - yy = ( - torch.matmul(xx, self.matrix) + self.bias \ - if self.bias is not None \ - else torch.matmul(xx, self.matrix) - ) - yy = self.activate(yy).clone() - yy = yy * self.idt if self.idt is not None else yy - if self.resnet: - if xx.shape[-1] == yy.shape[-1]: - yy += xx - elif 2 * xx.shape[-1] == yy.shape[-1]: - yy += torch.concat([xx, xx], dim=-1) - else: - yy = yy - return yy - - - def serialize(self) -> dict: - """Serialize the layer to a dict. - - Returns - ------- - dict - The serialized layer. - """ - nl = NativeLayer( - self.matrix.shape[0], - self.matrix.shape[1], - bias=self.bias is not None, - use_timestep=self.idt is not None, - activation_function=self.activate_name, - resnet=self.resnet, - precision=self.precision, - ) - nl.w, nl.b, nl.idt = ( - self.matrix.detach().cpu().numpy(), - self.bias.detach().cpu().numpy() if self.bias is not None else None, - self.idt.detach().cpu().numpy() if self.idt is not None else None, - ) - return nl.serialize() - - @classmethod - def deserialize(cls, data:dict)->"MLPLayer": - """Deserialize the layer from a dict. - - Parameters - ---------- - data : dict - The dict to deserialize from. - """ - nl = NativeLayer.deserialize(data) - obj = cls( - nl["matrix"].shape[0], - nl["matrix"].shape[1], - bias=nl["bias"] is not None, - use_timestep=nl["idt"] is not None, - activation_function=nl["activation_function"], - resnet=nl["resnet"], - precision=nl["precision"], - ) - prec = PRECISION_DICT[obj.precision] - check_load_param = \ - lambda ss: nn.Parameter(data=torch.tensor(nl[ss], dtype=prec, device=device)) \ - if nl[ss] is not None else None - obj.matrix = check_load_param("matrix") - obj.bias = check_load_param("bias") - obj.idt = check_load_param("idt") - return obj + def __init__( + self, + num_in, + num_out, + bias: bool = True, + use_timestep: bool = False, + activation_function: Optional[str] = None, + resnet: bool = False, + bavg: float = 0.0, + stddev: float = 1.0, + precision: str = DEFAULT_PRECISION, + ): + super().__init__() + self.use_timestep = use_timestep + self.activate_name = activation_function + self.activate = ActivationFn(self.activate_name) + self.precision = precision + self.prec = PRECISION_DICT[self.precision] + self.matrix = nn.Parameter(data=empty_t((num_in, num_out), self.prec)) + nn.init.normal_(self.matrix.data, std=stddev / np.sqrt(num_out + num_in)) + if bias: + self.bias = nn.Parameter( + data=empty_t([num_out], self.prec), + ) + nn.init.normal_(self.bias.data, mean=bavg, std=stddev) + else: + self.bias = None + if self.use_timestep: + self.idt = nn.Parameter(data=empty_t([num_out], self.prec)) + nn.init.normal_(self.idt.data, mean=0.1, std=0.001) + else: + self.idt = None + self.resnet = resnet + + def check_type_consistency(self): + precision = self.precision + + def check_var(var): + if var is not None: + # assertion "float64" == "double" would fail + assert PRECISION_DICT[var.dtype.name] is PRECISION_DICT[precision] + + check_var(self.w) + check_var(self.b) + check_var(self.idt) + + def dim_in(self) -> int: + return self.matrix.shape[0] + + def dim_out(self) -> int: + return self.matrix.shape[1] + + def forward( + self, + xx: torch.Tensor, + ) -> torch.Tensor: + """One MLP layer used by DP model. + + Parameters + ---------- + xx : torch.Tensor + The input. + + Returns + ------- + yy: torch.Tensor + The output. + """ + yy = ( + torch.matmul(xx, self.matrix) + self.bias + if self.bias is not None + else torch.matmul(xx, self.matrix) + ) + yy = self.activate(yy).clone() + yy = yy * self.idt if self.idt is not None else yy + if self.resnet: + if xx.shape[-1] == yy.shape[-1]: + yy += xx + elif 2 * xx.shape[-1] == yy.shape[-1]: + yy += torch.concat([xx, xx], dim=-1) + else: + yy = yy + return yy + + def serialize(self) -> dict: + """Serialize the layer to a dict. + + Returns + ------- + dict + The serialized layer. + """ + nl = NativeLayer( + self.matrix.shape[0], + self.matrix.shape[1], + bias=self.bias is not None, + use_timestep=self.idt is not None, + activation_function=self.activate_name, + resnet=self.resnet, + precision=self.precision, + ) + nl.w, nl.b, nl.idt = ( + self.matrix.detach().cpu().numpy(), + self.bias.detach().cpu().numpy() if self.bias is not None else None, + self.idt.detach().cpu().numpy() if self.idt is not None else None, + ) + return nl.serialize() + + @classmethod + def deserialize(cls, data: dict) -> "MLPLayer": + """Deserialize the layer from a dict. + + Parameters + ---------- + data : dict + The dict to deserialize from. + """ + nl = NativeLayer.deserialize(data) + obj = cls( + nl["matrix"].shape[0], + nl["matrix"].shape[1], + bias=nl["bias"] is not None, + use_timestep=nl["idt"] is not None, + activation_function=nl["activation_function"], + resnet=nl["resnet"], + precision=nl["precision"], + ) + prec = PRECISION_DICT[obj.precision] + + def check_load_param(ss): + return ( + nn.Parameter(data=torch.tensor(nl[ss], dtype=prec, device=device)) + if nl[ss] is not None + else None + ) + + obj.matrix = check_load_param("matrix") + obj.bias = check_load_param("bias") + obj.idt = check_load_param("idt") + return obj MLP_ = make_multilayer_network(MLPLayer, nn.Module) + class MLP(MLP_): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.layers = torch.nn.ModuleList(self.layers) + forward = MLP_.call + EmbeddingNet = make_embedding_network(MLP, MLPLayer) FittingNet = make_fitting_network(EmbeddingNet, MLP, MLPLayer) @@ -194,6 +204,7 @@ def __init__(self, *args, **kwargs): class NetworkCollection(DPNetworkCollection, nn.Module): """PyTorch implementation of NetworkCollection.""" + NETWORK_TYPE_MAP: ClassVar[Dict[str, type]] = { "network": MLP, "embedding_network": EmbeddingNet, @@ -201,7 +212,7 @@ class NetworkCollection(DPNetworkCollection, nn.Module): } def __init__(self, *args, **kwargs): - # init both two base classes + # init both two base classes DPNetworkCollection.__init__(self, *args, **kwargs) nn.Module.__init__(self) self.networks = self._networks = torch.nn.ModuleList(self._networks) diff --git a/deepmd_pt/model/network/network.py b/deepmd_pt/model/network/network.py index 99f74b16..d6ff6acc 100644 --- a/deepmd_pt/model/network/network.py +++ b/deepmd_pt/model/network/network.py @@ -1,19 +1,34 @@ -from typing import Optional +# SPDX-License-Identifier: LGPL-3.0-or-later +from typing import ( + Optional, +) + import numpy as np import torch import torch.nn as nn import torch.nn.functional as F -from deepmd_pt.utils import env +from deepmd_pt.utils import ( + env, +) try: - from typing import Final -except: + from typing import ( + Final, + ) +except ImportError: from torch.jit import Final -from deepmd_pt.utils.utils import get_activation_fn, ActivationFn +from functools import ( + partial, +) + import torch.utils.checkpoint -from functools import partial + +from deepmd_pt.utils.utils import ( + ActivationFn, + get_activation_fn, +) def Tensor(*shape): @@ -44,7 +59,7 @@ class DropPath(torch.nn.Module): """Drop paths (Stochastic Depth) per sample (when applied in main path of residual blocks).""" def __init__(self, prob=None): - super(DropPath, self).__init__() + super().__init__() self.drop_prob = prob def forward(self, x): @@ -52,7 +67,7 @@ def forward(self, x): return x keep_prob = 1 - self.drop_prob shape = (x.shape[0],) + (1,) * ( - x.ndim - 1 + x.ndim - 1 ) # work with diff dim tensors, not just 2D ConvNets random_tensor = keep_prob + torch.rand(shape, dtype=x.dtype, device=x.device) random_tensor.floor_() # binarize @@ -63,7 +78,9 @@ def extra_repr(self) -> str: return f"prob={self.drop_prob}" -def softmax_dropout(input_x, dropout_prob, is_training=True, mask=None, bias=None, inplace=True): +def softmax_dropout( + input_x, dropout_prob, is_training=True, mask=None, bias=None, inplace=True +): input_x = input_x.contiguous() if not inplace: input_x = input_x.clone() @@ -107,7 +124,7 @@ def wrap_exec(*a): class ResidualLinear(nn.Module): resnet: Final[int] - def __init__(self, num_in, num_out, bavg=0., stddev=1., resnet_dt=False): + def __init__(self, num_in, num_out, bavg=0.0, stddev=1.0, resnet_dt=False): """Construct a residual linear layer. Args: @@ -115,7 +132,7 @@ def __init__(self, num_in, num_out, bavg=0., stddev=1., resnet_dt=False): - num_out: Width of output tensor. - resnet_dt: Using time-step in the ResNet construction. """ - super(ResidualLinear, self).__init__() + super().__init__() self.num_in = num_in self.num_out = num_out self.resnet = resnet_dt @@ -126,7 +143,7 @@ def __init__(self, num_in, num_out, bavg=0., stddev=1., resnet_dt=False): nn.init.normal_(self.bias.data, mean=bavg, std=stddev) if self.resnet: self.idt = nn.Parameter(data=Tensor(1, num_out)) - nn.init.normal_(self.idt.data, mean=1., std=0.001) + nn.init.normal_(self.idt.data, mean=1.0, std=0.001) def forward(self, inputs): """Return X ?+ X*W+b.""" @@ -146,7 +163,16 @@ class TypeFilter(nn.Module): use_tebd: Final[bool] tebd_mode: Final[str] - def __init__(self, offset, length, neuron, return_G=False, tebd_dim=0, use_tebd=False, tebd_mode='concat'): + def __init__( + self, + offset, + length, + neuron, + return_G=False, + tebd_dim=0, + use_tebd=False, + tebd_mode="concat", + ): """Construct a filter on the given element as neighbor. Args: @@ -154,18 +180,20 @@ def __init__(self, offset, length, neuron, return_G=False, tebd_dim=0, use_tebd= - length: Atom count of this element. - neuron: Number of neurons in each hidden layers of the embedding net. """ - super(TypeFilter, self).__init__() + super().__init__() self.offset = offset self.length = length self.tebd_dim = tebd_dim self.use_tebd = use_tebd self.tebd_mode = tebd_mode - supported_tebd_mode = ['concat', 'dot', 'dot_residual_s', 'dot_residual_t'] - assert tebd_mode in supported_tebd_mode, f'Unknown tebd_mode {tebd_mode}! Supported are {supported_tebd_mode}.' - if use_tebd and tebd_mode == 'concat': - self.neuron = [1 + tebd_dim * 2] + neuron + supported_tebd_mode = ["concat", "dot", "dot_residual_s", "dot_residual_t"] + assert ( + tebd_mode in supported_tebd_mode + ), f"Unknown tebd_mode {tebd_mode}! Supported are {supported_tebd_mode}." + if use_tebd and tebd_mode == "concat": + self.neuron = [1 + tebd_dim * 2, *neuron] else: - self.neuron = [1] + neuron + self.neuron = [1, *neuron] deep_layers = [] for ii in range(1, len(self.neuron)): @@ -174,8 +202,8 @@ def __init__(self, offset, length, neuron, return_G=False, tebd_dim=0, use_tebd= self.deep_layers = nn.ModuleList(deep_layers) deep_layers_t = [] - if use_tebd and tebd_mode in ['dot', 'dot_residual_s', 'dot_residual_t']: - self.neuron_t = [tebd_dim * 2] + neuron + if use_tebd and tebd_mode in ["dot", "dot_residual_s", "dot_residual_t"]: + self.neuron_t = [tebd_dim * 2, *neuron] for ii in range(1, len(self.neuron_t)): one = ResidualLinear(self.neuron_t[ii - 1], self.neuron_t[ii]) deep_layers_t.append(one) @@ -183,21 +211,29 @@ def __init__(self, offset, length, neuron, return_G=False, tebd_dim=0, use_tebd= self.return_G = return_G - def forward(self, inputs, atype_tebd: Optional[torch.Tensor]=None, nlist_tebd: Optional[torch.Tensor]=None): + def forward( + self, + inputs, + atype_tebd: Optional[torch.Tensor] = None, + nlist_tebd: Optional[torch.Tensor] = None, + ): """Calculate decoded embedding for each atom. Args: - inputs: Descriptor matrix. Its shape is [nframes*natoms[0], len_descriptor]. - Returns: + Returns + ------- - `torch.Tensor`: Embedding contributed by me. Its shape is [nframes*natoms[0], 4, self.neuron[-1]]. """ - inputs_i = inputs[:, self.offset * 4:(self.offset + self.length) * 4] - inputs_reshape = inputs_i.reshape(-1, 4) # shape is [nframes*natoms[0]*self.length, 4] + inputs_i = inputs[:, self.offset * 4 : (self.offset + self.length) * 4] + inputs_reshape = inputs_i.reshape( + -1, 4 + ) # shape is [nframes*natoms[0]*self.length, 4] xyz_scatter = inputs_reshape[:, 0:1] # concat the tebd as input - if self.use_tebd and self.tebd_mode == 'concat': + if self.use_tebd and self.tebd_mode == "concat": assert nlist_tebd is not None and atype_tebd is not None nlist_tebd = nlist_tebd.reshape(-1, self.tebd_dim) atype_tebd = atype_tebd.reshape(-1, self.tebd_dim) @@ -209,7 +245,11 @@ def forward(self, inputs, atype_tebd: Optional[torch.Tensor]=None, nlist_tebd: O # [nframes * nloc * nnei, out_size] # dot the tebd output - if self.use_tebd and self.tebd_mode in ['dot', 'dot_residual_s', 'dot_residual_t']: + if self.use_tebd and self.tebd_mode in [ + "dot", + "dot_residual_s", + "dot_residual_t", + ]: assert nlist_tebd is not None and atype_tebd is not None nlist_tebd = nlist_tebd.reshape(-1, self.tebd_dim) atype_tebd = atype_tebd.reshape(-1, self.tebd_dim) @@ -218,15 +258,16 @@ def forward(self, inputs, atype_tebd: Optional[torch.Tensor]=None, nlist_tebd: O for linear in self.deep_layers_t: two_side_tebd = linear(two_side_tebd) # [nframes * nloc * nnei, out_size] - if self.tebd_mode == 'dot': + if self.tebd_mode == "dot": xyz_scatter = xyz_scatter * two_side_tebd - elif self.tebd_mode == 'dot_residual_s': + elif self.tebd_mode == "dot_residual_s": xyz_scatter = xyz_scatter * two_side_tebd + xyz_scatter - elif self.tebd_mode == 'dot_residual_t': + elif self.tebd_mode == "dot_residual_t": xyz_scatter = xyz_scatter * two_side_tebd + two_side_tebd - xyz_scatter = xyz_scatter.view(-1, self.length, - self.neuron[-1]) # shape is [nframes*natoms[0], self.length, self.neuron[-1]] + xyz_scatter = xyz_scatter.view( + -1, self.length, self.neuron[-1] + ) # shape is [nframes*natoms[0], self.length, self.neuron[-1]] if self.return_G: return xyz_scatter else: @@ -238,15 +279,16 @@ def forward(self, inputs, atype_tebd: Optional[torch.Tensor]=None, nlist_tebd: O class SimpleLinear(nn.Module): use_timestep: Final[bool] - def __init__(self, - num_in, - num_out, - bavg=0., - stddev=1., - use_timestep=False, - activate=None, - bias: bool = True, - ): + def __init__( + self, + num_in, + num_out, + bavg=0.0, + stddev=1.0, + use_timestep=False, + activate=None, + bias: bool = True, + ): """Construct a linear layer. Args: @@ -255,7 +297,7 @@ def __init__(self, - use_timestep: Apply time-step to weight. - activate: type of activate func. """ - super(SimpleLinear, self).__init__() + super().__init__() self.num_in = num_in self.num_out = num_out self.use_timestep = use_timestep @@ -264,16 +306,16 @@ def __init__(self, self.matrix = nn.Parameter(data=Tensor(num_in, num_out)) nn.init.normal_(self.matrix.data, std=stddev / np.sqrt(num_out + num_in)) if bias: - self.bias = nn.Parameter(data=Tensor(1, num_out)) - nn.init.normal_(self.bias.data, mean=bavg, std=stddev) + self.bias = nn.Parameter(data=Tensor(1, num_out)) + nn.init.normal_(self.bias.data, mean=bavg, std=stddev) else: - self.bias = None + self.bias = None if self.use_timestep: self.idt = nn.Parameter(data=Tensor(1, num_out)) nn.init.normal_(self.idt.data, mean=0.1, std=0.001) def forward(self, inputs): - """Return X*W+b.""" + """Return X*W+b.""" xw = torch.matmul(inputs, self.matrix) hidden = xw + self.bias if self.bias is not None else xw hidden = self.activate(hidden) @@ -284,13 +326,13 @@ def forward(self, inputs): class Linear(nn.Linear): def __init__( - self, - d_in: int, - d_out: int, - bias: bool = True, - init: str = "default", + self, + d_in: int, + d_out: int, + bias: bool = True, + init: str = "default", ): - super(Linear, self).__init__(d_in, d_out, bias=bias, dtype=env.GLOBAL_PT_FLOAT_PRECISION) + super().__init__(d_in, d_out, bias=bias, dtype=env.GLOBAL_PT_FLOAT_PRECISION) self.use_bias = bias @@ -318,7 +360,7 @@ def _trunc_normal_init(self, scale=1.0): TRUNCATED_NORMAL_STDDEV_FACTOR = 0.87962566103423978 _, fan_in = self.weight.shape scale = scale / max(1, fan_in) - std = (scale ** 0.5) / TRUNCATED_NORMAL_STDDEV_FACTOR + std = (scale**0.5) / TRUNCATED_NORMAL_STDDEV_FACTOR nn.init.trunc_normal_(self.weight, mean=0.0, std=std) def _glorot_uniform_init(self): @@ -337,8 +379,7 @@ def _normal_init(self): class Transition(nn.Module): def __init__(self, d_in, n, dropout=0.0): - - super(Transition, self).__init__() + super().__init__() self.d_in = d_in self.n = n @@ -359,20 +400,19 @@ def forward( self, x: torch.Tensor, ) -> torch.Tensor: - x = self._transition(x=x) return x class Embedding(nn.Embedding): def __init__( - self, - num_embeddings: int, - embedding_dim: int, - padding_idx: int = None, - dtype=torch.float64, + self, + num_embeddings: int, + embedding_dim: int, + padding_idx: Optional[int] = None, + dtype=torch.float64, ): - super(Embedding, self).__init__( + super().__init__( num_embeddings, embedding_dim, padding_idx=padding_idx, dtype=dtype ) self._normal_init() @@ -385,12 +425,8 @@ def _normal_init(self, std=0.02): class NonLinearHead(nn.Module): - def __init__(self, - input_dim, - out_dim, - activation_fn, - hidden=None): - super(NonLinearHead, self).__init__() + def __init__(self, input_dim, out_dim, activation_fn, hidden=None): + super().__init__() hidden = input_dim if not hidden else hidden self.linear1 = SimpleLinear(input_dim, hidden, activate=activation_fn) self.linear2 = SimpleLinear(hidden, out_dim) @@ -403,7 +439,7 @@ def forward(self, x): class NonLinear(nn.Module): def __init__(self, input, output_size, hidden=None): - super(NonLinear, self).__init__() + super().__init__() if hidden is None: hidden = input @@ -432,11 +468,15 @@ def __init__(self, embed_dim, output_dim, activation_fn, weight=None): self.layer_norm = nn.LayerNorm(embed_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION) if weight is None: - weight = nn.Linear(embed_dim, output_dim, bias=False, dtype=env.GLOBAL_PT_FLOAT_PRECISION).weight + weight = nn.Linear( + embed_dim, output_dim, bias=False, dtype=env.GLOBAL_PT_FLOAT_PRECISION + ).weight self.weight = weight - self.bias = nn.Parameter(torch.zeros(output_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION)) + self.bias = nn.Parameter( + torch.zeros(output_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION) + ) - def forward(self, features, masked_tokens: Optional[torch.Tensor]=None, **kwargs): + def forward(self, features, masked_tokens: Optional[torch.Tensor] = None, **kwargs): # Only project the masked tokens while training, # saves both memory and computation if masked_tokens is not None: @@ -451,8 +491,9 @@ def forward(self, features, masked_tokens: Optional[torch.Tensor]=None, **kwargs class ResidualDeep(nn.Module): - - def __init__(self, type_id, embedding_width, neuron, bias_atom_e, out_dim=1, resnet_dt=False): + def __init__( + self, type_id, embedding_width, neuron, bias_atom_e, out_dim=1, resnet_dt=False + ): """Construct a filter on the given element as neighbor. Args: @@ -461,9 +502,9 @@ def __init__(self, type_id, embedding_width, neuron, bias_atom_e, out_dim=1, res - neuron: Number of neurons in each hidden layers of the embedding net. - resnet_dt: Using time-step in the ResNet construction. """ - super(ResidualDeep, self).__init__() + super().__init__() self.type_id = type_id - self.neuron = [embedding_width] + neuron + self.neuron = [embedding_width, *neuron] self.out_dim = out_dim deep_layers = [] @@ -471,7 +512,9 @@ def __init__(self, type_id, embedding_width, neuron, bias_atom_e, out_dim=1, res one = SimpleLinear( num_in=self.neuron[ii - 1], num_out=self.neuron[ii], - use_timestep=(resnet_dt and ii > 1 and self.neuron[ii - 1] == self.neuron[ii]), + use_timestep=( + resnet_dt and ii > 1 and self.neuron[ii - 1] == self.neuron[ii] + ), activate="tanh", ) deep_layers.append(one) @@ -486,7 +529,8 @@ def forward(self, inputs): Args: - inputs: Embedding net output per atom. Its shape is [nframes*nloc, self.embedding_width]. - Returns: + Returns + ------- - `torch.Tensor`: Output layer with shape [nframes*nloc, self.neuron[-1]]. """ outputs = inputs @@ -500,29 +544,33 @@ def forward(self, inputs): class TypeEmbedNet(nn.Module): - def __init__(self, type_nums, embed_dim, bavg=0.0, stddev=1.0): - """Construct a type embedding net. - """ - super(TypeEmbedNet, self).__init__() - self.embedding = nn.Embedding(type_nums + 1, embed_dim, padding_idx=type_nums, - dtype=env.GLOBAL_PT_FLOAT_PRECISION) + """Construct a type embedding net.""" + super().__init__() + self.embedding = nn.Embedding( + type_nums + 1, + embed_dim, + padding_idx=type_nums, + dtype=env.GLOBAL_PT_FLOAT_PRECISION, + ) # nn.init.normal_(self.embedding.weight[:-1], mean=bavg, std=stddev) def forward(self, atype): """ - Args: - atype: Type of each input, [nframes, nloc] or [nframes, nloc, nnei] + atype: Type of each input, [nframes, nloc] or [nframes, nloc, nnei]. - Returns: - type_embedding: + Returns + ------- + type_embedding: """ return self.embedding(atype) def share_params(self, base_class, shared_level, resume=False): - assert self.__class__ == base_class.__class__, "Only TypeEmbedNet of the same type can share params!" + assert ( + self.__class__ == base_class.__class__ + ), "Only TypeEmbedNet of the same type can share params!" if shared_level == 0: # the following will successfully link all the params except buffers, which need manually link. for item in self._modules: @@ -548,8 +596,12 @@ def __init__(self, K=128, num_pair=512, std_width=1.0, start=0.0, stop=9.0): mean = torch.linspace(start, stop, K, dtype=env.GLOBAL_PT_FLOAT_PRECISION) self.std = (std_width * (mean[1] - mean[0])).item() self.register_buffer("mean", mean) - self.mul = Embedding(num_pair + 1, 1, padding_idx=num_pair, dtype=env.GLOBAL_PT_FLOAT_PRECISION) - self.bias = Embedding(num_pair + 1, 1, padding_idx=num_pair, dtype=env.GLOBAL_PT_FLOAT_PRECISION) + self.mul = Embedding( + num_pair + 1, 1, padding_idx=num_pair, dtype=env.GLOBAL_PT_FLOAT_PRECISION + ) + self.bias = Embedding( + num_pair + 1, 1, padding_idx=num_pair, dtype=env.GLOBAL_PT_FLOAT_PRECISION + ) nn.init.constant_(self.bias.weight, 0) nn.init.constant_(self.mul.weight, 1.0) @@ -564,7 +616,17 @@ def forward(self, x, atom_pair): class GaussianEmbedding(nn.Module): - def __init__(self, rcut, kernel_num, num_pair, embed_dim, pair_embed_dim, sel, ntypes, atomic_sum_gbf): + def __init__( + self, + rcut, + kernel_num, + num_pair, + embed_dim, + pair_embed_dim, + sel, + ntypes, + atomic_sum_gbf, + ): """Construct a gaussian kernel based embedding of pair representation. Args: @@ -576,7 +638,7 @@ def __init__(self, rcut, kernel_num, num_pair, embed_dim, pair_embed_dim, sel, n sel: Number of neighbors. ntypes: Number of atom types. """ - super(GaussianEmbedding, self).__init__() + super().__init__() self.gbf = GaussianKernel(K=kernel_num, num_pair=num_pair, stop=rcut) self.gbf_proj = NonLinear(kernel_num, pair_embed_dim) self.embed_dim = embed_dim @@ -584,7 +646,9 @@ def __init__(self, rcut, kernel_num, num_pair, embed_dim, pair_embed_dim, sel, n self.atomic_sum_gbf = atomic_sum_gbf if self.atomic_sum_gbf: if kernel_num != self.embed_dim: - self.edge_proj = torch.nn.Linear(kernel_num, self.embed_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION) + self.edge_proj = torch.nn.Linear( + kernel_num, self.embed_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION + ) else: self.edge_proj = None self.ntypes = ntypes @@ -599,10 +663,11 @@ def forward(self, coord_selected, atom_feature, edge_type_2dim, edge_feature): edge_type_2dim: Edge index for gbf calculation with shape [nframes*nloc, natoms, natoms, 2]. edge_feature: Previous calculated edge features with shape [nframes*nloc, natoms, natoms, pair_dim]. - Returns: - atom_feature: Updated atomic features with shape [nframes*nloc, natoms, embed_dim]. - attn_bias: Updated edge features as attention bias with shape [nframes*nloc, natoms, natoms, pair_dim]. - delta_pos: Delta position for force/vector prediction with shape [nframes*nloc, natoms, natoms, 3]. + Returns + ------- + atom_feature: Updated atomic features with shape [nframes*nloc, natoms, embed_dim]. + attn_bias: Updated edge features as attention bias with shape [nframes*nloc, natoms, natoms, pair_dim]. + delta_pos: Delta position for force/vector prediction with shape [nframes*nloc, natoms, natoms, 3]. """ ncluster, natoms, _ = coord_selected.shape # ncluster x natoms x natoms x 3 @@ -628,42 +693,63 @@ def forward(self, coord_selected, atom_feature, edge_type_2dim, edge_feature): class NeighborWiseAttention(nn.Module): - def __init__(self, layer_num, nnei, embed_dim, hidden_dim, dotr=False, do_mask=False, post_ln=True, - ffn=False, ffn_embed_dim=1024, activation="tanh", scaling_factor=1.0, - head_num=1, normalize=True, temperature=None): - """Construct a neighbor-wise attention net. - """ - super(NeighborWiseAttention, self).__init__() + def __init__( + self, + layer_num, + nnei, + embed_dim, + hidden_dim, + dotr=False, + do_mask=False, + post_ln=True, + ffn=False, + ffn_embed_dim=1024, + activation="tanh", + scaling_factor=1.0, + head_num=1, + normalize=True, + temperature=None, + ): + """Construct a neighbor-wise attention net.""" + super().__init__() self.layer_num = layer_num attention_layers = [] for i in range(self.layer_num): - attention_layers.append(NeighborWiseAttentionLayer(nnei, embed_dim, hidden_dim, - dotr=dotr, do_mask=do_mask, - post_ln=post_ln, ffn=ffn, - ffn_embed_dim=ffn_embed_dim, - activation=activation, - scaling_factor=scaling_factor, - head_num=head_num, - normalize=normalize, - temperature=temperature)) + attention_layers.append( + NeighborWiseAttentionLayer( + nnei, + embed_dim, + hidden_dim, + dotr=dotr, + do_mask=do_mask, + post_ln=post_ln, + ffn=ffn, + ffn_embed_dim=ffn_embed_dim, + activation=activation, + scaling_factor=scaling_factor, + head_num=head_num, + normalize=normalize, + temperature=temperature, + ) + ) self.attention_layers = nn.ModuleList(attention_layers) def forward( - self, + self, input_G, nei_mask, - input_r: Optional[torch.Tensor]=None, - sw: Optional[torch.Tensor]=None, + input_r: Optional[torch.Tensor] = None, + sw: Optional[torch.Tensor] = None, ): """ - Args: - input_G: Input G, [nframes * nloc, nnei, embed_dim] - nei_mask: neighbor mask, [nframes * nloc, nnei] - input_r: normalized radial, [nframes, nloc, nei, 3] + input_G: Input G, [nframes * nloc, nnei, embed_dim]. + nei_mask: neighbor mask, [nframes * nloc, nnei]. + input_r: normalized radial, [nframes, nloc, nei, 3]. - Returns: - out: Output G, [nframes * nloc, nnei, embed_dim] + Returns + ------- + out: Output G, [nframes * nloc, nnei, embed_dim] """ out = input_G @@ -676,12 +762,24 @@ def forward( class NeighborWiseAttentionLayer(nn.Module): ffn: Final[bool] - def __init__(self, nnei, embed_dim, hidden_dim, dotr=False, do_mask=False, post_ln=True, - ffn=False, ffn_embed_dim=1024, activation="tanh", scaling_factor=1.0, - head_num=1, normalize=True, temperature=None): - """Construct a neighbor-wise attention layer. - """ - super(NeighborWiseAttentionLayer, self).__init__() + def __init__( + self, + nnei, + embed_dim, + hidden_dim, + dotr=False, + do_mask=False, + post_ln=True, + ffn=False, + ffn_embed_dim=1024, + activation="tanh", + scaling_factor=1.0, + head_num=1, + normalize=True, + temperature=None, + ): + """Construct a neighbor-wise attention layer.""" + super().__init__() self.nnei = nnei self.embed_dim = embed_dim self.hidden_dim = hidden_dim @@ -689,23 +787,39 @@ def __init__(self, nnei, embed_dim, hidden_dim, dotr=False, do_mask=False, post_ self.do_mask = do_mask self.post_ln = post_ln self.ffn = ffn - self.attention_layer = GatedSelfAttetion(nnei, embed_dim, hidden_dim, dotr=dotr, do_mask=do_mask, - scaling_factor=scaling_factor, head_num=head_num, normalize=normalize, - temperature=temperature) - self.attn_layer_norm = nn.LayerNorm(self.embed_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION) + self.attention_layer = GatedSelfAttetion( + nnei, + embed_dim, + hidden_dim, + dotr=dotr, + do_mask=do_mask, + scaling_factor=scaling_factor, + head_num=head_num, + normalize=normalize, + temperature=temperature, + ) + self.attn_layer_norm = nn.LayerNorm( + self.embed_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION + ) if self.ffn: self.ffn_embed_dim = ffn_embed_dim - self.fc1 = nn.Linear(self.embed_dim, self.ffn_embed_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION) + self.fc1 = nn.Linear( + self.embed_dim, self.ffn_embed_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION + ) self.activation_fn = get_activation_fn(activation) - self.fc2 = nn.Linear(self.ffn_embed_dim, self.embed_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION) - self.final_layer_norm = nn.LayerNorm(self.embed_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION) + self.fc2 = nn.Linear( + self.ffn_embed_dim, self.embed_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION + ) + self.final_layer_norm = nn.LayerNorm( + self.embed_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION + ) def forward( self, x, nei_mask, - input_r: Optional[torch.Tensor]=None, - sw: Optional[torch.Tensor]=None, + input_r: Optional[torch.Tensor] = None, + sw: Optional[torch.Tensor] = None, ): residual = x if not self.post_ln: @@ -728,11 +842,22 @@ def forward( class GatedSelfAttetion(nn.Module): - def __init__(self, nnei, embed_dim, hidden_dim, dotr=False, do_mask=False, scaling_factor=1.0, - head_num=1, normalize=True, temperature=None, bias=True, smooth=True): - """Construct a neighbor-wise attention net. - """ - super(GatedSelfAttetion, self).__init__() + def __init__( + self, + nnei, + embed_dim, + hidden_dim, + dotr=False, + do_mask=False, + scaling_factor=1.0, + head_num=1, + normalize=True, + temperature=None, + bias=True, + smooth=True, + ): + """Construct a neighbor-wise attention net.""" + super().__init__() self.nnei = nnei self.embed_dim = embed_dim self.hidden_dim = hidden_dim @@ -744,27 +869,36 @@ def __init__(self, nnei, embed_dim, hidden_dim, dotr=False, do_mask=False, scali else: self.scaling = temperature self.normalize = normalize - self.in_proj = SimpleLinear(embed_dim, hidden_dim * 3, bavg=0., stddev=1., use_timestep=False, bias=bias) - self.out_proj = SimpleLinear(hidden_dim, embed_dim, bavg=0., stddev=1., use_timestep=False, bias=bias) + self.in_proj = SimpleLinear( + embed_dim, + hidden_dim * 3, + bavg=0.0, + stddev=1.0, + use_timestep=False, + bias=bias, + ) + self.out_proj = SimpleLinear( + hidden_dim, embed_dim, bavg=0.0, stddev=1.0, use_timestep=False, bias=bias + ) self.smooth = smooth def forward( self, query, nei_mask, - input_r: Optional[torch.Tensor]=None, - sw: Optional[torch.Tensor]=None, + input_r: Optional[torch.Tensor] = None, + sw: Optional[torch.Tensor] = None, attnw_shift: float = 20.0, ): """ - Args: - query: input G, [nframes * nloc, nnei, embed_dim] - nei_mask: neighbor mask, [nframes * nloc, nnei] - input_r: normalized radial, [nframes, nloc, nei, 3] + query: input G, [nframes * nloc, nnei, embed_dim]. + nei_mask: neighbor mask, [nframes * nloc, nnei]. + input_r: normalized radial, [nframes, nloc, nei, 3]. - Returns: - type_embedding: + Returns + ------- + type_embedding: """ q, k, v = self.in_proj(query).chunk(3, dim=-1) @@ -786,14 +920,18 @@ def forward( # [nframes * nloc, nnei] assert sw is not None sw = sw.view([-1, self.nnei]) - attn_weights = (attn_weights + attnw_shift) * sw[:,:,None] * sw[:,None,:] - attnw_shift + attn_weights = (attn_weights + attnw_shift) * sw[:, :, None] * sw[ + :, None, : + ] - attnw_shift else: - attn_weights = attn_weights.masked_fill(~nei_mask.unsqueeze(1), float("-inf")) + attn_weights = attn_weights.masked_fill( + ~nei_mask.unsqueeze(1), float("-inf") + ) attn_weights = F.softmax(attn_weights, dim=-1) - attn_weights = attn_weights.masked_fill(~nei_mask.unsqueeze(-1), float(0.0)) - if self.smooth: + attn_weights = attn_weights.masked_fill(~nei_mask.unsqueeze(-1), 0.0) + if self.smooth: assert sw is not None - attn_weights = attn_weights * sw[:,:,None] * sw[:,None,:] + attn_weights = attn_weights * sw[:, :, None] * sw[:, None, :] if self.dotr: assert input_r is not None, "input_r must be provided when dotr is True!" angular_weight = torch.bmm(input_r, input_r.transpose(1, 2)) @@ -805,29 +943,39 @@ def forward( class LocalSelfMultiheadAttention(nn.Module): def __init__(self, feature_dim, attn_head, scaling_factor=1.0): - super(LocalSelfMultiheadAttention, self).__init__() + super().__init__() self.feature_dim = feature_dim self.attn_head = attn_head self.head_dim = feature_dim // attn_head - assert feature_dim % attn_head == 0, f"feature_dim {feature_dim} must be divided by attn_head {attn_head}!" + assert ( + feature_dim % attn_head == 0 + ), f"feature_dim {feature_dim} must be divided by attn_head {attn_head}!" self.scaling = (self.head_dim * scaling_factor) ** -0.5 self.in_proj = SimpleLinear(self.feature_dim, self.feature_dim * 3) # TODO debug # self.out_proj = SimpleLinear(self.feature_dim, self.feature_dim) - def forward(self, query, attn_bias: Optional[torch.Tensor]=None, nlist_mask: Optional[torch.Tensor]=None, nlist: Optional[torch.Tensor]=None, return_attn=True): + def forward( + self, + query, + attn_bias: Optional[torch.Tensor] = None, + nlist_mask: Optional[torch.Tensor] = None, + nlist: Optional[torch.Tensor] = None, + return_attn=True, + ): nframes, nloc, feature_dim = query.size() _, _, nnei = nlist.size() assert feature_dim == self.feature_dim # [nframes, nloc, feature_dim] q, k, v = self.in_proj(query).chunk(3, dim=-1) # [nframes * attn_head * nloc, 1, head_dim] - q = (q.view(nframes, nloc, self.attn_head, self.head_dim) - .transpose(1, 2) - .contiguous() - .view(nframes * self.attn_head * nloc, 1, self.head_dim) - * self.scaling - ) + q = ( + q.view(nframes, nloc, self.attn_head, self.head_dim) + .transpose(1, 2) + .contiguous() + .view(nframes * self.attn_head * nloc, 1, self.head_dim) + * self.scaling + ) # [nframes, nloc, feature_dim] --> [nframes, nloc + 1, feature_dim] # with nlist [nframes, nloc, nnei] --> [nframes, nloc, nnei, feature_dim] # padding = torch.zeros(feature_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION).to(k.device) @@ -840,36 +988,44 @@ def forward(self, query, attn_bias: Optional[torch.Tensor]=None, nlist_mask: Opt # [nframes, nloc * nnei, feature_dim] v = torch.gather(v, dim=1, index=index) # [nframes * attn_head * nloc, nnei, head_dim] - k = (k.view(nframes, nloc, nnei, self.attn_head, self.head_dim) - .permute(0, 3, 1, 2, 4) - .contiguous() - .view(nframes * self.attn_head * nloc, nnei, self.head_dim)) - v = (v.view(nframes, nloc, nnei, self.attn_head, self.head_dim) - .permute(0, 3, 1, 2, 4) - .contiguous() - .view(nframes * self.attn_head * nloc, nnei, self.head_dim)) + k = ( + k.view(nframes, nloc, nnei, self.attn_head, self.head_dim) + .permute(0, 3, 1, 2, 4) + .contiguous() + .view(nframes * self.attn_head * nloc, nnei, self.head_dim) + ) + v = ( + v.view(nframes, nloc, nnei, self.attn_head, self.head_dim) + .permute(0, 3, 1, 2, 4) + .contiguous() + .view(nframes * self.attn_head * nloc, nnei, self.head_dim) + ) # [nframes * attn_head * nloc, 1, nnei] attn_weights = torch.bmm(q, k.transpose(1, 2)) # maskfill # [nframes, attn_head, nloc, nnei] - attn_weights = (attn_weights.view(nframes, self.attn_head, nloc, nnei) - .masked_fill(~nlist_mask.unsqueeze(1), float("-inf"))) + attn_weights = attn_weights.view( + nframes, self.attn_head, nloc, nnei + ).masked_fill(~nlist_mask.unsqueeze(1), float("-inf")) # add bias if return_attn: attn_weights = attn_weights + attn_bias # softmax # [nframes * attn_head * nloc, 1, nnei] - attn = F.softmax(attn_weights, dim=-1).view(nframes * self.attn_head * nloc, 1, nnei) + attn = F.softmax(attn_weights, dim=-1).view( + nframes * self.attn_head * nloc, 1, nnei + ) # bmm # [nframes * attn_head * nloc, 1, head_dim] o = torch.bmm(attn, v) assert list(o.size()) == [nframes * self.attn_head * nloc, 1, self.head_dim] # [nframes, nloc, feature_dim] - o = (o.view(nframes, self.attn_head, nloc, self.head_dim) - .transpose(1, 2) - .contiguous() - .view(nframes, nloc, self.feature_dim) - ) + o = ( + o.view(nframes, self.attn_head, nloc, self.head_dim) + .transpose(1, 2) + .contiguous() + .view(nframes, nloc, self.feature_dim) + ) # out ## TODO debug: # o = self.out_proj(o) @@ -895,7 +1051,7 @@ def __init__( self.v_proj = Linear(embed_dim, embed_dim, bias=False, init="glorot") self.num_heads = num_head self.head_dim = embed_dim // num_head - self.scaling = self.head_dim ** -0.5 + self.scaling = self.head_dim**-0.5 self.force_proj = Linear(embed_dim, 1, init="final", bias=False) self.linear_bias = Linear(pair_dim, num_head) self.dropout = 0.1 @@ -917,12 +1073,22 @@ def forward( # [ncluster, attn_head, natoms, head_dim] q = ( - self.q_proj(query).view(ncluster, natoms, self.num_heads, -1).transpose(1, 2) + self.q_proj(query) + .view(ncluster, natoms, self.num_heads, -1) + .transpose(1, 2) * self.scaling ) # [ncluster, attn_head, natoms, head_dim] - k = self.k_proj(query).view(ncluster, natoms, self.num_heads, -1).transpose(1, 2) - v = self.v_proj(query).view(ncluster, natoms, self.num_heads, -1).transpose(1, 2) + k = ( + self.k_proj(query) + .view(ncluster, natoms, self.num_heads, -1) + .transpose(1, 2) + ) + v = ( + self.v_proj(query) + .view(ncluster, natoms, self.num_heads, -1) + .transpose(1, 2) + ) # [ncluster, attn_head, natoms, natoms] attn = q @ k.transpose(-1, -2) del q, k @@ -974,14 +1140,18 @@ def forward(self, x): class OuterProduct(nn.Module): def __init__(self, d_atom, d_pair, d_hid=32): - super(OuterProduct, self).__init__() + super().__init__() self.d_atom = d_atom self.d_pair = d_pair self.d_hid = d_hid - self.linear_in = nn.Linear(d_atom, d_hid*2, dtype=env.GLOBAL_PT_FLOAT_PRECISION) - self.linear_out = nn.Linear(d_hid**2, d_pair, dtype=env.GLOBAL_PT_FLOAT_PRECISION) + self.linear_in = nn.Linear( + d_atom, d_hid * 2, dtype=env.GLOBAL_PT_FLOAT_PRECISION + ) + self.linear_out = nn.Linear( + d_hid**2, d_pair, dtype=env.GLOBAL_PT_FLOAT_PRECISION + ) self.act = nn.GELU() def _opm(self, a, b): @@ -1013,16 +1183,16 @@ def forward( class Attention(nn.Module): def __init__( - self, - q_dim: int, - k_dim: int, - v_dim: int, - head_dim: int, - num_heads: int, - gating: bool = False, - dropout: float = 0.0, + self, + q_dim: int, + k_dim: int, + v_dim: int, + head_dim: int, + num_heads: int, + gating: bool = False, + dropout: float = 0.0, ): - super(Attention, self).__init__() + super().__init__() self.num_heads = num_heads self.head_dim = head_dim @@ -1038,16 +1208,16 @@ def __init__( if self.gating: self.linear_g = Linear(q_dim, total_dim, init="gating") # precompute the 1/sqrt(head_dim) - self.norm = head_dim ** -0.5 + self.norm = head_dim**-0.5 self.dropout = dropout def forward( - self, - q: torch.Tensor, - k: torch.Tensor, - v: torch.Tensor, - bias: torch.Tensor, - mask: torch.Tensor = None, + self, + q: torch.Tensor, + k: torch.Tensor, + v: torch.Tensor, + bias: torch.Tensor, + mask: torch.Tensor = None, ) -> torch.Tensor: nframes, nloc, embed_dim = q.size() g = None @@ -1104,17 +1274,17 @@ def forward( class AtomAttention(nn.Module): def __init__( - self, - q_dim: int, - k_dim: int, - v_dim: int, - pair_dim: int, - head_dim: int, - num_heads: int, - gating: bool = False, - dropout: float = 0.0, + self, + q_dim: int, + k_dim: int, + v_dim: int, + pair_dim: int, + head_dim: int, + num_heads: int, + gating: bool = False, + dropout: float = 0.0, ): - super(AtomAttention, self).__init__() + super().__init__() self.mha = Attention( q_dim, k_dim, v_dim, head_dim, num_heads, gating=gating, dropout=dropout @@ -1123,13 +1293,13 @@ def __init__( self.linear_bias = Linear(pair_dim, num_heads) def forward( - self, - q: torch.Tensor, - k: torch.Tensor, - v: torch.Tensor, - nlist: torch.Tensor, - pair: torch.Tensor, - mask: torch.Tensor = None, + self, + q: torch.Tensor, + k: torch.Tensor, + v: torch.Tensor, + nlist: torch.Tensor, + pair: torch.Tensor, + mask: torch.Tensor = None, ) -> torch.Tensor: pair = self.layer_norm(pair) bias = self.linear_bias(pair).permute(0, 3, 1, 2).contiguous() @@ -1138,7 +1308,7 @@ def forward( class TriangleMultiplication(nn.Module): def __init__(self, d_pair, d_hid): - super(TriangleMultiplication, self).__init__() + super().__init__() self.linear_ab_p = Linear(d_pair, d_hid * 2) self.linear_ab_g = Linear(d_pair, d_hid * 2, init="gating") @@ -1153,7 +1323,6 @@ def forward( z: torch.Tensor, mask: Optional[torch.Tensor] = None, ) -> torch.Tensor: - # z : [nframes, nloc, nloc, pair_dim] # [nframes, nloc, nloc, pair_dim] @@ -1193,29 +1362,44 @@ def forward( class EvoformerEncoderLayer(nn.Module): - def __init__(self, - feature_dim: int = 768, - ffn_dim: int = 2048, - attn_head: int = 8, - activation_fn: str = "gelu", - post_ln: bool = False): - super(EvoformerEncoderLayer, self).__init__() + def __init__( + self, + feature_dim: int = 768, + ffn_dim: int = 2048, + attn_head: int = 8, + activation_fn: str = "gelu", + post_ln: bool = False, + ): + super().__init__() self.feature_dim = feature_dim self.ffn_dim = ffn_dim self.attn_head = attn_head - self.activation_fn = get_activation_fn(activation_fn) if activation_fn is not None else None + self.activation_fn = ( + get_activation_fn(activation_fn) if activation_fn is not None else None + ) self.post_ln = post_ln - self.self_attn_layer_norm = nn.LayerNorm(self.feature_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION) + self.self_attn_layer_norm = nn.LayerNorm( + self.feature_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION + ) self.self_attn = LocalSelfMultiheadAttention( self.feature_dim, self.attn_head, ) - self.final_layer_norm = nn.LayerNorm(self.feature_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION) + self.final_layer_norm = nn.LayerNorm( + self.feature_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION + ) self.fc1 = SimpleLinear(self.feature_dim, self.ffn_dim) self.fc2 = SimpleLinear(self.ffn_dim, self.feature_dim) - def forward(self, x, attn_bias: Optional[torch.Tensor]=None, nlist_mask: Optional[torch.Tensor]=None, nlist: Optional[torch.Tensor]=None, return_attn=True): + def forward( + self, + x, + attn_bias: Optional[torch.Tensor] = None, + nlist_mask: Optional[torch.Tensor] = None, + nlist: Optional[torch.Tensor] = None, + return_attn=True, + ): residual = x if not self.post_ln: x = self.self_attn_layer_norm(x) @@ -1249,23 +1433,25 @@ def forward(self, x, attn_bias: Optional[torch.Tensor]=None, nlist_mask: Optiona # output: atomic_rep, transformed_atomic_rep, pair_rep, delta_pair_rep, norm_x, norm_delta_pair_rep, class Evoformer2bEncoder(nn.Module): - def __init__(self, - nnei: int, - layer_num: int = 6, - attn_head: int = 8, - atomic_dim: int = 1024, - pair_dim: int = 100, - feature_dim: int = 1024, - ffn_dim: int = 2048, - post_ln: bool = False, - final_layer_norm: bool = True, - final_head_layer_norm: bool = False, - emb_layer_norm: bool = False, - atomic_residual: bool = False, - evo_residual: bool = False, - residual_factor: float = 1.0, - activation_function: str = "gelu"): - super(Evoformer2bEncoder, self).__init__() + def __init__( + self, + nnei: int, + layer_num: int = 6, + attn_head: int = 8, + atomic_dim: int = 1024, + pair_dim: int = 100, + feature_dim: int = 1024, + ffn_dim: int = 2048, + post_ln: bool = False, + final_layer_norm: bool = True, + final_head_layer_norm: bool = False, + emb_layer_norm: bool = False, + atomic_residual: bool = False, + evo_residual: bool = False, + residual_factor: float = 1.0, + activation_function: str = "gelu", + ): + super().__init__() self.nnei = nnei self.layer_num = layer_num self.attn_head = attn_head @@ -1284,29 +1470,49 @@ def __init__(self, self.atomic_residual = True else: self.atomic_residual = False - self.in_proj = SimpleLinear(self.atomic_dim, self.feature_dim, bavg=0., stddev=1., use_timestep=False, - activate='tanh') # TODO - self.out_proj = SimpleLinear(self.feature_dim, self.atomic_dim, bavg=0., stddev=1., use_timestep=False, - activate='tanh') + self.in_proj = SimpleLinear( + self.atomic_dim, + self.feature_dim, + bavg=0.0, + stddev=1.0, + use_timestep=False, + activate="tanh", + ) # TODO + self.out_proj = SimpleLinear( + self.feature_dim, + self.atomic_dim, + bavg=0.0, + stddev=1.0, + use_timestep=False, + activate="tanh", + ) if self._emb_layer_norm: - self.emb_layer_norm = nn.LayerNorm(self.feature_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION) + self.emb_layer_norm = nn.LayerNorm( + self.feature_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION + ) ## TODO debug : self.in_proj_pair = NonLinearHead(self.pair_dim, self.attn_head, activation_fn=None) self.in_proj_pair = SimpleLinear(self.pair_dim, self.attn_head, activate=None) evoformer_encoder_layers = [] for i in range(self.layer_num): - evoformer_encoder_layers.append(EvoformerEncoderLayer( - feature_dim=self.feature_dim, - ffn_dim=self.ffn_dim, - attn_head=self.attn_head, - activation_fn=self.activation_function, - post_ln=self.post_ln) + evoformer_encoder_layers.append( + EvoformerEncoderLayer( + feature_dim=self.feature_dim, + ffn_dim=self.ffn_dim, + attn_head=self.attn_head, + activation_fn=self.activation_function, + post_ln=self.post_ln, + ) ) self.evoformer_encoder_layers = nn.ModuleList(evoformer_encoder_layers) if self._final_layer_norm: - self.final_layer_norm = nn.LayerNorm(self.feature_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION) + self.final_layer_norm = nn.LayerNorm( + self.feature_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION + ) if self._final_head_layer_norm: - self.final_head_layer_norm = nn.LayerNorm(self.attn_head, dtype=env.GLOBAL_PT_FLOAT_PRECISION) + self.final_head_layer_norm = nn.LayerNorm( + self.attn_head, dtype=env.GLOBAL_PT_FLOAT_PRECISION + ) def forward(self, atomic_rep, pair_rep, nlist, nlist_type, nlist_mask): """Encoder the atomic and pair representations. @@ -1318,7 +1524,8 @@ def forward(self, atomic_rep, pair_rep, nlist, nlist_type, nlist_mask): - nlist_type: Neighbor types with shape [nframes, nloc, nnei]. - nlist_mask: Neighbor mask with shape [nframes, nloc, nnei], `False` if blank. - Returns: + Returns + ------- - atomic_rep: Atomic representation after encoder with shape [nframes, nloc, feature_dim]. - transformed_atomic_rep: Transformed atomic representation after encoder with shape [nframes, nloc, atomic_dim]. - pair_rep: Pair representation after encoder with shape [nframes, nloc, nnei, attn_head]. @@ -1349,19 +1556,23 @@ def forward(self, atomic_rep, pair_rep, nlist, nlist_type, nlist_mask): for i in range(self.layer_num): atomic_rep, pair_rep, _ = self.evoformer_encoder_layers[i]( - atomic_rep, attn_bias=pair_rep, nlist_mask=nlist_mask, nlist=nlist, return_attn=True + atomic_rep, + attn_bias=pair_rep, + nlist_mask=nlist_mask, + nlist=nlist, + return_attn=True, ) def norm_loss(x, eps=1e-10, tolerance=1.0): # x = x.float() max_norm = x.shape[-1] ** 0.5 - norm = torch.sqrt(torch.sum(x ** 2, dim=-1) + eps) + norm = torch.sqrt(torch.sum(x**2, dim=-1) + eps) error = F.relu((norm - max_norm).abs() - tolerance) return error def masked_mean(mask, value, dim=-1, eps=1e-10): return ( - torch.sum(mask * value, dim=dim) / (eps + torch.sum(mask, dim=dim)) + torch.sum(mask * value, dim=dim) / (eps + torch.sum(mask, dim=dim)) ).mean() # atomic_rep shape: [nframes, nloc, feature_dim] @@ -1374,9 +1585,11 @@ def masked_mean(mask, value, dim=-1, eps=1e-10): delta_pair_rep = pair_rep - input_pair_rep delta_pair_rep = delta_pair_rep.masked_fill(~nlist_mask.unsqueeze(1), 0) # [nframes, nloc, nnei, attn_head] - delta_pair_rep = (delta_pair_rep.view(nframes, self.attn_head, nloc, nnei) - .permute(0, 2, 3, 1) - .contiguous()) + delta_pair_rep = ( + delta_pair_rep.view(nframes, self.attn_head, nloc, nnei) + .permute(0, 2, 3, 1) + .contiguous() + ) # [nframes, nloc, nnei] norm_delta_pair_rep = norm_loss(delta_pair_rep) @@ -1390,28 +1603,38 @@ def masked_mean(mask, value, dim=-1, eps=1e-10): transformed_atomic_rep = self.out_proj(atomic_rep) if self.evo_residual: - transformed_atomic_rep = (self.residual_factor * transformed_atomic_rep + input_atomic_rep) * (1/np.sqrt(2)) - - return atomic_rep, transformed_atomic_rep, pair_rep, delta_pair_rep, norm_x, norm_delta_pair_rep + transformed_atomic_rep = ( + self.residual_factor * transformed_atomic_rep + input_atomic_rep + ) * (1 / np.sqrt(2)) + + return ( + atomic_rep, + transformed_atomic_rep, + pair_rep, + delta_pair_rep, + norm_x, + norm_delta_pair_rep, + ) class Evoformer3bEncoderLayer(nn.Module): - def __init__(self, - nnei, - embedding_dim: int = 768, - pair_dim: int = 64, - pair_hidden_dim: int = 32, - ffn_embedding_dim: int = 3072, - num_attention_heads: int = 8, - dropout: float = 0.1, - droppath_prob: float = 0.0, - pair_dropout: float = 0.25, - attention_dropout: float = 0.1, - activation_dropout: float = 0.1, - pre_ln: bool = True, - tri_update: bool = True - ): - super(Evoformer3bEncoderLayer, self).__init__() + def __init__( + self, + nnei, + embedding_dim: int = 768, + pair_dim: int = 64, + pair_hidden_dim: int = 32, + ffn_embedding_dim: int = 3072, + num_attention_heads: int = 8, + dropout: float = 0.1, + droppath_prob: float = 0.0, + pair_dropout: float = 0.25, + attention_dropout: float = 0.1, + activation_dropout: float = 0.1, + pre_ln: bool = True, + tri_update: bool = True, + ): + super().__init__() # Initialize parameters self.nnei = nnei self.embedding_dim = embedding_dim @@ -1429,21 +1652,40 @@ def __init__(self, # self.self_attn = AtomAttentionLocal(embedding_dim, embedding_dim, embedding_dim, pair_dim, # embedding_dim // num_attention_heads, num_attention_heads, # gating=False, dropout=attention_dropout) - self.self_attn = AtomAttention(embedding_dim, embedding_dim, embedding_dim, pair_dim, - embedding_dim // num_attention_heads, num_attention_heads, - gating=False, dropout=attention_dropout) + self.self_attn = AtomAttention( + embedding_dim, + embedding_dim, + embedding_dim, + pair_dim, + embedding_dim // num_attention_heads, + num_attention_heads, + gating=False, + dropout=attention_dropout, + ) # layer norm associated with the self attention layer self.pre_ln = pre_ln - self.self_attn_layer_norm = nn.LayerNorm(self.embedding_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION) - self.fc1 = nn.Linear(self.embedding_dim, ffn_embedding_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION) - self.fc2 = nn.Linear(ffn_embedding_dim, self.embedding_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION) - self.final_layer_norm = nn.LayerNorm(self.embedding_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION) + self.self_attn_layer_norm = nn.LayerNorm( + self.embedding_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION + ) + self.fc1 = nn.Linear( + self.embedding_dim, ffn_embedding_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION + ) + self.fc2 = nn.Linear( + ffn_embedding_dim, self.embedding_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION + ) + self.final_layer_norm = nn.LayerNorm( + self.embedding_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION + ) - self.x_layer_norm_opm = nn.LayerNorm(self.embedding_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION) + self.x_layer_norm_opm = nn.LayerNorm( + self.embedding_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION + ) # self.opm = OuterProductLocal(self.embedding_dim, pair_dim, d_hid=pair_hidden_dim) self.opm = OuterProduct(self.embedding_dim, pair_dim, d_hid=pair_hidden_dim) # self.pair_layer_norm_opm = nn.LayerNorm(pair_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION) - self.pair_layer_norm_ffn = nn.LayerNorm(pair_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION) + self.pair_layer_norm_ffn = nn.LayerNorm( + pair_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION + ) self.pair_ffn = Transition( pair_dim, 1, @@ -1452,7 +1694,9 @@ def __init__(self, self.pair_dropout = pair_dropout self.tri_update = tri_update if self.tri_update: - self.pair_layer_norm_trimul = nn.LayerNorm(pair_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION) + self.pair_layer_norm_trimul = nn.LayerNorm( + pair_dim, dtype=env.GLOBAL_PT_FLOAT_PRECISION + ) self.pair_tri_mul = TriangleMultiplication(pair_dim, pair_hidden_dim) def update_pair( @@ -1467,7 +1711,9 @@ def update_pair( # [nframes, nloc, nnei, pair_dim] # global: # [nframes, nloc, nloc, pair_dim] - pair = pair + self.dropout_module(self.opm(self.x_layer_norm_opm(x), nlist, op_mask, op_norm)) + pair = pair + self.dropout_module( + self.opm(self.x_layer_norm_opm(x), nlist, op_mask, op_norm) + ) if not self.pre_ln: pair = self.pair_layer_norm_opm(pair) return x, pair @@ -1479,15 +1725,16 @@ def shared_dropout(self, x, shared_dim, dropout): mask = x.new_ones(shape) return F.dropout(mask, p=dropout, training=self.training) * x - def forward(self, - x: torch.Tensor, - pair: torch.Tensor, - nlist: torch.Tensor = None, - attn_mask: Optional[torch.Tensor] = None, - pair_mask: Optional[torch.Tensor] = None, - op_mask: float = 1.0, - op_norm: float = 1.0, - ): + def forward( + self, + x: torch.Tensor, + pair: torch.Tensor, + nlist: torch.Tensor = None, + attn_mask: Optional[torch.Tensor] = None, + pair_mask: Optional[torch.Tensor] = None, + op_mask: float = 1.0, + op_norm: float = 1.0, + ): """Encoder the atomic and pair representations. Args: @@ -1496,7 +1743,6 @@ def forward(self, - attn_mask: Attention mask with shape [ncluster, head, natoms, natoms]. - pair_mask: Neighbor mask with shape [ncluster, natoms, natoms]. - Returns: """ # [ncluster, natoms, embed_dim] residual = x @@ -1533,11 +1779,11 @@ def forward(self, block = [ partial( - self.update_pair, - nlist=nlist, - op_mask=op_mask, - op_norm=op_norm, - ) + self.update_pair, + nlist=nlist, + op_mask=op_mask, + op_norm=op_norm, + ) ] x, pair = checkpoint_sequential( @@ -1568,24 +1814,25 @@ def forward(self, class Evoformer3bEncoder(nn.Module): - def __init__(self, - nnei, - layer_num=6, - attn_head=8, - atomic_dim=768, - pair_dim=64, - pair_hidden_dim=32, - ffn_embedding_dim=3072, - dropout: float = 0.1, - droppath_prob: float = 0.0, - pair_dropout: float = 0.25, - attention_dropout: float = 0.1, - activation_dropout: float = 0.1, - pre_ln: bool = True, - tri_update: bool = True, - **kwargs, - ): - super(Evoformer3bEncoder, self).__init__() + def __init__( + self, + nnei, + layer_num=6, + attn_head=8, + atomic_dim=768, + pair_dim=64, + pair_hidden_dim=32, + ffn_embedding_dim=3072, + dropout: float = 0.1, + droppath_prob: float = 0.0, + pair_dropout: float = 0.25, + attention_dropout: float = 0.1, + activation_dropout: float = 0.1, + pre_ln: bool = True, + tri_update: bool = True, + **kwargs, + ): + super().__init__() self.nnei = nnei if droppath_prob > 0: droppath_probs = [ @@ -1596,20 +1843,26 @@ def __init__(self, self.layers = nn.ModuleList( [ - Evoformer3bEncoderLayer(nnei, atomic_dim, pair_dim, pair_hidden_dim, ffn_embedding_dim, - num_attention_heads=attn_head, - dropout=dropout, droppath_prob=droppath_probs[_], pair_dropout=pair_dropout, - attention_dropout=attention_dropout, activation_dropout=activation_dropout, - pre_ln=pre_ln, tri_update=tri_update) + Evoformer3bEncoderLayer( + nnei, + atomic_dim, + pair_dim, + pair_hidden_dim, + ffn_embedding_dim, + num_attention_heads=attn_head, + dropout=dropout, + droppath_prob=droppath_probs[_], + pair_dropout=pair_dropout, + attention_dropout=attention_dropout, + activation_dropout=activation_dropout, + pre_ln=pre_ln, + tri_update=tri_update, + ) for _ in range(layer_num) ] ) - def forward( - self, - x, - pair, attn_mask=None, pair_mask=None, atom_mask=None - ): + def forward(self, x, pair, attn_mask=None, pair_mask=None, atom_mask=None): """Encoder the atomic and pair representations. Args: @@ -1619,9 +1872,10 @@ def forward( pair_mask: Pair mask (with 1 for real atom pair and 0 for padding) with shape [ncluster, natoms, natoms]. atom_mask: Atom mask (with 1 for real atom and 0 for padding) with shape [ncluster, natoms]. - Returns: - x: Atomic representation with shape [ncluster, natoms, atomic_dim]. - pair: Pair representation with shape [ncluster, natoms, natoms, pair_dim]. + Returns + ------- + x: Atomic representation with shape [ncluster, natoms, atomic_dim]. + pair: Pair representation with shape [ncluster, natoms, natoms, pair_dim]. """ # [ncluster, natoms, 1] @@ -1638,6 +1892,6 @@ def forward( attn_mask=attn_mask, pair_mask=pair_mask, op_mask=op_mask, - op_norm=op_norm + op_norm=op_norm, ) return x, pair diff --git a/deepmd_pt/model/task/__init__.py b/deepmd_pt/model/task/__init__.py index 46308580..fcf46632 100644 --- a/deepmd_pt/model/task/__init__.py +++ b/deepmd_pt/model/task/__init__.py @@ -1,7 +1,34 @@ -from .task import TaskBaseMethod -from .fitting import Fitting -from .ener import EnergyFittingNet, EnergyFittingNetDirect -from .denoise import DenoiseNet -from .type_predict import TypePredictNet -from .dipole import DipoleFittingNetType -from .atten_lcc import FittingNetAttenLcc +# SPDX-License-Identifier: LGPL-3.0-or-later +from .atten_lcc import ( + FittingNetAttenLcc, +) +from .denoise import ( + DenoiseNet, +) +from .dipole import ( + DipoleFittingNetType, +) +from .ener import ( + EnergyFittingNet, + EnergyFittingNetDirect, +) +from .fitting import ( + Fitting, +) +from .task import ( + TaskBaseMethod, +) +from .type_predict import ( + TypePredictNet, +) + +__all__ = [ + "FittingNetAttenLcc", + "DenoiseNet", + "DipoleFittingNetType", + "EnergyFittingNet", + "EnergyFittingNetDirect", + "Fitting", + "TaskBaseMethod", + "TypePredictNet", +] diff --git a/deepmd_pt/model/task/atten_lcc.py b/deepmd_pt/model/task/atten_lcc.py index b4d78bac..be7c0a00 100644 --- a/deepmd_pt/model/task/atten_lcc.py +++ b/deepmd_pt/model/task/atten_lcc.py @@ -1,57 +1,38 @@ -import logging -import numpy as np +# SPDX-License-Identifier: LGPL-3.0-or-later import torch import torch.nn as nn -from deepmd_pt.utils import env - -try: - from typing_extensions import Final -except: - from torch.jit import Final - -from deepmd_pt.model.network import EnergyHead, NodeTaskHead -from deepmd_pt.model.task import TaskBaseMethod +from deepmd_pt.model.network.network import ( + EnergyHead, + NodeTaskHead, +) +from deepmd_pt.model.task.task import ( + TaskBaseMethod, +) +from deepmd_pt.utils import ( + env, +) class FittingNetAttenLcc(TaskBaseMethod): - - def __init__(self, embedding_width, bias_atom_e, pair_embed_dim, attention_heads, **kwargs): - """ - - Args: - embedding_width: - bias_atom_e: - pair_embed_dim: - attention_heads: - **kwargs: - """ - super(FittingNetAttenLcc, self).__init__() + def __init__( + self, embedding_width, bias_atom_e, pair_embed_dim, attention_heads, **kwargs + ): + super().__init__() self.embedding_width = embedding_width self.engergy_proj = EnergyHead(self.embedding_width, 1) self.energe_agg_factor = nn.Embedding(4, 1, dtype=env.GLOBAL_PT_FLOAT_PRECISION) nn.init.normal_(self.energe_agg_factor.weight, 0, 0.01) bias_atom_e = torch.tensor(bias_atom_e) - self.register_buffer('bias_atom_e', bias_atom_e) + self.register_buffer("bias_atom_e", bias_atom_e) self.pair_embed_dim = pair_embed_dim self.attention_heads = attention_heads - self.node_proc = NodeTaskHead(self.embedding_width, self.pair_embed_dim, self.attention_heads) + self.node_proc = NodeTaskHead( + self.embedding_width, self.pair_embed_dim, self.attention_heads + ) self.node_proc.zero_init() def forward(self, output, pair, delta_pos, atype, nframes, nloc): - """ - - Args: - output: - pair: - delta_pos: - atype: - nframes: - nloc: - - Returns: - - """ # [nframes x nloc x tebd_dim] output_nloc = (output[:, 0, :]).reshape(nframes, nloc, self.embedding_width) # Optional: GRRG or mean of gbf TODO @@ -60,7 +41,9 @@ def forward(self, output, pair, delta_pos, atype, nframes, nloc): # [nframes, nloc] energy_out = self.engergy_proj(output_nloc).view(nframes, nloc) # [nframes, nloc] - energy_factor = self.energe_agg_factor(torch.zeros_like(atype)).view(nframes, nloc) + energy_factor = self.energe_agg_factor(torch.zeros_like(atype)).view( + nframes, nloc + ) energy_out = (energy_out * energy_factor) + self.bias_atom_e[atype] energy_out = energy_out.sum(dim=-1) @@ -70,5 +53,3 @@ def forward(self, output, pair, delta_pos, atype, nframes, nloc): # predict_force_nloc: [nframes x nloc x 3] predict_force_nloc = (predict_force[:, 0, :]).reshape(nframes, nloc, 3) return energy_out, predict_force_nloc - - diff --git a/deepmd_pt/model/task/denoise.py b/deepmd_pt/model/task/denoise.py index d0b20d07..598b46d3 100644 --- a/deepmd_pt/model/task/denoise.py +++ b/deepmd_pt/model/task/denoise.py @@ -1,34 +1,38 @@ -import logging -from typing import Optional -import numpy as np -import torch - -from deepmd_pt.utils import env -try: - from typing_extensions import Final -except: - from torch.jit import Final +# SPDX-License-Identifier: LGPL-3.0-or-later +from typing import ( + Optional, +) -from deepmd_pt.model.network import NonLinearHead, MaskLMHead -from deepmd_pt.model.task import TaskBaseMethod +import torch +from deepmd.model_format import ( + FittingOutputDef, + OutputVariableDef, + fitting_check_output, +) -from deepmd_utils.model_format import ( - FittingOutputDef, - OutputVariableDef, - fitting_check_output, +from deepmd_pt.model.network.network import ( + MaskLMHead, + NonLinearHead, +) +from deepmd_pt.model.task.task import ( + TaskBaseMethod, +) +from deepmd_pt.utils import ( + env, ) @fitting_check_output class DenoiseNet(TaskBaseMethod): - - def __init__(self, - feature_dim, - ntypes, - attn_head=8, - prefactor=[0.5,0.5], - activation_function="gelu", - **kwargs): + def __init__( + self, + feature_dim, + ntypes, + attn_head=8, + prefactor=[0.5, 0.5], + activation_function="gelu", + **kwargs, + ): """Construct a denoise net. Args: @@ -42,34 +46,52 @@ def __init__(self, self.feature_dim = feature_dim self.ntypes = ntypes self.attn_head = attn_head - self.prefactor = torch.tensor(prefactor,dtype=env.GLOBAL_PT_FLOAT_PRECISION, device=env.DEVICE) + self.prefactor = torch.tensor( + prefactor, dtype=env.GLOBAL_PT_FLOAT_PRECISION, device=env.DEVICE + ) self.lm_head = MaskLMHead( - embed_dim=self.feature_dim, - output_dim=ntypes, - activation_fn=activation_function, - weight=None, - ) + embed_dim=self.feature_dim, + output_dim=ntypes, + activation_fn=activation_function, + weight=None, + ) if not isinstance(self.attn_head, list): - self.pair2coord_proj = NonLinearHead(self.attn_head, 1, activation_fn=activation_function) + self.pair2coord_proj = NonLinearHead( + self.attn_head, 1, activation_fn=activation_function + ) else: self.pair2coord_proj = [] self.ndescriptor = len(self.attn_head) for ii in range(self.ndescriptor): - _pair2coord_proj = NonLinearHead(self.attn_head[ii], 1, activation_fn=activation_function) + _pair2coord_proj = NonLinearHead( + self.attn_head[ii], 1, activation_fn=activation_function + ) self.pair2coord_proj.append(_pair2coord_proj) self.pair2coord_proj = torch.nn.ModuleList(self.pair2coord_proj) - def output_def(self): - return FittingOutputDef([ - OutputVariableDef("updated_coord", [3], reduciable=False, differentiable=False), - OutputVariableDef("logits", [-1], reduciable=False, differentiable=False), - ]) - + return FittingOutputDef( + [ + OutputVariableDef( + "updated_coord", [3], reduciable=False, differentiable=False + ), + OutputVariableDef( + "logits", [-1], reduciable=False, differentiable=False + ), + ] + ) - def forward(self, pair_weights, diff, nlist_mask, features, sw, masked_tokens: Optional[torch.Tensor]=None): + def forward( + self, + pair_weights, + diff, + nlist_mask, + features, + sw, + masked_tokens: Optional[torch.Tensor] = None, + ): """Calculate the updated coord. Args: - coord: Input noisy coord with shape [nframes, nloc, 3]. @@ -77,26 +99,31 @@ def forward(self, pair_weights, diff, nlist_mask, features, sw, masked_tokens: O - diff: Input pair relative coord list with shape [nframes, nloc, nnei, 3]. - nlist_mask: Input nlist mask with shape [nframes, nloc, nnei]. - Returns: + Returns + ------- - denoised_coord: Denoised updated coord with shape [nframes, nloc, 3]. """ # [nframes, nloc, nnei, 1] logits = self.lm_head(features, masked_tokens=masked_tokens) if not isinstance(self.attn_head, list): attn_probs = self.pair2coord_proj(pair_weights) - out_coord = (attn_probs * diff).sum(dim=-2) / (sw.sum(dim=-1).unsqueeze(-1)+1e-6) + out_coord = (attn_probs * diff).sum(dim=-2) / ( + sw.sum(dim=-1).unsqueeze(-1) + 1e-6 + ) else: assert len(self.prefactor) == self.ndescriptor all_coord_update = [] assert len(pair_weights) == len(diff) == len(nlist_mask) == self.ndescriptor for ii in range(self.ndescriptor): _attn_probs = self.pair2coord_proj[ii](pair_weights[ii]) - _coord_update = (_attn_probs * diff[ii]).sum(dim=-2) / (nlist_mask[ii].sum(dim=-1).unsqueeze(-1)+1e-6) + _coord_update = (_attn_probs * diff[ii]).sum(dim=-2) / ( + nlist_mask[ii].sum(dim=-1).unsqueeze(-1) + 1e-6 + ) all_coord_update.append(_coord_update) out_coord = self.prefactor[0] * all_coord_update[0] - for ii in range(self.ndescriptor-1): - out_coord += self.prefactor[ii+1] * all_coord_update[ii+1] + for ii in range(self.ndescriptor - 1): + out_coord += self.prefactor[ii + 1] * all_coord_update[ii + 1] return { - "updated_coord": out_coord, + "updated_coord": out_coord, "logits": logits, } diff --git a/deepmd_pt/model/task/dipole.py b/deepmd_pt/model/task/dipole.py index 822d210a..cf806bc6 100644 --- a/deepmd_pt/model/task/dipole.py +++ b/deepmd_pt/model/task/dipole.py @@ -1,19 +1,20 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later import logging -import numpy as np -import torch -from deepmd_pt.utils import env -try: - from typing_extensions import Final -except: - from torch.jit import Final +import torch -from deepmd_pt.model.network import ResidualDeep -from deepmd_pt.model.task import TaskBaseMethod +from deepmd_pt.model.network.network import ( + ResidualDeep, +) +from deepmd_pt.model.task.task import ( + TaskBaseMethod, +) class DipoleFittingNetType(TaskBaseMethod): - def __init__(self, ntypes, embedding_width, neuron, out_dim, resnet_dt=True, **kwargs): + def __init__( + self, ntypes, embedding_width, neuron, out_dim, resnet_dt=True, **kwargs + ): """Construct a fitting net for dipole. Args: @@ -23,19 +24,21 @@ def __init__(self, ntypes, embedding_width, neuron, out_dim, resnet_dt=True, **k - bias_atom_e: Average enery per atom for each element. - resnet_dt: Using time-step in the ResNet construction. """ - super(DipoleFittingNetType, self).__init__() + super().__init__() self.ntypes = ntypes self.embedding_width = embedding_width self.out_dim = out_dim filter_layers = [] - one = ResidualDeep(0, embedding_width, neuron, 0.0, out_dim=self.out_dim, resnet_dt=resnet_dt) + one = ResidualDeep( + 0, embedding_width, neuron, 0.0, out_dim=self.out_dim, resnet_dt=resnet_dt + ) filter_layers.append(one) self.filter_layers = torch.nn.ModuleList(filter_layers) - if 'seed' in kwargs: - logging.info('Set seed to %d in fitting net.', kwargs['seed']) - torch.manual_seed(kwargs['seed']) + if "seed" in kwargs: + logging.info("Set seed to %d in fitting net.", kwargs["seed"]) + torch.manual_seed(kwargs["seed"]) def forward(self, inputs, atype, atype_tebd, rot_mat): """Based on embedding net output, alculate total energy. @@ -46,14 +49,17 @@ def forward(self, inputs, atype, atype_tebd, rot_mat): - atype_tebd: Atom type embedding. Its shape is [nframes, nloc, tebd_dim] - rot_mat: GR during descriptor calculation. Its shape is [nframes * nloc, m1, 3]. - Returns: + Returns + ------- - vec_out: output vector. Its shape is [nframes, nloc, 3]. """ nframes, nloc, _ = inputs.size() if atype_tebd is not None: - inputs = torch.concat([inputs, atype_tebd], dim=-1) + inputs = torch.concat([inputs, atype_tebd], dim=-1) vec_out = self.filter_layers[0](inputs) # Shape is [nframes, nloc, m1] assert list(vec_out.size()) == [nframes, nloc, self.out_dim] vec_out = vec_out.view(-1, 1, self.out_dim) - vec_out = torch.bmm(vec_out, rot_mat).squeeze(-2).view(nframes, nloc, 3) # Shape is [nframes, nloc, 3] + vec_out = ( + torch.bmm(vec_out, rot_mat).squeeze(-2).view(nframes, nloc, 3) + ) # Shape is [nframes, nloc, 3] return vec_out diff --git a/deepmd_pt/model/task/ener.py b/deepmd_pt/model/task/ener.py index 82285c77..ea26c20f 100644 --- a/deepmd_pt/model/task/ener.py +++ b/deepmd_pt/model/task/ener.py @@ -1,34 +1,38 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later import logging -import torch - -from deepmd_pt.utils import env -try: - from typing_extensions import Final -except: - from torch.jit import Final +from typing import ( + Optional, + Tuple, +) -from typing import Optional, List, Dict, Tuple -from deepmd_pt.model.network import ResidualDeep -from deepmd_pt.model.task import Fitting +import torch +from deepmd.model_format import ( + FittingOutputDef, + OutputVariableDef, + fitting_check_output, +) -from deepmd_utils.model_format import ( - FittingOutputDef, - OutputVariableDef, - fitting_check_output, +from deepmd_pt.model.network.network import ( + ResidualDeep, +) +from deepmd_pt.model.task.fitting import ( + Fitting, +) +from deepmd_pt.utils import ( + env, ) @Fitting.register("ener") @fitting_check_output class EnergyFittingNet(Fitting): - def __init__( - self, - ntypes, - embedding_width, - neuron, - bias_atom_e, - resnet_dt=True, + self, + ntypes, + embedding_width, + neuron, + bias_atom_e, + resnet_dt=True, use_tebd=True, **kwargs, ): @@ -46,45 +50,54 @@ def __init__( self.embedding_width = embedding_width self.use_tebd = use_tebd if not use_tebd: - assert self.ntypes == len(bias_atom_e), 'Element count mismatches!' + assert self.ntypes == len(bias_atom_e), "Element count mismatches!" bias_atom_e = torch.tensor(bias_atom_e) - self.register_buffer('bias_atom_e', bias_atom_e) + self.register_buffer("bias_atom_e", bias_atom_e) filter_layers = [] for type_i in range(self.ntypes): bias_type = 0.0 - one = ResidualDeep(type_i, embedding_width, neuron, bias_type, resnet_dt=resnet_dt) + one = ResidualDeep( + type_i, embedding_width, neuron, bias_type, resnet_dt=resnet_dt + ) filter_layers.append(one) self.filter_layers = torch.nn.ModuleList(filter_layers) - if 'seed' in kwargs: - logging.info('Set seed to %d in fitting net.', kwargs['seed']) - torch.manual_seed(kwargs['seed']) + if "seed" in kwargs: + logging.info("Set seed to %d in fitting net.", kwargs["seed"]) + torch.manual_seed(kwargs["seed"]) def output_def(self): - return FittingOutputDef([ - OutputVariableDef("energy", [1], reduciable=True, differentiable=True), - ]) - - def forward(self, - inputs: torch.Tensor, - atype: torch.Tensor, - atype_tebd: Optional[torch.Tensor] = None, - rot_mat: Optional[torch.Tensor] = None): + return FittingOutputDef( + [ + OutputVariableDef("energy", [1], reduciable=True, differentiable=True), + ] + ) + + def forward( + self, + inputs: torch.Tensor, + atype: torch.Tensor, + atype_tebd: Optional[torch.Tensor] = None, + rot_mat: Optional[torch.Tensor] = None, + ): """Based on embedding net output, alculate total energy. Args: - inputs: Embedding matrix. Its shape is [nframes, natoms[0], self.embedding_width]. - natoms: Tell atom count and element count. Its shape is [2+self.ntypes]. - Returns: + Returns + ------- - `torch.Tensor`: Total energy with shape [nframes, natoms[0]]. """ outs = torch.zeros_like(atype).unsqueeze(-1) # jit assertion if self.use_tebd: if atype_tebd is not None: inputs = torch.concat([inputs, atype_tebd], dim=-1) - atom_energy = self.filter_layers[0](inputs) + self.bias_atom_e[atype].unsqueeze(-1) + atom_energy = self.filter_layers[0](inputs) + self.bias_atom_e[ + atype + ].unsqueeze(-1) outs = outs + atom_energy # Shape is [nframes, natoms[0], 1] else: for type_i, filter_layer in enumerate(self.filter_layers): @@ -92,18 +105,26 @@ def forward(self, atom_energy = filter_layer(inputs) atom_energy = atom_energy + self.bias_atom_e[type_i] atom_energy = atom_energy * mask.unsqueeze(-1) - outs = outs + atom_energy # Shape is [nframes, natoms[0], 1] - return { - "energy": outs.to(env.GLOBAL_PT_FLOAT_PRECISION) - } + outs = outs + atom_energy # Shape is [nframes, natoms[0], 1] + return {"energy": outs.to(env.GLOBAL_PT_FLOAT_PRECISION)} @Fitting.register("direct_force") @Fitting.register("direct_force_ener") @fitting_check_output class EnergyFittingNetDirect(Fitting): - - def __init__(self, ntypes, embedding_width, neuron, bias_atom_e, out_dim=1, resnet_dt=True, use_tebd=True, return_energy=False, **kwargs): + def __init__( + self, + ntypes, + embedding_width, + neuron, + bias_atom_e, + out_dim=1, + resnet_dt=True, + use_tebd=True, + return_energy=False, + **kwargs, + ): """Construct a fitting net for energy. Args: @@ -119,13 +140,20 @@ def __init__(self, ntypes, embedding_width, neuron, bias_atom_e, out_dim=1, resn self.use_tebd = use_tebd self.out_dim = out_dim if not use_tebd: - assert self.ntypes == len(bias_atom_e), 'Element count mismatches!' + assert self.ntypes == len(bias_atom_e), "Element count mismatches!" bias_atom_e = torch.tensor(bias_atom_e) - self.register_buffer('bias_atom_e', bias_atom_e) + self.register_buffer("bias_atom_e", bias_atom_e) filter_layers_dipole = [] for type_i in range(self.ntypes): - one = ResidualDeep(type_i, embedding_width, neuron, 0.0, out_dim=out_dim, resnet_dt=resnet_dt) + one = ResidualDeep( + type_i, + embedding_width, + neuron, + 0.0, + out_dim=out_dim, + resnet_dt=resnet_dt, + ) filter_layers_dipole.append(one) self.filter_layers_dipole = torch.nn.ModuleList(filter_layers_dipole) @@ -134,56 +162,70 @@ def __init__(self, ntypes, embedding_width, neuron, bias_atom_e, out_dim=1, resn if self.return_energy: for type_i in range(self.ntypes): bias_type = 0.0 if self.use_tebd else bias_atom_e[type_i] - one = ResidualDeep(type_i, embedding_width, neuron, bias_type, resnet_dt=resnet_dt) + one = ResidualDeep( + type_i, embedding_width, neuron, bias_type, resnet_dt=resnet_dt + ) filter_layers.append(one) self.filter_layers = torch.nn.ModuleList(filter_layers) - if 'seed' in kwargs: - logging.info('Set seed to %d in fitting net.', kwargs['seed']) - torch.manual_seed(kwargs['seed']) - + if "seed" in kwargs: + logging.info("Set seed to %d in fitting net.", kwargs["seed"]) + torch.manual_seed(kwargs["seed"]) def output_def(self): - return FittingOutputDef([ - OutputVariableDef("energy", [1], reduciable=True, differentiable=False), - OutputVariableDef("dforce", [3], reduciable=False, differentiable=False), - ]) - - def forward(self, - inputs: torch.Tensor, - atype: torch.Tensor, - atype_tebd: Optional[torch.Tensor] = None, - rot_mat: Optional[torch.Tensor] = None) -> Tuple[torch.Tensor, None]: + return FittingOutputDef( + [ + OutputVariableDef("energy", [1], reduciable=True, differentiable=False), + OutputVariableDef( + "dforce", [3], reduciable=False, differentiable=False + ), + ] + ) + + def forward( + self, + inputs: torch.Tensor, + atype: torch.Tensor, + atype_tebd: Optional[torch.Tensor] = None, + rot_mat: Optional[torch.Tensor] = None, + ) -> Tuple[torch.Tensor, None]: """Based on embedding net output, alculate total energy. Args: - inputs: Embedding matrix. Its shape is [nframes, natoms[0], self.embedding_width]. - natoms: Tell atom count and element count. Its shape is [2+self.ntypes]. - Returns: + Returns + ------- - `torch.Tensor`: Total energy with shape [nframes, natoms[0]]. """ nframes, nloc, _ = inputs.size() if self.use_tebd: if atype_tebd is not None: inputs = torch.concat([inputs, atype_tebd], dim=-1) - vec_out = self.filter_layers_dipole[0](inputs) # Shape is [nframes, nloc, m1] + vec_out = self.filter_layers_dipole[0]( + inputs + ) # Shape is [nframes, nloc, m1] assert list(vec_out.size()) == [nframes, nloc, self.out_dim] vec_out = vec_out.view(-1, 1, self.out_dim) assert rot_mat is not None - vec_out = torch.bmm(vec_out, rot_mat).squeeze(-2).view(nframes, nloc, 3) # Shape is [nframes, nloc, 3] + vec_out = ( + torch.bmm(vec_out, rot_mat).squeeze(-2).view(nframes, nloc, 3) + ) # Shape is [nframes, nloc, 3] else: vec_out = torch.zeros_like(atype).unsqueeze(-1) # jit assertion for type_i, filter_layer in enumerate(self.filter_layers_dipole): mask = atype == type_i vec_out_type = filter_layer(inputs) # Shape is [nframes, nloc, m1] vec_out_type = vec_out_type * mask.unsqueeze(-1) - vec_out = vec_out + vec_out_type # Shape is [nframes, natoms[0], 1] + vec_out = vec_out + vec_out_type # Shape is [nframes, natoms[0], 1] outs = torch.zeros_like(atype).unsqueeze(-1) # jit assertion if self.return_energy: if self.use_tebd: - atom_energy = self.filter_layers[0](inputs) + self.bias_atom_e[atype].unsqueeze(-1) + atom_energy = self.filter_layers[0](inputs) + self.bias_atom_e[ + atype + ].unsqueeze(-1) outs = outs + atom_energy # Shape is [nframes, natoms[0], 1] else: for type_i, filter_layer in enumerate(self.filter_layers): @@ -192,9 +234,8 @@ def forward(self, if not env.ENERGY_BIAS_TRAINABLE: atom_energy = atom_energy + self.bias_atom_e[type_i] atom_energy = atom_energy * mask.unsqueeze(-1) - outs = outs + atom_energy # Shape is [nframes, natoms[0], 1] + outs = outs + atom_energy # Shape is [nframes, natoms[0], 1] return { - "energy": outs.to(env.GLOBAL_PT_FLOAT_PRECISION), - "dforce": vec_out, + "energy": outs.to(env.GLOBAL_PT_FLOAT_PRECISION), + "dforce": vec_out, } - diff --git a/deepmd_pt/model/task/fitting.py b/deepmd_pt/model/task/fitting.py index 1de5d937..82928d41 100644 --- a/deepmd_pt/model/task/fitting.py +++ b/deepmd_pt/model/task/fitting.py @@ -1,17 +1,33 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later import logging +from typing import ( + Callable, +) + import numpy as np import torch -from deepmd_pt.utils.env import DEVICE -from deepmd_pt.utils.dataloader import DpLoaderSet -from deepmd_pt.utils.stat import make_stat_input -from deepmd_pt.model.task import TaskBaseMethod -from deepmd_pt.utils.plugin import Plugin, PluginVariant -from typing import Callable -from deepmd_utils.model_format import FittingOutputDef, fitting_check_output +from deepmd.model_format import ( + FittingOutputDef, +) +from deepmd_pt.model.task.task import ( + TaskBaseMethod, +) +from deepmd_pt.utils.dataloader import ( + DpLoaderSet, +) +from deepmd_pt.utils.env import ( + DEVICE, +) +from deepmd_pt.utils.plugin import ( + Plugin, +) +from deepmd_pt.utils.stat import ( + make_stat_input, +) -class Fitting(TaskBaseMethod): +class Fitting(TaskBaseMethod): __plugins = Plugin() @staticmethod @@ -49,20 +65,20 @@ def __new__(cls, *args, **kwargs): return super().__new__(cls) def output_def(self) -> FittingOutputDef: - """Definition for the task Output. - """ + """Definition for the task Output.""" raise NotImplementedError def forward(self, **kwargs): - """Task Output. - """ + """Task Output.""" raise NotImplementedError def share_params(self, base_class, shared_level, resume=False): - assert self.__class__ == base_class.__class__, "Only fitting nets of the same type can share params!" + assert ( + self.__class__ == base_class.__class__ + ), "Only fitting nets of the same type can share params!" if shared_level == 0: # link buffers - if hasattr(self, 'bias_atom_e'): + if hasattr(self, "bias_atom_e"): self.bias_atom_e = base_class.bias_atom_e # the following will successfully link all the params except buffers, which need manually link. for item in self._modules: @@ -75,15 +91,21 @@ def share_params(self, base_class, shared_level, resume=False): elif shared_level == 2: # share all the layers before final layer # the following will successfully link all the params except buffers, which need manually link. - self._modules['filter_layers'][0].deep_layers = base_class._modules['filter_layers'][0].deep_layers + self._modules["filter_layers"][0].deep_layers = base_class._modules[ + "filter_layers" + ][0].deep_layers elif shared_level == 3: # share the first layers # the following will successfully link all the params except buffers, which need manually link. - self._modules['filter_layers'][0].deep_layers[0] = base_class._modules['filter_layers'][0].deep_layers[0] + self._modules["filter_layers"][0].deep_layers[0] = base_class._modules[ + "filter_layers" + ][0].deep_layers[0] else: raise NotImplementedError - def change_energy_bias(self, config, model, old_type_map, new_type_map, bias_shift='delta', ntest=10): + def change_energy_bias( + self, config, model, old_type_map, new_type_map, bias_shift="delta", ntest=10 + ): """Change the energy bias according to the input data and the pretrained model. Parameters @@ -109,8 +131,10 @@ def change_energy_bias(self, config, model, old_type_map, new_type_map, bias_shi "(this step may take long time)".format(str(new_type_map)) ) # data - systems = config['training']['training_data']['systems'] - finetune_data = DpLoaderSet(systems, ntest, config["model"], type_split=False, noise_settings=None) + systems = config["training"]["training_data"]["systems"] + finetune_data = DpLoaderSet( + systems, ntest, config["model"], type_split=False, noise_settings=None + ) sampled = make_stat_input(finetune_data.systems, finetune_data.dataloaders, 1) # map sorter = np.argsort(old_type_map) @@ -121,7 +145,7 @@ def change_energy_bias(self, config, model, old_type_map, new_type_map, bias_shi numb_type = len(old_type_map) type_numbs, energy_ground_truth, energy_predict = [], [], [] for test_data in sampled: - nframes = test_data['energy'].shape[0] + nframes = test_data["energy"].shape[0] if mixed_type: atype = test_data["atype"].detach().cpu().numpy() else: @@ -129,9 +153,7 @@ def change_energy_bias(self, config, model, old_type_map, new_type_map, bias_shi assert np.array( [i.item() in idx_type_map for i in list(set(atype.reshape(-1)))] ).all(), "Some types are not in 'type_map'!" - energy_ground_truth.append( - test_data["energy"].cpu().numpy() - ) + energy_ground_truth.append(test_data["energy"].cpu().numpy()) if mixed_type: type_numbs.append( np.array( @@ -148,10 +170,16 @@ def change_energy_bias(self, config, model, old_type_map, new_type_map, bias_shi ) if bias_shift == "delta": coord = test_data["coord"].to(DEVICE) - atype = test_data['atype'].to(DEVICE) - box = test_data['box'].to(DEVICE) if test_data['box'] is not None else None + atype = test_data["atype"].to(DEVICE) + box = ( + test_data["box"].to(DEVICE) + if test_data["box"] is not None + else None + ) ret = model(coord, atype, box) - energy_predict.append(ret['energy'].reshape([nframes, 1]).detach().cpu().numpy()) + energy_predict.append( + ret["energy"].reshape([nframes, 1]).detach().cpu().numpy() + ) type_numbs = np.concatenate(type_numbs) energy_ground_truth = np.concatenate(energy_ground_truth) old_bias = self.bias_atom_e[idx_type_map] @@ -168,22 +196,28 @@ def change_energy_bias(self, config, model, old_type_map, new_type_map, bias_shi ) ) ) - self.bias_atom_e[idx_type_map] += torch.from_numpy(delta_bias.reshape(-1)).to(DEVICE) + self.bias_atom_e[idx_type_map] += torch.from_numpy( + delta_bias.reshape(-1) + ).to(DEVICE) logging.info( - "RMSE of atomic energy after linear regression is: {:10.5e} eV/atom.".format( - rmse_ae - ) + f"RMSE of atomic energy after linear regression is: {rmse_ae:10.5e} eV/atom." ) elif bias_shift == "statistic": statistic_bias = np.linalg.lstsq( type_numbs, energy_ground_truth, rcond=None )[0] - self.bias_atom_e[idx_type_map] = torch.from_numpy(statistic_bias.reshape(-1)).type_as(self.bias_atom_e[idx_type_map]).to(DEVICE) + self.bias_atom_e[idx_type_map] = ( + torch.from_numpy(statistic_bias.reshape(-1)) + .type_as(self.bias_atom_e[idx_type_map]) + .to(DEVICE) + ) else: raise RuntimeError("Unknown bias_shift mode: " + bias_shift) logging.info( "Change energy bias of {} from {} to {}.".format( - str(new_type_map), str(old_bias.detach().cpu().numpy()), str(self.bias_atom_e[idx_type_map].detach().cpu().numpy()) + str(new_type_map), + str(old_bias.detach().cpu().numpy()), + str(self.bias_atom_e[idx_type_map].detach().cpu().numpy()), ) ) return None diff --git a/deepmd_pt/model/task/task.py b/deepmd_pt/model/task/task.py index 8d6bb4a3..a9b2efeb 100644 --- a/deepmd_pt/model/task/task.py +++ b/deepmd_pt/model/task/task.py @@ -1,14 +1,12 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later import torch class TaskBaseMethod(torch.nn.Module): - def __init__(self, **kwargs): - """Construct a basic head for different tasks. - """ - super(TaskBaseMethod, self).__init__() + """Construct a basic head for different tasks.""" + super().__init__() def forward(self, **kwargs): - """Task Output. - """ + """Task Output.""" raise NotImplementedError diff --git a/deepmd_pt/model/task/type_predict.py b/deepmd_pt/model/task/type_predict.py index 9512d976..7b7016f3 100644 --- a/deepmd_pt/model/task/type_predict.py +++ b/deepmd_pt/model/task/type_predict.py @@ -1,25 +1,20 @@ -import logging -from typing import Optional -import numpy as np -import torch +# SPDX-License-Identifier: LGPL-3.0-or-later +from typing import ( + Optional, +) -from deepmd_pt.utils import env -try: - from typing_extensions import Final -except: - from torch.jit import Final +import torch -from deepmd_pt.model.network import MaskLMHead -from deepmd_pt.model.task import TaskBaseMethod +from deepmd_pt.model.network.network import ( + MaskLMHead, +) +from deepmd_pt.model.task import ( + TaskBaseMethod, +) class TypePredictNet(TaskBaseMethod): - - def __init__(self, - feature_dim, - ntypes, - activation_function="gelu", - **kwargs): + def __init__(self, feature_dim, ntypes, activation_function="gelu", **kwargs): """Construct a type predict net. Args: @@ -27,23 +22,24 @@ def __init__(self, - ntypes: Numer of types to predict. - activation_function: Activate function. """ - super(TypePredictNet, self).__init__() + super().__init__() self.feature_dim = feature_dim self.ntypes = ntypes self.lm_head = MaskLMHead( - embed_dim=self.feature_dim, - output_dim=ntypes, - activation_fn=activation_function, - weight=None, - ) + embed_dim=self.feature_dim, + output_dim=ntypes, + activation_fn=activation_function, + weight=None, + ) - def forward(self, features, masked_tokens: Optional[torch.Tensor]=None): + def forward(self, features, masked_tokens: Optional[torch.Tensor] = None): """Calculate the predicted logits. Args: - features: Input features with shape [nframes, nloc, feature_dim]. - masked_tokens: Input masked tokens with shape [nframes, nloc]. - Returns: + Returns + ------- - logits: Predicted probs with shape [nframes, nloc, ntypes]. """ # [nframes, nloc, ntypes] diff --git a/deepmd_pt/optimizer/KFWrapper.py b/deepmd_pt/optimizer/KFWrapper.py index a32f569c..3ab7ffe7 100644 --- a/deepmd_pt/optimizer/KFWrapper.py +++ b/deepmd_pt/optimizer/KFWrapper.py @@ -1,9 +1,13 @@ -import torch -import torch.nn as nn -from torch.optim.optimizer import Optimizer +# SPDX-License-Identifier: LGPL-3.0-or-later +import math + import numpy as np +import torch import torch.distributed as dist -import math +import torch.nn as nn +from torch.optim.optimizer import ( + Optimizer, +) class KFOptimizerWrapper: @@ -25,7 +29,7 @@ def update_energy( self, inputs: dict, Etot_label: torch.Tensor, update_prefactor: float = 1 ) -> None: model_pred, _, _ = self.model(**inputs, inference_only=True) - Etot_predict = model_pred['energy'] + Etot_predict = model_pred["energy"] natoms_sum = int(inputs["atype"].shape[-1]) self.optimizer.set_grad_prefactor(natoms_sum) @@ -63,9 +67,9 @@ def update_force( for i in range(index.shape[0]): self.optimizer.zero_grad() model_pred, _, _ = self.model(**inputs, inference_only=True) - Etot_predict = model_pred['energy'] + Etot_predict = model_pred["energy"] natoms_sum = int(inputs["atype"].shape[-1]) - force_predict = model_pred['force'] + force_predict = model_pred["force"] error_tmp = Force_label[:, index[i]] - force_predict[:, index[i]] error_tmp = update_prefactor * error_tmp mask = error_tmp < 0 @@ -86,7 +90,12 @@ def update_force( return Etot_predict, force_predict def update_denoise_coord( - self, inputs: dict, clean_coord: torch.Tensor, update_prefactor: float = 1, mask_loss_coord: bool = True, coord_mask: torch.Tensor = None + self, + inputs: dict, + clean_coord: torch.Tensor, + update_prefactor: float = 1, + mask_loss_coord: bool = True, + coord_mask: torch.Tensor = None, ) -> None: natoms_sum = int(inputs["atype"].shape[-1]) bs = clean_coord.shape[0] @@ -97,7 +106,7 @@ def update_denoise_coord( for i in range(index.shape[0]): self.optimizer.zero_grad() model_pred, _, _ = self.model(**inputs, inference_only=True) - updated_coord = model_pred['updated_coord'] + updated_coord = model_pred["updated_coord"] natoms_sum = int(inputs["atype"].shape[-1]) error_tmp = clean_coord[:, index[i]] - updated_coord[:, index[i]] error_tmp = update_prefactor * error_tmp @@ -126,7 +135,8 @@ def __sample( if atoms_selected % atoms_per_group: raise Exception("divider") index = range(natoms) - res = np.random.choice(index, atoms_selected).reshape(-1, atoms_per_group) + rng = np.random.default_rng() + res = rng.choice(index, atoms_selected).reshape(-1, atoms_per_group) return res diff --git a/deepmd_pt/optimizer/LKF.py b/deepmd_pt/optimizer/LKF.py index e246ae31..5e18797c 100644 --- a/deepmd_pt/optimizer/LKF.py +++ b/deepmd_pt/optimizer/LKF.py @@ -1,8 +1,12 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later import logging -import torch -from torch.optim.optimizer import Optimizer import math +import torch +from torch.optim.optimizer import ( + Optimizer, +) + class LKFOptimizer(Optimizer): def __init__( @@ -12,14 +16,12 @@ def __init__( kalman_nue=0.9987, block_size=5120, ): - - defaults = dict( - lr=0.1, - kalman_nue=kalman_nue, - block_size=block_size, - ) - - super(LKFOptimizer, self).__init__(params, defaults) + defaults = { + "lr": 0.1, + "kalman_nue": kalman_nue, + "block_size": block_size, + } + super().__init__(params, defaults) self._params = self.param_groups[0]["params"] @@ -36,7 +38,6 @@ def __init__( self.__init_P() def __init_P(self): - param_nums = [] param_sum = 0 block_size = self.__get_blocksize() @@ -81,7 +82,7 @@ def __init_P(self): ) ) params_packed_index.append(param_num - block_size * i) - else: + else: P.append(torch.eye(param_num, dtype=data_type, device=device)) params_packed_index.append(param_num) @@ -169,7 +170,6 @@ def set_grad_prefactor(self, grad_prefactor): self.grad_prefactor = grad_prefactor def step(self, error): - params_packed_index = self._state.get("params_packed_index") weights = [] diff --git a/deepmd_pt/optimizer/__init__.py b/deepmd_pt/optimizer/__init__.py index 4f34809c..db340b3b 100644 --- a/deepmd_pt/optimizer/__init__.py +++ b/deepmd_pt/optimizer/__init__.py @@ -1,2 +1,9 @@ -from .KFWrapper import KFOptimizerWrapper -from .LKF import LKFOptimizer +# SPDX-License-Identifier: LGPL-3.0-or-later +from .KFWrapper import ( + KFOptimizerWrapper, +) +from .LKF import ( + LKFOptimizer, +) + +__all__ = ["KFOptimizerWrapper", "LKFOptimizer"] diff --git a/deepmd_pt/train/__init__.py b/deepmd_pt/train/__init__.py index e69de29b..6ceb116d 100644 --- a/deepmd_pt/train/__init__.py +++ b/deepmd_pt/train/__init__.py @@ -0,0 +1 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later diff --git a/deepmd_pt/train/training.py b/deepmd_pt/train/training.py index 9ce84be9..9ec4ad09 100644 --- a/deepmd_pt/train/training.py +++ b/deepmd_pt/train/training.py @@ -1,45 +1,83 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later import logging import os -import torch import time -import math -from copy import deepcopy +from copy import ( + deepcopy, +) +from pathlib import ( + Path, +) +from typing import ( + Any, + Dict, +) -from typing import Any, Dict import numpy as np -from deepmd_pt.utils import dp_random -from deepmd_pt.utils.env import DEVICE, JIT, LOCAL_RANK, DISABLE_TQDM, SAMPLER_RECORD, NUM_WORKERS -from deepmd_pt.optimizer import KFOptimizerWrapper, LKFOptimizer -from deepmd_pt.utils.learning_rate import LearningRateExp -from deepmd_pt.loss import EnergyStdLoss, DenoiseLoss -from deepmd_pt.model.model import get_model -from deepmd_pt.train.wrapper import ModelWrapper -from deepmd_pt.utils.dataloader import BufferedIterator, get_weighted_sampler -from pathlib import Path -from tqdm import tqdm -from tqdm.contrib.logging import logging_redirect_tqdm - +import torch import wandb as wb +from tqdm import ( + tqdm, +) +from tqdm.contrib.logging import ( + logging_redirect_tqdm, +) + +from deepmd_pt.loss import ( + DenoiseLoss, + EnergyStdLoss, +) +from deepmd_pt.model.model import ( + get_model, +) +from deepmd_pt.optimizer import ( + KFOptimizerWrapper, + LKFOptimizer, +) +from deepmd_pt.train.wrapper import ( + ModelWrapper, +) +from deepmd_pt.utils import ( + dp_random, +) +from deepmd_pt.utils.dataloader import ( + BufferedIterator, + get_weighted_sampler, +) +from deepmd_pt.utils.env import ( + DEVICE, + DISABLE_TQDM, + JIT, + LOCAL_RANK, + NUM_WORKERS, + SAMPLER_RECORD, +) +from deepmd_pt.utils.learning_rate import ( + LearningRateExp, +) if torch.__version__.startswith("2"): import torch._dynamo -from torch.nn.parallel import DistributedDataParallel as DDP + import torch.distributed as dist -from torch.utils.data import DataLoader +from torch.nn.parallel import DistributedDataParallel as DDP +from torch.utils.data import ( + DataLoader, +) -class Trainer(object): +class Trainer: def __init__( - self, - config: Dict[str, Any], - training_data, - sampled, - validation_data=None, - init_model=None, - restart_model=None, - finetune_model=None, - force_load=False, - shared_links=None, + self, + config: Dict[str, Any], + training_data, + sampled, + validation_data=None, + init_model=None, + restart_model=None, + finetune_model=None, + force_load=False, + shared_links=None, ): """Construct a DeePMD trainer. @@ -51,8 +89,12 @@ def __init__( model_params = config["model"] training_params = config["training"] self.multi_task = "model_dict" in model_params - self.finetune_multi_task = model_params.pop("finetune_multi_task", False) # should use pop for next finetune - self.model_keys = [key for key in model_params["model_dict"]] if self.multi_task else ["Default"] + self.finetune_multi_task = model_params.pop( + "finetune_multi_task", False + ) # should use pop for next finetune + self.model_keys = ( + list(model_params["model_dict"]) if self.multi_task else ["Default"] + ) self.rank = dist.get_rank() if dist.is_initialized() else 0 self.world_size = dist.get_world_size() if dist.is_initialized() else 1 self.num_model = len(self.model_keys) @@ -71,11 +113,11 @@ def __init__( if self.wandb_enabled: entity = self.wandb_config.get("entity", None) assert ( - entity is not None + entity is not None ), "The parameter 'entity' of wandb must be specified." project = self.wandb_config.get("project", None) assert ( - project is not None + project is not None ), "The parameter 'project' of wandb must be specified." job_name = self.wandb_config.get("job_name", None) if job_name is None: @@ -92,31 +134,46 @@ def __init__( def get_opt_param(params): opt_type = params.get("opt_type", "Adam") - opt_param = {'kf_blocksize': params.get("kf_blocksize", 5120), - 'kf_start_pref_e': params.get("kf_start_pref_e", 1), - 'kf_limit_pref_e': params.get("kf_limit_pref_e", 1), - 'kf_start_pref_f': params.get("kf_start_pref_f", 1), - 'kf_limit_pref_f': params.get("kf_limit_pref_f", 1)} + opt_param = { + "kf_blocksize": params.get("kf_blocksize", 5120), + "kf_start_pref_e": params.get("kf_start_pref_e", 1), + "kf_limit_pref_e": params.get("kf_limit_pref_e", 1), + "kf_start_pref_f": params.get("kf_start_pref_f", 1), + "kf_limit_pref_f": params.get("kf_limit_pref_f", 1), + } return opt_type, opt_param def get_data_loader(_training_data, _validation_data, _training_params): - if 'auto_prob' in _training_params['training_data']: - train_sampler = get_weighted_sampler(_training_data, _training_params['training_data']['auto_prob']) - elif 'sys_probs' in _training_params['training_data']: - train_sampler = get_weighted_sampler(_training_data, _training_params['training_data']['sys_probs'],sys_prob=True) + if "auto_prob" in _training_params["training_data"]: + train_sampler = get_weighted_sampler( + _training_data, _training_params["training_data"]["auto_prob"] + ) + elif "sys_probs" in _training_params["training_data"]: + train_sampler = get_weighted_sampler( + _training_data, + _training_params["training_data"]["sys_probs"], + sys_prob=True, + ) else: - train_sampler = get_weighted_sampler(_training_data, 'prob_sys_size') - + train_sampler = get_weighted_sampler(_training_data, "prob_sys_size") - if 'auto_prob' in _training_params['validation_data']: - valid_sampler = get_weighted_sampler(_validation_data, _training_params['validation_data']['auto_prob']) - elif 'sys_probs' in _training_params['validation_data']: - valid_sampler = get_weighted_sampler(_validation_data, _training_params['validation_data']['sys_probs'],sys_prob=True) + if "auto_prob" in _training_params["validation_data"]: + valid_sampler = get_weighted_sampler( + _validation_data, _training_params["validation_data"]["auto_prob"] + ) + elif "sys_probs" in _training_params["validation_data"]: + valid_sampler = get_weighted_sampler( + _validation_data, + _training_params["validation_data"]["sys_probs"], + sys_prob=True, + ) else: - valid_sampler = get_weighted_sampler(_validation_data, 'prob_sys_size') + valid_sampler = get_weighted_sampler(_validation_data, "prob_sys_size") - if train_sampler == None or valid_sampler == None: - logging.warning("Sampler not specified!")#None sampler will lead to a premature stop iteration. Replacement should be True in attribute of the sampler to produce expected number of items in one iteration. + if train_sampler is None or valid_sampler is None: + logging.warning( + "Sampler not specified!" + ) # None sampler will lead to a premature stop iteration. Replacement should be True in attribute of the sampler to produce expected number of items in one iteration. training_dataloader = DataLoader( _training_data, sampler=train_sampler, @@ -142,26 +199,33 @@ def get_data_loader(_training_data, _validation_data, _training_params): ) else: valid_numb_batch = 1 - return training_dataloader, training_data_buffered, \ - validation_dataloader, validation_data_buffered, valid_numb_batch + return ( + training_dataloader, + training_data_buffered, + validation_dataloader, + validation_data_buffered, + valid_numb_batch, + ) def get_single_model(_model_params, _sampled): model = get_model(deepcopy(_model_params), _sampled).to(DEVICE) return model def get_lr(lr_params): - assert lr_params.get("type", "exp") == "exp", "Only learning rate `exp` is supported!" + assert ( + lr_params.get("type", "exp") == "exp" + ), "Only learning rate `exp` is supported!" lr_params["stop_steps"] = self.num_steps - self.warmup_steps lr_exp = LearningRateExp(**lr_params) return lr_exp def get_loss(loss_params, start_lr, _ntypes): loss_type = loss_params.get("type", "ener") - if loss_type == 'ener': + if loss_type == "ener": loss_params["starter_learning_rate"] = start_lr return EnergyStdLoss(**loss_params) - elif loss_type == 'denoise': - loss_params['ntypes'] = _ntypes + elif loss_type == "denoise": + loss_params["ntypes"] = _ntypes return DenoiseLoss(**loss_params) else: raise NotImplementedError @@ -169,39 +233,63 @@ def get_loss(loss_params, start_lr, _ntypes): # Optimizer if self.multi_task and training_params.get("optim_dict", None) is not None: self.optim_dict = training_params.get("optim_dict") - missing_keys = [key for key in self.model_keys if key not in self.optim_dict] - assert not missing_keys, f"These keys are not in optim_dict: {missing_keys}!" + missing_keys = [ + key for key in self.model_keys if key not in self.optim_dict + ] + assert ( + not missing_keys + ), f"These keys are not in optim_dict: {missing_keys}!" self.opt_type = {} self.opt_param = {} for model_key in self.model_keys: - self.opt_type[model_key], self.opt_param[model_key] = get_opt_param(self.optim_dict[model_key]) + self.opt_type[model_key], self.opt_param[model_key] = get_opt_param( + self.optim_dict[model_key] + ) else: self.opt_type, self.opt_param = get_opt_param(training_params) # Data + Model dp_random.seed(training_params["seed"]) if not self.multi_task: - self.training_dataloader, self.training_data, \ - self.validation_dataloader, self.validation_data, self.valid_numb_batch = get_data_loader(training_data, - validation_data, - training_params) + ( + self.training_dataloader, + self.training_data, + self.validation_dataloader, + self.validation_data, + self.valid_numb_batch, + ) = get_data_loader(training_data, validation_data, training_params) self.model = get_single_model(model_params, sampled) else: - self.training_dataloader, self.training_data, \ - self.validation_dataloader, self.validation_data, \ - self.valid_numb_batch, self.model = {}, {}, {}, {}, {}, {} + ( + self.training_dataloader, + self.training_data, + self.validation_dataloader, + self.validation_data, + self.valid_numb_batch, + self.model, + ) = {}, {}, {}, {}, {}, {} for model_key in self.model_keys: - self.training_dataloader[model_key], self.training_data[model_key], \ - self.validation_dataloader[model_key], self.validation_data[model_key], \ - self.valid_numb_batch[model_key] = get_data_loader(training_data[model_key], - validation_data[model_key], - training_params['data_dict'][model_key]) - self.model[model_key] = get_single_model(model_params['model_dict'][model_key], sampled[model_key]) + ( + self.training_dataloader[model_key], + self.training_data[model_key], + self.validation_dataloader[model_key], + self.validation_data[model_key], + self.valid_numb_batch[model_key], + ) = get_data_loader( + training_data[model_key], + validation_data[model_key], + training_params["data_dict"][model_key], + ) + self.model[model_key] = get_single_model( + model_params["model_dict"][model_key], sampled[model_key] + ) # Learning rate self.warmup_steps = training_params.get("warmup_steps", 0) - self.gradient_max_norm = training_params.get("gradient_max_norm", 0.) - assert self.num_steps - self.warmup_steps > 0, "Warm up steps must be less than total training steps!" + self.gradient_max_norm = training_params.get("gradient_max_norm", 0.0) + assert ( + self.num_steps - self.warmup_steps > 0 + ), "Warm up steps must be less than total training steps!" if self.multi_task and config.get("learning_rate_dict", None) is not None: self.lr_exp = {} for model_key in self.model_keys: @@ -211,7 +299,11 @@ def get_loss(loss_params, start_lr, _ntypes): # Loss if not self.multi_task: - self.loss = get_loss(config["loss"], config["learning_rate"]["start_lr"], len(model_params['type_map'])) + self.loss = get_loss( + config["loss"], + config["learning_rate"]["start_lr"], + len(model_params["type_map"]), + ) else: self.loss = {} for model_key in self.model_keys: @@ -220,7 +312,7 @@ def get_loss(loss_params, start_lr, _ntypes): lr_param = config["learning_rate_dict"][model_key]["start_lr"] else: lr_param = config["learning_rate"]["start_lr"] - ntypes = len(model_params['model_dict'][model_key]['type_map']) + ntypes = len(model_params["model_dict"][model_key]["type_map"]) self.loss[model_key] = get_loss(loss_param, lr_param, ntypes) # JIT @@ -235,18 +327,28 @@ def get_loss(loss_params, start_lr, _ntypes): optimizer_state_dict = None if model_params["resuming"]: ntest = model_params.get("data_bias_nsample", 1) - origin_model = finetune_model if finetune_model is not None else resume_model + origin_model = ( + finetune_model if finetune_model is not None else resume_model + ) logging.info(f"Resuming from {origin_model}.") state_dict = torch.load(origin_model, map_location=DEVICE) if "model" in state_dict: - optimizer_state_dict = state_dict["optimizer"] if finetune_model is None else None + optimizer_state_dict = ( + state_dict["optimizer"] if finetune_model is None else None + ) state_dict = state_dict["model"] - self.start_step = state_dict['_extra_state']['train_infos']['step'] if self.restart_training else 0 + self.start_step = ( + state_dict["_extra_state"]["train_infos"]["step"] + if self.restart_training + else 0 + ) if self.rank == 0: if force_load: input_keys = list(state_dict.keys()) target_keys = list(self.wrapper.state_dict().keys()) - missing_keys = [item for item in target_keys if item not in input_keys] + missing_keys = [ + item for item in target_keys if item not in input_keys + ] if missing_keys: target_state_dict = self.wrapper.state_dict() slim_keys = [] @@ -258,35 +360,49 @@ def get_loss(loss_params, start_lr, _ntypes): new_key = False break if new_key: - tmp_keys = '.'.join(item.split('.')[:3]) + tmp_keys = ".".join(item.split(".")[:3]) slim_keys.append(tmp_keys) - slim_keys = [i + '.*' for i in slim_keys] + slim_keys = [i + ".*" for i in slim_keys] logging.warning( - f"Force load mode allowed! These keys are not in ckpt and will re-init: {slim_keys}") + f"Force load mode allowed! These keys are not in ckpt and will re-init: {slim_keys}" + ) elif self.finetune_multi_task: new_state_dict = {} - model_branch_chosen = model_params.pop('model_branch_chosen') - new_fitting = model_params.pop('new_fitting', False) + model_branch_chosen = model_params.pop("model_branch_chosen") + new_fitting = model_params.pop("new_fitting", False) target_state_dict = self.wrapper.state_dict() - target_keys = [i for i in target_state_dict.keys() if i != '_extra_state'] + target_keys = [ + i for i in target_state_dict.keys() if i != "_extra_state" + ] for item_key in target_keys: - if new_fitting and '.fitting_net.' in item_key: + if new_fitting and ".fitting_net." in item_key: # print(f'Keep {item_key} in old model!') - new_state_dict[item_key] = target_state_dict[item_key].clone().detach() + new_state_dict[item_key] = ( + target_state_dict[item_key].clone().detach() + ) else: - new_key = item_key.replace('.Default.', f'.{model_branch_chosen}.') + new_key = item_key.replace( + ".Default.", f".{model_branch_chosen}." + ) # print(f'Replace {item_key} with {new_key} in pretrained_model!') - new_state_dict[item_key] = state_dict[new_key].clone().detach() + new_state_dict[item_key] = ( + state_dict[new_key].clone().detach() + ) state_dict = new_state_dict if finetune_model is not None: - state_dict['_extra_state'] = self.wrapper.state_dict()['_extra_state'] + state_dict["_extra_state"] = self.wrapper.state_dict()[ + "_extra_state" + ] self.wrapper.load_state_dict(state_dict) # finetune - if finetune_model is not None and model_params["fitting_net"].get("type", "ener") in ['ener', - 'direct_force_ener', - 'atten_vec_lcc']: - old_type_map, new_type_map = model_params['type_map'], model_params['new_type_map'] + if finetune_model is not None and model_params["fitting_net"].get( + "type", "ener" + ) in ["ener", "direct_force_ener", "atten_vec_lcc"]: + old_type_map, new_type_map = ( + model_params["type_map"], + model_params["new_type_map"], + ) self.model.fitting_net.change_energy_bias( config, self.model, @@ -310,7 +426,7 @@ def get_loss(loss_params, start_lr, _ntypes): self.wrapper, device_ids=[LOCAL_RANK], find_unused_parameters=True, - output_device=LOCAL_RANK + output_device=LOCAL_RANK, ) # TODO ZD add lr warmups for multitask @@ -333,7 +449,7 @@ def warm_up_linear(step, warmup_steps): ) elif self.opt_type == "LKF": self.optimizer = LKFOptimizer( - self.wrapper.parameters(), 0.98, 0.99870, self.opt_param['kf_blocksize'] + self.wrapper.parameters(), 0.98, 0.99870, self.opt_param["kf_blocksize"] ) else: raise ValueError("Not supported optimizer type '%s'" % self.opt_type) @@ -341,8 +457,8 @@ def warm_up_linear(step, warmup_steps): # Get model prob for multi-task if self.multi_task: self.model_prob = np.array([0.0 for key in self.model_keys]) - if training_params.get('model_prob', None) is not None: - model_prob = training_params['model_prob'] + if training_params.get("model_prob", None) is not None: + model_prob = training_params["model_prob"] for ii, model_key in enumerate(self.model_keys): if model_key in model_prob: self.model_prob[ii] += float(model_prob[model_key]) @@ -350,18 +466,16 @@ def warm_up_linear(step, warmup_steps): for ii, model_key in enumerate(self.model_keys): self.model_prob[ii] += float(len(self.training_data[model_key])) sum_prob = np.sum(self.model_prob) - assert sum_prob > 0., "Sum of model prob must be larger than 0!" + assert sum_prob > 0.0, "Sum of model prob must be larger than 0!" self.model_prob = self.model_prob / sum_prob def run(self): fout = ( open(self.disp_file, mode="w", buffering=1) if self.rank == 0 else None ) # line buffered - if SAMPLER_RECORD : + if SAMPLER_RECORD: record_file = f"Sample_rank_{self.rank}.txt" - fout1 = ( - open(record_file, mode="w", buffering=1) - ) + fout1 = open(record_file, mode="w", buffering=1) logging.info("Start to train %d steps.", self.num_steps) if dist.is_initialized(): logging.info(f"Rank: {dist.get_rank()}/{dist.get_world_size()}") @@ -375,8 +489,10 @@ def step(_step_id, task_key="Default"): cur_lr = _lr.value(_step_id) pref_lr = cur_lr self.optimizer.zero_grad(set_to_none=True) - input_dict, label_dict,log_dict = self.get_data(is_train=True, task_key=task_key) - if SAMPLER_RECORD : + input_dict, label_dict, log_dict = self.get_data( + is_train=True, task_key=task_key + ) + if SAMPLER_RECORD: print_str = f"Step {_step_id}: sample system{log_dict['sid']} frame{log_dict['fid']}\n" fout1.write(print_str) fout1.flush() @@ -390,8 +506,10 @@ def step(_step_id, task_key="Default"): **input_dict, cur_lr=pref_lr, label=label_dict, task_key=task_key ) loss.backward() - if self.gradient_max_norm > 0.: - grad_norm = torch.nn.utils.clip_grad_norm_(self.wrapper.parameters(), self.gradient_max_norm) + if self.gradient_max_norm > 0.0: + grad_norm = torch.nn.utils.clip_grad_norm_( + self.wrapper.parameters(), self.gradient_max_norm + ) if not torch.isfinite(grad_norm).all(): # check local gradnorm single GPU case, trigger NanDetector raise FloatingPointError("gradients are Nan/Inf") @@ -402,32 +520,50 @@ def step(_step_id, task_key="Default"): KFOptWrapper = KFOptimizerWrapper( self.wrapper, self.optimizer, 24, 6, dist.is_initialized() ) - pref_e = self.opt_param['kf_start_pref_e'] * ( - self.opt_param['kf_limit_pref_e'] / self.opt_param['kf_start_pref_e']) ** ( - _step_id / self.num_steps) - _ = KFOptWrapper.update_energy(input_dict, label_dict["energy"], pref_e) - pref_f = self.opt_param['kf_start_pref_f'] * ( - self.opt_param['kf_limit_pref_f'] / self.opt_param['kf_start_pref_f']) ** ( - _step_id / self.num_steps) + pref_e = self.opt_param["kf_start_pref_e"] * ( + self.opt_param["kf_limit_pref_e"] + / self.opt_param["kf_start_pref_e"] + ) ** (_step_id / self.num_steps) + _ = KFOptWrapper.update_energy( + input_dict, label_dict["energy"], pref_e + ) + pref_f = self.opt_param["kf_start_pref_f"] * ( + self.opt_param["kf_limit_pref_f"] + / self.opt_param["kf_start_pref_f"] + ) ** (_step_id / self.num_steps) p_energy, p_force = KFOptWrapper.update_force( input_dict, label_dict["force"], pref_f ) # [coord, atype, natoms, mapping, shift, nlist, box] model_pred = {"energy": p_energy, "force": p_force} - module = self.wrapper.module if dist.is_initialized() else self.wrapper + module = ( + self.wrapper.module if dist.is_initialized() else self.wrapper + ) loss, more_loss = module.loss[task_key]( - model_pred, label_dict, int(input_dict["atype"].shape[-1]), learning_rate=pref_lr + model_pred, + label_dict, + int(input_dict["atype"].shape[-1]), + learning_rate=pref_lr, ) elif isinstance(self.loss, DenoiseLoss): KFOptWrapper = KFOptimizerWrapper( self.wrapper, self.optimizer, 24, 6, dist.is_initialized() ) - module = self.wrapper.module if dist.is_initialized() else self.wrapper - model_pred = KFOptWrapper.update_denoise_coord(input_dict, label_dict["clean_coord"], 1, - module.loss[task_key].mask_loss_coord, - label_dict["coord_mask"]) + module = ( + self.wrapper.module if dist.is_initialized() else self.wrapper + ) + model_pred = KFOptWrapper.update_denoise_coord( + input_dict, + label_dict["clean_coord"], + 1, + module.loss[task_key].mask_loss_coord, + label_dict["coord_mask"], + ) loss, more_loss = module.loss[task_key]( - model_pred, label_dict, input_dict["natoms"], learning_rate=pref_lr + model_pred, + label_dict, + input_dict["natoms"], + learning_rate=pref_lr, ) else: raise ValueError("Not supported optimizer type '%s'" % self.opt_type) @@ -437,34 +573,40 @@ def step(_step_id, task_key="Default"): self.wrapper.eval() msg = f"step={_step_id}, lr={cur_lr:.2e}" - def log_loss_train(_loss, _more_loss, _task_key='Default'): + def log_loss_train(_loss, _more_loss, _task_key="Default"): results = {} if not self.multi_task: - suffix = '' + suffix = "" else: - suffix = f'_{_task_key}' + suffix = f"_{_task_key}" _msg = f"loss{suffix}={_loss:.4f}" rmse_val = { - item: _more_loss[item] for item in _more_loss if 'l2_' not in item + item: _more_loss[item] + for item in _more_loss + if "l2_" not in item } - for item in sorted(list(rmse_val.keys())): + for item in sorted(rmse_val.keys()): _msg += f", {item}_train{suffix}={rmse_val[item]:.4f}" results[item] = rmse_val[item] - self.wandb_log({item: rmse_val[item]}, _step_id, f"_train{suffix}") + self.wandb_log( + {item: rmse_val[item]}, _step_id, f"_train{suffix}" + ) return _msg, results - def log_loss_valid(_task_key='Default'): + def log_loss_valid(_task_key="Default"): single_results = {} sum_natoms = 0 if not self.multi_task: - suffix = '' + suffix = "" valid_numb_batch = self.valid_numb_batch else: - suffix = f'_{_task_key}' + suffix = f"_{_task_key}" valid_numb_batch = self.valid_numb_batch[_task_key] for ii in range(valid_numb_batch): self.optimizer.zero_grad() - input_dict, label_dict,_ = self.get_data(is_train=False, task_key=_task_key) + input_dict, label_dict, _ = self.get_data( + is_train=False, task_key=_task_key + ) _, loss, more_loss = self.wrapper( **input_dict, cur_lr=pref_lr, @@ -475,22 +617,22 @@ def log_loss_valid(_task_key='Default'): natoms = int(input_dict["atype"].shape[-1]) sum_natoms += natoms for k, v in more_loss.items(): - if 'l2_' not in k: + if "l2_" not in k: single_results[k] = ( - single_results.get(k, 0.0) + v * natoms + single_results.get(k, 0.0) + v * natoms ) - results = { - k: v / sum_natoms for k, v in single_results.items() - } + results = {k: v / sum_natoms for k, v in single_results.items()} _msg = "" - for item in sorted(list(results.keys())): + for item in sorted(results.keys()): _msg += f", {item}_valid{suffix}={results[item]:.4f}" - self.wandb_log({item: results[item]}, _step_id, f"_valid{suffix}") + self.wandb_log( + {item: results[item]}, _step_id, f"_valid{suffix}" + ) return _msg, results if not self.multi_task: temp_msg, train_results = log_loss_train(loss, more_loss) - msg += '\n' + temp_msg + msg += "\n" + temp_msg temp_msg, valid_results = log_loss_valid() msg += temp_msg else: @@ -498,20 +640,28 @@ def log_loss_valid(_task_key='Default'): valid_results = {_key: {} for _key in self.model_keys} train_msg = {} valid_msg = {} - train_msg[task_key], train_results[task_key] = log_loss_train(loss, more_loss, _task_key=task_key) + train_msg[task_key], train_results[task_key] = log_loss_train( + loss, more_loss, _task_key=task_key + ) for _key in self.model_keys: if _key != task_key: self.optimizer.zero_grad() - input_dict, label_dict,_ = self.get_data(is_train=True, task_key=_key) + input_dict, label_dict, _ = self.get_data( + is_train=True, task_key=_key + ) _, loss, more_loss = self.wrapper( **input_dict, cur_lr=pref_lr, label=label_dict, task_key=_key, ) - train_msg[_key], train_results[_key] = log_loss_train(loss, more_loss, _task_key=_key) - valid_msg[_key], valid_results[_key] = log_loss_valid(_task_key=_key) - msg += '\n' + train_msg[_key] + train_msg[_key], train_results[_key] = log_loss_train( + loss, more_loss, _task_key=_key + ) + valid_msg[_key], valid_results[_key] = log_loss_valid( + _task_key=_key + ) + msg += "\n" + train_msg[_key] msg += valid_msg[_key] train_time = time.time() - self.t0 @@ -524,16 +674,19 @@ def log_loss_valid(_task_key='Default'): if self.lcurve_should_print_header: self.print_header(fout, train_results, valid_results) self.lcurve_should_print_header = False - self.print_on_training(fout, _step_id, cur_lr, train_results, valid_results) + self.print_on_training( + fout, _step_id, cur_lr, train_results, valid_results + ) if ( - ((_step_id + 1) % self.save_freq == 0 and _step_id != self.start_step) - or (_step_id + 1) == self.num_steps + ((_step_id + 1) % self.save_freq == 0 and _step_id != self.start_step) + or (_step_id + 1) == self.num_steps ) and (self.rank == 0 or dist.get_rank() == 0): # Handle the case if rank 0 aborted and re-assigned self.latest_model = Path(self.save_ckpt) self.latest_model = self.latest_model.with_name( - f"{self.latest_model.stem}_{_step_id + 1}{self.latest_model.suffix}") + f"{self.latest_model.stem}_{_step_id + 1}{self.latest_model.suffix}" + ) module = self.wrapper.module if dist.is_initialized() else self.wrapper self.save_model(self.latest_model, lr=cur_lr, step=_step_id) logging.info(f"Saved model to {self.latest_model}") @@ -541,14 +694,19 @@ def log_loss_valid(_task_key='Default'): self.t0 = time.time() with logging_redirect_tqdm(): for step_id in tqdm( - range(self.num_steps), disable=(bool(dist.get_rank()) if dist.is_initialized() else False) or DISABLE_TQDM + range(self.num_steps), + disable=(bool(dist.get_rank()) if dist.is_initialized() else False) + or DISABLE_TQDM, ): # set to None to disable on non-TTY; disable on not rank 0 if step_id < self.start_step: continue if self.multi_task: chosen_index_list = dp_random.choice( - np.arange(self.num_model), p=np.array(self.model_prob), - size=self.world_size, replace=True) + np.arange(self.num_model), + p=np.array(self.model_prob), + size=self.world_size, + replace=True, + ) assert chosen_index_list.size == self.world_size model_index = chosen_index_list[self.rank] model_key = self.model_keys[model_index] @@ -559,12 +717,16 @@ def log_loss_valid(_task_key='Default'): break if ( - self.rank == 0 or dist.get_rank() == 0 + self.rank == 0 or dist.get_rank() == 0 ): # Handle the case if rank 0 aborted and re-assigned if JIT: - pth_model_path = "frozen_model.pth" # We use .pth to denote the frozen model + pth_model_path = ( + "frozen_model.pth" # We use .pth to denote the frozen model + ) self.model.save(pth_model_path) - logging.info(f"Frozen model for inferencing has been saved to {pth_model_path}") + logging.info( + f"Frozen model for inferencing has been saved to {pth_model_path}" + ) try: os.symlink(self.latest_model, self.save_ckpt) except OSError: @@ -573,14 +735,17 @@ def log_loss_valid(_task_key='Default'): if fout: fout.close() - if SAMPLER_RECORD : + if SAMPLER_RECORD: fout1.close() - def save_model(self, save_path, lr=0., step=0): + def save_model(self, save_path, lr=0.0, step=0): module = self.wrapper.module if dist.is_initialized() else self.wrapper - module.train_infos['lr'] = lr - module.train_infos['step'] = step - torch.save({"model": module.state_dict(), "optimizer": self.optimizer.state_dict()}, save_path) + module.train_infos["lr"] = lr + module.train_infos["step"] = step + torch.save( + {"model": module.state_dict(), "optimizer": self.optimizer.state_dict()}, + save_path, + ) def get_data(self, is_train=True, task_key="Default"): if not self.multi_task: @@ -589,7 +754,9 @@ def get_data(self, is_train=True, task_key="Default"): batch_data = next(iter(self.training_data)) except StopIteration: # Refresh the status of the dataloader to start from a new epoch - self.training_data = BufferedIterator(iter(self.training_dataloader)) + self.training_data = BufferedIterator( + iter(self.training_dataloader) + ) batch_data = next(iter(self.training_data)) else: try: @@ -605,7 +772,9 @@ def get_data(self, is_train=True, task_key="Default"): batch_data = next(iter(self.training_data[task_key])) except StopIteration: # Refresh the status of the dataloader to start from a new epoch - self.training_data[task_key] = BufferedIterator(iter(self.training_dataloader[task_key])) + self.training_data[task_key] = BufferedIterator( + iter(self.training_dataloader[task_key]) + ) batch_data = next(iter(self.training_data[task_key])) else: try: @@ -617,12 +786,12 @@ def get_data(self, is_train=True, task_key="Default"): batch_data = next(iter(self.validation_data[task_key])) for key in batch_data.keys(): - if key == 'sid' or key == 'fid': + if key == "sid" or key == "fid": continue elif not isinstance(batch_data[key], list): - if batch_data[key] is not None : + if batch_data[key] is not None: batch_data[key] = batch_data[key].to(DEVICE) - else : + else: batch_data[key] = [item.to(DEVICE) for item in batch_data[key]] input_dict = {} for item in [ @@ -635,14 +804,22 @@ def get_data(self, is_train=True, task_key="Default"): else: input_dict[item] = None label_dict = {} - for item in ["energy", "force", "virial", "clean_coord", "clean_type", "coord_mask", "type_mask"]: + for item in [ + "energy", + "force", + "virial", + "clean_coord", + "clean_type", + "coord_mask", + "type_mask", + ]: if item in batch_data: label_dict[item] = batch_data[item] log_dict = {} if "fid" in batch_data: - log_dict['fid'] = batch_data['fid'] - log_dict['sid'] = batch_data['sid'] - return input_dict, label_dict,log_dict + log_dict["fid"] = batch_data["fid"] + log_dict["sid"] = batch_data["sid"] + return input_dict, label_dict, log_dict def wandb_log(self, data: dict, step, type_suffix=""): if not self.wandb_enabled or self.rank != 0: @@ -651,7 +828,7 @@ def wandb_log(self, data: dict, step, type_suffix=""): wb.log({k + type_suffix: v}, step=step) def print_header(self, fout, train_results, valid_results): - train_keys = sorted(list(train_results.keys())) + train_keys = sorted(train_results.keys()) print_str = "" print_str += "# %5s" % "step" if not self.multi_task: @@ -667,18 +844,21 @@ def print_header(self, fout, train_results, valid_results): for model_key in self.model_keys: if valid_results[model_key] is not None: prop_fmt = " %11s %11s" - for k in sorted(list(train_results[model_key].keys())): - print_str += prop_fmt % (k + f"_val_{model_key}", k + f"_trn_{model_key}") + for k in sorted(train_results[model_key].keys()): + print_str += prop_fmt % ( + k + f"_val_{model_key}", + k + f"_trn_{model_key}", + ) else: prop_fmt = " %11s" - for k in sorted(list(train_results[model_key].keys())): + for k in sorted(train_results[model_key].keys()): print_str += prop_fmt % (k + f"_trn_{model_key}") print_str += " %8s\n" % "lr" fout.write(print_str) fout.flush() def print_on_training(self, fout, step_id, cur_lr, train_results, valid_results): - train_keys = sorted(list(train_results.keys())) + train_keys = sorted(train_results.keys()) print_str = "" print_str += "%7d" % step_id if not self.multi_task: @@ -694,14 +874,14 @@ def print_on_training(self, fout, step_id, cur_lr, train_results, valid_results) for model_key in self.model_keys: if valid_results[model_key] is not None: prop_fmt = " %11.2e %11.2e" - for k in sorted(list(valid_results[model_key].keys())): + for k in sorted(valid_results[model_key].keys()): print_str += prop_fmt % ( valid_results[model_key][k], train_results[model_key][k], ) else: prop_fmt = " %11.2e" - for k in sorted(list(train_results[model_key].keys())): + for k in sorted(train_results[model_key].keys()): print_str += prop_fmt % (train_results[model_key][k]) print_str += " %8.1e\n" % cur_lr fout.write(print_str) diff --git a/deepmd_pt/train/wrapper.py b/deepmd_pt/train/wrapper.py index aff8ca5e..fe423e63 100644 --- a/deepmd_pt/train/wrapper.py +++ b/deepmd_pt/train/wrapper.py @@ -1,32 +1,34 @@ -import logging -import os +# SPDX-License-Identifier: LGPL-3.0-or-later +from typing import ( + Dict, + Optional, + Union, +) + import torch -from typing import Dict, Optional, Union -from deepmd_pt.model.descriptor import * -from deepmd_pt.model.task import * -from deepmd_pt.model.network import TypeEmbedNet if torch.__version__.startswith("2"): import torch._dynamo class ModelWrapper(torch.nn.Module): - - def __init__(self, - model: Union[torch.nn.Module, Dict], - loss: Union[torch.nn.Module, Dict] = None, - model_params=None, - shared_links=None): + def __init__( + self, + model: Union[torch.nn.Module, Dict], + loss: Union[torch.nn.Module, Dict] = None, + model_params=None, + shared_links=None, + ): """Construct a DeePMD model wrapper. Args: - config: The Dict-like configuration with training options. """ - super(ModelWrapper, self).__init__() + super().__init__() self.model_params = model_params if model_params is not None else {} self.train_infos = { - 'lr': 0, - 'step': 0, + "lr": 0, + "step": 0, } self.multi_task = False self.model = torch.nn.ModuleDict() @@ -36,8 +38,9 @@ def __init__(self, elif isinstance(model, dict): self.multi_task = True for task_key in model: - assert isinstance(model[task_key], torch.nn.Module), \ - f"{task_key} in model_dict is not a torch.nn.Module!" + assert isinstance( + model[task_key], torch.nn.Module + ), f"{task_key} in model_dict is not a torch.nn.Module!" self.model[task_key] = model[task_key] # Loss self.loss = None @@ -47,8 +50,9 @@ def __init__(self, self.loss["Default"] = loss elif isinstance(loss, dict): for task_key in loss: - assert isinstance(loss[task_key], torch.nn.Module), \ - f"{task_key} in loss_dict is not a torch.nn.Module!" + assert isinstance( + loss[task_key], torch.nn.Module + ), f"{task_key} in loss_dict is not a torch.nn.Module!" self.loss[task_key] = loss[task_key] self.inference_only = self.loss is None @@ -62,9 +66,16 @@ def set_trainable_params(self): trainable = self.model_params[net_type].get("trainable", True) else: if net_type in self.model_params["model_dict"][model_item]: - trainable = self.model_params["model_dict"][model_item][net_type].get("trainable", True) - if hasattr(self.model[model_item], net_type) and getattr(self.model[model_item], net_type) is not None: - for param in self.model[model_item].__getattr__(net_type).parameters(): + trainable = self.model_params["model_dict"][model_item][ + net_type + ].get("trainable", True) + if ( + hasattr(self.model[model_item], net_type) + and getattr(self.model[model_item], net_type) is not None + ): + for param in ( + self.model[model_item].__getattr__(net_type).parameters() + ): param.requires_grad = trainable def share_params(self, shared_links, resume=False): @@ -77,28 +88,45 @@ def share_params(self, shared_links, resume=False): shared_level_base = shared_base["shared_level"] if "descriptor" in class_type_base: if class_type_base == "descriptor": - base_class = self.model[model_key_base].__getattr__('descriptor') + base_class = self.model[model_key_base].__getattr__("descriptor") elif "hybrid" in class_type_base: - hybrid_index = int(class_type_base.split('_')[-1]) - base_class = self.model[model_key_base].__getattr__('descriptor').descriptor_list[hybrid_index] + hybrid_index = int(class_type_base.split("_")[-1]) + base_class = ( + self.model[model_key_base] + .__getattr__("descriptor") + .descriptor_list[hybrid_index] + ) else: raise RuntimeError(f"Unknown class_type {class_type_base}!") for link_item in shared_links[shared_item]["links"][1:]: class_type_link = link_item["shared_type"] model_key_link = link_item["model_key"] shared_level_link = int(link_item["shared_level"]) - assert shared_level_link >= shared_level_base, "The shared_links must be sorted by shared_level!" - assert "descriptor" in class_type_link, f"Class type mismatched: {class_type_base} vs {class_type_link}!" + assert ( + shared_level_link >= shared_level_base + ), "The shared_links must be sorted by shared_level!" + assert ( + "descriptor" in class_type_link + ), f"Class type mismatched: {class_type_base} vs {class_type_link}!" if class_type_link == "descriptor": - link_class = self.model[model_key_link].__getattr__('descriptor') + link_class = self.model[model_key_link].__getattr__( + "descriptor" + ) elif "hybrid" in class_type_link: - hybrid_index = int(class_type_link.split('_')[-1]) - link_class = self.model[model_key_link].__getattr__('descriptor').descriptor_list[hybrid_index] + hybrid_index = int(class_type_link.split("_")[-1]) + link_class = ( + self.model[model_key_link] + .__getattr__("descriptor") + .descriptor_list[hybrid_index] + ) else: raise RuntimeError(f"Unknown class_type {class_type_link}!") - link_class.share_params(base_class, shared_level_link, resume=resume) + link_class.share_params( + base_class, shared_level_link, resume=resume + ) print( - f'Shared params of {model_key_base}.{class_type_base} and {model_key_link}.{class_type_link}!') + f"Shared params of {model_key_base}.{class_type_base} and {model_key_link}.{class_type_link}!" + ) else: if hasattr(self.model[model_key_base], class_type_base): base_class = self.model[model_key_base].__getattr__(class_type_base) @@ -106,38 +134,59 @@ def share_params(self, shared_links, resume=False): class_type_link = link_item["shared_type"] model_key_link = link_item["model_key"] shared_level_link = int(link_item["shared_level"]) - assert shared_level_link >= shared_level_base, "The shared_links must be sorted by shared_level!" - assert class_type_base == class_type_link, f"Class type mismatched: {class_type_base} vs {class_type_link}!" - link_class = self.model[model_key_link].__getattr__(class_type_link) - link_class.share_params(base_class, shared_level_link, resume=resume) + assert ( + shared_level_link >= shared_level_base + ), "The shared_links must be sorted by shared_level!" + assert ( + class_type_base == class_type_link + ), f"Class type mismatched: {class_type_base} vs {class_type_link}!" + link_class = self.model[model_key_link].__getattr__( + class_type_link + ) + link_class.share_params( + base_class, shared_level_link, resume=resume + ) print( - f'Shared params of {model_key_base}.{class_type_base} and {model_key_link}.{class_type_link}!') + f"Shared params of {model_key_base}.{class_type_base} and {model_key_link}.{class_type_link}!" + ) - def forward(self, coord, atype, box: Optional[torch.Tensor] = None, - cur_lr: Optional[torch.Tensor] = None, label: Optional[torch.Tensor] = None, - task_key: Optional[torch.Tensor] = None, inference_only=False, - do_atomic_virial=False): + def forward( + self, + coord, + atype, + box: Optional[torch.Tensor] = None, + cur_lr: Optional[torch.Tensor] = None, + label: Optional[torch.Tensor] = None, + task_key: Optional[torch.Tensor] = None, + inference_only=False, + do_atomic_virial=False, + ): if not self.multi_task: task_key = "Default" else: - assert task_key is not None, \ - f"Multitask model must specify the inference task! Supported tasks are {list(self.model.keys())}." - model_pred = self.model[task_key](coord, atype, box=box, do_atomic_virial=do_atomic_virial) + assert ( + task_key is not None + ), f"Multitask model must specify the inference task! Supported tasks are {list(self.model.keys())}." + model_pred = self.model[task_key]( + coord, atype, box=box, do_atomic_virial=do_atomic_virial + ) natoms = atype.shape[-1] if not self.inference_only and not inference_only: - loss, more_loss = self.loss[task_key](model_pred, label, natoms=natoms, learning_rate=cur_lr) + loss, more_loss = self.loss[task_key]( + model_pred, label, natoms=natoms, learning_rate=cur_lr + ) return model_pred, loss, more_loss else: return model_pred, None, None def set_extra_state(self, state: Dict): - self.model_params = state['model_params'] - self.train_infos = state['train_infos'] + self.model_params = state["model_params"] + self.train_infos = state["train_infos"] return None - + def get_extra_state(self) -> Dict: state = { - 'model_params': self.model_params, - 'train_infos': self.train_infos, + "model_params": self.model_params, + "train_infos": self.train_infos, } return state diff --git a/deepmd_pt/utils/__init__.py b/deepmd_pt/utils/__init__.py index e69de29b..6ceb116d 100644 --- a/deepmd_pt/utils/__init__.py +++ b/deepmd_pt/utils/__init__.py @@ -0,0 +1 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later diff --git a/deepmd_pt/utils/ase_calc.py b/deepmd_pt/utils/ase_calc.py index 77b4f33d..7730bd0b 100644 --- a/deepmd_pt/utils/ase_calc.py +++ b/deepmd_pt/utils/ase_calc.py @@ -1,17 +1,33 @@ -from ase import Atoms -from ase.calculators.calculator import Calculator, PropertyNotImplementedError -from deepmd_pt.infer.deep_eval import DeepPot -import numpy as np +# SPDX-License-Identifier: LGPL-3.0-or-later +from typing import ( + ClassVar, +) + import dpdata +import numpy as np +from ase import ( + Atoms, +) +from ase.calculators.calculator import ( + Calculator, + PropertyNotImplementedError, +) + +from deepmd_pt.infer.deep_eval import ( + DeepPot, +) class DPCalculator(Calculator): - implemented_properties = ["energy", "free_energy", "forces", "virial", "stress"] + implemented_properties: ClassVar[list] = [ + "energy", + "free_energy", + "forces", + "virial", + "stress", + ] - def __init__( - self, - model - ): + def __init__(self, model): Calculator.__init__(self) self.dp = DeepPot(model) self.type_map = self.dp.type_map @@ -19,16 +35,18 @@ def __init__( def calculate(self, atoms: Atoms, properties, system_changes) -> None: Calculator.calculate(self, atoms, properties, system_changes) system = dpdata.System(atoms, fmt="ase/structure") - type_trans = np.array([self.type_map.index(i) for i in system.data['atom_names']]) - input_coords = system.data['coords'] - input_cells = system.data['cells'] - input_types = list(type_trans[system.data['atom_types']]) + type_trans = np.array( + [self.type_map.index(i) for i in system.data["atom_names"]] + ) + input_coords = system.data["coords"] + input_cells = system.data["cells"] + input_types = list(type_trans[system.data["atom_types"]]) model_predict = self.dp.eval(input_coords, input_cells, input_types) self.results = { "energy": model_predict[0].item(), "free_energy": model_predict[0].item(), "forces": model_predict[1].reshape(-1, 3), - "virial": model_predict[2].reshape(3, 3) + "virial": model_predict[2].reshape(3, 3), } # convert virial into stress for lattice relaxation @@ -36,7 +54,11 @@ def calculate(self, atoms: Atoms, properties, system_changes) -> None: if sum(atoms.get_pbc()) > 0 or (atoms.cell is not None): # the usual convention (tensile stress is positive) # stress = -virial / volume - stress = -0.5 * (self.results["virial"].copy() + self.results["virial"].copy().T) / atoms.get_volume() + stress = ( + -0.5 + * (self.results["virial"].copy() + self.results["virial"].copy().T) + / atoms.get_volume() + ) # Voigt notation self.results["stress"] = stress.flat[[0, 4, 8, 5, 2, 1]] else: diff --git a/deepmd_pt/utils/auto_batch_size.py b/deepmd_pt/utils/auto_batch_size.py index 049bad4c..04cbfa9b 100644 --- a/deepmd_pt/utils/auto_batch_size.py +++ b/deepmd_pt/utils/auto_batch_size.py @@ -1,7 +1,6 @@ # SPDX-License-Identifier: LGPL-3.0-or-later import torch - -from deepmd_utils.utils.batch_size import AutoBatchSize as AutoBatchSizeBase +from deepmd.utils.batch_size import AutoBatchSize as AutoBatchSizeBase class AutoBatchSize(AutoBatchSizeBase): diff --git a/deepmd_pt/utils/cache.py b/deepmd_pt/utils/cache.py index cea7ce28..c40c4050 100644 --- a/deepmd_pt/utils/cache.py +++ b/deepmd_pt/utils/cache.py @@ -1,7 +1,6 @@ -import functools +# SPDX-License-Identifier: LGPL-3.0-or-later import copy as copy_lib -import time -import queue +import functools def lru_cache(maxsize=16, typed=False, copy=False, deepcopy=False): diff --git a/deepmd_pt/utils/dataloader.py b/deepmd_pt/utils/dataloader.py index 2ba7dad6..72006b73 100644 --- a/deepmd_pt/utils/dataloader.py +++ b/deepmd_pt/utils/dataloader.py @@ -1,27 +1,45 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later import logging import os import queue import time -import numpy as np -from threading import Thread -from typing import Callable, Dict, List, Tuple, Type, Union -from multiprocessing.dummy import Pool +from multiprocessing.dummy import ( + Pool, +) +from threading import ( + Thread, +) +from typing import ( + List, +) import h5py import torch import torch.distributed as dist -from deepmd_pt.utils import env -from deepmd_pt.utils.dataset import DeepmdDataSetForLoader -from torch.utils.data import DataLoader, Dataset, WeightedRandomSampler -from torch.utils.data.distributed import DistributedSampler -from deepmd_pt.model.descriptor import Descriptor -from tqdm import tqdm import torch.multiprocessing - -from deepmd_utils.utils.data_system import ( +from deepmd.utils.data_system import ( prob_sys_size_ext, - process_sys_probs + process_sys_probs, +) +from torch.utils.data import ( + DataLoader, + Dataset, + WeightedRandomSampler, +) +from torch.utils.data.distributed import ( + DistributedSampler, +) + +from deepmd_pt.model.descriptor import ( + Descriptor, ) +from deepmd_pt.utils import ( + env, +) +from deepmd_pt.utils.dataset import ( + DeepmdDataSetForLoader, +) + torch.multiprocessing.set_sharing_strategy("file_system") @@ -94,15 +112,15 @@ def construct_dataset(system): self.sampler_list.append(system_sampler) else: system_sampler = None - if isinstance(batch_size,str): + if isinstance(batch_size, str): if batch_size == "auto": rule = 32 elif batch_size.startswith("auto:"): rule = int(batch_size.split(":")[1]) else: rule = None - logging.error(f"Unsupported batch size type") - self.batch_size = rule // system._natoms + logging.error("Unsupported batch size type") + self.batch_size = rule // system._natoms if self.batch_size * system._natoms < rule: self.batch_size += 1 else: @@ -122,7 +140,7 @@ def construct_dataset(system): self.iters = [] for item in self.dataloaders: self.iters.append(iter(item)) - + def set_noise(self, noise_settings): # noise_settings['noise_type'] # "trunc_normal", "normal", "uniform" # noise_settings['noise'] # float, default 1.0 @@ -137,17 +155,16 @@ def __len__(self): return len(self.dataloaders) def __getitem__(self, idx): - #logging.warning(str(torch.distributed.get_rank())+" idx: "+str(idx)+" index: "+str(self.index[idx])) + # logging.warning(str(torch.distributed.get_rank())+" idx: "+str(idx)+" index: "+str(self.index[idx])) try: batch = next(self.iters[idx]) except StopIteration: self.iters[idx] = iter(self.dataloaders[idx]) batch = next(self.iters[idx]) - batch['sid'] = idx + batch["sid"] = idx return batch - _sentinel = object() QUEUESIZE = 32 @@ -167,7 +184,7 @@ def run(self): self._queue.put(_sentinel) -class BufferedIterator(object): +class BufferedIterator: def __init__(self, iterable): self._queue = queue.Queue(QUEUESIZE) self._iterable = iterable @@ -235,8 +252,12 @@ def collate_tensor_fn(batch): # If we're in a background process, concatenate directly into a # shared memory tensor to avoid an extra copy numel = sum(x.numel() for x in tmp_batch) - storage = hybrid_item._typed_storage()._new_shared(numel, device=hybrid_item.device) - out = hybrid_item.new(storage).resize_(len(tmp_batch), *list(hybrid_item.size())) + storage = hybrid_item._typed_storage()._new_shared( + numel, device=hybrid_item.device + ) + out = hybrid_item.new(storage).resize_( + len(tmp_batch), *list(hybrid_item.size()) + ) out_hybrid.append(torch.stack(tmp_batch, 0, out=out)) return out_hybrid @@ -277,21 +298,22 @@ def collate_batch(batch): result[key] = collate_tensor_fn([d[key] for d in batch]) return result -def get_weighted_sampler(training_data,prob_style,sys_prob=False): - if sys_prob == False: + +def get_weighted_sampler(training_data, prob_style, sys_prob=False): + if sys_prob is False: if prob_style == "prob_uniform": prob_v = 1.0 / float(training_data.__len__()) probs = [prob_v for ii in range(training_data.__len__())] - else:#prob_sys_size;A:B:p1;C:D:p2 or prob_sys_size = prob_sys_size;0:nsys:1.0 + else: # prob_sys_size;A:B:p1;C:D:p2 or prob_sys_size = prob_sys_size;0:nsys:1.0 if prob_style == "prob_sys_size": - style = "prob_sys_size;0:{}:1.0".format(len(training_data)) + style = f"prob_sys_size;0:{len(training_data)}:1.0" else: style = prob_style - probs = prob_sys_size_ext(style,len(training_data),training_data.index) + probs = prob_sys_size_ext(style, len(training_data), training_data.index) else: - probs = process_sys_probs(prob_style,training_data.index) - logging.info("Generated weighted sampler with prob array: "+str(probs)) - #training_data.total_batch is the size of one epoch, you can increase it to avoid too many rebuilding of iteraters + probs = process_sys_probs(prob_style, training_data.index) + logging.info("Generated weighted sampler with prob array: " + str(probs)) + # training_data.total_batch is the size of one epoch, you can increase it to avoid too many rebuilding of iteraters len_sampler = training_data.total_batch * env.NUM_WORKERS - sampler = WeightedRandomSampler(probs,len_sampler, replacement = True) + sampler = WeightedRandomSampler(probs, len_sampler, replacement=True) return sampler diff --git a/deepmd_pt/utils/dataset.py b/deepmd_pt/utils/dataset.py index d3c2033b..4dae575a 100644 --- a/deepmd_pt/utils/dataset.py +++ b/deepmd_pt/utils/dataset.py @@ -1,41 +1,67 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later import glob -import logging -import numpy as np import os -import torch -from typing import List -from torch.utils.data import Dataset -from deepmd_pt.utils import env, dp_random -from deepmd_pt.utils.preprocess import Region3D, normalize_coord, make_env_mat -from tqdm import trange +from typing import ( + List, + Optional, +) + import h5py +import numpy as np +import torch import torch.distributed as dist -from deepmd_pt.utils.cache import lru_cache - - -class DeepmdDataSystem(object): - - def __init__(self, sys_path: str, rcut, sec, type_map: List[str] = None, type_split=True, noise_settings=None, shuffle=True): +from torch.utils.data import ( + Dataset, +) +from tqdm import ( + trange, +) + +from deepmd_pt.utils import ( + dp_random, + env, +) +from deepmd_pt.utils.cache import ( + lru_cache, +) +from deepmd_pt.utils.preprocess import ( + Region3D, + make_env_mat, + normalize_coord, +) + + +class DeepmdDataSystem: + def __init__( + self, + sys_path: str, + rcut, + sec, + type_map: Optional[List[str]] = None, + type_split=True, + noise_settings=None, + shuffle=True, + ): """Construct DeePMD-style frame collection of one system. Args: - sys_path: Paths to the system. - type_map: Atom types. """ - sys_path = sys_path.replace('#', '') - if '.hdf5' in sys_path: + sys_path = sys_path.replace("#", "") + if ".hdf5" in sys_path: tmp = sys_path.split("/") path = "/".join(tmp[:-1]) sys = tmp[-1] self.file = h5py.File(path)[sys] self._dirs = [] for item in self.file.keys(): - if 'set.' in item: + if "set." in item: self._dirs.append(item) self._dirs.sort() else: self.file = None - self._dirs = glob.glob(os.path.join(sys_path, 'set.*')) + self._dirs = glob.glob(os.path.join(sys_path, "set.*")) self._dirs.sort() self.type_split = type_split self.noise_settings = noise_settings @@ -72,7 +98,9 @@ def __init__(self, sys_path: str, rcut, sec, type_map: List[str] = None, type_sp self.enforce_type_map = False if type_map is not None and self._type_map is not None: if not self.mixed_type: - atom_type = [type_map.index(self._type_map[ii]) for ii in self._atom_type] + atom_type = [ + type_map.index(self._type_map[ii]) for ii in self._atom_type + ] self._atom_type = np.array(atom_type, dtype=np.int32) else: @@ -91,11 +119,11 @@ def __init__(self, sys_path: str, rcut, sec, type_map: List[str] = None, type_sp self._idx_map = _make_idx_map(self._atom_type) self._data_dict = {} - self.add('box', 9, must=self.pbc) - self.add('coord', 3, atomic=True, must=True) - self.add('energy', 1, atomic=False, must=False, high_prec=True) - self.add('force', 3, atomic=True, must=False, high_prec=False) - self.add('virial', 9, atomic=False, must=False, high_prec=False) + self.add("box", 9, must=self.pbc) + self.add("coord", 3, atomic=True, must=True) + self.add("energy", 1, atomic=False, must=False, high_prec=True) + self.add("force", 3, atomic=True, must=False, high_prec=False) + self.add("virial", 9, atomic=False, must=False, high_prec=False) self._sys_path = sys_path self.rcut = rcut @@ -119,7 +147,7 @@ def __init__(self, sys_path: str, rcut, sec, type_map: List[str] = None, type_sp def _check_pbc(self, sys_path): pbc = True - if os.path.isfile(os.path.join(sys_path, 'nopbc')): + if os.path.isfile(os.path.join(sys_path, "nopbc")): pbc = False self.pbc = pbc @@ -140,13 +168,14 @@ def set_noise(self, noise_settings): self.mask_prob = float(noise_settings.get("mask_prob", 0.15)) self.same_mask = noise_settings.get("noise_type", False) - def add(self, - key: str, - ndof: int, - atomic: bool = False, - must: bool = False, - high_prec: bool = False - ): + def add( + self, + key: str, + ndof: int, + atomic: bool = False, + must: bool = False, + high_prec: bool = False, + ): """Add a data item that to be loaded. Args: @@ -157,10 +186,10 @@ def add(self, - high_prec: Load the data and store in float64, otherwise in float32. """ self._data_dict[key] = { - 'ndof': ndof, - 'atomic': atomic, - 'must': must, - 'high_prec': high_prec + "ndof": ndof, + "atomic": atomic, + "must": must, + "high_prec": high_prec, } # deprecated TODO @@ -170,11 +199,11 @@ def get_batch_for_train(self, batch_size: int): Args: - batch_size: Frame count. """ - if not hasattr(self, '_frames'): + if not hasattr(self, "_frames"): self.set_size = 0 self._set_count = 0 self._iterator = 0 - if batch_size == 'auto': + if batch_size == "auto": batch_size = -(-32 // self._natoms) if self._iterator + batch_size > self.set_size: set_idx = self._set_count % len(self._dirs) @@ -194,12 +223,12 @@ def get_batch_for_train(self, batch_size: int): if dist.is_initialized(): world_size = dist.get_world_size() rank = dist.get_rank() - ssize = self._frames['coord'].shape[0] + ssize = self._frames["coord"].shape[0] subsize = ssize // world_size self._iterator = rank * subsize self.set_size = min((rank + 1) * subsize, ssize) else: - self.set_size = self._frames['coord'].shape[0] + self.set_size = self._frames["coord"].shape[0] self._iterator = 0 self._set_count += 1 iterator = min(self._iterator + batch_size, self.set_size) @@ -213,11 +242,11 @@ def get_batch(self, batch_size: int): Args: - batch_size: Frame count. """ - if not hasattr(self, '_frames'): + if not hasattr(self, "_frames"): self.set_size = 0 self._set_count = 0 self._iterator = 0 - if batch_size == 'auto': + if batch_size == "auto": batch_size = -(-32 // self._natoms) if self._iterator + batch_size > self.set_size: set_idx = self._set_count % len(self._dirs) @@ -226,7 +255,7 @@ def get_batch(self, batch_size: int): frames = self.preprocess(frames) cnt = 0 for item in self.sets: - if not item is None: + if item is not None: cnt += 1 if cnt < env.CACHE_PER_SYS: self.sets[set_idx] = frames @@ -234,7 +263,7 @@ def get_batch(self, batch_size: int): frames = self.sets[set_idx] self._frames = frames self._shuffle_data() - self.set_size = self._frames['coord'].shape[0] + self.set_size = self._frames["coord"].shape[0] self._iterator = 0 self._set_count += 1 iterator = min(self._iterator + batch_size, self.set_size) @@ -264,20 +293,22 @@ def get_natoms_vec(self, ntypes: int): return tmp.astype(np.int32) def _load_type(self, sys_path): - if not self.file is None: - return self.file['type.raw'][:] + if self.file is not None: + return self.file["type.raw"][:] else: - return np.loadtxt(os.path.join(sys_path, 'type.raw'), dtype=np.int32, ndmin=1) + return np.loadtxt( + os.path.join(sys_path, "type.raw"), dtype=np.int32, ndmin=1 + ) def _load_type_map(self, sys_path): - if not self.file is None: - tmp = self.file['type_map.raw'][:].tolist() - tmp = [item.decode('ascii') for item in tmp] + if self.file is not None: + tmp = self.file["type_map.raw"][:].tolist() + tmp = [item.decode("ascii") for item in tmp] return tmp else: - fname = os.path.join(sys_path, 'type_map.raw') + fname = os.path.join(sys_path, "type_map.raw") if os.path.isfile(fname): - with open(fname, 'r') as fin: + with open(fname) as fin: content = fin.read() return content.split() else: @@ -295,33 +326,35 @@ def _load_type_mix(self, set_name): def _load_set(self, set_name, fast=False): if self.file is None: path = os.path.join(set_name, "coord.npy") - if self._data_dict['coord']['high_prec']: + if self._data_dict["coord"]["high_prec"]: coord = np.load(path).astype(env.GLOBAL_ENER_FLOAT_PRECISION) else: coord = np.load(path).astype(env.GLOBAL_NP_FLOAT_PRECISION) if coord.ndim == 1: coord = coord.reshape([1, -1]) - assert (coord.shape[1] == self._data_dict['coord']['ndof'] * self._natoms) + assert coord.shape[1] == self._data_dict["coord"]["ndof"] * self._natoms nframes = coord.shape[0] if fast: return nframes - data = {'type': np.tile(self._atom_type[self._idx_map], (nframes, 1))} + data = {"type": np.tile(self._atom_type[self._idx_map], (nframes, 1))} for kk in self._data_dict.keys(): - data['find_' + kk], data[kk] = self._load_data( + data["find_" + kk], data[kk] = self._load_data( set_name, kk, nframes, - self._data_dict[kk]['ndof'], - atomic=self._data_dict[kk]['atomic'], - high_prec=self._data_dict[kk]['high_prec'], - must=self._data_dict[kk]['must'] + self._data_dict[kk]["ndof"], + atomic=self._data_dict[kk]["atomic"], + high_prec=self._data_dict[kk]["high_prec"], + must=self._data_dict[kk]["must"], ) if self.mixed_type: # nframes x natoms atom_type_mix = self._load_type_mix(set_name) if self.enforce_type_map: try: - atom_type_mix_ = self.type_idx_map[atom_type_mix].astype(np.int32) + atom_type_mix_ = self.type_idx_map[atom_type_mix].astype( + np.int32 + ) except IndexError as e: raise IndexError( "some types in 'real_atom_types.npy' of set {} are not contained in {} types!".format( @@ -342,13 +375,15 @@ def _load_set(self, set_name, fast=False): dtype=np.int32, ).T assert ( - atom_type_nums.sum(axis=-1) + ghost_nums.sum(axis=-1) == natoms + atom_type_nums.sum(axis=-1) + ghost_nums.sum(axis=-1) == natoms ).all(), "some types in 'real_atom_types.npy' of set {} are not contained in {} types!".format( set_name, self.get_ntypes() ) data["real_natoms_vec"] = np.concatenate( ( - np.tile(np.array([natoms, natoms], dtype=np.int32), (nframes, 1)), + np.tile( + np.array([natoms, natoms], dtype=np.int32), (nframes, 1) + ), atom_type_nums, ), axis=-1, @@ -357,19 +392,23 @@ def _load_set(self, set_name, fast=False): return data else: data = {} - nframes = self.file[set_name][f"coord.npy"].shape[0] + nframes = self.file[set_name]["coord.npy"].shape[0] if fast: return nframes - for key in ['coord', 'energy', 'force', 'box']: + for key in ["coord", "energy", "force", "box"]: data[key] = self.file[set_name][f"{key}.npy"][:] - if self._data_dict[key]['atomic']: - data[key] = data[key].reshape(nframes, self._natoms, -1)[:, self._idx_map, :] + if self._data_dict[key]["atomic"]: + data[key] = data[key].reshape(nframes, self._natoms, -1)[ + :, self._idx_map, : + ] if self.mixed_type: # nframes x natoms atom_type_mix = self._load_type_mix(set_name) if self.enforce_type_map: try: - atom_type_mix_ = self.type_idx_map[atom_type_mix].astype(np.int32) + atom_type_mix_ = self.type_idx_map[atom_type_mix].astype( + np.int32 + ) except IndexError as e: raise IndexError( "some types in 'real_atom_types.npy' of set {} are not contained in {} types!".format( @@ -390,25 +429,29 @@ def _load_set(self, set_name, fast=False): dtype=np.int32, ).T assert ( - atom_type_nums.sum(axis=-1) + ghost_nums.sum(axis=-1) == natoms + atom_type_nums.sum(axis=-1) + ghost_nums.sum(axis=-1) == natoms ).all(), "some types in 'real_atom_types.npy' of set {} are not contained in {} types!".format( set_name, self.get_ntypes() ) data["real_natoms_vec"] = np.concatenate( ( - np.tile(np.array([natoms, natoms], dtype=np.int32), (nframes, 1)), + np.tile( + np.array([natoms, natoms], dtype=np.int32), (nframes, 1) + ), atom_type_nums, ), axis=-1, ) else: - data['type'] = np.tile(self._atom_type[self._idx_map], (nframes, 1)) + data["type"] = np.tile(self._atom_type[self._idx_map], (nframes, 1)) return data - def _load_data(self, set_name, key, nframes, ndof, atomic=False, must=True, high_prec=False): + def _load_data( + self, set_name, key, nframes, ndof, atomic=False, must=True, high_prec=False + ): if atomic: ndof *= self._natoms - path = os.path.join(set_name, key + '.npy') + path = os.path.join(set_name, key + ".npy") # logging.info('Loading data from: %s', path) if os.path.isfile(path): if high_prec: @@ -432,27 +475,35 @@ def _load_data(self, set_name, key, nframes, ndof, atomic=False, must=True, high # deprecated TODO def preprocess(self, batch): - n_frames = batch['coord'].shape[0] + n_frames = batch["coord"].shape[0] for kk in self._data_dict.keys(): if "find_" in kk: pass else: - batch[kk] = torch.tensor(batch[kk], dtype=env.GLOBAL_PT_FLOAT_PRECISION, device=env.PREPROCESS_DEVICE) - if self._data_dict[kk]['atomic']: - batch[kk] = batch[kk].view(n_frames, -1, self._data_dict[kk]['ndof']) + batch[kk] = torch.tensor( + batch[kk], + dtype=env.GLOBAL_PT_FLOAT_PRECISION, + device=env.PREPROCESS_DEVICE, + ) + if self._data_dict[kk]["atomic"]: + batch[kk] = batch[kk].view( + n_frames, -1, self._data_dict[kk]["ndof"] + ) - for kk in ['type', 'real_natoms_vec']: + for kk in ["type", "real_natoms_vec"]: if kk in batch.keys(): - batch[kk] = torch.tensor(batch[kk], dtype=torch.long, device=env.PREPROCESS_DEVICE) - batch['atype'] = batch.pop('type') + batch[kk] = torch.tensor( + batch[kk], dtype=torch.long, device=env.PREPROCESS_DEVICE + ) + batch["atype"] = batch.pop("type") - keys = ['nlist', 'nlist_loc', 'nlist_type', 'shift', 'mapping'] - coord = batch['coord'] - atype = batch['atype'] - box = batch['box'] + keys = ["nlist", "nlist_loc", "nlist_type", "shift", "mapping"] + coord = batch["coord"] + atype = batch["atype"] + box = batch["box"] rcut = self.rcut sec = self.sec - assert batch['atype'].max() < len(self._type_map) + assert batch["atype"].max() < len(self._type_map) nlist, nlist_loc, nlist_type, shift, mapping = [], [], [], [], [] for sid in trange(n_frames, disable=env.DISABLE_TQDM): @@ -460,7 +511,9 @@ def preprocess(self, batch): nloc = atype[sid].shape[0] _coord = normalize_coord(coord[sid], region, nloc) coord[sid] = _coord - a, b, c, d, e = make_env_mat(_coord, atype[sid], region, rcut, sec, type_split=self.type_split) + a, b, c, d, e = make_env_mat( + _coord, atype[sid], region, rcut, sec, type_split=self.type_split + ) nlist.append(a) nlist_loc.append(b) nlist_type.append(c) @@ -469,21 +522,26 @@ def preprocess(self, batch): nlist = torch.stack(nlist) nlist_loc = torch.stack(nlist_loc) nlist_type = torch.stack(nlist_type) - batch['nlist'] = nlist - batch['nlist_loc'] = nlist_loc - batch['nlist_type'] = nlist_type + batch["nlist"] = nlist + batch["nlist_loc"] = nlist_loc + batch["nlist_type"] = nlist_type natoms_extended = max([item.shape[0] for item in shift]) - batch['shift'] = torch.zeros((n_frames, natoms_extended, 3), dtype=env.GLOBAL_PT_FLOAT_PRECISION, - device=env.PREPROCESS_DEVICE) - batch['mapping'] = torch.zeros((n_frames, natoms_extended), dtype=torch.long, device=env.PREPROCESS_DEVICE) + batch["shift"] = torch.zeros( + (n_frames, natoms_extended, 3), + dtype=env.GLOBAL_PT_FLOAT_PRECISION, + device=env.PREPROCESS_DEVICE, + ) + batch["mapping"] = torch.zeros( + (n_frames, natoms_extended), dtype=torch.long, device=env.PREPROCESS_DEVICE + ) for i in range(len(shift)): natoms_tmp = shift[i].shape[0] - batch['shift'][i, :natoms_tmp] = shift[i] - batch['mapping'][i, :natoms_tmp] = mapping[i] + batch["shift"][i, :natoms_tmp] = shift[i] + batch["mapping"][i, :natoms_tmp] = mapping[i] return batch def _shuffle_data(self): - nframes = self._frames['coord'].shape[0] + nframes = self._frames["coord"].shape[0] idx = np.arange(nframes) if self.shuffle: dp_random.shuffle(idx) @@ -495,7 +553,7 @@ def _get_subdata(self, idx=None): new_data = {} for ii in data: dd = data[ii] - if 'find_' in ii: + if "find_" in ii: new_data[ii] = dd else: if idx is not None: @@ -510,59 +568,70 @@ def single_preprocess(self, batch, sid): if "find_" in kk: pass else: - batch[kk] = torch.tensor(batch[kk][sid], dtype=env.GLOBAL_PT_FLOAT_PRECISION, - device=env.PREPROCESS_DEVICE) - if self._data_dict[kk]['atomic']: - batch[kk] = batch[kk].view(-1, self._data_dict[kk]['ndof']) - for kk in ['type', 'real_natoms_vec']: + batch[kk] = torch.tensor( + batch[kk][sid], + dtype=env.GLOBAL_PT_FLOAT_PRECISION, + device=env.PREPROCESS_DEVICE, + ) + if self._data_dict[kk]["atomic"]: + batch[kk] = batch[kk].view(-1, self._data_dict[kk]["ndof"]) + for kk in ["type", "real_natoms_vec"]: if kk in batch.keys(): - batch[kk] = torch.tensor(batch[kk][sid], dtype=torch.long, device=env.PREPROCESS_DEVICE) - clean_coord = batch.pop('coord') - clean_type = batch.pop('type') + batch[kk] = torch.tensor( + batch[kk][sid], dtype=torch.long, device=env.PREPROCESS_DEVICE + ) + clean_coord = batch.pop("coord") + clean_type = batch.pop("type") nloc = clean_type.shape[0] rcut = self.rcut sec = self.sec nlist, nlist_loc, nlist_type, shift, mapping = [], [], [], [], [] if self.pbc: - box = batch['box'] + box = batch["box"] region = Region3D(box) else: box = None - batch['box'] = None + batch["box"] = None region = None if self.noise_settings is None: - batch['atype'] = clean_type - batch['coord'] = clean_coord + batch["atype"] = clean_type + batch["coord"] = clean_coord coord = clean_coord - atype = batch['atype'] + atype = batch["atype"] if self.pbc: _coord = normalize_coord(coord, region, nloc) else: _coord = coord.clone() - batch['coord'] = _coord - nlist, nlist_loc, nlist_type, shift, mapping = make_env_mat(_coord, atype, region, rcut, sec, - pbc=self.pbc, - type_split=self.type_split) - batch['nlist'] = nlist - batch['nlist_loc'] = nlist_loc - batch['nlist_type'] = nlist_type - batch['shift'] = shift - batch['mapping'] = mapping + batch["coord"] = _coord + nlist, nlist_loc, nlist_type, shift, mapping = make_env_mat( + _coord, + atype, + region, + rcut, + sec, + pbc=self.pbc, + type_split=self.type_split, + ) + batch["nlist"] = nlist + batch["nlist_loc"] = nlist_loc + batch["nlist_type"] = nlist_type + batch["shift"] = shift + batch["mapping"] = mapping return batch else: - batch['clean_type'] = clean_type + batch["clean_type"] = clean_type if self.pbc: _clean_coord = normalize_coord(clean_coord, region, nloc) else: _clean_coord = clean_coord.clone() - batch['clean_coord'] = _clean_coord + batch["clean_coord"] = _clean_coord # add noise for i in range(self.max_fail_num): mask_num = 0 if self.noise_mode == "fix_num": mask_num = self.mask_num - if(len(batch["clean_type"])= stop_steps: self.decay_steps = default_ds - self.decay_rate = np.exp(np.log(stop_lr / self.start_lr) / (stop_steps / self.decay_steps)) - if 'decay_rate' in kwargs: - self.decay_rate = kwargs['decay_rate'] - if 'min_lr' in kwargs: - self.min_lr = kwargs['min_lr'] + self.decay_rate = np.exp( + np.log(stop_lr / self.start_lr) / (stop_steps / self.decay_steps) + ) + if "decay_rate" in kwargs: + self.decay_rate = kwargs["decay_rate"] + if "min_lr" in kwargs: + self.min_lr = kwargs["min_lr"] else: self.min_lr = 3e-10 diff --git a/deepmd_pt/utils/multi_task.py b/deepmd_pt/utils/multi_task.py index ea3e480c..2b98149b 100644 --- a/deepmd_pt/utils/multi_task.py +++ b/deepmd_pt/utils/multi_task.py @@ -1,27 +1,42 @@ -from deepmd_pt.model.descriptor import * -from deepmd_pt.model.task import * -from deepmd_pt.model.network import TypeEmbedNet -from copy import deepcopy +# SPDX-License-Identifier: LGPL-3.0-or-later +from copy import ( + deepcopy, +) + +from deepmd_pt.model.descriptor import ( + DescrptDPA1, + DescrptDPA2, + DescrptSeA, +) +from deepmd_pt.model.network.network import ( + TypeEmbedNet, +) +from deepmd_pt.model.task import ( + EnergyFittingNet, + EnergyFittingNetDirect, + FittingNetAttenLcc, +) def preprocess_shared_params(model_config): - """ Preprocess the model params for multitask model, and generate the links dict for further sharing. + """Preprocess the model params for multitask model, and generate the links dict for further sharing. Args: model_config: Model params of multitask model. - Returns: - model_config: Preprocessed model params of multitask model. - Those string names are replaced with real params in `shared_dict` of model params. - shared_links: Dict of link infos for further sharing. - Each item, whose key must be in `shared_dict`, is a dict with following keys: - - "type": The real class type of this item. - - "links": List of shared settings, each sub-item is a dict with following keys: - - "model_key": Model key in the `model_dict` to share this item. - - "shared_type": Type of this shard item. - - "shared_level": Shared level (int) of this item in this model. - Lower for more params to share, 0 means to share all params in this item. - This list are sorted by "shared_level". + Returns + ------- + model_config: Preprocessed model params of multitask model. + Those string names are replaced with real params in `shared_dict` of model params. + shared_links: Dict of link infos for further sharing. + Each item, whose key must be in `shared_dict`, is a dict with following keys: + - "type": The real class type of this item. + - "links": List of shared settings, each sub-item is a dict with following keys: + - "model_key": Model key in the `model_dict` to share this item. + - "shared_type": Type of this shard item. + - "shared_level": Shared level (int) of this item in this model. + Lower for more params to share, 0 means to share all params in this item. + This list are sorted by "shared_level". """ assert "model_dict" in model_config, "only multi-task model can use this method!" supported_types = ["type_map", "type_embedding", "descriptor", "fitting_net"] @@ -29,15 +44,16 @@ def preprocess_shared_params(model_config): shared_links = {} type_map_keys = [] - def replace_one_item(params_dict, key_type, key_in_dict, suffix='', index=None): + def replace_one_item(params_dict, key_type, key_in_dict, suffix="", index=None): shared_type = key_type shared_key = key_in_dict shared_level = 0 if ":" in key_in_dict: shared_key = key_in_dict.split(":")[0] shared_level = int(key_in_dict.split(":")[1]) - assert shared_key in shared_dict, \ - f"Appointed {shared_type} {shared_key} are not in the shared_dict! Please check the input params." + assert ( + shared_key in shared_dict + ), f"Appointed {shared_type} {shared_key} are not in the shared_dict! Please check the input params." if index is None: params_dict[shared_type] = deepcopy(shared_dict[shared_key]) else: @@ -49,9 +65,11 @@ def replace_one_item(params_dict, key_type, key_in_dict, suffix='', index=None): if shared_key not in shared_links: class_name = get_class_name(shared_type, shared_dict[key_in_dict]) shared_links[shared_key] = {"type": class_name, "links": []} - link_item = {"model_key": model_key, - "shared_type": shared_type + suffix, - "shared_level": shared_level} + link_item = { + "model_key": model_key, + "shared_type": shared_type + suffix, + "shared_level": shared_level, + } shared_links[shared_key]["links"].append(link_item) for model_key in model_config["model_dict"]: @@ -64,10 +82,17 @@ def replace_one_item(params_dict, key_type, key_in_dict, suffix='', index=None): elif item_params.get("type", "") == "hybrid": for ii, hybrid_item in enumerate(item_params["list"]): if isinstance(hybrid_item, str): - replace_one_item(model_params_item[item_key]["list"], item_key, hybrid_item, - suffix=f"_hybrid_{ii}", index=ii) + replace_one_item( + model_params_item[item_key]["list"], + item_key, + hybrid_item, + suffix=f"_hybrid_{ii}", + index=ii, + ) for shared_key in shared_links: - shared_links[shared_key]["links"] = sorted(shared_links[shared_key]["links"], key=lambda x: x['shared_level']) + shared_links[shared_key]["links"] = sorted( + shared_links[shared_key]["links"], key=lambda x: x["shared_level"] + ) assert len(type_map_keys) == 1, "Multitask model must have only one type_map!" return model_config, shared_links @@ -79,14 +104,15 @@ def get_class_name(item_key, item_params): item_type = item_params.get("type", "se_e2_a") if item_type == "se_e2_a": return DescrptSeA.__name__ - elif item_type == "se_atten": - return DescrptSeAtten.__name__ - elif item_type == "se_uni": - return DescrptSeUni.__name__ - elif item_type == "gaussian_lcc": - return DescrptGaussianLcc.__name__ - elif item_type == "hybrid": - return DescrptHybrid.__name__ + elif item_type in ["se_atten", "dpa1"]: + return DescrptDPA1.__name__ + elif item_type in ["dpa2"]: + return DescrptDPA2.__name__ + # todo add support for other combination + # elif item_type == "gaussian_lcc": + # return DescrptGaussianLcc.__name__ + # elif item_type == "hybrid": + # return DescrptHybrid.__name__ else: raise RuntimeError(f"Unknown descriptor type {item_type}") elif item_key == "fitting_net": diff --git a/deepmd_pt/utils/nlist.py b/deepmd_pt/utils/nlist.py index 7f315c55..afdc69c3 100644 --- a/deepmd_pt/utils/nlist.py +++ b/deepmd_pt/utils/nlist.py @@ -1,17 +1,18 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later +from typing import ( + Dict, + List, + Optional, + Union, +) + import torch -import itertools -import numpy as np -from deepmd_pt.utils import env -from deepmd_pt.utils.region import ( - phys2inter, - inter2phys, - to_face_distance, + +from deepmd_pt.utils import ( + env, ) -from typing import ( - List, - Union, - Optional, - Dict, +from deepmd_pt.utils.region import ( + to_face_distance, ) @@ -23,29 +24,29 @@ def _build_neighbor_list( rmin: float = 1e-10, cut_nearest: bool = True, ) -> torch.Tensor: - """build neightbor list for a single frame. keeps nsel neighbors. - coord1 : [nall x 3] - - ret: [nloc x nsel] stores indexes of coord1 - """ - nall = coord1.shape[-1] // 3 - coord0 = torch.split(coord1, [nloc*3, (nall-nloc)*3])[0] - # nloc x nall x 3 - diff = coord1.view([-1,3])[None,:,:] - coord0.view([-1,3])[:,None,:] - assert(list(diff.shape) == [nloc, nall, 3]) - # nloc x nall - rr = torch.linalg.norm(diff, dim=-1) - rr, nlist = torch.sort(rr, dim=-1) - if cut_nearest: - # nloc x (nall-1) - rr = torch.split(rr, [1,nall-1], dim=-1)[-1] - nlist = torch.split(nlist, [1,nall-1], dim=-1)[-1] - # nloc x nsel - nnei = rr.shape[1] - rr = torch.split(rr, [nsel,nnei-nsel], dim=-1)[0] - nlist = torch.split(nlist, [nsel,nnei-nsel], dim=-1)[0] - nlist = nlist.masked_fill((rr > rcut), -1) - return nlist + """Build neightbor list for a single frame. keeps nsel neighbors. + coord1 : [nall x 3]. + + ret: [nloc x nsel] stores indexes of coord1. + """ + nall = coord1.shape[-1] // 3 + coord0 = torch.split(coord1, [nloc * 3, (nall - nloc) * 3])[0] + # nloc x nall x 3 + diff = coord1.view([-1, 3])[None, :, :] - coord0.view([-1, 3])[:, None, :] + assert list(diff.shape) == [nloc, nall, 3] + # nloc x nall + rr = torch.linalg.norm(diff, dim=-1) + rr, nlist = torch.sort(rr, dim=-1) + if cut_nearest: + # nloc x (nall-1) + rr = torch.split(rr, [1, nall - 1], dim=-1)[-1] + nlist = torch.split(nlist, [1, nall - 1], dim=-1)[-1] + # nloc x nsel + nnei = rr.shape[1] + rr = torch.split(rr, [nsel, nnei - nsel], dim=-1)[0] + nlist = torch.split(nlist, [nsel, nnei - nsel], dim=-1)[0] + nlist = nlist.masked_fill((rr > rcut), -1) + return nlist def build_neighbor_list_lower( @@ -56,30 +57,31 @@ def build_neighbor_list_lower( sel: Union[int, List[int]], distinguish_types: bool = True, ) -> torch.Tensor: - """build neightbor list for a single frame. keeps nsel neighbors. - Parameters - ---------- - coord1 : torch.Tensor + """Build neightbor list for a single frame. keeps nsel neighbors. + + Parameters + ---------- + coord1 : torch.Tensor exptended coordinates of shape [nall x 3] - atype : torch.Tensor + atype : torch.Tensor extended atomic types of shape [nall] - nloc: int + nloc : int number of local atoms. - rcut: float + rcut : float cut-off radius - nsel: int or List[int] + sel : int or List[int] maximal number of neighbors (of each type). - if distinguish_types==True, nsel should be list and - the length of nsel should be equal to number of + if distinguish_types==True, nsel should be list and + the length of nsel should be equal to number of types. - distinguish_types: bool - distinguish different types. - - Returns - ------- - neighbor_list : torch.Tensor + distinguish_types : bool + distinguish different types. + + Returns + ------- + neighbor_list : torch.Tensor Neighbor list of shape [nloc, nsel], the neighbors - are stored in an ascending order. If the number of + are stored in an ascending order. If the number of neighbors is less than nsel, the positions are masked with -1. The neighbor list of an atom looks like |------ nsel ------| @@ -88,61 +90,67 @@ def build_neighbor_list_lower( |---- nsel[0] -----| |---- nsel[1] -----| xx xx xx xx -1 -1 -1 xx xx xx -1 -1 -1 -1 - """ - nall = coord1.shape[0]//3 - if isinstance(sel, int): - sel = [sel] - nsel = sum(sel) - # nloc x 3 - coord0 = coord1[:nloc * 3] - # nloc x nall x 3 - diff = coord1.view([-1, 3]).unsqueeze(0) - coord0.view([-1, 3]).unsqueeze(1) - assert(list(diff.shape) == [nloc, nall, 3]) - # nloc x nall - rr = torch.linalg.norm(diff, dim=-1) - rr, nlist = torch.sort(rr, dim=-1) - # nloc x (nall-1) - rr = rr[:, 1:] - nlist = nlist[:, 1:] - # nloc x nsel - nnei = rr.shape[1] - if nsel <= nnei: - rr = rr[:, :nsel] - nlist = nlist[:, :nsel] - else: - rr = torch.cat([rr, torch.ones([nloc, nsel-nnei]).to(rr.device) + rcut], dim=-1) - nlist = torch.cat([nlist, torch.ones([nloc, nsel-nnei], dtype=torch.long).to(rr.device)], dim=-1) - assert (list(nlist.shape) == [nloc, nsel]) - nlist = nlist.masked_fill((rr > rcut), -1) - - if not distinguish_types: - return nlist - else: - ret_nlist = [] + """ + nall = coord1.shape[0] // 3 + if isinstance(sel, int): + sel = [sel] + nsel = sum(sel) + # nloc x 3 + coord0 = coord1[: nloc * 3] + # nloc x nall x 3 + diff = coord1.view([-1, 3]).unsqueeze(0) - coord0.view([-1, 3]).unsqueeze(1) + assert list(diff.shape) == [nloc, nall, 3] # nloc x nall - tmp_atype = torch.tile(atype.unsqueeze(0), [nloc,1]) - mask = (nlist == -1) - # nloc x s(nsel) - tnlist = torch.gather( - tmp_atype, 1, nlist.masked_fill(mask, 0), - ) - tnlist = tnlist.masked_fill(mask, -1) - snsel = tnlist.shape[1] - for ii,ss in enumerate(sel): - # nloc x s(nsel) - # to int because bool cannot be sort on GPU - pick_mask = (tnlist == ii).to(torch.int32) - # nloc x s(nsel), stable sort, nearer neighbors first - pick_mask, imap = torch.sort( - pick_mask, dim=-1, descending=True, stable=True) - # nloc x s(nsel) - inlist = torch.gather(nlist, 1, imap) - inlist = inlist.masked_fill(~(pick_mask.to(torch.bool)), -1) - # nloc x nsel[ii] - ret_nlist.append( - torch.split(inlist, [ss,snsel-ss], dim=-1)[0] - ) - return torch.concat(ret_nlist, dim=-1) + rr = torch.linalg.norm(diff, dim=-1) + rr, nlist = torch.sort(rr, dim=-1) + # nloc x (nall-1) + rr = rr[:, 1:] + nlist = nlist[:, 1:] + # nloc x nsel + nnei = rr.shape[1] + if nsel <= nnei: + rr = rr[:, :nsel] + nlist = nlist[:, :nsel] + else: + rr = torch.cat( + [rr, torch.ones([nloc, nsel - nnei]).to(rr.device) + rcut], dim=-1 + ) + nlist = torch.cat( + [nlist, torch.ones([nloc, nsel - nnei], dtype=torch.long).to(rr.device)], + dim=-1, + ) + assert list(nlist.shape) == [nloc, nsel] + nlist = nlist.masked_fill((rr > rcut), -1) + + if not distinguish_types: + return nlist + else: + ret_nlist = [] + # nloc x nall + tmp_atype = torch.tile(atype.unsqueeze(0), [nloc, 1]) + mask = nlist == -1 + # nloc x s(nsel) + tnlist = torch.gather( + tmp_atype, + 1, + nlist.masked_fill(mask, 0), + ) + tnlist = tnlist.masked_fill(mask, -1) + snsel = tnlist.shape[1] + for ii, ss in enumerate(sel): + # nloc x s(nsel) + # to int because bool cannot be sort on GPU + pick_mask = (tnlist == ii).to(torch.int32) + # nloc x s(nsel), stable sort, nearer neighbors first + pick_mask, imap = torch.sort( + pick_mask, dim=-1, descending=True, stable=True + ) + # nloc x s(nsel) + inlist = torch.gather(nlist, 1, imap) + inlist = inlist.masked_fill(~(pick_mask.to(torch.bool)), -1) + # nloc x nsel[ii] + ret_nlist.append(torch.split(inlist, [ss, snsel - ss], dim=-1)[0]) + return torch.concat(ret_nlist, dim=-1) def build_neighbor_list( @@ -153,30 +161,31 @@ def build_neighbor_list( sel: Union[int, List[int]], distinguish_types: bool = True, ) -> torch.Tensor: - """build neightbor list for a single frame. keeps nsel neighbors. - Parameters - ---------- - coord1 : torch.Tensor + """Build neightbor list for a single frame. keeps nsel neighbors. + + Parameters + ---------- + coord1 : torch.Tensor exptended coordinates of shape [batch_size, nall x 3] - atype : torch.Tensor + atype : torch.Tensor extended atomic types of shape [batch_size, nall] - nloc: int + nloc : int number of local atoms. - rcut: float + rcut : float cut-off radius - nsel: int or List[int] + sel : int or List[int] maximal number of neighbors (of each type). - if distinguish_types==True, nsel should be list and - the length of nsel should be equal to number of + if distinguish_types==True, nsel should be list and + the length of nsel should be equal to number of types. - distinguish_types: bool - distinguish different types. - - Returns - ------- - neighbor_list : torch.Tensor + distinguish_types : bool + distinguish different types. + + Returns + ------- + neighbor_list : torch.Tensor Neighbor list of shape [batch_size, nloc, nsel], the neighbors - are stored in an ascending order. If the number of + are stored in an ascending order. If the number of neighbors is less than nsel, the positions are masked with -1. The neighbor list of an atom looks like |------ nsel ------| @@ -185,77 +194,91 @@ def build_neighbor_list( |---- nsel[0] -----| |---- nsel[1] -----| xx xx xx xx -1 -1 -1 xx xx xx -1 -1 -1 -1 - """ - batch_size = coord1.shape[0] - coord1 = coord1.view(batch_size, -1) - nall = coord1.shape[1]//3 - if isinstance(sel, int): - sel = [sel] - nsel = sum(sel) - # nloc x 3 - coord0 = coord1[: , :nloc * 3] - # nloc x nall x 3 - diff = coord1.view([batch_size, -1, 3]).unsqueeze(1) - coord0.view([batch_size, -1, 3]).unsqueeze(2) - assert(list(diff.shape) == [batch_size,nloc, nall, 3]) - # nloc x nall - rr = torch.linalg.norm(diff, dim=-1) - rr, nlist = torch.sort(rr, dim=-1) - # nloc x (nall-1) - rr = rr[: , :, 1:] - nlist = nlist[:, :, 1:] - # nloc x nsel - nnei = rr.shape[2] - if nsel <= nnei: - rr = rr[:, :, :nsel] - nlist = nlist[:, :, :nsel] - else: - rr = torch.cat([rr, torch.ones([batch_size, nloc, nsel-nnei]).to(rr.device) + rcut], dim=-1) - nlist = torch.cat([nlist, torch.ones([batch_size, nloc, nsel-nnei], dtype=torch.long).to(rr.device)], dim=-1) - assert (list(nlist.shape) == [batch_size, nloc, nsel]) - nlist = nlist.masked_fill((rr > rcut), -1) - - if not distinguish_types: - return nlist - else: - ret_nlist = [] + """ + batch_size = coord1.shape[0] + coord1 = coord1.view(batch_size, -1) + nall = coord1.shape[1] // 3 + if isinstance(sel, int): + sel = [sel] + nsel = sum(sel) + # nloc x 3 + coord0 = coord1[:, : nloc * 3] + # nloc x nall x 3 + diff = coord1.view([batch_size, -1, 3]).unsqueeze(1) - coord0.view( + [batch_size, -1, 3] + ).unsqueeze(2) + assert list(diff.shape) == [batch_size, nloc, nall, 3] # nloc x nall - tmp_atype = torch.tile(atype.unsqueeze(1), [1,nloc,1]) - mask = (nlist == -1) - # nloc x s(nsel) - tnlist = torch.gather( - tmp_atype, 2, nlist.masked_fill(mask, 0), - ) - tnlist = tnlist.masked_fill(mask, -1) - snsel = tnlist.shape[2] - for ii,ss in enumerate(sel): - - # nloc x s(nsel) - # to int because bool cannot be sort on GPU - pick_mask = (tnlist == ii).to(torch.int32) - # nloc x s(nsel), stable sort, nearer neighbors first - pick_mask, imap = torch.sort( - pick_mask, dim=-1, descending=True, stable=True) - # nloc x s(nsel) - inlist = torch.gather(nlist, 2, imap) - inlist = inlist.masked_fill(~(pick_mask.to(torch.bool)), -1) - # nloc x nsel[ii] - ret_nlist.append( - torch.split(inlist, [ss,snsel-ss], dim=-1)[0] - ) - return torch.concat(ret_nlist, dim=-1) + rr = torch.linalg.norm(diff, dim=-1) + rr, nlist = torch.sort(rr, dim=-1) + # nloc x (nall-1) + rr = rr[:, :, 1:] + nlist = nlist[:, :, 1:] + # nloc x nsel + nnei = rr.shape[2] + if nsel <= nnei: + rr = rr[:, :, :nsel] + nlist = nlist[:, :, :nsel] + else: + rr = torch.cat( + [rr, torch.ones([batch_size, nloc, nsel - nnei]).to(rr.device) + rcut], + dim=-1, + ) + nlist = torch.cat( + [ + nlist, + torch.ones([batch_size, nloc, nsel - nnei], dtype=torch.long).to( + rr.device + ), + ], + dim=-1, + ) + assert list(nlist.shape) == [batch_size, nloc, nsel] + nlist = nlist.masked_fill((rr > rcut), -1) + + if not distinguish_types: + return nlist + else: + ret_nlist = [] + # nloc x nall + tmp_atype = torch.tile(atype.unsqueeze(1), [1, nloc, 1]) + mask = nlist == -1 + # nloc x s(nsel) + tnlist = torch.gather( + tmp_atype, + 2, + nlist.masked_fill(mask, 0), + ) + tnlist = tnlist.masked_fill(mask, -1) + snsel = tnlist.shape[2] + for ii, ss in enumerate(sel): + # nloc x s(nsel) + # to int because bool cannot be sort on GPU + pick_mask = (tnlist == ii).to(torch.int32) + # nloc x s(nsel), stable sort, nearer neighbors first + pick_mask, imap = torch.sort( + pick_mask, dim=-1, descending=True, stable=True + ) + # nloc x s(nsel) + inlist = torch.gather(nlist, 2, imap) + inlist = inlist.masked_fill(~(pick_mask.to(torch.bool)), -1) + # nloc x nsel[ii] + ret_nlist.append(torch.split(inlist, [ss, snsel - ss], dim=-1)[0]) + return torch.concat(ret_nlist, dim=-1) # build_neighbor_list = torch.vmap( -# build_neighbor_list_lower, -# in_dims=(0,0,None,None,None), +# build_neighbor_list_lower, +# in_dims=(0,0,None,None,None), # out_dims=(0), # ) + def get_multiple_nlist_key( rcut: float, nsel: int, -)->str: - return str(rcut) + "_" + str(nsel) +) -> str: + return str(rcut) + "_" + str(nsel) def build_multiple_neighbor_list( @@ -264,142 +287,145 @@ def build_multiple_neighbor_list( rcuts: List[float], nsels: List[int], ) -> Dict[str, torch.Tensor]: - """Input one neighbor list, and produce multiple neighbor lists with - different cutoff radius and numbers of selection out of it. The - required rcuts and nsels should be smaller or equal to the input nlist. + """Input one neighbor list, and produce multiple neighbor lists with + different cutoff radius and numbers of selection out of it. The + required rcuts and nsels should be smaller or equal to the input nlist. - Parameters - ---------- - coord: torch.Tensor + Parameters + ---------- + coord : torch.Tensor exptended coordinates of shape [batch_size, nall x 3] - nlist: torch.Tensor + nlist : torch.Tensor Neighbor list of shape [batch_size, nloc, nsel], the neighbors - should be stored in an ascending order. - nloc: int - number of local atoms. - rcuts: List[float] + should be stored in an ascending order. + rcuts : List[float] list of cut-off radius in ascending order. - nsels: List[int] + nsels : List[int] maximal number of neighbors in ascending order. - - Returns - ------- - nlist_dict : Dict[str, torch.Tensor] + + Returns + ------- + nlist_dict : Dict[str, torch.Tensor] A dict of nlists, key given by get_multiple_nlist_key(rc, nsel) value being the corresponding nlist. - """ - assert len(rcuts) == len(nsels) - if len(rcuts) == 0: - return {} - nb, nloc, nsel = nlist.shape - if nsel < nsels[-1]: - pad = -1 * torch.ones( - [nb, nloc, nsels[-1] - nsel], - dtype=nlist.dtype, - device=nlist.device, + """ + assert len(rcuts) == len(nsels) + if len(rcuts) == 0: + return {} + nb, nloc, nsel = nlist.shape + if nsel < nsels[-1]: + pad = -1 * torch.ones( + [nb, nloc, nsels[-1] - nsel], + dtype=nlist.dtype, + device=nlist.device, + ) + # nb x nloc x nsel + nlist = torch.cat([nlist, pad], dim=-1) + nsel = nsels[-1] + # nb x nall x 3 + coord1 = coord.view(nb, -1, 3) + nall = coord1.shape[1] + # nb x nloc x 3 + coord0 = coord1[:, :nloc, :] + nlist_mask = nlist == -1 + # nb x (nloc x nsel) x 3 + index = ( + nlist.masked_fill(nlist_mask, 0) + .view(nb, nloc * nsel) + .unsqueeze(-1) + .expand(-1, -1, 3) ) + # nb x nloc x nsel x 3 + coord2 = torch.gather(coord1, dim=1, index=index).view(nb, nloc, nsel, 3) + # nb x nloc x nsel x 3 + diff = coord2 - coord0[:, :, None, :] # nb x nloc x nsel - nlist = torch.cat([nlist, pad], dim=-1) - nsel = nsels[-1] - # nb x nall x 3 - coord1 = coord.view(nb, -1, 3) - nall = coord1.shape[1] - # nb x nloc x 3 - coord0 = coord1[:, :nloc, :] - nlist_mask = (nlist == -1) - # nb x (nloc x nsel) x 3 - index = nlist.masked_fill(nlist_mask, 0)\ - .view(nb, nloc*nsel)\ - .unsqueeze(-1)\ - .expand(-1,-1,3) - # nb x nloc x nsel x 3 - coord2 = torch.gather(coord1, dim=1, index=index).view(nb,nloc,nsel,3) - # nb x nloc x nsel x 3 - diff = coord2 - coord0[:,:,None,:] - # nb x nloc x nsel - rr = torch.linalg.norm(diff, dim=-1) - rr.masked_fill(nlist_mask, float("inf")) - nlist0 = nlist - ret = {} - for rc, ns in zip(rcuts[::-1], nsels[::-1]): - nlist0 = nlist0[:,:,:ns].masked_fill( rr[:,:,:ns] > rc, int(-1) ) - ret[get_multiple_nlist_key(rc, ns)] = nlist0 - return ret + rr = torch.linalg.norm(diff, dim=-1) + rr.masked_fill(nlist_mask, float("inf")) + nlist0 = nlist + ret = {} + for rc, ns in zip(rcuts[::-1], nsels[::-1]): + nlist0 = nlist0[:, :, :ns].masked_fill(rr[:, :, :ns] > rc, int(-1)) + ret[get_multiple_nlist_key(rc, ns)] = nlist0 + return ret def extend_coord_with_ghosts( - coord : torch.Tensor, - atype : torch.Tensor, - cell : Optional[torch.Tensor], - rcut : float, + coord: torch.Tensor, + atype: torch.Tensor, + cell: Optional[torch.Tensor], + rcut: float, ): - """Extend the coordinates of the atoms by appending peridoc images. - The number of images is large enough to ensure all the neighbors - within rcut are appended. + """Extend the coordinates of the atoms by appending peridoc images. + The number of images is large enough to ensure all the neighbors + within rcut are appended. - Parameters - ---------- - coord: torch.Tensor + Parameters + ---------- + coord : torch.Tensor original coordinates of shape [-1, nloc*3]. - atype: torch.Tensor + atype : torch.Tensor atom type of shape [-1, nloc]. - cell: torch.Tensor + cell : torch.Tensor simulation cell tensor of shape [-1, 9]. - Returns - ------- - extended_coord: torch.Tensor + Returns + ------- + extended_coord: torch.Tensor extended coordinates of shape [-1, nall*3]. - extended_atype: torch.Tensor + extended_atype: torch.Tensor extended atom type of shape [-1, nall]. - index_mapping: torch.Tensor + index_mapping: torch.Tensor maping extended index to the local index - - """ - nf, nloc = atype.shape - aidx = torch.tile(torch.arange(nloc).unsqueeze(0), [nf, 1]) - if cell is None: - nall = nloc - extend_coord = coord.clone() - extend_atype = atype.clone() - extend_aidx = aidx.clone() - else: - coord = coord.view([nf, nloc, 3]) - cell = cell.view([nf, 3, 3]) - # nf x 3 - to_face = to_face_distance(cell) - # nf x 3 - # *2: ghost copies on + and - directions - # +1: central cell - nbuff = torch.ceil(rcut / to_face).to(torch.long) - # 3 - nbuff = torch.max(nbuff, dim=0, keepdim=False).values - xi = torch.arange(-nbuff[0], nbuff[0] + 1, 1, device=env.DEVICE) - yi = torch.arange(-nbuff[1], nbuff[1] + 1, 1, device=env.DEVICE) - zi = torch.arange(-nbuff[2], nbuff[2] + 1, 1, device=env.DEVICE) - xyz = xi.view(-1, 1, 1, 1) * torch.tensor([1, 0, 0], dtype=env.GLOBAL_PT_FLOAT_PRECISION, device=env.DEVICE) - xyz = xyz + yi.view(1, -1, 1, 1) * torch.tensor([0, 1, 0], dtype=env.GLOBAL_PT_FLOAT_PRECISION, device=env.DEVICE) - xyz = xyz + zi.view(1, 1, -1, 1) * torch.tensor([0, 0, 1], dtype=env.GLOBAL_PT_FLOAT_PRECISION, device=env.DEVICE) - xyz = xyz.view(-1, 3) - # ns x 3 - shift_idx = xyz[torch.argsort(torch.norm(xyz, dim=1))] - ns, _ = shift_idx.shape - nall = ns * nloc - # nf x ns x 3 - shift_vec = torch.einsum("sd,fdk->fsk", shift_idx, cell) - # nf x ns x nloc x 3 - extend_coord = coord[:,None,:,:] + shift_vec[:,:,None,:] - # nf x ns x nloc - extend_atype = torch.tile(atype.unsqueeze(-2), [1, ns, 1]) - # nf x ns x nloc - extend_aidx = torch.tile(aidx.unsqueeze(-2), [1, ns, 1]) - - return ( - extend_coord.reshape([nf, nall*3]).to(env.DEVICE), - extend_atype.view([nf, nall]).to(env.DEVICE), - extend_aidx.view([nf, nall]).to(env.DEVICE), - ) - + """ + nf, nloc = atype.shape + aidx = torch.tile(torch.arange(nloc).unsqueeze(0), [nf, 1]) + if cell is None: + nall = nloc + extend_coord = coord.clone() + extend_atype = atype.clone() + extend_aidx = aidx.clone() + else: + coord = coord.view([nf, nloc, 3]) + cell = cell.view([nf, 3, 3]) + # nf x 3 + to_face = to_face_distance(cell) + # nf x 3 + # *2: ghost copies on + and - directions + # +1: central cell + nbuff = torch.ceil(rcut / to_face).to(torch.long) + # 3 + nbuff = torch.max(nbuff, dim=0, keepdim=False).values + xi = torch.arange(-nbuff[0], nbuff[0] + 1, 1, device=env.DEVICE) + yi = torch.arange(-nbuff[1], nbuff[1] + 1, 1, device=env.DEVICE) + zi = torch.arange(-nbuff[2], nbuff[2] + 1, 1, device=env.DEVICE) + xyz = xi.view(-1, 1, 1, 1) * torch.tensor( + [1, 0, 0], dtype=env.GLOBAL_PT_FLOAT_PRECISION, device=env.DEVICE + ) + xyz = xyz + yi.view(1, -1, 1, 1) * torch.tensor( + [0, 1, 0], dtype=env.GLOBAL_PT_FLOAT_PRECISION, device=env.DEVICE + ) + xyz = xyz + zi.view(1, 1, -1, 1) * torch.tensor( + [0, 0, 1], dtype=env.GLOBAL_PT_FLOAT_PRECISION, device=env.DEVICE + ) + xyz = xyz.view(-1, 3) + # ns x 3 + shift_idx = xyz[torch.argsort(torch.norm(xyz, dim=1))] + ns, _ = shift_idx.shape + nall = ns * nloc + # nf x ns x 3 + shift_vec = torch.einsum("sd,fdk->fsk", shift_idx, cell) + # nf x ns x nloc x 3 + extend_coord = coord[:, None, :, :] + shift_vec[:, :, None, :] + # nf x ns x nloc + extend_atype = torch.tile(atype.unsqueeze(-2), [1, ns, 1]) + # nf x ns x nloc + extend_aidx = torch.tile(aidx.unsqueeze(-2), [1, ns, 1]) + return ( + extend_coord.reshape([nf, nall * 3]).to(env.DEVICE), + extend_atype.view([nf, nall]).to(env.DEVICE), + extend_aidx.view([nf, nall]).to(env.DEVICE), + ) diff --git a/deepmd_pt/utils/plugin.py b/deepmd_pt/utils/plugin.py index dbc02375..c24f36f5 100644 --- a/deepmd_pt/utils/plugin.py +++ b/deepmd_pt/utils/plugin.py @@ -1,6 +1,6 @@ # SPDX-License-Identifier: LGPL-3.0-or-later """Base of plugin systems.""" -from deepmd_utils.utils.plugin import ( +from deepmd.utils.plugin import ( Plugin, PluginVariant, VariantABCMeta, diff --git a/deepmd_pt/utils/preprocess.py b/deepmd_pt/utils/preprocess.py index 58db6041..e535b6e8 100644 --- a/deepmd_pt/utils/preprocess.py +++ b/deepmd_pt/utils/preprocess.py @@ -1,12 +1,17 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later import logging -import numpy as np +from typing import ( + Union, +) + import torch -from deepmd_pt.utils import env -from typing import Union +from deepmd_pt.utils import ( + env, +) -class Region3D(object): +class Region3D: def __init__(self, boxt): """Construct a simulation box.""" boxt = boxt.reshape([3, 3]) @@ -56,7 +61,6 @@ def compute_serial_cid(cell_offset, ncell): - cell_offset: shape is [3] - ncell: shape is [3] """ - cell_offset[:, 0] *= ncell[1] * ncell[2] cell_offset[:, 1] *= ncell[2] return cell_offset.sum(-1) @@ -65,8 +69,12 @@ def compute_serial_cid(cell_offset, ncell): def compute_pbc_shift(cell_offset, ncell): """Tell shift count to move the atom into region.""" shift = torch.zeros_like(cell_offset) - shift = shift + (cell_offset < 0) * -(torch.div(cell_offset, ncell, rounding_mode='floor')) - shift = shift + (cell_offset >= ncell) * -(torch.div((cell_offset - ncell), ncell, rounding_mode='floor') + 1) + shift = shift + (cell_offset < 0) * -( + torch.div(cell_offset, ncell, rounding_mode="floor") + ) + shift = shift + (cell_offset >= ncell) * -( + torch.div((cell_offset - ncell), ncell, rounding_mode="floor") + 1 + ) assert torch.all(cell_offset + shift * ncell >= 0) assert torch.all(cell_offset + shift * ncell < ncell) return shift @@ -81,7 +89,7 @@ def build_inside_clist(coord, region: Region3D, ncell): """ loc_ncell = int(torch.prod(ncell)) # 模拟区域内的 Cell 数量 nloc = coord.numel() // 3 # 原子数量 - inter_cell_size = 1. / ncell + inter_cell_size = 1.0 / ncell inter_cood = region.phys2inter(coord.view(-1, 3)) cell_offset = torch.floor(inter_cood / inter_cell_size).to(torch.long) @@ -91,14 +99,14 @@ def build_inside_clist(coord, region: Region3D, ncell): delta = cell_offset - ncell a2c = compute_serial_cid(cell_offset, ncell) # cell id of atoms arange = torch.arange(0, loc_ncell, 1, device=env.PREPROCESS_DEVICE) - cellid = (a2c == arange.unsqueeze(-1)) # one hot cellid + cellid = a2c == arange.unsqueeze(-1) # one hot cellid c2a = cellid.nonzero() lst = [] cnt = 0 bincount = torch.bincount(a2c, minlength=loc_ncell) for i in range(loc_ncell): n = bincount[i] - lst.append(c2a[cnt: cnt + n, 1]) + lst.append(c2a[cnt : cnt + n, 1]) cnt += n return a2c, lst @@ -116,16 +124,24 @@ def append_neighbors(coord, region: Region3D, atype, rcut: float): ncell = torch.floor(to_face / rcut).to(torch.long) ncell[ncell == 0] = 1 # 模拟区域内的 Cell 数量 cell_size = to_face / ncell - ngcell = torch.floor(rcut / cell_size).to(torch.long) + 1 # 模拟区域外的 Cell 数量,存储的是 Ghost 原子 + ngcell = ( + torch.floor(rcut / cell_size).to(torch.long) + 1 + ) # 模拟区域外的 Cell 数量, 存储的是 Ghost 原子 # 借助 Cell 列表添加边界外的 Ghost 原子 a2c, c2a = build_inside_clist(coord, region, ncell) xi = torch.arange(-ngcell[0], ncell[0] + ngcell[0], 1, device=env.PREPROCESS_DEVICE) yi = torch.arange(-ngcell[1], ncell[1] + ngcell[1], 1, device=env.PREPROCESS_DEVICE) zi = torch.arange(-ngcell[2], ncell[2] + ngcell[2], 1, device=env.PREPROCESS_DEVICE) - xyz = xi.view(-1, 1, 1, 1) * torch.tensor([1, 0, 0], dtype=torch.long, device=env.PREPROCESS_DEVICE) - xyz = xyz + yi.view(1, -1, 1, 1) * torch.tensor([0, 1, 0], dtype=torch.long, device=env.PREPROCESS_DEVICE) - xyz = xyz + zi.view(1, 1, -1, 1) * torch.tensor([0, 0, 1], dtype=torch.long, device=env.PREPROCESS_DEVICE) + xyz = xi.view(-1, 1, 1, 1) * torch.tensor( + [1, 0, 0], dtype=torch.long, device=env.PREPROCESS_DEVICE + ) + xyz = xyz + yi.view(1, -1, 1, 1) * torch.tensor( + [0, 1, 0], dtype=torch.long, device=env.PREPROCESS_DEVICE + ) + xyz = xyz + zi.view(1, 1, -1, 1) * torch.tensor( + [0, 0, 1], dtype=torch.long, device=env.PREPROCESS_DEVICE + ) xyz = xyz.view(-1, 3) mask_a = (xyz >= 0).all(dim=-1) mask_b = (xyz < ncell).all(dim=-1) @@ -139,7 +155,7 @@ def append_neighbors(coord, region: Region3D, atype, rcut: float): n_atoms = coord.shape[0] aid = [c2a[ci] + i * n_atoms for i, ci in enumerate(cid)] aid = torch.cat(aid) - tmp = torch.div(aid, n_atoms, rounding_mode='trunc') + tmp = torch.div(aid, n_atoms, rounding_mode="trunc") aid = aid % n_atoms tmp_coord = coord[aid] - coord_shift[tmp] tmp_atype = atype[aid] @@ -148,11 +164,15 @@ def append_neighbors(coord, region: Region3D, atype, rcut: float): merged_coord = torch.cat([coord, tmp_coord]) merged_coord_shift = torch.cat([torch.zeros_like(coord), coord_shift[tmp]]) merged_atype = torch.cat([atype, tmp_atype]) - merged_mapping = torch.cat([torch.arange(atype.numel(), device=env.PREPROCESS_DEVICE), aid]) + merged_mapping = torch.cat( + [torch.arange(atype.numel(), device=env.PREPROCESS_DEVICE), aid] + ) return merged_coord_shift, merged_atype, merged_mapping -def build_neighbor_list(nloc: int, coord, atype, rcut: float, sec, mapping, type_split=True, min_check=False): +def build_neighbor_list( + nloc: int, coord, atype, rcut: float, sec, mapping, type_split=True, min_check=False +): """For each atom inside region, build its neighbor list. Args: @@ -167,7 +187,9 @@ def build_neighbor_list(nloc: int, coord, atype, rcut: float, sec, mapping, type distance = coord_l - coord_r distance = torch.linalg.norm(distance, dim=-1) DISTANCE_INF = distance.max().detach() + rcut - distance[:nloc, :nloc] += torch.eye(nloc, dtype=torch.bool, device=env.PREPROCESS_DEVICE) * DISTANCE_INF + distance[:nloc, :nloc] += ( + torch.eye(nloc, dtype=torch.bool, device=env.PREPROCESS_DEVICE) * DISTANCE_INF + ) if min_check: if distance.min().abs() < 1e-6: RuntimeError("Atom dist too close!") @@ -175,8 +197,12 @@ def build_neighbor_list(nloc: int, coord, atype, rcut: float, sec, mapping, type sec = sec[-1:] lst = [] nlist = torch.zeros((nloc, sec[-1].item()), device=env.PREPROCESS_DEVICE).long() - 1 - nlist_loc = torch.zeros((nloc, sec[-1].item()), device=env.PREPROCESS_DEVICE).long() - 1 - nlist_type = torch.zeros((nloc, sec[-1].item()), device=env.PREPROCESS_DEVICE).long() - 1 + nlist_loc = ( + torch.zeros((nloc, sec[-1].item()), device=env.PREPROCESS_DEVICE).long() - 1 + ) + nlist_type = ( + torch.zeros((nloc, sec[-1].item()), device=env.PREPROCESS_DEVICE).long() - 1 + ) for i, nnei in enumerate(sec): if i > 0: nnei = nnei - sec[i - 1] @@ -190,10 +216,15 @@ def build_neighbor_list(nloc: int, coord, atype, rcut: float, sec, mapping, type else: # when nnei > nall indices = torch.zeros((nloc, nnei), device=env.PREPROCESS_DEVICE).long() - 1 - _sorted = torch.ones((nloc, nnei), device=env.PREPROCESS_DEVICE).long() * DISTANCE_INF - _sorted_nnei, indices_nnei = torch.topk(tmp, tmp.shape[1], dim=1, largest=False) - _sorted[:, :tmp.shape[1]] = _sorted_nnei - indices[:, :tmp.shape[1]] = indices_nnei + _sorted = ( + torch.ones((nloc, nnei), device=env.PREPROCESS_DEVICE).long() + * DISTANCE_INF + ) + _sorted_nnei, indices_nnei = torch.topk( + tmp, tmp.shape[1], dim=1, largest=False + ) + _sorted[:, : tmp.shape[1]] = _sorted_nnei + indices[:, : tmp.shape[1]] = indices_nnei mask = (_sorted < rcut).to(torch.long) indices_loc = mapping[indices] indices = indices * mask + -1 * (1 - mask) # -1 for padding @@ -219,50 +250,67 @@ def compute_smooth_weight(distance, rmin: float, rmax: float): return vv * mid_mask + min_mask -def make_env_mat(coord, - atype, - region, - rcut: Union[float, list], - sec, - pbc=True, - type_split=True, - min_check=False): +def make_env_mat( + coord, + atype, + region, + rcut: Union[float, list], + sec, + pbc=True, + type_split=True, + min_check=False, +): """Based on atom coordinates, return environment matrix. Returns - nlist: nlist, [nloc, nnei] - merged_coord_shift: shift on nall atoms, [nall, 3] - merged_mapping: mapping from nall index to nloc index, [nall] + ------- + nlist: nlist, [nloc, nnei] + merged_coord_shift: shift on nall atoms, [nall, 3] + merged_mapping: mapping from nall index to nloc index, [nall] """ - # 将盒子外的原子,通过镜像挪入盒子内 + # 将盒子外的原子, 通过镜像挪入盒子内 hybrid = isinstance(rcut, list) _rcut = rcut if hybrid: _rcut = max(rcut) if pbc: - merged_coord_shift, merged_atype, merged_mapping = append_neighbors(coord, region, atype, _rcut) + merged_coord_shift, merged_atype, merged_mapping = append_neighbors( + coord, region, atype, _rcut + ) merged_coord = coord[merged_mapping] - merged_coord_shift if merged_coord.shape[0] <= coord.shape[0]: - logging.warning('No ghost atom is added for system ') + logging.warning("No ghost atom is added for system ") else: merged_coord_shift = torch.zeros_like(coord) merged_atype = atype.clone() merged_mapping = torch.arange(atype.numel(), device=env.PREPROCESS_DEVICE) merged_coord = coord.clone() - # 构建邻居列表,并按 sel_a 筛选 + # 构建邻居列表, 并按 sel_a 筛选 if not hybrid: - nlist, nlist_loc, nlist_type = build_neighbor_list(coord.shape[0], merged_coord, merged_atype, rcut, sec, - merged_mapping, type_split=type_split, min_check=min_check) + nlist, nlist_loc, nlist_type = build_neighbor_list( + coord.shape[0], + merged_coord, + merged_atype, + rcut, + sec, + merged_mapping, + type_split=type_split, + min_check=min_check, + ) else: nlist, nlist_loc, nlist_type = [], [], [] for ii, single_rcut in enumerate(rcut): - nlist_tmp, nlist_loc_tmp, nlist_type_tmp = build_neighbor_list(coord.shape[0], merged_coord, - merged_atype, - single_rcut, sec[ii], - merged_mapping, - type_split=type_split, - min_check=min_check) + nlist_tmp, nlist_loc_tmp, nlist_type_tmp = build_neighbor_list( + coord.shape[0], + merged_coord, + merged_atype, + single_rcut, + sec[ii], + merged_mapping, + type_split=type_split, + min_check=min_check, + ) nlist.append(nlist_tmp) nlist_loc.append(nlist_loc_tmp) nlist_type.append(nlist_type_tmp) diff --git a/deepmd_pt/utils/region.py b/deepmd_pt/utils/region.py index e90c461b..b07d2f73 100644 --- a/deepmd_pt/utils/region.py +++ b/deepmd_pt/utils/region.py @@ -1,113 +1,116 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later import torch -from deepmd_pt.utils.env import DEVICE + def phys2inter( - coord : torch.Tensor, - cell : torch.Tensor, + coord: torch.Tensor, + cell: torch.Tensor, ) -> torch.Tensor: - """convert physical coordinates to internal(direct) coordinates + """Convert physical coordinates to internal(direct) coordinates. - Parameters - ---------- - coord: torch.Tensor + Parameters + ---------- + coord : torch.Tensor physical coordinates of shape [*, na, 3]. - cell: torch.Tensor + cell : torch.Tensor simulation cell tensor of shape [*, 3, 3]. - - Returns - ------- - inter_coord: torch.Tensor + + Returns + ------- + inter_coord: torch.Tensor the internal coordinates - """ - rec_cell = torch.linalg.inv(cell) - return torch.matmul(coord, rec_cell) + """ + rec_cell = torch.linalg.inv(cell) + return torch.matmul(coord, rec_cell) + def inter2phys( - coord : torch.Tensor, - cell : torch.Tensor, + coord: torch.Tensor, + cell: torch.Tensor, ) -> torch.Tensor: - """convert internal(direct) coordinates to physical coordinates + """Convert internal(direct) coordinates to physical coordinates. - Parameters - ---------- - coord: torch.Tensor + Parameters + ---------- + coord : torch.Tensor internal coordinates of shape [*, na, 3]. - cell: torch.Tensor + cell : torch.Tensor simulation cell tensor of shape [*, 3, 3]. - - Returns - ------- - phys_coord: torch.Tensor + + Returns + ------- + phys_coord: torch.Tensor the physical coordinates - """ - return torch.matmul(coord, cell) + """ + return torch.matmul(coord, cell) + def to_face_distance( cell: torch.Tensor, ) -> torch.Tensor: - """compute the to-face-distance of the simulation cell + """Compute the to-face-distance of the simulation cell. - Parameters - ---------- - cell: torch.Tensor + Parameters + ---------- + cell : torch.Tensor simulation cell tensor of shape [*, 3, 3]. - - Returns - ------- - dist: torch.Tensor + + Returns + ------- + dist: torch.Tensor the to face distances of shape [*, 3] - """ - cshape = cell.shape - dist = b_to_face_distance(cell.view([-1, 3, 3])) - return dist.view(list(cshape[:-2])+[3]) + """ + cshape = cell.shape + dist = b_to_face_distance(cell.view([-1, 3, 3])) + return dist.view(list(cshape[:-2]) + [3]) # noqa:RUF005 def _to_face_distance(cell): - volume = torch.linalg.det(cell) - c_yz = torch.cross(cell[1], cell[2]) - _h2yz = volume / torch.linalg.norm(c_yz) - c_zx = torch.cross(cell[2], cell[0]) - _h2zx = volume / torch.linalg.norm(c_zx) - c_xy = torch.cross(cell[0], cell[1]) - _h2xy = volume / torch.linalg.norm(c_xy) - return torch.stack([_h2yz, _h2zx, _h2xy]) + volume = torch.linalg.det(cell) + c_yz = torch.cross(cell[1], cell[2]) + _h2yz = volume / torch.linalg.norm(c_yz) + c_zx = torch.cross(cell[2], cell[0]) + _h2zx = volume / torch.linalg.norm(c_zx) + c_xy = torch.cross(cell[0], cell[1]) + _h2xy = volume / torch.linalg.norm(c_xy) + return torch.stack([_h2yz, _h2zx, _h2xy]) + def b_to_face_distance(cell): - volume = torch.linalg.det(cell) - c_yz = torch.cross(cell[:,1], cell[:,2],dim=-1) - _h2yz = volume / torch.linalg.norm(c_yz,dim=-1) - c_zx = torch.cross(cell[:,2], cell[:,0],dim=-1) - _h2zx = volume / torch.linalg.norm(c_zx,dim=-1) - c_xy = torch.cross(cell[:,0], cell[:,1],dim=-1) - _h2xy = volume / torch.linalg.norm(c_xy,dim=-1) - return torch.stack([_h2yz, _h2zx, _h2xy],dim=1) + volume = torch.linalg.det(cell) + c_yz = torch.cross(cell[:, 1], cell[:, 2], dim=-1) + _h2yz = volume / torch.linalg.norm(c_yz, dim=-1) + c_zx = torch.cross(cell[:, 2], cell[:, 0], dim=-1) + _h2zx = volume / torch.linalg.norm(c_zx, dim=-1) + c_xy = torch.cross(cell[:, 0], cell[:, 1], dim=-1) + _h2xy = volume / torch.linalg.norm(c_xy, dim=-1) + return torch.stack([_h2yz, _h2zx, _h2xy], dim=1) # b_to_face_distance = torch.vmap( # _to_face_distance, in_dims=(0), out_dims=(0)) + def normalize_coord( - coord : torch.Tensor, - cell : torch.Tensor, + coord: torch.Tensor, + cell: torch.Tensor, ) -> torch.Tensor: - """Apply PBC according to the atomic coordinates + """Apply PBC according to the atomic coordinates. - Parameters - ---------- - coord: torch.Tensor + Parameters + ---------- + coord : torch.Tensor orignal coordinates of shape [*, na, 3]. - Returns - ------- - wrapped_coord: torch.Tensor + Returns + ------- + wrapped_coord: torch.Tensor wrapped coordinates of shape [*, na, 3]. - """ - icoord = phys2inter(coord, cell) - icoord = torch.remainder(icoord, 1.0) - return inter2phys(icoord, cell) - - + """ + icoord = phys2inter(coord, cell) + icoord = torch.remainder(icoord, 1.0) + return inter2phys(icoord, cell) diff --git a/deepmd_pt/utils/stat.py b/deepmd_pt/utils/stat.py index 60dcc344..baff2822 100644 --- a/deepmd_pt/utils/stat.py +++ b/deepmd_pt/utils/stat.py @@ -1,11 +1,15 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later import logging -from collections import defaultdict import numpy as np import torch -from deepmd_pt.utils import env -from deepmd_pt.utils.dataloader import BufferedIterator -from tqdm import trange +from tqdm import ( + trange, +) + +from deepmd_pt.utils import ( + env, +) def make_stat_input(datasets, dataloaders, nbatches): @@ -15,7 +19,8 @@ def make_stat_input(datasets, dataloaders, nbatches): - dataset: A list of dataset to analyze. - nbatches: Batch count for collecting stats. - Returns: + Returns + ------- - a list of dicts, each of which contains data from a system """ lst = [] @@ -94,7 +99,8 @@ def compute_output_stats(energy, natoms, rcond=None): - energy: Batched energy with shape [nframes, 1]. - natoms: Batched atom statisics with shape [self.ntypes+2]. - Returns: + Returns + ------- - energy_coef: Average enery per atom for each element. """ for i in range(len(energy)): diff --git a/deepmd_pt/utils/utils.py b/deepmd_pt/utils/utils.py index ee314e19..780dbf7e 100644 --- a/deepmd_pt/utils/utils.py +++ b/deepmd_pt/utils/utils.py @@ -1,11 +1,15 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later +from typing import ( + Callable, + Optional, +) + import torch import torch.nn.functional as F -from typing import List, Callable, Any, Dict, Optional def get_activation_fn(activation: str) -> Callable: - """ Returns the activation function corresponding to `activation` """ - + """Returns the activation function corresponding to `activation`.""" if activation.lower() == "relu": return F.relu elif activation.lower() == "gelu": @@ -21,10 +25,10 @@ def get_activation_fn(activation: str) -> Callable: class ActivationFn(torch.nn.Module): def __init__(self, activation: Optional[str]): super().__init__() - self.activation : str = activation if activation is not None else "linear" + self.activation: str = activation if activation is not None else "linear" def forward(self, x: torch.Tensor) -> torch.Tensor: - """ Returns the tensor after applying activation function corresponding to `activation` """ + """Returns the tensor after applying activation function corresponding to `activation`.""" # See jit supported types: https://pytorch.org/docs/stable/jit_language_reference.html#supported-type if self.activation.lower() == "relu": diff --git a/deploy/CMakeLists.txt b/deploy/CMakeLists.txt deleted file mode 100644 index f04f8cd1..00000000 --- a/deploy/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ -cmake_minimum_required(VERSION 3.16 FATAL_ERROR) -project(test) -set(CMAKE_CXX_STANDARD 14) -set(CMAKE_CXX_STANDARD_REQUIRED ON) -find_package(Torch REQUIRED) -add_executable(test test_model.cpp) -target_link_libraries(test ${TORCH_LIBRARIES}) diff --git a/deploy/test.cpp b/deploy/test.cpp deleted file mode 100644 index abb342d0..00000000 --- a/deploy/test.cpp +++ /dev/null @@ -1,35 +0,0 @@ -#include // One-stop header. - -#include -#include - -int main(int argc, const char* argv[]) { - if (argc != 2) { - std::cerr << "usage: example-app \n"; - return -1; - } - - torch::jit::script::Module module; - try { - // Deserialize the ScriptModule from a file using torch::jit::load(). - module = torch::jit::load(argv[1]); - } - catch (const c10::Error& e) { - std::cerr << "error loading the model\n"; - return -1; - } - auto device = torch::kCUDA; - //auto device = torch::kCPU; - // Deserialize the ScriptModule from a file using torch::jit::load(). - module.to(device); - // Create a vector of inputs. - std::vector inputs; - auto options = torch::TensorOptions().dtype(torch::kFloat64).requires_grad(true); - inputs.push_back(torch::ones({10, 3}, options).to(device)); - - // Execute the model and turn its output into a tensor. - auto outputs = module.forward(inputs).toTensorVector(); - at::Tensor energy = outputs[0]; - at::Tensor force = outputs[1]; - std::cout < // One-stop header. -#include -#include -#define SEL 40 - -int main(int argc, const char* argv[]) { - if (argc != 2) { - std::cerr << "usage: example-app \n"; - return -1; - } - auto device = torch::kCUDA; - //auto device = torch::kCPU; - torch::jit::script::Module module; - // Deserialize the ScriptModule from a file using torch::jit::load(). - module = torch::jit::load(argv[1]); - // Move the model to GPU. - module.to(device); - auto options = torch::TensorOptions(); - auto int_options = torch::TensorOptions().dtype(torch::kInt64); - // Create coord, atype, natoms, mapping, shift, selected - double coord_value[9] = {1, 0, 0, 0, 1, 0, 0, 0, 1}; - at::Tensor coord = torch::from_blob(coord_value, {1, 3, 3}, options).to(device); - long atype_value[3] = {0, 1, 1}; - at::Tensor atype = torch::from_blob(atype_value, {1, 3}, int_options).to(device); - long natoms_value[4] = {3, 3, 1, 2}; - at::Tensor natoms = torch::from_blob(natoms_value, {1, 4}, int_options).to(device); - long mapping_value[3] = {0, 1, 2}; - at::Tensor mapping = torch::from_blob(mapping_value, {1, 3}, int_options).to(device); - at::Tensor shift = at::zeros({1, 3, 3}, options).to(device); - long selected_value[3*SEL] = {}; - for (int i=0; i<3; i++) - { - for (int j=0; j inputs; - inputs.push_back(coord); - inputs.push_back(atype); - inputs.push_back(natoms); - inputs.push_back(mapping); - inputs.push_back(shift); - inputs.push_back(selected); - inputs.push_back(selected*0); //selected_type, unused for se_a - inputs.push_back(selected*0); //selected_loc, unused for se_a - inputs.push_back(box); - c10::Dict outputs = module.forward(inputs).toGenericDict(); - c10::IValue energy = outputs.at("energy"); - c10::IValue force = outputs.at("force"); - c10::IValue virial = outputs.at("virial"); - std::cout << energy<< force<< virial<<"ok\n"; -} \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 016c010f..02952a53 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,3 +40,38 @@ write_to = "deepmd_pt/_version.py" [tool.cibuildwheel] test-command = ["dp_pt -h",] + +[tool.isort] +profile = "black" +force_grid_wrap = 1 + +[tool.ruff] +select = [ + "E", # errors + "F", # pyflakes + "D", # pydocstyle + "UP", # pyupgrade + "C4", # flake8-comprehensions + "RUF", # ruff + "NPY", # numpy +] + +ignore = [ + "E501", # line too long + "F841", # local variable is assigned to but never used + "E741", # ambiguous variable name + "E402", # module level import not at top of file + "D100", # TODO: missing docstring in public module + "D101", # TODO: missing docstring in public class + "D102", # TODO: missing docstring in public method + "D103", # TODO: missing docstring in public function + "D104", # TODO: missing docstring in public package + "D105", # TODO: missing docstring in magic method + "D205", # 1 blank line required between summary line and description + "D401", # TODO: first line should be in imperative mood + "D404", # TODO: first word of the docstring should not be This +] +ignore-init-module-imports = true + +[tool.ruff.pydocstyle] +convention = "numpy" diff --git a/rmse_over_step.png b/rmse_over_step.png deleted file mode 100644 index e2ff4342862aeead6532fddde5bd0c47d666c8cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42863 zcmeFYcT|(xw>AnY78KcTQ3M23Iw(jJ0Vy^l^p5ncNbg-r01GxmFf{2Xp_fSSMG=q= zp+tJ`B%vlqNVw|-+`n_qJ$H=z=l92#F&s!(?<#Z6^2}$>_pOH713Fq}S}H0kI+)@; zEh;LSVJa%>jpIkbH#|Z3tKf&E`~8RR+D?}4UXNTYs8k=hJKHL>h)wc(B=`-LrudFTBq;U-P~}{ZoIQ;ji1&4SD$j{~XiI z*U)+Ajy&;Bkw*#7DZh=Y2~a7qkbsA`bB}d;%sie|k&Y|iB*uGxXtpgjqybCseP}uB zFsy%mN#?xdeC*(tx|7F;sSp0Ya_ErPpD|T|b^neR`oF{f50Q+$B}{0|bm&fX&MIw=8{B;`i_0 zb+YxYZQ@3ZoN9ijwfc8=cMHN@Df2_6D59yKu-Ej@Gpey-Fr!k(O%Hvb3W2vyu6gXK zidoDp?}9}P3N=0bB-gCgw9v90z1Wvs3@3R81qGEavz$MlR_#l)t$#(g_$xo9wWL#S z*Z9$+M@njHo;GHcp1BoX_`C{_CEMwrAG1uWD^9cB%Gg}OENx=UFo)@HjTZ#O-Ei2L zPYJEq1XIVF`ZP3*edKtsv0T{6FC}H@Fj%ze0V!wTt;>+^%4hbW%;bul#!L}nkAEE3 z%`-L-s#jD88ibhGs~)zU?m z$7;>MvW5J5ITVsB>Uwx@Rw}*fo>MO8ly@*PR zib~T?S1T`maPMA*N{omBo7c{ki;4G4B#>V33wqfMu$~QJd4Tz*bMkC^T>9-7M>Bz@ zFAf%G&vqnaTP1oo&TL7#&GKHqt^rAvlTTP!69}&ln1Q%$FK=J2k-i-!udmEy%6(&A zvzjnyC)m^(FR9(!++0B%^*zVTob~RUfY0*WSio+s9jaO{*RU8p-5d`60jTic;dP*Z zHfz((u{T}5;HrtHB)TvGRFxK@$bLWs=&U++u((IG^Hxe=AXPhguYL$6^E`JbaUcuU#6j zO40@Qm{(0O3?)g}_9_DX!Z4coeP)yKnIA59Gc0rdEW0&+IFuwu_+<{vFln&JCglUG zbe3|o;Nn1GI%HkrSk&+V|uX(5>$(l5UvSYv=d&}LdVCbJ8 zIr_461wvS*^?-AzK6L1inESj&2(x$#_Gn$aq+4&Xojy=qRm4V%0Lpr-2EIKNDz|*L z;RCa{lDJ)e?|UXu$WpV^5~K)I^sG`yAT^)m%0jaMvTkN(reTrwM}Gah<&tXX+Q449 z)#5V*^2)xaR(=?2swL}z{lrQ*B_29_SlqhnQYeW4d>^Ebb`4!`?aNAK z_uu;FunP{g0HoqUD%x@$L(wKXXs^lvy zVmZ~LW|!g{jTS4<_gK=y4ir8p9r27)OOkcK_cR1E_7z&G=NgxzvGFMnLOl&iRkbRe zC%)e@VSz+&ZO;aid*6kG=uS0;oMUH4h00ML3h3wQSX*0{G!479Uh`SbZz{6xz5=KG zo~r;x0DNTmRU*FY^9z~eu@Z;48WK*rdV4XO`PS2~C5|Imz}AL{V8sHT&Be$$%qqTi zHwzf5Bep$OywJ&Mpdb}oYEGhzuPtu4JXXZw9jCdwuZBh#BnOgp*KWgG~?TgV*-~hk@DriGaotWSZ-Wxg-=dR znY2(3D9jCsS$D}(Q&SVrx4}UJOV2>g2HZ7>DTAd>La>U7S1gbgk9ZC_fSZnPiMqD5 z`Uyn63=p(@e$PZhUJSn8E>T{gr>OWw%6&fhG^{`@alOeJgVPXec9wD<~aPzLZ)(iErw`R?wT4UWR^#B z^1SuxWJ9c|)d!!A`OhG}+<*4$nE{&}OSPS{1Y~k z!VTMuIl9%;Nm%!0Xc7uUD!uUiz_S^Duq@#??NXEg}p~U@#}2h=>S=JXmNI+B#1HCffqSo0L>V9SU;iD=(RG;D`Jx z$B~Lm^QI3z*kVjXe0=D}+3HEMvC>|7HQS24=f?!o{O|de-|oMXfr@iU$<3(~(F;#FZ;omN72uPzQ2Z0HDma#iY#7TSGC@Vz>S^{Ze74tednth@>NT zT&#qJg}2vQg&@=+vo-!A>tX&E%g)5y!^cj~$2rxwWQWQE7dqn7#0ojAzI1hV(v!4~ zq!+-a+y;R<7gw<)SZs$;V-zy&1#U9cdwrHqP_QHQh^nJ%;w=MUxV?eYhjmbH_@S37g&48R285D){tPJ_I?sU3X&nwZ~~Gw|rj zuj$$QfxORwpv@kz(>>#J?DWMh;OY8Goy>BLO4X9!gc!$4?2Td|_f9y3>s(*#!F*@e zsSt_52U?*QB}IlRCMCTWQlmEjG_#xd9^|u2CPv1_W&!ZFNFm`dTdPwe&v9V7#SUq_ zyReXc@0@_1H8{@p_7Z9nJjg2|q7}j-(GLWlosp4oD?rd56A~QU)5IQ-13Xct>r4xT z0$L?sym%q*ORxuH)rccrNkDPL-DXw5-IxId>;W4UvuI&}%&fwB;yD1mdBCaL0Q+&o z!~wg7!qKNs7a-r=_DMKa*j%Az8?w>qSIvtHOc3m)TG0lYf`;}1G;P+7Qx<#|X4d=v zBWv2TB4`S#r_>z(duDa%CrHKKy=!>f4FIlAp0Q+%3b&cpK|&_`xY*Exvg6&CW1vk< z{T}v;_*Yp;Z_i_McK$WUL% zpuxusrl_cqAmy>_eP;aH5gf0$y~UF&92_SOwk1FC=qW4ByZy1?%>Q3GPVy`1{V^KH z+bj#wXtdu*h!)??n-78GtHB*ry8I_=tP9T3%Lbq%4YFJ3s>i>|KH6F0vfBPqST@h*d zxy5F7c<&0qeR45m+5^=FIz9nFX9SPFuz_0QH3xTq_^8TIQ>*vm#`Mf^Y$+%`k^Hb)KSDku8LPZ9> zK33l~c3?kep`uFt0V(n2yRYU!KBluvA$tJ#wA2%(g21}%P)Y6$he0HO9818o znMIzwX_bUrTUgj%xdw#_AaBY$eeq^8h}uiQad(wC42c1hEkoYuA&@z)Tybx`R$3NP zl_cqwc9fni2iWL2%E@D{ZxJGaNfi@VajED}X~BG!GQHU!QI-3OS@2J>VdQiQwVTEB z!xkbjuGPEha%3dP4l0VEgvDnuGo6#kW7Mg7QxAsj&D7p(WO1^F5=)S#j`}QJ1HerW z_=940(rOcXHn8o%YTr_33CF82+un?irhcpUNwUCS+oF+gE!#d_hC%;<0NPwqz-Ue9 zn=>5lGm-j>^W7;~nkla!g$g>!Xxoh7^4@t*6%<^@x}rVzcMm7bS8e4N!=5%Y7-+>B zwDVAw!|m{&h968^E)S&wfjG}=)VnD)_i@8J!VE|v2BLvDpoHlxkD4L^$SDnEVwE%m zM3K{&tnc_Jh+@$Wm7Z9w*QZ&H2cf{@(8X zmz`d0!s6ok*sk^qe%$WceQloxiPKBw8}^@O2mtX%dxST01~*)RL9Pyv0aDc~-%mO= zLAEr*{972{3lJvx0r~=QwHF|sbuk}yUfLtLz$Ds}rz1GI(zWaNc%Hz?92MtePZiu$ zp&esnt6-(dnBRKHmz0!q3=yPX`LJ+qC_fi`-nL+&d0|GPX4L2DN{S$)ngf4 zg2!wd(}>Sf?qHcq3dj=E0g5yL;Wv69elzf!W{QH%Tt|Y>S~E|vFVV3*L0TWs0|fy% zdw!jaWEQ6?O@MpL^2%qK`+#`WQFMRKCW6yQ--iOgk2Fs<1nZ_K&_#y=JDOYk6)SFM z3s9{{TzkcAterauc8kF3^nklM_g9$5DT7*nczc|LI>?(rYG|7ZuK5Ab&>~JgF|l5Y zF<)Hy1ArMSNVv-N-7C-T+=DUIsShZ({JY#YfH{^qT4nMLa~&PP?%fQWfL_*+2}4&q zS3!>KZO;yJ+oPv1TAKv`aIRbF>9EJ4cx|mb(#_I=f%F3&g`x5TUTj7Ca|uG^{ekoJ z$6-sy^nm*4WNL9i#wlvq*7Zr)e0k{X*|Q!X*;NIpUW!797C^rAz9*lAKt@P=>bmWx z)VLA6;J)>3g##cy4??a!@Fe0OP|9r2r^JfcAmF56p_+^|)wnE>0RVG~$4k*p2cCgc zrR|g0kI4xa!F}Htu(p_uTI|y|Yj-7qwBPv9)8w+pFQv!RmpO((oY@~F?*iQH7N60$ zBljQI|BeRoQhSIV8q;v{8F=Oo{TMhIRLAN+m7e6U1!6Dc0pY-x*5E#L(){NMr7)B< z)wF_-PetPg)@)#20sz!O>3H((7m!TMyxOe}sW3gOjQkS-cu!xLI9>boQTm;Alq(Z$X{~;4I+J zfIH%G`1SQ$4Hjh4AP_~tA^t!L05DDW>R$z+&O8UFHFd_AcmYDE9KJkKiNTm0-Z}bA z`rQvGv#ap114ijHENj(q5lX^4Z>_&Cu^;%-pKAm`Whs}*duNEf0Y_*q$kiN(v(9Ln zfXxP(V1-{V*nH<4OjY&T%TekEb};F^T7UA!uv@21SMqJP(pr!KFiW~3U(vJYft+q> z#A{6V>C-Y<%9c4y3uwKGLJ_;H-$QV`HbN{gM05A~%G~w3H zT)2<{AX)}U2WaW&bOAxYaQ1A<#)dn|1;SZC@istw%Z6YXNTE3wK*rc#j4{pr`BM?X zsvrgKu7Q)5o1lxd?azsU#8+gaT@4K3J|&jg>5B8~&eXItTcC$fE?<4^(j|F-CeZ-E zal$}0-3#1-2e1i~GUwX>y9VoOC;N-k#*Pqi}iLc3q;62b`J#f;fYes3n*q3mX_>yCr z!1H(Or(Qo7gv?$Z2Crt`~z(l__m}>k@O=>0!Cl+yA zB;bg;{g<`XWl{l~2_lC+?dj7|oZ=vFts%!)C3d$8)#gB65}^Zp8unNIU3@h$@f975 zUUD?u7VR_XokoDm#hu6NjPdM%{(_Ls@<*qELqvDc1HjZ^X!u1;oP;h5n$6_UQoNVv zg$G9*^`2uT`G7#A5XzPdxSc!P>Eo2F>^w9GrS9`xmmv}k(F;X9H;0i5U7!m2udyA1 zrd1hm5@8|H7uOBU2a8=;SOB-#;t}v{@>LzHtbVzx1QozM^VuY*UdS^3{r4A7 z?4Zp8Iu&9KIAQ05?*qE559qDmQ2FDlyw}ZNRyIsdCGJffXixK+g`*wrfjtE2YR&Ii z7LeqUc!|JJGK|YzvjD{y)db}rwryOdtb@&@lDIiknnD)dbo|e1r-vO@6;^Z4(i( z7v__nipH$z^rx1U?@~ycgLbHeXUEteUteU05tLbP6J?h6%&GRTPMvmq8 z0TraJqZ0vfj}SKqg0>G~z-n{+1wB9TlVDX{C8c)|*aJtXXlp&Tb@q@K!&}w38xYbY zcnrnO0?~@u^S9FJXux0qD~+PVwC7Z%iD+J#Bv?QcybZeh@NX z3)pc1X{90X7ripX;S@k^TlpHNDn&x1sSIUn3d-C73)h#X%3|Wtr;9*BtkA7n#!v_Y z^kUwdH^)tU7E*nHuLvI3r4FipQf$b?7X0_M8#naw^YcNhhEN{hi9mL{u;h5|*Mu9a z!ggCE=*UrP;yT%HWWQW>iBD3}0HnQ8YJBee`Pn60gzW(Q+TVZw&2a9V?qk<04D1GS z>(mi{0bkk=gjD1*rC{dOko{bgTU9mX-%RJ~UuB2=`FXpxR*Ma}3WJX6?&%0fser%P z(a}(#^MWZUiITqZ9DL6SBAZjtv15bL+C6*%2l>|)GZf$s9li*{VjKL_{?M(9(3b!b zsW8P<1|6h}3<7#bn|@#1&r_7De*JnV?lfu)IQtb3{VKuh941(uUnsp%s4YtfimGi2Brbwp9>d0t=|rehK_&rk~|{j!0;G&`m*(-Ieq6(kMROJ zf^0|4a1I%4PfV8K-B62^FUQ<^V1wVCR)HMdm8|O{6H!WX9>~$ zP#gG|=lb=qE=FF9Ph#g*%&Apkp$aVcFt7k*%6{@xGV(xL8phC0+HQPLIM@hPApT5Q z%8y_WkU`k!`+WBpxV@!AqW;hSq_tFI9L^8kO89J8L;j9M!f^wVA#dH*8MQyLnab}2 zfL7+;o+-d$+zT6;WDfF32(btcAv0|(_iG$rM>Pu2=EvV(!Tp>4`-MUe-)7>nKwmwu zRw^pL5a>$+Oq-AI&+S7O-E>DpsRb$gC#xKH+dJQB=*zUT`+_@ILwM-8*T0E05qObF zfDy6)PqYXaTU6zw$K~6Nq0Y2>MJPyAN&nj^Ie9hy{=+&1LQZhS{NEkEqlYeR;NJ@a z>pp!h7bYAD2RQ*16<{^~=Oyy~ksJd%AS+fOWriqq;M8hx?}!E= z0a19Vg(3g_Rj8o!$bdHW$^Nf_j{%XjV(uYuUlGBqFR*mr)T#D{J&YNbhiO#|EdKXz zL7u`9AFp7;v_C~12HNHMDB)P$L;GDfurbUEzXcN^>lh;le+NClQec>NhTZy9P%U z=r>3XR+*#du3rkLDCK^h7W-E%q5+oO%BI6BpJdl2)m0;q!0jAt9^mNzsWB$cE+dd% z-;3ayZT_RX;AmWD>{mS!UZGt`P&5&`xDA%LduaH_zz6$ z&3_;|q*40M6vo-?MF2!N`L8nWol-YYQ>*cOS$OGz0o2?FGYI@^NeuvQjH5*QoJ${O zPC$Gc_-y^X_nku7u>pm$xPL8pe>&h~|MT!+XdwD;E*Mt3Um1b^H_ZqX0t!pvUx?>i z_{SLzL&W^6w|qdxX1WgCFsT?eL6~7Bu}J6-F&5zi?y9yWVW6?Dr` zWlY+0xeKJ?@R4))mgB<~YWkQ)T~1K9r6(N-Kf?9kh=R%$Us^7-Hrqtm9|)aF;}f(I z3zi8-n6`D;YDzr9v19gN0jePASo(xI853%z;wL$J?1Teml6MArYDTAC=F$|;z~jp< z2jBaFylq8aO?+4tAcN+i16>{iW%`{+Z91a7@3`9JpX=UJfq3PX3*ORy__*=A&_-Po z#l$&WB(${;WVONs-QIv*nRIl->Z5@D%>`;fZd;#Cp-fxr&p1|STzRi^X9e$2 z19|_3<}8Sgfa(9!sO~yj2X9fA?)7MNdZ(@=Fxhdi#Z-Dorm2YIV#sO7HpCN zG$o{ns2P0PHQG<=J9mGS>)>HA2z%%Tn!hCNsJb}D5tFJOzD)Qpkt;ip3dRjXV_9tn z;;uy?4*ufz9LUUy$z#~bLBD>~ol_RZj*<g?XM$w!fIkdk4B@Q6#B#T}bdU1ngRi~>XQw6P?4z`PpB_9x?0-i}% zV{86MRt3t_lc_*hetB(ykoIokvS8({fzr$`Ek~AyAO>|ls21}zB)1gl(tJ0xu`@{jDPDO%#0C} z1UK^j9Gwm*Rp%j5Zbk8QpPU}HGmD=X%kQ`Il3cB?%WdyZ6>vQaL z%31dm5$JY3gR6QW36;fvN&nG3!P}DfL&?7iXmC+tG!~-5S*nT(ytSL-l63F@_#?sr zM&k8=!UA-ZXEBF}gXdbxux#;X%G8aD3cD%~>?Gm_P-D5m5NCCDP3L60aoIHAyQL$d z_$ios+aZwWpxh56%c}}m`T2{EJ8@CSIw}nN+&8RkCDyUS;sd3#dz}V*5G^$pA#q&2 znPRWvQvkG9Jv_rv`l+CPx=9r|gCd=f5vtFwp_NshTzzE!&`LBAIcT7vFrFAStyf=t ziT~b9>tU||+xF2OB^6c7C$^9(PsjbS$w-J!>U_@n%vUjNs;S&{pzBb=4cm88dAqgm!Xxc4=HeO9b4GhOyw zyx*7iSKi#QVx6FszxpySB$8d!Ce!G{IN=2pGd^=M-`ToqNY9#n*j4pd9USH5-cjti zEVP7_5RP~qb+SQ{S1dB_hL!H&tJm`iyxzqUgv|08aq|ygD){enf zyYWO8&53V=62-Mfm2M-1lYEwu^z{AZKg4{85CI>SD*DCO$MpX!1}YQdop;vQ%H|p+ zj7~4yajjTNeg3{Q7^zc8*}~`K=y7Ww^aKJ80qUIjsg1O{;K^I5HP{ev5&m zW+|s6+y1z(Hl3A(L>kfh9n6)?`3S88ZcE?ws!=YYd3sY>=Qw@;zz;DQQvKLqK+Bmj zp42oew|&x`N@E)^sw-A!B3WB)U^G&?Dz#~BL#;tH$_Qo9TeS+ap{Y3V_ZsNEk(VvF zv;&_MEApNA0Ml82)Y})Gq4!(lT^_^drBOo%Cn3h!-wu=ZSN@GW?*X?dCmMt7a&2^V zy+f^Tf%eF?%koca)-I$S=2|E<;h}Z^cjr(%GqH|XbyE6v$SW?H3L~`w$`^&h#Jm`m zYS({1A#&BpwMt(tTGE-GcG}@URe#bU#OlU^ERWz!nJ3sj@j35$G_Bebcim0m zLETJ0k8WS!TcSXt$G8%2P)3S>3Z#q1s7T_cpL{0oO1Ll_(D#+qFYE;cL;U z4sDD9yzTb+C^J3ObNE1c4QUXb?%uayVOX>DQlE5Ue;S5kdyw`}R?oNm;m2Y6>JE{* z+Q&??hNSy+vj=CeXR~6j;lhzMB~MD(@I5*R9l^HMenf<&-qSbv{$uHJkzw(96QUCQ zj@wkIz3v|{?TR>ng#s-$c3E7Ve3mGOmKn7VrtPrXou`Unohvv7c78HY7R|VjXj)Y^7(y}TUF`fTF!+M_`9OT)roU-#l_ip(jzvW~I$nbT+|=_Rn|?mk%(D_}bomNr z)4D;fO2$FfzN;{9ssvS>xZG z?EH2l{QyNN(AEhWL_t|wJO9)sS*!2-hnZ=&`fFqIYAi$ZF7L}t$<&Ybmdfs^LZS4ffPCSe&*zWT=lra=i8FCAxC_U56kV6 z&7wDZ7`3YUdG_z3j`6wQ2sMM*Kp&ofG^_Oo9T;X&LuTGH=Rz(@YC-iX&T3E)g8Dik zroG|E1ujj{RTYb;SVkcbUm_SDyon178!vWaRQ`5G3vICQ-6hj-{Ys_1qTnH7s`QA{ zpowu+zpv`kzt z2$S!0;?Q=qwlSm3S$9ZCt0h|fsafx^JoDuPWmk95Wx&PB$tx>s3i>@61&uZC+<8u} zj{}o&6%OP8ZnL~dA9Mi%gw?v~4N5|(fMzs++TlRKrI2o^DTF0`YwIcLwOh#c-`MGn zE7ist=bw?n2*vB}i64{f*AxzrF;&uMqza!!u_0*5G>_f{h0%(fxniV>=EH&~usk9i zC@p}dwabK~1FK@12XI&eai%OR!wqQ@W$^dt*(gWmV42K8*H0|#P&=_H0P!3rK; zHLP&YY<$n8jfC^%U*TujMvIjvWD5S1B0xI`_-h_=&Upx%aktBx#EpNPl2LFbEKr!) zYcboDlmO%}Xucf6fDH)1pei!puTwwYeZ2@8V4;3jsC@%4#88i$RV<{%EiWbct-S@kB%rF20%|ojz*M0&oWzcSTq6mnwJg-2 z&~kvtBx?DdLMED}B9ZgNu>k#awS=loL;(W}OExHMWrH@NApdJg1tHGS$nZ)(bWkYX z7Nu95vVmj8a>8sZgIft-$Lp?!s&*EkIN`OMZ_e*{=x8&ZCuhL-w{-~xT_&*IY*1z< zY^EwlFQ&ygY5|ktG}qY%-ND#woOj=UBTM*$xtV}l520jX{~>CtM&TVuh&6Q>l>rV-P^_p zO*BvN3FTlzr3wybb`WIYzj4`%mDo5(Px@gYByuRao$ZkK!DKft0|yTE{(^e64x-4m zkDpb}-xzcte{~uwbxH!2i-m05<=WFZVic2=4EJH8IxlB>47Qb;`a>L5HZieCNWHA2 zoU`dT5p`oH9Yj{^t|7Z3+fF``KTPcprhdo4t$HmLDuaQ(IvddKDdn?~0d=rJKE8$w z6uw7S-(;qq?TT5B+UE^veWlL$^#yBU52LnB30@ZW)aQ%cR7>oYW_w|U`X)b8bd&kt z+C92AB1)n6X~2iU>^(R}g(o%(s=R$W#@-7$QZ~WQGJB_vvCv|mY%Msi83l@&YObXFjnnWbi)+~xa6eLoWm zd~RN5%?H~5M4?LOREaOXx)k^Yl(pnTLvofmdFZ2-Mn>9}bofbxK5ChQ2tuOdsq>V%gI+s01 zA3xhST%!B__(#rEDb*Y)H&x@PIVjlnj5$PeI{3~q=MK7|El8th=lZ_dN(yZ-?+frJ zdw8F1@pi>oULVjaD`L@0=vXwWdm<8<5hiu{@@>%5|1LCCAM}C&7XInq9~4nfFJNVG zUl|Nbepb3o`W5g$cv+zmyLeT6h#7N+puEKy^Wj zKh#7f_UQW&s7V<#w0n?ly3M{vRlePMlfx%dGgb{Z%!Lk>HS@jT)DRaRCvSk$UDgx< z(4D!ng!4-{NM~2h17{4i-S|udF+#1MP`#%D)Mtx4v4-~*6hMutg+eWNPP5sKv@RZ8 z!X7lAlyag5ci`#9p94=vd*VcQ*XO&N;Qb9dP<91DDiS#G6wppJzmT4!2O0xVm2aNM zIuBM~!+!CNOOi_ZPCQ8D-Z38X$^hN1ke7?PYVZZnXLg|DN=fmbjjv-T+a9Y;%gvp4 zkaK-B@xtU*iBLdJoKznwWA2#ur&H(mrOs;!{6%?01Ot4vff1@$8&N?UKiKGeN`!PVp6J6UhKAxKPtI)c=I4Jmyrs9FRB^ttL3= zKYgj!X0n$>C_A+_2|HB)=!B)xtT$ouq&1>ZXqo*`z}gqb-4!pP&A$)y#`L^6j|Lig z0|lx_viYsthGHV3$Y;~Glnj=7*lV(00m@IH_RwN~gH$0mHv4S5yyd<~UgFdW-oC2;tPvrq%*6_rzs5#egZa))Q$ zd)W&W+`#2WhJ_`ATD6&1`h3uRSomZrEXI^HnyOWwShEm*tljQjmhr15Q;(U{0r+zdgmM1~- zQm%iW6?Ii%GF6k2?$Y3lNlDOA8ta~|(E&ER&0l_iUg={m)#w&J84*9btM0nLP8}%l zC}#pqf?8OicReEYO*6qklo1ekgc?~_|JX1` zb+>|{Nb~V=cw0HL4L6miZVHNTK}Rfh^-3n{n4&jjVmem0(K0m4m-p9`A2+py+6M4d z>mQ(=E=I<52+Tn*GeAXXsA>EiXtWJimj$KOFV~mJeIDc&Y&8oH*lw!FN_|yrzs0`0 zRV7zEQ(IVpYwuH15?`7QVu;4#cS=xo@PowilUQ-YpH^OLfQANZ;FVDO6qIQUm8f!S zcZ6$viGWG*MDpPaTaQW7;B;Gqe1_9OjxOaVxU?oAQB$pl=(V4G9I~u6R>^uW?T_O` zttDXdpxZTpGZXYjfL@e7j?i0oewi|>+>9ie`!nGyOn-!jNJU4Spg(~wd5g)=>?`mo z)93Idb%q+}#?(vCe`sBreOg1W$Lef=($0TRlsdU5m_V)IGq}`<0ek3O0k{k=uOgU# z^HHeAlS403OS}{V{Gv$alr0@ww>YuFq!cXF0r8SZntSF3i&+VizaMmL36pPPLf~Uz zM&eYnvV6m{Do9z|i>qtzjFW0DBRHJpK8EF_tTx-4r29Q1?PryN=pf+93Jh~AK${T* zvu(tjqMBMi^jgfD;~1(<&>*&XpQ!O`Tcy=#T(BIxDk6qwTPQ(QVbbki(i~d^N8ul_ z*TvFGhAPw|l?=$DLuo^hQlRg!(>j(6O?Eah=w zoRM0flhVzg7PRpB^@e|E1Yio-JAkuhUa4EhgCn>TBmI382iIVf4i{T5!jOZ7Rh3TK zd^w9?dk@9p&Y`{vPn|qsspST-H%JGD{`5AYFE0CmtZX6#05HIlI4wpdVDf zpRwxjzUJN;I{%5rz>#GjwMJQnn4rC#weYe*kn}^9UBeo_pU&6ZR(tvVJ2F$=#!>{f zS*d8z!t&YM6!}Bh&NSN8hFdk8E7jE9-bk`OzlzL)axcCz3iGPD9de0d1(WtgYI1Qc*%Kv0WQ+zO?;9LRo*Y<$#Na zq1EZ#^=1k#3l4?;;HhLa_dRY+rt~ncjY`3bSCdV*E%Yb64x)ztYfxN0H3PaaCPQZA zWW^~C?ji1$weCJB^V-iz%5ILG6yvw)C(}b|iq_uZ_!-Z~r<>Q1roJ96&P_EMHFI(b zmWB(*aqJtihN19x*1$?lfz)jFXvg1LS?J#GQQv~zWkbH3w@6d^)yow%S5khoO`lWEt#Yh=r7p%5)6=Z&fzC@VHMAr&;=)o>IL4rc_cfA7}sfO8pU z``hF72JG<@{Ipt=>)eC)0Y<~~-eZ~KNXDhg($Z?}mW&`rD*@$j*Baos8rLO?bVlAy zKz15BWHmO@o$CN1uj?(m)zWSu#;dc#sZz~)boQ>K*8v~s9|{Cnz^J33q%IOwFTlJz zTk=H-`vLu#PC<2xirz^gpxsR+Yr9P{^Dm`h5Tzh-8aU$rGU?96BKXggOA(vwCdGDI ztXXBFky7VaEj$I0NP#Qn(>o@j5=saVbLI;U!iy59F&+Ln3eQd@5EVnQE=7H|(d#b7 z(ia|8w$H}kNWZ>&f`;2$yYQ>YV{A*a1#IUpW+buKNHtBR?G)Xm_uG73QB`JaK4%}v zdB5qZMyr*-9@*t&@pRHz0$klhan&+g7h-MsFVf@R$C)byI(dfT(RdA+}<#rm?JM1+?EmlF-|Z`{xb z$+!+e+x6D<;f;>LtEI)cM&G0p4qQNf!*Q>Or~j?TCUu%$`!@5+JNJe5#%=8S`+y;z z3o)Y`gE^h+J@t7@weP*IrgO3E<^@NV1lV0o=TredRydR`%(89PIWooW3E z2&7-ag`!%1tFK;^S6k0;+lQ$ET~U2_vjrFo17LN>!`! zg7joZP5LTp~oDbdYm~}oVv@m#aXZP7| zdhi5(3EM|H4NXk~A|hza2%n4^_T#9n)74Nzu0Crnlbe^Tdw-HJu?+YMO7mvpbnZw} zRN^(KA{n?bZHLiAT=SXk&B`NkzoUHurMOBSjj6MvZ!o5&eL`{QZ+&kw_Cdo6j zC&h=U8S+{}kliehD=m1{tyhwzlTz&N9@mS%Z_|Btv^=WMmJ@?0di<(rS7NH3VgA?L zZ(H0qKiPY)Xc*_WR9&n#0A3(?IKubQ_LdxY$&%MkH}>Xt&p1tiknzeMUJmzCZ)+pU z;Z>_vWl|K=!e)sOD^?(_5*Hmc{jkG|O#JyZ2d{tH-b6b)aXt~d`eMu^UDsD_W@)ek z@Y@vGzfsd-+%)@g+T(Cns?}1EN_45yZdyUsDY^do3w5+axIk}o2iwnWjp!Nt_nANQhaxLcp7)f#tksop;fXL4D_Lx(xPx7&ZBOeg=DIXQN2 z%|92eoC?$Y@YTeXZis8)1=~Qscc$@;-kRY8J!H!(DV$lXNXy`nqn~tyuW({U3`^F_ za9b;0@WS63d7=41ScLH4ejggu{(AcDHyUeie{eR!sC*QxRF2hZeptIky%4<`)Ei+I{Jd9hYRJj?6;q@xqHa6b@wMA`7bNiXmTOu>Yxia|d|YZBk+BQs zwAmchhWK466D__b^Q?%Iea-8QAurfVSi3bveVBv-{tP7C|%*4&dioV=Ai z{E(JU;C|o7?_Y*X$2OkzCZ}t9jSL{4W@;U_nY78Y3CL_sku+QCHpyFhP*R2$O+{!r za!+Jv##(AcY>dFQe6k{(@A;$#ZH(awBTXCD5&2JaKXD1q$twE%#*8cyxB0o!m?!+F zR)dSS@aC~AWB=dAuXodX;li{xkeMcT2;NB+Q^xK5F@ZJ zM4!;wWx|nYj>4$FA-LM%ahxNBVx7DS1_NcKoAL0Z_|`T>bcs+1eOxHYWx!8){J1JT zMMEi!f%`sBz@ss}^v6uBx5B4A-v)f(wx+N@a2Fee$F(;^xRchN%Z2h2N|q}R;NEvg z^C+KHyfKD2gSR<+bQDEe)Vw!o>+FXae$~`nBde>B+mAnkklRQnxzPE}WLCz2#k$N% zZ5?w({4Qa(acaDR%QqT=M$%-dS(b;|^|D8eOE5DR3LAtaZM9;{<;nYI8%P9&F!_bQ z{~FIAJBEA9T>qItrp#J2ZvULo%56m!Jz4l|Yr3Go#I=<4wUWy`Q788_{8tUOIt;@J zQ$<)Uv<2xD=blZKJDnK*1i>jIVwG*mGN^DqTbFMk?^)%*W8HrOn*|Q=zWnGXVAkSu zBUHQR{socP(P|^`Zu`6U?>9V3$LTxBJVBAs-$mfHDlIw>{Fl`hBGZDnJ zbt9N9}a?B09o5QDF`L1d58>wauD`npX^KS6y?{L*Yqa8W{9c}33{$r z%}euIncKE+?=)+#eyJgUPl;?VvyBamk(cxM(>c2uXhnGnD&w49z?2leX7aHkj?Z^?McX` z-sd5>E=gJd}^4HNy{ayNF&F3%@9vJbi)-md!(TSP z=*xG9a$a8Ix$_8m&+!`z-%j&#v5U{_>spgRm4Y&rjZHs9`3AWYADa)@wr_{N);Cl<@!EJuB>MYDq^=N)`rq#GTTW#0bXccuQH|6SxZ9^y#3NK%7wO4 zt6lQlhRX<)V0LTqA?dd1RLyN+Ll)0NFe__4pa=9aLASK*Sq4;@`n+}GRUNmpPd z=1AO>E0OsYXh;-tii|Z8D6Xz2?}Xx_T69|}7dyE&UNsw-CO90EO~#jB zRXXc=s*8SBVB?>`!~7{vxcF51JPeoWK^(6$suAzRxSOQ?h1v6aGbDEXCCuTIObhdRe5*OaBG%(^S`U$$UqFD^ z(5qbTq@xOy`%2#R-o7Cy#!|A>EY;5T=f77AE1_s!D7uwNgW-P5Ejj)l& z$cU2)W_Mf5k1aKyKySQfVI}5;*_H@LG0N~IgoJxq9m#(&8g4i?S&p|NC_5Fk_of?H z^^-8t3W-B6Bcl~^!w9?F#pI+juG|Tt+YSP#GQZfO#}!L1p*Tc~u2*gU*cj98vcg6( za;U}?8=UT6J36>^QL&LYTR0OkGwz(?m)d^Kj2V9tymj9CKzYeLWF`%xbnPf?Y?nn^kVNQw1jne@rNvQhe?smYb#CPtG>5o4S=)&l#NOpr>i%g+pg`Jy^zKkX6Z_$*67_ z<)I3822+^N_e}S;b@9}qU`el=$eakD%X4JfdKqP;(*sM^wz($cQ=8v9HVr4ya698& z-Y{dHXx4n4tdY@&vc;IE7kh3f&Hpk(S0&M!q~%bOQ+3fQ2gj%R-7h3hw+gXT1c+T?widW; zMELL#0ZG_R{%XXT-qPxx;|=HEM^?zjtY_es^VkC(`V^O^j64>8{uPh&I1*;ljNq%= z8uXJf-X5L3<`{kh4O17pnOugR?_LT|us7;cMT0h>^h7yv|1p#%bWER7c z;=~fOQ z7}&06ShfcQ|Dxez~WOH)Mrqg zlHPu`Q?H^$wF6zw^2;@{My2(+Iwdg(u?}BqFRw2cvWFJyywto+UgtEjzrqju$58O=prwjB*Or%1 z(kkXPb-TLQ54ByKlP4{RN|!oUA96-Oe26)K!QVT3^;m4Wrry$6fpPW;hWpmLwX-~*+3>M7PEFZz|ZmsjlSHhx9|5enJNuCeZS-ahUaS??x{OIIekJT zU{p&`@w3H9Xq+*u0O>2sU3vq4l^o&1v4p^(cW37)zow5&Wd?8S&*29pUDz_Md%Sbb zh;b#fljk{&#+{oawCYWN<@vqPHx*z3{ze>Hthq zNVWBXI4F#fNQRyh-Ic*Nx&fJ>T3z*fKIP~D;?*3qOvb1 z$Sqp4gCft0&kzR9D8bT7HWgEFw@M$7$9#2IR^#X*J7lF?%YH@`P3QLh3vT=6#+@RP z?38*1Ma5@(XLL2U_p8;n=LT_6FH*7Vw4NXA%sh6IbS@a45>a?G*O#H&xGSCXWOZHZ zqOSd=gaQ4hbD>!r4eV_rHQ|#Z4>Y2=CE!o0yk=&IyF+u5N_h#llUQGk zfWbspRHxF+PW%_dxy3P82Oov&Td!1t*DBW^n5EwEXc;Q4-dGoebWA^wNdg}D|4{bU zVNLJ-|2QT#M-c-M3>tw0h)7$21L=}hQo1`$6zP;2C?L{GGZ<5ml9q+HZjg)FFTHAU5UwWP`fGEC8C}K zTOEQ6Ruv}t8luXjv-ET?JUDQ^<*HQ*{K{QrI}-2flP9qI+CW-?3aF|M`D}=9hr<(F z=+32{o%U$>bvEp+`a*0GRptqjMZbn9DxX^ofN?7uxn@Z(iK}!R^?ss$I^aT{f^GF} zb(hb_0D+qMnXV@qT64-<$(!wuhBD&1&{9Zq1pWrPTB^3M+UK*(+|kK80sLm1X2S(H zn0?Tx-YmBlT86Xup#>K1j-H;Js+t_u$(AEPi)(JxKFqde--?9OnC9l3sglNyy)oK) z`~lNZW9R352v}4yx8vif#Y-+)8eh|MV2}Jb*+P~`38Z)ftHHc@5)xPLh>Fr3?a)$F zTeyR^dU~!l?cfmmbg@xOd;pf3C2_ZEbm-J!-lSe?QR^2`W!rUx^ieD7YNyrF6SbEV zF8n>vKi1(Yr=cCxYPPiHO({NIle$TukK2^GckaX1vbbN}_imc2FS1HH;^7~`ziP}1 znsDg4Ki(RS%tH;>2XT*q^|GI@szfymwhu5!vY6lDw^xVmH^WvtZv|Syq(w=EA|AHA zxseH;aK~`HHq4Cl(zIO~TlOiKNRjnYo(w&W@jD@a=q^1Qlju-Nr<#ZHqwj(z!15p{=e0 zYMk()wYlfJI)9Q|gTwPzN9Nxo`pyJR-NSdW$LG9fE-#v|2>SY_g#3Cwzaj8^m{b72 zv~+>Esep5vqNN)*`wV<+CL(5FVGq{xbB<%<;mWjG|@w$5j}iJghQiQ)kLdCQ6R65w@VAs$XZ2B z<1Ala?A?OrY)K9Sy z^)h($6eiQ;%ooYT1?B6rSrP(_w~7AVNWx{y{vK4@Z-5BCA)t&z(^_{Won+ws7wo zS{W{j zQ}oBe%G}2oyYT!reLX}#f&}wJf4dgbb;K=ElJE=%xrd~2-A>#BTyRKJL0Ryd^21}8JwmBW{BeiX7JM7cQrARpLV^SPXb%V@dN?RD7 z&iU)fb7x-p37Hn08NP5v9m{Wvm$p%CYd4^DO?ddl3v)+?cdx&fW{)3|q-XLFvTk&l zHr|SgOmAe4&nT&(CZt20Ot~pC@JZjcd)bx^)Q^?6x7KAnN90$8i8g61bG~7+Q=6=! zz8W#XVW#I?k5UfLO!DN^;vF?w$p(CQSb0GHjK)RTy{FxSXPX93o>&Nu6>9OlarvG> zCoB1KgW+{^q>Y}ugnRx4KZMVtI>z*hp0aNFh2kb=-g(#(xq`0ao^!Of$QFKiZ}k;h z;f04dU-1;e;f)H<*E0&UWFg9MSKO?#uvwaG(51-6-?P*S7DGnVhPI;Wg3VkRV=W7f z@l>h^HDyHhc(S#ZOHAh%bmLhwAn?IdbC2zdPq8>6v-sv+$eOMF*SK|((Z6#igOvD} zNCR!Ag2CIdJGA>|a&LdUx)@VbxC#TkrPuGig(qBL%*oo1XknG&-wm1;%CroopLns_ zrBUcMrTO-Dth`2WM(N$#aWw3~1kFAVL9<*<-Z1XLrLBW5wS>4ewq{IF=!(XE)rhHp z4R4=Jlfy7e9rUN9X@2&^EswZw{RENPtzd_kRZW+vvRvw6QQ=~zzQ%7>Yv)mlaer%U zMdhj^?_)pvbVz@wOJDA;2v@;Rq4p>>uIro>4SMhaq>Sm@h$wWN(meNwcET~k(v$Iq z0_!V*sEK*lVu?fcMo^_$4v&W?)pL5H!q`RVaCqTw_QxHLyWdMpU1`R?Y&j=iX6-t4 zUp$s7n)BQ_j%8G`SktF(`tVa6Om2Otw6GaP$y<*ftT0D5I>Fz{w7hF6(2$geSM~IO z^aEL?0sC7ID^OTxQ8b+DorUv!A2RPn-Q3~sxup*>e}fFYH7kA2i0b}*rm%HbM@NsrvsStq zHRGnc>sl`1v$h6{Wo`c$e(l@@S|Vu^R@JAR?zJ|5r}J}x>5GjYf(f&kaK#@MT7(aP zva)`qD^cy<7ZsG$1w^HcfXdY7l7s%*vSZoR*`t*)HQn-Ryf$lwUtE4I~r zwqaP#hw!TO)M0v2b9>QIl#@#Er%qK7k?G%zD~;#;x6Zi?-=1@sXb3`NJi=1ajgcl4 zKbZ;De1=V$qT~AGrzJVNC#E+-+!Kv2&rvb0eJ>1l{>%IdX8G-ZIU4ZA4g1mWiSHR4 zV)ZgBPj>_(o8jDyymc{T^mn207Y4sZ^Uuds?dY_E*+V=qLE_clF0X@J?cGiO8YlPvad2yTu2MD0coS)+T_ zzO`;SpgRU=i)L$im68M@_tc8J{%ZAR{DMH@$%fda{ADD&#dX zOFAPX!;u=MbEp|n+5(le8PJ;DWN`BrRD;`@ampHn&}+Jm!PU{`g>3# z;~KWc?rjq^sUWF}d4F=b@NVC}w6<2A$#nAW4u!JF($#=&w=;9gOTU~;*6(y3elzth zf{5-s9Z;ZoQI4+#-77N4&hlnO_LaA$9c>OsIQo)n!);DVs6*SRjGNPZ5yPrXpIQA| z#(P|^>VbFdgHFyJl~3oDwJxLNK6*HE2eQr!@?QS*t`!jhmyY_7Lo6c9c=z4=)|cy< z_Wr)&hkX@+TW2M*9MbfD|K{$BxLN;sdF zVm~8vH*iIB*sVBE?R4+Gh2obN;i}+x^6bS}ATn#aT|D=C(cR#yDzx8`qUUp9HU~fD zdOmK2ITx!ZYBOvD4^wm1Vvxc-@+ZCx*j*N~Nc{5JpI!gd0hufXEiN!bcw%Qz8h2~* zYXMoyiqKVD9-=KkLay2+JgPBo>&1Z38<>m+JYP?DxHwgLtS%08I!mOA-cI{z`?ij@ zl`^kB2E@O?Y%KMg%(9!r3C~4(seHH<^^Sb(Q%Ldb8V=Tjd3*i zKvm>*i_O>cdI3$gi1mx59cSlUo>hF=8EhBkAEa>u{{x1mUpoDb@3NAb$!ethoB?au z;pD^O+)PmYwqDPb?x`U9ZTytP=NzpP4O^u@zAo`@n)Y^C zzfC2Ch;bS@p!hxwD4W}k__3oEpj)Tzm% zj^(F6Ze~otg-vQB;5P2xf{%UP#97N|9WJu*J{*bW4@z5E^H=R5JI@Xu&fKd~9HCvS zYLg-f_Z^w%Zy65WVm=8?AQsAV%YSD6?i0zGk1t7eU)Vc2Eof~PEputn-(J8T@%}7Q?z{SUPW186Gkp%WE$;tT zkPRl4rM+?%Jr#?x4enVe4V+RZ@FvU-y-H}Cynp+R{lTuhMycR;wW?MDS7#YM&N*s(q<@sZJTpo9-2AiRs&lqBcltEG zjsDoHDf*C0N~Z|8-T6KHHLM3g{SybKE6|LFyr4dz!kG%4&@$Kgc|oLqs&7j{@r1#D979 z;(jo{5mEoWfYw;{%3>k@d6cR}#8son$yaWcn6GX(us_=|>?6(h9P29_cc1OzOu@L6 zN!v*S*cCKeePhNFx4H$t9_lPLoZadX6o+kucn3RV1e+ts}Tm+8w^`)QP_g(DZS$0_O^viou|u7 z#cktPm;Ccb$UY=1S@D5cC35v;&$nEA$}zv;fo;!06YSfr|GK0-hgP4v#2!FT_pP6J zVUnp_|8=gR3BT)-*ZMgX3c2B8qH~(k0f&B`p=!<|gqc>5)S9)L?((HCsQJK$O|P8} z>gI2asU%7Dq;SR^6MWDdruK+k^kiJfp@+S{5fDH~J>gHgP0$96*x1?II|8<6Kvy?& z>p}RhOR@vPRold4EWV1U^ttRV zgPNYL0O|gp{@qokqse8V#z3_(y>r*hZyyqNp{}kY7BT6R0FBP=Zr=e;aI>^W@t|{M zGZY+7S-1*Nf+r31peM1h9RN6YwzHZ%@TJn8u||=)b%5TKBsd-9u>CWH!~)23wr&GV z_umXs?9ZL)p)f5u?UX=1?XOfz4npwtnw9M4YtR5|Qto06siNM;v#Wa2&#FdSis72Y|gwzEHQ=qDos&6r_x< zC=mm#056ANah6}i8Jzd5Yke6QPg7Xg9u~jq37uVt*oKXbwRUs%4Wh&^qCU*?Ig&`k zVnwCptmRiqiz$O#0TXGq(+R!W<8X63S7zd$=_3&_i1cLMytw9-r^okm*AQ>i13)2R zl}46)^QNUD$jz{$EjQbqhGVC^OrEd0b5OKwy|7$M3Z~jIz=L~MyF{{Ro|bEm zkgt=H+9JFZC|y6;TPq>DzVP%>$WOWLcV7Jt$ruD%li&W0^wVrnPV|J3A6=C79z5Sa z6bi9`oQdt~s{Pcd6wbVpv z_4=PPG|vvsSi#rn2$Kl<8h9f%v)WyMVt8fq@+zH(SYVJTWQCj~VgR^G;Z-AH2!CD} z3~|Va_|LIls+AfOv(@-#K@;hb>rrN9dM{jQOEbOoj0sgq>`Y5-UN0@)!>zd@s%FJD z5x2}(((0e~Ps(1|epZ409_X}0r%0XskmmRSZr&2gwK0=NRPl7Ps?41n5v{IdN4t>L z85_imb{ZwIy;+gOxz0@Mu)|24At353D^0U*!-d`coS^Q5V0wlvwtm+zOmEd|&9C2&%4ezW|-bhWBJ^)~6r%jnZlOx@6 z5Wy0PGAuv@ zC`4tvT;hvn-+L;x;OX8yWxf+h%K5TjulcfS!Q{vaZYE-@6#}gtR2 zfPs@INyZ?J!Qe3Id+>i?I3jisPZ2QpnAQ-#fS+GK0@hvqePAT3UP>yguDmxiQ1PbO z*OM0%OTkg5G<-Kx51XQvJx#As*6VAGatzA@({a$1fR?6$QKaI$-fIId`7E-!Px<5~FGrah1?THU>t8 z{{C>jjR0(t9il6O%d3FOKYh*7GwvG^uveOn)ConfxcD^ zhUGOdUqTipw-;sCf5WvM^BI2MBw#IYLb+MgbYYO$sS9YT4zYT#p2Wpp0pLz}yVY7$ zg2R6=fxc}J))FCy2puVhwasU`l7v^+9&lq@-aE};u3__ug&){bJ@NV_`c=sAvFBDq zDtd5t1cGU6esM~E+W{0b0r)xF+0=4w(?GX_`w!?--_v_~uWe$$sW6FvyxDfQ;1U zv7T(?Sxq-28I7_F(s)iq`S3VX-a=u7nJs{$I70GrB{!TlDo`9o@Q~9`R-A zki-mQntL&LYd|!D*y|_1;9)o7sHFF^qeCfR(XI>}*zxv2*kquHYOe*U$7NC3dVAN{ zAR1UUwkO}d>`f=*RnF9V&bq|ozw^B#MONiA6~lGe(E={?@4*pGwCHVc=1yxCah8Gy z|Ab6sxHgDf{6OAnIJ(hZ^|r*h+RMDaZ9BZtw}AYa{w;tCe=Qkb7Cd$0*ztluvRIk5 z3jS$By+3_{?C{=#yt=e2^sQMTFIt7zsU4slqX?ZxI9<+9Cl@e>y{gu*sRGdQw%O3} zHV+CS${H|O)v5!WX!^l}1M30XM_$AOx^L@#3s?8IFAuYA_2UnUx>Bc((P`y3ED3-R zf_$GORAwn^m9l1xRjCC?D~3vQHCBP5JgfKd!464Wz8`5}$sbl6Zo9qHv7Ar>>WzWYhX9`RQIM#vT{>m{g7dH;9tR=%C=*b>uhHcoQ$4R4pEm%-BcIGEuz2;5@ zZIfhAX?R7d4#EOovs>;o>Q=w7q^T=H(5!kJBOaZyZMKiw2L)ACwH2YWD52g>&9!AJr$>}#EAX&}Q)jmvZSxy9lROE=@>u&n z3xEe)GHlWOIkHQ>@q{sB&T2PLFD%0fWyK%07OquAwcZ#rpx5{T0uH?hs@dZ7_5l(J z0Av4bzwDtG8jtOjOwE3}d(T^dTuv#nb8 z4hMKuQJRQ(T=eDM$0X=E(L>L`osT{S_yw9P%w8NC?)!cQ^V%s5+lEpOuU|4ggqHTt z2ScJXf_Ez*dT-*REKp6CGq;EH!C*dSePPyj*&Z?R8W7BY=u)LC;?M830{vbhPk`0> z=!m?2^O-=YZihEA$XO|jE;}YS1`dUD2%Ou%ak)23v!0|BVjz!dF$JOW@iVnoAwX(B z3m!0m>vs$bpvRyHZRm!1dOh@g0b3#zbLt-m@Uk#5s`7dzg!uxdx|xz#THV_!LHich z&TppNktPv`T`jS53U8*q8m5fYx|qNW0i%oM&o=3Sqwh#pvI}x%%**TI6o0`=osez* zi2^PQE2)xQ<`)yz?^K$qP=}91P`h4jwHj}~Gj^Mm2~ZWz4T!%Ez;O-oHOf_3m>w<% zjI*}?#N;*T<`<25*9Fg=IKGuWU($QsCZMDvbuXv@q5}Q;I;)zU)yu z#>km#-rH8Mq0=c92ugogL6=T+%aleR3o+Lep&&Q?L*|%jqi48tCAV_Dz9@cCnSc92 zT?K?3JJ_yPDUa8_>J9CPLy)*W-B|O7r{au!kt9G`)l?ycb=ke*EcK>r^|v}=zVr$F zNbe{=D=$@Gn%?t&A9IDBpr-P5qK%jLCzJ5`g?#-Gvy@TqwY!(YHKqPGxJd1S{v zgP61VdjW6?0a2UsVc0r#R@3r2G2@1-(&kBEk6ZH4Avd>TZwJi%IW-~>D_@fMy^jw< zUwd&v*WF??)^~z(tGZK?a6@s#;A(V_jj+nuoKXBh{^i#)A0ITYbd5J-{UxRQ+n6)4 z3`KZS#nD=M{Kk{xfDlT@nR9p~{0AC>9s|oO0wRVZaM%bkU#4t()?7dM_Gn*+!GmLB z{|EZJi%n1$ICj`jeWmNqN~~nBZ%b`6z(RJ>xBwdiF||;`?10%6{$?fvSk?*n(&j z{A?|Sj6_q7K;oeam`NslDGM#SZ=GvhQ=q;f!fsMVWvV=xZv`_x=XNFHoO(GW7us|E znr-ZZ)>&83SuePJlI=rQrO+0b@0ashe`R&1me#YfwDrlC9!fmm2w7lBTx!u1jzEL; z?BrOz+eQvqXR~g!x1~B!;T5)^aXjzI|#%DSOB$cJ$_4}|DYO=pAph|G7G7$thBD{ zLLxoau3gLi``$xOz!Yu8k9Gk5%z3P>SqsY{{IlN@y99W-{H9pnvTj;aM_nbt>T<+1 z9yi^NcC8Jt^QzCI8E3GTU-4oX#8e74C!yak3CNZN_X7ldz;wVE z#H0833sZxCjo6yRosYNrBpn#Obj5 z2A$T<84AcUQi`fqkXCve_p4r=S%Pq~Wg+pm7}BpARgopBy$WxR_#U2LpZnD;a5%r& z0C;Kt^XJSfg&40NcvTL5CN*NI&A?qyo?GVedsl!wUMP~)IH}Tjljn%{h3!H91At1= z#&7k9I>aXgz9C;DI!jg)><9+Z$C9vYcpE?%g{bg#bG_rb-2jsXAPB%ye1NJZ9dP~U z4zie3H6-Bke!|QKB5ttuvW4SZeD1cWvU`q@!|9bOb?^!UCbIt5E6K9Ij{fjnHaRSg z2f+{*7}2_{I^9d0((bhJu!Tq3uRPpLFv^_FR5Pbm_cqK_SLpwPH0Q5W{T8^KL>h#A*~)a#DT-E2{$c60kJ#3K)`tJ55O`Re-@%(nBdx@GZ%$TmV-4G)TWu z$i%teXn7ga|D0!V)jA%aC>t zkYG!;2eIgXn2;W=$pUjD0EMSI<(f+%qMBR}S8D_Xk1vmRFAaw&YNd1nrV9|U)d43T zp+*y{CKKH4vLl*7iLTxqw;zPqcc6B+wi?M$D|D2M%OffV+K{^>MgUvKSiM)3>2+U= z0d~mPL_-YB$yb1o55QCcC5Xi#8=wdP7>h5O;qKHr#Y1{x0McI$E|e=c3QVB5agoXo zWHmqvPvmFk;Jf%0oZ9ie0)?_gC0%wyUcEL#Hn_GoqyzzFq=uNg;$M>nBwV zJA!0DoM^A} zV)q>$f=JS^2e&gfwNLv1!92L&;y|pkE3qXZQVG~GNL-@OW(S*o%^|$LCPa{-T`1;i zp<)=Ng4L`fq?sYLj!M!Q40nF|8pOzFQ@jr_AHhr9^0aT)#}J$4?lA+cZ^1G#t|sAz z*+=rVYrJwAe)3z>7sbpkc5YlpGk-UNHnJsrU^`E4>nti2Ic~0#J^9{V6A9_X#leh# z24uOkedm1W(8$BPGKWAWLZLHATqt^lx+ijbmdnzV8yx*o;ZmJC>Ov3MFr?Tm~`~p37~azC*s#fc1Xqv zNWJg_Vh=_>L{$dFO6l*$*x1sJhACYGvr_ zmaaL;(qrG>PY1%69YCz?s8j=mUkZsQfyB(@sUVG$Mnkp8BhYRi2b^K;Zjp4Nd;n>M z8T0!eLVws0(5fv4gi1fh-`hjSaVB`~Fu2U6w`g5?+ThMft~->a*zZOt6!P}zMez-0 zy(oqH5=$nrNnn{ljw_>@Zk z7s7o2CI=jLGfchuI~6inaho=|yMBWtW>V%=Ba#?pHZm+sV3J+INC>SP<7!-KRYg?` zmxO@o;jLt*)X`-gCLEsAg-A2;^o`1oB$?KB7{Hbl046`r!K~ z6!6Gj9RKQbv3)?@xoB#=mS$gLf};^y67tOQ$Kt*+@_Qnzg>FuR3<9)3$|H;S1%%<{ zVMDQ9EiM};E$bNG565VYKVL~|-O?KVN*%*ueT{}^F8fCHKAtH%b@WF)6TIjw^PBwI$SmIluuD0qq&4B4ku!zYb}(hyvRJ*=)cTj8g!y#p^|>r%VfAisFFTZn`DN4|fb`a;7js6FvX2;q^v0keY8UwF94c$;~5oa292NvtjAS&87Ggb0_4uKRze+cU4{gKxDwuc(n{JCvwLM3mxSFSg65G33I z9fIi_-&vC_nCG($E46t3ueYHzlxjn~qKVY{F8Ls+>t`%5%MCVo!be${S$-7FBl zE#C{f#;cg~maaNo@yI#OPvZCbTM)Vze!xLpoLD8mo;dPtKoG2?JGi94W0)<}yxLTa z@%T)K8!X}LnF{&y#%!{guBGVjQ%n;jUN)jZ}; z%qhndStv+EHoX9>zcEnJn241!Dw}u>Io>paC14bbb^X0@p1um;(s!g7HQ2T`j~{Xq zqq%6HaX8sK4ZczE!GEQ^Y*%6S@9zZk7##$}owt8h0)7tHO-btWJ02GnqBiL-R~Y_& z$&^7(%c#B+Ksd#!-Ty_0*b7Wq!3VZ@nty5}lipOO`P7ABq!KY`0@nCCWUl^nOhIfc zeD=eHTAe z%z)aCGS+}VnXkFM;h66|xMts<4wgD}(4juZ|G7YEuAu*0KDVwd2*K~o?ncAFG8bD` z95{FY>X8lD+&00AqG(MeRT*)_vZp4!TE6-B13?Sy__29Km2{7M^a{QR(A%HJg>VA9_{f=)Jk1{ypsJwLb9%V zrgp~sz1cyQ;^NRuU8q9*vhQ;+TI6~&Q+sOXCOGkgWCcr1d5D~eBoDY}z2y_1J5q}1 zEplHuBXXQVbZ~wV(yvpi?(6q>jBEjqRAwPLV&ez8*~g>)=NkM&xZTB_v@j~9jZF0RYPk<{7KsY1+(1V^;<(~nw(4&QYo># z%z|}=sS^G0x&4uX*ZcOm9(jJ{$4!M-<{4S!+Pdk zE*NJCWi2LMDLyaevKY-Rqle3#fbw8GcN8yp2;qr zPFS5Dd8eTc<>yiJ#`D1-DR|cOz+*K zLwg?$#R(Br!fu>Fk}@9M7@fr90~UtW2T0|bGt-qfaD{>}>WD96 zx8DglFP04JsATq$$eBQou+kUd(_)TUqWK2%TWx?Ts%&+n@^T_5xuk5rl%x!0_#%I^ zvp*{S9GhDBNO9Vz-KoYpWkrkxIFwwqQ`-23VJRC62Y1l6HWRofUp=^t9G@5}2}?g9 zbLxszHc&r4;pJxNObOg(L0Ax^(a@YN6S$W9qJ{h9|Jq`?2nmEo;&MgdtBg&jjiH(X(yx*C5liJr? zEJPcpY*;y?m59iC>FTn+a#t;YTv{6T$O~og^)s@jA&zKO@OuYa({K`moBp04^N2?j zio}j*=Dx9EO%}_wW52Y#am$z!N;NMPO3lsVt)!H2>mYE|Pb{&)ro)KjGai(DBmAiz z#Le4*9?%~#yVd-bg;D2m)PA{!hZ|Xg#W~MoTQdrd%mi5y6Jdz-R*o5Ot7^)cNnRP3 zFEI>1AWK^u>$Om*i!U>~=!Gf(mGs^7po(;>sj%;x2H+0Xr@ZWUQtuEdH+9V9#n!)U z(~*X`TuyY&o|8&N2 zue>4H$N7$p_^x_d$*qV>uk&_tW4e8n?N9UI1Ftg&gMtW|s1woYMb8wjA^c@wc_){< zhjEctTJzu*o9nX&+y0UWL)63Rq-(u_v;gPKCN=r$#C~;78w^>eKAL^{?hb+EjfMLn6MY) zr=lhcf)pb&y9MiE%+j@;Yy}(V|L2R38@U^nS>@$je9@^j+JoD8yzz0?^Zth+m2B#L zKb47wwqu4v$9?2<`w6D+wQk|kJ}?8Eq~!7%Bzl>xSCkqPTZJ5T!m;hO)~y?nl5)Rf z#Yyu8X_t(uh(pdj!bL^q)?qZNgG?4zh>Fc&H{-rl=esgll~t(smVzD;r7!x?w^_4u zaSX?m^{G}>^8~D&OjfP+)l+QxTiw6|C3$z9kpfD4Kq*{?JN^I%2M*fl=<5M%zH!_b z|8yfh=j&a9B|Vslo|-fHxlZ-tc;^dB-LvbIisi0M;$WMfyZ|hwglycK)#!wEHgi+; zjkIM1s@Pc1PMH@FM0GbDj>PqQc#=TC+)CRm1-D2$;DT!OC9-Yy^wb)oE+()7Gjbz zZ`qR4fOJ=C&Nnx9uSqeCUwa#A2A@0`lXfZ9Q|L{ZlOXQLkv(k8%f~?2Cje}K_XQAV ze8}r|zl_cGVSp{1DsQ@zfLz1hi(vMWOkqDe9<3PVFRp0m%0ecGFN7+L434@GPr$q3 zoqMPy^}lj{SvP!el-_~!?W&;~$~dAm{fW=UpLbJojjK^QXp87hJ0WAp;0lvg|p zzU5k0O-GFiF4-x2YvKK;=4aR6`M=ADqxE03<#_23mAM=-Z=Q!a<~1F+A44C`8NKly z=3?&Dt_iG0e=g}F_Nd=Of2PL6BYBCV;)ElX6la@#SEk+a&y1F^M>b9dIfUwIPj4;r z30XBI->o;jX4AXkkoKOGS{rJK`NkqAo{9+l_RuE$8=pz_ea5@<4w{c=rUJh>Sv6dw ze~(-AP!NSFDk4k77Vhb=flIk*spmSu(fCF9u&0@=AD;`HuFj=jHfUVowrA@vzGB~m zy#X5oh^Okh4SX#{$^0|i9H*namd}Y|L{cXzTD~YP%$(}Jum*s^|L^p$EzjBczuvhR zB?W^#os;rZpYO$zHSq@5sr;4`)gPWHRZ=FzF8BcxCzsVw|3NwieZ(-k$M~DYZ^6M_ z&Fmgz?2BxKS+XS;=q%z+*z|87mZEb_e`dwOv-LDnE>qa(jC z>}fAu(*%%wBX`gNWKh_5s#WMc-=m=NyPKo1=OPI;dT(5YZW1=$C`@6=&CF9Do zUB}*KT(|Pg&feoyOVh0lQz{hzP}m;lFDEuJ)n!sP`$Sf}mlOUc=3%4nM;$94FS=Ck zso(D!rMsUxf2pvltN5)h=70hvuQ^d@CB5F!-MN?YglE5R`H$E2bgBDGvaBEQ-Y?KNzNQ@$i{n`YFvrcVIPhGg^4)SOc zXW|l99Rc&+K=YQT!`gm8Ll{9^z<*&SjTv8Oxd7x6~T$-_-`2B&5my2xGakVd|M)@@$2dpZkRc37-`;x{~z^?S{!l za4!LgLLQ;{^n}*+#=P~ss?M1eC3|Jai+23H8Nm$KEDtjPhE;T_+Are>#Rwhd6(I~x zkWhG}G1#dTJtCHH$>HRSv7&yN94`q~;pDWaNzL${>I)R4qLesLFrY_m5DiN1x%rJpztzSG2@3bsBg^J72O0Pm+>qNvK za2M!NoKPs$v+th{AF7$I@N|?b!)QRq@8Sb%m%>~}WGFj=4647xrVK)S(qhcB{!{Ss&y1C{Xs__%w z1Ya8A+EqlHy^y?upt(o-Mh~GG+(Ud!RN`m^pGhTORgv0OQ&y6z`6)#|R2C``!@6JS z*;X$w!K~69SgOpBZ8PwltZdx($(g<9qc=e!$0FUzUsl>A(^F_^24Q0SzO}IbG+jaE z+r*Zgvs|T-LNAWP-CB=ugbAN^$!L=un6F;`QFLKA%!M+BT5_^0o8cWF8X7e{6p`J6 z=ihPIr1-kR;b5w8{l?oe))B9A_7jYP+OZ#8G>f|p2W6atbauqAjIKN*nEz-^{hvUU zO&s-qbIJ3ypN|*Xr5KvD)M&S<;izhy{+muITPo$+DGz6kV4iDBD+p!E2$g<% zL)O1-myKv`zF`}`;$Z&w+Nb#4{aD}YskBQ5(`8%^f1j%J#)@L9e!NbY2`c|S&6S?y znpR$$+8-H}H_=<>MD`k+!;t&)nr+ZHbkIn2apSQ;wExD)QvP|th02TQIVQR8+xrYC zjaX=H{UUKLi-(lW6(A(0Iu;1xq!EyE)r>@VDc64!j9L3J9%pm87kB(k45_@(B0U$= z-66D3T2EAW%s%PGbo9s!t4itiuShtTytY2x{CD!dvjR4@Fqmxi@xXHy zk>v6P{DZ4DdBF8pe>dQs92{O;ojMkYmwi;6>vj{nR8kt|=n?upb%EE?L&M+oZNZ`^ z_dEYY3^T@JbWlmJp(eXHCx?b14Q=x5&mbNy+?keSH*b#kH47*)!xwLi)r^4k!d z$iL1(VO=-{u@@OdpF&ov6;Re2dNbNTs?=Wml>=GIM6ZtN-h~n zAz)Ad1Z=WR$xzx zttHSxZ{zw(oax@*;1*T1Kr6Fe%0dnd!I$rD{%d_ZMOYuqm;*ufpqag*BQ`(kkt=O^ zGa;p@vP;r!K8C&CYi(DVNl%CCgIWJBr;VD>@(-pJ`O4UtlvXv>!b~xz^%K`UhobnR zZVH##zqwN5#=FcmZ(q+-o^NS$Jj)iF%Ii3_Q&-b|IEO%;^w=iG|U=a3j%yyJVM@H~pGYxS4m4LyBV(PdMJu-|X7|pvHqq^ zvr(XDm9Q0Q#Fcjj^VW3W#qG%yX=slkCj)5NPOARZ#dYd|`C0EH18EP_UzHTPkBXyv zZ#><&f{-t*bKh(&HqV zRcZ}nMl)%#(-iC(rFV2?J_IZK|}* zRvY4iTkX@x#5eV1Vzrs?@`b`3k>rg{DU_RonU~H_V)>Evwy}km0z`N)YRRY3!YBy!u%UOJ+a)b`L zVzOiv87@~--YDQQoUF}FUX{wG+%-B(82MUO9bdR>b%Fd<$BQM%Ovr?^M6##@P4h;{r24wtyO`1l6mw<&_P-b-;XsxsA@Z;}qX|v@dn=8hpRC9WUwoX2VLV zKbxPJlMn%+d{o6u^@)J;`&N3kO6pm3=YiQ!!`{d%ZWGkontD1>KWBE5GZl{J!Gmpp znE=N5D{#rNP243^_*(DUUvpU7>bD>v4lzdCDx`rd9`mqO*ok8LWNnY-l}nNeI{gnD z7ieeV=$CHWZuuGv)8#O-I}VdaV)Fxj7{)1HE_-G0V8(ShgO%I4^32Wr#7w{5{<4kP zu4TUEG!2j({I^EJ#uoIn*1!jGEVTj@T22OubU!M8596lgGqR^yHXwHW#V)`Rvpo9! z;9!cUgdO+D)U@u=#f$c@QFT(>iW_S5jT^yfMMF^%Q78Y`60+%s0@80}%X*w*=xn7a zxtt5{%sTF)qcbI5Zqc!(PHUz($z;_N{L?H(%FC9Dw=9^F|C_piwEiZz0K#;~kK4mH zQ1S;)24mZQJ|B+U0wa!pK6lv#z|hs7&%0g6prPgM&-jl0V9w{yXF2*m3Po&efmis4{f(GemDSYuKmSX?OXwWk`;XlB|9PRe7=UZMPO(uD6%u;$^1`1le$__{&0*ld zL(u>gBn@}>3W1*X_QL=7x3Iqe2d0=w+3}!LO^@E)7yEJuj9aKNf8R(KGfDY)7vvuY zE(!^0@bU2>yua^!5y}?DIk*2Ee<$Z%wK(Aqs;9K08B@>adO+C`^hiNtHu=#mlg4{$ zecqZ`-@kn;0Fw_~L8k&CnJ%TpL|*-=Q+m;izu|23d&)Z~AMfm3#_96t^|@=_`?mUr zbrk%b|9277WCjKX4gme|+FC!Kn4M{%;Kh;udCuL7J1FhJJJ%A_jsCk)PXE6*P=Du> z$B(;*hm9m9B_YCo3K5%WPX{v_r9N|=zCJz%K(xCah+3bIJub4jCJWDyvaK4(Qz{2K z0cEC@*@z$#obY?smy|7LgjOSv1v!0aFPSup^4_&u>-knf@z0<4!H|;H%F2pwU|>dK zA_r?`7c*scwJvzoZj(kU1F~ytzkYq~l|oe%6&0P2Jt5K@NSrJNGB%|^)(Vu5El`mW zRk-D;W~0c+Nbn5PLXCJJez9~tkyGR_IIn_z!ujE^!FLtCa^((cYwZOj@nM4u#e<2c z%UIUNuwLj|kFZ?$Z*L&Zev3h;nz5LS0H9xVK7m&xWK9VkxH44=9$^Rx^ukrb=D&Y` z1^%@Jbe`0C74+BUgOrP3#Kn#LUY)}<`{AHvm{?QFFf=p-`WPHQ1ZAlftvXz4R8kkd z>5HkfY|5QHeus`W8{kUg*9A=%jAPAOrlc+{rVua z6Fps5xqtbG&^M=?2LN{w-cgHKQc`gw>4C@6UYPS<|Hs=>voyUR^l?i5aUrBz%7RY! zf#kwshKB9FWw%tQrdY!ukmrIwzj$8KT32U^+q{pl^u8Ca?rK%d9ZKTmIv4tOiFsO> zHrnsRH_9@ttQ-g5^QSJ}nC3w34LM5-yaJp|CWILZ7N8BTn#i*^o7>l+6%E!9C zKmW$q7t6|uirH*K6YfkTw5*GVSb(rOBj{p`l+zplqlD5a?lXi#t`)≶Dd3odNJZ3AVx--??D=#$-L-OG!|n+<@$0v5 zcYak~wW>U)>;?fNK#u=Ql-7+eL_)^R&PXiHV88?p^e}*o-eH zrqO79KnH#q8q$51c4TI@dc?VB&!2-8N29G?%^EWBZeNepbz(AOTJSS_nV5#7Y2zat zF^C}cxqVzN=`vPuG3a-#Ye(}mZ7wX4lzdAOJ#flZ_Y%DGo*(_p9rsyjQ?%W0RI|$c z_LLn@z*8~EXZ&g%W)DX5U0zoa+Oq^Mb&;@8n z2nDC~)Tvj;h98a;<@X}zsdi81_o2}IuzdRpK zfsfHG?TmkHgYZ$e+T)1PjLKitL+|aCWS&Nj^6q_@{$+UBx$D}VG9*BJ(Yz3tmSYs} zrjzpt-Usv3VkjBy&#MAy3v0>s7u+CLmQ^-P8x};=8tREr<&d+876=8@N-binc#W~K zj?esxs;U+~zwAkY7*z^c+Qr3%2j|cIn(LImh_Piz%+u=7#7g6dv9GL>9np>PDnv@v zJJ9#&tP#7wEv&zxyLwvM`linz#9TyTh&;hW9N4d4|DP+?=W~#cx71jOax4M@0%DFI zFY>);#J0wg}803<+h2?^FUKoen- z)j`=#g>Lz{ZXaAdr3d;}9=e!;FL(8XAIk+!034S7yFnV+DYt36BvUEs%^zBRMVSy6y z7-Ney(#PCuHGu1Z2)k3&2KXGLp~2dTA2w}mZCLy>lkzrUhgDKg_iZU1*D43_4wDND z3n|=fw~kuKt!^>=+1q5=1_hOxnVSzb&hw`tE@hPTZ4pj`5Nit4kEteQWo1$N66vZ~ ziXvaj_MB+I|LH>!U);SIW@>tY z$S*?y%6Gl)M2}Z)gE)|Xo$Y^qZ8$4w0GznyyLT zfUJd+eJ{tXprBx1a4;X1IF*{3`sUmCk5LTFG+#cN`}{i1Rq233vpz zxyoAsMQ@J8w7F^E8~Xh5vhHAav=$a4y1sTP7SAPhU4$DsM^&(pR~fkLKxnAX*tdQN z0+XHcSsIWM4doFLA%e)-rz5WorzBWc-hNi)p!y>Sw$s3 zzOt%{nS{#o=Jjienwr|(Voj^F|Ee-DUt3dPrciZstRNpxEH5voXs=o0 zlEg!EwjfsCbNb}&>7{IYskeQ;d#ziN1InLb+=kp9bhi-Bb0FyFY+pwveR95e-nFe| zyFG_P5RJakv9Tl>dyaxwio#@%RDK_92k=`7ze$fI$^--41<5hyNj1{{cPz?+mNsnx}Hw{LNa42dXHlysDy8th9n*lc!9f8)G^WBqqx`(t1i zNQ!@Mf*0eB?uSM)zYl+Qf0j-LlNn 1: - local_rank = os.environ['SLURM_LOCALID'] - output += " && export LOCAL_RANK='{}'".format(local_rank, local_rank) - - print(output) diff --git a/slurm/distributed_data_parallel_slurm_setup.sbatch b/slurm/distributed_data_parallel_slurm_setup.sbatch deleted file mode 100644 index dc79e68e..00000000 --- a/slurm/distributed_data_parallel_slurm_setup.sbatch +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash -#SBATCH -o job.%j.out -#SBATCH --partition= #your_partition -#SBATCH -J job_name -#SBATCH --nodes=1 -#SBATCH --ntasks-per-node=2 -#SBATCH --ntasks=2 -#SBATCH --gres=gpu:2 - -#setup your environment here - -###### - -# --- Setup In Master --- -# Master will be the one running this bash script (SLURM runs this only once) -# Get hostname and port on first node first process -# For the port see: https://unix.stackexchange.com/questions/55913/whats-the-easiest-way-to-find-an-unused-local-port -master_addr=$(hostname -i) -master_port=$(python -c 'import socket; s=socket.socket(); s.bind(("", 0)); print(s.getsockname()[1]); s.close()') - - -# --- Call the Script which the User will Edit --- -# With srun this will be run on all nodes for all processes -srun ./distributed_data_parallel_slurm_run.bash --master_addr $master_addr --master_port $master_port diff --git a/source/api_cc/build.sh b/source/api_cc/build.sh index 02ea1892..0032fa61 100644 --- a/source/api_cc/build.sh +++ b/source/api_cc/build.sh @@ -1,7 +1,7 @@ -rm -rf build +rm -rf build mkdir build cd build export Eigen3_DIR=/opt/mamba/envs/dppt/share/eigen3/cmake -export CMAKE_PREFIX_PATH=`python -c "import torch;print(torch.__path__[0])"`/share/cmake:$CMAKE_PREFIX_PATH +export CMAKE_PREFIX_PATH=$(python -c "import torch;print(torch.__path__[0])")/share/cmake:$CMAKE_PREFIX_PATH cmake .. make diff --git a/source/api_cc/include/DeepPot.h b/source/api_cc/include/DeepPot.h index 17d3e03e..a8c0c017 100644 --- a/source/api_cc/include/DeepPot.h +++ b/source/api_cc/include/DeepPot.h @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: LGPL-3.0-or-later #include "common.h" namespace deepmd { @@ -5,7 +6,7 @@ namespace deepmd { * @brief Deep Potential. **/ class DeepPot { - public: +public: // cublasHandle_t handle; /** * @brief DP constructor without initialization. @@ -16,8 +17,7 @@ class DeepPot { * @brief Initialize the DP. * @param[in] model The name of the frozen model file. **/ - template - void init(const std::string& model); + template void init(const std::string &model); /** * @brief Evaluate the energy, force and virial by using this DP. @@ -31,32 +31,27 @@ class DeepPot { *x 9. **/ template - void compute(ENERGYVTYPE& ener, - std::vector& force, - std::vector& virial, - const std::vector& coord, - const std::vector& atype, - const std::vector& box); - private: + void + compute(ENERGYVTYPE &ener, std::vector &force, + std::vector &virial, const std::vector &coord, + const std::vector &atype, const std::vector &box); + +private: torch::jit::script::Module module; }; -template -void DeepPot::init(const std::string& model) { - // cublasCreate(&handle); - - try { - module = torch::jit::load(model); - } - catch (const c10::Error& e) { - std::cerr << "Error loading the model\n"; - } - +template void DeepPot::init(const std::string &model) { + // cublasCreate(&handle); + try { + module = torch::jit::load(model); + } catch (const c10::Error &e) { + std::cerr << "Error loading the model\n"; + } } class DeepPotModelDevi { - public: +public: /** * @brief DP model deviation constructor without initialization. **/ @@ -67,7 +62,7 @@ class DeepPotModelDevi { * @param[in] models The name of the frozen model files. **/ template - void init(const std::vector& models); + void init(const std::vector &models); /** * @brief Evaluate the energy, force and virial by using this DP. @@ -81,28 +76,28 @@ class DeepPotModelDevi { *x 9. **/ template - void compute(std::vector& all_ener, - std::vector>& all_force, - std::vector>& all_virial, - const std::vector& coord, - const std::vector& atype, - const std::vector& box); + void compute(std::vector &all_ener, + std::vector> &all_force, + std::vector> &all_virial, + const std::vector &coord, + const std::vector &atype, + const std::vector &box); /** * @brief Compute the average energy. * @param[out] dener The average energy. * @param[in] all_energy The energies of all models. **/ template - void compute_avg(VALUETYPE& dener, const std::vector& all_energy); + void compute_avg(VALUETYPE &dener, const std::vector &all_energy); /** * @brief Compute the average of vectors. * @param[out] avg The average of vectors. * @param[in] xx The vectors of all models. **/ template - void compute_avg(std::vector& avg, - const std::vector >& xx); - /** + void compute_avg(std::vector &avg, + const std::vector> &xx); + /** * @brief Compute the standard deviation of vectors. * @param[out] std The standard deviation of vectors. * @param[in] avg The average of vectors. @@ -110,10 +105,9 @@ class DeepPotModelDevi { * @param[in] stride The stride to compute the deviation. **/ template - void compute_std(std::vector& std, - const std::vector& avg, - const std::vector >& xx, - const int& stride); + void + compute_std(std::vector &std, const std::vector &avg, + const std::vector> &xx, const int &stride); /** * @brief Compute the relative standard deviation of vectors. * @param[out] std The standard deviation of vectors. @@ -122,10 +116,9 @@ class DeepPotModelDevi { * @param[in] stride The stride to compute the deviation. **/ template - void compute_relative_std(std::vector& std, - const std::vector& avg, - const VALUETYPE eps, - const int& stride); + void compute_relative_std(std::vector &std, + const std::vector &avg, + const VALUETYPE eps, const int &stride); /** * @brief Compute the standard deviation of forces. * @param[out] std The standard deviation of forces. @@ -133,9 +126,9 @@ class DeepPotModelDevi { * @param[in] xx The vectors of all forces. **/ template - void compute_std_f(std::vector& std, - const std::vector& avg, - const std::vector >& xx); + void compute_std_f(std::vector &std, + const std::vector &avg, + const std::vector> &xx); /** * @brief Compute the relative standard deviation of forces. * @param[out] std The relative standard deviation of forces. @@ -143,29 +136,28 @@ class DeepPotModelDevi { * @param[in] eps The level parameter for computing the deviation. **/ template - void compute_relative_std_f(std::vector& std, - const std::vector& avg, + void compute_relative_std_f(std::vector &std, + const std::vector &avg, const VALUETYPE eps); - private: +private: unsigned numb_models; std::vector modules; }; template -void DeepPotModelDevi::init(const std::vector& models) { - numb_models = models.size(); - modules.resize(numb_models); - // cublasCreate(&handle); +void DeepPotModelDevi::init(const std::vector &models) { + numb_models = models.size(); + modules.resize(numb_models); + // cublasCreate(&handle); - try { - for (int ii=0; ii #ifndef COMMON_H #define COMMON_H -#include -#include +#include #include +#include +#include #include -#include template -void TensortoVec(c10::IValue in, std::vector& out) { +void TensortoVec(c10::IValue in, std::vector &out) { std::vector values; if (in.isTensorList()) { - auto tensor_list = in.toTensorList().vec(); // Extract the underlying vector - for (const at::Tensor& tensor : tensor_list) { - values.push_back(tensor.item()); - } + auto tensor_list = in.toTensorList().vec(); // Extract the underlying vector + for (const at::Tensor &tensor : tensor_list) { + values.push_back(tensor.item()); + } } else { - std::cerr << "in is not a tensor list\n"; + std::cerr << "in is not a tensor list\n"; } out.resize(values.size()); - for (int ii=0; ii(values[ii]); + for (int ii = 0; ii < values.size(); ii++) { + out[ii] = static_cast(values[ii]); } } -template -class Region3D { - public: +template class Region3D { +public: Region3D(); ~Region3D() {} - Region3D(const std::vector& box){ - Eigen::Vector3d a1((std::vector(box.begin(), box.begin()+3)).data()); - Eigen::Vector3d a2((std::vector(box.begin()+3, box.begin()+6)).data()); - Eigen::Vector3d a3((std::vector(box.begin()+6, box.begin()+9)).data()); + Region3D(const std::vector &box) { + Eigen::Vector3d a1( + (std::vector(box.begin(), box.begin() + 3)).data()); + Eigen::Vector3d a2( + (std::vector(box.begin() + 3, box.begin() + 6)).data()); + Eigen::Vector3d a3( + (std::vector(box.begin() + 6, box.begin() + 9)).data()); boxt << a1, a2, a3; rec_boxt = boxt.inverse(); volume = boxt.determinant(); @@ -43,43 +46,51 @@ class Region3D { _h2yz = volume / c_yz.norm(); c_zx = a3.cross(a1); _h2zx = volume / c_zx.norm(); -} + } VALUETYPE volume; - std::vector get_face_distance(){ + std::vector get_face_distance() { std::vector temp(3); temp[0] = _h2yz; temp[1] = _h2zx; temp[2] = _h2xy; return temp; -} + } - void phys2inter(std::vector& inner_coord, const std::vector& coord){ - int natom = coord.size()/3; - inner_coord.resize(natom*3); - for (int ii=0; ii(coord.begin()+(3*ii), coord.begin()+(3*(ii+1)))).data()); - Eigen::RowVector3d tmp_inner_coord = tmp_coord * rec_boxt; - for (int jj=0; jj<3; jj++) { - inner_coord[3*ii+jj] = tmp_inner_coord[jj]; - } + void phys2inter(std::vector &inner_coord, + const std::vector &coord) { + int natom = coord.size() / 3; + inner_coord.resize(natom * 3); + for (int ii = 0; ii < natom; ii++) { + Eigen::RowVector3d tmp_coord( + (std::vector(coord.begin() + (3 * ii), + coord.begin() + (3 * (ii + 1)))) + .data()); + Eigen::RowVector3d tmp_inner_coord = tmp_coord * rec_boxt; + for (int jj = 0; jj < 3; jj++) { + inner_coord[3 * ii + jj] = tmp_inner_coord[jj]; + } } -} + } - void inter2phys(std::vector& coord, const std::vector& inner_coord){ - int natom = inner_coord.size()/3; - coord.resize(natom*3); - for (int ii=0; ii(inner_coord.begin()+(3*ii), inner_coord.begin()+(3*(ii+1)))).data()); - Eigen::RowVector3d tmp_inner_coord = tmp_coord * boxt; - for (int jj=0; jj<3; jj++) { - coord[3*ii+jj] = tmp_inner_coord[jj]; - } + void inter2phys(std::vector &coord, + const std::vector &inner_coord) { + int natom = inner_coord.size() / 3; + coord.resize(natom * 3); + for (int ii = 0; ii < natom; ii++) { + Eigen::RowVector3d tmp_coord( + (std::vector(inner_coord.begin() + (3 * ii), + inner_coord.begin() + (3 * (ii + 1)))) + .data()); + Eigen::RowVector3d tmp_inner_coord = tmp_coord * boxt; + for (int jj = 0; jj < 3; jj++) { + coord[3 * ii + jj] = tmp_inner_coord[jj]; + } } -} + } - private: +private: Eigen::Matrix3d boxt; Eigen::Matrix3d rec_boxt; Eigen::Vector3d c_xy, c_yz, c_zx; @@ -87,176 +98,192 @@ class Region3D { }; template -void normalize_coord(std::vector& coord, - Region3D& region){ - std::vector inner_coord; - region.phys2inter(inner_coord, coord); - for (int ii=0; ii &coord, + Region3D ®ion) { + std::vector inner_coord; + region.phys2inter(inner_coord, coord); + for (int ii = 0; ii < inner_coord.size(); ii++) { + inner_coord[ii] = std::fmod(inner_coord[ii], 1.0); + if (inner_coord[ii] < 0) + inner_coord[ii] += 1; + } + region.inter2phys(coord, inner_coord); } -int compute_serial_id(const std::vector& cid, const std::vector& ncell); +int compute_serial_id(const std::vector &cid, + const std::vector &ncell); template -void append_neighbors(std::vector& merged_coord_shift, - std::vector& merged_atype, - std::vector& merged_mapping, - std::vector& a2c, - std::map, int>& region_id_map_serial, - std::vector>& cell_list, - const std::vector& ncell, - const std::vector& coord, - const std::vector& atype, - Region3D& region, - VALUETYPE rcut){ - int natom = coord.size()/3; - a2c.resize(natom); - int nlocal_region = ncell[0]*ncell[1]*ncell[2]; - int nghost_region = (ncell[0]+2)*(ncell[1]+2)*(ncell[2]+2)-ncell[0]*ncell[1]*ncell[2]; - cell_list.resize(nlocal_region+nghost_region); - - std::vector> c2a(nlocal_region); - build_inside_clist(a2c, c2a, coord, region, ncell); - - for (int ii=0; ii &merged_coord_shift, + std::vector &merged_atype, + std::vector &merged_mapping, std::vector &a2c, + std::map, int> ®ion_id_map_serial, + std::vector> &cell_list, + const std::vector &ncell, + const std::vector &coord, + const std::vector &atype, + Region3D ®ion, VALUETYPE rcut) { + int natom = coord.size() / 3; + a2c.resize(natom); + int nlocal_region = ncell[0] * ncell[1] * ncell[2]; + int nghost_region = (ncell[0] + 2) * (ncell[1] + 2) * (ncell[2] + 2) - + ncell[0] * ncell[1] * ncell[2]; + cell_list.resize(nlocal_region + nghost_region); + + std::vector> c2a(nlocal_region); + build_inside_clist(a2c, c2a, coord, region, ncell); + + for (int ii = 0; ii < nlocal_region; ii++) { + cell_list[ii].assign(c2a[ii].begin(), c2a[ii].end()); + } - std::vector> ghost_region_id(nghost_region); - std::vector> mirror_region_id(nghost_region); - // std::vector ghost_region_serial_id(nghost_region); - std::vector mirror_region_serial_id(nghost_region); - std::vector> ghost_region_shift_period_to_inside(nghost_region); - int m = 0; - for (int ii=-1; ii=ncell[0] || jj<0 || jj>=ncell[1] || kk<0 || kk>=ncell[2]) { - ghost_region_id[m].resize(3); - ghost_region_id[m][0] = ii; - ghost_region_id[m][1] = jj; - ghost_region_id[m][2] = kk; - region_id_map_serial[ghost_region_id[m]] = nlocal_region + m; - // ghost_region_serial_id[m] = nlocal_region + m; - - mirror_region_id[m].resize(3); - mirror_region_id[m][0] = ii % ncell[0]; - mirror_region_id[m][1] = jj % ncell[1]; - mirror_region_id[m][2] = kk % ncell[2]; - - for (int ll = 0; ll < 3; ll++) { - if (mirror_region_id[m][ll] < 0) mirror_region_id[m][ll] += ncell[ll]; - } - mirror_region_serial_id[m] = compute_serial_id(mirror_region_id[m], ncell); - - ghost_region_shift_period_to_inside[m].resize(3); - ghost_region_shift_period_to_inside[m][0] = -int(std::floor(VALUETYPE(ii)/VALUETYPE(ncell[0]))); - ghost_region_shift_period_to_inside[m][1] = -int(std::floor(VALUETYPE(jj)/VALUETYPE(ncell[1]))); - ghost_region_shift_period_to_inside[m][2] = -int(std::floor(VALUETYPE(kk)/VALUETYPE(ncell[2]))); - m++; - } - else { - std::vector tmp_region_id = {ii, jj, kk}; - region_id_map_serial[tmp_region_id] = compute_serial_id(tmp_region_id, ncell); - } - } + std::vector> ghost_region_id(nghost_region); + std::vector> mirror_region_id(nghost_region); + // std::vector ghost_region_serial_id(nghost_region); + std::vector mirror_region_serial_id(nghost_region); + std::vector> ghost_region_shift_period_to_inside( + nghost_region); + int m = 0; + for (int ii = -1; ii < ncell[0] + 1; ii++) { + for (int jj = -1; jj < ncell[1] + 1; jj++) { + for (int kk = -1; kk < ncell[2] + 1; kk++) { + if (ii < 0 || ii >= ncell[0] || jj < 0 || jj >= ncell[1] || kk < 0 || + kk >= ncell[2]) { + ghost_region_id[m].resize(3); + ghost_region_id[m][0] = ii; + ghost_region_id[m][1] = jj; + ghost_region_id[m][2] = kk; + region_id_map_serial[ghost_region_id[m]] = nlocal_region + m; + // ghost_region_serial_id[m] = nlocal_region + m; + + mirror_region_id[m].resize(3); + mirror_region_id[m][0] = ii % ncell[0]; + mirror_region_id[m][1] = jj % ncell[1]; + mirror_region_id[m][2] = kk % ncell[2]; + + for (int ll = 0; ll < 3; ll++) { + if (mirror_region_id[m][ll] < 0) + mirror_region_id[m][ll] += ncell[ll]; + } + mirror_region_serial_id[m] = + compute_serial_id(mirror_region_id[m], ncell); + + ghost_region_shift_period_to_inside[m].resize(3); + ghost_region_shift_period_to_inside[m][0] = + -int(std::floor(VALUETYPE(ii) / VALUETYPE(ncell[0]))); + ghost_region_shift_period_to_inside[m][1] = + -int(std::floor(VALUETYPE(jj) / VALUETYPE(ncell[1]))); + ghost_region_shift_period_to_inside[m][2] = + -int(std::floor(VALUETYPE(kk) / VALUETYPE(ncell[2]))); + m++; + } else { + std::vector tmp_region_id = {ii, jj, kk}; + region_id_map_serial[tmp_region_id] = + compute_serial_id(tmp_region_id, ncell); } + } } - // printf("ghost region serial id:\n"); - // for (int ii=0; ii nghost_each_region(nghost_region); - for (int ii=0; ii ghost_atom_mirror_region_id(nghost); - std::vector ghost_atom_ghost_region_idx(nghost); // Note: the elements in this vector range from [0, # ghost regions) - m = 0; - for (int ii=0; ii> coord_shift(nghost); - merged_coord_shift.resize(3*nall); - merged_atype.resize(nall); - merged_mapping.resize(nall); - for (int ii=0; ii inner_int = ghost_region_shift_period_to_inside[ghost_atom_ghost_region_idx[ii]]; - std::vector inner_coord_shift(inner_int.begin(), inner_int.end()); - std::vector shift(3); - region.inter2phys(shift, inner_coord_shift); - std::copy(shift.begin(), shift.end(), merged_coord_shift.begin()+3*(natom+ii)); - } + } + // printf("ghost region serial id:\n"); + // for (int ii=0; ii nghost_each_region(nghost_region); + for (int ii = 0; ii < nghost_region; ii++) { + nghost_each_region[ii] = c2a[mirror_region_serial_id[ii]].size(); + nghost += nghost_each_region[ii]; + } + int nall = natom + nghost; + std::vector ghost_atom_mirror_region_id(nghost); + std::vector ghost_atom_ghost_region_idx( + nghost); // Note: the elements in this vector range from [0, # ghost + // regions) + m = 0; + for (int ii = 0; ii < nghost_region; ii++) { + std::fill( + ghost_atom_ghost_region_idx.begin() + m, + ghost_atom_ghost_region_idx.begin() + (m + nghost_each_region[ii]), ii); + m += nghost_each_region[ii]; + } - for (int ii=0; ii tmp_mapping = c2a[mirror_region_serial_id[ii]]; - std::vector tmp_id(tmp_mapping.size()); - for (int jj=0; jj> coord_shift(nghost); + merged_coord_shift.resize(3 * nall); + merged_atype.resize(nall); + merged_mapping.resize(nall); + for (int ii = 0; ii < nghost; ii++) { + std::vector inner_int = + ghost_region_shift_period_to_inside[ghost_atom_ghost_region_idx[ii]]; + std::vector inner_coord_shift(inner_int.begin(), + inner_int.end()); + std::vector shift(3); + region.inter2phys(shift, inner_coord_shift); + std::copy(shift.begin(), shift.end(), + merged_coord_shift.begin() + 3 * (natom + ii)); + } - for (int ii=0; ii tmp_mapping = c2a[mirror_region_serial_id[ii]]; + std::vector tmp_id(tmp_mapping.size()); + for (int jj = 0; jj < tmp_id.size(); jj++) { + tmp_id[jj] = natom + last_size + jj; } + cell_list[nlocal_region + ii].assign(tmp_id.begin(), tmp_id.end()); + std::copy(tmp_mapping.begin(), tmp_mapping.end(), + merged_mapping.begin() + (natom + last_size)); + last_size += tmp_mapping.size(); + } + + for (int ii = 0; ii < nall; ii++) { + merged_atype[ii] = atype[merged_mapping[ii]]; + } } template -void build_inside_clist(std::vector& a2c, - std::vector>& c2a, - const std::vector& coord, - Region3D& region, - const std::vector& ncell){ - std::vector inter_cell_size(3); - for (int ii=0; ii<3; ii++) inter_cell_size[ii] = 1./ncell[ii]; - int natom = coord.size()/3; - std::vector inner_coord; - std::vector cell_offset(natom*3); - region.phys2inter(inner_coord, coord); - for (int ii=0; ii(cell_offset.begin()+(3*ii), cell_offset.begin()+(3*ii+3)), ncell); - c2a[a2c[ii]].push_back(ii); +void build_inside_clist(std::vector &a2c, + std::vector> &c2a, + const std::vector &coord, + Region3D ®ion, + const std::vector &ncell) { + std::vector inter_cell_size(3); + for (int ii = 0; ii < 3; ii++) + inter_cell_size[ii] = 1. / ncell[ii]; + int natom = coord.size() / 3; + std::vector inner_coord; + std::vector cell_offset(natom * 3); + region.phys2inter(inner_coord, coord); + for (int ii = 0; ii < natom; ii++) { + for (int jj = 0; jj < 3; jj++) { + cell_offset[3 * ii + jj] = + std::floor(inner_coord[3 * ii + jj] / inter_cell_size[jj]); + if (cell_offset[3 * ii + jj] < 0) + cell_offset[3 * ii + jj] = 0; } + } + for (int ii = 0; ii < natom; ii++) { + a2c[ii] = + compute_serial_id(std::vector(cell_offset.begin() + (3 * ii), + cell_offset.begin() + (3 * ii + 3)), + ncell); + c2a[a2c[ii]].push_back(ii); + } } template -void build_neighbor_list(std::vector>& nlist, - std::vector>& nlist_loc, - std::vector>& nlist_atype, - int nloc, - const std::vector& coord, - const std::vector& atype, - VALUETYPE rcut, - const std::vector& ncell, - const std::vector& sec, - const std::vector& merged_mapping, - const std::vector& a2c, - const std::map, int>& region_id_map_serial, - const std::vector>& cell_list, - bool type_split = true, - bool min_check = false) -{ +void build_neighbor_list( + std::vector> &nlist, + std::vector> &nlist_loc, + std::vector> &nlist_atype, int nloc, + const std::vector &coord, const std::vector &atype, + VALUETYPE rcut, const std::vector &ncell, const std::vector &sec, + const std::vector &merged_mapping, const std::vector &a2c, + const std::map, int> ®ion_id_map_serial, + const std::vector> &cell_list, bool type_split = true, + bool min_check = false) { int nall = merged_mapping.size(); nlist.resize(nloc); nlist_loc.resize(nloc); @@ -266,40 +293,47 @@ void build_neighbor_list(std::vector>& nlist, std::vector sec_offset(ntype); sec_[0] = sec[0]; sec_offset[0] = 0; - for (int i=1; i region_id(3); int region_serial_id = a2c[i]; - region_id[0] = int(region_serial_id/(ncell[1]*ncell[2])); - region_id[1] = int((region_serial_id - region_id[0]*ncell[1]*ncell[2])/ncell[2]); - region_id[2] = region_serial_id - region_id[0]*ncell[1]*ncell[2] - region_id[1]*ncell[2]; + region_id[0] = int(region_serial_id / (ncell[1] * ncell[2])); + region_id[1] = + int((region_serial_id - region_id[0] * ncell[1] * ncell[2]) / ncell[2]); + region_id[2] = region_serial_id - region_id[0] * ncell[1] * ncell[2] - + region_id[1] * ncell[2]; // printf("%d %d %d\n", region_id[0], region_id[1], region_id[2]); std::vector neighbor_regions(27); int m = 0; - for (int ii=-1; ii<2; ii++) { - for (int jj=-1; jj<2; jj++) { - for (int kk=-1; kk<2; kk++) { + for (int ii = -1; ii < 2; ii++) { + for (int jj = -1; jj < 2; jj++) { + for (int kk = -1; kk < 2; kk++) { // if (! (ii==0 && jj==0 && kk==0)) { - std::vector neighbor_region_id = {region_id[0]+ii, region_id[1]+jj, region_id[2]+kk}; - int neighbor_region_serial_id = region_id_map_serial.find(neighbor_region_id)->second; - neighbor_regions[m] = neighbor_region_serial_id; - m++; - // std::vector neighbor_atoms = cell_list[neighbor_region_serial_id]; + std::vector neighbor_region_id = { + region_id[0] + ii, region_id[1] + jj, region_id[2] + kk}; + int neighbor_region_serial_id = + region_id_map_serial.find(neighbor_region_id)->second; + neighbor_regions[m] = neighbor_region_serial_id; + m++; + // std::vector neighbor_atoms = + // cell_list[neighbor_region_serial_id]; // } } } } - + std::vector neighbor_atoms; // std::vector neighbor_atoms_atype; - for (int ii=0; ii<27; ii++) { - neighbor_atoms.insert(neighbor_atoms.end(), cell_list[neighbor_regions[ii]].begin(), cell_list[neighbor_regions[ii]].end()); + for (int ii = 0; ii < 27; ii++) { + neighbor_atoms.insert(neighbor_atoms.end(), + cell_list[neighbor_regions[ii]].begin(), + cell_list[neighbor_regions[ii]].end()); } auto iter = std::find(neighbor_atoms.begin(), neighbor_atoms.end(), i); neighbor_atoms.erase(iter); @@ -308,14 +342,18 @@ void build_neighbor_list(std::vector>& nlist, std::vector neighbor_atype_in_rcut; std::vector neighbor_distances_in_rcut; - int n=0; - for (int j=0; j coord_i(3); std::vector coord_j(3); int idx_neighbor = neighbor_atoms[j]; - std::copy(coord.begin()+(3*i), coord.begin()+(3*i+3), coord_i.begin()); - std::copy(coord.begin()+(3*idx_neighbor), coord.begin()+(3*idx_neighbor+3), coord_j.begin()); - VALUETYPE tmp_distance = std::sqrt(std::pow(coord_j[0] - coord_i[0], 2) + std::pow(coord_j[1] - coord_i[1], 2) + std::pow(coord_j[2] - coord_i[2], 2)); + std::copy(coord.begin() + (3 * i), coord.begin() + (3 * i + 3), + coord_i.begin()); + std::copy(coord.begin() + (3 * idx_neighbor), + coord.begin() + (3 * idx_neighbor + 3), coord_j.begin()); + VALUETYPE tmp_distance = std::sqrt(std::pow(coord_j[0] - coord_i[0], 2) + + std::pow(coord_j[1] - coord_i[1], 2) + + std::pow(coord_j[2] - coord_i[2], 2)); if (tmp_distance < rcut) { neighbor_atoms_in_rcut.push_back(idx_neighbor); neighbor_distances_in_rcut.push_back(tmp_distance); @@ -337,14 +375,17 @@ void build_neighbor_list(std::vector>& nlist, // std::vector neighbor_atoms_each_type(ntype); std::vector neighbor_atoms_onetype; std::vector neighbor_distances_onetype; - for (int ii=0; ii>& nlist, } std::vector indices(neighbor_atoms_onetype.size()); std::iota(indices.begin(), indices.end(), 0); - std::sort(indices.begin(), indices.end(), [&neighbor_distances_onetype](size_t i1, size_t i2) { return neighbor_distances_onetype[i1] < neighbor_distances_onetype[i2]; }); + std::sort(indices.begin(), indices.end(), + [&neighbor_distances_onetype](size_t i1, size_t i2) { + return neighbor_distances_onetype[i1] < + neighbor_distances_onetype[i2]; + }); // std::cout << indices << std::endl; @@ -360,18 +405,21 @@ void build_neighbor_list(std::vector>& nlist, // std::vector sorted_distances(neighbor_atoms_onetype.size()); // printf("i = %d ii = %d indices.size: %ld\n", i, ii, indices.size()); - for (int jj=0; jj>& nlist, } // if(i==0) { std::cout << neighbor_atoms << std::endl; } // std::cout << neighbor_atoms_each_type << std::endl; - - // std::cout << std::count(neighbor_atoms_atype.begin(), neighbor_atoms_atype.end(), 0) << " " << std::count(neighbor_atoms_atype.begin(), neighbor_atoms_atype.end(), 1) << std::endl; - // std::cout << neighbor_atoms.size() << std::endl; + + // std::cout << std::count(neighbor_atoms_atype.begin(), + // neighbor_atoms_atype.end(), 0) << " " << + // std::count(neighbor_atoms_atype.begin(), neighbor_atoms_atype.end(), 1) + // << std::endl; std::cout << neighbor_atoms.size() << std::endl; } - + // printf("iterated over all local atoms\n"); } - template -void make_env_mat(std::vector>& nlist, - std::vector>& nlist_loc, - std::vector>& nlist_type, - std::vector& merged_coord_shift, - std::vector& merged_mapping, - std::vector& coord_wrapped, - const std::vector& coord, - const std::vector& atype, - const std::vector& box, - VALUETYPE rcut, - const std::vector& sec) -{ +void make_env_mat(std::vector> &nlist, + std::vector> &nlist_loc, + std::vector> &nlist_type, + std::vector &merged_coord_shift, + std::vector &merged_mapping, + std::vector &coord_wrapped, + const std::vector &coord, + const std::vector &atype, + const std::vector &box, VALUETYPE rcut, + const std::vector &sec) { Region3D region(box); coord_wrapped = coord; normalize_coord(coord_wrapped, region); @@ -418,44 +465,53 @@ void make_env_mat(std::vector>& nlist, std::vector face_distance(3); face_distance = region.get_face_distance(); std::vector ncell(3); - for (int ii=0; ii<3; ii++) { - ncell[ii] = std::floor(face_distance[ii]/rcut); - if(ncell[ii] == 0) ncell[ii] = 1; + for (int ii = 0; ii < 3; ii++) { + ncell[ii] = std::floor(face_distance[ii] / rcut); + if (ncell[ii] == 0) + ncell[ii] = 1; } - append_neighbors(merged_coord_shift, merged_atype, merged_mapping, a2c, region_id_map_serial, cell_list, ncell, coord_wrapped, atype, region, rcut); - -// for (std::map, int>::iterator iter=region_id_map_serial.begin(); iter!=region_id_map_serial.end(); iter++){ -// std::cout << iter->first << " " << iter->second << std::endl; -// } -// for (int ii=0; ii<64; ii++) { -// std::cout << cell_list[ii] << std::endl; -// } + append_neighbors(merged_coord_shift, merged_atype, merged_mapping, a2c, + region_id_map_serial, cell_list, ncell, coord_wrapped, atype, + region, rcut); + + // for (std::map, int>::iterator + // iter=region_id_map_serial.begin(); iter!=region_id_map_serial.end(); + // iter++){ + // std::cout << iter->first << " " << iter->second << std::endl; + // } + // for (int ii=0; ii<64; ii++) { + // std::cout << cell_list[ii] << std::endl; + // } int nall = merged_mapping.size(); - std::vector merged_coord(3*nall); - for (int ii=0; ii merged_coord(3 * nall); + for (int ii = 0; ii < nall; ii++) { // std::vector shifted_coord(3); int idx = merged_mapping[ii]; - for (int jj=0; jj<3; jj++) { - // shifted_coord[jj] = coord[3*idx+jj] - merged_coord_shift[3*ii+jj]; - merged_coord[3*ii+jj] = coord_wrapped[3*idx+jj] - merged_coord_shift[3*ii+jj]; + for (int jj = 0; jj < 3; jj++) { + // shifted_coord[jj] = coord[3*idx+jj] - merged_coord_shift[3*ii+jj]; + merged_coord[3 * ii + jj] = + coord_wrapped[3 * idx + jj] - merged_coord_shift[3 * ii + jj]; } } -// for (int ii=0; ii(const std::string &model); +template +void DeepPot::compute(ENERGYVTYPE &ener, std::vector &force, + std::vector &virial, + const std::vector &coord, + const std::vector &atype, + const std::vector &box) { + auto device = torch::kCUDA; + module.to(device); + std::vector coord_wrapped = coord; + int natoms = atype.size(); + // make_env_mat(nlist, nlist_loc, nlist_type, merged_coord_shift, + // merged_mapping, coord_wrapped, coord, atype, box, rcut, sec); + // auto device = torch::kCPU; + auto options = torch::TensorOptions().dtype(torch::kFloat64); + auto int_options = torch::TensorOptions().dtype(torch::kInt64); + std::vector inputs; + at::Tensor coord_wrapped_Tensor = + torch::from_blob(coord_wrapped.data(), {1, natoms, 3}, options) + .to(device); + // for (int ii=0; ii atype_64(atype.begin(), atype.end()); + at::Tensor atype_Tensor = + torch::from_blob(atype_64.data(), {1, natoms}, int_options).to(device); + inputs.push_back(atype_Tensor); + at::Tensor box_Tensor = + torch::from_blob(const_cast(box.data()), {1, 9}, options) + .to(device); + inputs.push_back(box_Tensor); + c10::Dict outputs = + module.forward(inputs).toGenericDict(); + + c10::IValue energy_ = outputs.at("energy"); + c10::IValue force_ = outputs.at("force"); + c10::IValue virial_ = outputs.at("virial"); + // std::cout << energy_ << std::endl; + // std::cout << force_ << std::endl; + ener = energy_.toTensor().item(); + + torch::Tensor flat_force_ = force_.toTensor().view({-1}); + torch::Tensor cpu_force_ = flat_force_.to(torch::kCPU); + force.assign(cpu_force_.data_ptr(), + cpu_force_.data_ptr() + cpu_force_.numel()); + + torch::Tensor flat_virial_ = virial_.toTensor().view({-1}); + torch::Tensor cpu_virial_ = flat_virial_.to(torch::kCPU); + virial.assign(cpu_virial_.data_ptr(), + cpu_virial_.data_ptr() + cpu_virial_.numel()); +} +template void DeepPot::compute(double &ener, + std::vector &force, + std::vector &virial, + const std::vector &coord, + const std::vector &atype, + const std::vector &box); + +DeepPotModelDevi::DeepPotModelDevi() {} + +DeepPotModelDevi::~DeepPotModelDevi() {} -template void DeepPot::init(const std::string& model); +template void +DeepPotModelDevi::init(const std::vector &models); template -void DeepPot::compute(ENERGYVTYPE& ener, - std::vector& force, - std::vector& virial, - const std::vector& coord, - const std::vector& atype, - const std::vector& box) -{ - auto device = torch::kCUDA; - module.to(device); - std::vector coord_wrapped = coord; - int natoms = atype.size(); - //make_env_mat(nlist, nlist_loc, nlist_type, merged_coord_shift, merged_mapping, coord_wrapped, coord, atype, box, rcut, sec); - // auto device = torch::kCPU; - auto options = torch::TensorOptions().dtype(torch::kFloat64); - auto int_options = torch::TensorOptions().dtype(torch::kInt64); - std::vector inputs; - at::Tensor coord_wrapped_Tensor = torch::from_blob(coord_wrapped.data(), {1, natoms, 3}, options).to(device); - // for (int ii=0; ii atype_64(atype.begin(), atype.end()); - at::Tensor atype_Tensor = torch::from_blob(atype_64.data(), {1, natoms}, int_options).to(device); - inputs.push_back(atype_Tensor); - at::Tensor box_Tensor = torch::from_blob(const_cast(box.data()), {1, 9}, options).to(device); - inputs.push_back(box_Tensor); - c10::Dict outputs = module.forward(inputs).toGenericDict(); +void DeepPotModelDevi::compute(std::vector &all_energy, + std::vector> &all_force, + std::vector> &all_virial, + const std::vector &coord, + const std::vector &atype, + const std::vector &box) { + all_energy.resize(numb_models); + all_force.resize(numb_models); + all_virial.resize(numb_models); + + auto device = torch::kCUDA; + for (int ii = 0; ii < numb_models; ii++) { + modules[ii].to(device); + } + std::vector coord_wrapped = coord; + + int natoms = atype.size(); + + // make_env_mat(nlist, nlist_loc, nlist_type, merged_coord_shift, + // merged_mapping, coord_wrapped, coord, atype, box, rcut, sec); + // auto device = torch::kCPU; + auto options = torch::TensorOptions().dtype(torch::kFloat64); + auto int_options = torch::TensorOptions().dtype(torch::kInt64); + std::vector inputs; + + at::Tensor coord_wrapped_Tensor = + torch::from_blob(coord_wrapped.data(), {1, natoms, 3}, options) + .to(device); + // for (int ii=0; ii atype_64(atype.begin(), atype.end()); + at::Tensor atype_Tensor = + torch::from_blob(atype_64.data(), {1, natoms}, int_options).to(device); + inputs.push_back(atype_Tensor); + + at::Tensor box_Tensor = + torch::from_blob(const_cast(box.data()), {1, 9}, options) + .to(device); + inputs.push_back(box_Tensor); + for (int ii = 0; ii < numb_models; ii++) { + c10::Dict outputs = + modules[ii].forward(inputs).toGenericDict(); c10::IValue energy_ = outputs.at("energy"); c10::IValue force_ = outputs.at("force"); c10::IValue virial_ = outputs.at("virial"); // std::cout << energy_ << std::endl; // std::cout << force_ << std::endl; - ener = energy_.toTensor().item(); + all_energy[ii] = energy_.toTensor().item(); torch::Tensor flat_force_ = force_.toTensor().view({-1}); torch::Tensor cpu_force_ = flat_force_.to(torch::kCPU); - force.assign(cpu_force_.data_ptr(), cpu_force_.data_ptr() + cpu_force_.numel()); + all_force[ii].assign(cpu_force_.data_ptr(), + cpu_force_.data_ptr() + cpu_force_.numel()); torch::Tensor flat_virial_ = virial_.toTensor().view({-1}); torch::Tensor cpu_virial_ = flat_virial_.to(torch::kCPU); - virial.assign(cpu_virial_.data_ptr(), cpu_virial_.data_ptr() + cpu_virial_.numel()); - -} -template void DeepPot::compute(double& ener, - std::vector& force, - std::vector& virial, - const std::vector& coord, - const std::vector& atype, - const std::vector& box); - -DeepPotModelDevi::DeepPotModelDevi() { } - -DeepPotModelDevi::~DeepPotModelDevi() { } - -template void DeepPotModelDevi::init(const std::vector& models); - -template -void DeepPotModelDevi::compute(std::vector& all_energy, - std::vector>& all_force, - std::vector>& all_virial, - const std::vector& coord, - const std::vector& atype, - const std::vector& box) -{ - all_energy.resize(numb_models); - all_force.resize(numb_models); - all_virial.resize(numb_models); - - auto device = torch::kCUDA; - for (int ii=0; ii coord_wrapped = coord; - - int natoms = atype.size(); - - //make_env_mat(nlist, nlist_loc, nlist_type, merged_coord_shift, merged_mapping, coord_wrapped, coord, atype, box, rcut, sec); - // auto device = torch::kCPU; - auto options = torch::TensorOptions().dtype(torch::kFloat64); - auto int_options = torch::TensorOptions().dtype(torch::kInt64); - std::vector inputs; - - at::Tensor coord_wrapped_Tensor = torch::from_blob(coord_wrapped.data(), {1, natoms, 3}, options).to(device); - // for (int ii=0; ii atype_64(atype.begin(), atype.end()); - at::Tensor atype_Tensor = torch::from_blob(atype_64.data(), {1, natoms}, int_options).to(device); - inputs.push_back(atype_Tensor); - - - at::Tensor box_Tensor = torch::from_blob(const_cast(box.data()), {1, 9}, options).to(device); - inputs.push_back(box_Tensor); - for (int ii=0; ii outputs = modules[ii].forward(inputs).toGenericDict(); - - c10::IValue energy_ = outputs.at("energy"); - c10::IValue force_ = outputs.at("force"); - c10::IValue virial_ = outputs.at("virial"); - // std::cout << energy_ << std::endl; - // std::cout << force_ << std::endl; - all_energy[ii] = energy_.toTensor().item(); - - torch::Tensor flat_force_ = force_.toTensor().view({-1}); - torch::Tensor cpu_force_ = flat_force_.to(torch::kCPU); - all_force[ii].assign(cpu_force_.data_ptr(), cpu_force_.data_ptr() + cpu_force_.numel()); - - torch::Tensor flat_virial_ = virial_.toTensor().view({-1}); - torch::Tensor cpu_virial_ = flat_virial_.to(torch::kCPU); - all_virial[ii].assign(cpu_virial_.data_ptr(), cpu_virial_.data_ptr() + cpu_virial_.numel()); - } - - + all_virial[ii].assign(cpu_virial_.data_ptr(), + cpu_virial_.data_ptr() + cpu_virial_.numel()); + } } -template void DeepPotModelDevi::compute(std::vector& all_energy, - std::vector>& all_force, - std::vector>& all_virial, - const std::vector& coord, - const std::vector& atype, - const std::vector& box); - +template void DeepPotModelDevi::compute( + std::vector &all_energy, + std::vector> &all_force, + std::vector> &all_virial, + const std::vector &coord, const std::vector &atype, + const std::vector &box); template -void DeepPotModelDevi::compute_avg(VALUETYPE& dener, - const std::vector& all_energy) { +void DeepPotModelDevi::compute_avg(VALUETYPE &dener, + const std::vector &all_energy) { assert(all_energy.size() == numb_models); - if (numb_models == 0) return; + if (numb_models == 0) + return; dener = 0; for (unsigned ii = 0; ii < numb_models; ++ii) { @@ -146,18 +160,21 @@ void DeepPotModelDevi::compute_avg(VALUETYPE& dener, dener /= (VALUETYPE)(numb_models); } -template void DeepPotModelDevi::compute_avg( - double& dener, const std::vector& all_energy); +template void +DeepPotModelDevi::compute_avg(double &dener, + const std::vector &all_energy); -template void DeepPotModelDevi::compute_avg( - float& dener, const std::vector& all_energy); +template void +DeepPotModelDevi::compute_avg(float &dener, + const std::vector &all_energy); template void DeepPotModelDevi::compute_avg( - std::vector& avg, - const std::vector>& xx) { + std::vector &avg, + const std::vector> &xx) { assert(xx.size() == numb_models); - if (numb_models == 0) return; + if (numb_models == 0) + return; avg.resize(xx[0].size()); fill(avg.begin(), avg.end(), VALUETYPE(0.)); @@ -174,19 +191,19 @@ void DeepPotModelDevi::compute_avg( } template void DeepPotModelDevi::compute_avg( - std::vector& avg, const std::vector>& xx); + std::vector &avg, const std::vector> &xx); -template void DeepPotModelDevi::compute_avg( - std::vector& avg, const std::vector>& xx); +template void +DeepPotModelDevi::compute_avg(std::vector &avg, + const std::vector> &xx); template void DeepPotModelDevi::compute_std( - std::vector& std, - const std::vector& avg, - const std::vector>& xx, - const int& stride) { + std::vector &std, const std::vector &avg, + const std::vector> &xx, const int &stride) { assert(xx.size() == numb_models); - if (numb_models == 0) return; + if (numb_models == 0) + return; unsigned ndof = avg.size(); unsigned nloc = ndof / stride; @@ -197,8 +214,8 @@ void DeepPotModelDevi::compute_std( for (unsigned ii = 0; ii < numb_models; ++ii) { for (unsigned jj = 0; jj < nloc; ++jj) { - const VALUETYPE* tmp_f = &(xx[ii][jj * stride]); - const VALUETYPE* tmp_avg = &(avg[jj * stride]); + const VALUETYPE *tmp_f = &(xx[ii][jj * stride]); + const VALUETYPE *tmp_avg = &(avg[jj * stride]); for (unsigned dd = 0; dd < stride; ++dd) { VALUETYPE vdiff = tmp_f[dd] - tmp_avg[dd]; std[jj] += vdiff * vdiff; @@ -212,46 +229,39 @@ void DeepPotModelDevi::compute_std( } template void DeepPotModelDevi::compute_std( - std::vector& std, - const std::vector& avg, - const std::vector>& xx, - const int& stride); + std::vector &std, const std::vector &avg, + const std::vector> &xx, const int &stride); template void DeepPotModelDevi::compute_std( - std::vector& std, - const std::vector& avg, - const std::vector>& xx, - const int& stride); + std::vector &std, const std::vector &avg, + const std::vector> &xx, const int &stride); template void DeepPotModelDevi::compute_std_f( - std::vector& std, - const std::vector& avg, - const std::vector>& xx) { + std::vector &std, const std::vector &avg, + const std::vector> &xx) { compute_std(std, avg, xx, 3); } template void DeepPotModelDevi::compute_std_f( - std::vector& std, - const std::vector& avg, - const std::vector>& xx); + std::vector &std, const std::vector &avg, + const std::vector> &xx); template void DeepPotModelDevi::compute_std_f( - std::vector& std, - const std::vector& avg, - const std::vector>& xx); - + std::vector &std, const std::vector &avg, + const std::vector> &xx); + template -void DeepPotModelDevi::compute_relative_std(std::vector& std, - const std::vector& avg, +void DeepPotModelDevi::compute_relative_std(std::vector &std, + const std::vector &avg, const VALUETYPE eps, - const int& stride) { + const int &stride) { unsigned ndof = avg.size(); unsigned nloc = std.size(); assert(nloc * stride == ndof); for (unsigned ii = 0; ii < nloc; ++ii) { - const VALUETYPE* tmp_avg = &(avg[ii * stride]); + const VALUETYPE *tmp_avg = &(avg[ii * stride]); VALUETYPE f_norm = 0.0; for (unsigned dd = 0; dd < stride; ++dd) { f_norm += tmp_avg[dd] * tmp_avg[dd]; @@ -262,28 +272,24 @@ void DeepPotModelDevi::compute_relative_std(std::vector& std, } template void DeepPotModelDevi::compute_relative_std( - std::vector& std, - const std::vector& avg, - const double eps, - const int& stride); + std::vector &std, const std::vector &avg, const double eps, + const int &stride); template void DeepPotModelDevi::compute_relative_std( - std::vector& std, - const std::vector& avg, - const float eps, - const int& stride); + std::vector &std, const std::vector &avg, const float eps, + const int &stride); template -void DeepPotModelDevi::compute_relative_std_f(std::vector& std, - const std::vector& avg, +void DeepPotModelDevi::compute_relative_std_f(std::vector &std, + const std::vector &avg, const VALUETYPE eps) { compute_relative_std(std, avg, eps, 3); } template void DeepPotModelDevi::compute_relative_std_f( - std::vector& std, const std::vector& avg, const double eps); + std::vector &std, const std::vector &avg, const double eps); template void DeepPotModelDevi::compute_relative_std_f( - std::vector& std, const std::vector& avg, const float eps); + std::vector &std, const std::vector &avg, const float eps); -} \ No newline at end of file +} // namespace deepmd diff --git a/source/api_cc/src/common.cc b/source/api_cc/src/common.cc index bfdc7ff8..dbf594de 100644 --- a/source/api_cc/src/common.cc +++ b/source/api_cc/src/common.cc @@ -1,57 +1,46 @@ +// SPDX-License-Identifier: LGPL-3.0-or-later #include "common.h" -template void make_env_mat(std::vector>& nlist, - std::vector>& nlist_loc, - std::vector>& nlist_type, - std::vector& merged_coord_shift, - std::vector& merged_mapping, - std::vector& coord_wrapped, - const std::vector& coord, - const std::vector& atype, - const std::vector& box, - double rcut, - const std::vector& sec); - -int compute_serial_id(const std::vector& cid, const std::vector& ncell) -{ - return cid[0]*ncell[1]*ncell[2] + cid[1]*ncell[2] + cid[2]; +template void make_env_mat(std::vector> &nlist, + std::vector> &nlist_loc, + std::vector> &nlist_type, + std::vector &merged_coord_shift, + std::vector &merged_mapping, + std::vector &coord_wrapped, + const std::vector &coord, + const std::vector &atype, + const std::vector &box, double rcut, + const std::vector &sec); + +int compute_serial_id(const std::vector &cid, + const std::vector &ncell) { + return cid[0] * ncell[1] * ncell[2] + cid[1] * ncell[2] + cid[2]; } - -template void normalize_coord(std::vector& coord, - Region3D& region); - - -template void append_neighbors(std::vector& merged_coord_shift, - std::vector& merged_atype, - std::vector& merged_mapping, - std::vector& a2c, - std::map, int>& region_id_map_serial, - std::vector>& cell_list, - const std::vector& ncell, - const std::vector& coord, - const std::vector& atype, - Region3D& region, - double rcut); - -template void build_inside_clist(std::vector& a2c, - std::vector>& c2a, - const std::vector& coord, - Region3D& region, - const std::vector& ncell); - -template void build_neighbor_list(std::vector>& nlist, - std::vector>& nlist_loc, - std::vector>& nlist_atype, - int nloc, - const std::vector& coord, - const std::vector& atype, - double rcut, - const std::vector& ncell, - const std::vector& sec, - const std::vector& merged_mapping, - const std::vector& a2c, - const std::map, int>& region_id_map_serial, - const std::vector>& cell_list, - bool type_split = true, - bool min_check = false); \ No newline at end of file +template void normalize_coord(std::vector &coord, + Region3D ®ion); + +template void append_neighbors( + std::vector &merged_coord_shift, std::vector &merged_atype, + std::vector &merged_mapping, std::vector &a2c, + std::map, int> ®ion_id_map_serial, + std::vector> &cell_list, const std::vector &ncell, + const std::vector &coord, const std::vector &atype, + Region3D ®ion, double rcut); + +template void build_inside_clist(std::vector &a2c, + std::vector> &c2a, + const std::vector &coord, + Region3D ®ion, + const std::vector &ncell); + +template void build_neighbor_list( + std::vector> &nlist, + std::vector> &nlist_loc, + std::vector> &nlist_atype, int nloc, + const std::vector &coord, const std::vector &atype, + double rcut, const std::vector &ncell, const std::vector &sec, + const std::vector &merged_mapping, const std::vector &a2c, + const std::map, int> ®ion_id_map_serial, + const std::vector> &cell_list, bool type_split = true, + bool min_check = false); diff --git a/source/api_cc/test/cppapi/CMakeLists.txt b/source/api_cc/test/cppapi/CMakeLists.txt index 709d49ad..faf8f149 100644 --- a/source/api_cc/test/cppapi/CMakeLists.txt +++ b/source/api_cc/test/cppapi/CMakeLists.txt @@ -3,11 +3,12 @@ project(test) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(SOURCE_PATH /root/Softwares/deepmd-pytorch/) -find_package (Eigen3 REQUIRED) +find_package(Eigen3 REQUIRED) find_package(Torch REQUIRED) add_executable(test test.cpp ${SOURCE_PATH}/source/api_cc/src/common.cc) add_library(deepmd SHARED ${SOURCE_PATH}/source/api_cc/src/DeepPot.cc) -#target_link_libraries(test ${TORCH_LIBRARIES}) -include_directories(${SOURCE_PATH}/source/api_cc/include /opt/mamba/envs/dppt/include/eigen3/) +# target_link_libraries(test ${TORCH_LIBRARIES}) +include_directories(${SOURCE_PATH}/source/api_cc/include + /opt/mamba/envs/dppt/include/eigen3/) target_link_libraries(deepmd ${TORCH_LIBRARIES} Eigen3::Eigen) target_link_libraries(test ${TORCH_LIBRARIES} deepmd) diff --git a/source/api_cc/test/cppapi/test.cpp b/source/api_cc/test/cppapi/test.cpp index 214c8043..b7fe64f3 100644 --- a/source/api_cc/test/cppapi/test.cpp +++ b/source/api_cc/test/cppapi/test.cpp @@ -1,31 +1,32 @@ -#include "common.h" +// SPDX-License-Identifier: LGPL-3.0-or-later #include "DeepPot.h" +#include "common.h" #include -#include #include +#include using namespace deepmd; template -std::vector read_numbers(const std::string& filename) { - std::ifstream file(filename); - if (!file.is_open()) { - throw std::runtime_error("Failed to open file: " + filename); - } +std::vector read_numbers(const std::string &filename) { + std::ifstream file(filename); + if (!file.is_open()) { + throw std::runtime_error("Failed to open file: " + filename); + } - std::vector numbers; - std::string line; - while (std::getline(file, line)) { - try { - VALUETYPE num = std::stod(line); - numbers.push_back(num); - } catch (const std::exception& e) { - std::cerr << "Failed to parse number: " << line - << ". Skipping..." << std::endl; - } + std::vector numbers; + std::string line; + while (std::getline(file, line)) { + try { + VALUETYPE num = std::stod(line); + numbers.push_back(num); + } catch (const std::exception &e) { + std::cerr << "Failed to parse number: " << line << ". Skipping..." + << std::endl; } + } - return numbers; + return numbers; } int main() { @@ -41,16 +42,16 @@ int main() { printf("energy: %.6f\n", energy); printf("force:\n"); - for (int ii=0; ii @@ -43,19 +44,18 @@ static bool is_key(const string &input) { return false; } - -static void ana_st(double &max, - double &min, - double &sum, - const vector &vec, - const int &nloc) { - if (nloc == 0) return; +static void ana_st(double &max, double &min, double &sum, + const vector &vec, const int &nloc) { + if (nloc == 0) + return; max = vec[0]; min = vec[0]; sum = vec[0]; for (unsigned ii = 1; ii < nloc; ++ii) { - if (vec[ii] > max) max = vec[ii]; - if (vec[ii] < min) min = vec[ii]; + if (vec[ii] > max) + max = vec[ii]; + if (vec[ii] < min) + min = vec[ii]; sum += vec[ii]; } } @@ -70,7 +70,6 @@ PairDeepMD::PairDeepMD(LAMMPS *lmp) "Pair deepmd requires metal unit, please set it by \"units metal\""); } numb_models = 0; - } /* ---------------------------------------------------------------------- */ @@ -104,22 +103,19 @@ void PairDeepMD::settings(int narg, char **arg) { numb_models = models.size(); if (numb_models == 1) { // try { - deep_pot.init(std::string(arg[0])); + deep_pot.init(std::string(arg[0])); // } catch (deepmd_compat::deepmd_exception &e) { - // error->one(FLERR, e.what()); + // error->one(FLERR, e.what()); // } - } - else { + } else { // try { - deep_pot.init(std::string(arg[0])); - deep_pot_model_devi.init(models); + deep_pot.init(std::string(arg[0])); + deep_pot_model_devi.init(models); // } catch (deepmd_compat::deepmd_exception &e) { - // error->one(FLERR, e.what()); + // error->one(FLERR, e.what()); // } - } - out_freq = 100; out_file = "model_devi.out"; out_each = 0; @@ -133,11 +129,13 @@ void PairDeepMD::settings(int narg, char **arg) { "Illegal pair_style command\nwrong number of parameters\n"); } if (string(arg[iarg]) == string("out_freq")) { - if (iarg + 1 >= narg) error->all(FLERR, "Illegal out_freq, not provided"); + if (iarg + 1 >= narg) + error->all(FLERR, "Illegal out_freq, not provided"); out_freq = atoi(arg[iarg + 1]); iarg += 2; } else if (string(arg[iarg]) == string("out_file")) { - if (iarg + 1 >= narg) error->all(FLERR, "Illegal out_file, not provided"); + if (iarg + 1 >= narg) + error->all(FLERR, "Illegal out_file, not provided"); out_file = string(arg[iarg + 1]); iarg += 2; } else if (string(arg[iarg]) == string("fparam")) { @@ -186,9 +184,8 @@ void PairDeepMD::settings(int narg, char **arg) { else if (string(arg[iarg]) == string("fparam_from_compute")) { for (int ii = 0; ii < 1; ++ii) { if (iarg + 1 + ii >= narg || is_key(arg[iarg + 1 + ii])) { - error->all(FLERR, - "invalid fparam_from_compute key: should be " - "fparam_from_compute compute_id(str)"); + error->all(FLERR, "invalid fparam_from_compute key: should be " + "fparam_from_compute compute_id(str)"); } } do_compute = true; @@ -222,7 +219,8 @@ void PairDeepMD::settings(int narg, char **arg) { } } - if (out_freq < 0) error->all(FLERR, "Illegal out_freq, should be >= 0"); + if (out_freq < 0) + error->all(FLERR, "Illegal out_freq, should be >= 0"); if (do_ttm && aparam.size() > 0) { error->all(FLERR, "aparam and ttm should NOT be set simultaneously"); } @@ -276,20 +274,20 @@ void PairDeepMD::compute(int eflag, int vflag) { vector dtype(nlocal); vector dbox(9, 0); - for (int ii=0; iih[0]; // xx - dbox[4] = domain->h[1]; // yy - dbox[8] = domain->h[2]; // zz - dbox[7] = domain->h[3]; // zy - dbox[6] = domain->h[4]; // zx - dbox[3] = domain->h[5]; // yx + dbox[0] = domain->h[0]; // xx + dbox[4] = domain->h[1]; // yy + dbox[8] = domain->h[2]; // zz + dbox[7] = domain->h[3]; // zy + dbox[6] = domain->h[4]; // zx + dbox[3] = domain->h[5]; // yx // int ago = numb_models > 1 ? 0 : neighbor->ago; int ago = neighbor->ago; @@ -310,12 +308,13 @@ void PairDeepMD::compute(int eflag, int vflag) { (numb_models > 1 && (out_freq > 0 && update->ntimestep % out_freq == 0)); if (single_model || multi_models_no_mod_devi) { - deep_pot.compute(dener, dforce, dvirial, dcoord, dtype, dbox); - } - else if (multi_models_mod_devi) { + deep_pot.compute(dener, dforce, dvirial, dcoord, dtype, + dbox); + } else if (multi_models_mod_devi) { vector> all_virial; vector all_energy; - deep_pot_model_devi.compute(all_energy, all_force, all_virial, dcoord, dtype, dbox); + deep_pot_model_devi.compute( + all_energy, all_force, all_virial, dcoord, dtype, dbox); dener = all_energy[0]; dforce = all_force[0]; dvirial = all_virial[0]; @@ -346,7 +345,7 @@ void PairDeepMD::compute(int eflag, int vflag) { } } MPI_Reduce(&send_v[0], &recv_v[0], 9 * numb_models, MPI_DOUBLE, MPI_SUM, - 0, world); + 0, world); std::vector> all_virial_1(numb_models); std::vector avg_virial, std_virial; for (int kk = 0; kk < numb_models; ++kk) { @@ -356,14 +355,14 @@ void PairDeepMD::compute(int eflag, int vflag) { } } double all_v_min = numeric_limits::max(), all_v_max = 0, - all_v_avg = 0; + all_v_avg = 0; if (rank == 0) { deep_pot_model_devi.compute_avg(avg_virial, all_virial_1); deep_pot_model_devi.compute_std(std_virial, avg_virial, all_virial_1, 1); if (out_rel_v == 1) { deep_pot_model_devi.compute_relative_std(std_virial, avg_virial, - eps_v, 1); + eps_v, 1); } for (int ii = 0; ii < 9; ++ii) { if (std_virial[ii] > all_v_max) { @@ -378,9 +377,9 @@ void PairDeepMD::compute(int eflag, int vflag) { } if (rank == 0) { fp << setw(12) << update->ntimestep << " " << setw(18) << all_v_max - << " " << setw(18) << all_v_min << " " << setw(18) << all_v_avg - << " " << setw(18) << all_f_max << " " << setw(18) << all_f_min - << " " << setw(18) << all_f_avg; + << " " << setw(18) << all_v_min << " " << setw(18) << all_v_avg + << " " << setw(18) << all_f_max << " " << setw(18) << all_f_min + << " " << setw(18) << all_f_avg; } if (out_each == 1) { vector std_f_all(all_nlocal); @@ -414,10 +413,9 @@ void PairDeepMD::compute(int eflag, int vflag) { } } - - for (int ii=0; ii 5) error->all(FLERR, "Incorrect args for pair coefficients"); - if (!allocated) allocate(); + // if (narg < 4 || narg > 5) error->all(FLERR, "Incorrect args for pair + // coefficients"); + if (!allocated) + allocate(); int ilo, ihi, jlo, jhi; utils::bounds(FLERR, arg[0], 1, atom->ntypes, ilo, ihi, error); @@ -458,10 +458,10 @@ void PairDeepMD::coeff(int narg, char **arg) { } } - if (count == 0) error->all(FLERR, "Incorrect args for pair coefficients"); + if (count == 0) + error->all(FLERR, "Incorrect args for pair coefficients"); } - /* ---------------------------------------------------------------------- */ void PairDeepMD::allocate() { diff --git a/source/lmp/pair_deepmd.h b/source/lmp/pair_deepmd.h index d6313c72..2621f7e0 100644 --- a/source/lmp/pair_deepmd.h +++ b/source/lmp/pair_deepmd.h @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: LGPL-3.0-or-later #ifdef PAIR_CLASS // clang-format off PairStyle(deepmd,PairDeepMD); @@ -7,16 +8,15 @@ PairStyle(deepmd,PairDeepMD); #ifndef LMP_PAIR_DEEPMD_H #define LMP_PAIR_DEEPMD_H -#include "pair.h" #include "DeepPot.h" +#include "pair.h" namespace deepmd_compat = deepmd; - namespace LAMMPS_NS { class PairDeepMD : public Pair { - public: +public: PairDeepMD(class LAMMPS *); ~PairDeepMD() override; void compute(int, int) override; @@ -55,18 +55,18 @@ class PairDeepMD : public Pair { // std::vector get_file_content( // const std::vector &models); - protected: +protected: virtual void allocate(); double **scale; - private: +private: deepmd_compat::DeepPot deep_pot; deepmd_compat::DeepPotModelDevi deep_pot_model_devi; unsigned numb_models; double cutoff; int numb_types; int numb_types_spin; - std::vector > all_force; + std::vector> all_force; std::ofstream fp; int out_freq; std::string out_file; @@ -84,7 +84,7 @@ class PairDeepMD : public Pair { int extend_inum; std::vector extend_ilist; std::vector extend_numneigh; - std::vector > extend_neigh; + std::vector> extend_neigh; std::vector extend_firstneigh; std::vector extend_dcoord; std::vector extend_dtype; @@ -112,7 +112,7 @@ class PairDeepMD : public Pair { std::vector type_idx_map; }; -} // namespace LAMMPS_NS +} // namespace LAMMPS_NS #endif #endif diff --git a/tests/AlMgCu/input_AlCuMg.json b/tests/AlMgCu/input_AlCuMg.json index 12ea903a..0d0ccc39 100644 --- a/tests/AlMgCu/input_AlCuMg.json +++ b/tests/AlMgCu/input_AlCuMg.json @@ -1,7509 +1,7511 @@ { - "model": { - "descriptor": { - "type": "se_e2_a", - "sel": [ - 40, 40, 40 - ], - "rcut_smth": 2.0, - "rcut": 9.0, - "neuron": [ - 25, - 50, - 100 - ], - "resnet_dt": false, - "axis_neuron": 12, - "seed": 1801819940, - "_activation_function": "tanh" + "model": { + "descriptor": { + "type": "se_e2_a", + "sel": [ + 40, + 40, + 40 + ], + "rcut_smth": 2.0, + "rcut": 9.0, + "neuron": [ + 25, + 50, + 100 + ], + "resnet_dt": false, + "axis_neuron": 12, + "seed": 1801819940, + "_activation_function": "tanh" + }, + "fitting_net": { + "neuron": [ + 240, + 240, + 240 + ], + "resnet_dt": true, + "_coord_norm": true, + "_type_fitting_net": false, + "seed": 2375417769, + "_activation_function": "tanh" + }, + "type_map": [ + "Al", + "Cu", + "Mg" + ] }, - "fitting_net": { - "neuron": [ - 240, - 240, - 240 - ], - "resnet_dt": true, - "_coord_norm": true, - "_type_fitting_net": false, - "seed": 2375417769, - "_activation_function": "tanh" + "learning_rate": { + "type": "exp", + "start_lr": 0.001, + "decay_steps": 80000, + "stop_lr": 5e-08, + "_decay_rate": 0.95 }, - "type_map": [ - "Al", - "Cu", - "Mg" - ] - }, - "learning_rate": { - "type": "exp", - "start_lr": 0.001, - "decay_steps": 80000, - "stop_lr": 5e-08, - "_decay_rate": 0.95 - }, - "loss": { - "start_pref_e": 0.02, - "limit_pref_e": 2, - "start_pref_f": 1000, - "limit_pref_f": 1, - "start_pref_v": 0.01, - "limit_pref_v": 1 - }, - "training": { - "training_data": { - "systems": [ - "data/AlMgCu/data/init.000", - "data/AlMgCu/data/init.001", - "data/AlMgCu/data/init.002", - "data/AlMgCu/data/init.003", - "data/AlMgCu/data/init.004", - "data/AlMgCu/data/init.005", - "data/AlMgCu/data/init.006", - "data/AlMgCu/data/init.007", - "data/AlMgCu/data/init.009", - "data/AlMgCu/data/init.010", - "data/AlMgCu/data/init.011", - "data/AlMgCu/data/init.012", - "data/AlMgCu/data/init.014", - "data/AlMgCu/data/init.015", - "data/AlMgCu/data/init.016", - "data/AlMgCu/data/init.017", - "data/AlMgCu/data/init.018", - "data/AlMgCu/data/init.019", - "data/AlMgCu/data/init.020", - "data/AlMgCu/data/init.021", - "data/AlMgCu/data/init.022", - "data/AlMgCu/data/init.023", - "data/AlMgCu/data/init.024", - "data/AlMgCu/data/init.025", - "data/AlMgCu/data/init.026", - "data/AlMgCu/data/init.027", - "data/AlMgCu/data/init.028", - "data/AlMgCu/data/init.030", - "data/AlMgCu/data/init.032", - "data/AlMgCu/data/init.033", - "data/AlMgCu/data/init.034", - "data/AlMgCu/data/init.035", - "data/AlMgCu/data/init.036", - "data/AlMgCu/data/init.037", - "data/AlMgCu/data/init.038", - "data/AlMgCu/data/init.039", - "data/AlMgCu/data/init.040", - "data/AlMgCu/data/init.041", - "data/AlMgCu/data/init.042", - "data/AlMgCu/data/init.043", - "data/AlMgCu/data/init.044", - "data/AlMgCu/data/init.045", - "data/AlMgCu/data/init.046", - "data/AlMgCu/data/init.047", - "data/AlMgCu/data/init.048", - "data/AlMgCu/data/init.049", - "data/AlMgCu/data/init.050", - "data/AlMgCu/data/init.051", - "data/AlMgCu/data/init.056", - "data/AlMgCu/data/init.057", - "data/AlMgCu/data/init.058", - "data/AlMgCu/data/init.059", - "data/AlMgCu/data/init.060", - "data/AlMgCu/data/init.061", - "data/AlMgCu/data/init.062", - "data/AlMgCu/data/init.063", - "data/AlMgCu/data/init.064", - "data/AlMgCu/data/init.065", - "data/AlMgCu/data/init.067", - "data/AlMgCu/data/init.068", - "data/AlMgCu/data/init.069", - "data/AlMgCu/data/init.070", - "data/AlMgCu/data/init.071", - "data/AlMgCu/data/init.072", - "data/AlMgCu/data/init.073", - "data/AlMgCu/data/init.074", - "data/AlMgCu/data/init.075", - "data/AlMgCu/data/init.076", - "data/AlMgCu/data/init.078", - "data/AlMgCu/data/init.079", - "data/AlMgCu/data/init.080", - "data/AlMgCu/data/init.082", - "data/AlMgCu/data/init.083", - "data/AlMgCu/data/init.085", - "data/AlMgCu/data/init.086", - "data/AlMgCu/data/init.087", - "data/AlMgCu/data/init.088", - "data/AlMgCu/data/init.089", - "data/AlMgCu/data/init.090", - "data/AlMgCu/data/init.091", - "data/AlMgCu/data/init.092", - "data/AlMgCu/data/init.093", - "data/AlMgCu/data/init.094", - "data/AlMgCu/data/init.095", - "data/AlMgCu/data/init.096", - "data/AlMgCu/data/init.097", - "data/AlMgCu/data/init.098", - "data/AlMgCu/data/init.099", - "data/AlMgCu/data/init.1000", - "data/AlMgCu/data/init.1001", - "data/AlMgCu/data/init.1002", - "data/AlMgCu/data/init.1003", - "data/AlMgCu/data/init.1005", - "data/AlMgCu/data/init.1006", - "data/AlMgCu/data/init.1007", - "data/AlMgCu/data/init.1008", - "data/AlMgCu/data/init.1009", - "data/AlMgCu/data/init.101", - "data/AlMgCu/data/init.1011", - "data/AlMgCu/data/init.1012", - "data/AlMgCu/data/init.1013", - "data/AlMgCu/data/init.1014", - "data/AlMgCu/data/init.1015", - "data/AlMgCu/data/init.1016", - "data/AlMgCu/data/init.1017", - "data/AlMgCu/data/init.1018", - "data/AlMgCu/data/init.1019", - "data/AlMgCu/data/init.102", - "data/AlMgCu/data/init.1020", - "data/AlMgCu/data/init.1021", - "data/AlMgCu/data/init.1023", - "data/AlMgCu/data/init.1025", - "data/AlMgCu/data/init.1026", - "data/AlMgCu/data/init.1027", - "data/AlMgCu/data/init.1028", - "data/AlMgCu/data/init.1029", - "data/AlMgCu/data/init.103", - "data/AlMgCu/data/init.1030", - "data/AlMgCu/data/init.1031", - "data/AlMgCu/data/init.1032", - "data/AlMgCu/data/init.1033", - "data/AlMgCu/data/init.1035", - "data/AlMgCu/data/init.1037", - "data/AlMgCu/data/init.1038", - "data/AlMgCu/data/init.1039", - "data/AlMgCu/data/init.104", - "data/AlMgCu/data/init.1040", - "data/AlMgCu/data/init.1041", - "data/AlMgCu/data/init.1042", - "data/AlMgCu/data/init.1043", - "data/AlMgCu/data/init.1044", - "data/AlMgCu/data/init.1045", - "data/AlMgCu/data/init.1046", - "data/AlMgCu/data/init.1048", - "data/AlMgCu/data/init.1049", - "data/AlMgCu/data/init.105", - "data/AlMgCu/data/init.1050", - "data/AlMgCu/data/init.1051", - "data/AlMgCu/data/init.1052", - "data/AlMgCu/data/init.1053", - "data/AlMgCu/data/init.1054", - "data/AlMgCu/data/init.1055", - "data/AlMgCu/data/init.1056", - "data/AlMgCu/data/init.1058", - "data/AlMgCu/data/init.1059", - "data/AlMgCu/data/init.106", - "data/AlMgCu/data/init.1060", - "data/AlMgCu/data/init.1061", - "data/AlMgCu/data/init.1062", - "data/AlMgCu/data/init.1063", - "data/AlMgCu/data/init.1064", - "data/AlMgCu/data/init.1066", - "data/AlMgCu/data/init.1067", - "data/AlMgCu/data/init.107", - "data/AlMgCu/data/init.1070", - "data/AlMgCu/data/init.1071", - "data/AlMgCu/data/init.1072", - "data/AlMgCu/data/init.1073", - "data/AlMgCu/data/init.1074", - "data/AlMgCu/data/init.1075", - "data/AlMgCu/data/init.1076", - "data/AlMgCu/data/init.1077", - "data/AlMgCu/data/init.1080", - "data/AlMgCu/data/init.1082", - "data/AlMgCu/data/init.1083", - "data/AlMgCu/data/init.1084", - "data/AlMgCu/data/init.1085", - "data/AlMgCu/data/init.1086", - "data/AlMgCu/data/init.1087", - "data/AlMgCu/data/init.1088", - "data/AlMgCu/data/init.1089", - "data/AlMgCu/data/init.109", - "data/AlMgCu/data/init.1090", - "data/AlMgCu/data/init.1093", - "data/AlMgCu/data/init.1094", - "data/AlMgCu/data/init.1095", - "data/AlMgCu/data/init.1096", - "data/AlMgCu/data/init.1097", - "data/AlMgCu/data/init.1098", - "data/AlMgCu/data/init.1099", - "data/AlMgCu/data/init.110", - "data/AlMgCu/data/init.1101", - "data/AlMgCu/data/init.1102", - "data/AlMgCu/data/init.1103", - "data/AlMgCu/data/init.1104", - "data/AlMgCu/data/init.1105", - "data/AlMgCu/data/init.1106", - "data/AlMgCu/data/init.1107", - "data/AlMgCu/data/init.1108", - "data/AlMgCu/data/init.1109", - "data/AlMgCu/data/init.111", - "data/AlMgCu/data/init.1110", - "data/AlMgCu/data/init.1111", - "data/AlMgCu/data/init.1112", - "data/AlMgCu/data/init.1113", - "data/AlMgCu/data/init.1114", - "data/AlMgCu/data/init.1115", - "data/AlMgCu/data/init.1116", - "data/AlMgCu/data/init.1117", - "data/AlMgCu/data/init.1118", - "data/AlMgCu/data/init.1119", - "data/AlMgCu/data/init.112", - "data/AlMgCu/data/init.1120", - "data/AlMgCu/data/init.1121", - "data/AlMgCu/data/init.1122", - "data/AlMgCu/data/init.1123", - "data/AlMgCu/data/init.1124", - "data/AlMgCu/data/init.1125", - "data/AlMgCu/data/init.1126", - "data/AlMgCu/data/init.1127", - "data/AlMgCu/data/init.1128", - "data/AlMgCu/data/init.1129", - "data/AlMgCu/data/init.113", - "data/AlMgCu/data/init.1131", - "data/AlMgCu/data/init.1132", - "data/AlMgCu/data/init.1133", - "data/AlMgCu/data/init.1134", - "data/AlMgCu/data/init.1135", - "data/AlMgCu/data/init.1136", - "data/AlMgCu/data/init.1137", - "data/AlMgCu/data/init.1138", - "data/AlMgCu/data/init.114", - "data/AlMgCu/data/init.1140", - "data/AlMgCu/data/init.1143", - "data/AlMgCu/data/init.1144", - "data/AlMgCu/data/init.1145", - "data/AlMgCu/data/init.1146", - "data/AlMgCu/data/init.1147", - "data/AlMgCu/data/init.1148", - "data/AlMgCu/data/init.1149", - "data/AlMgCu/data/init.1150", - "data/AlMgCu/data/init.1151", - "data/AlMgCu/data/init.1152", - "data/AlMgCu/data/init.1153", - "data/AlMgCu/data/init.1154", - "data/AlMgCu/data/init.1155", - "data/AlMgCu/data/init.1157", - "data/AlMgCu/data/init.1158", - "data/AlMgCu/data/init.1159", - "data/AlMgCu/data/init.116", - "data/AlMgCu/data/init.1160", - "data/AlMgCu/data/init.1162", - "data/AlMgCu/data/init.1163", - "data/AlMgCu/data/init.1165", - "data/AlMgCu/data/init.1166", - "data/AlMgCu/data/init.1167", - "data/AlMgCu/data/init.1168", - "data/AlMgCu/data/init.1169", - "data/AlMgCu/data/init.1170", - "data/AlMgCu/data/init.1171", - "data/AlMgCu/data/init.1172", - "data/AlMgCu/data/init.1173", - "data/AlMgCu/data/init.1174", - "data/AlMgCu/data/init.1175", - "data/AlMgCu/data/init.1176", - "data/AlMgCu/data/init.1177", - "data/AlMgCu/data/init.1178", - "data/AlMgCu/data/init.1179", - "data/AlMgCu/data/init.118", - "data/AlMgCu/data/init.1181", - "data/AlMgCu/data/init.1182", - "data/AlMgCu/data/init.1183", - "data/AlMgCu/data/init.1184", - "data/AlMgCu/data/init.1185", - "data/AlMgCu/data/init.1186", - "data/AlMgCu/data/init.1187", - "data/AlMgCu/data/init.1188", - "data/AlMgCu/data/init.1189", - "data/AlMgCu/data/init.119", - "data/AlMgCu/data/init.1190", - "data/AlMgCu/data/init.1191", - "data/AlMgCu/data/init.1192", - "data/AlMgCu/data/init.1193", - "data/AlMgCu/data/init.1194", - "data/AlMgCu/data/init.1195", - "data/AlMgCu/data/init.1196", - "data/AlMgCu/data/init.1197", - "data/AlMgCu/data/init.1198", - "data/AlMgCu/data/init.120", - "data/AlMgCu/data/init.1200", - "data/AlMgCu/data/init.1201", - "data/AlMgCu/data/init.1202", - "data/AlMgCu/data/init.1203", - "data/AlMgCu/data/init.1204", - "data/AlMgCu/data/init.1205", - "data/AlMgCu/data/init.1206", - "data/AlMgCu/data/init.1207", - "data/AlMgCu/data/init.1208", - "data/AlMgCu/data/init.1209", - "data/AlMgCu/data/init.121", - "data/AlMgCu/data/init.1210", - "data/AlMgCu/data/init.1211", - "data/AlMgCu/data/init.1212", - "data/AlMgCu/data/init.1213", - "data/AlMgCu/data/init.1214", - "data/AlMgCu/data/init.1216", - "data/AlMgCu/data/init.1217", - "data/AlMgCu/data/init.1218", - "data/AlMgCu/data/init.1219", - "data/AlMgCu/data/init.122", - "data/AlMgCu/data/init.1220", - "data/AlMgCu/data/init.1221", - "data/AlMgCu/data/init.1222", - "data/AlMgCu/data/init.1223", - "data/AlMgCu/data/init.1224", - "data/AlMgCu/data/init.1225", - "data/AlMgCu/data/init.1226", - "data/AlMgCu/data/init.1227", - "data/AlMgCu/data/init.1228", - "data/AlMgCu/data/init.1229", - "data/AlMgCu/data/init.123", - "data/AlMgCu/data/init.1230", - "data/AlMgCu/data/init.1231", - "data/AlMgCu/data/init.1232", - "data/AlMgCu/data/init.1233", - "data/AlMgCu/data/init.1234", - "data/AlMgCu/data/init.1235", - "data/AlMgCu/data/init.1236", - "data/AlMgCu/data/init.1237", - "data/AlMgCu/data/init.1239", - "data/AlMgCu/data/init.124", - "data/AlMgCu/data/init.1240", - "data/AlMgCu/data/init.1241", - "data/AlMgCu/data/init.1242", - "data/AlMgCu/data/init.1243", - "data/AlMgCu/data/init.1244", - "data/AlMgCu/data/init.1245", - "data/AlMgCu/data/init.1246", - "data/AlMgCu/data/init.1247", - "data/AlMgCu/data/init.1248", - "data/AlMgCu/data/init.1249", - "data/AlMgCu/data/init.125", - "data/AlMgCu/data/init.1250", - "data/AlMgCu/data/init.1251", - "data/AlMgCu/data/init.1252", - "data/AlMgCu/data/init.1253", - "data/AlMgCu/data/init.1254", - "data/AlMgCu/data/init.1255", - "data/AlMgCu/data/init.1256", - "data/AlMgCu/data/init.1257", - "data/AlMgCu/data/init.1258", - "data/AlMgCu/data/init.1259", - "data/AlMgCu/data/init.126", - "data/AlMgCu/data/init.1260", - "data/AlMgCu/data/init.1261", - "data/AlMgCu/data/init.1262", - "data/AlMgCu/data/init.1263", - "data/AlMgCu/data/init.1264", - "data/AlMgCu/data/init.1265", - "data/AlMgCu/data/init.1266", - "data/AlMgCu/data/init.1268", - "data/AlMgCu/data/init.1269", - "data/AlMgCu/data/init.127", - "data/AlMgCu/data/init.1270", - "data/AlMgCu/data/init.1271", - "data/AlMgCu/data/init.1272", - "data/AlMgCu/data/init.1273", - "data/AlMgCu/data/init.1274", - "data/AlMgCu/data/init.1275", - "data/AlMgCu/data/init.1276", - "data/AlMgCu/data/init.1277", - "data/AlMgCu/data/init.1278", - "data/AlMgCu/data/init.128", - "data/AlMgCu/data/init.1280", - "data/AlMgCu/data/init.1281", - "data/AlMgCu/data/init.1282", - "data/AlMgCu/data/init.1283", - "data/AlMgCu/data/init.1284", - "data/AlMgCu/data/init.1285", - "data/AlMgCu/data/init.1286", - "data/AlMgCu/data/init.1287", - "data/AlMgCu/data/init.1288", - "data/AlMgCu/data/init.129", - "data/AlMgCu/data/init.131", - "data/AlMgCu/data/init.132", - "data/AlMgCu/data/init.134", - "data/AlMgCu/data/init.135", - "data/AlMgCu/data/init.136", - "data/AlMgCu/data/init.137", - "data/AlMgCu/data/init.138", - "data/AlMgCu/data/init.139", - "data/AlMgCu/data/init.140", - "data/AlMgCu/data/init.141", - "data/AlMgCu/data/init.142", - "data/AlMgCu/data/init.143", - "data/AlMgCu/data/init.144", - "data/AlMgCu/data/init.146", - "data/AlMgCu/data/init.147", - "data/AlMgCu/data/init.148", - "data/AlMgCu/data/init.149", - "data/AlMgCu/data/init.150", - "data/AlMgCu/data/init.152", - "data/AlMgCu/data/init.153", - "data/AlMgCu/data/init.154", - "data/AlMgCu/data/init.155", - "data/AlMgCu/data/init.156", - "data/AlMgCu/data/init.157", - "data/AlMgCu/data/init.158", - "data/AlMgCu/data/init.159", - "data/AlMgCu/data/init.160", - "data/AlMgCu/data/init.161", - "data/AlMgCu/data/init.162", - "data/AlMgCu/data/init.164", - "data/AlMgCu/data/init.165", - "data/AlMgCu/data/init.166", - "data/AlMgCu/data/init.167", - "data/AlMgCu/data/init.168", - "data/AlMgCu/data/init.169", - "data/AlMgCu/data/init.170", - "data/AlMgCu/data/init.171", - "data/AlMgCu/data/init.172", - "data/AlMgCu/data/init.173", - "data/AlMgCu/data/init.174", - "data/AlMgCu/data/init.175", - "data/AlMgCu/data/init.176", - "data/AlMgCu/data/init.177", - "data/AlMgCu/data/init.178", - "data/AlMgCu/data/init.179", - "data/AlMgCu/data/init.180", - "data/AlMgCu/data/init.181", - "data/AlMgCu/data/init.182", - "data/AlMgCu/data/init.183", - "data/AlMgCu/data/init.184", - "data/AlMgCu/data/init.185", - "data/AlMgCu/data/init.186", - "data/AlMgCu/data/init.187", - "data/AlMgCu/data/init.188", - "data/AlMgCu/data/init.189", - "data/AlMgCu/data/init.190", - "data/AlMgCu/data/init.191", - "data/AlMgCu/data/init.192", - "data/AlMgCu/data/init.193", - "data/AlMgCu/data/init.194", - "data/AlMgCu/data/init.195", - "data/AlMgCu/data/init.196", - "data/AlMgCu/data/init.197", - "data/AlMgCu/data/init.198", - "data/AlMgCu/data/init.199", - "data/AlMgCu/data/init.200", - "data/AlMgCu/data/init.201", - "data/AlMgCu/data/init.202", - "data/AlMgCu/data/init.203", - "data/AlMgCu/data/init.204", - "data/AlMgCu/data/init.205", - "data/AlMgCu/data/init.206", - "data/AlMgCu/data/init.207", - "data/AlMgCu/data/init.208", - "data/AlMgCu/data/init.210", - "data/AlMgCu/data/init.211", - "data/AlMgCu/data/init.212", - "data/AlMgCu/data/init.213", - "data/AlMgCu/data/init.214", - "data/AlMgCu/data/init.217", - "data/AlMgCu/data/init.218", - "data/AlMgCu/data/init.219", - "data/AlMgCu/data/init.220", - "data/AlMgCu/data/init.221", - "data/AlMgCu/data/init.222", - "data/AlMgCu/data/init.223", - "data/AlMgCu/data/init.224", - "data/AlMgCu/data/init.226", - "data/AlMgCu/data/init.227", - "data/AlMgCu/data/init.228", - "data/AlMgCu/data/init.229", - "data/AlMgCu/data/init.230", - "data/AlMgCu/data/init.231", - "data/AlMgCu/data/init.232", - "data/AlMgCu/data/init.233", - "data/AlMgCu/data/init.234", - "data/AlMgCu/data/init.235", - "data/AlMgCu/data/init.236", - "data/AlMgCu/data/init.237", - "data/AlMgCu/data/init.238", - "data/AlMgCu/data/init.239", - "data/AlMgCu/data/init.240", - "data/AlMgCu/data/init.241", - "data/AlMgCu/data/init.242", - "data/AlMgCu/data/init.243", - "data/AlMgCu/data/init.244", - "data/AlMgCu/data/init.245", - "data/AlMgCu/data/init.246", - "data/AlMgCu/data/init.247", - "data/AlMgCu/data/init.248", - "data/AlMgCu/data/init.250", - "data/AlMgCu/data/init.251", - "data/AlMgCu/data/init.252", - "data/AlMgCu/data/init.253", - "data/AlMgCu/data/init.254", - "data/AlMgCu/data/init.255", - "data/AlMgCu/data/init.256", - "data/AlMgCu/data/init.257", - "data/AlMgCu/data/init.258", - "data/AlMgCu/data/init.259", - "data/AlMgCu/data/init.260", - "data/AlMgCu/data/init.262", - "data/AlMgCu/data/init.263", - "data/AlMgCu/data/init.264", - "data/AlMgCu/data/init.265", - "data/AlMgCu/data/init.266", - "data/AlMgCu/data/init.267", - "data/AlMgCu/data/init.269", - "data/AlMgCu/data/init.270", - "data/AlMgCu/data/init.271", - "data/AlMgCu/data/init.273", - "data/AlMgCu/data/init.274", - "data/AlMgCu/data/init.275", - "data/AlMgCu/data/init.276", - "data/AlMgCu/data/init.277", - "data/AlMgCu/data/init.278", - "data/AlMgCu/data/init.279", - "data/AlMgCu/data/init.280", - "data/AlMgCu/data/init.281", - "data/AlMgCu/data/init.282", - "data/AlMgCu/data/init.283", - "data/AlMgCu/data/init.284", - "data/AlMgCu/data/init.285", - "data/AlMgCu/data/init.287", - "data/AlMgCu/data/init.288", - "data/AlMgCu/data/init.290", - "data/AlMgCu/data/init.291", - "data/AlMgCu/data/init.292", - "data/AlMgCu/data/init.293", - "data/AlMgCu/data/init.294", - "data/AlMgCu/data/init.295", - "data/AlMgCu/data/init.296", - "data/AlMgCu/data/init.297", - "data/AlMgCu/data/init.298", - "data/AlMgCu/data/init.299", - "data/AlMgCu/data/init.302", - "data/AlMgCu/data/init.303", - "data/AlMgCu/data/init.304", - "data/AlMgCu/data/init.305", - "data/AlMgCu/data/init.306", - "data/AlMgCu/data/init.307", - "data/AlMgCu/data/init.308", - "data/AlMgCu/data/init.309", - "data/AlMgCu/data/init.310", - "data/AlMgCu/data/init.311", - "data/AlMgCu/data/init.312", - "data/AlMgCu/data/init.313", - "data/AlMgCu/data/init.314", - "data/AlMgCu/data/init.315", - "data/AlMgCu/data/init.316", - "data/AlMgCu/data/init.317", - "data/AlMgCu/data/init.318", - "data/AlMgCu/data/init.319", - "data/AlMgCu/data/init.320", - "data/AlMgCu/data/init.321", - "data/AlMgCu/data/init.324", - "data/AlMgCu/data/init.325", - "data/AlMgCu/data/init.326", - "data/AlMgCu/data/init.327", - "data/AlMgCu/data/init.328", - "data/AlMgCu/data/init.329", - "data/AlMgCu/data/init.330", - "data/AlMgCu/data/init.331", - "data/AlMgCu/data/init.332", - "data/AlMgCu/data/init.333", - "data/AlMgCu/data/init.334", - "data/AlMgCu/data/init.336", - "data/AlMgCu/data/init.337", - "data/AlMgCu/data/init.338", - "data/AlMgCu/data/init.339", - "data/AlMgCu/data/init.340", - "data/AlMgCu/data/init.341", - "data/AlMgCu/data/init.342", - "data/AlMgCu/data/init.344", - "data/AlMgCu/data/init.345", - "data/AlMgCu/data/init.346", - "data/AlMgCu/data/init.347", - "data/AlMgCu/data/init.348", - "data/AlMgCu/data/init.349", - "data/AlMgCu/data/init.350", - "data/AlMgCu/data/init.351", - "data/AlMgCu/data/init.352", - "data/AlMgCu/data/init.353", - "data/AlMgCu/data/init.355", - "data/AlMgCu/data/init.356", - "data/AlMgCu/data/init.357", - "data/AlMgCu/data/init.358", - "data/AlMgCu/data/init.359", - "data/AlMgCu/data/init.361", - "data/AlMgCu/data/init.362", - "data/AlMgCu/data/init.363", - "data/AlMgCu/data/init.364", - "data/AlMgCu/data/init.365", - "data/AlMgCu/data/init.366", - "data/AlMgCu/data/init.367", - "data/AlMgCu/data/init.368", - "data/AlMgCu/data/init.369", - "data/AlMgCu/data/init.370", - "data/AlMgCu/data/init.371", - "data/AlMgCu/data/init.372", - "data/AlMgCu/data/init.373", - "data/AlMgCu/data/init.374", - "data/AlMgCu/data/init.375", - "data/AlMgCu/data/init.376", - "data/AlMgCu/data/init.377", - "data/AlMgCu/data/init.378", - "data/AlMgCu/data/init.379", - "data/AlMgCu/data/init.380", - "data/AlMgCu/data/init.381", - "data/AlMgCu/data/init.382", - "data/AlMgCu/data/init.383", - "data/AlMgCu/data/init.384", - "data/AlMgCu/data/init.385", - "data/AlMgCu/data/init.386", - "data/AlMgCu/data/init.387", - "data/AlMgCu/data/init.388", - "data/AlMgCu/data/init.389", - "data/AlMgCu/data/init.390", - "data/AlMgCu/data/init.391", - "data/AlMgCu/data/init.392", - "data/AlMgCu/data/init.393", - "data/AlMgCu/data/init.394", - "data/AlMgCu/data/init.395", - "data/AlMgCu/data/init.396", - "data/AlMgCu/data/init.397", - "data/AlMgCu/data/init.398", - "data/AlMgCu/data/init.399", - "data/AlMgCu/data/init.400", - "data/AlMgCu/data/init.401", - "data/AlMgCu/data/init.402", - "data/AlMgCu/data/init.403", - "data/AlMgCu/data/init.404", - "data/AlMgCu/data/init.406", - "data/AlMgCu/data/init.407", - "data/AlMgCu/data/init.408", - "data/AlMgCu/data/init.409", - "data/AlMgCu/data/init.410", - "data/AlMgCu/data/init.411", - "data/AlMgCu/data/init.412", - "data/AlMgCu/data/init.413", - "data/AlMgCu/data/init.414", - "data/AlMgCu/data/init.415", - "data/AlMgCu/data/init.416", - "data/AlMgCu/data/init.417", - "data/AlMgCu/data/init.418", - "data/AlMgCu/data/init.419", - "data/AlMgCu/data/init.420", - "data/AlMgCu/data/init.421", - "data/AlMgCu/data/init.422", - "data/AlMgCu/data/init.423", - "data/AlMgCu/data/init.426", - "data/AlMgCu/data/init.428", - "data/AlMgCu/data/init.429", - "data/AlMgCu/data/init.430", - "data/AlMgCu/data/init.431", - "data/AlMgCu/data/init.432", - "data/AlMgCu/data/init.433", - "data/AlMgCu/data/init.434", - "data/AlMgCu/data/init.435", - "data/AlMgCu/data/init.436", - "data/AlMgCu/data/init.438", - "data/AlMgCu/data/init.439", - "data/AlMgCu/data/init.440", - "data/AlMgCu/data/init.441", - "data/AlMgCu/data/init.442", - "data/AlMgCu/data/init.443", - "data/AlMgCu/data/init.444", - "data/AlMgCu/data/init.445", - "data/AlMgCu/data/init.446", - "data/AlMgCu/data/init.448", - "data/AlMgCu/data/init.449", - "data/AlMgCu/data/init.451", - "data/AlMgCu/data/init.453", - "data/AlMgCu/data/init.454", - "data/AlMgCu/data/init.456", - "data/AlMgCu/data/init.457", - "data/AlMgCu/data/init.458", - "data/AlMgCu/data/init.459", - "data/AlMgCu/data/init.460", - "data/AlMgCu/data/init.461", - "data/AlMgCu/data/init.462", - "data/AlMgCu/data/init.463", - "data/AlMgCu/data/init.464", - "data/AlMgCu/data/init.466", - "data/AlMgCu/data/init.467", - "data/AlMgCu/data/init.468", - "data/AlMgCu/data/init.469", - "data/AlMgCu/data/init.470", - "data/AlMgCu/data/init.471", - "data/AlMgCu/data/init.472", - "data/AlMgCu/data/init.473", - "data/AlMgCu/data/init.474", - "data/AlMgCu/data/init.475", - "data/AlMgCu/data/init.476", - "data/AlMgCu/data/init.478", - "data/AlMgCu/data/init.479", - "data/AlMgCu/data/init.480", - "data/AlMgCu/data/init.482", - "data/AlMgCu/data/init.483", - "data/AlMgCu/data/init.484", - "data/AlMgCu/data/init.485", - "data/AlMgCu/data/init.486", - "data/AlMgCu/data/init.487", - "data/AlMgCu/data/init.488", - "data/AlMgCu/data/init.489", - "data/AlMgCu/data/init.490", - "data/AlMgCu/data/init.491", - "data/AlMgCu/data/init.492", - "data/AlMgCu/data/init.493", - "data/AlMgCu/data/init.494", - "data/AlMgCu/data/init.495", - "data/AlMgCu/data/init.496", - "data/AlMgCu/data/init.497", - "data/AlMgCu/data/init.499", - "data/AlMgCu/data/init.502", - "data/AlMgCu/data/init.503", - "data/AlMgCu/data/init.504", - "data/AlMgCu/data/init.505", - "data/AlMgCu/data/init.506", - "data/AlMgCu/data/init.507", - "data/AlMgCu/data/init.508", - "data/AlMgCu/data/init.509", - "data/AlMgCu/data/init.510", - "data/AlMgCu/data/init.511", - "data/AlMgCu/data/init.512", - "data/AlMgCu/data/init.513", - "data/AlMgCu/data/init.514", - "data/AlMgCu/data/init.515", - "data/AlMgCu/data/init.516", - "data/AlMgCu/data/init.517", - "data/AlMgCu/data/init.518", - "data/AlMgCu/data/init.519", - "data/AlMgCu/data/init.520", - "data/AlMgCu/data/init.521", - "data/AlMgCu/data/init.522", - "data/AlMgCu/data/init.523", - "data/AlMgCu/data/init.524", - "data/AlMgCu/data/init.527", - "data/AlMgCu/data/init.528", - "data/AlMgCu/data/init.529", - "data/AlMgCu/data/init.530", - "data/AlMgCu/data/init.532", - "data/AlMgCu/data/init.533", - "data/AlMgCu/data/init.534", - "data/AlMgCu/data/init.535", - "data/AlMgCu/data/init.536", - "data/AlMgCu/data/init.537", - "data/AlMgCu/data/init.538", - "data/AlMgCu/data/init.539", - "data/AlMgCu/data/init.540", - "data/AlMgCu/data/init.541", - "data/AlMgCu/data/init.542", - "data/AlMgCu/data/init.543", - "data/AlMgCu/data/init.544", - "data/AlMgCu/data/init.546", - "data/AlMgCu/data/init.547", - "data/AlMgCu/data/init.548", - "data/AlMgCu/data/init.549", - "data/AlMgCu/data/init.551", - "data/AlMgCu/data/init.552", - "data/AlMgCu/data/init.553", - "data/AlMgCu/data/init.554", - "data/AlMgCu/data/init.555", - "data/AlMgCu/data/init.556", - "data/AlMgCu/data/init.557", - "data/AlMgCu/data/init.558", - "data/AlMgCu/data/init.559", - "data/AlMgCu/data/init.560", - "data/AlMgCu/data/init.561", - "data/AlMgCu/data/init.563", - "data/AlMgCu/data/init.565", - "data/AlMgCu/data/init.566", - "data/AlMgCu/data/init.567", - "data/AlMgCu/data/init.569", - "data/AlMgCu/data/init.570", - "data/AlMgCu/data/init.571", - "data/AlMgCu/data/init.572", - "data/AlMgCu/data/init.573", - "data/AlMgCu/data/init.574", - "data/AlMgCu/data/init.575", - "data/AlMgCu/data/init.576", - "data/AlMgCu/data/init.577", - "data/AlMgCu/data/init.578", - "data/AlMgCu/data/init.579", - "data/AlMgCu/data/init.580", - "data/AlMgCu/data/init.581", - "data/AlMgCu/data/init.582", - "data/AlMgCu/data/init.583", - "data/AlMgCu/data/init.584", - "data/AlMgCu/data/init.585", - "data/AlMgCu/data/init.587", - "data/AlMgCu/data/init.588", - "data/AlMgCu/data/init.589", - "data/AlMgCu/data/init.590", - "data/AlMgCu/data/init.591", - "data/AlMgCu/data/init.592", - "data/AlMgCu/data/init.593", - "data/AlMgCu/data/init.594", - "data/AlMgCu/data/init.595", - "data/AlMgCu/data/init.596", - "data/AlMgCu/data/init.597", - "data/AlMgCu/data/init.598", - "data/AlMgCu/data/init.599", - "data/AlMgCu/data/init.600", - "data/AlMgCu/data/init.601", - "data/AlMgCu/data/init.602", - "data/AlMgCu/data/init.603", - "data/AlMgCu/data/init.604", - "data/AlMgCu/data/init.605", - "data/AlMgCu/data/init.606", - "data/AlMgCu/data/init.607", - "data/AlMgCu/data/init.608", - "data/AlMgCu/data/init.609", - "data/AlMgCu/data/init.610", - "data/AlMgCu/data/init.611", - "data/AlMgCu/data/init.613", - "data/AlMgCu/data/init.614", - "data/AlMgCu/data/init.615", - "data/AlMgCu/data/init.616", - "data/AlMgCu/data/init.617", - "data/AlMgCu/data/init.618", - "data/AlMgCu/data/init.619", - "data/AlMgCu/data/init.620", - "data/AlMgCu/data/init.621", - "data/AlMgCu/data/init.622", - "data/AlMgCu/data/init.624", - "data/AlMgCu/data/init.625", - "data/AlMgCu/data/init.626", - "data/AlMgCu/data/init.627", - "data/AlMgCu/data/init.628", - "data/AlMgCu/data/init.629", - "data/AlMgCu/data/init.630", - "data/AlMgCu/data/init.631", - "data/AlMgCu/data/init.632", - "data/AlMgCu/data/init.633", - "data/AlMgCu/data/init.634", - "data/AlMgCu/data/init.635", - "data/AlMgCu/data/init.636", - "data/AlMgCu/data/init.638", - "data/AlMgCu/data/init.639", - "data/AlMgCu/data/init.640", - "data/AlMgCu/data/init.641", - "data/AlMgCu/data/init.642", - "data/AlMgCu/data/init.643", - "data/AlMgCu/data/init.644", - "data/AlMgCu/data/init.645", - "data/AlMgCu/data/init.646", - "data/AlMgCu/data/init.647", - "data/AlMgCu/data/init.648", - "data/AlMgCu/data/init.649", - "data/AlMgCu/data/init.650", - "data/AlMgCu/data/init.651", - "data/AlMgCu/data/init.652", - "data/AlMgCu/data/init.653", - "data/AlMgCu/data/init.654", - "data/AlMgCu/data/init.656", - "data/AlMgCu/data/init.657", - "data/AlMgCu/data/init.658", - "data/AlMgCu/data/init.659", - "data/AlMgCu/data/init.661", - "data/AlMgCu/data/init.663", - "data/AlMgCu/data/init.664", - "data/AlMgCu/data/init.665", - "data/AlMgCu/data/init.666", - "data/AlMgCu/data/init.667", - "data/AlMgCu/data/init.668", - "data/AlMgCu/data/init.669", - "data/AlMgCu/data/init.671", - "data/AlMgCu/data/init.672", - "data/AlMgCu/data/init.673", - "data/AlMgCu/data/init.674", - "data/AlMgCu/data/init.675", - "data/AlMgCu/data/init.676", - "data/AlMgCu/data/init.677", - "data/AlMgCu/data/init.678", - "data/AlMgCu/data/init.679", - "data/AlMgCu/data/init.680", - "data/AlMgCu/data/init.681", - "data/AlMgCu/data/init.682", - "data/AlMgCu/data/init.683", - "data/AlMgCu/data/init.684", - "data/AlMgCu/data/init.685", - "data/AlMgCu/data/init.686", - "data/AlMgCu/data/init.687", - "data/AlMgCu/data/init.689", - "data/AlMgCu/data/init.690", - "data/AlMgCu/data/init.691", - "data/AlMgCu/data/init.692", - "data/AlMgCu/data/init.693", - "data/AlMgCu/data/init.694", - "data/AlMgCu/data/init.695", - "data/AlMgCu/data/init.696", - "data/AlMgCu/data/init.697", - "data/AlMgCu/data/init.698", - "data/AlMgCu/data/init.699", - "data/AlMgCu/data/init.700", - "data/AlMgCu/data/init.701", - "data/AlMgCu/data/init.702", - "data/AlMgCu/data/init.703", - "data/AlMgCu/data/init.704", - "data/AlMgCu/data/init.706", - "data/AlMgCu/data/init.707", - "data/AlMgCu/data/init.708", - "data/AlMgCu/data/init.709", - "data/AlMgCu/data/init.710", - "data/AlMgCu/data/init.712", - "data/AlMgCu/data/init.713", - "data/AlMgCu/data/init.714", - "data/AlMgCu/data/init.715", - "data/AlMgCu/data/init.717", - "data/AlMgCu/data/init.718", - "data/AlMgCu/data/init.719", - "data/AlMgCu/data/init.720", - "data/AlMgCu/data/init.721", - "data/AlMgCu/data/init.722", - "data/AlMgCu/data/init.724", - "data/AlMgCu/data/init.725", - "data/AlMgCu/data/init.726", - "data/AlMgCu/data/init.727", - "data/AlMgCu/data/init.728", - "data/AlMgCu/data/init.729", - "data/AlMgCu/data/init.730", - "data/AlMgCu/data/init.731", - "data/AlMgCu/data/init.732", - "data/AlMgCu/data/init.733", - "data/AlMgCu/data/init.734", - "data/AlMgCu/data/init.735", - "data/AlMgCu/data/init.736", - "data/AlMgCu/data/init.737", - "data/AlMgCu/data/init.738", - "data/AlMgCu/data/init.739", - "data/AlMgCu/data/init.740", - "data/AlMgCu/data/init.741", - "data/AlMgCu/data/init.743", - "data/AlMgCu/data/init.744", - "data/AlMgCu/data/init.745", - "data/AlMgCu/data/init.746", - "data/AlMgCu/data/init.747", - "data/AlMgCu/data/init.749", - "data/AlMgCu/data/init.751", - "data/AlMgCu/data/init.752", - "data/AlMgCu/data/init.753", - "data/AlMgCu/data/init.754", - "data/AlMgCu/data/init.755", - "data/AlMgCu/data/init.756", - "data/AlMgCu/data/init.757", - "data/AlMgCu/data/init.758", - "data/AlMgCu/data/init.759", - "data/AlMgCu/data/init.760", - "data/AlMgCu/data/init.762", - "data/AlMgCu/data/init.764", - "data/AlMgCu/data/init.765", - "data/AlMgCu/data/init.766", - "data/AlMgCu/data/init.767", - "data/AlMgCu/data/init.768", - "data/AlMgCu/data/init.769", - "data/AlMgCu/data/init.770", - "data/AlMgCu/data/init.772", - "data/AlMgCu/data/init.773", - "data/AlMgCu/data/init.774", - "data/AlMgCu/data/init.775", - "data/AlMgCu/data/init.776", - "data/AlMgCu/data/init.777", - "data/AlMgCu/data/init.778", - "data/AlMgCu/data/init.779", - "data/AlMgCu/data/init.780", - "data/AlMgCu/data/init.781", - "data/AlMgCu/data/init.783", - "data/AlMgCu/data/init.784", - "data/AlMgCu/data/init.785", - "data/AlMgCu/data/init.786", - "data/AlMgCu/data/init.787", - "data/AlMgCu/data/init.788", - "data/AlMgCu/data/init.789", - "data/AlMgCu/data/init.790", - "data/AlMgCu/data/init.791", - "data/AlMgCu/data/init.792", - "data/AlMgCu/data/init.793", - "data/AlMgCu/data/init.794", - "data/AlMgCu/data/init.795", - "data/AlMgCu/data/init.796", - "data/AlMgCu/data/init.797", - "data/AlMgCu/data/init.799", - "data/AlMgCu/data/init.800", - "data/AlMgCu/data/init.801", - "data/AlMgCu/data/init.802", - "data/AlMgCu/data/init.803", - "data/AlMgCu/data/init.804", - "data/AlMgCu/data/init.805", - "data/AlMgCu/data/init.806", - "data/AlMgCu/data/init.807", - "data/AlMgCu/data/init.808", - "data/AlMgCu/data/init.809", - "data/AlMgCu/data/init.810", - "data/AlMgCu/data/init.811", - "data/AlMgCu/data/init.812", - "data/AlMgCu/data/init.813", - "data/AlMgCu/data/init.814", - "data/AlMgCu/data/init.816", - "data/AlMgCu/data/init.817", - "data/AlMgCu/data/init.819", - "data/AlMgCu/data/init.820", - "data/AlMgCu/data/init.821", - "data/AlMgCu/data/init.822", - "data/AlMgCu/data/init.824", - "data/AlMgCu/data/init.825", - "data/AlMgCu/data/init.826", - "data/AlMgCu/data/init.827", - "data/AlMgCu/data/init.830", - "data/AlMgCu/data/init.832", - "data/AlMgCu/data/init.833", - "data/AlMgCu/data/init.834", - "data/AlMgCu/data/init.835", - "data/AlMgCu/data/init.836", - "data/AlMgCu/data/init.837", - "data/AlMgCu/data/init.838", - "data/AlMgCu/data/init.839", - "data/AlMgCu/data/init.840", - "data/AlMgCu/data/init.842", - "data/AlMgCu/data/init.843", - "data/AlMgCu/data/init.844", - "data/AlMgCu/data/init.845", - "data/AlMgCu/data/init.847", - "data/AlMgCu/data/init.848", - "data/AlMgCu/data/init.849", - "data/AlMgCu/data/init.850", - "data/AlMgCu/data/init.851", - "data/AlMgCu/data/init.852", - "data/AlMgCu/data/init.853", - "data/AlMgCu/data/init.854", - "data/AlMgCu/data/init.855", - "data/AlMgCu/data/init.856", - "data/AlMgCu/data/init.857", - "data/AlMgCu/data/init.858", - "data/AlMgCu/data/init.859", - "data/AlMgCu/data/init.860", - "data/AlMgCu/data/init.862", - "data/AlMgCu/data/init.863", - "data/AlMgCu/data/init.864", - "data/AlMgCu/data/init.865", - "data/AlMgCu/data/init.866", - "data/AlMgCu/data/init.867", - "data/AlMgCu/data/init.868", - "data/AlMgCu/data/init.869", - "data/AlMgCu/data/init.870", - "data/AlMgCu/data/init.871", - "data/AlMgCu/data/init.872", - "data/AlMgCu/data/init.873", - "data/AlMgCu/data/init.874", - "data/AlMgCu/data/init.875", - "data/AlMgCu/data/init.876", - "data/AlMgCu/data/init.877", - "data/AlMgCu/data/init.879", - "data/AlMgCu/data/init.880", - "data/AlMgCu/data/init.881", - "data/AlMgCu/data/init.882", - "data/AlMgCu/data/init.883", - "data/AlMgCu/data/init.884", - "data/AlMgCu/data/init.885", - "data/AlMgCu/data/init.886", - "data/AlMgCu/data/init.887", - "data/AlMgCu/data/init.888", - "data/AlMgCu/data/init.889", - "data/AlMgCu/data/init.890", - "data/AlMgCu/data/init.891", - "data/AlMgCu/data/init.892", - "data/AlMgCu/data/init.894", - "data/AlMgCu/data/init.895", - "data/AlMgCu/data/init.896", - "data/AlMgCu/data/init.897", - "data/AlMgCu/data/init.898", - "data/AlMgCu/data/init.899", - "data/AlMgCu/data/init.900", - "data/AlMgCu/data/init.901", - "data/AlMgCu/data/init.902", - "data/AlMgCu/data/init.903", - "data/AlMgCu/data/init.905", - "data/AlMgCu/data/init.906", - "data/AlMgCu/data/init.907", - "data/AlMgCu/data/init.908", - "data/AlMgCu/data/init.910", - "data/AlMgCu/data/init.911", - "data/AlMgCu/data/init.912", - "data/AlMgCu/data/init.913", - "data/AlMgCu/data/init.914", - "data/AlMgCu/data/init.915", - "data/AlMgCu/data/init.916", - "data/AlMgCu/data/init.917", - "data/AlMgCu/data/init.918", - "data/AlMgCu/data/init.919", - "data/AlMgCu/data/init.922", - "data/AlMgCu/data/init.923", - "data/AlMgCu/data/init.924", - "data/AlMgCu/data/init.925", - "data/AlMgCu/data/init.926", - "data/AlMgCu/data/init.927", - "data/AlMgCu/data/init.928", - "data/AlMgCu/data/init.929", - "data/AlMgCu/data/init.930", - "data/AlMgCu/data/init.931", - "data/AlMgCu/data/init.933", - "data/AlMgCu/data/init.934", - "data/AlMgCu/data/init.935", - "data/AlMgCu/data/init.937", - "data/AlMgCu/data/init.938", - "data/AlMgCu/data/init.939", - "data/AlMgCu/data/init.940", - "data/AlMgCu/data/init.941", - "data/AlMgCu/data/init.942", - "data/AlMgCu/data/init.943", - "data/AlMgCu/data/init.944", - "data/AlMgCu/data/init.945", - "data/AlMgCu/data/init.946", - "data/AlMgCu/data/init.947", - "data/AlMgCu/data/init.948", - "data/AlMgCu/data/init.949", - "data/AlMgCu/data/init.950", - "data/AlMgCu/data/init.951", - "data/AlMgCu/data/init.952", - "data/AlMgCu/data/init.953", - "data/AlMgCu/data/init.955", - "data/AlMgCu/data/init.956", - "data/AlMgCu/data/init.957", - "data/AlMgCu/data/init.958", - "data/AlMgCu/data/init.959", - "data/AlMgCu/data/init.960", - "data/AlMgCu/data/init.961", - "data/AlMgCu/data/init.962", - "data/AlMgCu/data/init.963", - "data/AlMgCu/data/init.964", - "data/AlMgCu/data/init.965", - "data/AlMgCu/data/init.966", - "data/AlMgCu/data/init.967", - "data/AlMgCu/data/init.968", - "data/AlMgCu/data/init.969", - "data/AlMgCu/data/init.970", - "data/AlMgCu/data/init.971", - "data/AlMgCu/data/init.972", - "data/AlMgCu/data/init.973", - "data/AlMgCu/data/init.974", - "data/AlMgCu/data/init.975", - "data/AlMgCu/data/init.977", - "data/AlMgCu/data/init.978", - "data/AlMgCu/data/init.979", - "data/AlMgCu/data/init.980", - "data/AlMgCu/data/init.981", - "data/AlMgCu/data/init.982", - "data/AlMgCu/data/init.983", - "data/AlMgCu/data/init.984", - "data/AlMgCu/data/init.985", - "data/AlMgCu/data/init.986", - "data/AlMgCu/data/init.987", - "data/AlMgCu/data/init.988", - "data/AlMgCu/data/init.989", - "data/AlMgCu/data/init.990", - "data/AlMgCu/data/init.991", - "data/AlMgCu/data/init.993", - "data/AlMgCu/data/init.994", - "data/AlMgCu/data/init.995", - "data/AlMgCu/data/init.996", - "data/AlMgCu/data/init.997", - "data/AlMgCu/data/init.999", - "data/AlMgCu/data/sys.000", - "data/AlMgCu/data/sys.001", - "data/AlMgCu/data/sys.002", - "data/AlMgCu/data/sys.004", - "data/AlMgCu/data/sys.006", - "data/AlMgCu/data/sys.007", - "data/AlMgCu/data/sys.008", - "data/AlMgCu/data/sys.010", - "data/AlMgCu/data/sys.011", - "data/AlMgCu/data/sys.012", - "data/AlMgCu/data/sys.015", - "data/AlMgCu/data/sys.016", - "data/AlMgCu/data/sys.017", - "data/AlMgCu/data/sys.018", - "data/AlMgCu/data/sys.019", - "data/AlMgCu/data/sys.020", - "data/AlMgCu/data/sys.021", - "data/AlMgCu/data/sys.022", - "data/AlMgCu/data/sys.023", - "data/AlMgCu/data/sys.026", - "data/AlMgCu/data/sys.027", - "data/AlMgCu/data/sys.028", - "data/AlMgCu/data/sys.029", - "data/AlMgCu/data/sys.030", - "data/AlMgCu/data/sys.031", - "data/AlMgCu/data/sys.032", - "data/AlMgCu/data/sys.033", - "data/AlMgCu/data/sys.034", - "data/AlMgCu/data/sys.036", - "data/AlMgCu/data/sys.037", - "data/AlMgCu/data/sys.038", - "data/AlMgCu/data/sys.039", - "data/AlMgCu/data/sys.040", - "data/AlMgCu/data/sys.041", - "data/AlMgCu/data/sys.042", - "data/AlMgCu/data/sys.043", - "data/AlMgCu/data/sys.044", - "data/AlMgCu/data/sys.045", - "data/AlMgCu/data/sys.046", - "data/AlMgCu/data/sys.048", - "data/AlMgCu/data/sys.049", - "data/AlMgCu/data/sys.050", - "data/AlMgCu/data/sys.051", - "data/AlMgCu/data/sys.052", - "data/AlMgCu/data/sys.053", - "data/AlMgCu/data/sys.054", - "data/AlMgCu/data/sys.055", - "data/AlMgCu/data/sys.056", - "data/AlMgCu/data/sys.057", - "data/AlMgCu/data/sys.058", - "data/AlMgCu/data/sys.059", - "data/AlMgCu/data/sys.060", - "data/AlMgCu/data/sys.061", - "data/AlMgCu/data/sys.062", - "data/AlMgCu/data/sys.063", - "data/AlMgCu/data/sys.064", - "data/AlMgCu/data/sys.065", - "data/AlMgCu/data/sys.066", - "data/AlMgCu/data/sys.067", - "data/AlMgCu/data/sys.070", - "data/AlMgCu/data/sys.071", - "data/AlMgCu/data/sys.072", - "data/AlMgCu/data/sys.073", - "data/AlMgCu/data/sys.074", - "data/AlMgCu/data/sys.075", - "data/AlMgCu/data/sys.076", - "data/AlMgCu/data/sys.077", - "data/AlMgCu/data/sys.078", - "data/AlMgCu/data/sys.079", - "data/AlMgCu/data/sys.080", - "data/AlMgCu/data/sys.081", - "data/AlMgCu/data/sys.082", - "data/AlMgCu/data/sys.083", - "data/AlMgCu/data/sys.084", - "data/AlMgCu/data/sys.085", - "data/AlMgCu/data/sys.086", - "data/AlMgCu/data/sys.087", - "data/AlMgCu/data/sys.088", - "data/AlMgCu/data/sys.089", - "data/AlMgCu/data/sys.090", - "data/AlMgCu/data/sys.092", - "data/AlMgCu/data/sys.093", - "data/AlMgCu/data/sys.094", - "data/AlMgCu/data/sys.095", - "data/AlMgCu/data/sys.097", - "data/AlMgCu/data/sys.098", - "data/AlMgCu/data/sys.099", - "data/AlMgCu/data/sys.100", - "data/AlMgCu/data/sys.1000", - "data/AlMgCu/data/sys.10004", - "data/AlMgCu/data/sys.10006", - "data/AlMgCu/data/sys.1001", - "data/AlMgCu/data/sys.10010", - "data/AlMgCu/data/sys.10012", - "data/AlMgCu/data/sys.10018", - "data/AlMgCu/data/sys.1002", - "data/AlMgCu/data/sys.10024", - "data/AlMgCu/data/sys.10026", - "data/AlMgCu/data/sys.10027", - "data/AlMgCu/data/sys.10028", - "data/AlMgCu/data/sys.10029", - "data/AlMgCu/data/sys.1003", - "data/AlMgCu/data/sys.10030", - "data/AlMgCu/data/sys.10034", - "data/AlMgCu/data/sys.10035", - "data/AlMgCu/data/sys.10036", - "data/AlMgCu/data/sys.1004", - "data/AlMgCu/data/sys.10042", - "data/AlMgCu/data/sys.10044", - "data/AlMgCu/data/sys.10046", - "data/AlMgCu/data/sys.1005", - "data/AlMgCu/data/sys.10050", - "data/AlMgCu/data/sys.10052", - "data/AlMgCu/data/sys.10056", - "data/AlMgCu/data/sys.10058", - "data/AlMgCu/data/sys.1006", - "data/AlMgCu/data/sys.10060", - "data/AlMgCu/data/sys.10064", - "data/AlMgCu/data/sys.1007", - "data/AlMgCu/data/sys.10073", - "data/AlMgCu/data/sys.1008", - "data/AlMgCu/data/sys.10082", - "data/AlMgCu/data/sys.10083", - "data/AlMgCu/data/sys.10084", - "data/AlMgCu/data/sys.1009", - "data/AlMgCu/data/sys.10090", - "data/AlMgCu/data/sys.10091", - "data/AlMgCu/data/sys.10092", - "data/AlMgCu/data/sys.10098", - "data/AlMgCu/data/sys.101", - "data/AlMgCu/data/sys.1010", - "data/AlMgCu/data/sys.10100", - "data/AlMgCu/data/sys.10105", - "data/AlMgCu/data/sys.10106", - "data/AlMgCu/data/sys.1011", - "data/AlMgCu/data/sys.10112", - "data/AlMgCu/data/sys.10114", - "data/AlMgCu/data/sys.10115", - "data/AlMgCu/data/sys.10116", - "data/AlMgCu/data/sys.1012", - "data/AlMgCu/data/sys.10121", - "data/AlMgCu/data/sys.10122", - "data/AlMgCu/data/sys.10128", - "data/AlMgCu/data/sys.1013", - "data/AlMgCu/data/sys.10138", - "data/AlMgCu/data/sys.1014", - "data/AlMgCu/data/sys.10144", - "data/AlMgCu/data/sys.10145", - "data/AlMgCu/data/sys.10146", - "data/AlMgCu/data/sys.10148", - "data/AlMgCu/data/sys.1015", - "data/AlMgCu/data/sys.10154", - "data/AlMgCu/data/sys.10155", - "data/AlMgCu/data/sys.1016", - "data/AlMgCu/data/sys.10160", - "data/AlMgCu/data/sys.10162", - "data/AlMgCu/data/sys.10163", - "data/AlMgCu/data/sys.1017", - "data/AlMgCu/data/sys.10170", - "data/AlMgCu/data/sys.10174", - "data/AlMgCu/data/sys.10176", - "data/AlMgCu/data/sys.10178", - "data/AlMgCu/data/sys.1018", - "data/AlMgCu/data/sys.1019", - "data/AlMgCu/data/sys.10193", - "data/AlMgCu/data/sys.10194", - "data/AlMgCu/data/sys.10196", - "data/AlMgCu/data/sys.1020", - "data/AlMgCu/data/sys.10202", - "data/AlMgCu/data/sys.1021", - "data/AlMgCu/data/sys.10210", - "data/AlMgCu/data/sys.10211", - "data/AlMgCu/data/sys.10218", - "data/AlMgCu/data/sys.1022", - "data/AlMgCu/data/sys.10226", - "data/AlMgCu/data/sys.1023", - "data/AlMgCu/data/sys.10233", - "data/AlMgCu/data/sys.10236", - "data/AlMgCu/data/sys.1024", - "data/AlMgCu/data/sys.10244", - "data/AlMgCu/data/sys.10248", - "data/AlMgCu/data/sys.1025", - "data/AlMgCu/data/sys.10250", - "data/AlMgCu/data/sys.10253", - "data/AlMgCu/data/sys.10258", - "data/AlMgCu/data/sys.1026", - "data/AlMgCu/data/sys.10260", - "data/AlMgCu/data/sys.10268", - "data/AlMgCu/data/sys.1027", - "data/AlMgCu/data/sys.10274", - "data/AlMgCu/data/sys.10282", - "data/AlMgCu/data/sys.10289", - "data/AlMgCu/data/sys.1029", - "data/AlMgCu/data/sys.10296", - "data/AlMgCu/data/sys.10298", - "data/AlMgCu/data/sys.103", - "data/AlMgCu/data/sys.1030", - "data/AlMgCu/data/sys.10306", - "data/AlMgCu/data/sys.10308", - "data/AlMgCu/data/sys.1031", - "data/AlMgCu/data/sys.10314", - "data/AlMgCu/data/sys.1032", - "data/AlMgCu/data/sys.10322", - "data/AlMgCu/data/sys.10324", - "data/AlMgCu/data/sys.10329", - "data/AlMgCu/data/sys.1033", - "data/AlMgCu/data/sys.10330", - "data/AlMgCu/data/sys.1034", - "data/AlMgCu/data/sys.1035", - "data/AlMgCu/data/sys.10356", - "data/AlMgCu/data/sys.1036", - "data/AlMgCu/data/sys.10368", - "data/AlMgCu/data/sys.1037", - "data/AlMgCu/data/sys.10370", - "data/AlMgCu/data/sys.10372", - "data/AlMgCu/data/sys.1038", - "data/AlMgCu/data/sys.1039", - "data/AlMgCu/data/sys.10394", - "data/AlMgCu/data/sys.10396", - "data/AlMgCu/data/sys.104", - "data/AlMgCu/data/sys.10402", - "data/AlMgCu/data/sys.10404", - "data/AlMgCu/data/sys.10408", - "data/AlMgCu/data/sys.1041", - "data/AlMgCu/data/sys.10410", - "data/AlMgCu/data/sys.1042", - "data/AlMgCu/data/sys.1043", - "data/AlMgCu/data/sys.1044", - "data/AlMgCu/data/sys.1045", - "data/AlMgCu/data/sys.10450", - "data/AlMgCu/data/sys.1046", - "data/AlMgCu/data/sys.1047", - "data/AlMgCu/data/sys.1048", - "data/AlMgCu/data/sys.10483", - "data/AlMgCu/data/sys.10484", - "data/AlMgCu/data/sys.1049", - "data/AlMgCu/data/sys.10490", - "data/AlMgCu/data/sys.105", - "data/AlMgCu/data/sys.1050", - "data/AlMgCu/data/sys.1051", - "data/AlMgCu/data/sys.1052", - "data/AlMgCu/data/sys.1053", - "data/AlMgCu/data/sys.10536", - "data/AlMgCu/data/sys.1054", - "data/AlMgCu/data/sys.10544", - "data/AlMgCu/data/sys.10554", - "data/AlMgCu/data/sys.1056", - "data/AlMgCu/data/sys.10588", - "data/AlMgCu/data/sys.1059", - "data/AlMgCu/data/sys.10592", - "data/AlMgCu/data/sys.106", - "data/AlMgCu/data/sys.1060", - "data/AlMgCu/data/sys.10602", - "data/AlMgCu/data/sys.10604", - "data/AlMgCu/data/sys.1061", - "data/AlMgCu/data/sys.10612", - "data/AlMgCu/data/sys.1062", - "data/AlMgCu/data/sys.10626", - "data/AlMgCu/data/sys.1063", - "data/AlMgCu/data/sys.10636", - "data/AlMgCu/data/sys.1064", - "data/AlMgCu/data/sys.1065", - "data/AlMgCu/data/sys.1066", - "data/AlMgCu/data/sys.1067", - "data/AlMgCu/data/sys.10676", - "data/AlMgCu/data/sys.1068", - "data/AlMgCu/data/sys.1069", - "data/AlMgCu/data/sys.107", - "data/AlMgCu/data/sys.1070", - "data/AlMgCu/data/sys.10702", - "data/AlMgCu/data/sys.1071", - "data/AlMgCu/data/sys.1072", - "data/AlMgCu/data/sys.1073", - "data/AlMgCu/data/sys.1074", - "data/AlMgCu/data/sys.1075", - "data/AlMgCu/data/sys.1076", - "data/AlMgCu/data/sys.1078", - "data/AlMgCu/data/sys.1079", - "data/AlMgCu/data/sys.108", - "data/AlMgCu/data/sys.1080", - "data/AlMgCu/data/sys.1082", - "data/AlMgCu/data/sys.1083", - "data/AlMgCu/data/sys.1084", - "data/AlMgCu/data/sys.1085", - "data/AlMgCu/data/sys.1086", - "data/AlMgCu/data/sys.1087", - "data/AlMgCu/data/sys.1088", - "data/AlMgCu/data/sys.1089", - "data/AlMgCu/data/sys.10895", - "data/AlMgCu/data/sys.10898", - "data/AlMgCu/data/sys.109", - "data/AlMgCu/data/sys.1090", - "data/AlMgCu/data/sys.10900", - "data/AlMgCu/data/sys.10904", - "data/AlMgCu/data/sys.10905", - "data/AlMgCu/data/sys.10906", - "data/AlMgCu/data/sys.10907", - "data/AlMgCu/data/sys.10909", - "data/AlMgCu/data/sys.1091", - "data/AlMgCu/data/sys.10910", - "data/AlMgCu/data/sys.10912", - "data/AlMgCu/data/sys.10914", - "data/AlMgCu/data/sys.10916", - "data/AlMgCu/data/sys.1092", - "data/AlMgCu/data/sys.10920", - "data/AlMgCu/data/sys.10921", - "data/AlMgCu/data/sys.10922", - "data/AlMgCu/data/sys.10924", - "data/AlMgCu/data/sys.10926", - "data/AlMgCu/data/sys.10929", - "data/AlMgCu/data/sys.10930", - "data/AlMgCu/data/sys.10932", - "data/AlMgCu/data/sys.10933", - "data/AlMgCu/data/sys.10936", - "data/AlMgCu/data/sys.10938", - "data/AlMgCu/data/sys.10939", - "data/AlMgCu/data/sys.1094", - "data/AlMgCu/data/sys.10941", - "data/AlMgCu/data/sys.10942", - "data/AlMgCu/data/sys.10944", - "data/AlMgCu/data/sys.10945", - "data/AlMgCu/data/sys.10946", - "data/AlMgCu/data/sys.10947", - "data/AlMgCu/data/sys.1095", - "data/AlMgCu/data/sys.10950", - "data/AlMgCu/data/sys.10952", - "data/AlMgCu/data/sys.10956", - "data/AlMgCu/data/sys.10957", - "data/AlMgCu/data/sys.10960", - "data/AlMgCu/data/sys.10961", - "data/AlMgCu/data/sys.10962", - "data/AlMgCu/data/sys.10964", - "data/AlMgCu/data/sys.10966", - "data/AlMgCu/data/sys.10968", - "data/AlMgCu/data/sys.10969", - "data/AlMgCu/data/sys.1097", - "data/AlMgCu/data/sys.10970", - "data/AlMgCu/data/sys.10972", - "data/AlMgCu/data/sys.10977", - "data/AlMgCu/data/sys.1098", - "data/AlMgCu/data/sys.10980", - "data/AlMgCu/data/sys.10985", - "data/AlMgCu/data/sys.10986", - "data/AlMgCu/data/sys.10989", - "data/AlMgCu/data/sys.1099", - "data/AlMgCu/data/sys.10993", - "data/AlMgCu/data/sys.10994", - "data/AlMgCu/data/sys.10995", - "data/AlMgCu/data/sys.10996", - "data/AlMgCu/data/sys.10998", - "data/AlMgCu/data/sys.110", - "data/AlMgCu/data/sys.1100", - "data/AlMgCu/data/sys.11000", - "data/AlMgCu/data/sys.11001", - "data/AlMgCu/data/sys.11002", - "data/AlMgCu/data/sys.11006", - "data/AlMgCu/data/sys.11008", - "data/AlMgCu/data/sys.11009", - "data/AlMgCu/data/sys.1101", - "data/AlMgCu/data/sys.11010", - "data/AlMgCu/data/sys.11016", - "data/AlMgCu/data/sys.11018", - "data/AlMgCu/data/sys.1102", - "data/AlMgCu/data/sys.11020", - "data/AlMgCu/data/sys.11024", - "data/AlMgCu/data/sys.11028", - "data/AlMgCu/data/sys.11029", - "data/AlMgCu/data/sys.1103", - "data/AlMgCu/data/sys.11033", - "data/AlMgCu/data/sys.11034", - "data/AlMgCu/data/sys.11035", - "data/AlMgCu/data/sys.11036", - "data/AlMgCu/data/sys.11037", - "data/AlMgCu/data/sys.11038", - "data/AlMgCu/data/sys.1104", - "data/AlMgCu/data/sys.11042", - "data/AlMgCu/data/sys.11044", - "data/AlMgCu/data/sys.11048", - "data/AlMgCu/data/sys.11049", - "data/AlMgCu/data/sys.1105", - "data/AlMgCu/data/sys.11056", - "data/AlMgCu/data/sys.11057", - "data/AlMgCu/data/sys.11058", - "data/AlMgCu/data/sys.1106", - "data/AlMgCu/data/sys.11060", - "data/AlMgCu/data/sys.11062", - "data/AlMgCu/data/sys.11064", - "data/AlMgCu/data/sys.11065", - "data/AlMgCu/data/sys.11066", - "data/AlMgCu/data/sys.11068", - "data/AlMgCu/data/sys.11069", - "data/AlMgCu/data/sys.1107", - "data/AlMgCu/data/sys.11076", - "data/AlMgCu/data/sys.11077", - "data/AlMgCu/data/sys.1108", - "data/AlMgCu/data/sys.11080", - "data/AlMgCu/data/sys.11081", - "data/AlMgCu/data/sys.11082", - "data/AlMgCu/data/sys.11088", - "data/AlMgCu/data/sys.11090", - "data/AlMgCu/data/sys.11096", - "data/AlMgCu/data/sys.11097", - "data/AlMgCu/data/sys.11098", - "data/AlMgCu/data/sys.11099", - "data/AlMgCu/data/sys.111", - "data/AlMgCu/data/sys.1110", - "data/AlMgCu/data/sys.11104", - "data/AlMgCu/data/sys.11105", - "data/AlMgCu/data/sys.11106", - "data/AlMgCu/data/sys.11107", - "data/AlMgCu/data/sys.11108", - "data/AlMgCu/data/sys.1111", - "data/AlMgCu/data/sys.11114", - "data/AlMgCu/data/sys.1112", - "data/AlMgCu/data/sys.11121", - "data/AlMgCu/data/sys.11122", - "data/AlMgCu/data/sys.11128", - "data/AlMgCu/data/sys.1113", - "data/AlMgCu/data/sys.11132", - "data/AlMgCu/data/sys.11133", - "data/AlMgCu/data/sys.11134", - "data/AlMgCu/data/sys.11136", - "data/AlMgCu/data/sys.11137", - "data/AlMgCu/data/sys.11139", - "data/AlMgCu/data/sys.1114", - "data/AlMgCu/data/sys.11144", - "data/AlMgCu/data/sys.11146", - "data/AlMgCu/data/sys.1115", - "data/AlMgCu/data/sys.11152", - "data/AlMgCu/data/sys.11154", - "data/AlMgCu/data/sys.1116", - "data/AlMgCu/data/sys.11160", - "data/AlMgCu/data/sys.11162", - "data/AlMgCu/data/sys.1117", - "data/AlMgCu/data/sys.11170", - "data/AlMgCu/data/sys.11176", - "data/AlMgCu/data/sys.11177", - "data/AlMgCu/data/sys.11184", - "data/AlMgCu/data/sys.11192", - "data/AlMgCu/data/sys.11193", - "data/AlMgCu/data/sys.11196", - "data/AlMgCu/data/sys.112", - "data/AlMgCu/data/sys.1120", - "data/AlMgCu/data/sys.11202", - "data/AlMgCu/data/sys.11204", - "data/AlMgCu/data/sys.11208", - "data/AlMgCu/data/sys.1121", - "data/AlMgCu/data/sys.11216", - "data/AlMgCu/data/sys.11218", - "data/AlMgCu/data/sys.11219", - "data/AlMgCu/data/sys.1122", - "data/AlMgCu/data/sys.11222", - "data/AlMgCu/data/sys.11226", - "data/AlMgCu/data/sys.1123", - "data/AlMgCu/data/sys.11232", - "data/AlMgCu/data/sys.1124", - "data/AlMgCu/data/sys.11240", - "data/AlMgCu/data/sys.11242", - "data/AlMgCu/data/sys.11248", - "data/AlMgCu/data/sys.11249", - "data/AlMgCu/data/sys.1125", - "data/AlMgCu/data/sys.11256", - "data/AlMgCu/data/sys.11258", - "data/AlMgCu/data/sys.1126", - "data/AlMgCu/data/sys.11265", - "data/AlMgCu/data/sys.1127", - "data/AlMgCu/data/sys.11273", - "data/AlMgCu/data/sys.1128", - "data/AlMgCu/data/sys.11280", - "data/AlMgCu/data/sys.11288", - "data/AlMgCu/data/sys.11289", - "data/AlMgCu/data/sys.1129", - "data/AlMgCu/data/sys.11292", - "data/AlMgCu/data/sys.11296", - "data/AlMgCu/data/sys.113", - "data/AlMgCu/data/sys.1130", - "data/AlMgCu/data/sys.11304", - "data/AlMgCu/data/sys.11308", - "data/AlMgCu/data/sys.1131", - "data/AlMgCu/data/sys.11312", - "data/AlMgCu/data/sys.11313", - "data/AlMgCu/data/sys.1132", - "data/AlMgCu/data/sys.11320", - "data/AlMgCu/data/sys.11328", - "data/AlMgCu/data/sys.1133", - "data/AlMgCu/data/sys.11332", - "data/AlMgCu/data/sys.11337", - "data/AlMgCu/data/sys.1134", - "data/AlMgCu/data/sys.1135", - "data/AlMgCu/data/sys.11352", - "data/AlMgCu/data/sys.11353", - "data/AlMgCu/data/sys.11354", - "data/AlMgCu/data/sys.1136", - "data/AlMgCu/data/sys.11362", - "data/AlMgCu/data/sys.1137", - "data/AlMgCu/data/sys.11372", - "data/AlMgCu/data/sys.11376", - "data/AlMgCu/data/sys.1138", - "data/AlMgCu/data/sys.11386", - "data/AlMgCu/data/sys.1139", - "data/AlMgCu/data/sys.11392", - "data/AlMgCu/data/sys.114", - "data/AlMgCu/data/sys.1140", - "data/AlMgCu/data/sys.1141", - "data/AlMgCu/data/sys.1143", - "data/AlMgCu/data/sys.1144", - "data/AlMgCu/data/sys.1145", - "data/AlMgCu/data/sys.1146", - "data/AlMgCu/data/sys.1147", - "data/AlMgCu/data/sys.1148", - "data/AlMgCu/data/sys.1149", - "data/AlMgCu/data/sys.115", - "data/AlMgCu/data/sys.1150", - "data/AlMgCu/data/sys.1151", - "data/AlMgCu/data/sys.1152", - "data/AlMgCu/data/sys.1154", - "data/AlMgCu/data/sys.1155", - "data/AlMgCu/data/sys.1157", - "data/AlMgCu/data/sys.1158", - "data/AlMgCu/data/sys.1159", - "data/AlMgCu/data/sys.116", - "data/AlMgCu/data/sys.1160", - "data/AlMgCu/data/sys.1161", - "data/AlMgCu/data/sys.1162", - "data/AlMgCu/data/sys.1163", - "data/AlMgCu/data/sys.1164", - "data/AlMgCu/data/sys.1165", - "data/AlMgCu/data/sys.1166", - "data/AlMgCu/data/sys.1167", - "data/AlMgCu/data/sys.1168", - "data/AlMgCu/data/sys.1169", - "data/AlMgCu/data/sys.117", - "data/AlMgCu/data/sys.1170", - "data/AlMgCu/data/sys.1171", - "data/AlMgCu/data/sys.1172", - "data/AlMgCu/data/sys.1173", - "data/AlMgCu/data/sys.1174", - "data/AlMgCu/data/sys.1175", - "data/AlMgCu/data/sys.1176", - "data/AlMgCu/data/sys.1177", - "data/AlMgCu/data/sys.1178", - "data/AlMgCu/data/sys.1179", - "data/AlMgCu/data/sys.118", - "data/AlMgCu/data/sys.1180", - "data/AlMgCu/data/sys.1183", - "data/AlMgCu/data/sys.1184", - "data/AlMgCu/data/sys.1185", - "data/AlMgCu/data/sys.1186", - "data/AlMgCu/data/sys.1187", - "data/AlMgCu/data/sys.1188", - "data/AlMgCu/data/sys.119", - "data/AlMgCu/data/sys.1191", - "data/AlMgCu/data/sys.1193", - "data/AlMgCu/data/sys.1194", - "data/AlMgCu/data/sys.1195", - "data/AlMgCu/data/sys.1198", - "data/AlMgCu/data/sys.1199", - "data/AlMgCu/data/sys.1200", - "data/AlMgCu/data/sys.1201", - "data/AlMgCu/data/sys.1202", - "data/AlMgCu/data/sys.1203", - "data/AlMgCu/data/sys.1204", - "data/AlMgCu/data/sys.1205", - "data/AlMgCu/data/sys.1206", - "data/AlMgCu/data/sys.1208", - "data/AlMgCu/data/sys.1209", - "data/AlMgCu/data/sys.121", - "data/AlMgCu/data/sys.1210", - "data/AlMgCu/data/sys.1211", - "data/AlMgCu/data/sys.1212", - "data/AlMgCu/data/sys.1213", - "data/AlMgCu/data/sys.1214", - "data/AlMgCu/data/sys.1215", - "data/AlMgCu/data/sys.1216", - "data/AlMgCu/data/sys.1217", - "data/AlMgCu/data/sys.1218", - "data/AlMgCu/data/sys.1219", - "data/AlMgCu/data/sys.122", - "data/AlMgCu/data/sys.1220", - "data/AlMgCu/data/sys.1221", - "data/AlMgCu/data/sys.1222", - "data/AlMgCu/data/sys.1223", - "data/AlMgCu/data/sys.1224", - "data/AlMgCu/data/sys.1225", - "data/AlMgCu/data/sys.1226", - "data/AlMgCu/data/sys.1227", - "data/AlMgCu/data/sys.1228", - "data/AlMgCu/data/sys.1229", - "data/AlMgCu/data/sys.123", - "data/AlMgCu/data/sys.1230", - "data/AlMgCu/data/sys.1232", - "data/AlMgCu/data/sys.1233", - "data/AlMgCu/data/sys.1234", - "data/AlMgCu/data/sys.1236", - "data/AlMgCu/data/sys.1237", - "data/AlMgCu/data/sys.1238", - "data/AlMgCu/data/sys.1239", - "data/AlMgCu/data/sys.124", - "data/AlMgCu/data/sys.1240", - "data/AlMgCu/data/sys.1241", - "data/AlMgCu/data/sys.1242", - "data/AlMgCu/data/sys.1243", - "data/AlMgCu/data/sys.1244", - "data/AlMgCu/data/sys.1245", - "data/AlMgCu/data/sys.1246", - "data/AlMgCu/data/sys.1247", - "data/AlMgCu/data/sys.1248", - "data/AlMgCu/data/sys.1249", - "data/AlMgCu/data/sys.125", - "data/AlMgCu/data/sys.1250", - "data/AlMgCu/data/sys.1251", - "data/AlMgCu/data/sys.1252", - "data/AlMgCu/data/sys.1254", - "data/AlMgCu/data/sys.1255", - "data/AlMgCu/data/sys.1256", - "data/AlMgCu/data/sys.1257", - "data/AlMgCu/data/sys.1258", - "data/AlMgCu/data/sys.1259", - "data/AlMgCu/data/sys.126", - "data/AlMgCu/data/sys.1260", - "data/AlMgCu/data/sys.1261", - "data/AlMgCu/data/sys.1262", - "data/AlMgCu/data/sys.1263", - "data/AlMgCu/data/sys.1264", - "data/AlMgCu/data/sys.1265", - "data/AlMgCu/data/sys.1266", - "data/AlMgCu/data/sys.1268", - "data/AlMgCu/data/sys.1269", - "data/AlMgCu/data/sys.127", - "data/AlMgCu/data/sys.1270", - "data/AlMgCu/data/sys.1271", - "data/AlMgCu/data/sys.1272", - "data/AlMgCu/data/sys.1273", - "data/AlMgCu/data/sys.1274", - "data/AlMgCu/data/sys.1275", - "data/AlMgCu/data/sys.1276", - "data/AlMgCu/data/sys.1277", - "data/AlMgCu/data/sys.1278", - "data/AlMgCu/data/sys.1279", - "data/AlMgCu/data/sys.128", - "data/AlMgCu/data/sys.1280", - "data/AlMgCu/data/sys.1281", - "data/AlMgCu/data/sys.1282", - "data/AlMgCu/data/sys.1283", - "data/AlMgCu/data/sys.1284", - "data/AlMgCu/data/sys.1286", - "data/AlMgCu/data/sys.1287", - "data/AlMgCu/data/sys.1288", - "data/AlMgCu/data/sys.1289", - "data/AlMgCu/data/sys.129", - "data/AlMgCu/data/sys.1290", - "data/AlMgCu/data/sys.1291", - "data/AlMgCu/data/sys.1292", - "data/AlMgCu/data/sys.1294", - "data/AlMgCu/data/sys.1295", - "data/AlMgCu/data/sys.1296", - "data/AlMgCu/data/sys.1298", - "data/AlMgCu/data/sys.1299", - "data/AlMgCu/data/sys.130", - "data/AlMgCu/data/sys.1300", - "data/AlMgCu/data/sys.1301", - "data/AlMgCu/data/sys.1302", - "data/AlMgCu/data/sys.1303", - "data/AlMgCu/data/sys.1304", - "data/AlMgCu/data/sys.1306", - "data/AlMgCu/data/sys.1307", - "data/AlMgCu/data/sys.1308", - "data/AlMgCu/data/sys.1309", - "data/AlMgCu/data/sys.131", - "data/AlMgCu/data/sys.1310", - "data/AlMgCu/data/sys.1311", - "data/AlMgCu/data/sys.1312", - "data/AlMgCu/data/sys.1313", - "data/AlMgCu/data/sys.1314", - "data/AlMgCu/data/sys.1316", - "data/AlMgCu/data/sys.1317", - "data/AlMgCu/data/sys.1318", - "data/AlMgCu/data/sys.1319", - "data/AlMgCu/data/sys.132", - "data/AlMgCu/data/sys.1321", - "data/AlMgCu/data/sys.1322", - "data/AlMgCu/data/sys.1323", - "data/AlMgCu/data/sys.1324", - "data/AlMgCu/data/sys.1325", - "data/AlMgCu/data/sys.1326", - "data/AlMgCu/data/sys.1327", - "data/AlMgCu/data/sys.1328", - "data/AlMgCu/data/sys.1329", - "data/AlMgCu/data/sys.1330", - "data/AlMgCu/data/sys.1331", - "data/AlMgCu/data/sys.1332", - "data/AlMgCu/data/sys.1333", - "data/AlMgCu/data/sys.1334", - "data/AlMgCu/data/sys.1335", - "data/AlMgCu/data/sys.1336", - "data/AlMgCu/data/sys.1337", - "data/AlMgCu/data/sys.1338", - "data/AlMgCu/data/sys.1339", - "data/AlMgCu/data/sys.1340", - "data/AlMgCu/data/sys.1341", - "data/AlMgCu/data/sys.1342", - "data/AlMgCu/data/sys.1343", - "data/AlMgCu/data/sys.1344", - "data/AlMgCu/data/sys.1345", - "data/AlMgCu/data/sys.1346", - "data/AlMgCu/data/sys.1347", - "data/AlMgCu/data/sys.1348", - "data/AlMgCu/data/sys.1349", - "data/AlMgCu/data/sys.135", - "data/AlMgCu/data/sys.1350", - "data/AlMgCu/data/sys.1351", - "data/AlMgCu/data/sys.1352", - "data/AlMgCu/data/sys.1353", - "data/AlMgCu/data/sys.1354", - "data/AlMgCu/data/sys.1355", - "data/AlMgCu/data/sys.1356", - "data/AlMgCu/data/sys.1357", - "data/AlMgCu/data/sys.1358", - "data/AlMgCu/data/sys.1359", - "data/AlMgCu/data/sys.136", - "data/AlMgCu/data/sys.1360", - "data/AlMgCu/data/sys.1361", - "data/AlMgCu/data/sys.1362", - "data/AlMgCu/data/sys.1363", - "data/AlMgCu/data/sys.1364", - "data/AlMgCu/data/sys.1365", - "data/AlMgCu/data/sys.1366", - "data/AlMgCu/data/sys.1367", - "data/AlMgCu/data/sys.1368", - "data/AlMgCu/data/sys.1369", - "data/AlMgCu/data/sys.137", - "data/AlMgCu/data/sys.1370", - "data/AlMgCu/data/sys.1371", - "data/AlMgCu/data/sys.1372", - "data/AlMgCu/data/sys.1373", - "data/AlMgCu/data/sys.1374", - "data/AlMgCu/data/sys.1376", - "data/AlMgCu/data/sys.1377", - "data/AlMgCu/data/sys.1379", - "data/AlMgCu/data/sys.138", - "data/AlMgCu/data/sys.1381", - "data/AlMgCu/data/sys.1382", - "data/AlMgCu/data/sys.1383", - "data/AlMgCu/data/sys.1384", - "data/AlMgCu/data/sys.1385", - "data/AlMgCu/data/sys.1387", - "data/AlMgCu/data/sys.1388", - "data/AlMgCu/data/sys.139", - "data/AlMgCu/data/sys.1390", - "data/AlMgCu/data/sys.1391", - "data/AlMgCu/data/sys.1392", - "data/AlMgCu/data/sys.1394", - "data/AlMgCu/data/sys.1395", - "data/AlMgCu/data/sys.1396", - "data/AlMgCu/data/sys.1398", - "data/AlMgCu/data/sys.1399", - "data/AlMgCu/data/sys.140", - "data/AlMgCu/data/sys.1400", - "data/AlMgCu/data/sys.1401", - "data/AlMgCu/data/sys.1403", - "data/AlMgCu/data/sys.1404", - "data/AlMgCu/data/sys.1405", - "data/AlMgCu/data/sys.1406", - "data/AlMgCu/data/sys.1407", - "data/AlMgCu/data/sys.1409", - "data/AlMgCu/data/sys.141", - "data/AlMgCu/data/sys.1410", - "data/AlMgCu/data/sys.1411", - "data/AlMgCu/data/sys.1412", - "data/AlMgCu/data/sys.1413", - "data/AlMgCu/data/sys.1414", - "data/AlMgCu/data/sys.1415", - "data/AlMgCu/data/sys.1416", - "data/AlMgCu/data/sys.1418", - "data/AlMgCu/data/sys.1419", - "data/AlMgCu/data/sys.142", - "data/AlMgCu/data/sys.1420", - "data/AlMgCu/data/sys.1421", - "data/AlMgCu/data/sys.1422", - "data/AlMgCu/data/sys.1423", - "data/AlMgCu/data/sys.1424", - "data/AlMgCu/data/sys.1425", - "data/AlMgCu/data/sys.1427", - "data/AlMgCu/data/sys.1428", - "data/AlMgCu/data/sys.1429", - "data/AlMgCu/data/sys.143", - "data/AlMgCu/data/sys.1430", - "data/AlMgCu/data/sys.1431", - "data/AlMgCu/data/sys.1432", - "data/AlMgCu/data/sys.1433", - "data/AlMgCu/data/sys.1434", - "data/AlMgCu/data/sys.1435", - "data/AlMgCu/data/sys.1436", - "data/AlMgCu/data/sys.1437", - "data/AlMgCu/data/sys.1438", - "data/AlMgCu/data/sys.1439", - "data/AlMgCu/data/sys.144", - "data/AlMgCu/data/sys.1440", - "data/AlMgCu/data/sys.1441", - "data/AlMgCu/data/sys.1442", - "data/AlMgCu/data/sys.1443", - "data/AlMgCu/data/sys.1444", - "data/AlMgCu/data/sys.1445", - "data/AlMgCu/data/sys.1446", - "data/AlMgCu/data/sys.1447", - "data/AlMgCu/data/sys.1448", - "data/AlMgCu/data/sys.1449", - "data/AlMgCu/data/sys.145", - "data/AlMgCu/data/sys.1450", - "data/AlMgCu/data/sys.1451", - "data/AlMgCu/data/sys.1452", - "data/AlMgCu/data/sys.1453", - "data/AlMgCu/data/sys.1454", - "data/AlMgCu/data/sys.1455", - "data/AlMgCu/data/sys.1456", - "data/AlMgCu/data/sys.1457", - "data/AlMgCu/data/sys.1458", - "data/AlMgCu/data/sys.1459", - "data/AlMgCu/data/sys.1461", - "data/AlMgCu/data/sys.1462", - "data/AlMgCu/data/sys.1463", - "data/AlMgCu/data/sys.1464", - "data/AlMgCu/data/sys.1465", - "data/AlMgCu/data/sys.1466", - "data/AlMgCu/data/sys.1467", - "data/AlMgCu/data/sys.1468", - "data/AlMgCu/data/sys.1469", - "data/AlMgCu/data/sys.147", - "data/AlMgCu/data/sys.1470", - "data/AlMgCu/data/sys.1471", - "data/AlMgCu/data/sys.1473", - "data/AlMgCu/data/sys.1474", - "data/AlMgCu/data/sys.1475", - "data/AlMgCu/data/sys.1476", - "data/AlMgCu/data/sys.1477", - "data/AlMgCu/data/sys.1478", - "data/AlMgCu/data/sys.1479", - "data/AlMgCu/data/sys.148", - "data/AlMgCu/data/sys.1480", - "data/AlMgCu/data/sys.1483", - "data/AlMgCu/data/sys.1484", - "data/AlMgCu/data/sys.1485", - "data/AlMgCu/data/sys.1487", - "data/AlMgCu/data/sys.1488", - "data/AlMgCu/data/sys.1489", - "data/AlMgCu/data/sys.149", - "data/AlMgCu/data/sys.1490", - "data/AlMgCu/data/sys.1491", - "data/AlMgCu/data/sys.1492", - "data/AlMgCu/data/sys.1494", - "data/AlMgCu/data/sys.1495", - "data/AlMgCu/data/sys.1496", - "data/AlMgCu/data/sys.1497", - "data/AlMgCu/data/sys.1498", - "data/AlMgCu/data/sys.1499", - "data/AlMgCu/data/sys.1500", - "data/AlMgCu/data/sys.1501", - "data/AlMgCu/data/sys.1502", - "data/AlMgCu/data/sys.1503", - "data/AlMgCu/data/sys.1504", - "data/AlMgCu/data/sys.1505", - "data/AlMgCu/data/sys.1506", - "data/AlMgCu/data/sys.1507", - "data/AlMgCu/data/sys.1508", - "data/AlMgCu/data/sys.1509", - "data/AlMgCu/data/sys.151", - "data/AlMgCu/data/sys.1510", - "data/AlMgCu/data/sys.1511", - "data/AlMgCu/data/sys.1512", - "data/AlMgCu/data/sys.1513", - "data/AlMgCu/data/sys.1515", - "data/AlMgCu/data/sys.1516", - "data/AlMgCu/data/sys.1517", - "data/AlMgCu/data/sys.1518", - "data/AlMgCu/data/sys.1519", - "data/AlMgCu/data/sys.152", - "data/AlMgCu/data/sys.1520", - "data/AlMgCu/data/sys.1521", - "data/AlMgCu/data/sys.1522", - "data/AlMgCu/data/sys.1523", - "data/AlMgCu/data/sys.1524", - "data/AlMgCu/data/sys.1525", - "data/AlMgCu/data/sys.1526", - "data/AlMgCu/data/sys.1527", - "data/AlMgCu/data/sys.1528", - "data/AlMgCu/data/sys.1529", - "data/AlMgCu/data/sys.153", - "data/AlMgCu/data/sys.1530", - "data/AlMgCu/data/sys.1531", - "data/AlMgCu/data/sys.1532", - "data/AlMgCu/data/sys.1533", - "data/AlMgCu/data/sys.1534", - "data/AlMgCu/data/sys.1535", - "data/AlMgCu/data/sys.1536", - "data/AlMgCu/data/sys.1537", - "data/AlMgCu/data/sys.1538", - "data/AlMgCu/data/sys.1539", - "data/AlMgCu/data/sys.154", - "data/AlMgCu/data/sys.1540", - "data/AlMgCu/data/sys.1541", - "data/AlMgCu/data/sys.1542", - "data/AlMgCu/data/sys.1543", - "data/AlMgCu/data/sys.1544", - "data/AlMgCu/data/sys.1545", - "data/AlMgCu/data/sys.1546", - "data/AlMgCu/data/sys.1547", - "data/AlMgCu/data/sys.1548", - "data/AlMgCu/data/sys.1549", - "data/AlMgCu/data/sys.155", - "data/AlMgCu/data/sys.1550", - "data/AlMgCu/data/sys.1551", - "data/AlMgCu/data/sys.1552", - "data/AlMgCu/data/sys.1554", - "data/AlMgCu/data/sys.1555", - "data/AlMgCu/data/sys.1556", - "data/AlMgCu/data/sys.1557", - "data/AlMgCu/data/sys.1558", - "data/AlMgCu/data/sys.1559", - "data/AlMgCu/data/sys.156", - "data/AlMgCu/data/sys.1560", - "data/AlMgCu/data/sys.1561", - "data/AlMgCu/data/sys.1562", - "data/AlMgCu/data/sys.1563", - "data/AlMgCu/data/sys.1564", - "data/AlMgCu/data/sys.1565", - "data/AlMgCu/data/sys.1566", - "data/AlMgCu/data/sys.1567", - "data/AlMgCu/data/sys.1568", - "data/AlMgCu/data/sys.1569", - "data/AlMgCu/data/sys.157", - "data/AlMgCu/data/sys.1570", - "data/AlMgCu/data/sys.1571", - "data/AlMgCu/data/sys.1572", - "data/AlMgCu/data/sys.1573", - "data/AlMgCu/data/sys.1574", - "data/AlMgCu/data/sys.1575", - "data/AlMgCu/data/sys.1576", - "data/AlMgCu/data/sys.1578", - "data/AlMgCu/data/sys.1579", - "data/AlMgCu/data/sys.158", - "data/AlMgCu/data/sys.1580", - "data/AlMgCu/data/sys.1581", - "data/AlMgCu/data/sys.1582", - "data/AlMgCu/data/sys.1583", - "data/AlMgCu/data/sys.1585", - "data/AlMgCu/data/sys.1586", - "data/AlMgCu/data/sys.1587", - "data/AlMgCu/data/sys.1588", - "data/AlMgCu/data/sys.1589", - "data/AlMgCu/data/sys.159", - "data/AlMgCu/data/sys.1590", - "data/AlMgCu/data/sys.1591", - "data/AlMgCu/data/sys.1592", - "data/AlMgCu/data/sys.1594", - "data/AlMgCu/data/sys.1595", - "data/AlMgCu/data/sys.1596", - "data/AlMgCu/data/sys.1597", - "data/AlMgCu/data/sys.1598", - "data/AlMgCu/data/sys.1599", - "data/AlMgCu/data/sys.160", - "data/AlMgCu/data/sys.1600", - "data/AlMgCu/data/sys.1602", - "data/AlMgCu/data/sys.1604", - "data/AlMgCu/data/sys.1605", - "data/AlMgCu/data/sys.1606", - "data/AlMgCu/data/sys.1608", - "data/AlMgCu/data/sys.1609", - "data/AlMgCu/data/sys.161", - "data/AlMgCu/data/sys.1610", - "data/AlMgCu/data/sys.1611", - "data/AlMgCu/data/sys.1612", - "data/AlMgCu/data/sys.1613", - "data/AlMgCu/data/sys.1614", - "data/AlMgCu/data/sys.1615", - "data/AlMgCu/data/sys.1616", - "data/AlMgCu/data/sys.1617", - "data/AlMgCu/data/sys.1618", - "data/AlMgCu/data/sys.1619", - "data/AlMgCu/data/sys.162", - "data/AlMgCu/data/sys.1620", - "data/AlMgCu/data/sys.1621", - "data/AlMgCu/data/sys.1622", - "data/AlMgCu/data/sys.1623", - "data/AlMgCu/data/sys.1624", - "data/AlMgCu/data/sys.1625", - "data/AlMgCu/data/sys.1626", - "data/AlMgCu/data/sys.1627", - "data/AlMgCu/data/sys.1629", - "data/AlMgCu/data/sys.163", - "data/AlMgCu/data/sys.1630", - "data/AlMgCu/data/sys.1632", - "data/AlMgCu/data/sys.1633", - "data/AlMgCu/data/sys.1634", - "data/AlMgCu/data/sys.1635", - "data/AlMgCu/data/sys.1636", - "data/AlMgCu/data/sys.1637", - "data/AlMgCu/data/sys.1638", - "data/AlMgCu/data/sys.1639", - "data/AlMgCu/data/sys.164", - "data/AlMgCu/data/sys.1640", - "data/AlMgCu/data/sys.1641", - "data/AlMgCu/data/sys.1642", - "data/AlMgCu/data/sys.1643", - "data/AlMgCu/data/sys.1644", - "data/AlMgCu/data/sys.1645", - "data/AlMgCu/data/sys.1646", - "data/AlMgCu/data/sys.1648", - "data/AlMgCu/data/sys.1649", - "data/AlMgCu/data/sys.165", - "data/AlMgCu/data/sys.1652", - "data/AlMgCu/data/sys.1653", - "data/AlMgCu/data/sys.1654", - "data/AlMgCu/data/sys.1655", - "data/AlMgCu/data/sys.1656", - "data/AlMgCu/data/sys.1657", - "data/AlMgCu/data/sys.1658", - "data/AlMgCu/data/sys.1659", - "data/AlMgCu/data/sys.166", - "data/AlMgCu/data/sys.1660", - "data/AlMgCu/data/sys.1662", - "data/AlMgCu/data/sys.1663", - "data/AlMgCu/data/sys.1664", - "data/AlMgCu/data/sys.1665", - "data/AlMgCu/data/sys.1666", - "data/AlMgCu/data/sys.1667", - "data/AlMgCu/data/sys.1669", - "data/AlMgCu/data/sys.167", - "data/AlMgCu/data/sys.1670", - "data/AlMgCu/data/sys.1672", - "data/AlMgCu/data/sys.1673", - "data/AlMgCu/data/sys.1674", - "data/AlMgCu/data/sys.1675", - "data/AlMgCu/data/sys.1676", - "data/AlMgCu/data/sys.1677", - "data/AlMgCu/data/sys.1678", - "data/AlMgCu/data/sys.168", - "data/AlMgCu/data/sys.1680", - "data/AlMgCu/data/sys.1681", - "data/AlMgCu/data/sys.1682", - "data/AlMgCu/data/sys.1685", - "data/AlMgCu/data/sys.1686", - "data/AlMgCu/data/sys.1689", - "data/AlMgCu/data/sys.169", - "data/AlMgCu/data/sys.1691", - "data/AlMgCu/data/sys.1692", - "data/AlMgCu/data/sys.1693", - "data/AlMgCu/data/sys.1694", - "data/AlMgCu/data/sys.1695", - "data/AlMgCu/data/sys.1696", - "data/AlMgCu/data/sys.1697", - "data/AlMgCu/data/sys.1698", - "data/AlMgCu/data/sys.1699", - "data/AlMgCu/data/sys.170", - "data/AlMgCu/data/sys.1700", - "data/AlMgCu/data/sys.1701", - "data/AlMgCu/data/sys.1703", - "data/AlMgCu/data/sys.1705", - "data/AlMgCu/data/sys.1706", - "data/AlMgCu/data/sys.1707", - "data/AlMgCu/data/sys.1708", - "data/AlMgCu/data/sys.1709", - "data/AlMgCu/data/sys.171", - "data/AlMgCu/data/sys.1710", - "data/AlMgCu/data/sys.1712", - "data/AlMgCu/data/sys.1713", - "data/AlMgCu/data/sys.1714", - "data/AlMgCu/data/sys.1715", - "data/AlMgCu/data/sys.1716", - "data/AlMgCu/data/sys.1717", - "data/AlMgCu/data/sys.1718", - "data/AlMgCu/data/sys.1720", - "data/AlMgCu/data/sys.1721", - "data/AlMgCu/data/sys.1722", - "data/AlMgCu/data/sys.1723", - "data/AlMgCu/data/sys.1724", - "data/AlMgCu/data/sys.1725", - "data/AlMgCu/data/sys.1726", - "data/AlMgCu/data/sys.1727", - "data/AlMgCu/data/sys.1728", - "data/AlMgCu/data/sys.1729", - "data/AlMgCu/data/sys.173", - "data/AlMgCu/data/sys.1730", - "data/AlMgCu/data/sys.1731", - "data/AlMgCu/data/sys.1732", - "data/AlMgCu/data/sys.1733", - "data/AlMgCu/data/sys.1734", - "data/AlMgCu/data/sys.1735", - "data/AlMgCu/data/sys.1736", - "data/AlMgCu/data/sys.1737", - "data/AlMgCu/data/sys.1738", - "data/AlMgCu/data/sys.1739", - "data/AlMgCu/data/sys.174", - "data/AlMgCu/data/sys.1740", - "data/AlMgCu/data/sys.1741", - "data/AlMgCu/data/sys.1742", - "data/AlMgCu/data/sys.1743", - "data/AlMgCu/data/sys.1744", - "data/AlMgCu/data/sys.1745", - "data/AlMgCu/data/sys.1746", - "data/AlMgCu/data/sys.1747", - "data/AlMgCu/data/sys.1748", - "data/AlMgCu/data/sys.1749", - "data/AlMgCu/data/sys.175", - "data/AlMgCu/data/sys.1751", - "data/AlMgCu/data/sys.1752", - "data/AlMgCu/data/sys.1754", - "data/AlMgCu/data/sys.1755", - "data/AlMgCu/data/sys.1756", - "data/AlMgCu/data/sys.1757", - "data/AlMgCu/data/sys.1758", - "data/AlMgCu/data/sys.1759", - "data/AlMgCu/data/sys.1760", - "data/AlMgCu/data/sys.1761", - "data/AlMgCu/data/sys.1762", - "data/AlMgCu/data/sys.1763", - "data/AlMgCu/data/sys.1764", - "data/AlMgCu/data/sys.1765", - "data/AlMgCu/data/sys.1766", - "data/AlMgCu/data/sys.1767", - "data/AlMgCu/data/sys.1768", - "data/AlMgCu/data/sys.1769", - "data/AlMgCu/data/sys.177", - "data/AlMgCu/data/sys.1770", - "data/AlMgCu/data/sys.1771", - "data/AlMgCu/data/sys.1772", - "data/AlMgCu/data/sys.1773", - "data/AlMgCu/data/sys.1774", - "data/AlMgCu/data/sys.1775", - "data/AlMgCu/data/sys.1776", - "data/AlMgCu/data/sys.1777", - "data/AlMgCu/data/sys.1778", - "data/AlMgCu/data/sys.1779", - "data/AlMgCu/data/sys.178", - "data/AlMgCu/data/sys.1780", - "data/AlMgCu/data/sys.1781", - "data/AlMgCu/data/sys.1782", - "data/AlMgCu/data/sys.1783", - "data/AlMgCu/data/sys.1784", - "data/AlMgCu/data/sys.1785", - "data/AlMgCu/data/sys.1786", - "data/AlMgCu/data/sys.1787", - "data/AlMgCu/data/sys.1789", - "data/AlMgCu/data/sys.179", - "data/AlMgCu/data/sys.1790", - "data/AlMgCu/data/sys.1791", - "data/AlMgCu/data/sys.1792", - "data/AlMgCu/data/sys.1794", - "data/AlMgCu/data/sys.1795", - "data/AlMgCu/data/sys.1796", - "data/AlMgCu/data/sys.1797", - "data/AlMgCu/data/sys.1798", - "data/AlMgCu/data/sys.1799", - "data/AlMgCu/data/sys.180", - "data/AlMgCu/data/sys.1800", - "data/AlMgCu/data/sys.1801", - "data/AlMgCu/data/sys.1802", - "data/AlMgCu/data/sys.1805", - "data/AlMgCu/data/sys.1806", - "data/AlMgCu/data/sys.1807", - "data/AlMgCu/data/sys.1808", - "data/AlMgCu/data/sys.1809", - "data/AlMgCu/data/sys.181", - "data/AlMgCu/data/sys.1811", - "data/AlMgCu/data/sys.1812", - "data/AlMgCu/data/sys.1813", - "data/AlMgCu/data/sys.1814", - "data/AlMgCu/data/sys.1815", - "data/AlMgCu/data/sys.1816", - "data/AlMgCu/data/sys.1817", - "data/AlMgCu/data/sys.1818", - "data/AlMgCu/data/sys.1819", - "data/AlMgCu/data/sys.182", - "data/AlMgCu/data/sys.1820", - "data/AlMgCu/data/sys.1821", - "data/AlMgCu/data/sys.1822", - "data/AlMgCu/data/sys.1823", - "data/AlMgCu/data/sys.1824", - "data/AlMgCu/data/sys.1826", - "data/AlMgCu/data/sys.1827", - "data/AlMgCu/data/sys.1828", - "data/AlMgCu/data/sys.183", - "data/AlMgCu/data/sys.1831", - "data/AlMgCu/data/sys.1832", - "data/AlMgCu/data/sys.1833", - "data/AlMgCu/data/sys.1834", - "data/AlMgCu/data/sys.1835", - "data/AlMgCu/data/sys.1836", - "data/AlMgCu/data/sys.1837", - "data/AlMgCu/data/sys.1838", - "data/AlMgCu/data/sys.1839", - "data/AlMgCu/data/sys.184", - "data/AlMgCu/data/sys.1840", - "data/AlMgCu/data/sys.1842", - "data/AlMgCu/data/sys.1843", - "data/AlMgCu/data/sys.1845", - "data/AlMgCu/data/sys.1846", - "data/AlMgCu/data/sys.1847", - "data/AlMgCu/data/sys.1848", - "data/AlMgCu/data/sys.1849", - "data/AlMgCu/data/sys.185", - "data/AlMgCu/data/sys.1850", - "data/AlMgCu/data/sys.1852", - "data/AlMgCu/data/sys.1853", - "data/AlMgCu/data/sys.1854", - "data/AlMgCu/data/sys.1855", - "data/AlMgCu/data/sys.1856", - "data/AlMgCu/data/sys.1857", - "data/AlMgCu/data/sys.1858", - "data/AlMgCu/data/sys.1859", - "data/AlMgCu/data/sys.186", - "data/AlMgCu/data/sys.1860", - "data/AlMgCu/data/sys.1861", - "data/AlMgCu/data/sys.1862", - "data/AlMgCu/data/sys.1863", - "data/AlMgCu/data/sys.1864", - "data/AlMgCu/data/sys.1865", - "data/AlMgCu/data/sys.1866", - "data/AlMgCu/data/sys.1867", - "data/AlMgCu/data/sys.1868", - "data/AlMgCu/data/sys.1869", - "data/AlMgCu/data/sys.187", - "data/AlMgCu/data/sys.1870", - "data/AlMgCu/data/sys.1872", - "data/AlMgCu/data/sys.1874", - "data/AlMgCu/data/sys.1875", - "data/AlMgCu/data/sys.1876", - "data/AlMgCu/data/sys.1877", - "data/AlMgCu/data/sys.1878", - "data/AlMgCu/data/sys.1879", - "data/AlMgCu/data/sys.188", - "data/AlMgCu/data/sys.1880", - "data/AlMgCu/data/sys.1882", - "data/AlMgCu/data/sys.1883", - "data/AlMgCu/data/sys.1884", - "data/AlMgCu/data/sys.1885", - "data/AlMgCu/data/sys.1886", - "data/AlMgCu/data/sys.1887", - "data/AlMgCu/data/sys.1888", - "data/AlMgCu/data/sys.1889", - "data/AlMgCu/data/sys.189", - "data/AlMgCu/data/sys.1890", - "data/AlMgCu/data/sys.1891", - "data/AlMgCu/data/sys.1892", - "data/AlMgCu/data/sys.1893", - "data/AlMgCu/data/sys.1894", - "data/AlMgCu/data/sys.1895", - "data/AlMgCu/data/sys.1896", - "data/AlMgCu/data/sys.1897", - "data/AlMgCu/data/sys.1898", - "data/AlMgCu/data/sys.1899", - "data/AlMgCu/data/sys.190", - "data/AlMgCu/data/sys.1900", - "data/AlMgCu/data/sys.1902", - "data/AlMgCu/data/sys.1903", - "data/AlMgCu/data/sys.1904", - "data/AlMgCu/data/sys.1905", - "data/AlMgCu/data/sys.1906", - "data/AlMgCu/data/sys.1907", - "data/AlMgCu/data/sys.1908", - "data/AlMgCu/data/sys.1909", - "data/AlMgCu/data/sys.191", - "data/AlMgCu/data/sys.1910", - "data/AlMgCu/data/sys.1911", - "data/AlMgCu/data/sys.1912", - "data/AlMgCu/data/sys.1913", - "data/AlMgCu/data/sys.1914", - "data/AlMgCu/data/sys.1915", - "data/AlMgCu/data/sys.1916", - "data/AlMgCu/data/sys.1918", - "data/AlMgCu/data/sys.1919", - "data/AlMgCu/data/sys.192", - "data/AlMgCu/data/sys.1920", - "data/AlMgCu/data/sys.1922", - "data/AlMgCu/data/sys.1923", - "data/AlMgCu/data/sys.1924", - "data/AlMgCu/data/sys.1925", - "data/AlMgCu/data/sys.1926", - "data/AlMgCu/data/sys.1927", - "data/AlMgCu/data/sys.1928", - "data/AlMgCu/data/sys.1929", - "data/AlMgCu/data/sys.193", - "data/AlMgCu/data/sys.1930", - "data/AlMgCu/data/sys.1931", - "data/AlMgCu/data/sys.1933", - "data/AlMgCu/data/sys.1935", - "data/AlMgCu/data/sys.1936", - "data/AlMgCu/data/sys.1938", - "data/AlMgCu/data/sys.1939", - "data/AlMgCu/data/sys.1940", - "data/AlMgCu/data/sys.1941", - "data/AlMgCu/data/sys.1942", - "data/AlMgCu/data/sys.1943", - "data/AlMgCu/data/sys.1944", - "data/AlMgCu/data/sys.1946", - "data/AlMgCu/data/sys.1947", - "data/AlMgCu/data/sys.1948", - "data/AlMgCu/data/sys.1949", - "data/AlMgCu/data/sys.195", - "data/AlMgCu/data/sys.1951", - "data/AlMgCu/data/sys.1952", - "data/AlMgCu/data/sys.1953", - "data/AlMgCu/data/sys.1954", - "data/AlMgCu/data/sys.1955", - "data/AlMgCu/data/sys.1956", - "data/AlMgCu/data/sys.1957", - "data/AlMgCu/data/sys.1958", - "data/AlMgCu/data/sys.1959", - "data/AlMgCu/data/sys.196", - "data/AlMgCu/data/sys.1960", - "data/AlMgCu/data/sys.1961", - "data/AlMgCu/data/sys.1962", - "data/AlMgCu/data/sys.1963", - "data/AlMgCu/data/sys.1964", - "data/AlMgCu/data/sys.1965", - "data/AlMgCu/data/sys.1966", - "data/AlMgCu/data/sys.1967", - "data/AlMgCu/data/sys.1968", - "data/AlMgCu/data/sys.197", - "data/AlMgCu/data/sys.1970", - "data/AlMgCu/data/sys.1971", - "data/AlMgCu/data/sys.1972", - "data/AlMgCu/data/sys.1973", - "data/AlMgCu/data/sys.1974", - "data/AlMgCu/data/sys.1975", - "data/AlMgCu/data/sys.1977", - "data/AlMgCu/data/sys.1979", - "data/AlMgCu/data/sys.198", - "data/AlMgCu/data/sys.1980", - "data/AlMgCu/data/sys.1981", - "data/AlMgCu/data/sys.1982", - "data/AlMgCu/data/sys.1983", - "data/AlMgCu/data/sys.1984", - "data/AlMgCu/data/sys.1985", - "data/AlMgCu/data/sys.1986", - "data/AlMgCu/data/sys.1987", - "data/AlMgCu/data/sys.1988", - "data/AlMgCu/data/sys.1989", - "data/AlMgCu/data/sys.199", - "data/AlMgCu/data/sys.1990", - "data/AlMgCu/data/sys.1991", - "data/AlMgCu/data/sys.1992", - "data/AlMgCu/data/sys.1993", - "data/AlMgCu/data/sys.1994", - "data/AlMgCu/data/sys.1995", - "data/AlMgCu/data/sys.1996", - "data/AlMgCu/data/sys.1997", - "data/AlMgCu/data/sys.1998", - "data/AlMgCu/data/sys.1999", - "data/AlMgCu/data/sys.200", - "data/AlMgCu/data/sys.2000", - "data/AlMgCu/data/sys.2001", - "data/AlMgCu/data/sys.2002", - "data/AlMgCu/data/sys.2003", - "data/AlMgCu/data/sys.2004", - "data/AlMgCu/data/sys.2005", - "data/AlMgCu/data/sys.2007", - "data/AlMgCu/data/sys.2009", - "data/AlMgCu/data/sys.201", - "data/AlMgCu/data/sys.2011", - "data/AlMgCu/data/sys.2012", - "data/AlMgCu/data/sys.2013", - "data/AlMgCu/data/sys.2014", - "data/AlMgCu/data/sys.2015", - "data/AlMgCu/data/sys.2016", - "data/AlMgCu/data/sys.2017", - "data/AlMgCu/data/sys.2018", - "data/AlMgCu/data/sys.202", - "data/AlMgCu/data/sys.2020", - "data/AlMgCu/data/sys.2022", - "data/AlMgCu/data/sys.2023", - "data/AlMgCu/data/sys.2024", - "data/AlMgCu/data/sys.2025", - "data/AlMgCu/data/sys.2027", - "data/AlMgCu/data/sys.2028", - "data/AlMgCu/data/sys.2029", - "data/AlMgCu/data/sys.203", - "data/AlMgCu/data/sys.2030", - "data/AlMgCu/data/sys.2031", - "data/AlMgCu/data/sys.2032", - "data/AlMgCu/data/sys.2033", - "data/AlMgCu/data/sys.2034", - "data/AlMgCu/data/sys.2035", - "data/AlMgCu/data/sys.2036", - "data/AlMgCu/data/sys.2037", - "data/AlMgCu/data/sys.2038", - "data/AlMgCu/data/sys.2039", - "data/AlMgCu/data/sys.204", - "data/AlMgCu/data/sys.2040", - "data/AlMgCu/data/sys.2041", - "data/AlMgCu/data/sys.2042", - "data/AlMgCu/data/sys.2043", - "data/AlMgCu/data/sys.2044", - "data/AlMgCu/data/sys.2046", - "data/AlMgCu/data/sys.2047", - "data/AlMgCu/data/sys.2048", - "data/AlMgCu/data/sys.2050", - "data/AlMgCu/data/sys.2051", - "data/AlMgCu/data/sys.2052", - "data/AlMgCu/data/sys.2053", - "data/AlMgCu/data/sys.2054", - "data/AlMgCu/data/sys.2055", - "data/AlMgCu/data/sys.2056", - "data/AlMgCu/data/sys.2057", - "data/AlMgCu/data/sys.2058", - "data/AlMgCu/data/sys.2059", - "data/AlMgCu/data/sys.206", - "data/AlMgCu/data/sys.2060", - "data/AlMgCu/data/sys.2061", - "data/AlMgCu/data/sys.2062", - "data/AlMgCu/data/sys.2063", - "data/AlMgCu/data/sys.2064", - "data/AlMgCu/data/sys.2065", - "data/AlMgCu/data/sys.2066", - "data/AlMgCu/data/sys.2067", - "data/AlMgCu/data/sys.2068", - "data/AlMgCu/data/sys.2069", - "data/AlMgCu/data/sys.2070", - "data/AlMgCu/data/sys.2071", - "data/AlMgCu/data/sys.2072", - "data/AlMgCu/data/sys.2073", - "data/AlMgCu/data/sys.2074", - "data/AlMgCu/data/sys.2075", - "data/AlMgCu/data/sys.2078", - "data/AlMgCu/data/sys.2079", - "data/AlMgCu/data/sys.208", - "data/AlMgCu/data/sys.2080", - "data/AlMgCu/data/sys.2081", - "data/AlMgCu/data/sys.2082", - "data/AlMgCu/data/sys.2083", - "data/AlMgCu/data/sys.2084", - "data/AlMgCu/data/sys.2085", - "data/AlMgCu/data/sys.2086", - "data/AlMgCu/data/sys.2087", - "data/AlMgCu/data/sys.2088", - "data/AlMgCu/data/sys.2089", - "data/AlMgCu/data/sys.209", - "data/AlMgCu/data/sys.2090", - "data/AlMgCu/data/sys.2091", - "data/AlMgCu/data/sys.2092", - "data/AlMgCu/data/sys.2093", - "data/AlMgCu/data/sys.2094", - "data/AlMgCu/data/sys.2095", - "data/AlMgCu/data/sys.2096", - "data/AlMgCu/data/sys.2097", - "data/AlMgCu/data/sys.2098", - "data/AlMgCu/data/sys.2099", - "data/AlMgCu/data/sys.210", - "data/AlMgCu/data/sys.2100", - "data/AlMgCu/data/sys.2101", - "data/AlMgCu/data/sys.2102", - "data/AlMgCu/data/sys.2103", - "data/AlMgCu/data/sys.2104", - "data/AlMgCu/data/sys.2105", - "data/AlMgCu/data/sys.2106", - "data/AlMgCu/data/sys.2107", - "data/AlMgCu/data/sys.2108", - "data/AlMgCu/data/sys.2109", - "data/AlMgCu/data/sys.211", - "data/AlMgCu/data/sys.2110", - "data/AlMgCu/data/sys.2111", - "data/AlMgCu/data/sys.2112", - "data/AlMgCu/data/sys.2113", - "data/AlMgCu/data/sys.2114", - "data/AlMgCu/data/sys.2116", - "data/AlMgCu/data/sys.2117", - "data/AlMgCu/data/sys.2118", - "data/AlMgCu/data/sys.2119", - "data/AlMgCu/data/sys.212", - "data/AlMgCu/data/sys.2120", - "data/AlMgCu/data/sys.2121", - "data/AlMgCu/data/sys.2123", - "data/AlMgCu/data/sys.2124", - "data/AlMgCu/data/sys.2125", - "data/AlMgCu/data/sys.2126", - "data/AlMgCu/data/sys.2127", - "data/AlMgCu/data/sys.2129", - "data/AlMgCu/data/sys.213", - "data/AlMgCu/data/sys.2130", - "data/AlMgCu/data/sys.2132", - "data/AlMgCu/data/sys.2133", - "data/AlMgCu/data/sys.2134", - "data/AlMgCu/data/sys.2136", - "data/AlMgCu/data/sys.2137", - "data/AlMgCu/data/sys.2138", - "data/AlMgCu/data/sys.2139", - "data/AlMgCu/data/sys.214", - "data/AlMgCu/data/sys.2140", - "data/AlMgCu/data/sys.2141", - "data/AlMgCu/data/sys.2142", - "data/AlMgCu/data/sys.2143", - "data/AlMgCu/data/sys.2144", - "data/AlMgCu/data/sys.2145", - "data/AlMgCu/data/sys.2146", - "data/AlMgCu/data/sys.2147", - "data/AlMgCu/data/sys.2148", - "data/AlMgCu/data/sys.215", - "data/AlMgCu/data/sys.2150", - "data/AlMgCu/data/sys.2151", - "data/AlMgCu/data/sys.2152", - "data/AlMgCu/data/sys.2153", - "data/AlMgCu/data/sys.2154", - "data/AlMgCu/data/sys.2156", - "data/AlMgCu/data/sys.2157", - "data/AlMgCu/data/sys.2158", - "data/AlMgCu/data/sys.216", - "data/AlMgCu/data/sys.2160", - "data/AlMgCu/data/sys.2161", - "data/AlMgCu/data/sys.2162", - "data/AlMgCu/data/sys.2163", - "data/AlMgCu/data/sys.2164", - "data/AlMgCu/data/sys.2165", - "data/AlMgCu/data/sys.2166", - "data/AlMgCu/data/sys.2167", - "data/AlMgCu/data/sys.2168", - "data/AlMgCu/data/sys.2169", - "data/AlMgCu/data/sys.217", - "data/AlMgCu/data/sys.2170", - "data/AlMgCu/data/sys.2174", - "data/AlMgCu/data/sys.2176", - "data/AlMgCu/data/sys.2177", - "data/AlMgCu/data/sys.2178", - "data/AlMgCu/data/sys.2179", - "data/AlMgCu/data/sys.218", - "data/AlMgCu/data/sys.2180", - "data/AlMgCu/data/sys.2181", - "data/AlMgCu/data/sys.2182", - "data/AlMgCu/data/sys.2184", - "data/AlMgCu/data/sys.2185", - "data/AlMgCu/data/sys.2186", - "data/AlMgCu/data/sys.2187", - "data/AlMgCu/data/sys.2188", - "data/AlMgCu/data/sys.2189", - "data/AlMgCu/data/sys.2190", - "data/AlMgCu/data/sys.2191", - "data/AlMgCu/data/sys.2194", - "data/AlMgCu/data/sys.2195", - "data/AlMgCu/data/sys.2196", - "data/AlMgCu/data/sys.2197", - "data/AlMgCu/data/sys.2198", - "data/AlMgCu/data/sys.2199", - "data/AlMgCu/data/sys.220", - "data/AlMgCu/data/sys.2201", - "data/AlMgCu/data/sys.2202", - "data/AlMgCu/data/sys.2203", - "data/AlMgCu/data/sys.2204", - "data/AlMgCu/data/sys.2205", - "data/AlMgCu/data/sys.2207", - "data/AlMgCu/data/sys.2208", - "data/AlMgCu/data/sys.2209", - "data/AlMgCu/data/sys.221", - "data/AlMgCu/data/sys.2210", - "data/AlMgCu/data/sys.2211", - "data/AlMgCu/data/sys.2212", - "data/AlMgCu/data/sys.2213", - "data/AlMgCu/data/sys.2214", - "data/AlMgCu/data/sys.2215", - "data/AlMgCu/data/sys.2216", - "data/AlMgCu/data/sys.2217", - "data/AlMgCu/data/sys.2218", - "data/AlMgCu/data/sys.2219", - "data/AlMgCu/data/sys.222", - "data/AlMgCu/data/sys.2220", - "data/AlMgCu/data/sys.2221", - "data/AlMgCu/data/sys.2222", - "data/AlMgCu/data/sys.2223", - "data/AlMgCu/data/sys.2224", - "data/AlMgCu/data/sys.2225", - "data/AlMgCu/data/sys.2226", - "data/AlMgCu/data/sys.2227", - "data/AlMgCu/data/sys.2228", - "data/AlMgCu/data/sys.2229", - "data/AlMgCu/data/sys.223", - "data/AlMgCu/data/sys.2230", - "data/AlMgCu/data/sys.2231", - "data/AlMgCu/data/sys.2233", - "data/AlMgCu/data/sys.2234", - "data/AlMgCu/data/sys.2235", - "data/AlMgCu/data/sys.2236", - "data/AlMgCu/data/sys.2237", - "data/AlMgCu/data/sys.2238", - "data/AlMgCu/data/sys.2239", - "data/AlMgCu/data/sys.224", - "data/AlMgCu/data/sys.2240", - "data/AlMgCu/data/sys.2241", - "data/AlMgCu/data/sys.2242", - "data/AlMgCu/data/sys.2243", - "data/AlMgCu/data/sys.2244", - "data/AlMgCu/data/sys.2245", - "data/AlMgCu/data/sys.2246", - "data/AlMgCu/data/sys.2247", - "data/AlMgCu/data/sys.2248", - "data/AlMgCu/data/sys.2249", - "data/AlMgCu/data/sys.225", - "data/AlMgCu/data/sys.2250", - "data/AlMgCu/data/sys.2252", - "data/AlMgCu/data/sys.2253", - "data/AlMgCu/data/sys.2254", - "data/AlMgCu/data/sys.2255", - "data/AlMgCu/data/sys.2256", - "data/AlMgCu/data/sys.2257", - "data/AlMgCu/data/sys.2258", - "data/AlMgCu/data/sys.2259", - "data/AlMgCu/data/sys.226", - "data/AlMgCu/data/sys.2260", - "data/AlMgCu/data/sys.2261", - "data/AlMgCu/data/sys.2263", - "data/AlMgCu/data/sys.2264", - "data/AlMgCu/data/sys.2266", - "data/AlMgCu/data/sys.2267", - "data/AlMgCu/data/sys.227", - "data/AlMgCu/data/sys.2270", - "data/AlMgCu/data/sys.2271", - "data/AlMgCu/data/sys.2272", - "data/AlMgCu/data/sys.2275", - "data/AlMgCu/data/sys.2276", - "data/AlMgCu/data/sys.2278", - "data/AlMgCu/data/sys.2279", - "data/AlMgCu/data/sys.228", - "data/AlMgCu/data/sys.2280", - "data/AlMgCu/data/sys.2282", - "data/AlMgCu/data/sys.2284", - "data/AlMgCu/data/sys.2286", - "data/AlMgCu/data/sys.2288", - "data/AlMgCu/data/sys.2289", - "data/AlMgCu/data/sys.229", - "data/AlMgCu/data/sys.2290", - "data/AlMgCu/data/sys.2291", - "data/AlMgCu/data/sys.2292", - "data/AlMgCu/data/sys.2294", - "data/AlMgCu/data/sys.2295", - "data/AlMgCu/data/sys.2296", - "data/AlMgCu/data/sys.2297", - "data/AlMgCu/data/sys.2298", - "data/AlMgCu/data/sys.230", - "data/AlMgCu/data/sys.2300", - "data/AlMgCu/data/sys.2301", - "data/AlMgCu/data/sys.2302", - "data/AlMgCu/data/sys.2303", - "data/AlMgCu/data/sys.2304", - "data/AlMgCu/data/sys.2305", - "data/AlMgCu/data/sys.2306", - "data/AlMgCu/data/sys.2307", - "data/AlMgCu/data/sys.2308", - "data/AlMgCu/data/sys.2309", - "data/AlMgCu/data/sys.2310", - "data/AlMgCu/data/sys.2311", - "data/AlMgCu/data/sys.2312", - "data/AlMgCu/data/sys.2314", - "data/AlMgCu/data/sys.2316", - "data/AlMgCu/data/sys.2318", - "data/AlMgCu/data/sys.232", - "data/AlMgCu/data/sys.2320", - "data/AlMgCu/data/sys.2322", - "data/AlMgCu/data/sys.2323", - "data/AlMgCu/data/sys.2324", - "data/AlMgCu/data/sys.2327", - "data/AlMgCu/data/sys.2328", - "data/AlMgCu/data/sys.2329", - "data/AlMgCu/data/sys.233", - "data/AlMgCu/data/sys.2330", - "data/AlMgCu/data/sys.2331", - "data/AlMgCu/data/sys.2332", - "data/AlMgCu/data/sys.2333", - "data/AlMgCu/data/sys.2334", - "data/AlMgCu/data/sys.2335", - "data/AlMgCu/data/sys.2336", - "data/AlMgCu/data/sys.2338", - "data/AlMgCu/data/sys.2339", - "data/AlMgCu/data/sys.234", - "data/AlMgCu/data/sys.2340", - "data/AlMgCu/data/sys.2341", - "data/AlMgCu/data/sys.2342", - "data/AlMgCu/data/sys.2343", - "data/AlMgCu/data/sys.2344", - "data/AlMgCu/data/sys.2345", - "data/AlMgCu/data/sys.2346", - "data/AlMgCu/data/sys.2348", - "data/AlMgCu/data/sys.235", - "data/AlMgCu/data/sys.2350", - "data/AlMgCu/data/sys.2351", - "data/AlMgCu/data/sys.2352", - "data/AlMgCu/data/sys.2353", - "data/AlMgCu/data/sys.2354", - "data/AlMgCu/data/sys.2356", - "data/AlMgCu/data/sys.2357", - "data/AlMgCu/data/sys.2358", - "data/AlMgCu/data/sys.2359", - "data/AlMgCu/data/sys.236", - "data/AlMgCu/data/sys.2360", - "data/AlMgCu/data/sys.2362", - "data/AlMgCu/data/sys.2363", - "data/AlMgCu/data/sys.2364", - "data/AlMgCu/data/sys.2367", - "data/AlMgCu/data/sys.2369", - "data/AlMgCu/data/sys.237", - "data/AlMgCu/data/sys.2371", - "data/AlMgCu/data/sys.2372", - "data/AlMgCu/data/sys.2374", - "data/AlMgCu/data/sys.2375", - "data/AlMgCu/data/sys.2376", - "data/AlMgCu/data/sys.2377", - "data/AlMgCu/data/sys.2378", - "data/AlMgCu/data/sys.2379", - "data/AlMgCu/data/sys.238", - "data/AlMgCu/data/sys.2380", - "data/AlMgCu/data/sys.2382", - "data/AlMgCu/data/sys.2383", - "data/AlMgCu/data/sys.2384", - "data/AlMgCu/data/sys.2386", - "data/AlMgCu/data/sys.2387", - "data/AlMgCu/data/sys.2388", - "data/AlMgCu/data/sys.2390", - "data/AlMgCu/data/sys.2392", - "data/AlMgCu/data/sys.2393", - "data/AlMgCu/data/sys.2394", - "data/AlMgCu/data/sys.2395", - "data/AlMgCu/data/sys.2396", - "data/AlMgCu/data/sys.2397", - "data/AlMgCu/data/sys.2398", - "data/AlMgCu/data/sys.2399", - "data/AlMgCu/data/sys.240", - "data/AlMgCu/data/sys.2400", - "data/AlMgCu/data/sys.2401", - "data/AlMgCu/data/sys.2402", - "data/AlMgCu/data/sys.2403", - "data/AlMgCu/data/sys.2405", - "data/AlMgCu/data/sys.2406", - "data/AlMgCu/data/sys.2407", - "data/AlMgCu/data/sys.2408", - "data/AlMgCu/data/sys.241", - "data/AlMgCu/data/sys.2410", - "data/AlMgCu/data/sys.2411", - "data/AlMgCu/data/sys.2412", - "data/AlMgCu/data/sys.2414", - "data/AlMgCu/data/sys.2415", - "data/AlMgCu/data/sys.2419", - "data/AlMgCu/data/sys.242", - "data/AlMgCu/data/sys.2420", - "data/AlMgCu/data/sys.2422", - "data/AlMgCu/data/sys.2423", - "data/AlMgCu/data/sys.2424", - "data/AlMgCu/data/sys.2426", - "data/AlMgCu/data/sys.2427", - "data/AlMgCu/data/sys.2428", - "data/AlMgCu/data/sys.243", - "data/AlMgCu/data/sys.2430", - "data/AlMgCu/data/sys.2431", - "data/AlMgCu/data/sys.2432", - "data/AlMgCu/data/sys.2433", - "data/AlMgCu/data/sys.2434", - "data/AlMgCu/data/sys.2435", - "data/AlMgCu/data/sys.2436", - "data/AlMgCu/data/sys.2437", - "data/AlMgCu/data/sys.2438", - "data/AlMgCu/data/sys.2439", - "data/AlMgCu/data/sys.244", - "data/AlMgCu/data/sys.2440", - "data/AlMgCu/data/sys.2441", - "data/AlMgCu/data/sys.2444", - "data/AlMgCu/data/sys.2447", - "data/AlMgCu/data/sys.2448", - "data/AlMgCu/data/sys.245", - "data/AlMgCu/data/sys.2450", - "data/AlMgCu/data/sys.2451", - "data/AlMgCu/data/sys.2452", - "data/AlMgCu/data/sys.2454", - "data/AlMgCu/data/sys.2455", - "data/AlMgCu/data/sys.2456", - "data/AlMgCu/data/sys.2458", - "data/AlMgCu/data/sys.2459", - "data/AlMgCu/data/sys.246", - "data/AlMgCu/data/sys.2460", - "data/AlMgCu/data/sys.2461", - "data/AlMgCu/data/sys.2462", - "data/AlMgCu/data/sys.2463", - "data/AlMgCu/data/sys.2464", - "data/AlMgCu/data/sys.2466", - "data/AlMgCu/data/sys.2467", - "data/AlMgCu/data/sys.2468", - "data/AlMgCu/data/sys.247", - "data/AlMgCu/data/sys.2470", - "data/AlMgCu/data/sys.2471", - "data/AlMgCu/data/sys.2474", - "data/AlMgCu/data/sys.2476", - "data/AlMgCu/data/sys.2477", - "data/AlMgCu/data/sys.2478", - "data/AlMgCu/data/sys.2479", - "data/AlMgCu/data/sys.248", - "data/AlMgCu/data/sys.2480", - "data/AlMgCu/data/sys.2482", - "data/AlMgCu/data/sys.2483", - "data/AlMgCu/data/sys.2484", - "data/AlMgCu/data/sys.2485", - "data/AlMgCu/data/sys.2486", - "data/AlMgCu/data/sys.2488", - "data/AlMgCu/data/sys.249", - "data/AlMgCu/data/sys.2490", - "data/AlMgCu/data/sys.2492", - "data/AlMgCu/data/sys.2494", - "data/AlMgCu/data/sys.2495", - "data/AlMgCu/data/sys.2496", - "data/AlMgCu/data/sys.2497", - "data/AlMgCu/data/sys.2498", - "data/AlMgCu/data/sys.2499", - "data/AlMgCu/data/sys.250", - "data/AlMgCu/data/sys.2501", - "data/AlMgCu/data/sys.2503", - "data/AlMgCu/data/sys.2504", - "data/AlMgCu/data/sys.2508", - "data/AlMgCu/data/sys.2509", - "data/AlMgCu/data/sys.251", - "data/AlMgCu/data/sys.2511", - "data/AlMgCu/data/sys.2512", - "data/AlMgCu/data/sys.2514", - "data/AlMgCu/data/sys.2515", - "data/AlMgCu/data/sys.2516", - "data/AlMgCu/data/sys.2517", - "data/AlMgCu/data/sys.2518", - "data/AlMgCu/data/sys.2519", - "data/AlMgCu/data/sys.252", - "data/AlMgCu/data/sys.2520", - "data/AlMgCu/data/sys.2522", - "data/AlMgCu/data/sys.2523", - "data/AlMgCu/data/sys.2524", - "data/AlMgCu/data/sys.2526", - "data/AlMgCu/data/sys.2527", - "data/AlMgCu/data/sys.2528", - "data/AlMgCu/data/sys.2529", - "data/AlMgCu/data/sys.253", - "data/AlMgCu/data/sys.2530", - "data/AlMgCu/data/sys.2531", - "data/AlMgCu/data/sys.2532", - "data/AlMgCu/data/sys.2534", - "data/AlMgCu/data/sys.2535", - "data/AlMgCu/data/sys.2536", - "data/AlMgCu/data/sys.2537", - "data/AlMgCu/data/sys.2538", - "data/AlMgCu/data/sys.2539", - "data/AlMgCu/data/sys.254", - "data/AlMgCu/data/sys.2540", - "data/AlMgCu/data/sys.2542", - "data/AlMgCu/data/sys.2543", - "data/AlMgCu/data/sys.2544", - "data/AlMgCu/data/sys.2545", - "data/AlMgCu/data/sys.2546", - "data/AlMgCu/data/sys.2548", - "data/AlMgCu/data/sys.255", - "data/AlMgCu/data/sys.2550", - "data/AlMgCu/data/sys.2551", - "data/AlMgCu/data/sys.2554", - "data/AlMgCu/data/sys.2556", - "data/AlMgCu/data/sys.2558", - "data/AlMgCu/data/sys.256", - "data/AlMgCu/data/sys.2560", - "data/AlMgCu/data/sys.2561", - "data/AlMgCu/data/sys.2562", - "data/AlMgCu/data/sys.2563", - "data/AlMgCu/data/sys.2564", - "data/AlMgCu/data/sys.2566", - "data/AlMgCu/data/sys.2567", - "data/AlMgCu/data/sys.2568", - "data/AlMgCu/data/sys.2569", - "data/AlMgCu/data/sys.257", - "data/AlMgCu/data/sys.2570", - "data/AlMgCu/data/sys.2571", - "data/AlMgCu/data/sys.2574", - "data/AlMgCu/data/sys.2575", - "data/AlMgCu/data/sys.2577", - "data/AlMgCu/data/sys.2578", - "data/AlMgCu/data/sys.2579", - "data/AlMgCu/data/sys.258", - "data/AlMgCu/data/sys.2580", - "data/AlMgCu/data/sys.2582", - "data/AlMgCu/data/sys.2583", - "data/AlMgCu/data/sys.2586", - "data/AlMgCu/data/sys.2587", - "data/AlMgCu/data/sys.2590", - "data/AlMgCu/data/sys.2591", - "data/AlMgCu/data/sys.2592", - "data/AlMgCu/data/sys.2593", - "data/AlMgCu/data/sys.2594", - "data/AlMgCu/data/sys.2595", - "data/AlMgCu/data/sys.2596", - "data/AlMgCu/data/sys.2598", - "data/AlMgCu/data/sys.2599", - "data/AlMgCu/data/sys.260", - "data/AlMgCu/data/sys.2600", - "data/AlMgCu/data/sys.2601", - "data/AlMgCu/data/sys.2602", - "data/AlMgCu/data/sys.2603", - "data/AlMgCu/data/sys.2604", - "data/AlMgCu/data/sys.2605", - "data/AlMgCu/data/sys.2606", - "data/AlMgCu/data/sys.2607", - "data/AlMgCu/data/sys.2608", - "data/AlMgCu/data/sys.2609", - "data/AlMgCu/data/sys.2610", - "data/AlMgCu/data/sys.2611", - "data/AlMgCu/data/sys.2613", - "data/AlMgCu/data/sys.2614", - "data/AlMgCu/data/sys.2615", - "data/AlMgCu/data/sys.2616", - "data/AlMgCu/data/sys.2618", - "data/AlMgCu/data/sys.2619", - "data/AlMgCu/data/sys.262", - "data/AlMgCu/data/sys.2620", - "data/AlMgCu/data/sys.2621", - "data/AlMgCu/data/sys.2622", - "data/AlMgCu/data/sys.2623", - "data/AlMgCu/data/sys.2624", - "data/AlMgCu/data/sys.2625", - "data/AlMgCu/data/sys.2626", - "data/AlMgCu/data/sys.2627", - "data/AlMgCu/data/sys.2628", - "data/AlMgCu/data/sys.2629", - "data/AlMgCu/data/sys.263", - "data/AlMgCu/data/sys.2630", - "data/AlMgCu/data/sys.2631", - "data/AlMgCu/data/sys.2632", - "data/AlMgCu/data/sys.2633", - "data/AlMgCu/data/sys.2634", - "data/AlMgCu/data/sys.2635", - "data/AlMgCu/data/sys.2636", - "data/AlMgCu/data/sys.2637", - "data/AlMgCu/data/sys.2638", - "data/AlMgCu/data/sys.2639", - "data/AlMgCu/data/sys.264", - "data/AlMgCu/data/sys.2640", - "data/AlMgCu/data/sys.2641", - "data/AlMgCu/data/sys.2642", - "data/AlMgCu/data/sys.2643", - "data/AlMgCu/data/sys.2645", - "data/AlMgCu/data/sys.2646", - "data/AlMgCu/data/sys.2647", - "data/AlMgCu/data/sys.2648", - "data/AlMgCu/data/sys.2649", - "data/AlMgCu/data/sys.265", - "data/AlMgCu/data/sys.2650", - "data/AlMgCu/data/sys.2651", - "data/AlMgCu/data/sys.2652", - "data/AlMgCu/data/sys.2653", - "data/AlMgCu/data/sys.2654", - "data/AlMgCu/data/sys.2655", - "data/AlMgCu/data/sys.2656", - "data/AlMgCu/data/sys.2657", - "data/AlMgCu/data/sys.2658", - "data/AlMgCu/data/sys.2659", - "data/AlMgCu/data/sys.266", - "data/AlMgCu/data/sys.2660", - "data/AlMgCu/data/sys.2661", - "data/AlMgCu/data/sys.2662", - "data/AlMgCu/data/sys.2663", - "data/AlMgCu/data/sys.2664", - "data/AlMgCu/data/sys.2665", - "data/AlMgCu/data/sys.2666", - "data/AlMgCu/data/sys.2667", - "data/AlMgCu/data/sys.2668", - "data/AlMgCu/data/sys.2669", - "data/AlMgCu/data/sys.267", - "data/AlMgCu/data/sys.2670", - "data/AlMgCu/data/sys.2671", - "data/AlMgCu/data/sys.2672", - "data/AlMgCu/data/sys.2673", - "data/AlMgCu/data/sys.2675", - "data/AlMgCu/data/sys.2676", - "data/AlMgCu/data/sys.2677", - "data/AlMgCu/data/sys.2679", - "data/AlMgCu/data/sys.268", - "data/AlMgCu/data/sys.2680", - "data/AlMgCu/data/sys.2681", - "data/AlMgCu/data/sys.2682", - "data/AlMgCu/data/sys.2683", - "data/AlMgCu/data/sys.2684", - "data/AlMgCu/data/sys.2685", - "data/AlMgCu/data/sys.269", - "data/AlMgCu/data/sys.2690", - "data/AlMgCu/data/sys.2691", - "data/AlMgCu/data/sys.2692", - "data/AlMgCu/data/sys.2693", - "data/AlMgCu/data/sys.2694", - "data/AlMgCu/data/sys.2695", - "data/AlMgCu/data/sys.2696", - "data/AlMgCu/data/sys.2697", - "data/AlMgCu/data/sys.2698", - "data/AlMgCu/data/sys.2699", - "data/AlMgCu/data/sys.270", - "data/AlMgCu/data/sys.2700", - "data/AlMgCu/data/sys.2701", - "data/AlMgCu/data/sys.2702", - "data/AlMgCu/data/sys.2703", - "data/AlMgCu/data/sys.2704", - "data/AlMgCu/data/sys.2706", - "data/AlMgCu/data/sys.2707", - "data/AlMgCu/data/sys.2708", - "data/AlMgCu/data/sys.2709", - "data/AlMgCu/data/sys.271", - "data/AlMgCu/data/sys.2710", - "data/AlMgCu/data/sys.2711", - "data/AlMgCu/data/sys.2712", - "data/AlMgCu/data/sys.2713", - "data/AlMgCu/data/sys.2715", - "data/AlMgCu/data/sys.2716", - "data/AlMgCu/data/sys.2717", - "data/AlMgCu/data/sys.2718", - "data/AlMgCu/data/sys.2719", - "data/AlMgCu/data/sys.272", - "data/AlMgCu/data/sys.2720", - "data/AlMgCu/data/sys.2721", - "data/AlMgCu/data/sys.2722", - "data/AlMgCu/data/sys.2723", - "data/AlMgCu/data/sys.2724", - "data/AlMgCu/data/sys.2725", - "data/AlMgCu/data/sys.2726", - "data/AlMgCu/data/sys.2727", - "data/AlMgCu/data/sys.2728", - "data/AlMgCu/data/sys.2729", - "data/AlMgCu/data/sys.273", - "data/AlMgCu/data/sys.2730", - "data/AlMgCu/data/sys.2731", - "data/AlMgCu/data/sys.2732", - "data/AlMgCu/data/sys.2733", - "data/AlMgCu/data/sys.2734", - "data/AlMgCu/data/sys.2735", - "data/AlMgCu/data/sys.2736", - "data/AlMgCu/data/sys.2737", - "data/AlMgCu/data/sys.2738", - "data/AlMgCu/data/sys.2739", - "data/AlMgCu/data/sys.274", - "data/AlMgCu/data/sys.2740", - "data/AlMgCu/data/sys.2741", - "data/AlMgCu/data/sys.2742", - "data/AlMgCu/data/sys.2743", - "data/AlMgCu/data/sys.2744", - "data/AlMgCu/data/sys.2745", - "data/AlMgCu/data/sys.2746", - "data/AlMgCu/data/sys.2747", - "data/AlMgCu/data/sys.2748", - "data/AlMgCu/data/sys.2749", - "data/AlMgCu/data/sys.275", - "data/AlMgCu/data/sys.2750", - "data/AlMgCu/data/sys.2751", - "data/AlMgCu/data/sys.2752", - "data/AlMgCu/data/sys.2753", - "data/AlMgCu/data/sys.2754", - "data/AlMgCu/data/sys.2755", - "data/AlMgCu/data/sys.2756", - "data/AlMgCu/data/sys.2757", - "data/AlMgCu/data/sys.2758", - "data/AlMgCu/data/sys.2759", - "data/AlMgCu/data/sys.276", - "data/AlMgCu/data/sys.2760", - "data/AlMgCu/data/sys.2761", - "data/AlMgCu/data/sys.2762", - "data/AlMgCu/data/sys.2764", - "data/AlMgCu/data/sys.2765", - "data/AlMgCu/data/sys.2766", - "data/AlMgCu/data/sys.2767", - "data/AlMgCu/data/sys.2768", - "data/AlMgCu/data/sys.2769", - "data/AlMgCu/data/sys.277", - "data/AlMgCu/data/sys.2770", - "data/AlMgCu/data/sys.2771", - "data/AlMgCu/data/sys.2773", - "data/AlMgCu/data/sys.2774", - "data/AlMgCu/data/sys.2776", - "data/AlMgCu/data/sys.2777", - "data/AlMgCu/data/sys.2778", - "data/AlMgCu/data/sys.2779", - "data/AlMgCu/data/sys.278", - "data/AlMgCu/data/sys.2780", - "data/AlMgCu/data/sys.2781", - "data/AlMgCu/data/sys.2782", - "data/AlMgCu/data/sys.2783", - "data/AlMgCu/data/sys.2784", - "data/AlMgCu/data/sys.2785", - "data/AlMgCu/data/sys.2787", - "data/AlMgCu/data/sys.2788", - "data/AlMgCu/data/sys.2789", - "data/AlMgCu/data/sys.279", - "data/AlMgCu/data/sys.2790", - "data/AlMgCu/data/sys.2791", - "data/AlMgCu/data/sys.2792", - "data/AlMgCu/data/sys.2793", - "data/AlMgCu/data/sys.2794", - "data/AlMgCu/data/sys.2795", - "data/AlMgCu/data/sys.2796", - "data/AlMgCu/data/sys.2797", - "data/AlMgCu/data/sys.2798", - "data/AlMgCu/data/sys.2799", - "data/AlMgCu/data/sys.280", - "data/AlMgCu/data/sys.2800", - "data/AlMgCu/data/sys.2801", - "data/AlMgCu/data/sys.2802", - "data/AlMgCu/data/sys.2803", - "data/AlMgCu/data/sys.2804", - "data/AlMgCu/data/sys.2805", - "data/AlMgCu/data/sys.2806", - "data/AlMgCu/data/sys.2807", - "data/AlMgCu/data/sys.2809", - "data/AlMgCu/data/sys.281", - "data/AlMgCu/data/sys.2810", - "data/AlMgCu/data/sys.2811", - "data/AlMgCu/data/sys.2812", - "data/AlMgCu/data/sys.2813", - "data/AlMgCu/data/sys.2814", - "data/AlMgCu/data/sys.2815", - "data/AlMgCu/data/sys.2816", - "data/AlMgCu/data/sys.2817", - "data/AlMgCu/data/sys.2818", - "data/AlMgCu/data/sys.2819", - "data/AlMgCu/data/sys.282", - "data/AlMgCu/data/sys.2820", - "data/AlMgCu/data/sys.2822", - "data/AlMgCu/data/sys.2824", - "data/AlMgCu/data/sys.2825", - "data/AlMgCu/data/sys.2826", - "data/AlMgCu/data/sys.2827", - "data/AlMgCu/data/sys.2828", - "data/AlMgCu/data/sys.2829", - "data/AlMgCu/data/sys.283", - "data/AlMgCu/data/sys.2830", - "data/AlMgCu/data/sys.2832", - "data/AlMgCu/data/sys.2833", - "data/AlMgCu/data/sys.2834", - "data/AlMgCu/data/sys.2835", - "data/AlMgCu/data/sys.2836", - "data/AlMgCu/data/sys.2837", - "data/AlMgCu/data/sys.2838", - "data/AlMgCu/data/sys.2839", - "data/AlMgCu/data/sys.284", - "data/AlMgCu/data/sys.2840", - "data/AlMgCu/data/sys.2841", - "data/AlMgCu/data/sys.2842", - "data/AlMgCu/data/sys.2843", - "data/AlMgCu/data/sys.2844", - "data/AlMgCu/data/sys.2845", - "data/AlMgCu/data/sys.2846", - "data/AlMgCu/data/sys.2847", - "data/AlMgCu/data/sys.2848", - "data/AlMgCu/data/sys.2849", - "data/AlMgCu/data/sys.285", - "data/AlMgCu/data/sys.2850", - "data/AlMgCu/data/sys.2851", - "data/AlMgCu/data/sys.2852", - "data/AlMgCu/data/sys.2853", - "data/AlMgCu/data/sys.2854", - "data/AlMgCu/data/sys.2855", - "data/AlMgCu/data/sys.2856", - "data/AlMgCu/data/sys.2858", - "data/AlMgCu/data/sys.2859", - "data/AlMgCu/data/sys.286", - "data/AlMgCu/data/sys.2860", - "data/AlMgCu/data/sys.2861", - "data/AlMgCu/data/sys.2862", - "data/AlMgCu/data/sys.2863", - "data/AlMgCu/data/sys.2864", - "data/AlMgCu/data/sys.2865", - "data/AlMgCu/data/sys.2866", - "data/AlMgCu/data/sys.2868", - "data/AlMgCu/data/sys.2869", - "data/AlMgCu/data/sys.287", - "data/AlMgCu/data/sys.2870", - "data/AlMgCu/data/sys.2871", - "data/AlMgCu/data/sys.2872", - "data/AlMgCu/data/sys.2873", - "data/AlMgCu/data/sys.2874", - "data/AlMgCu/data/sys.2875", - "data/AlMgCu/data/sys.2876", - "data/AlMgCu/data/sys.2877", - "data/AlMgCu/data/sys.2878", - "data/AlMgCu/data/sys.2879", - "data/AlMgCu/data/sys.288", - "data/AlMgCu/data/sys.2880", - "data/AlMgCu/data/sys.2881", - "data/AlMgCu/data/sys.2883", - "data/AlMgCu/data/sys.2884", - "data/AlMgCu/data/sys.2885", - "data/AlMgCu/data/sys.2886", - "data/AlMgCu/data/sys.2887", - "data/AlMgCu/data/sys.2888", - "data/AlMgCu/data/sys.2889", - "data/AlMgCu/data/sys.289", - "data/AlMgCu/data/sys.2890", - "data/AlMgCu/data/sys.2891", - "data/AlMgCu/data/sys.2893", - "data/AlMgCu/data/sys.2894", - "data/AlMgCu/data/sys.2895", - "data/AlMgCu/data/sys.2896", - "data/AlMgCu/data/sys.2898", - "data/AlMgCu/data/sys.2899", - "data/AlMgCu/data/sys.2900", - "data/AlMgCu/data/sys.2901", - "data/AlMgCu/data/sys.2902", - "data/AlMgCu/data/sys.2903", - "data/AlMgCu/data/sys.2904", - "data/AlMgCu/data/sys.2905", - "data/AlMgCu/data/sys.2906", - "data/AlMgCu/data/sys.2907", - "data/AlMgCu/data/sys.2908", - "data/AlMgCu/data/sys.2909", - "data/AlMgCu/data/sys.291", - "data/AlMgCu/data/sys.2911", - "data/AlMgCu/data/sys.2912", - "data/AlMgCu/data/sys.2913", - "data/AlMgCu/data/sys.2914", - "data/AlMgCu/data/sys.2915", - "data/AlMgCu/data/sys.2916", - "data/AlMgCu/data/sys.2917", - "data/AlMgCu/data/sys.2918", - "data/AlMgCu/data/sys.2919", - "data/AlMgCu/data/sys.292", - "data/AlMgCu/data/sys.2920", - "data/AlMgCu/data/sys.2922", - "data/AlMgCu/data/sys.2923", - "data/AlMgCu/data/sys.2924", - "data/AlMgCu/data/sys.2925", - "data/AlMgCu/data/sys.2926", - "data/AlMgCu/data/sys.2927", - "data/AlMgCu/data/sys.2928", - "data/AlMgCu/data/sys.2929", - "data/AlMgCu/data/sys.293", - "data/AlMgCu/data/sys.2930", - "data/AlMgCu/data/sys.2931", - "data/AlMgCu/data/sys.2932", - "data/AlMgCu/data/sys.2933", - "data/AlMgCu/data/sys.2934", - "data/AlMgCu/data/sys.2935", - "data/AlMgCu/data/sys.2936", - "data/AlMgCu/data/sys.2937", - "data/AlMgCu/data/sys.2939", - "data/AlMgCu/data/sys.294", - "data/AlMgCu/data/sys.2940", - "data/AlMgCu/data/sys.2942", - "data/AlMgCu/data/sys.2943", - "data/AlMgCu/data/sys.2946", - "data/AlMgCu/data/sys.2947", - "data/AlMgCu/data/sys.2948", - "data/AlMgCu/data/sys.295", - "data/AlMgCu/data/sys.2950", - "data/AlMgCu/data/sys.2951", - "data/AlMgCu/data/sys.2952", - "data/AlMgCu/data/sys.2954", - "data/AlMgCu/data/sys.2956", - "data/AlMgCu/data/sys.2957", - "data/AlMgCu/data/sys.2958", - "data/AlMgCu/data/sys.296", - "data/AlMgCu/data/sys.2960", - "data/AlMgCu/data/sys.2961", - "data/AlMgCu/data/sys.2962", - "data/AlMgCu/data/sys.2963", - "data/AlMgCu/data/sys.2964", - "data/AlMgCu/data/sys.2965", - "data/AlMgCu/data/sys.2967", - "data/AlMgCu/data/sys.2968", - "data/AlMgCu/data/sys.2969", - "data/AlMgCu/data/sys.297", - "data/AlMgCu/data/sys.2970", - "data/AlMgCu/data/sys.2972", - "data/AlMgCu/data/sys.2973", - "data/AlMgCu/data/sys.2974", - "data/AlMgCu/data/sys.2975", - "data/AlMgCu/data/sys.2976", - "data/AlMgCu/data/sys.2977", - "data/AlMgCu/data/sys.2978", - "data/AlMgCu/data/sys.298", - "data/AlMgCu/data/sys.2980", - "data/AlMgCu/data/sys.2982", - "data/AlMgCu/data/sys.2983", - "data/AlMgCu/data/sys.2984", - "data/AlMgCu/data/sys.2986", - "data/AlMgCu/data/sys.2987", - "data/AlMgCu/data/sys.2988", - "data/AlMgCu/data/sys.2989", - "data/AlMgCu/data/sys.299", - "data/AlMgCu/data/sys.2993", - "data/AlMgCu/data/sys.2995", - "data/AlMgCu/data/sys.2996", - "data/AlMgCu/data/sys.2998", - "data/AlMgCu/data/sys.2999", - "data/AlMgCu/data/sys.300", - "data/AlMgCu/data/sys.3000", - "data/AlMgCu/data/sys.3002", - "data/AlMgCu/data/sys.3003", - "data/AlMgCu/data/sys.3004", - "data/AlMgCu/data/sys.3006", - "data/AlMgCu/data/sys.3007", - "data/AlMgCu/data/sys.301", - "data/AlMgCu/data/sys.3010", - "data/AlMgCu/data/sys.3011", - "data/AlMgCu/data/sys.3012", - "data/AlMgCu/data/sys.3013", - "data/AlMgCu/data/sys.3014", - "data/AlMgCu/data/sys.3015", - "data/AlMgCu/data/sys.3016", - "data/AlMgCu/data/sys.3017", - "data/AlMgCu/data/sys.3018", - "data/AlMgCu/data/sys.3019", - "data/AlMgCu/data/sys.302", - "data/AlMgCu/data/sys.3020", - "data/AlMgCu/data/sys.3021", - "data/AlMgCu/data/sys.3022", - "data/AlMgCu/data/sys.3023", - "data/AlMgCu/data/sys.3024", - "data/AlMgCu/data/sys.3025", - "data/AlMgCu/data/sys.3026", - "data/AlMgCu/data/sys.3027", - "data/AlMgCu/data/sys.3028", - "data/AlMgCu/data/sys.303", - "data/AlMgCu/data/sys.3030", - "data/AlMgCu/data/sys.3031", - "data/AlMgCu/data/sys.3032", - "data/AlMgCu/data/sys.3033", - "data/AlMgCu/data/sys.3034", - "data/AlMgCu/data/sys.3035", - "data/AlMgCu/data/sys.3036", - "data/AlMgCu/data/sys.3038", - "data/AlMgCu/data/sys.3039", - "data/AlMgCu/data/sys.304", - "data/AlMgCu/data/sys.3040", - "data/AlMgCu/data/sys.3041", - "data/AlMgCu/data/sys.3042", - "data/AlMgCu/data/sys.3043", - "data/AlMgCu/data/sys.3044", - "data/AlMgCu/data/sys.3045", - "data/AlMgCu/data/sys.3046", - "data/AlMgCu/data/sys.3047", - "data/AlMgCu/data/sys.3048", - "data/AlMgCu/data/sys.3049", - "data/AlMgCu/data/sys.305", - "data/AlMgCu/data/sys.3050", - "data/AlMgCu/data/sys.3051", - "data/AlMgCu/data/sys.3052", - "data/AlMgCu/data/sys.3053", - "data/AlMgCu/data/sys.3054", - "data/AlMgCu/data/sys.3056", - "data/AlMgCu/data/sys.3057", - "data/AlMgCu/data/sys.3058", - "data/AlMgCu/data/sys.3059", - "data/AlMgCu/data/sys.306", - "data/AlMgCu/data/sys.3060", - "data/AlMgCu/data/sys.3061", - "data/AlMgCu/data/sys.3062", - "data/AlMgCu/data/sys.3063", - "data/AlMgCu/data/sys.3064", - "data/AlMgCu/data/sys.3065", - "data/AlMgCu/data/sys.3066", - "data/AlMgCu/data/sys.3067", - "data/AlMgCu/data/sys.3069", - "data/AlMgCu/data/sys.3070", - "data/AlMgCu/data/sys.3071", - "data/AlMgCu/data/sys.3073", - "data/AlMgCu/data/sys.3074", - "data/AlMgCu/data/sys.3075", - "data/AlMgCu/data/sys.3077", - "data/AlMgCu/data/sys.3078", - "data/AlMgCu/data/sys.3079", - "data/AlMgCu/data/sys.308", - "data/AlMgCu/data/sys.3080", - "data/AlMgCu/data/sys.3081", - "data/AlMgCu/data/sys.3082", - "data/AlMgCu/data/sys.3083", - "data/AlMgCu/data/sys.3084", - "data/AlMgCu/data/sys.3085", - "data/AlMgCu/data/sys.3086", - "data/AlMgCu/data/sys.3087", - "data/AlMgCu/data/sys.3088", - "data/AlMgCu/data/sys.309", - "data/AlMgCu/data/sys.3090", - "data/AlMgCu/data/sys.3091", - "data/AlMgCu/data/sys.3092", - "data/AlMgCu/data/sys.3093", - "data/AlMgCu/data/sys.3094", - "data/AlMgCu/data/sys.3095", - "data/AlMgCu/data/sys.3096", - "data/AlMgCu/data/sys.3097", - "data/AlMgCu/data/sys.3098", - "data/AlMgCu/data/sys.3099", - "data/AlMgCu/data/sys.3100", - "data/AlMgCu/data/sys.3101", - "data/AlMgCu/data/sys.3102", - "data/AlMgCu/data/sys.3103", - "data/AlMgCu/data/sys.3104", - "data/AlMgCu/data/sys.3106", - "data/AlMgCu/data/sys.3107", - "data/AlMgCu/data/sys.3108", - "data/AlMgCu/data/sys.3109", - "data/AlMgCu/data/sys.311", - "data/AlMgCu/data/sys.3110", - "data/AlMgCu/data/sys.3111", - "data/AlMgCu/data/sys.3112", - "data/AlMgCu/data/sys.3114", - "data/AlMgCu/data/sys.3115", - "data/AlMgCu/data/sys.3117", - "data/AlMgCu/data/sys.3118", - "data/AlMgCu/data/sys.3119", - "data/AlMgCu/data/sys.312", - "data/AlMgCu/data/sys.3120", - "data/AlMgCu/data/sys.3121", - "data/AlMgCu/data/sys.3123", - "data/AlMgCu/data/sys.3124", - "data/AlMgCu/data/sys.3125", - "data/AlMgCu/data/sys.3126", - "data/AlMgCu/data/sys.3127", - "data/AlMgCu/data/sys.3128", - "data/AlMgCu/data/sys.3129", - "data/AlMgCu/data/sys.313", - "data/AlMgCu/data/sys.3130", - "data/AlMgCu/data/sys.3131", - "data/AlMgCu/data/sys.3132", - "data/AlMgCu/data/sys.3133", - "data/AlMgCu/data/sys.3134", - "data/AlMgCu/data/sys.3135", - "data/AlMgCu/data/sys.3136", - "data/AlMgCu/data/sys.3138", - "data/AlMgCu/data/sys.3139", - "data/AlMgCu/data/sys.314", - "data/AlMgCu/data/sys.3142", - "data/AlMgCu/data/sys.3143", - "data/AlMgCu/data/sys.3144", - "data/AlMgCu/data/sys.3145", - "data/AlMgCu/data/sys.3146", - "data/AlMgCu/data/sys.3147", - "data/AlMgCu/data/sys.3148", - "data/AlMgCu/data/sys.3149", - "data/AlMgCu/data/sys.315", - "data/AlMgCu/data/sys.3150", - "data/AlMgCu/data/sys.3151", - "data/AlMgCu/data/sys.3153", - "data/AlMgCu/data/sys.3154", - "data/AlMgCu/data/sys.3155", - "data/AlMgCu/data/sys.3156", - "data/AlMgCu/data/sys.3157", - "data/AlMgCu/data/sys.3158", - "data/AlMgCu/data/sys.3159", - "data/AlMgCu/data/sys.316", - "data/AlMgCu/data/sys.3160", - "data/AlMgCu/data/sys.3161", - "data/AlMgCu/data/sys.3162", - "data/AlMgCu/data/sys.3163", - "data/AlMgCu/data/sys.3164", - "data/AlMgCu/data/sys.3165", - "data/AlMgCu/data/sys.3166", - "data/AlMgCu/data/sys.3167", - "data/AlMgCu/data/sys.3168", - "data/AlMgCu/data/sys.317", - "data/AlMgCu/data/sys.3170", - "data/AlMgCu/data/sys.3171", - "data/AlMgCu/data/sys.3172", - "data/AlMgCu/data/sys.3174", - "data/AlMgCu/data/sys.3175", - "data/AlMgCu/data/sys.3176", - "data/AlMgCu/data/sys.3177", - "data/AlMgCu/data/sys.3178", - "data/AlMgCu/data/sys.3179", - "data/AlMgCu/data/sys.318", - "data/AlMgCu/data/sys.3180", - "data/AlMgCu/data/sys.3181", - "data/AlMgCu/data/sys.3182", - "data/AlMgCu/data/sys.3183", - "data/AlMgCu/data/sys.3184", - "data/AlMgCu/data/sys.3185", - "data/AlMgCu/data/sys.3186", - "data/AlMgCu/data/sys.3187", - "data/AlMgCu/data/sys.3188", - "data/AlMgCu/data/sys.3189", - "data/AlMgCu/data/sys.3190", - "data/AlMgCu/data/sys.3191", - "data/AlMgCu/data/sys.3192", - "data/AlMgCu/data/sys.3193", - "data/AlMgCu/data/sys.3194", - "data/AlMgCu/data/sys.3195", - "data/AlMgCu/data/sys.3196", - "data/AlMgCu/data/sys.3198", - "data/AlMgCu/data/sys.3199", - "data/AlMgCu/data/sys.3200", - "data/AlMgCu/data/sys.3202", - "data/AlMgCu/data/sys.3203", - "data/AlMgCu/data/sys.3204", - "data/AlMgCu/data/sys.3205", - "data/AlMgCu/data/sys.3206", - "data/AlMgCu/data/sys.3207", - "data/AlMgCu/data/sys.3208", - "data/AlMgCu/data/sys.3209", - "data/AlMgCu/data/sys.321", - "data/AlMgCu/data/sys.3210", - "data/AlMgCu/data/sys.3211", - "data/AlMgCu/data/sys.3212", - "data/AlMgCu/data/sys.3213", - "data/AlMgCu/data/sys.3214", - "data/AlMgCu/data/sys.3215", - "data/AlMgCu/data/sys.3216", - "data/AlMgCu/data/sys.3217", - "data/AlMgCu/data/sys.3218", - "data/AlMgCu/data/sys.322", - "data/AlMgCu/data/sys.3220", - "data/AlMgCu/data/sys.3221", - "data/AlMgCu/data/sys.3222", - "data/AlMgCu/data/sys.3223", - "data/AlMgCu/data/sys.3224", - "data/AlMgCu/data/sys.3225", - "data/AlMgCu/data/sys.3226", - "data/AlMgCu/data/sys.3227", - "data/AlMgCu/data/sys.3228", - "data/AlMgCu/data/sys.3229", - "data/AlMgCu/data/sys.323", - "data/AlMgCu/data/sys.3230", - "data/AlMgCu/data/sys.3231", - "data/AlMgCu/data/sys.3232", - "data/AlMgCu/data/sys.3233", - "data/AlMgCu/data/sys.3235", - "data/AlMgCu/data/sys.3236", - "data/AlMgCu/data/sys.3237", - "data/AlMgCu/data/sys.3238", - "data/AlMgCu/data/sys.3239", - "data/AlMgCu/data/sys.3240", - "data/AlMgCu/data/sys.3241", - "data/AlMgCu/data/sys.3242", - "data/AlMgCu/data/sys.3243", - "data/AlMgCu/data/sys.3244", - "data/AlMgCu/data/sys.3245", - "data/AlMgCu/data/sys.3246", - "data/AlMgCu/data/sys.3247", - "data/AlMgCu/data/sys.3248", - "data/AlMgCu/data/sys.3249", - "data/AlMgCu/data/sys.325", - "data/AlMgCu/data/sys.3250", - "data/AlMgCu/data/sys.3251", - "data/AlMgCu/data/sys.3252", - "data/AlMgCu/data/sys.3253", - "data/AlMgCu/data/sys.3254", - "data/AlMgCu/data/sys.3255", - "data/AlMgCu/data/sys.3256", - "data/AlMgCu/data/sys.3257", - "data/AlMgCu/data/sys.3258", - "data/AlMgCu/data/sys.3259", - "data/AlMgCu/data/sys.326", - "data/AlMgCu/data/sys.3261", - "data/AlMgCu/data/sys.3263", - "data/AlMgCu/data/sys.3264", - "data/AlMgCu/data/sys.3265", - "data/AlMgCu/data/sys.3266", - "data/AlMgCu/data/sys.3267", - "data/AlMgCu/data/sys.3268", - "data/AlMgCu/data/sys.3269", - "data/AlMgCu/data/sys.327", - "data/AlMgCu/data/sys.3270", - "data/AlMgCu/data/sys.3272", - "data/AlMgCu/data/sys.3274", - "data/AlMgCu/data/sys.3275", - "data/AlMgCu/data/sys.3276", - "data/AlMgCu/data/sys.3277", - "data/AlMgCu/data/sys.3278", - "data/AlMgCu/data/sys.3279", - "data/AlMgCu/data/sys.3280", - "data/AlMgCu/data/sys.3282", - "data/AlMgCu/data/sys.3283", - "data/AlMgCu/data/sys.3284", - "data/AlMgCu/data/sys.3286", - "data/AlMgCu/data/sys.3287", - "data/AlMgCu/data/sys.3289", - "data/AlMgCu/data/sys.329", - "data/AlMgCu/data/sys.3290", - "data/AlMgCu/data/sys.3291", - "data/AlMgCu/data/sys.3292", - "data/AlMgCu/data/sys.3293", - "data/AlMgCu/data/sys.3294", - "data/AlMgCu/data/sys.3295", - "data/AlMgCu/data/sys.3296", - "data/AlMgCu/data/sys.3297", - "data/AlMgCu/data/sys.3298", - "data/AlMgCu/data/sys.3299", - "data/AlMgCu/data/sys.330", - "data/AlMgCu/data/sys.3300", - "data/AlMgCu/data/sys.3301", - "data/AlMgCu/data/sys.3302", - "data/AlMgCu/data/sys.3303", - "data/AlMgCu/data/sys.3304", - "data/AlMgCu/data/sys.3305", - "data/AlMgCu/data/sys.3306", - "data/AlMgCu/data/sys.3307", - "data/AlMgCu/data/sys.3308", - "data/AlMgCu/data/sys.3309", - "data/AlMgCu/data/sys.331", - "data/AlMgCu/data/sys.3310", - "data/AlMgCu/data/sys.3311", - "data/AlMgCu/data/sys.3312", - "data/AlMgCu/data/sys.3313", - "data/AlMgCu/data/sys.3314", - "data/AlMgCu/data/sys.3315", - "data/AlMgCu/data/sys.3316", - "data/AlMgCu/data/sys.3317", - "data/AlMgCu/data/sys.3318", - "data/AlMgCu/data/sys.3319", - "data/AlMgCu/data/sys.332", - "data/AlMgCu/data/sys.3320", - "data/AlMgCu/data/sys.3321", - "data/AlMgCu/data/sys.3322", - "data/AlMgCu/data/sys.3323", - "data/AlMgCu/data/sys.3325", - "data/AlMgCu/data/sys.3326", - "data/AlMgCu/data/sys.3327", - "data/AlMgCu/data/sys.3328", - "data/AlMgCu/data/sys.3329", - "data/AlMgCu/data/sys.333", - "data/AlMgCu/data/sys.3330", - "data/AlMgCu/data/sys.3331", - "data/AlMgCu/data/sys.3332", - "data/AlMgCu/data/sys.3333", - "data/AlMgCu/data/sys.3334", - "data/AlMgCu/data/sys.3335", - "data/AlMgCu/data/sys.3336", - "data/AlMgCu/data/sys.3337", - "data/AlMgCu/data/sys.3338", - "data/AlMgCu/data/sys.3339", - "data/AlMgCu/data/sys.334", - "data/AlMgCu/data/sys.3340", - "data/AlMgCu/data/sys.3341", - "data/AlMgCu/data/sys.3342", - "data/AlMgCu/data/sys.3343", - "data/AlMgCu/data/sys.3344", - "data/AlMgCu/data/sys.3345", - "data/AlMgCu/data/sys.3346", - "data/AlMgCu/data/sys.3347", - "data/AlMgCu/data/sys.3348", - "data/AlMgCu/data/sys.3349", - "data/AlMgCu/data/sys.335", - "data/AlMgCu/data/sys.3350", - "data/AlMgCu/data/sys.3351", - "data/AlMgCu/data/sys.3352", - "data/AlMgCu/data/sys.3353", - "data/AlMgCu/data/sys.3356", - "data/AlMgCu/data/sys.3357", - "data/AlMgCu/data/sys.3358", - "data/AlMgCu/data/sys.336", - "data/AlMgCu/data/sys.3360", - "data/AlMgCu/data/sys.3361", - "data/AlMgCu/data/sys.3362", - "data/AlMgCu/data/sys.3363", - "data/AlMgCu/data/sys.3365", - "data/AlMgCu/data/sys.3367", - "data/AlMgCu/data/sys.3368", - "data/AlMgCu/data/sys.3369", - "data/AlMgCu/data/sys.337", - "data/AlMgCu/data/sys.3370", - "data/AlMgCu/data/sys.3372", - "data/AlMgCu/data/sys.3374", - "data/AlMgCu/data/sys.3375", - "data/AlMgCu/data/sys.3376", - "data/AlMgCu/data/sys.3377", - "data/AlMgCu/data/sys.3378", - "data/AlMgCu/data/sys.3379", - "data/AlMgCu/data/sys.338", - "data/AlMgCu/data/sys.3380", - "data/AlMgCu/data/sys.3381", - "data/AlMgCu/data/sys.3382", - "data/AlMgCu/data/sys.3384", - "data/AlMgCu/data/sys.3385", - "data/AlMgCu/data/sys.3386", - "data/AlMgCu/data/sys.3387", - "data/AlMgCu/data/sys.3388", - "data/AlMgCu/data/sys.3389", - "data/AlMgCu/data/sys.339", - "data/AlMgCu/data/sys.3390", - "data/AlMgCu/data/sys.3391", - "data/AlMgCu/data/sys.3392", - "data/AlMgCu/data/sys.3393", - "data/AlMgCu/data/sys.3394", - "data/AlMgCu/data/sys.3395", - "data/AlMgCu/data/sys.3396", - "data/AlMgCu/data/sys.3397", - "data/AlMgCu/data/sys.3398", - "data/AlMgCu/data/sys.3399", - "data/AlMgCu/data/sys.340", - "data/AlMgCu/data/sys.3400", - "data/AlMgCu/data/sys.3401", - "data/AlMgCu/data/sys.3402", - "data/AlMgCu/data/sys.3404", - "data/AlMgCu/data/sys.3405", - "data/AlMgCu/data/sys.3406", - "data/AlMgCu/data/sys.3407", - "data/AlMgCu/data/sys.3408", - "data/AlMgCu/data/sys.3409", - "data/AlMgCu/data/sys.3410", - "data/AlMgCu/data/sys.3412", - "data/AlMgCu/data/sys.3413", - "data/AlMgCu/data/sys.3416", - "data/AlMgCu/data/sys.3417", - "data/AlMgCu/data/sys.3418", - "data/AlMgCu/data/sys.3419", - "data/AlMgCu/data/sys.342", - "data/AlMgCu/data/sys.3420", - "data/AlMgCu/data/sys.3421", - "data/AlMgCu/data/sys.3422", - "data/AlMgCu/data/sys.3423", - "data/AlMgCu/data/sys.3424", - "data/AlMgCu/data/sys.3425", - "data/AlMgCu/data/sys.3426", - "data/AlMgCu/data/sys.3427", - "data/AlMgCu/data/sys.3428", - "data/AlMgCu/data/sys.3429", - "data/AlMgCu/data/sys.343", - "data/AlMgCu/data/sys.3431", - "data/AlMgCu/data/sys.3432", - "data/AlMgCu/data/sys.3433", - "data/AlMgCu/data/sys.3434", - "data/AlMgCu/data/sys.3435", - "data/AlMgCu/data/sys.3436", - "data/AlMgCu/data/sys.3437", - "data/AlMgCu/data/sys.3438", - "data/AlMgCu/data/sys.3439", - "data/AlMgCu/data/sys.344", - "data/AlMgCu/data/sys.3441", - "data/AlMgCu/data/sys.3442", - "data/AlMgCu/data/sys.3443", - "data/AlMgCu/data/sys.3444", - "data/AlMgCu/data/sys.3445", - "data/AlMgCu/data/sys.3446", - "data/AlMgCu/data/sys.3448", - "data/AlMgCu/data/sys.345", - "data/AlMgCu/data/sys.3450", - "data/AlMgCu/data/sys.3451", - "data/AlMgCu/data/sys.3452", - "data/AlMgCu/data/sys.3453", - "data/AlMgCu/data/sys.3454", - "data/AlMgCu/data/sys.3455", - "data/AlMgCu/data/sys.3456", - "data/AlMgCu/data/sys.3457", - "data/AlMgCu/data/sys.3458", - "data/AlMgCu/data/sys.3459", - "data/AlMgCu/data/sys.346", - "data/AlMgCu/data/sys.3460", - "data/AlMgCu/data/sys.3461", - "data/AlMgCu/data/sys.3462", - "data/AlMgCu/data/sys.3463", - "data/AlMgCu/data/sys.3464", - "data/AlMgCu/data/sys.3465", - "data/AlMgCu/data/sys.3466", - "data/AlMgCu/data/sys.3467", - "data/AlMgCu/data/sys.3468", - "data/AlMgCu/data/sys.3469", - "data/AlMgCu/data/sys.3470", - "data/AlMgCu/data/sys.3471", - "data/AlMgCu/data/sys.3472", - "data/AlMgCu/data/sys.3473", - "data/AlMgCu/data/sys.3474", - "data/AlMgCu/data/sys.3475", - "data/AlMgCu/data/sys.3476", - "data/AlMgCu/data/sys.3477", - "data/AlMgCu/data/sys.3478", - "data/AlMgCu/data/sys.3479", - "data/AlMgCu/data/sys.348", - "data/AlMgCu/data/sys.3481", - "data/AlMgCu/data/sys.3482", - "data/AlMgCu/data/sys.3483", - "data/AlMgCu/data/sys.3484", - "data/AlMgCu/data/sys.3485", - "data/AlMgCu/data/sys.3486", - "data/AlMgCu/data/sys.3487", - "data/AlMgCu/data/sys.3488", - "data/AlMgCu/data/sys.3489", - "data/AlMgCu/data/sys.3490", - "data/AlMgCu/data/sys.3491", - "data/AlMgCu/data/sys.3492", - "data/AlMgCu/data/sys.3494", - "data/AlMgCu/data/sys.3496", - "data/AlMgCu/data/sys.3498", - "data/AlMgCu/data/sys.3499", - "data/AlMgCu/data/sys.350", - "data/AlMgCu/data/sys.3500", - "data/AlMgCu/data/sys.3502", - "data/AlMgCu/data/sys.3503", - "data/AlMgCu/data/sys.3504", - "data/AlMgCu/data/sys.3505", - "data/AlMgCu/data/sys.3507", - "data/AlMgCu/data/sys.3509", - "data/AlMgCu/data/sys.351", - "data/AlMgCu/data/sys.3510", - "data/AlMgCu/data/sys.3512", - "data/AlMgCu/data/sys.3513", - "data/AlMgCu/data/sys.3514", - "data/AlMgCu/data/sys.3516", - "data/AlMgCu/data/sys.3517", - "data/AlMgCu/data/sys.3518", - "data/AlMgCu/data/sys.3519", - "data/AlMgCu/data/sys.352", - "data/AlMgCu/data/sys.3520", - "data/AlMgCu/data/sys.3521", - "data/AlMgCu/data/sys.3522", - "data/AlMgCu/data/sys.3524", - "data/AlMgCu/data/sys.3525", - "data/AlMgCu/data/sys.3526", - "data/AlMgCu/data/sys.3528", - "data/AlMgCu/data/sys.3529", - "data/AlMgCu/data/sys.353", - "data/AlMgCu/data/sys.3530", - "data/AlMgCu/data/sys.3532", - "data/AlMgCu/data/sys.3534", - "data/AlMgCu/data/sys.3535", - "data/AlMgCu/data/sys.3536", - "data/AlMgCu/data/sys.3537", - "data/AlMgCu/data/sys.3538", - "data/AlMgCu/data/sys.3539", - "data/AlMgCu/data/sys.3540", - "data/AlMgCu/data/sys.3541", - "data/AlMgCu/data/sys.3542", - "data/AlMgCu/data/sys.3544", - "data/AlMgCu/data/sys.3545", - "data/AlMgCu/data/sys.3546", - "data/AlMgCu/data/sys.3547", - "data/AlMgCu/data/sys.3548", - "data/AlMgCu/data/sys.3549", - "data/AlMgCu/data/sys.355", - "data/AlMgCu/data/sys.3550", - "data/AlMgCu/data/sys.3552", - "data/AlMgCu/data/sys.3554", - "data/AlMgCu/data/sys.3556", - "data/AlMgCu/data/sys.3558", - "data/AlMgCu/data/sys.356", - "data/AlMgCu/data/sys.3560", - "data/AlMgCu/data/sys.3562", - "data/AlMgCu/data/sys.3564", - "data/AlMgCu/data/sys.3566", - "data/AlMgCu/data/sys.3568", - "data/AlMgCu/data/sys.357", - "data/AlMgCu/data/sys.3570", - "data/AlMgCu/data/sys.3572", - "data/AlMgCu/data/sys.3574", - "data/AlMgCu/data/sys.3576", - "data/AlMgCu/data/sys.3578", - "data/AlMgCu/data/sys.358", - "data/AlMgCu/data/sys.3580", - "data/AlMgCu/data/sys.3582", - "data/AlMgCu/data/sys.3583", - "data/AlMgCu/data/sys.3584", - "data/AlMgCu/data/sys.3586", - "data/AlMgCu/data/sys.3587", - "data/AlMgCu/data/sys.3588", - "data/AlMgCu/data/sys.3589", - "data/AlMgCu/data/sys.3590", - "data/AlMgCu/data/sys.3591", - "data/AlMgCu/data/sys.3592", - "data/AlMgCu/data/sys.3593", - "data/AlMgCu/data/sys.3594", - "data/AlMgCu/data/sys.3595", - "data/AlMgCu/data/sys.3596", - "data/AlMgCu/data/sys.3597", - "data/AlMgCu/data/sys.3598", - "data/AlMgCu/data/sys.360", - "data/AlMgCu/data/sys.3600", - "data/AlMgCu/data/sys.3601", - "data/AlMgCu/data/sys.3602", - "data/AlMgCu/data/sys.3603", - "data/AlMgCu/data/sys.3604", - "data/AlMgCu/data/sys.3605", - "data/AlMgCu/data/sys.3606", - "data/AlMgCu/data/sys.3607", - "data/AlMgCu/data/sys.3608", - "data/AlMgCu/data/sys.3609", - "data/AlMgCu/data/sys.361", - "data/AlMgCu/data/sys.3610", - "data/AlMgCu/data/sys.3611", - "data/AlMgCu/data/sys.3612", - "data/AlMgCu/data/sys.3613", - "data/AlMgCu/data/sys.3615", - "data/AlMgCu/data/sys.3616", - "data/AlMgCu/data/sys.3617", - "data/AlMgCu/data/sys.3618", - "data/AlMgCu/data/sys.3619", - "data/AlMgCu/data/sys.362", - "data/AlMgCu/data/sys.3620", - "data/AlMgCu/data/sys.3621", - "data/AlMgCu/data/sys.3622", - "data/AlMgCu/data/sys.3623", - "data/AlMgCu/data/sys.3624", - "data/AlMgCu/data/sys.3626", - "data/AlMgCu/data/sys.3628", - "data/AlMgCu/data/sys.3629", - "data/AlMgCu/data/sys.363", - "data/AlMgCu/data/sys.3630", - "data/AlMgCu/data/sys.3632", - "data/AlMgCu/data/sys.3633", - "data/AlMgCu/data/sys.3636", - "data/AlMgCu/data/sys.3638", - "data/AlMgCu/data/sys.3640", - "data/AlMgCu/data/sys.3641", - "data/AlMgCu/data/sys.3642", - "data/AlMgCu/data/sys.3644", - "data/AlMgCu/data/sys.3646", - "data/AlMgCu/data/sys.3648", - "data/AlMgCu/data/sys.365", - "data/AlMgCu/data/sys.3652", - "data/AlMgCu/data/sys.3653", - "data/AlMgCu/data/sys.3654", - "data/AlMgCu/data/sys.3655", - "data/AlMgCu/data/sys.3656", - "data/AlMgCu/data/sys.3657", - "data/AlMgCu/data/sys.3658", - "data/AlMgCu/data/sys.3659", - "data/AlMgCu/data/sys.366", - "data/AlMgCu/data/sys.3660", - "data/AlMgCu/data/sys.3661", - "data/AlMgCu/data/sys.3662", - "data/AlMgCu/data/sys.3663", - "data/AlMgCu/data/sys.3664", - "data/AlMgCu/data/sys.3665", - "data/AlMgCu/data/sys.3666", - "data/AlMgCu/data/sys.3667", - "data/AlMgCu/data/sys.3668", - "data/AlMgCu/data/sys.3669", - "data/AlMgCu/data/sys.367", - "data/AlMgCu/data/sys.3670", - "data/AlMgCu/data/sys.3671", - "data/AlMgCu/data/sys.3672", - "data/AlMgCu/data/sys.3673", - "data/AlMgCu/data/sys.3675", - "data/AlMgCu/data/sys.3676", - "data/AlMgCu/data/sys.3677", - "data/AlMgCu/data/sys.3678", - "data/AlMgCu/data/sys.368", - "data/AlMgCu/data/sys.3680", - "data/AlMgCu/data/sys.3681", - "data/AlMgCu/data/sys.3682", - "data/AlMgCu/data/sys.3684", - "data/AlMgCu/data/sys.3686", - "data/AlMgCu/data/sys.3688", - "data/AlMgCu/data/sys.369", - "data/AlMgCu/data/sys.3690", - "data/AlMgCu/data/sys.3692", - "data/AlMgCu/data/sys.3694", - "data/AlMgCu/data/sys.3696", - "data/AlMgCu/data/sys.3697", - "data/AlMgCu/data/sys.3698", - "data/AlMgCu/data/sys.3699", - "data/AlMgCu/data/sys.370", - "data/AlMgCu/data/sys.3700", - "data/AlMgCu/data/sys.3701", - "data/AlMgCu/data/sys.3702", - "data/AlMgCu/data/sys.3703", - "data/AlMgCu/data/sys.3704", - "data/AlMgCu/data/sys.3706", - "data/AlMgCu/data/sys.3707", - "data/AlMgCu/data/sys.3709", - "data/AlMgCu/data/sys.371", - "data/AlMgCu/data/sys.3710", - "data/AlMgCu/data/sys.3711", - "data/AlMgCu/data/sys.3712", - "data/AlMgCu/data/sys.3713", - "data/AlMgCu/data/sys.3714", - "data/AlMgCu/data/sys.3715", - "data/AlMgCu/data/sys.3716", - "data/AlMgCu/data/sys.3717", - "data/AlMgCu/data/sys.3718", - "data/AlMgCu/data/sys.3719", - "data/AlMgCu/data/sys.372", - "data/AlMgCu/data/sys.3720", - "data/AlMgCu/data/sys.3721", - "data/AlMgCu/data/sys.3722", - "data/AlMgCu/data/sys.3723", - "data/AlMgCu/data/sys.3724", - "data/AlMgCu/data/sys.3725", - "data/AlMgCu/data/sys.3726", - "data/AlMgCu/data/sys.3728", - "data/AlMgCu/data/sys.3729", - "data/AlMgCu/data/sys.373", - "data/AlMgCu/data/sys.3730", - "data/AlMgCu/data/sys.3731", - "data/AlMgCu/data/sys.3734", - "data/AlMgCu/data/sys.3735", - "data/AlMgCu/data/sys.3736", - "data/AlMgCu/data/sys.3737", - "data/AlMgCu/data/sys.3739", - "data/AlMgCu/data/sys.374", - "data/AlMgCu/data/sys.3740", - "data/AlMgCu/data/sys.3741", - "data/AlMgCu/data/sys.3742", - "data/AlMgCu/data/sys.3743", - "data/AlMgCu/data/sys.3744", - "data/AlMgCu/data/sys.3746", - "data/AlMgCu/data/sys.3747", - "data/AlMgCu/data/sys.3749", - "data/AlMgCu/data/sys.375", - "data/AlMgCu/data/sys.3750", - "data/AlMgCu/data/sys.3751", - "data/AlMgCu/data/sys.3752", - "data/AlMgCu/data/sys.3753", - "data/AlMgCu/data/sys.3754", - "data/AlMgCu/data/sys.3756", - "data/AlMgCu/data/sys.376", - "data/AlMgCu/data/sys.3760", - "data/AlMgCu/data/sys.3761", - "data/AlMgCu/data/sys.3762", - "data/AlMgCu/data/sys.3764", - "data/AlMgCu/data/sys.3765", - "data/AlMgCu/data/sys.3766", - "data/AlMgCu/data/sys.3768", - "data/AlMgCu/data/sys.3769", - "data/AlMgCu/data/sys.377", - "data/AlMgCu/data/sys.3770", - "data/AlMgCu/data/sys.3771", - "data/AlMgCu/data/sys.3772", - "data/AlMgCu/data/sys.3773", - "data/AlMgCu/data/sys.3774", - "data/AlMgCu/data/sys.3776", - "data/AlMgCu/data/sys.3777", - "data/AlMgCu/data/sys.3778", - "data/AlMgCu/data/sys.3779", - "data/AlMgCu/data/sys.378", - "data/AlMgCu/data/sys.3780", - "data/AlMgCu/data/sys.3781", - "data/AlMgCu/data/sys.3782", - "data/AlMgCu/data/sys.3784", - "data/AlMgCu/data/sys.3785", - "data/AlMgCu/data/sys.3786", - "data/AlMgCu/data/sys.3787", - "data/AlMgCu/data/sys.3788", - "data/AlMgCu/data/sys.3789", - "data/AlMgCu/data/sys.379", - "data/AlMgCu/data/sys.3790", - "data/AlMgCu/data/sys.3791", - "data/AlMgCu/data/sys.3792", - "data/AlMgCu/data/sys.3793", - "data/AlMgCu/data/sys.3794", - "data/AlMgCu/data/sys.3795", - "data/AlMgCu/data/sys.3796", - "data/AlMgCu/data/sys.3797", - "data/AlMgCu/data/sys.3798", - "data/AlMgCu/data/sys.3799", - "data/AlMgCu/data/sys.380", - "data/AlMgCu/data/sys.3800", - "data/AlMgCu/data/sys.3801", - "data/AlMgCu/data/sys.3802", - "data/AlMgCu/data/sys.3803", - "data/AlMgCu/data/sys.3804", - "data/AlMgCu/data/sys.3805", - "data/AlMgCu/data/sys.3806", - "data/AlMgCu/data/sys.3808", - "data/AlMgCu/data/sys.3809", - "data/AlMgCu/data/sys.381", - "data/AlMgCu/data/sys.3810", - "data/AlMgCu/data/sys.3811", - "data/AlMgCu/data/sys.3812", - "data/AlMgCu/data/sys.3813", - "data/AlMgCu/data/sys.3814", - "data/AlMgCu/data/sys.3816", - "data/AlMgCu/data/sys.3817", - "data/AlMgCu/data/sys.3818", - "data/AlMgCu/data/sys.3819", - "data/AlMgCu/data/sys.3820", - "data/AlMgCu/data/sys.3821", - "data/AlMgCu/data/sys.3822", - "data/AlMgCu/data/sys.3823", - "data/AlMgCu/data/sys.3824", - "data/AlMgCu/data/sys.3826", - "data/AlMgCu/data/sys.3828", - "data/AlMgCu/data/sys.3829", - "data/AlMgCu/data/sys.383", - "data/AlMgCu/data/sys.3830", - "data/AlMgCu/data/sys.3831", - "data/AlMgCu/data/sys.3832", - "data/AlMgCu/data/sys.3833", - "data/AlMgCu/data/sys.3834", - "data/AlMgCu/data/sys.3835", - "data/AlMgCu/data/sys.3836", - "data/AlMgCu/data/sys.3837", - "data/AlMgCu/data/sys.3838", - "data/AlMgCu/data/sys.3839", - "data/AlMgCu/data/sys.384", - "data/AlMgCu/data/sys.3840", - "data/AlMgCu/data/sys.3841", - "data/AlMgCu/data/sys.3842", - "data/AlMgCu/data/sys.3843", - "data/AlMgCu/data/sys.3844", - "data/AlMgCu/data/sys.3845", - "data/AlMgCu/data/sys.3846", - "data/AlMgCu/data/sys.3847", - "data/AlMgCu/data/sys.3849", - "data/AlMgCu/data/sys.385", - "data/AlMgCu/data/sys.3850", - "data/AlMgCu/data/sys.3851", - "data/AlMgCu/data/sys.3852", - "data/AlMgCu/data/sys.3853", - "data/AlMgCu/data/sys.3854", - "data/AlMgCu/data/sys.3855", - "data/AlMgCu/data/sys.3856", - "data/AlMgCu/data/sys.3857", - "data/AlMgCu/data/sys.3858", - "data/AlMgCu/data/sys.3859", - "data/AlMgCu/data/sys.386", - "data/AlMgCu/data/sys.3860", - "data/AlMgCu/data/sys.3861", - "data/AlMgCu/data/sys.3862", - "data/AlMgCu/data/sys.3863", - "data/AlMgCu/data/sys.3865", - "data/AlMgCu/data/sys.3866", - "data/AlMgCu/data/sys.3868", - "data/AlMgCu/data/sys.3869", - "data/AlMgCu/data/sys.387", - "data/AlMgCu/data/sys.3870", - "data/AlMgCu/data/sys.3872", - "data/AlMgCu/data/sys.3873", - "data/AlMgCu/data/sys.3874", - "data/AlMgCu/data/sys.3875", - "data/AlMgCu/data/sys.3876", - "data/AlMgCu/data/sys.3877", - "data/AlMgCu/data/sys.3879", - "data/AlMgCu/data/sys.388", - "data/AlMgCu/data/sys.3880", - "data/AlMgCu/data/sys.3881", - "data/AlMgCu/data/sys.3882", - "data/AlMgCu/data/sys.3885", - "data/AlMgCu/data/sys.3888", - "data/AlMgCu/data/sys.3889", - "data/AlMgCu/data/sys.389", - "data/AlMgCu/data/sys.3890", - "data/AlMgCu/data/sys.3891", - "data/AlMgCu/data/sys.3892", - "data/AlMgCu/data/sys.3893", - "data/AlMgCu/data/sys.3894", - "data/AlMgCu/data/sys.3895", - "data/AlMgCu/data/sys.3896", - "data/AlMgCu/data/sys.3898", - "data/AlMgCu/data/sys.3899", - "data/AlMgCu/data/sys.390", - "data/AlMgCu/data/sys.3900", - "data/AlMgCu/data/sys.3901", - "data/AlMgCu/data/sys.3902", - "data/AlMgCu/data/sys.3904", - "data/AlMgCu/data/sys.3905", - "data/AlMgCu/data/sys.3908", - "data/AlMgCu/data/sys.3909", - "data/AlMgCu/data/sys.391", - "data/AlMgCu/data/sys.3910", - "data/AlMgCu/data/sys.3912", - "data/AlMgCu/data/sys.3914", - "data/AlMgCu/data/sys.3915", - "data/AlMgCu/data/sys.3916", - "data/AlMgCu/data/sys.3917", - "data/AlMgCu/data/sys.3918", - "data/AlMgCu/data/sys.3920", - "data/AlMgCu/data/sys.3921", - "data/AlMgCu/data/sys.3922", - "data/AlMgCu/data/sys.3924", - "data/AlMgCu/data/sys.3926", - "data/AlMgCu/data/sys.3927", - "data/AlMgCu/data/sys.3929", - "data/AlMgCu/data/sys.393", - "data/AlMgCu/data/sys.3930", - "data/AlMgCu/data/sys.3933", - "data/AlMgCu/data/sys.3934", - "data/AlMgCu/data/sys.3935", - "data/AlMgCu/data/sys.3936", - "data/AlMgCu/data/sys.3937", - "data/AlMgCu/data/sys.3938", - "data/AlMgCu/data/sys.3940", - "data/AlMgCu/data/sys.3941", - "data/AlMgCu/data/sys.3942", - "data/AlMgCu/data/sys.3943", - "data/AlMgCu/data/sys.3944", - "data/AlMgCu/data/sys.3945", - "data/AlMgCu/data/sys.3946", - "data/AlMgCu/data/sys.3947", - "data/AlMgCu/data/sys.3948", - "data/AlMgCu/data/sys.3949", - "data/AlMgCu/data/sys.395", - "data/AlMgCu/data/sys.3950", - "data/AlMgCu/data/sys.3951", - "data/AlMgCu/data/sys.3952", - "data/AlMgCu/data/sys.3953", - "data/AlMgCu/data/sys.3954", - "data/AlMgCu/data/sys.3955", - "data/AlMgCu/data/sys.3956", - "data/AlMgCu/data/sys.3959", - "data/AlMgCu/data/sys.396", - "data/AlMgCu/data/sys.3961", - "data/AlMgCu/data/sys.3962", - "data/AlMgCu/data/sys.3963", - "data/AlMgCu/data/sys.3964", - "data/AlMgCu/data/sys.3965", - "data/AlMgCu/data/sys.3966", - "data/AlMgCu/data/sys.3967", - "data/AlMgCu/data/sys.3968", - "data/AlMgCu/data/sys.3969", - "data/AlMgCu/data/sys.397", - "data/AlMgCu/data/sys.3970", - "data/AlMgCu/data/sys.3971", - "data/AlMgCu/data/sys.3973", - "data/AlMgCu/data/sys.3975", - "data/AlMgCu/data/sys.3977", - "data/AlMgCu/data/sys.3978", - "data/AlMgCu/data/sys.3979", - "data/AlMgCu/data/sys.398", - "data/AlMgCu/data/sys.3980", - "data/AlMgCu/data/sys.3981", - "data/AlMgCu/data/sys.3982", - "data/AlMgCu/data/sys.3983", - "data/AlMgCu/data/sys.3984", - "data/AlMgCu/data/sys.3985", - "data/AlMgCu/data/sys.3986", - "data/AlMgCu/data/sys.3987", - "data/AlMgCu/data/sys.3988", - "data/AlMgCu/data/sys.3989", - "data/AlMgCu/data/sys.399", - "data/AlMgCu/data/sys.3990", - "data/AlMgCu/data/sys.3991", - "data/AlMgCu/data/sys.3992", - "data/AlMgCu/data/sys.3993", - "data/AlMgCu/data/sys.3994", - "data/AlMgCu/data/sys.3997", - "data/AlMgCu/data/sys.3999", - "data/AlMgCu/data/sys.400", - "data/AlMgCu/data/sys.4000", - "data/AlMgCu/data/sys.4001", - "data/AlMgCu/data/sys.4002", - "data/AlMgCu/data/sys.4003", - "data/AlMgCu/data/sys.4004", - "data/AlMgCu/data/sys.4005", - "data/AlMgCu/data/sys.4006", - "data/AlMgCu/data/sys.4007", - "data/AlMgCu/data/sys.4008", - "data/AlMgCu/data/sys.4009", - "data/AlMgCu/data/sys.401", - "data/AlMgCu/data/sys.4010", - "data/AlMgCu/data/sys.4011", - "data/AlMgCu/data/sys.4012", - "data/AlMgCu/data/sys.4013", - "data/AlMgCu/data/sys.4014", - "data/AlMgCu/data/sys.4015", - "data/AlMgCu/data/sys.4016", - "data/AlMgCu/data/sys.4017", - "data/AlMgCu/data/sys.4018", - "data/AlMgCu/data/sys.4019", - "data/AlMgCu/data/sys.402", - "data/AlMgCu/data/sys.4020", - "data/AlMgCu/data/sys.4021", - "data/AlMgCu/data/sys.4022", - "data/AlMgCu/data/sys.4023", - "data/AlMgCu/data/sys.4024", - "data/AlMgCu/data/sys.4026", - "data/AlMgCu/data/sys.4028", - "data/AlMgCu/data/sys.4029", - "data/AlMgCu/data/sys.403", - "data/AlMgCu/data/sys.4030", - "data/AlMgCu/data/sys.4031", - "data/AlMgCu/data/sys.4032", - "data/AlMgCu/data/sys.4033", - "data/AlMgCu/data/sys.4036", - "data/AlMgCu/data/sys.4037", - "data/AlMgCu/data/sys.4038", - "data/AlMgCu/data/sys.4039", - "data/AlMgCu/data/sys.404", - "data/AlMgCu/data/sys.4040", - "data/AlMgCu/data/sys.4041", - "data/AlMgCu/data/sys.4042", - "data/AlMgCu/data/sys.4044", - "data/AlMgCu/data/sys.4045", - "data/AlMgCu/data/sys.4046", - "data/AlMgCu/data/sys.4047", - "data/AlMgCu/data/sys.4048", - "data/AlMgCu/data/sys.4049", - "data/AlMgCu/data/sys.405", - "data/AlMgCu/data/sys.4050", - "data/AlMgCu/data/sys.4052", - "data/AlMgCu/data/sys.4054", - "data/AlMgCu/data/sys.4055", - "data/AlMgCu/data/sys.4056", - "data/AlMgCu/data/sys.4057", - "data/AlMgCu/data/sys.4058", - "data/AlMgCu/data/sys.4059", - "data/AlMgCu/data/sys.406", - "data/AlMgCu/data/sys.4060", - "data/AlMgCu/data/sys.4061", - "data/AlMgCu/data/sys.4062", - "data/AlMgCu/data/sys.4063", - "data/AlMgCu/data/sys.4066", - "data/AlMgCu/data/sys.4067", - "data/AlMgCu/data/sys.4068", - "data/AlMgCu/data/sys.4069", - "data/AlMgCu/data/sys.407", - "data/AlMgCu/data/sys.4070", - "data/AlMgCu/data/sys.4071", - "data/AlMgCu/data/sys.4072", - "data/AlMgCu/data/sys.4073", - "data/AlMgCu/data/sys.4074", - "data/AlMgCu/data/sys.4075", - "data/AlMgCu/data/sys.4076", - "data/AlMgCu/data/sys.4078", - "data/AlMgCu/data/sys.4079", - "data/AlMgCu/data/sys.408", - "data/AlMgCu/data/sys.4080", - "data/AlMgCu/data/sys.4081", - "data/AlMgCu/data/sys.4082", - "data/AlMgCu/data/sys.4083", - "data/AlMgCu/data/sys.4084", - "data/AlMgCu/data/sys.4085", - "data/AlMgCu/data/sys.4086", - "data/AlMgCu/data/sys.4087", - "data/AlMgCu/data/sys.4088", - "data/AlMgCu/data/sys.4089", - "data/AlMgCu/data/sys.409", - "data/AlMgCu/data/sys.4090", - "data/AlMgCu/data/sys.4091", - "data/AlMgCu/data/sys.4092", - "data/AlMgCu/data/sys.4093", - "data/AlMgCu/data/sys.4094", - "data/AlMgCu/data/sys.4095", - "data/AlMgCu/data/sys.4096", - "data/AlMgCu/data/sys.4097", - "data/AlMgCu/data/sys.4098", - "data/AlMgCu/data/sys.4099", - "data/AlMgCu/data/sys.410", - "data/AlMgCu/data/sys.4100", - "data/AlMgCu/data/sys.4101", - "data/AlMgCu/data/sys.4102", - "data/AlMgCu/data/sys.4104", - "data/AlMgCu/data/sys.4105", - "data/AlMgCu/data/sys.4106", - "data/AlMgCu/data/sys.4107", - "data/AlMgCu/data/sys.4108", - "data/AlMgCu/data/sys.411", - "data/AlMgCu/data/sys.4110", - "data/AlMgCu/data/sys.4111", - "data/AlMgCu/data/sys.4112", - "data/AlMgCu/data/sys.4113", - "data/AlMgCu/data/sys.4114", - "data/AlMgCu/data/sys.4115", - "data/AlMgCu/data/sys.4116", - "data/AlMgCu/data/sys.4117", - "data/AlMgCu/data/sys.4118", - "data/AlMgCu/data/sys.4119", - "data/AlMgCu/data/sys.412", - "data/AlMgCu/data/sys.4120", - "data/AlMgCu/data/sys.4121", - "data/AlMgCu/data/sys.4122", - "data/AlMgCu/data/sys.4125", - "data/AlMgCu/data/sys.4126", - "data/AlMgCu/data/sys.4127", - "data/AlMgCu/data/sys.4128", - "data/AlMgCu/data/sys.4129", - "data/AlMgCu/data/sys.413", - "data/AlMgCu/data/sys.4130", - "data/AlMgCu/data/sys.4131", - "data/AlMgCu/data/sys.4132", - "data/AlMgCu/data/sys.4133", - "data/AlMgCu/data/sys.4134", - "data/AlMgCu/data/sys.4135", - "data/AlMgCu/data/sys.4136", - "data/AlMgCu/data/sys.4137", - "data/AlMgCu/data/sys.4138", - "data/AlMgCu/data/sys.414", - "data/AlMgCu/data/sys.4140", - "data/AlMgCu/data/sys.4141", - "data/AlMgCu/data/sys.4142", - "data/AlMgCu/data/sys.4143", - "data/AlMgCu/data/sys.4144", - "data/AlMgCu/data/sys.4145", - "data/AlMgCu/data/sys.4146", - "data/AlMgCu/data/sys.4147", - "data/AlMgCu/data/sys.4148", - "data/AlMgCu/data/sys.4149", - "data/AlMgCu/data/sys.415", - "data/AlMgCu/data/sys.4150", - "data/AlMgCu/data/sys.4151", - "data/AlMgCu/data/sys.4152", - "data/AlMgCu/data/sys.4153", - "data/AlMgCu/data/sys.4154", - "data/AlMgCu/data/sys.4155", - "data/AlMgCu/data/sys.4157", - "data/AlMgCu/data/sys.4158", - "data/AlMgCu/data/sys.4159", - "data/AlMgCu/data/sys.416", - "data/AlMgCu/data/sys.4161", - "data/AlMgCu/data/sys.4162", - "data/AlMgCu/data/sys.4163", - "data/AlMgCu/data/sys.4164", - "data/AlMgCu/data/sys.4165", - "data/AlMgCu/data/sys.4166", - "data/AlMgCu/data/sys.4167", - "data/AlMgCu/data/sys.4168", - "data/AlMgCu/data/sys.4169", - "data/AlMgCu/data/sys.4170", - "data/AlMgCu/data/sys.4171", - "data/AlMgCu/data/sys.4172", - "data/AlMgCu/data/sys.4174", - "data/AlMgCu/data/sys.4175", - "data/AlMgCu/data/sys.4176", - "data/AlMgCu/data/sys.4177", - "data/AlMgCu/data/sys.4178", - "data/AlMgCu/data/sys.4180", - "data/AlMgCu/data/sys.4181", - "data/AlMgCu/data/sys.4182", - "data/AlMgCu/data/sys.4183", - "data/AlMgCu/data/sys.4184", - "data/AlMgCu/data/sys.4185", - "data/AlMgCu/data/sys.4186", - "data/AlMgCu/data/sys.4187", - "data/AlMgCu/data/sys.4188", - "data/AlMgCu/data/sys.419", - "data/AlMgCu/data/sys.4190", - "data/AlMgCu/data/sys.4191", - "data/AlMgCu/data/sys.4192", - "data/AlMgCu/data/sys.4193", - "data/AlMgCu/data/sys.4194", - "data/AlMgCu/data/sys.4195", - "data/AlMgCu/data/sys.4196", - "data/AlMgCu/data/sys.4197", - "data/AlMgCu/data/sys.4198", - "data/AlMgCu/data/sys.4199", - "data/AlMgCu/data/sys.4200", - "data/AlMgCu/data/sys.4201", - "data/AlMgCu/data/sys.4203", - "data/AlMgCu/data/sys.4204", - "data/AlMgCu/data/sys.4205", - "data/AlMgCu/data/sys.4206", - "data/AlMgCu/data/sys.4207", - "data/AlMgCu/data/sys.4208", - "data/AlMgCu/data/sys.4209", - "data/AlMgCu/data/sys.421", - "data/AlMgCu/data/sys.4210", - "data/AlMgCu/data/sys.4211", - "data/AlMgCu/data/sys.4212", - "data/AlMgCu/data/sys.4213", - "data/AlMgCu/data/sys.4214", - "data/AlMgCu/data/sys.4215", - "data/AlMgCu/data/sys.4216", - "data/AlMgCu/data/sys.4217", - "data/AlMgCu/data/sys.4218", - "data/AlMgCu/data/sys.4219", - "data/AlMgCu/data/sys.422", - "data/AlMgCu/data/sys.4220", - "data/AlMgCu/data/sys.4221", - "data/AlMgCu/data/sys.4222", - "data/AlMgCu/data/sys.4223", - "data/AlMgCu/data/sys.4224", - "data/AlMgCu/data/sys.4225", - "data/AlMgCu/data/sys.4226", - "data/AlMgCu/data/sys.4227", - "data/AlMgCu/data/sys.4229", - "data/AlMgCu/data/sys.423", - "data/AlMgCu/data/sys.4230", - "data/AlMgCu/data/sys.4231", - "data/AlMgCu/data/sys.4232", - "data/AlMgCu/data/sys.4233", - "data/AlMgCu/data/sys.4234", - "data/AlMgCu/data/sys.4235", - "data/AlMgCu/data/sys.4236", - "data/AlMgCu/data/sys.4237", - "data/AlMgCu/data/sys.4238", - "data/AlMgCu/data/sys.4239", - "data/AlMgCu/data/sys.424", - "data/AlMgCu/data/sys.4240", - "data/AlMgCu/data/sys.4241", - "data/AlMgCu/data/sys.4242", - "data/AlMgCu/data/sys.4244", - "data/AlMgCu/data/sys.4245", - "data/AlMgCu/data/sys.4246", - "data/AlMgCu/data/sys.4247", - "data/AlMgCu/data/sys.4248", - "data/AlMgCu/data/sys.4249", - "data/AlMgCu/data/sys.425", - "data/AlMgCu/data/sys.4250", - "data/AlMgCu/data/sys.4251", - "data/AlMgCu/data/sys.4252", - "data/AlMgCu/data/sys.4253", - "data/AlMgCu/data/sys.4254", - "data/AlMgCu/data/sys.4255", - "data/AlMgCu/data/sys.4256", - "data/AlMgCu/data/sys.4257", - "data/AlMgCu/data/sys.4258", - "data/AlMgCu/data/sys.4259", - "data/AlMgCu/data/sys.426", - "data/AlMgCu/data/sys.4260", - "data/AlMgCu/data/sys.4261", - "data/AlMgCu/data/sys.4262", - "data/AlMgCu/data/sys.4263", - "data/AlMgCu/data/sys.4264", - "data/AlMgCu/data/sys.4266", - "data/AlMgCu/data/sys.4267", - "data/AlMgCu/data/sys.4268", - "data/AlMgCu/data/sys.4269", - "data/AlMgCu/data/sys.4270", - "data/AlMgCu/data/sys.4271", - "data/AlMgCu/data/sys.4272", - "data/AlMgCu/data/sys.4273", - "data/AlMgCu/data/sys.4274", - "data/AlMgCu/data/sys.4275", - "data/AlMgCu/data/sys.4277", - "data/AlMgCu/data/sys.4278", - "data/AlMgCu/data/sys.4279", - "data/AlMgCu/data/sys.4280", - "data/AlMgCu/data/sys.4282", - "data/AlMgCu/data/sys.4283", - "data/AlMgCu/data/sys.4284", - "data/AlMgCu/data/sys.4286", - "data/AlMgCu/data/sys.4287", - "data/AlMgCu/data/sys.4288", - "data/AlMgCu/data/sys.4289", - "data/AlMgCu/data/sys.429", - "data/AlMgCu/data/sys.4290", - "data/AlMgCu/data/sys.4291", - "data/AlMgCu/data/sys.4292", - "data/AlMgCu/data/sys.4293", - "data/AlMgCu/data/sys.4294", - "data/AlMgCu/data/sys.4295", - "data/AlMgCu/data/sys.4296", - "data/AlMgCu/data/sys.4298", - "data/AlMgCu/data/sys.430", - "data/AlMgCu/data/sys.4300", - "data/AlMgCu/data/sys.4301", - "data/AlMgCu/data/sys.4302", - "data/AlMgCu/data/sys.4303", - "data/AlMgCu/data/sys.4305", - "data/AlMgCu/data/sys.4307", - "data/AlMgCu/data/sys.4308", - "data/AlMgCu/data/sys.4310", - "data/AlMgCu/data/sys.4311", - "data/AlMgCu/data/sys.4312", - "data/AlMgCu/data/sys.4313", - "data/AlMgCu/data/sys.4314", - "data/AlMgCu/data/sys.4315", - "data/AlMgCu/data/sys.4316", - "data/AlMgCu/data/sys.4317", - "data/AlMgCu/data/sys.4318", - "data/AlMgCu/data/sys.4319", - "data/AlMgCu/data/sys.432", - "data/AlMgCu/data/sys.4322", - "data/AlMgCu/data/sys.4323", - "data/AlMgCu/data/sys.4324", - "data/AlMgCu/data/sys.4325", - "data/AlMgCu/data/sys.4326", - "data/AlMgCu/data/sys.4327", - "data/AlMgCu/data/sys.4328", - "data/AlMgCu/data/sys.4329", - "data/AlMgCu/data/sys.433", - "data/AlMgCu/data/sys.4330", - "data/AlMgCu/data/sys.4332", - "data/AlMgCu/data/sys.4333", - "data/AlMgCu/data/sys.4334", - "data/AlMgCu/data/sys.4336", - "data/AlMgCu/data/sys.4337", - "data/AlMgCu/data/sys.4338", - "data/AlMgCu/data/sys.434", - "data/AlMgCu/data/sys.4340", - "data/AlMgCu/data/sys.4341", - "data/AlMgCu/data/sys.4342", - "data/AlMgCu/data/sys.4343", - "data/AlMgCu/data/sys.4344", - "data/AlMgCu/data/sys.4345", - "data/AlMgCu/data/sys.4346", - "data/AlMgCu/data/sys.4348", - "data/AlMgCu/data/sys.4349", - "data/AlMgCu/data/sys.435", - "data/AlMgCu/data/sys.4350", - "data/AlMgCu/data/sys.4352", - "data/AlMgCu/data/sys.4353", - "data/AlMgCu/data/sys.4354", - "data/AlMgCu/data/sys.4355", - "data/AlMgCu/data/sys.4356", - "data/AlMgCu/data/sys.4358", - "data/AlMgCu/data/sys.436", - "data/AlMgCu/data/sys.4360", - "data/AlMgCu/data/sys.4361", - "data/AlMgCu/data/sys.4362", - "data/AlMgCu/data/sys.4364", - "data/AlMgCu/data/sys.4365", - "data/AlMgCu/data/sys.4366", - "data/AlMgCu/data/sys.437", - "data/AlMgCu/data/sys.4370", - "data/AlMgCu/data/sys.4371", - "data/AlMgCu/data/sys.4372", - "data/AlMgCu/data/sys.4373", - "data/AlMgCu/data/sys.4374", - "data/AlMgCu/data/sys.4375", - "data/AlMgCu/data/sys.4376", - "data/AlMgCu/data/sys.4377", - "data/AlMgCu/data/sys.4378", - "data/AlMgCu/data/sys.438", - "data/AlMgCu/data/sys.4381", - "data/AlMgCu/data/sys.4382", - "data/AlMgCu/data/sys.4385", - "data/AlMgCu/data/sys.4386", - "data/AlMgCu/data/sys.4387", - "data/AlMgCu/data/sys.4388", - "data/AlMgCu/data/sys.4389", - "data/AlMgCu/data/sys.439", - "data/AlMgCu/data/sys.4390", - "data/AlMgCu/data/sys.4392", - "data/AlMgCu/data/sys.4393", - "data/AlMgCu/data/sys.4394", - "data/AlMgCu/data/sys.4395", - "data/AlMgCu/data/sys.4396", - "data/AlMgCu/data/sys.4398", - "data/AlMgCu/data/sys.440", - "data/AlMgCu/data/sys.4402", - "data/AlMgCu/data/sys.4404", - "data/AlMgCu/data/sys.4406", - "data/AlMgCu/data/sys.4408", - "data/AlMgCu/data/sys.4409", - "data/AlMgCu/data/sys.441", - "data/AlMgCu/data/sys.4410", - "data/AlMgCu/data/sys.4411", - "data/AlMgCu/data/sys.4412", - "data/AlMgCu/data/sys.4413", - "data/AlMgCu/data/sys.4414", - "data/AlMgCu/data/sys.4415", - "data/AlMgCu/data/sys.4416", - "data/AlMgCu/data/sys.4417", - "data/AlMgCu/data/sys.4419", - "data/AlMgCu/data/sys.442", - "data/AlMgCu/data/sys.4420", - "data/AlMgCu/data/sys.4422", - "data/AlMgCu/data/sys.4423", - "data/AlMgCu/data/sys.4425", - "data/AlMgCu/data/sys.4426", - "data/AlMgCu/data/sys.4427", - "data/AlMgCu/data/sys.4428", - "data/AlMgCu/data/sys.443", - "data/AlMgCu/data/sys.4430", - "data/AlMgCu/data/sys.4431", - "data/AlMgCu/data/sys.4432", - "data/AlMgCu/data/sys.4433", - "data/AlMgCu/data/sys.4436", - "data/AlMgCu/data/sys.4438", - "data/AlMgCu/data/sys.4439", - "data/AlMgCu/data/sys.444", - "data/AlMgCu/data/sys.4440", - "data/AlMgCu/data/sys.4441", - "data/AlMgCu/data/sys.4442", - "data/AlMgCu/data/sys.4443", - "data/AlMgCu/data/sys.4446", - "data/AlMgCu/data/sys.4447", - "data/AlMgCu/data/sys.4448", - "data/AlMgCu/data/sys.445", - "data/AlMgCu/data/sys.4450", - "data/AlMgCu/data/sys.4451", - "data/AlMgCu/data/sys.4452", - "data/AlMgCu/data/sys.4453", - "data/AlMgCu/data/sys.4454", - "data/AlMgCu/data/sys.4455", - "data/AlMgCu/data/sys.4456", - "data/AlMgCu/data/sys.4457", - "data/AlMgCu/data/sys.4458", - "data/AlMgCu/data/sys.4459", - "data/AlMgCu/data/sys.4460", - "data/AlMgCu/data/sys.4462", - "data/AlMgCu/data/sys.4464", - "data/AlMgCu/data/sys.4465", - "data/AlMgCu/data/sys.447", - "data/AlMgCu/data/sys.4470", - "data/AlMgCu/data/sys.4471", - "data/AlMgCu/data/sys.4472", - "data/AlMgCu/data/sys.4474", - "data/AlMgCu/data/sys.4475", - "data/AlMgCu/data/sys.4476", - "data/AlMgCu/data/sys.4479", - "data/AlMgCu/data/sys.448", - "data/AlMgCu/data/sys.4480", - "data/AlMgCu/data/sys.4481", - "data/AlMgCu/data/sys.4482", - "data/AlMgCu/data/sys.4483", - "data/AlMgCu/data/sys.4484", - "data/AlMgCu/data/sys.4485", - "data/AlMgCu/data/sys.4486", - "data/AlMgCu/data/sys.4488", - "data/AlMgCu/data/sys.449", - "data/AlMgCu/data/sys.4490", - "data/AlMgCu/data/sys.4491", - "data/AlMgCu/data/sys.4492", - "data/AlMgCu/data/sys.4493", - "data/AlMgCu/data/sys.4494", - "data/AlMgCu/data/sys.4495", - "data/AlMgCu/data/sys.4496", - "data/AlMgCu/data/sys.4497", - "data/AlMgCu/data/sys.4498", - "data/AlMgCu/data/sys.4499", - "data/AlMgCu/data/sys.450", - "data/AlMgCu/data/sys.4500", - "data/AlMgCu/data/sys.4501", - "data/AlMgCu/data/sys.4502", - "data/AlMgCu/data/sys.4503", - "data/AlMgCu/data/sys.4505", - "data/AlMgCu/data/sys.4506", - "data/AlMgCu/data/sys.4507", - "data/AlMgCu/data/sys.4509", - "data/AlMgCu/data/sys.451", - "data/AlMgCu/data/sys.4510", - "data/AlMgCu/data/sys.4511", - "data/AlMgCu/data/sys.4512", - "data/AlMgCu/data/sys.4513", - "data/AlMgCu/data/sys.4514", - "data/AlMgCu/data/sys.4516", - "data/AlMgCu/data/sys.4517", - "data/AlMgCu/data/sys.4519", - "data/AlMgCu/data/sys.452", - "data/AlMgCu/data/sys.4520", - "data/AlMgCu/data/sys.4521", - "data/AlMgCu/data/sys.4522", - "data/AlMgCu/data/sys.4523", - "data/AlMgCu/data/sys.4524", - "data/AlMgCu/data/sys.4525", - "data/AlMgCu/data/sys.4526", - "data/AlMgCu/data/sys.4528", - "data/AlMgCu/data/sys.4529", - "data/AlMgCu/data/sys.453", - "data/AlMgCu/data/sys.4530", - "data/AlMgCu/data/sys.4531", - "data/AlMgCu/data/sys.4532", - "data/AlMgCu/data/sys.4535", - "data/AlMgCu/data/sys.4536", - "data/AlMgCu/data/sys.4537", - "data/AlMgCu/data/sys.4538", - "data/AlMgCu/data/sys.4539", - "data/AlMgCu/data/sys.454", - "data/AlMgCu/data/sys.4540", - "data/AlMgCu/data/sys.4541", - "data/AlMgCu/data/sys.4542", - "data/AlMgCu/data/sys.4543", - "data/AlMgCu/data/sys.4544", - "data/AlMgCu/data/sys.4545", - "data/AlMgCu/data/sys.4546", - "data/AlMgCu/data/sys.4547", - "data/AlMgCu/data/sys.4549", - "data/AlMgCu/data/sys.455", - "data/AlMgCu/data/sys.4550", - "data/AlMgCu/data/sys.4551", - "data/AlMgCu/data/sys.4553", - "data/AlMgCu/data/sys.4554", - "data/AlMgCu/data/sys.4555", - "data/AlMgCu/data/sys.4556", - "data/AlMgCu/data/sys.4557", - "data/AlMgCu/data/sys.4559", - "data/AlMgCu/data/sys.456", - "data/AlMgCu/data/sys.4560", - "data/AlMgCu/data/sys.4561", - "data/AlMgCu/data/sys.4562", - "data/AlMgCu/data/sys.4563", - "data/AlMgCu/data/sys.4564", - "data/AlMgCu/data/sys.4565", - "data/AlMgCu/data/sys.4566", - "data/AlMgCu/data/sys.4567", - "data/AlMgCu/data/sys.4568", - "data/AlMgCu/data/sys.4569", - "data/AlMgCu/data/sys.457", - "data/AlMgCu/data/sys.4570", - "data/AlMgCu/data/sys.4571", - "data/AlMgCu/data/sys.4572", - "data/AlMgCu/data/sys.4573", - "data/AlMgCu/data/sys.4574", - "data/AlMgCu/data/sys.4575", - "data/AlMgCu/data/sys.4576", - "data/AlMgCu/data/sys.4577", - "data/AlMgCu/data/sys.4578", - "data/AlMgCu/data/sys.4579", - "data/AlMgCu/data/sys.458", - "data/AlMgCu/data/sys.4580", - "data/AlMgCu/data/sys.4581", - "data/AlMgCu/data/sys.4582", - "data/AlMgCu/data/sys.4584", - "data/AlMgCu/data/sys.4585", - "data/AlMgCu/data/sys.4587", - "data/AlMgCu/data/sys.4588", - "data/AlMgCu/data/sys.4589", - "data/AlMgCu/data/sys.459", - "data/AlMgCu/data/sys.4590", - "data/AlMgCu/data/sys.4591", - "data/AlMgCu/data/sys.4593", - "data/AlMgCu/data/sys.4594", - "data/AlMgCu/data/sys.4596", - "data/AlMgCu/data/sys.4598", - "data/AlMgCu/data/sys.460", - "data/AlMgCu/data/sys.4600", - "data/AlMgCu/data/sys.4602", - "data/AlMgCu/data/sys.4604", - "data/AlMgCu/data/sys.4606", - "data/AlMgCu/data/sys.4608", - "data/AlMgCu/data/sys.461", - "data/AlMgCu/data/sys.4610", - "data/AlMgCu/data/sys.4612", - "data/AlMgCu/data/sys.4614", - "data/AlMgCu/data/sys.4616", - "data/AlMgCu/data/sys.4618", - "data/AlMgCu/data/sys.462", - "data/AlMgCu/data/sys.4620", - "data/AlMgCu/data/sys.4622", - "data/AlMgCu/data/sys.4624", - "data/AlMgCu/data/sys.463", - "data/AlMgCu/data/sys.4635", - "data/AlMgCu/data/sys.464", - "data/AlMgCu/data/sys.4642", - "data/AlMgCu/data/sys.4643", - "data/AlMgCu/data/sys.4648", - "data/AlMgCu/data/sys.4649", - "data/AlMgCu/data/sys.4658", - "data/AlMgCu/data/sys.466", - "data/AlMgCu/data/sys.4666", - "data/AlMgCu/data/sys.467", - "data/AlMgCu/data/sys.4670", - "data/AlMgCu/data/sys.4674", - "data/AlMgCu/data/sys.468", - "data/AlMgCu/data/sys.4681", - "data/AlMgCu/data/sys.4686", - "data/AlMgCu/data/sys.4687", - "data/AlMgCu/data/sys.4688", - "data/AlMgCu/data/sys.4689", - "data/AlMgCu/data/sys.469", - "data/AlMgCu/data/sys.4690", - "data/AlMgCu/data/sys.4691", - "data/AlMgCu/data/sys.4692", - "data/AlMgCu/data/sys.4693", - "data/AlMgCu/data/sys.4694", - "data/AlMgCu/data/sys.4695", - "data/AlMgCu/data/sys.4696", - "data/AlMgCu/data/sys.4697", - "data/AlMgCu/data/sys.4698", - "data/AlMgCu/data/sys.4699", - "data/AlMgCu/data/sys.470", - "data/AlMgCu/data/sys.4700", - "data/AlMgCu/data/sys.4701", - "data/AlMgCu/data/sys.4703", - "data/AlMgCu/data/sys.4704", - "data/AlMgCu/data/sys.4705", - "data/AlMgCu/data/sys.4707", - "data/AlMgCu/data/sys.4708", - "data/AlMgCu/data/sys.4709", - "data/AlMgCu/data/sys.471", - "data/AlMgCu/data/sys.4710", - "data/AlMgCu/data/sys.4711", - "data/AlMgCu/data/sys.4712", - "data/AlMgCu/data/sys.4713", - "data/AlMgCu/data/sys.4714", - "data/AlMgCu/data/sys.4715", - "data/AlMgCu/data/sys.4716", - "data/AlMgCu/data/sys.4717", - "data/AlMgCu/data/sys.4718", - "data/AlMgCu/data/sys.4719", - "data/AlMgCu/data/sys.472", - "data/AlMgCu/data/sys.4720", - "data/AlMgCu/data/sys.4721", - "data/AlMgCu/data/sys.4722", - "data/AlMgCu/data/sys.4723", - "data/AlMgCu/data/sys.4725", - "data/AlMgCu/data/sys.4726", - "data/AlMgCu/data/sys.4727", - "data/AlMgCu/data/sys.4728", - "data/AlMgCu/data/sys.473", - "data/AlMgCu/data/sys.4730", - "data/AlMgCu/data/sys.4731", - "data/AlMgCu/data/sys.4732", - "data/AlMgCu/data/sys.4733", - "data/AlMgCu/data/sys.4734", - "data/AlMgCu/data/sys.4735", - "data/AlMgCu/data/sys.4736", - "data/AlMgCu/data/sys.4737", - "data/AlMgCu/data/sys.4738", - "data/AlMgCu/data/sys.4739", - "data/AlMgCu/data/sys.4740", - "data/AlMgCu/data/sys.4741", - "data/AlMgCu/data/sys.4742", - "data/AlMgCu/data/sys.4743", - "data/AlMgCu/data/sys.4744", - "data/AlMgCu/data/sys.4747", - "data/AlMgCu/data/sys.4748", - "data/AlMgCu/data/sys.475", - "data/AlMgCu/data/sys.4752", - "data/AlMgCu/data/sys.4753", - "data/AlMgCu/data/sys.4754", - "data/AlMgCu/data/sys.476", - "data/AlMgCu/data/sys.4762", - "data/AlMgCu/data/sys.4763", - "data/AlMgCu/data/sys.4769", - "data/AlMgCu/data/sys.477", - "data/AlMgCu/data/sys.4771", - "data/AlMgCu/data/sys.4772", - "data/AlMgCu/data/sys.4777", - "data/AlMgCu/data/sys.4778", - "data/AlMgCu/data/sys.4779", - "data/AlMgCu/data/sys.478", - "data/AlMgCu/data/sys.4786", - "data/AlMgCu/data/sys.479", - "data/AlMgCu/data/sys.4790", - "data/AlMgCu/data/sys.4792", - "data/AlMgCu/data/sys.4793", - "data/AlMgCu/data/sys.4794", - "data/AlMgCu/data/sys.4798", - "data/AlMgCu/data/sys.480", - "data/AlMgCu/data/sys.4800", - "data/AlMgCu/data/sys.4802", - "data/AlMgCu/data/sys.4804", - "data/AlMgCu/data/sys.481", - "data/AlMgCu/data/sys.4810", - "data/AlMgCu/data/sys.4818", - "data/AlMgCu/data/sys.482", - "data/AlMgCu/data/sys.4826", - "data/AlMgCu/data/sys.483", - "data/AlMgCu/data/sys.4834", - "data/AlMgCu/data/sys.484", - "data/AlMgCu/data/sys.4843", - "data/AlMgCu/data/sys.4844", - "data/AlMgCu/data/sys.4848", - "data/AlMgCu/data/sys.4849", - "data/AlMgCu/data/sys.485", - "data/AlMgCu/data/sys.4850", - "data/AlMgCu/data/sys.4851", - "data/AlMgCu/data/sys.4857", - "data/AlMgCu/data/sys.4858", - "data/AlMgCu/data/sys.486", - "data/AlMgCu/data/sys.4872", - "data/AlMgCu/data/sys.4874", - "data/AlMgCu/data/sys.4878", - "data/AlMgCu/data/sys.488", - "data/AlMgCu/data/sys.4880", - "data/AlMgCu/data/sys.4882", - "data/AlMgCu/data/sys.4888", - "data/AlMgCu/data/sys.489", - "data/AlMgCu/data/sys.4898", - "data/AlMgCu/data/sys.490", - "data/AlMgCu/data/sys.4904", - "data/AlMgCu/data/sys.4905", - "data/AlMgCu/data/sys.4906", - "data/AlMgCu/data/sys.4907", - "data/AlMgCu/data/sys.4908", - "data/AlMgCu/data/sys.491", - "data/AlMgCu/data/sys.4913", - "data/AlMgCu/data/sys.4914", - "data/AlMgCu/data/sys.492", - "data/AlMgCu/data/sys.4920", - "data/AlMgCu/data/sys.4922", - "data/AlMgCu/data/sys.4924", - "data/AlMgCu/data/sys.493", - "data/AlMgCu/data/sys.4930", - "data/AlMgCu/data/sys.4932", - "data/AlMgCu/data/sys.4938", - "data/AlMgCu/data/sys.494", - "data/AlMgCu/data/sys.4940", - "data/AlMgCu/data/sys.4945", - "data/AlMgCu/data/sys.4946", - "data/AlMgCu/data/sys.495", - "data/AlMgCu/data/sys.4952", - "data/AlMgCu/data/sys.4953", - "data/AlMgCu/data/sys.496", - "data/AlMgCu/data/sys.4960", - "data/AlMgCu/data/sys.4967", - "data/AlMgCu/data/sys.497", - "data/AlMgCu/data/sys.4970", - "data/AlMgCu/data/sys.4971", - "data/AlMgCu/data/sys.4972", - "data/AlMgCu/data/sys.4973", - "data/AlMgCu/data/sys.4974", - "data/AlMgCu/data/sys.4976", - "data/AlMgCu/data/sys.4977", - "data/AlMgCu/data/sys.4978", - "data/AlMgCu/data/sys.4979", - "data/AlMgCu/data/sys.498", - "data/AlMgCu/data/sys.4980", - "data/AlMgCu/data/sys.4981", - "data/AlMgCu/data/sys.4982", - "data/AlMgCu/data/sys.4984", - "data/AlMgCu/data/sys.4985", - "data/AlMgCu/data/sys.4987", - "data/AlMgCu/data/sys.4988", - "data/AlMgCu/data/sys.499", - "data/AlMgCu/data/sys.4990", - "data/AlMgCu/data/sys.4992", - "data/AlMgCu/data/sys.4993", - "data/AlMgCu/data/sys.4994", - "data/AlMgCu/data/sys.4996", - "data/AlMgCu/data/sys.4998", - "data/AlMgCu/data/sys.500", - "data/AlMgCu/data/sys.5000", - "data/AlMgCu/data/sys.5001", - "data/AlMgCu/data/sys.5002", - "data/AlMgCu/data/sys.501", - "data/AlMgCu/data/sys.5010", - "data/AlMgCu/data/sys.5017", - "data/AlMgCu/data/sys.5018", - "data/AlMgCu/data/sys.5019", - "data/AlMgCu/data/sys.502", - "data/AlMgCu/data/sys.5025", - "data/AlMgCu/data/sys.5026", - "data/AlMgCu/data/sys.5027", - "data/AlMgCu/data/sys.5034", - "data/AlMgCu/data/sys.504", - "data/AlMgCu/data/sys.5043", - "data/AlMgCu/data/sys.5044", - "data/AlMgCu/data/sys.505", - "data/AlMgCu/data/sys.5050", - "data/AlMgCu/data/sys.5056", - "data/AlMgCu/data/sys.5058", - "data/AlMgCu/data/sys.506", - "data/AlMgCu/data/sys.5066", - "data/AlMgCu/data/sys.507", - "data/AlMgCu/data/sys.5074", - "data/AlMgCu/data/sys.5075", - "data/AlMgCu/data/sys.508", - "data/AlMgCu/data/sys.5083", - "data/AlMgCu/data/sys.509", - "data/AlMgCu/data/sys.5090", - "data/AlMgCu/data/sys.5091", - "data/AlMgCu/data/sys.5098", - "data/AlMgCu/data/sys.510", - "data/AlMgCu/data/sys.5100", - "data/AlMgCu/data/sys.5104", - "data/AlMgCu/data/sys.5105", - "data/AlMgCu/data/sys.5106", - "data/AlMgCu/data/sys.511", - "data/AlMgCu/data/sys.5112", - "data/AlMgCu/data/sys.5114", - "data/AlMgCu/data/sys.512", - "data/AlMgCu/data/sys.5122", - "data/AlMgCu/data/sys.5124", - "data/AlMgCu/data/sys.513", - "data/AlMgCu/data/sys.5131", - "data/AlMgCu/data/sys.514", - "data/AlMgCu/data/sys.5146", - "data/AlMgCu/data/sys.5147", - "data/AlMgCu/data/sys.515", - "data/AlMgCu/data/sys.5154", - "data/AlMgCu/data/sys.5156", - "data/AlMgCu/data/sys.516", - "data/AlMgCu/data/sys.5164", - "data/AlMgCu/data/sys.5168", - "data/AlMgCu/data/sys.517", - "data/AlMgCu/data/sys.5170", - "data/AlMgCu/data/sys.5177", - "data/AlMgCu/data/sys.5178", - "data/AlMgCu/data/sys.518", - "data/AlMgCu/data/sys.5180", - "data/AlMgCu/data/sys.5186", - "data/AlMgCu/data/sys.5187", - "data/AlMgCu/data/sys.519", - "data/AlMgCu/data/sys.5194", - "data/AlMgCu/data/sys.520", - "data/AlMgCu/data/sys.5208", - "data/AlMgCu/data/sys.521", - "data/AlMgCu/data/sys.5210", - "data/AlMgCu/data/sys.5211", - "data/AlMgCu/data/sys.5212", - "data/AlMgCu/data/sys.522", - "data/AlMgCu/data/sys.5220", - "data/AlMgCu/data/sys.5226", - "data/AlMgCu/data/sys.523", - "data/AlMgCu/data/sys.5233", - "data/AlMgCu/data/sys.5241", - "data/AlMgCu/data/sys.5249", - "data/AlMgCu/data/sys.525", - "data/AlMgCu/data/sys.526", - "data/AlMgCu/data/sys.5268", - "data/AlMgCu/data/sys.528", - "data/AlMgCu/data/sys.5282", - "data/AlMgCu/data/sys.529", - "data/AlMgCu/data/sys.5290", - "data/AlMgCu/data/sys.5293", - "data/AlMgCu/data/sys.5299", - "data/AlMgCu/data/sys.530", - "data/AlMgCu/data/sys.531", - "data/AlMgCu/data/sys.5313", - "data/AlMgCu/data/sys.5316", - "data/AlMgCu/data/sys.532", - "data/AlMgCu/data/sys.533", - "data/AlMgCu/data/sys.534", - "data/AlMgCu/data/sys.535", - "data/AlMgCu/data/sys.536", - "data/AlMgCu/data/sys.537", - "data/AlMgCu/data/sys.538", - "data/AlMgCu/data/sys.5385", - "data/AlMgCu/data/sys.5388", - "data/AlMgCu/data/sys.539", - "data/AlMgCu/data/sys.540", - "data/AlMgCu/data/sys.541", - "data/AlMgCu/data/sys.5410", - "data/AlMgCu/data/sys.5418", - "data/AlMgCu/data/sys.542", - "data/AlMgCu/data/sys.543", - "data/AlMgCu/data/sys.544", - "data/AlMgCu/data/sys.5443", - "data/AlMgCu/data/sys.545", - "data/AlMgCu/data/sys.5450", - "data/AlMgCu/data/sys.546", - "data/AlMgCu/data/sys.547", - "data/AlMgCu/data/sys.548", - "data/AlMgCu/data/sys.549", - "data/AlMgCu/data/sys.550", - "data/AlMgCu/data/sys.5506", - "data/AlMgCu/data/sys.551", - "data/AlMgCu/data/sys.552", - "data/AlMgCu/data/sys.553", - "data/AlMgCu/data/sys.554", - "data/AlMgCu/data/sys.555", - "data/AlMgCu/data/sys.556", - "data/AlMgCu/data/sys.557", - "data/AlMgCu/data/sys.5574", - "data/AlMgCu/data/sys.558", - "data/AlMgCu/data/sys.5580", - "data/AlMgCu/data/sys.559", - "data/AlMgCu/data/sys.560", - "data/AlMgCu/data/sys.561", - "data/AlMgCu/data/sys.562", - "data/AlMgCu/data/sys.563", - "data/AlMgCu/data/sys.565", - "data/AlMgCu/data/sys.566", - "data/AlMgCu/data/sys.567", - "data/AlMgCu/data/sys.569", - "data/AlMgCu/data/sys.570", - "data/AlMgCu/data/sys.571", - "data/AlMgCu/data/sys.572", - "data/AlMgCu/data/sys.573", - "data/AlMgCu/data/sys.574", - "data/AlMgCu/data/sys.575", - "data/AlMgCu/data/sys.576", - "data/AlMgCu/data/sys.577", - "data/AlMgCu/data/sys.578", - "data/AlMgCu/data/sys.579", - "data/AlMgCu/data/sys.580", - "data/AlMgCu/data/sys.581", - "data/AlMgCu/data/sys.582", - "data/AlMgCu/data/sys.583", - "data/AlMgCu/data/sys.584", - "data/AlMgCu/data/sys.5848", - "data/AlMgCu/data/sys.585", - "data/AlMgCu/data/sys.586", - "data/AlMgCu/data/sys.587", - "data/AlMgCu/data/sys.589", - "data/AlMgCu/data/sys.590", - "data/AlMgCu/data/sys.592", - "data/AlMgCu/data/sys.593", - "data/AlMgCu/data/sys.594", - "data/AlMgCu/data/sys.5943", - "data/AlMgCu/data/sys.5944", - "data/AlMgCu/data/sys.5945", - "data/AlMgCu/data/sys.5946", - "data/AlMgCu/data/sys.5947", - "data/AlMgCu/data/sys.5948", - "data/AlMgCu/data/sys.5949", - "data/AlMgCu/data/sys.595", - "data/AlMgCu/data/sys.5950", - "data/AlMgCu/data/sys.5951", - "data/AlMgCu/data/sys.5953", - "data/AlMgCu/data/sys.5954", - "data/AlMgCu/data/sys.5955", - "data/AlMgCu/data/sys.5956", - "data/AlMgCu/data/sys.5957", - "data/AlMgCu/data/sys.5958", - "data/AlMgCu/data/sys.5959", - "data/AlMgCu/data/sys.596", - "data/AlMgCu/data/sys.5960", - "data/AlMgCu/data/sys.5961", - "data/AlMgCu/data/sys.5962", - "data/AlMgCu/data/sys.5963", - "data/AlMgCu/data/sys.5964", - "data/AlMgCu/data/sys.5965", - "data/AlMgCu/data/sys.5967", - "data/AlMgCu/data/sys.5968", - "data/AlMgCu/data/sys.5969", - "data/AlMgCu/data/sys.597", - "data/AlMgCu/data/sys.5970", - "data/AlMgCu/data/sys.5971", - "data/AlMgCu/data/sys.5972", - "data/AlMgCu/data/sys.5973", - "data/AlMgCu/data/sys.5975", - "data/AlMgCu/data/sys.5976", - "data/AlMgCu/data/sys.5977", - "data/AlMgCu/data/sys.5979", - "data/AlMgCu/data/sys.598", - "data/AlMgCu/data/sys.5980", - "data/AlMgCu/data/sys.5981", - "data/AlMgCu/data/sys.5983", - "data/AlMgCu/data/sys.5984", - "data/AlMgCu/data/sys.5985", - "data/AlMgCu/data/sys.5987", - "data/AlMgCu/data/sys.5988", - "data/AlMgCu/data/sys.5989", - "data/AlMgCu/data/sys.599", - "data/AlMgCu/data/sys.5990", - "data/AlMgCu/data/sys.5991", - "data/AlMgCu/data/sys.5992", - "data/AlMgCu/data/sys.5993", - "data/AlMgCu/data/sys.5994", - "data/AlMgCu/data/sys.5995", - "data/AlMgCu/data/sys.5997", - "data/AlMgCu/data/sys.5998", - "data/AlMgCu/data/sys.5999", - "data/AlMgCu/data/sys.600", - "data/AlMgCu/data/sys.6000", - "data/AlMgCu/data/sys.6001", - "data/AlMgCu/data/sys.6004", - "data/AlMgCu/data/sys.6005", - "data/AlMgCu/data/sys.6006", - "data/AlMgCu/data/sys.6007", - "data/AlMgCu/data/sys.6008", - "data/AlMgCu/data/sys.6009", - "data/AlMgCu/data/sys.6010", - "data/AlMgCu/data/sys.6011", - "data/AlMgCu/data/sys.6012", - "data/AlMgCu/data/sys.6013", - "data/AlMgCu/data/sys.6014", - "data/AlMgCu/data/sys.6015", - "data/AlMgCu/data/sys.6016", - "data/AlMgCu/data/sys.6017", - "data/AlMgCu/data/sys.6018", - "data/AlMgCu/data/sys.6019", - "data/AlMgCu/data/sys.602", - "data/AlMgCu/data/sys.6021", - "data/AlMgCu/data/sys.6022", - "data/AlMgCu/data/sys.6023", - "data/AlMgCu/data/sys.6024", - "data/AlMgCu/data/sys.6025", - "data/AlMgCu/data/sys.6026", - "data/AlMgCu/data/sys.6027", - "data/AlMgCu/data/sys.6029", - "data/AlMgCu/data/sys.603", - "data/AlMgCu/data/sys.6030", - "data/AlMgCu/data/sys.6031", - "data/AlMgCu/data/sys.6032", - "data/AlMgCu/data/sys.6033", - "data/AlMgCu/data/sys.6034", - "data/AlMgCu/data/sys.6035", - "data/AlMgCu/data/sys.6036", - "data/AlMgCu/data/sys.6037", - "data/AlMgCu/data/sys.6038", - "data/AlMgCu/data/sys.604", - "data/AlMgCu/data/sys.6040", - "data/AlMgCu/data/sys.6042", - "data/AlMgCu/data/sys.6043", - "data/AlMgCu/data/sys.6044", - "data/AlMgCu/data/sys.6046", - "data/AlMgCu/data/sys.6047", - "data/AlMgCu/data/sys.6049", - "data/AlMgCu/data/sys.605", - "data/AlMgCu/data/sys.6050", - "data/AlMgCu/data/sys.6051", - "data/AlMgCu/data/sys.6052", - "data/AlMgCu/data/sys.6053", - "data/AlMgCu/data/sys.6054", - "data/AlMgCu/data/sys.6055", - "data/AlMgCu/data/sys.6056", - "data/AlMgCu/data/sys.6057", - "data/AlMgCu/data/sys.6058", - "data/AlMgCu/data/sys.6059", - "data/AlMgCu/data/sys.606", - "data/AlMgCu/data/sys.6060", - "data/AlMgCu/data/sys.6061", - "data/AlMgCu/data/sys.6062", - "data/AlMgCu/data/sys.6063", - "data/AlMgCu/data/sys.6064", - "data/AlMgCu/data/sys.6067", - "data/AlMgCu/data/sys.6068", - "data/AlMgCu/data/sys.6069", - "data/AlMgCu/data/sys.607", - "data/AlMgCu/data/sys.6070", - "data/AlMgCu/data/sys.6071", - "data/AlMgCu/data/sys.6072", - "data/AlMgCu/data/sys.6073", - "data/AlMgCu/data/sys.6074", - "data/AlMgCu/data/sys.6075", - "data/AlMgCu/data/sys.6076", - "data/AlMgCu/data/sys.6077", - "data/AlMgCu/data/sys.6078", - "data/AlMgCu/data/sys.6079", - "data/AlMgCu/data/sys.608", - "data/AlMgCu/data/sys.6081", - "data/AlMgCu/data/sys.6082", - "data/AlMgCu/data/sys.6083", - "data/AlMgCu/data/sys.6085", - "data/AlMgCu/data/sys.6087", - "data/AlMgCu/data/sys.6088", - "data/AlMgCu/data/sys.6089", - "data/AlMgCu/data/sys.609", - "data/AlMgCu/data/sys.6090", - "data/AlMgCu/data/sys.6091", - "data/AlMgCu/data/sys.6092", - "data/AlMgCu/data/sys.6093", - "data/AlMgCu/data/sys.6094", - "data/AlMgCu/data/sys.6095", - "data/AlMgCu/data/sys.6096", - "data/AlMgCu/data/sys.6097", - "data/AlMgCu/data/sys.6098", - "data/AlMgCu/data/sys.610", - "data/AlMgCu/data/sys.6100", - "data/AlMgCu/data/sys.6101", - "data/AlMgCu/data/sys.6103", - "data/AlMgCu/data/sys.6104", - "data/AlMgCu/data/sys.6106", - "data/AlMgCu/data/sys.6107", - "data/AlMgCu/data/sys.6108", - "data/AlMgCu/data/sys.6109", - "data/AlMgCu/data/sys.611", - "data/AlMgCu/data/sys.6110", - "data/AlMgCu/data/sys.6111", - "data/AlMgCu/data/sys.6112", - "data/AlMgCu/data/sys.6113", - "data/AlMgCu/data/sys.6114", - "data/AlMgCu/data/sys.6115", - "data/AlMgCu/data/sys.6116", - "data/AlMgCu/data/sys.6117", - "data/AlMgCu/data/sys.6118", - "data/AlMgCu/data/sys.6119", - "data/AlMgCu/data/sys.612", - "data/AlMgCu/data/sys.6120", - "data/AlMgCu/data/sys.6121", - "data/AlMgCu/data/sys.6123", - "data/AlMgCu/data/sys.6124", - "data/AlMgCu/data/sys.6125", - "data/AlMgCu/data/sys.6126", - "data/AlMgCu/data/sys.6127", - "data/AlMgCu/data/sys.6128", - "data/AlMgCu/data/sys.6129", - "data/AlMgCu/data/sys.613", - "data/AlMgCu/data/sys.6130", - "data/AlMgCu/data/sys.6131", - "data/AlMgCu/data/sys.6132", - "data/AlMgCu/data/sys.6133", - "data/AlMgCu/data/sys.6134", - "data/AlMgCu/data/sys.6135", - "data/AlMgCu/data/sys.6136", - "data/AlMgCu/data/sys.6137", - "data/AlMgCu/data/sys.6138", - "data/AlMgCu/data/sys.6139", - "data/AlMgCu/data/sys.614", - "data/AlMgCu/data/sys.6140", - "data/AlMgCu/data/sys.6141", - "data/AlMgCu/data/sys.6142", - "data/AlMgCu/data/sys.6143", - "data/AlMgCu/data/sys.6144", - "data/AlMgCu/data/sys.6145", - "data/AlMgCu/data/sys.6146", - "data/AlMgCu/data/sys.6147", - "data/AlMgCu/data/sys.6148", - "data/AlMgCu/data/sys.6149", - "data/AlMgCu/data/sys.615", - "data/AlMgCu/data/sys.6151", - "data/AlMgCu/data/sys.6154", - "data/AlMgCu/data/sys.6155", - "data/AlMgCu/data/sys.6156", - "data/AlMgCu/data/sys.6157", - "data/AlMgCu/data/sys.6158", - "data/AlMgCu/data/sys.6159", - "data/AlMgCu/data/sys.616", - "data/AlMgCu/data/sys.6160", - "data/AlMgCu/data/sys.6161", - "data/AlMgCu/data/sys.6162", - "data/AlMgCu/data/sys.6163", - "data/AlMgCu/data/sys.6164", - "data/AlMgCu/data/sys.6165", - "data/AlMgCu/data/sys.6166", - "data/AlMgCu/data/sys.6167", - "data/AlMgCu/data/sys.6168", - "data/AlMgCu/data/sys.6169", - "data/AlMgCu/data/sys.617", - "data/AlMgCu/data/sys.6170", - "data/AlMgCu/data/sys.6171", - "data/AlMgCu/data/sys.6172", - "data/AlMgCu/data/sys.6173", - "data/AlMgCu/data/sys.6174", - "data/AlMgCu/data/sys.6175", - "data/AlMgCu/data/sys.6176", - "data/AlMgCu/data/sys.6177", - "data/AlMgCu/data/sys.6178", - "data/AlMgCu/data/sys.6179", - "data/AlMgCu/data/sys.618", - "data/AlMgCu/data/sys.6180", - "data/AlMgCu/data/sys.6181", - "data/AlMgCu/data/sys.6182", - "data/AlMgCu/data/sys.6183", - "data/AlMgCu/data/sys.6185", - "data/AlMgCu/data/sys.6186", - "data/AlMgCu/data/sys.6187", - "data/AlMgCu/data/sys.6188", - "data/AlMgCu/data/sys.6189", - "data/AlMgCu/data/sys.619", - "data/AlMgCu/data/sys.6190", - "data/AlMgCu/data/sys.6191", - "data/AlMgCu/data/sys.6193", - "data/AlMgCu/data/sys.6194", - "data/AlMgCu/data/sys.6195", - "data/AlMgCu/data/sys.6196", - "data/AlMgCu/data/sys.6197", - "data/AlMgCu/data/sys.6198", - "data/AlMgCu/data/sys.6199", - "data/AlMgCu/data/sys.620", - "data/AlMgCu/data/sys.6200", - "data/AlMgCu/data/sys.6201", - "data/AlMgCu/data/sys.6202", - "data/AlMgCu/data/sys.6203", - "data/AlMgCu/data/sys.6204", - "data/AlMgCu/data/sys.6206", - "data/AlMgCu/data/sys.6207", - "data/AlMgCu/data/sys.6208", - "data/AlMgCu/data/sys.621", - "data/AlMgCu/data/sys.6210", - "data/AlMgCu/data/sys.6211", - "data/AlMgCu/data/sys.6212", - "data/AlMgCu/data/sys.6213", - "data/AlMgCu/data/sys.6215", - "data/AlMgCu/data/sys.6216", - "data/AlMgCu/data/sys.6217", - "data/AlMgCu/data/sys.6218", - "data/AlMgCu/data/sys.6219", - "data/AlMgCu/data/sys.622", - "data/AlMgCu/data/sys.6220", - "data/AlMgCu/data/sys.6221", - "data/AlMgCu/data/sys.6222", - "data/AlMgCu/data/sys.6223", - "data/AlMgCu/data/sys.6224", - "data/AlMgCu/data/sys.6225", - "data/AlMgCu/data/sys.6226", - "data/AlMgCu/data/sys.6227", - "data/AlMgCu/data/sys.6229", - "data/AlMgCu/data/sys.623", - "data/AlMgCu/data/sys.6230", - "data/AlMgCu/data/sys.6231", - "data/AlMgCu/data/sys.6232", - "data/AlMgCu/data/sys.6233", - "data/AlMgCu/data/sys.6235", - "data/AlMgCu/data/sys.6236", - "data/AlMgCu/data/sys.6237", - "data/AlMgCu/data/sys.6238", - "data/AlMgCu/data/sys.6239", - "data/AlMgCu/data/sys.624", - "data/AlMgCu/data/sys.6240", - "data/AlMgCu/data/sys.6241", - "data/AlMgCu/data/sys.6242", - "data/AlMgCu/data/sys.6243", - "data/AlMgCu/data/sys.6244", - "data/AlMgCu/data/sys.6245", - "data/AlMgCu/data/sys.6246", - "data/AlMgCu/data/sys.6247", - "data/AlMgCu/data/sys.6249", - "data/AlMgCu/data/sys.6250", - "data/AlMgCu/data/sys.6251", - "data/AlMgCu/data/sys.6252", - "data/AlMgCu/data/sys.6253", - "data/AlMgCu/data/sys.6254", - "data/AlMgCu/data/sys.6256", - "data/AlMgCu/data/sys.6257", - "data/AlMgCu/data/sys.6258", - "data/AlMgCu/data/sys.626", - "data/AlMgCu/data/sys.6260", - "data/AlMgCu/data/sys.6261", - "data/AlMgCu/data/sys.6262", - "data/AlMgCu/data/sys.6263", - "data/AlMgCu/data/sys.6264", - "data/AlMgCu/data/sys.6265", - "data/AlMgCu/data/sys.6266", - "data/AlMgCu/data/sys.6267", - "data/AlMgCu/data/sys.6268", - "data/AlMgCu/data/sys.6269", - "data/AlMgCu/data/sys.627", - "data/AlMgCu/data/sys.6271", - "data/AlMgCu/data/sys.6272", - "data/AlMgCu/data/sys.6273", - "data/AlMgCu/data/sys.6274", - "data/AlMgCu/data/sys.6275", - "data/AlMgCu/data/sys.6276", - "data/AlMgCu/data/sys.6277", - "data/AlMgCu/data/sys.6278", - "data/AlMgCu/data/sys.6279", - "data/AlMgCu/data/sys.628", - "data/AlMgCu/data/sys.6280", - "data/AlMgCu/data/sys.6282", - "data/AlMgCu/data/sys.6283", - "data/AlMgCu/data/sys.6284", - "data/AlMgCu/data/sys.6285", - "data/AlMgCu/data/sys.6286", - "data/AlMgCu/data/sys.6287", - "data/AlMgCu/data/sys.6288", - "data/AlMgCu/data/sys.6289", - "data/AlMgCu/data/sys.629", - "data/AlMgCu/data/sys.6290", - "data/AlMgCu/data/sys.6291", - "data/AlMgCu/data/sys.6292", - "data/AlMgCu/data/sys.6293", - "data/AlMgCu/data/sys.6295", - "data/AlMgCu/data/sys.6296", - "data/AlMgCu/data/sys.6298", - "data/AlMgCu/data/sys.630", - "data/AlMgCu/data/sys.6300", - "data/AlMgCu/data/sys.6301", - "data/AlMgCu/data/sys.6302", - "data/AlMgCu/data/sys.6303", - "data/AlMgCu/data/sys.6304", - "data/AlMgCu/data/sys.6305", - "data/AlMgCu/data/sys.6306", - "data/AlMgCu/data/sys.6308", - "data/AlMgCu/data/sys.6309", - "data/AlMgCu/data/sys.631", - "data/AlMgCu/data/sys.6310", - "data/AlMgCu/data/sys.6311", - "data/AlMgCu/data/sys.6312", - "data/AlMgCu/data/sys.6313", - "data/AlMgCu/data/sys.6314", - "data/AlMgCu/data/sys.6315", - "data/AlMgCu/data/sys.6316", - "data/AlMgCu/data/sys.6317", - "data/AlMgCu/data/sys.6318", - "data/AlMgCu/data/sys.6319", - "data/AlMgCu/data/sys.632", - "data/AlMgCu/data/sys.6320", - "data/AlMgCu/data/sys.6321", - "data/AlMgCu/data/sys.6322", - "data/AlMgCu/data/sys.6323", - "data/AlMgCu/data/sys.6324", - "data/AlMgCu/data/sys.6325", - "data/AlMgCu/data/sys.6326", - "data/AlMgCu/data/sys.6327", - "data/AlMgCu/data/sys.6328", - "data/AlMgCu/data/sys.6329", - "data/AlMgCu/data/sys.6331", - "data/AlMgCu/data/sys.6332", - "data/AlMgCu/data/sys.6333", - "data/AlMgCu/data/sys.6334", - "data/AlMgCu/data/sys.6335", - "data/AlMgCu/data/sys.6336", - "data/AlMgCu/data/sys.6337", - "data/AlMgCu/data/sys.6338", - "data/AlMgCu/data/sys.6339", - "data/AlMgCu/data/sys.634", - "data/AlMgCu/data/sys.6341", - "data/AlMgCu/data/sys.6342", - "data/AlMgCu/data/sys.6344", - "data/AlMgCu/data/sys.6345", - "data/AlMgCu/data/sys.6346", - "data/AlMgCu/data/sys.6347", - "data/AlMgCu/data/sys.6349", - "data/AlMgCu/data/sys.635", - "data/AlMgCu/data/sys.6350", - "data/AlMgCu/data/sys.6351", - "data/AlMgCu/data/sys.6354", - "data/AlMgCu/data/sys.6355", - "data/AlMgCu/data/sys.6356", - "data/AlMgCu/data/sys.6357", - "data/AlMgCu/data/sys.6358", - "data/AlMgCu/data/sys.6359", - "data/AlMgCu/data/sys.636", - "data/AlMgCu/data/sys.6360", - "data/AlMgCu/data/sys.6361", - "data/AlMgCu/data/sys.6362", - "data/AlMgCu/data/sys.6363", - "data/AlMgCu/data/sys.6364", - "data/AlMgCu/data/sys.6366", - "data/AlMgCu/data/sys.6367", - "data/AlMgCu/data/sys.6368", - "data/AlMgCu/data/sys.6369", - "data/AlMgCu/data/sys.637", - "data/AlMgCu/data/sys.6370", - "data/AlMgCu/data/sys.6371", - "data/AlMgCu/data/sys.6372", - "data/AlMgCu/data/sys.6373", - "data/AlMgCu/data/sys.6374", - "data/AlMgCu/data/sys.6375", - "data/AlMgCu/data/sys.6376", - "data/AlMgCu/data/sys.6377", - "data/AlMgCu/data/sys.6378", - "data/AlMgCu/data/sys.6379", - "data/AlMgCu/data/sys.638", - "data/AlMgCu/data/sys.6381", - "data/AlMgCu/data/sys.6382", - "data/AlMgCu/data/sys.6383", - "data/AlMgCu/data/sys.6384", - "data/AlMgCu/data/sys.6385", - "data/AlMgCu/data/sys.6386", - "data/AlMgCu/data/sys.6387", - "data/AlMgCu/data/sys.6388", - "data/AlMgCu/data/sys.6389", - "data/AlMgCu/data/sys.639", - "data/AlMgCu/data/sys.6390", - "data/AlMgCu/data/sys.6391", - "data/AlMgCu/data/sys.6392", - "data/AlMgCu/data/sys.6393", - "data/AlMgCu/data/sys.6394", - "data/AlMgCu/data/sys.6396", - "data/AlMgCu/data/sys.6397", - "data/AlMgCu/data/sys.6398", - "data/AlMgCu/data/sys.6399", - "data/AlMgCu/data/sys.640", - "data/AlMgCu/data/sys.6400", - "data/AlMgCu/data/sys.6401", - "data/AlMgCu/data/sys.6402", - "data/AlMgCu/data/sys.6403", - "data/AlMgCu/data/sys.6404", - "data/AlMgCu/data/sys.6405", - "data/AlMgCu/data/sys.6406", - "data/AlMgCu/data/sys.6408", - "data/AlMgCu/data/sys.6409", - "data/AlMgCu/data/sys.641", - "data/AlMgCu/data/sys.6410", - "data/AlMgCu/data/sys.6411", - "data/AlMgCu/data/sys.6413", - "data/AlMgCu/data/sys.6414", - "data/AlMgCu/data/sys.6416", - "data/AlMgCu/data/sys.6417", - "data/AlMgCu/data/sys.6418", - "data/AlMgCu/data/sys.6419", - "data/AlMgCu/data/sys.642", - "data/AlMgCu/data/sys.6421", - "data/AlMgCu/data/sys.6422", - "data/AlMgCu/data/sys.6423", - "data/AlMgCu/data/sys.6424", - "data/AlMgCu/data/sys.6425", - "data/AlMgCu/data/sys.6426", - "data/AlMgCu/data/sys.6428", - "data/AlMgCu/data/sys.6429", - "data/AlMgCu/data/sys.643", - "data/AlMgCu/data/sys.6430", - "data/AlMgCu/data/sys.6431", - "data/AlMgCu/data/sys.6432", - "data/AlMgCu/data/sys.6433", - "data/AlMgCu/data/sys.6434", - "data/AlMgCu/data/sys.6436", - "data/AlMgCu/data/sys.6437", - "data/AlMgCu/data/sys.6438", - "data/AlMgCu/data/sys.6439", - "data/AlMgCu/data/sys.644", - "data/AlMgCu/data/sys.6440", - "data/AlMgCu/data/sys.6441", - "data/AlMgCu/data/sys.6442", - "data/AlMgCu/data/sys.6443", - "data/AlMgCu/data/sys.6444", - "data/AlMgCu/data/sys.6445", - "data/AlMgCu/data/sys.6446", - "data/AlMgCu/data/sys.6447", - "data/AlMgCu/data/sys.6449", - "data/AlMgCu/data/sys.645", - "data/AlMgCu/data/sys.6450", - "data/AlMgCu/data/sys.6451", - "data/AlMgCu/data/sys.6452", - "data/AlMgCu/data/sys.6453", - "data/AlMgCu/data/sys.6454", - "data/AlMgCu/data/sys.6455", - "data/AlMgCu/data/sys.6456", - "data/AlMgCu/data/sys.6457", - "data/AlMgCu/data/sys.6460", - "data/AlMgCu/data/sys.6461", - "data/AlMgCu/data/sys.6462", - "data/AlMgCu/data/sys.6464", - "data/AlMgCu/data/sys.6465", - "data/AlMgCu/data/sys.6467", - "data/AlMgCu/data/sys.6468", - "data/AlMgCu/data/sys.6469", - "data/AlMgCu/data/sys.647", - "data/AlMgCu/data/sys.6471", - "data/AlMgCu/data/sys.6472", - "data/AlMgCu/data/sys.6474", - "data/AlMgCu/data/sys.6475", - "data/AlMgCu/data/sys.6477", - "data/AlMgCu/data/sys.6478", - "data/AlMgCu/data/sys.6479", - "data/AlMgCu/data/sys.648", - "data/AlMgCu/data/sys.6480", - "data/AlMgCu/data/sys.6481", - "data/AlMgCu/data/sys.6482", - "data/AlMgCu/data/sys.6483", - "data/AlMgCu/data/sys.6485", - "data/AlMgCu/data/sys.6486", - "data/AlMgCu/data/sys.6487", - "data/AlMgCu/data/sys.6488", - "data/AlMgCu/data/sys.6489", - "data/AlMgCu/data/sys.649", - "data/AlMgCu/data/sys.6490", - "data/AlMgCu/data/sys.6491", - "data/AlMgCu/data/sys.6492", - "data/AlMgCu/data/sys.6493", - "data/AlMgCu/data/sys.6494", - "data/AlMgCu/data/sys.6495", - "data/AlMgCu/data/sys.6497", - "data/AlMgCu/data/sys.6498", - "data/AlMgCu/data/sys.6499", - "data/AlMgCu/data/sys.650", - "data/AlMgCu/data/sys.6501", - "data/AlMgCu/data/sys.6502", - "data/AlMgCu/data/sys.6503", - "data/AlMgCu/data/sys.6505", - "data/AlMgCu/data/sys.6506", - "data/AlMgCu/data/sys.6507", - "data/AlMgCu/data/sys.6508", - "data/AlMgCu/data/sys.6509", - "data/AlMgCu/data/sys.651", - "data/AlMgCu/data/sys.6510", - "data/AlMgCu/data/sys.6511", - "data/AlMgCu/data/sys.6512", - "data/AlMgCu/data/sys.6513", - "data/AlMgCu/data/sys.6514", - "data/AlMgCu/data/sys.6515", - "data/AlMgCu/data/sys.6516", - "data/AlMgCu/data/sys.6517", - "data/AlMgCu/data/sys.6519", - "data/AlMgCu/data/sys.652", - "data/AlMgCu/data/sys.6520", - "data/AlMgCu/data/sys.6521", - "data/AlMgCu/data/sys.6522", - "data/AlMgCu/data/sys.6523", - "data/AlMgCu/data/sys.6524", - "data/AlMgCu/data/sys.6525", - "data/AlMgCu/data/sys.6526", - "data/AlMgCu/data/sys.6527", - "data/AlMgCu/data/sys.6528", - "data/AlMgCu/data/sys.6529", - "data/AlMgCu/data/sys.653", - "data/AlMgCu/data/sys.6530", - "data/AlMgCu/data/sys.6531", - "data/AlMgCu/data/sys.6533", - "data/AlMgCu/data/sys.6534", - "data/AlMgCu/data/sys.6535", - "data/AlMgCu/data/sys.6537", - "data/AlMgCu/data/sys.6539", - "data/AlMgCu/data/sys.654", - "data/AlMgCu/data/sys.6540", - "data/AlMgCu/data/sys.6541", - "data/AlMgCu/data/sys.6542", - "data/AlMgCu/data/sys.6544", - "data/AlMgCu/data/sys.6545", - "data/AlMgCu/data/sys.6546", - "data/AlMgCu/data/sys.6547", - "data/AlMgCu/data/sys.6548", - "data/AlMgCu/data/sys.6549", - "data/AlMgCu/data/sys.655", - "data/AlMgCu/data/sys.6550", - "data/AlMgCu/data/sys.6551", - "data/AlMgCu/data/sys.6552", - "data/AlMgCu/data/sys.6553", - "data/AlMgCu/data/sys.6554", - "data/AlMgCu/data/sys.6555", - "data/AlMgCu/data/sys.6556", - "data/AlMgCu/data/sys.6557", - "data/AlMgCu/data/sys.6558", - "data/AlMgCu/data/sys.6559", - "data/AlMgCu/data/sys.656", - "data/AlMgCu/data/sys.6561", - "data/AlMgCu/data/sys.6562", - "data/AlMgCu/data/sys.6563", - "data/AlMgCu/data/sys.6564", - "data/AlMgCu/data/sys.6566", - "data/AlMgCu/data/sys.6567", - "data/AlMgCu/data/sys.6568", - "data/AlMgCu/data/sys.657", - "data/AlMgCu/data/sys.6571", - "data/AlMgCu/data/sys.6572", - "data/AlMgCu/data/sys.6573", - "data/AlMgCu/data/sys.6574", - "data/AlMgCu/data/sys.6575", - "data/AlMgCu/data/sys.6576", - "data/AlMgCu/data/sys.6577", - "data/AlMgCu/data/sys.6578", - "data/AlMgCu/data/sys.6579", - "data/AlMgCu/data/sys.658", - "data/AlMgCu/data/sys.6580", - "data/AlMgCu/data/sys.6581", - "data/AlMgCu/data/sys.6582", - "data/AlMgCu/data/sys.6583", - "data/AlMgCu/data/sys.6584", - "data/AlMgCu/data/sys.6585", - "data/AlMgCu/data/sys.6586", - "data/AlMgCu/data/sys.6587", - "data/AlMgCu/data/sys.6588", - "data/AlMgCu/data/sys.6589", - "data/AlMgCu/data/sys.659", - "data/AlMgCu/data/sys.6590", - "data/AlMgCu/data/sys.6591", - "data/AlMgCu/data/sys.6592", - "data/AlMgCu/data/sys.6593", - "data/AlMgCu/data/sys.6596", - "data/AlMgCu/data/sys.6597", - "data/AlMgCu/data/sys.6598", - "data/AlMgCu/data/sys.660", - "data/AlMgCu/data/sys.6600", - "data/AlMgCu/data/sys.6601", - "data/AlMgCu/data/sys.6602", - "data/AlMgCu/data/sys.6603", - "data/AlMgCu/data/sys.6604", - "data/AlMgCu/data/sys.6605", - "data/AlMgCu/data/sys.6606", - "data/AlMgCu/data/sys.6607", - "data/AlMgCu/data/sys.6608", - "data/AlMgCu/data/sys.6609", - "data/AlMgCu/data/sys.661", - "data/AlMgCu/data/sys.6610", - "data/AlMgCu/data/sys.6611", - "data/AlMgCu/data/sys.6612", - "data/AlMgCu/data/sys.6613", - "data/AlMgCu/data/sys.6614", - "data/AlMgCu/data/sys.6615", - "data/AlMgCu/data/sys.6616", - "data/AlMgCu/data/sys.6617", - "data/AlMgCu/data/sys.6618", - "data/AlMgCu/data/sys.6619", - "data/AlMgCu/data/sys.662", - "data/AlMgCu/data/sys.6620", - "data/AlMgCu/data/sys.6621", - "data/AlMgCu/data/sys.6622", - "data/AlMgCu/data/sys.6623", - "data/AlMgCu/data/sys.6624", - "data/AlMgCu/data/sys.6625", - "data/AlMgCu/data/sys.6626", - "data/AlMgCu/data/sys.6627", - "data/AlMgCu/data/sys.6628", - "data/AlMgCu/data/sys.6629", - "data/AlMgCu/data/sys.663", - "data/AlMgCu/data/sys.6630", - "data/AlMgCu/data/sys.6631", - "data/AlMgCu/data/sys.6632", - "data/AlMgCu/data/sys.6633", - "data/AlMgCu/data/sys.6634", - "data/AlMgCu/data/sys.6637", - "data/AlMgCu/data/sys.6638", - "data/AlMgCu/data/sys.6639", - "data/AlMgCu/data/sys.664", - "data/AlMgCu/data/sys.6640", - "data/AlMgCu/data/sys.6641", - "data/AlMgCu/data/sys.6642", - "data/AlMgCu/data/sys.6644", - "data/AlMgCu/data/sys.6645", - "data/AlMgCu/data/sys.6646", - "data/AlMgCu/data/sys.6647", - "data/AlMgCu/data/sys.6648", - "data/AlMgCu/data/sys.665", - "data/AlMgCu/data/sys.6650", - "data/AlMgCu/data/sys.6651", - "data/AlMgCu/data/sys.6652", - "data/AlMgCu/data/sys.6655", - "data/AlMgCu/data/sys.6656", - "data/AlMgCu/data/sys.6657", - "data/AlMgCu/data/sys.6658", - "data/AlMgCu/data/sys.666", - "data/AlMgCu/data/sys.6660", - "data/AlMgCu/data/sys.6661", - "data/AlMgCu/data/sys.6662", - "data/AlMgCu/data/sys.6663", - "data/AlMgCu/data/sys.6664", - "data/AlMgCu/data/sys.6665", - "data/AlMgCu/data/sys.6666", - "data/AlMgCu/data/sys.6667", - "data/AlMgCu/data/sys.6668", - "data/AlMgCu/data/sys.6669", - "data/AlMgCu/data/sys.6670", - "data/AlMgCu/data/sys.6671", - "data/AlMgCu/data/sys.6673", - "data/AlMgCu/data/sys.6674", - "data/AlMgCu/data/sys.6676", - "data/AlMgCu/data/sys.6677", - "data/AlMgCu/data/sys.6678", - "data/AlMgCu/data/sys.6679", - "data/AlMgCu/data/sys.668", - "data/AlMgCu/data/sys.6680", - "data/AlMgCu/data/sys.6681", - "data/AlMgCu/data/sys.6682", - "data/AlMgCu/data/sys.6683", - "data/AlMgCu/data/sys.6684", - "data/AlMgCu/data/sys.6685", - "data/AlMgCu/data/sys.6686", - "data/AlMgCu/data/sys.6687", - "data/AlMgCu/data/sys.6688", - "data/AlMgCu/data/sys.6689", - "data/AlMgCu/data/sys.6690", - "data/AlMgCu/data/sys.6691", - "data/AlMgCu/data/sys.6692", - "data/AlMgCu/data/sys.6693", - "data/AlMgCu/data/sys.6694", - "data/AlMgCu/data/sys.6695", - "data/AlMgCu/data/sys.6696", - "data/AlMgCu/data/sys.6697", - "data/AlMgCu/data/sys.6698", - "data/AlMgCu/data/sys.6699", - "data/AlMgCu/data/sys.670", - "data/AlMgCu/data/sys.6700", - "data/AlMgCu/data/sys.6701", - "data/AlMgCu/data/sys.6703", - "data/AlMgCu/data/sys.6704", - "data/AlMgCu/data/sys.6705", - "data/AlMgCu/data/sys.6706", - "data/AlMgCu/data/sys.6707", - "data/AlMgCu/data/sys.6708", - "data/AlMgCu/data/sys.6709", - "data/AlMgCu/data/sys.671", - "data/AlMgCu/data/sys.6710", - "data/AlMgCu/data/sys.6711", - "data/AlMgCu/data/sys.6712", - "data/AlMgCu/data/sys.6714", - "data/AlMgCu/data/sys.6715", - "data/AlMgCu/data/sys.6716", - "data/AlMgCu/data/sys.6717", - "data/AlMgCu/data/sys.6718", - "data/AlMgCu/data/sys.6719", - "data/AlMgCu/data/sys.672", - "data/AlMgCu/data/sys.6720", - "data/AlMgCu/data/sys.6721", - "data/AlMgCu/data/sys.6722", - "data/AlMgCu/data/sys.6723", - "data/AlMgCu/data/sys.6724", - "data/AlMgCu/data/sys.6725", - "data/AlMgCu/data/sys.6726", - "data/AlMgCu/data/sys.6727", - "data/AlMgCu/data/sys.6728", - "data/AlMgCu/data/sys.6729", - "data/AlMgCu/data/sys.673", - "data/AlMgCu/data/sys.6730", - "data/AlMgCu/data/sys.6731", - "data/AlMgCu/data/sys.6732", - "data/AlMgCu/data/sys.6733", - "data/AlMgCu/data/sys.6734", - "data/AlMgCu/data/sys.6735", - "data/AlMgCu/data/sys.6736", - "data/AlMgCu/data/sys.6737", - "data/AlMgCu/data/sys.6738", - "data/AlMgCu/data/sys.6739", - "data/AlMgCu/data/sys.674", - "data/AlMgCu/data/sys.6740", - "data/AlMgCu/data/sys.6741", - "data/AlMgCu/data/sys.6742", - "data/AlMgCu/data/sys.6743", - "data/AlMgCu/data/sys.6745", - "data/AlMgCu/data/sys.6746", - "data/AlMgCu/data/sys.675", - "data/AlMgCu/data/sys.6750", - "data/AlMgCu/data/sys.6751", - "data/AlMgCu/data/sys.6752", - "data/AlMgCu/data/sys.6753", - "data/AlMgCu/data/sys.6754", - "data/AlMgCu/data/sys.6755", - "data/AlMgCu/data/sys.6756", - "data/AlMgCu/data/sys.6758", - "data/AlMgCu/data/sys.676", - "data/AlMgCu/data/sys.6760", - "data/AlMgCu/data/sys.6762", - "data/AlMgCu/data/sys.6763", - "data/AlMgCu/data/sys.6764", - "data/AlMgCu/data/sys.6765", - "data/AlMgCu/data/sys.6766", - "data/AlMgCu/data/sys.6767", - "data/AlMgCu/data/sys.6768", - "data/AlMgCu/data/sys.677", - "data/AlMgCu/data/sys.6770", - "data/AlMgCu/data/sys.6771", - "data/AlMgCu/data/sys.6772", - "data/AlMgCu/data/sys.6773", - "data/AlMgCu/data/sys.6774", - "data/AlMgCu/data/sys.6775", - "data/AlMgCu/data/sys.6778", - "data/AlMgCu/data/sys.6779", - "data/AlMgCu/data/sys.678", - "data/AlMgCu/data/sys.6780", - "data/AlMgCu/data/sys.6781", - "data/AlMgCu/data/sys.6782", - "data/AlMgCu/data/sys.6783", - "data/AlMgCu/data/sys.6784", - "data/AlMgCu/data/sys.6785", - "data/AlMgCu/data/sys.6786", - "data/AlMgCu/data/sys.6787", - "data/AlMgCu/data/sys.6788", - "data/AlMgCu/data/sys.6789", - "data/AlMgCu/data/sys.679", - "data/AlMgCu/data/sys.6790", - "data/AlMgCu/data/sys.6791", - "data/AlMgCu/data/sys.6792", - "data/AlMgCu/data/sys.6794", - "data/AlMgCu/data/sys.6795", - "data/AlMgCu/data/sys.6796", - "data/AlMgCu/data/sys.6797", - "data/AlMgCu/data/sys.6798", - "data/AlMgCu/data/sys.6799", - "data/AlMgCu/data/sys.680", - "data/AlMgCu/data/sys.6800", - "data/AlMgCu/data/sys.6801", - "data/AlMgCu/data/sys.6802", - "data/AlMgCu/data/sys.6804", - "data/AlMgCu/data/sys.6805", - "data/AlMgCu/data/sys.6806", - "data/AlMgCu/data/sys.6807", - "data/AlMgCu/data/sys.6808", - "data/AlMgCu/data/sys.6809", - "data/AlMgCu/data/sys.681", - "data/AlMgCu/data/sys.6810", - "data/AlMgCu/data/sys.6811", - "data/AlMgCu/data/sys.6812", - "data/AlMgCu/data/sys.6813", - "data/AlMgCu/data/sys.6814", - "data/AlMgCu/data/sys.6815", - "data/AlMgCu/data/sys.6816", - "data/AlMgCu/data/sys.6817", - "data/AlMgCu/data/sys.6818", - "data/AlMgCu/data/sys.6819", - "data/AlMgCu/data/sys.682", - "data/AlMgCu/data/sys.6820", - "data/AlMgCu/data/sys.6821", - "data/AlMgCu/data/sys.6822", - "data/AlMgCu/data/sys.6823", - "data/AlMgCu/data/sys.6825", - "data/AlMgCu/data/sys.6826", - "data/AlMgCu/data/sys.6827", - "data/AlMgCu/data/sys.6828", - "data/AlMgCu/data/sys.6829", - "data/AlMgCu/data/sys.683", - "data/AlMgCu/data/sys.6830", - "data/AlMgCu/data/sys.6831", - "data/AlMgCu/data/sys.6832", - "data/AlMgCu/data/sys.6833", - "data/AlMgCu/data/sys.6834", - "data/AlMgCu/data/sys.6835", - "data/AlMgCu/data/sys.6836", - "data/AlMgCu/data/sys.6837", - "data/AlMgCu/data/sys.6838", - "data/AlMgCu/data/sys.6839", - "data/AlMgCu/data/sys.684", - "data/AlMgCu/data/sys.6840", - "data/AlMgCu/data/sys.6842", - "data/AlMgCu/data/sys.6843", - "data/AlMgCu/data/sys.6844", - "data/AlMgCu/data/sys.6845", - "data/AlMgCu/data/sys.6847", - "data/AlMgCu/data/sys.6849", - "data/AlMgCu/data/sys.685", - "data/AlMgCu/data/sys.6850", - "data/AlMgCu/data/sys.6851", - "data/AlMgCu/data/sys.6852", - "data/AlMgCu/data/sys.6853", - "data/AlMgCu/data/sys.6854", - "data/AlMgCu/data/sys.6855", - "data/AlMgCu/data/sys.6856", - "data/AlMgCu/data/sys.6858", - "data/AlMgCu/data/sys.6859", - "data/AlMgCu/data/sys.686", - "data/AlMgCu/data/sys.6860", - "data/AlMgCu/data/sys.6861", - "data/AlMgCu/data/sys.6862", - "data/AlMgCu/data/sys.6863", - "data/AlMgCu/data/sys.6864", - "data/AlMgCu/data/sys.6865", - "data/AlMgCu/data/sys.6866", - "data/AlMgCu/data/sys.6867", - "data/AlMgCu/data/sys.6868", - "data/AlMgCu/data/sys.6869", - "data/AlMgCu/data/sys.6870", - "data/AlMgCu/data/sys.6871", - "data/AlMgCu/data/sys.6874", - "data/AlMgCu/data/sys.688", - "data/AlMgCu/data/sys.6880", - "data/AlMgCu/data/sys.6881", - "data/AlMgCu/data/sys.6882", - "data/AlMgCu/data/sys.6883", - "data/AlMgCu/data/sys.6884", - "data/AlMgCu/data/sys.6889", - "data/AlMgCu/data/sys.689", - "data/AlMgCu/data/sys.6890", - "data/AlMgCu/data/sys.6891", - "data/AlMgCu/data/sys.6897", - "data/AlMgCu/data/sys.6898", - "data/AlMgCu/data/sys.6899", - "data/AlMgCu/data/sys.690", - "data/AlMgCu/data/sys.6900", - "data/AlMgCu/data/sys.6904", - "data/AlMgCu/data/sys.6912", - "data/AlMgCu/data/sys.6922", - "data/AlMgCu/data/sys.693", - "data/AlMgCu/data/sys.6930", - "data/AlMgCu/data/sys.6938", - "data/AlMgCu/data/sys.6944", - "data/AlMgCu/data/sys.6946", - "data/AlMgCu/data/sys.695", - "data/AlMgCu/data/sys.6952", - "data/AlMgCu/data/sys.6954", - "data/AlMgCu/data/sys.696", - "data/AlMgCu/data/sys.6962", - "data/AlMgCu/data/sys.697", - "data/AlMgCu/data/sys.6970", - "data/AlMgCu/data/sys.6972", - "data/AlMgCu/data/sys.6978", - "data/AlMgCu/data/sys.6979", - "data/AlMgCu/data/sys.698", - "data/AlMgCu/data/sys.6985", - "data/AlMgCu/data/sys.699", - "data/AlMgCu/data/sys.6992", - "data/AlMgCu/data/sys.6993", - "data/AlMgCu/data/sys.6994", - "data/AlMgCu/data/sys.6996", - "data/AlMgCu/data/sys.6998", - "data/AlMgCu/data/sys.7000", - "data/AlMgCu/data/sys.7002", - "data/AlMgCu/data/sys.7008", - "data/AlMgCu/data/sys.701", - "data/AlMgCu/data/sys.7010", - "data/AlMgCu/data/sys.7012", - "data/AlMgCu/data/sys.7018", - "data/AlMgCu/data/sys.702", - "data/AlMgCu/data/sys.7025", - "data/AlMgCu/data/sys.7026", - "data/AlMgCu/data/sys.7028", - "data/AlMgCu/data/sys.703", - "data/AlMgCu/data/sys.7034", - "data/AlMgCu/data/sys.7036", - "data/AlMgCu/data/sys.704", - "data/AlMgCu/data/sys.7040", - "data/AlMgCu/data/sys.7041", - "data/AlMgCu/data/sys.7042", - "data/AlMgCu/data/sys.705", - "data/AlMgCu/data/sys.7058", - "data/AlMgCu/data/sys.7059", - "data/AlMgCu/data/sys.706", - "data/AlMgCu/data/sys.7060", - "data/AlMgCu/data/sys.7061", - "data/AlMgCu/data/sys.7065", - "data/AlMgCu/data/sys.7066", - "data/AlMgCu/data/sys.7067", - "data/AlMgCu/data/sys.707", - "data/AlMgCu/data/sys.708", - "data/AlMgCu/data/sys.7081", - "data/AlMgCu/data/sys.7083", - "data/AlMgCu/data/sys.7089", - "data/AlMgCu/data/sys.709", - "data/AlMgCu/data/sys.7090", - "data/AlMgCu/data/sys.7091", - "data/AlMgCu/data/sys.7092", - "data/AlMgCu/data/sys.7093", - "data/AlMgCu/data/sys.7096", - "data/AlMgCu/data/sys.7098", - "data/AlMgCu/data/sys.710", - "data/AlMgCu/data/sys.7100", - "data/AlMgCu/data/sys.7106", - "data/AlMgCu/data/sys.7108", - "data/AlMgCu/data/sys.711", - "data/AlMgCu/data/sys.7112", - "data/AlMgCu/data/sys.7114", - "data/AlMgCu/data/sys.712", - "data/AlMgCu/data/sys.713", - "data/AlMgCu/data/sys.7130", - "data/AlMgCu/data/sys.7138", - "data/AlMgCu/data/sys.714", - "data/AlMgCu/data/sys.7140", - "data/AlMgCu/data/sys.7146", - "data/AlMgCu/data/sys.7147", - "data/AlMgCu/data/sys.715", - "data/AlMgCu/data/sys.7154", - "data/AlMgCu/data/sys.7155", - "data/AlMgCu/data/sys.716", - "data/AlMgCu/data/sys.7162", - "data/AlMgCu/data/sys.7164", - "data/AlMgCu/data/sys.717", - "data/AlMgCu/data/sys.7170", - "data/AlMgCu/data/sys.7173", - "data/AlMgCu/data/sys.7177", - "data/AlMgCu/data/sys.7178", - "data/AlMgCu/data/sys.718", - "data/AlMgCu/data/sys.7180", - "data/AlMgCu/data/sys.7184", - "data/AlMgCu/data/sys.7186", - "data/AlMgCu/data/sys.7188", - "data/AlMgCu/data/sys.719", - "data/AlMgCu/data/sys.7194", - "data/AlMgCu/data/sys.7200", - "data/AlMgCu/data/sys.7202", - "data/AlMgCu/data/sys.7208", - "data/AlMgCu/data/sys.721", - "data/AlMgCu/data/sys.7218", - "data/AlMgCu/data/sys.722", - "data/AlMgCu/data/sys.7226", - "data/AlMgCu/data/sys.723", - "data/AlMgCu/data/sys.7234", - "data/AlMgCu/data/sys.724", - "data/AlMgCu/data/sys.7240", - "data/AlMgCu/data/sys.7241", - "data/AlMgCu/data/sys.7243", - "data/AlMgCu/data/sys.725", - "data/AlMgCu/data/sys.7250", - "data/AlMgCu/data/sys.7256", - "data/AlMgCu/data/sys.7258", - "data/AlMgCu/data/sys.726", - "data/AlMgCu/data/sys.7268", - "data/AlMgCu/data/sys.727", - "data/AlMgCu/data/sys.7274", - "data/AlMgCu/data/sys.728", - "data/AlMgCu/data/sys.7282", - "data/AlMgCu/data/sys.7289", - "data/AlMgCu/data/sys.729", - "data/AlMgCu/data/sys.7292", - "data/AlMgCu/data/sys.730", - "data/AlMgCu/data/sys.731", - "data/AlMgCu/data/sys.732", - "data/AlMgCu/data/sys.7322", - "data/AlMgCu/data/sys.7325", - "data/AlMgCu/data/sys.7336", - "data/AlMgCu/data/sys.7338", - "data/AlMgCu/data/sys.734", - "data/AlMgCu/data/sys.7344", - "data/AlMgCu/data/sys.7348", - "data/AlMgCu/data/sys.735", - "data/AlMgCu/data/sys.7352", - "data/AlMgCu/data/sys.7354", - "data/AlMgCu/data/sys.7356", - "data/AlMgCu/data/sys.736", - "data/AlMgCu/data/sys.7360", - "data/AlMgCu/data/sys.7362", - "data/AlMgCu/data/sys.7364", - "data/AlMgCu/data/sys.737", - "data/AlMgCu/data/sys.7378", - "data/AlMgCu/data/sys.7380", - "data/AlMgCu/data/sys.739", - "data/AlMgCu/data/sys.7394", - "data/AlMgCu/data/sys.7401", - "data/AlMgCu/data/sys.7412", - "data/AlMgCu/data/sys.7425", - "data/AlMgCu/data/sys.7426", - "data/AlMgCu/data/sys.7427", - "data/AlMgCu/data/sys.7430", - "data/AlMgCu/data/sys.7434", - "data/AlMgCu/data/sys.744", - "data/AlMgCu/data/sys.7442", - "data/AlMgCu/data/sys.7444", - "data/AlMgCu/data/sys.7450", - "data/AlMgCu/data/sys.7456", - "data/AlMgCu/data/sys.7457", - "data/AlMgCu/data/sys.746", - "data/AlMgCu/data/sys.747", - "data/AlMgCu/data/sys.7474", - "data/AlMgCu/data/sys.748", - "data/AlMgCu/data/sys.749", - "data/AlMgCu/data/sys.7498", - "data/AlMgCu/data/sys.750", - "data/AlMgCu/data/sys.7508", - "data/AlMgCu/data/sys.751", - "data/AlMgCu/data/sys.752", - "data/AlMgCu/data/sys.7522", - "data/AlMgCu/data/sys.753", - "data/AlMgCu/data/sys.754", - "data/AlMgCu/data/sys.7540", - "data/AlMgCu/data/sys.755", - "data/AlMgCu/data/sys.756", - "data/AlMgCu/data/sys.7561", - "data/AlMgCu/data/sys.7569", - "data/AlMgCu/data/sys.757", - "data/AlMgCu/data/sys.7570", - "data/AlMgCu/data/sys.7578", - "data/AlMgCu/data/sys.758", - "data/AlMgCu/data/sys.7580", - "data/AlMgCu/data/sys.7582", - "data/AlMgCu/data/sys.759", - "data/AlMgCu/data/sys.7592", - "data/AlMgCu/data/sys.7594", - "data/AlMgCu/data/sys.760", - "data/AlMgCu/data/sys.7604", - "data/AlMgCu/data/sys.761", - "data/AlMgCu/data/sys.7610", - "data/AlMgCu/data/sys.7618", - "data/AlMgCu/data/sys.762", - "data/AlMgCu/data/sys.763", - "data/AlMgCu/data/sys.764", - "data/AlMgCu/data/sys.7642", - "data/AlMgCu/data/sys.765", - "data/AlMgCu/data/sys.7650", - "data/AlMgCu/data/sys.7657", - "data/AlMgCu/data/sys.7658", - "data/AlMgCu/data/sys.766", - "data/AlMgCu/data/sys.767", - "data/AlMgCu/data/sys.7676", - "data/AlMgCu/data/sys.768", - "data/AlMgCu/data/sys.7680", - "data/AlMgCu/data/sys.7684", - "data/AlMgCu/data/sys.769", - "data/AlMgCu/data/sys.770", - "data/AlMgCu/data/sys.771", - "data/AlMgCu/data/sys.7712", - "data/AlMgCu/data/sys.7716", - "data/AlMgCu/data/sys.772", - "data/AlMgCu/data/sys.7720", - "data/AlMgCu/data/sys.773", - "data/AlMgCu/data/sys.774", - "data/AlMgCu/data/sys.7740", - "data/AlMgCu/data/sys.7748", - "data/AlMgCu/data/sys.775", - "data/AlMgCu/data/sys.776", - "data/AlMgCu/data/sys.777", - "data/AlMgCu/data/sys.7772", - "data/AlMgCu/data/sys.778", - "data/AlMgCu/data/sys.779", - "data/AlMgCu/data/sys.7796", - "data/AlMgCu/data/sys.780", - "data/AlMgCu/data/sys.7802", - "data/AlMgCu/data/sys.7804", - "data/AlMgCu/data/sys.781", - "data/AlMgCu/data/sys.7810", - "data/AlMgCu/data/sys.7812", - "data/AlMgCu/data/sys.782", - "data/AlMgCu/data/sys.783", - "data/AlMgCu/data/sys.784", - "data/AlMgCu/data/sys.7842", - "data/AlMgCu/data/sys.785", - "data/AlMgCu/data/sys.7850", - "data/AlMgCu/data/sys.7858", - "data/AlMgCu/data/sys.786", - "data/AlMgCu/data/sys.7860", - "data/AlMgCu/data/sys.7866", - "data/AlMgCu/data/sys.7868", - "data/AlMgCu/data/sys.787", - "data/AlMgCu/data/sys.788", - "data/AlMgCu/data/sys.789", - "data/AlMgCu/data/sys.790", - "data/AlMgCu/data/sys.791", - "data/AlMgCu/data/sys.792", - "data/AlMgCu/data/sys.793", - "data/AlMgCu/data/sys.7936", - "data/AlMgCu/data/sys.795", - "data/AlMgCu/data/sys.7952", - "data/AlMgCu/data/sys.797", - "data/AlMgCu/data/sys.798", - "data/AlMgCu/data/sys.799", - "data/AlMgCu/data/sys.801", - "data/AlMgCu/data/sys.802", - "data/AlMgCu/data/sys.803", - "data/AlMgCu/data/sys.804", - "data/AlMgCu/data/sys.805", - "data/AlMgCu/data/sys.806", - "data/AlMgCu/data/sys.807", - "data/AlMgCu/data/sys.808", - "data/AlMgCu/data/sys.809", - "data/AlMgCu/data/sys.810", - "data/AlMgCu/data/sys.811", - "data/AlMgCu/data/sys.813", - "data/AlMgCu/data/sys.814", - "data/AlMgCu/data/sys.815", - "data/AlMgCu/data/sys.817", - "data/AlMgCu/data/sys.818", - "data/AlMgCu/data/sys.819", - "data/AlMgCu/data/sys.820", - "data/AlMgCu/data/sys.821", - "data/AlMgCu/data/sys.822", - "data/AlMgCu/data/sys.824", - "data/AlMgCu/data/sys.825", - "data/AlMgCu/data/sys.826", - "data/AlMgCu/data/sys.827", - "data/AlMgCu/data/sys.828", - "data/AlMgCu/data/sys.829", - "data/AlMgCu/data/sys.830", - "data/AlMgCu/data/sys.831", - "data/AlMgCu/data/sys.832", - "data/AlMgCu/data/sys.834", - "data/AlMgCu/data/sys.835", - "data/AlMgCu/data/sys.836", - "data/AlMgCu/data/sys.837", - "data/AlMgCu/data/sys.838", - "data/AlMgCu/data/sys.839", - "data/AlMgCu/data/sys.840", - "data/AlMgCu/data/sys.841", - "data/AlMgCu/data/sys.842", - "data/AlMgCu/data/sys.843", - "data/AlMgCu/data/sys.844", - "data/AlMgCu/data/sys.846", - "data/AlMgCu/data/sys.847", - "data/AlMgCu/data/sys.848", - "data/AlMgCu/data/sys.850", - "data/AlMgCu/data/sys.851", - "data/AlMgCu/data/sys.852", - "data/AlMgCu/data/sys.853", - "data/AlMgCu/data/sys.854", - "data/AlMgCu/data/sys.855", - "data/AlMgCu/data/sys.856", - "data/AlMgCu/data/sys.857", - "data/AlMgCu/data/sys.858", - "data/AlMgCu/data/sys.860", - "data/AlMgCu/data/sys.861", - "data/AlMgCu/data/sys.862", - "data/AlMgCu/data/sys.863", - "data/AlMgCu/data/sys.864", - "data/AlMgCu/data/sys.865", - "data/AlMgCu/data/sys.867", - "data/AlMgCu/data/sys.868", - "data/AlMgCu/data/sys.869", - "data/AlMgCu/data/sys.870", - "data/AlMgCu/data/sys.871", - "data/AlMgCu/data/sys.872", - "data/AlMgCu/data/sys.874", - "data/AlMgCu/data/sys.875", - "data/AlMgCu/data/sys.876", - "data/AlMgCu/data/sys.877", - "data/AlMgCu/data/sys.878", - "data/AlMgCu/data/sys.879", - "data/AlMgCu/data/sys.880", - "data/AlMgCu/data/sys.881", - "data/AlMgCu/data/sys.882", - "data/AlMgCu/data/sys.883", - "data/AlMgCu/data/sys.884", - "data/AlMgCu/data/sys.885", - "data/AlMgCu/data/sys.887", - "data/AlMgCu/data/sys.888", - "data/AlMgCu/data/sys.890", - "data/AlMgCu/data/sys.891", - "data/AlMgCu/data/sys.892", - "data/AlMgCu/data/sys.893", - "data/AlMgCu/data/sys.894", - "data/AlMgCu/data/sys.896", - "data/AlMgCu/data/sys.897", - "data/AlMgCu/data/sys.898", - "data/AlMgCu/data/sys.899", - "data/AlMgCu/data/sys.900", - "data/AlMgCu/data/sys.901", - "data/AlMgCu/data/sys.902", - "data/AlMgCu/data/sys.903", - "data/AlMgCu/data/sys.9034", - "data/AlMgCu/data/sys.9035", - "data/AlMgCu/data/sys.904", - "data/AlMgCu/data/sys.905", - "data/AlMgCu/data/sys.9050", - "data/AlMgCu/data/sys.9058", - "data/AlMgCu/data/sys.9066", - "data/AlMgCu/data/sys.9072", - "data/AlMgCu/data/sys.9074", - "data/AlMgCu/data/sys.908", - "data/AlMgCu/data/sys.9082", - "data/AlMgCu/data/sys.909", - "data/AlMgCu/data/sys.9099", - "data/AlMgCu/data/sys.910", - "data/AlMgCu/data/sys.9105", - "data/AlMgCu/data/sys.911", - "data/AlMgCu/data/sys.9114", - "data/AlMgCu/data/sys.9118", - "data/AlMgCu/data/sys.912", - "data/AlMgCu/data/sys.9121", - "data/AlMgCu/data/sys.9136", - "data/AlMgCu/data/sys.9137", - "data/AlMgCu/data/sys.914", - "data/AlMgCu/data/sys.9146", - "data/AlMgCu/data/sys.915", - "data/AlMgCu/data/sys.9154", - "data/AlMgCu/data/sys.9155", - "data/AlMgCu/data/sys.916", - "data/AlMgCu/data/sys.9162", - "data/AlMgCu/data/sys.917", - "data/AlMgCu/data/sys.918", - "data/AlMgCu/data/sys.9186", - "data/AlMgCu/data/sys.919", - "data/AlMgCu/data/sys.9196", - "data/AlMgCu/data/sys.920", - "data/AlMgCu/data/sys.921", - "data/AlMgCu/data/sys.9210", - "data/AlMgCu/data/sys.9217", - "data/AlMgCu/data/sys.9218", - "data/AlMgCu/data/sys.922", - "data/AlMgCu/data/sys.923", - "data/AlMgCu/data/sys.9232", - "data/AlMgCu/data/sys.9234", - "data/AlMgCu/data/sys.924", - "data/AlMgCu/data/sys.925", - "data/AlMgCu/data/sys.9250", - "data/AlMgCu/data/sys.926", - "data/AlMgCu/data/sys.9267", - "data/AlMgCu/data/sys.927", - "data/AlMgCu/data/sys.9274", - "data/AlMgCu/data/sys.928", - "data/AlMgCu/data/sys.9288", - "data/AlMgCu/data/sys.9296", - "data/AlMgCu/data/sys.9297", - "data/AlMgCu/data/sys.930", - "data/AlMgCu/data/sys.931", - "data/AlMgCu/data/sys.932", - "data/AlMgCu/data/sys.933", - "data/AlMgCu/data/sys.9331", - "data/AlMgCu/data/sys.934", - "data/AlMgCu/data/sys.9342", - "data/AlMgCu/data/sys.935", - "data/AlMgCu/data/sys.9356", - "data/AlMgCu/data/sys.936", - "data/AlMgCu/data/sys.937", - "data/AlMgCu/data/sys.938", - "data/AlMgCu/data/sys.9386", - "data/AlMgCu/data/sys.939", - "data/AlMgCu/data/sys.940", - "data/AlMgCu/data/sys.9409", - "data/AlMgCu/data/sys.9418", - "data/AlMgCu/data/sys.942", - "data/AlMgCu/data/sys.943", - "data/AlMgCu/data/sys.944", - "data/AlMgCu/data/sys.9442", - "data/AlMgCu/data/sys.9444", - "data/AlMgCu/data/sys.945", - "data/AlMgCu/data/sys.946", - "data/AlMgCu/data/sys.9467", - "data/AlMgCu/data/sys.947", - "data/AlMgCu/data/sys.948", - "data/AlMgCu/data/sys.949", - "data/AlMgCu/data/sys.950", - "data/AlMgCu/data/sys.9506", - "data/AlMgCu/data/sys.951", - "data/AlMgCu/data/sys.952", - "data/AlMgCu/data/sys.953", - "data/AlMgCu/data/sys.954", - "data/AlMgCu/data/sys.955", - "data/AlMgCu/data/sys.956", - "data/AlMgCu/data/sys.957", - "data/AlMgCu/data/sys.9572", - "data/AlMgCu/data/sys.958", - "data/AlMgCu/data/sys.959", - "data/AlMgCu/data/sys.960", - "data/AlMgCu/data/sys.9604", - "data/AlMgCu/data/sys.963", - "data/AlMgCu/data/sys.964", - "data/AlMgCu/data/sys.965", - "data/AlMgCu/data/sys.966", - "data/AlMgCu/data/sys.967", - "data/AlMgCu/data/sys.968", - "data/AlMgCu/data/sys.969", - "data/AlMgCu/data/sys.970", - "data/AlMgCu/data/sys.9700", - "data/AlMgCu/data/sys.971", - "data/AlMgCu/data/sys.972", - "data/AlMgCu/data/sys.9728", - "data/AlMgCu/data/sys.973", - "data/AlMgCu/data/sys.974", - "data/AlMgCu/data/sys.975", - "data/AlMgCu/data/sys.976", - "data/AlMgCu/data/sys.978", - "data/AlMgCu/data/sys.979", - "data/AlMgCu/data/sys.980", - "data/AlMgCu/data/sys.982", - "data/AlMgCu/data/sys.983", - "data/AlMgCu/data/sys.984", - "data/AlMgCu/data/sys.986", - "data/AlMgCu/data/sys.988", - "data/AlMgCu/data/sys.9884", - "data/AlMgCu/data/sys.989", - "data/AlMgCu/data/sys.990", - "data/AlMgCu/data/sys.991", - "data/AlMgCu/data/sys.992", - "data/AlMgCu/data/sys.993", - "data/AlMgCu/data/sys.995", - "data/AlMgCu/data/sys.9968", - "data/AlMgCu/data/sys.9969", - "data/AlMgCu/data/sys.997", - "data/AlMgCu/data/sys.9971", - "data/AlMgCu/data/sys.9977", - "data/AlMgCu/data/sys.9978", - "data/AlMgCu/data/sys.998", - "data/AlMgCu/data/sys.9980", - "data/AlMgCu/data/sys.9984", - "data/AlMgCu/data/sys.9986", - "data/AlMgCu/data/sys.999", - "data/AlMgCu/data/sys.9990", - "data/AlMgCu/data/sys.9992", - "data/AlMgCu/data/sys.9997" - ], - "batch_size": "auto" + "loss": { + "start_pref_e": 0.02, + "limit_pref_e": 2, + "start_pref_f": 1000, + "limit_pref_f": 1, + "start_pref_v": 0.01, + "limit_pref_v": 1 }, - "validation_data": { - "systems": [ - "data/AlMgCu/data/init.008", - "data/AlMgCu/data/init.013", - "data/AlMgCu/data/init.029", - "data/AlMgCu/data/init.031", - "data/AlMgCu/data/init.052", - "data/AlMgCu/data/init.053", - "data/AlMgCu/data/init.054", - "data/AlMgCu/data/init.055", - "data/AlMgCu/data/init.066", - "data/AlMgCu/data/init.077", - "data/AlMgCu/data/init.081", - "data/AlMgCu/data/init.084", - "data/AlMgCu/data/init.100", - "data/AlMgCu/data/init.1004", - "data/AlMgCu/data/init.1010", - "data/AlMgCu/data/init.1022", - "data/AlMgCu/data/init.1024", - "data/AlMgCu/data/init.1034", - "data/AlMgCu/data/init.1036", - "data/AlMgCu/data/init.1047", - "data/AlMgCu/data/init.1057", - "data/AlMgCu/data/init.1065", - "data/AlMgCu/data/init.1068", - "data/AlMgCu/data/init.1069", - "data/AlMgCu/data/init.1078", - "data/AlMgCu/data/init.1079", - "data/AlMgCu/data/init.108", - "data/AlMgCu/data/init.1081", - "data/AlMgCu/data/init.1091", - "data/AlMgCu/data/init.1092", - "data/AlMgCu/data/init.1100", - "data/AlMgCu/data/init.1130", - "data/AlMgCu/data/init.1139", - "data/AlMgCu/data/init.1141", - "data/AlMgCu/data/init.1142", - "data/AlMgCu/data/init.115", - "data/AlMgCu/data/init.1156", - "data/AlMgCu/data/init.1161", - "data/AlMgCu/data/init.1164", - "data/AlMgCu/data/init.117", - "data/AlMgCu/data/init.1180", - "data/AlMgCu/data/init.1199", - "data/AlMgCu/data/init.1215", - "data/AlMgCu/data/init.1238", - "data/AlMgCu/data/init.1267", - "data/AlMgCu/data/init.1279", - "data/AlMgCu/data/init.130", - "data/AlMgCu/data/init.133", - "data/AlMgCu/data/init.145", - "data/AlMgCu/data/init.151", - "data/AlMgCu/data/init.163", - "data/AlMgCu/data/init.209", - "data/AlMgCu/data/init.215", - "data/AlMgCu/data/init.216", - "data/AlMgCu/data/init.225", - "data/AlMgCu/data/init.249", - "data/AlMgCu/data/init.261", - "data/AlMgCu/data/init.268", - "data/AlMgCu/data/init.272", - "data/AlMgCu/data/init.286", - "data/AlMgCu/data/init.289", - "data/AlMgCu/data/init.300", - "data/AlMgCu/data/init.301", - "data/AlMgCu/data/init.322", - "data/AlMgCu/data/init.323", - "data/AlMgCu/data/init.335", - "data/AlMgCu/data/init.343", - "data/AlMgCu/data/init.354", - "data/AlMgCu/data/init.360", - "data/AlMgCu/data/init.405", - "data/AlMgCu/data/init.424", - "data/AlMgCu/data/init.425", - "data/AlMgCu/data/init.427", - "data/AlMgCu/data/init.437", - "data/AlMgCu/data/init.447", - "data/AlMgCu/data/init.450", - "data/AlMgCu/data/init.452", - "data/AlMgCu/data/init.455", - "data/AlMgCu/data/init.465", - "data/AlMgCu/data/init.477", - "data/AlMgCu/data/init.481", - "data/AlMgCu/data/init.498", - "data/AlMgCu/data/init.500", - "data/AlMgCu/data/init.501", - "data/AlMgCu/data/init.525", - "data/AlMgCu/data/init.526", - "data/AlMgCu/data/init.531", - "data/AlMgCu/data/init.545", - "data/AlMgCu/data/init.550", - "data/AlMgCu/data/init.562", - "data/AlMgCu/data/init.564", - "data/AlMgCu/data/init.568", - "data/AlMgCu/data/init.586", - "data/AlMgCu/data/init.612", - "data/AlMgCu/data/init.623", - "data/AlMgCu/data/init.637", - "data/AlMgCu/data/init.655", - "data/AlMgCu/data/init.660", - "data/AlMgCu/data/init.662", - "data/AlMgCu/data/init.670", - "data/AlMgCu/data/init.688", - "data/AlMgCu/data/init.705", - "data/AlMgCu/data/init.711", - "data/AlMgCu/data/init.716", - "data/AlMgCu/data/init.723", - "data/AlMgCu/data/init.742", - "data/AlMgCu/data/init.748", - "data/AlMgCu/data/init.750", - "data/AlMgCu/data/init.761", - "data/AlMgCu/data/init.763", - "data/AlMgCu/data/init.771", - "data/AlMgCu/data/init.782", - "data/AlMgCu/data/init.798", - "data/AlMgCu/data/init.815", - "data/AlMgCu/data/init.818", - "data/AlMgCu/data/init.823", - "data/AlMgCu/data/init.828", - "data/AlMgCu/data/init.829", - "data/AlMgCu/data/init.831", - "data/AlMgCu/data/init.841", - "data/AlMgCu/data/init.846", - "data/AlMgCu/data/init.861", - "data/AlMgCu/data/init.878", - "data/AlMgCu/data/init.893", - "data/AlMgCu/data/init.904", - "data/AlMgCu/data/init.909", - "data/AlMgCu/data/init.920", - "data/AlMgCu/data/init.921", - "data/AlMgCu/data/init.932", - "data/AlMgCu/data/init.936", - "data/AlMgCu/data/init.954", - "data/AlMgCu/data/init.976", - "data/AlMgCu/data/init.992", - "data/AlMgCu/data/init.998", - "data/AlMgCu/data/sys.003", - "data/AlMgCu/data/sys.005", - "data/AlMgCu/data/sys.009", - "data/AlMgCu/data/sys.013", - "data/AlMgCu/data/sys.014", - "data/AlMgCu/data/sys.024", - "data/AlMgCu/data/sys.025", - "data/AlMgCu/data/sys.035", - "data/AlMgCu/data/sys.047", - "data/AlMgCu/data/sys.068", - "data/AlMgCu/data/sys.069", - "data/AlMgCu/data/sys.091", - "data/AlMgCu/data/sys.096", - "data/AlMgCu/data/sys.10002", - "data/AlMgCu/data/sys.10120", - "data/AlMgCu/data/sys.10139", - "data/AlMgCu/data/sys.102", - "data/AlMgCu/data/sys.1028", - "data/AlMgCu/data/sys.10281", - "data/AlMgCu/data/sys.10346", - "data/AlMgCu/data/sys.10354", - "data/AlMgCu/data/sys.1040", - "data/AlMgCu/data/sys.10434", - "data/AlMgCu/data/sys.1055", - "data/AlMgCu/data/sys.1057", - "data/AlMgCu/data/sys.10570", - "data/AlMgCu/data/sys.1058", - "data/AlMgCu/data/sys.10609", - "data/AlMgCu/data/sys.10748", - "data/AlMgCu/data/sys.1081", - "data/AlMgCu/data/sys.10897", - "data/AlMgCu/data/sys.10908", - "data/AlMgCu/data/sys.1093", - "data/AlMgCu/data/sys.10948", - "data/AlMgCu/data/sys.10954", - "data/AlMgCu/data/sys.1096", - "data/AlMgCu/data/sys.10988", - "data/AlMgCu/data/sys.11005", - "data/AlMgCu/data/sys.11012", - "data/AlMgCu/data/sys.11026", - "data/AlMgCu/data/sys.11061", - "data/AlMgCu/data/sys.11067", - "data/AlMgCu/data/sys.11073", - "data/AlMgCu/data/sys.11084", - "data/AlMgCu/data/sys.1109", - "data/AlMgCu/data/sys.11101", - "data/AlMgCu/data/sys.11113", - "data/AlMgCu/data/sys.11130", - "data/AlMgCu/data/sys.1118", - "data/AlMgCu/data/sys.1119", - "data/AlMgCu/data/sys.11252", - "data/AlMgCu/data/sys.11264", - "data/AlMgCu/data/sys.11305", - "data/AlMgCu/data/sys.11336", - "data/AlMgCu/data/sys.1142", - "data/AlMgCu/data/sys.1153", - "data/AlMgCu/data/sys.1156", - "data/AlMgCu/data/sys.1190", - "data/AlMgCu/data/sys.1192", - "data/AlMgCu/data/sys.1196", - "data/AlMgCu/data/sys.1207", - "data/AlMgCu/data/sys.1231", - "data/AlMgCu/data/sys.1235", - "data/AlMgCu/data/sys.1253", - "data/AlMgCu/data/sys.1267", - "data/AlMgCu/data/sys.1305", - "data/AlMgCu/data/sys.1315", - "data/AlMgCu/data/sys.1320", - "data/AlMgCu/data/sys.133", - "data/AlMgCu/data/sys.134", - "data/AlMgCu/data/sys.1375", - "data/AlMgCu/data/sys.1378", - "data/AlMgCu/data/sys.1380", - "data/AlMgCu/data/sys.1386", - "data/AlMgCu/data/sys.1393", - "data/AlMgCu/data/sys.1402", - "data/AlMgCu/data/sys.1408", - "data/AlMgCu/data/sys.1417", - "data/AlMgCu/data/sys.1426", - "data/AlMgCu/data/sys.146", - "data/AlMgCu/data/sys.1460", - "data/AlMgCu/data/sys.1472", - "data/AlMgCu/data/sys.1481", - "data/AlMgCu/data/sys.1482", - "data/AlMgCu/data/sys.1486", - "data/AlMgCu/data/sys.1493", - "data/AlMgCu/data/sys.150", - "data/AlMgCu/data/sys.1514", - "data/AlMgCu/data/sys.1553", - "data/AlMgCu/data/sys.1584", - "data/AlMgCu/data/sys.1593", - "data/AlMgCu/data/sys.1601", - "data/AlMgCu/data/sys.1603", - "data/AlMgCu/data/sys.1607", - "data/AlMgCu/data/sys.1628", - "data/AlMgCu/data/sys.1631", - "data/AlMgCu/data/sys.1647", - "data/AlMgCu/data/sys.1650", - "data/AlMgCu/data/sys.1651", - "data/AlMgCu/data/sys.1668", - "data/AlMgCu/data/sys.1671", - "data/AlMgCu/data/sys.1679", - "data/AlMgCu/data/sys.1683", - "data/AlMgCu/data/sys.1684", - "data/AlMgCu/data/sys.1687", - "data/AlMgCu/data/sys.1688", - "data/AlMgCu/data/sys.1690", - "data/AlMgCu/data/sys.1702", - "data/AlMgCu/data/sys.1704", - "data/AlMgCu/data/sys.1711", - "data/AlMgCu/data/sys.1719", - "data/AlMgCu/data/sys.1788", - "data/AlMgCu/data/sys.1793", - "data/AlMgCu/data/sys.1803", - "data/AlMgCu/data/sys.1804", - "data/AlMgCu/data/sys.1810", - "data/AlMgCu/data/sys.1825", - "data/AlMgCu/data/sys.1841", - "data/AlMgCu/data/sys.1844", - "data/AlMgCu/data/sys.1851", - "data/AlMgCu/data/sys.1871", - "data/AlMgCu/data/sys.1873", - "data/AlMgCu/data/sys.1881", - "data/AlMgCu/data/sys.1921", - "data/AlMgCu/data/sys.1932", - "data/AlMgCu/data/sys.1934", - "data/AlMgCu/data/sys.1937", - "data/AlMgCu/data/sys.194", - "data/AlMgCu/data/sys.1945", - "data/AlMgCu/data/sys.1950", - "data/AlMgCu/data/sys.1969", - "data/AlMgCu/data/sys.1976", - "data/AlMgCu/data/sys.1978", - "data/AlMgCu/data/sys.2006", - "data/AlMgCu/data/sys.2008", - "data/AlMgCu/data/sys.2010", - "data/AlMgCu/data/sys.2019", - "data/AlMgCu/data/sys.2021", - "data/AlMgCu/data/sys.2026", - "data/AlMgCu/data/sys.2045", - "data/AlMgCu/data/sys.205", - "data/AlMgCu/data/sys.207", - "data/AlMgCu/data/sys.2076", - "data/AlMgCu/data/sys.2077", - "data/AlMgCu/data/sys.2115", - "data/AlMgCu/data/sys.2122", - "data/AlMgCu/data/sys.2128", - "data/AlMgCu/data/sys.2131", - "data/AlMgCu/data/sys.2135", - "data/AlMgCu/data/sys.2155", - "data/AlMgCu/data/sys.2159", - "data/AlMgCu/data/sys.2171", - "data/AlMgCu/data/sys.2172", - "data/AlMgCu/data/sys.2175", - "data/AlMgCu/data/sys.2183", - "data/AlMgCu/data/sys.219", - "data/AlMgCu/data/sys.2192", - "data/AlMgCu/data/sys.2193", - "data/AlMgCu/data/sys.2200", - "data/AlMgCu/data/sys.2206", - "data/AlMgCu/data/sys.2232", - "data/AlMgCu/data/sys.2251", - "data/AlMgCu/data/sys.2262", - "data/AlMgCu/data/sys.2268", - "data/AlMgCu/data/sys.2274", - "data/AlMgCu/data/sys.2283", - "data/AlMgCu/data/sys.2287", - "data/AlMgCu/data/sys.2293", - "data/AlMgCu/data/sys.231", - "data/AlMgCu/data/sys.2315", - "data/AlMgCu/data/sys.2319", - "data/AlMgCu/data/sys.2347", - "data/AlMgCu/data/sys.2355", - "data/AlMgCu/data/sys.2368", - "data/AlMgCu/data/sys.2370", - "data/AlMgCu/data/sys.239", - "data/AlMgCu/data/sys.2404", - "data/AlMgCu/data/sys.2416", - "data/AlMgCu/data/sys.2418", - "data/AlMgCu/data/sys.2442", - "data/AlMgCu/data/sys.2446", - "data/AlMgCu/data/sys.2449", - "data/AlMgCu/data/sys.2472", - "data/AlMgCu/data/sys.2475", - "data/AlMgCu/data/sys.2491", - "data/AlMgCu/data/sys.2500", - "data/AlMgCu/data/sys.2507", - "data/AlMgCu/data/sys.2547", - "data/AlMgCu/data/sys.2552", - "data/AlMgCu/data/sys.2557", - "data/AlMgCu/data/sys.259", - "data/AlMgCu/data/sys.2597", - "data/AlMgCu/data/sys.261", - "data/AlMgCu/data/sys.2612", - "data/AlMgCu/data/sys.2617", - "data/AlMgCu/data/sys.2674", - "data/AlMgCu/data/sys.2678", - "data/AlMgCu/data/sys.2686", - "data/AlMgCu/data/sys.2687", - "data/AlMgCu/data/sys.2688", - "data/AlMgCu/data/sys.2689", - "data/AlMgCu/data/sys.2705", - "data/AlMgCu/data/sys.2714", - "data/AlMgCu/data/sys.2763", - "data/AlMgCu/data/sys.2772", - "data/AlMgCu/data/sys.2775", - "data/AlMgCu/data/sys.2786", - "data/AlMgCu/data/sys.2808", - "data/AlMgCu/data/sys.2821", - "data/AlMgCu/data/sys.2823", - "data/AlMgCu/data/sys.2831", - "data/AlMgCu/data/sys.2867", - "data/AlMgCu/data/sys.2882", - "data/AlMgCu/data/sys.2892", - "data/AlMgCu/data/sys.290", - "data/AlMgCu/data/sys.2910", - "data/AlMgCu/data/sys.2944", - "data/AlMgCu/data/sys.2945", - "data/AlMgCu/data/sys.2966", - "data/AlMgCu/data/sys.2971", - "data/AlMgCu/data/sys.2990", - "data/AlMgCu/data/sys.2992", - "data/AlMgCu/data/sys.2994", - "data/AlMgCu/data/sys.3029", - "data/AlMgCu/data/sys.3037", - "data/AlMgCu/data/sys.3055", - "data/AlMgCu/data/sys.3068", - "data/AlMgCu/data/sys.307", - "data/AlMgCu/data/sys.3072", - "data/AlMgCu/data/sys.3076", - "data/AlMgCu/data/sys.3089", - "data/AlMgCu/data/sys.310", - "data/AlMgCu/data/sys.3105", - "data/AlMgCu/data/sys.3113", - "data/AlMgCu/data/sys.3116", - "data/AlMgCu/data/sys.3122", - "data/AlMgCu/data/sys.3137", - "data/AlMgCu/data/sys.3140", - "data/AlMgCu/data/sys.3141", - "data/AlMgCu/data/sys.3152", - "data/AlMgCu/data/sys.3169", - "data/AlMgCu/data/sys.3173", - "data/AlMgCu/data/sys.319", - "data/AlMgCu/data/sys.3197", - "data/AlMgCu/data/sys.320", - "data/AlMgCu/data/sys.3201", - "data/AlMgCu/data/sys.3219", - "data/AlMgCu/data/sys.3234", - "data/AlMgCu/data/sys.324", - "data/AlMgCu/data/sys.3260", - "data/AlMgCu/data/sys.3262", - "data/AlMgCu/data/sys.3271", - "data/AlMgCu/data/sys.3273", - "data/AlMgCu/data/sys.328", - "data/AlMgCu/data/sys.3281", - "data/AlMgCu/data/sys.3285", - "data/AlMgCu/data/sys.3288", - "data/AlMgCu/data/sys.3324", - "data/AlMgCu/data/sys.3354", - "data/AlMgCu/data/sys.3355", - "data/AlMgCu/data/sys.3359", - "data/AlMgCu/data/sys.3364", - "data/AlMgCu/data/sys.3366", - "data/AlMgCu/data/sys.3371", - "data/AlMgCu/data/sys.3373", - "data/AlMgCu/data/sys.3383", - "data/AlMgCu/data/sys.3403", - "data/AlMgCu/data/sys.341", - "data/AlMgCu/data/sys.3411", - "data/AlMgCu/data/sys.3415", - "data/AlMgCu/data/sys.3430", - "data/AlMgCu/data/sys.3440", - "data/AlMgCu/data/sys.347", - "data/AlMgCu/data/sys.3480", - "data/AlMgCu/data/sys.349", - "data/AlMgCu/data/sys.3501", - "data/AlMgCu/data/sys.3506", - "data/AlMgCu/data/sys.3508", - "data/AlMgCu/data/sys.3515", - "data/AlMgCu/data/sys.3523", - "data/AlMgCu/data/sys.3527", - "data/AlMgCu/data/sys.3531", - "data/AlMgCu/data/sys.3533", - "data/AlMgCu/data/sys.354", - "data/AlMgCu/data/sys.3543", - "data/AlMgCu/data/sys.359", - "data/AlMgCu/data/sys.3599", - "data/AlMgCu/data/sys.3614", - "data/AlMgCu/data/sys.3634", - "data/AlMgCu/data/sys.3650", - "data/AlMgCu/data/sys.3674", - "data/AlMgCu/data/sys.3679", - "data/AlMgCu/data/sys.3705", - "data/AlMgCu/data/sys.3708", - "data/AlMgCu/data/sys.3727", - "data/AlMgCu/data/sys.3732", - "data/AlMgCu/data/sys.3733", - "data/AlMgCu/data/sys.3738", - "data/AlMgCu/data/sys.3745", - "data/AlMgCu/data/sys.3748", - "data/AlMgCu/data/sys.3755", - "data/AlMgCu/data/sys.3758", - "data/AlMgCu/data/sys.3763", - "data/AlMgCu/data/sys.3767", - "data/AlMgCu/data/sys.3775", - "data/AlMgCu/data/sys.3807", - "data/AlMgCu/data/sys.382", - "data/AlMgCu/data/sys.3848", - "data/AlMgCu/data/sys.3864", - "data/AlMgCu/data/sys.3878", - "data/AlMgCu/data/sys.3884", - "data/AlMgCu/data/sys.3886", - "data/AlMgCu/data/sys.3903", - "data/AlMgCu/data/sys.3906", - "data/AlMgCu/data/sys.392", - "data/AlMgCu/data/sys.3925", - "data/AlMgCu/data/sys.3928", - "data/AlMgCu/data/sys.3931", - "data/AlMgCu/data/sys.3932", - "data/AlMgCu/data/sys.3939", - "data/AlMgCu/data/sys.394", - "data/AlMgCu/data/sys.3957", - "data/AlMgCu/data/sys.3958", - "data/AlMgCu/data/sys.3960", - "data/AlMgCu/data/sys.3972", - "data/AlMgCu/data/sys.3974", - "data/AlMgCu/data/sys.3976", - "data/AlMgCu/data/sys.3995", - "data/AlMgCu/data/sys.3996", - "data/AlMgCu/data/sys.3998", - "data/AlMgCu/data/sys.4025", - "data/AlMgCu/data/sys.4027", - "data/AlMgCu/data/sys.4034", - "data/AlMgCu/data/sys.4035", - "data/AlMgCu/data/sys.4043", - "data/AlMgCu/data/sys.4051", - "data/AlMgCu/data/sys.4053", - "data/AlMgCu/data/sys.4064", - "data/AlMgCu/data/sys.4065", - "data/AlMgCu/data/sys.4077", - "data/AlMgCu/data/sys.4103", - "data/AlMgCu/data/sys.4109", - "data/AlMgCu/data/sys.4123", - "data/AlMgCu/data/sys.4124", - "data/AlMgCu/data/sys.4139", - "data/AlMgCu/data/sys.4156", - "data/AlMgCu/data/sys.4160", - "data/AlMgCu/data/sys.417", - "data/AlMgCu/data/sys.4173", - "data/AlMgCu/data/sys.4179", - "data/AlMgCu/data/sys.418", - "data/AlMgCu/data/sys.4189", - "data/AlMgCu/data/sys.4202", - "data/AlMgCu/data/sys.4228", - "data/AlMgCu/data/sys.4243", - "data/AlMgCu/data/sys.4265", - "data/AlMgCu/data/sys.427", - "data/AlMgCu/data/sys.4276", - "data/AlMgCu/data/sys.428", - "data/AlMgCu/data/sys.4285", - "data/AlMgCu/data/sys.4297", - "data/AlMgCu/data/sys.4304", - "data/AlMgCu/data/sys.4306", - "data/AlMgCu/data/sys.4309", - "data/AlMgCu/data/sys.431", - "data/AlMgCu/data/sys.4320", - "data/AlMgCu/data/sys.4321", - "data/AlMgCu/data/sys.4335", - "data/AlMgCu/data/sys.4351", - "data/AlMgCu/data/sys.4368", - "data/AlMgCu/data/sys.4369", - "data/AlMgCu/data/sys.4380", - "data/AlMgCu/data/sys.4384", - "data/AlMgCu/data/sys.4397", - "data/AlMgCu/data/sys.4400", - "data/AlMgCu/data/sys.4418", - "data/AlMgCu/data/sys.4424", - "data/AlMgCu/data/sys.4434", - "data/AlMgCu/data/sys.4444", - "data/AlMgCu/data/sys.446", - "data/AlMgCu/data/sys.4463", - "data/AlMgCu/data/sys.4466", - "data/AlMgCu/data/sys.4468", - "data/AlMgCu/data/sys.4469", - "data/AlMgCu/data/sys.4478", - "data/AlMgCu/data/sys.4487", - "data/AlMgCu/data/sys.4489", - "data/AlMgCu/data/sys.4504", - "data/AlMgCu/data/sys.4508", - "data/AlMgCu/data/sys.4515", - "data/AlMgCu/data/sys.4518", - "data/AlMgCu/data/sys.4527", - "data/AlMgCu/data/sys.4533", - "data/AlMgCu/data/sys.4534", - "data/AlMgCu/data/sys.4548", - "data/AlMgCu/data/sys.4552", - "data/AlMgCu/data/sys.4558", - "data/AlMgCu/data/sys.4586", - "data/AlMgCu/data/sys.4592", - "data/AlMgCu/data/sys.4634", - "data/AlMgCu/data/sys.4637", - "data/AlMgCu/data/sys.465", - "data/AlMgCu/data/sys.4661", - "data/AlMgCu/data/sys.4664", - "data/AlMgCu/data/sys.4673", - "data/AlMgCu/data/sys.4702", - "data/AlMgCu/data/sys.4706", - "data/AlMgCu/data/sys.4724", - "data/AlMgCu/data/sys.4729", - "data/AlMgCu/data/sys.474", - "data/AlMgCu/data/sys.4745", - "data/AlMgCu/data/sys.4746", - "data/AlMgCu/data/sys.4816", - "data/AlMgCu/data/sys.4856", - "data/AlMgCu/data/sys.4866", - "data/AlMgCu/data/sys.487", - "data/AlMgCu/data/sys.4915", - "data/AlMgCu/data/sys.4921", - "data/AlMgCu/data/sys.4923", - "data/AlMgCu/data/sys.4954", - "data/AlMgCu/data/sys.4962", - "data/AlMgCu/data/sys.4969", - "data/AlMgCu/data/sys.4975", - "data/AlMgCu/data/sys.4986", - "data/AlMgCu/data/sys.5006", - "data/AlMgCu/data/sys.503", - "data/AlMgCu/data/sys.5172", - "data/AlMgCu/data/sys.5196", - "data/AlMgCu/data/sys.5200", - "data/AlMgCu/data/sys.524", - "data/AlMgCu/data/sys.5242", - "data/AlMgCu/data/sys.527", - "data/AlMgCu/data/sys.5320", - "data/AlMgCu/data/sys.564", - "data/AlMgCu/data/sys.568", - "data/AlMgCu/data/sys.588", - "data/AlMgCu/data/sys.591", - "data/AlMgCu/data/sys.5942", - "data/AlMgCu/data/sys.5952", - "data/AlMgCu/data/sys.5966", - "data/AlMgCu/data/sys.5974", - "data/AlMgCu/data/sys.5978", - "data/AlMgCu/data/sys.5982", - "data/AlMgCu/data/sys.5986", - "data/AlMgCu/data/sys.5996", - "data/AlMgCu/data/sys.6003", - "data/AlMgCu/data/sys.601", - "data/AlMgCu/data/sys.6020", - "data/AlMgCu/data/sys.6028", - "data/AlMgCu/data/sys.6039", - "data/AlMgCu/data/sys.6041", - "data/AlMgCu/data/sys.6045", - "data/AlMgCu/data/sys.6048", - "data/AlMgCu/data/sys.6065", - "data/AlMgCu/data/sys.6066", - "data/AlMgCu/data/sys.6080", - "data/AlMgCu/data/sys.6084", - "data/AlMgCu/data/sys.6086", - "data/AlMgCu/data/sys.6099", - "data/AlMgCu/data/sys.6102", - "data/AlMgCu/data/sys.6105", - "data/AlMgCu/data/sys.6122", - "data/AlMgCu/data/sys.6150", - "data/AlMgCu/data/sys.6152", - "data/AlMgCu/data/sys.6153", - "data/AlMgCu/data/sys.6184", - "data/AlMgCu/data/sys.6192", - "data/AlMgCu/data/sys.6205", - "data/AlMgCu/data/sys.6209", - "data/AlMgCu/data/sys.6214", - "data/AlMgCu/data/sys.6228", - "data/AlMgCu/data/sys.6234", - "data/AlMgCu/data/sys.6248", - "data/AlMgCu/data/sys.625", - "data/AlMgCu/data/sys.6255", - "data/AlMgCu/data/sys.6259", - "data/AlMgCu/data/sys.6270", - "data/AlMgCu/data/sys.6281", - "data/AlMgCu/data/sys.6294", - "data/AlMgCu/data/sys.6297", - "data/AlMgCu/data/sys.6299", - "data/AlMgCu/data/sys.6307", - "data/AlMgCu/data/sys.633", - "data/AlMgCu/data/sys.6330", - "data/AlMgCu/data/sys.6340", - "data/AlMgCu/data/sys.6343", - "data/AlMgCu/data/sys.6348", - "data/AlMgCu/data/sys.6352", - "data/AlMgCu/data/sys.6353", - "data/AlMgCu/data/sys.6365", - "data/AlMgCu/data/sys.6380", - "data/AlMgCu/data/sys.6395", - "data/AlMgCu/data/sys.6407", - "data/AlMgCu/data/sys.6412", - "data/AlMgCu/data/sys.6415", - "data/AlMgCu/data/sys.6420", - "data/AlMgCu/data/sys.6427", - "data/AlMgCu/data/sys.6435", - "data/AlMgCu/data/sys.6448", - "data/AlMgCu/data/sys.6458", - "data/AlMgCu/data/sys.6459", - "data/AlMgCu/data/sys.646", - "data/AlMgCu/data/sys.6463", - "data/AlMgCu/data/sys.6466", - "data/AlMgCu/data/sys.6470", - "data/AlMgCu/data/sys.6476", - "data/AlMgCu/data/sys.6484", - "data/AlMgCu/data/sys.6496", - "data/AlMgCu/data/sys.6500", - "data/AlMgCu/data/sys.6504", - "data/AlMgCu/data/sys.6518", - "data/AlMgCu/data/sys.6532", - "data/AlMgCu/data/sys.6536", - "data/AlMgCu/data/sys.6538", - "data/AlMgCu/data/sys.6543", - "data/AlMgCu/data/sys.6560", - "data/AlMgCu/data/sys.6565", - "data/AlMgCu/data/sys.6569", - "data/AlMgCu/data/sys.6570", - "data/AlMgCu/data/sys.6594", - "data/AlMgCu/data/sys.6595", - "data/AlMgCu/data/sys.6599", - "data/AlMgCu/data/sys.6635", - "data/AlMgCu/data/sys.6636", - "data/AlMgCu/data/sys.6643", - "data/AlMgCu/data/sys.6653", - "data/AlMgCu/data/sys.6654", - "data/AlMgCu/data/sys.6659", - "data/AlMgCu/data/sys.667", - "data/AlMgCu/data/sys.6672", - "data/AlMgCu/data/sys.6675", - "data/AlMgCu/data/sys.669", - "data/AlMgCu/data/sys.6702", - "data/AlMgCu/data/sys.6713", - "data/AlMgCu/data/sys.6744", - "data/AlMgCu/data/sys.6747", - "data/AlMgCu/data/sys.6748", - "data/AlMgCu/data/sys.6749", - "data/AlMgCu/data/sys.6757", - "data/AlMgCu/data/sys.6759", - "data/AlMgCu/data/sys.6769", - "data/AlMgCu/data/sys.6776", - "data/AlMgCu/data/sys.6793", - "data/AlMgCu/data/sys.6803", - "data/AlMgCu/data/sys.6824", - "data/AlMgCu/data/sys.6846", - "data/AlMgCu/data/sys.6848", - "data/AlMgCu/data/sys.687", - "data/AlMgCu/data/sys.691", - "data/AlMgCu/data/sys.6914", - "data/AlMgCu/data/sys.692", - "data/AlMgCu/data/sys.694", - "data/AlMgCu/data/sys.6971", - "data/AlMgCu/data/sys.6986", - "data/AlMgCu/data/sys.700", - "data/AlMgCu/data/sys.7035", - "data/AlMgCu/data/sys.7117", - "data/AlMgCu/data/sys.7153", - "data/AlMgCu/data/sys.7196", - "data/AlMgCu/data/sys.720", - "data/AlMgCu/data/sys.7220", - "data/AlMgCu/data/sys.7242", - "data/AlMgCu/data/sys.7252", - "data/AlMgCu/data/sys.7316", - "data/AlMgCu/data/sys.7329", - "data/AlMgCu/data/sys.7331", - "data/AlMgCu/data/sys.7369", - "data/AlMgCu/data/sys.738", - "data/AlMgCu/data/sys.740", - "data/AlMgCu/data/sys.7402", - "data/AlMgCu/data/sys.7417", - "data/AlMgCu/data/sys.743", - "data/AlMgCu/data/sys.7475", - "data/AlMgCu/data/sys.7516", - "data/AlMgCu/data/sys.7524", - "data/AlMgCu/data/sys.7666", - "data/AlMgCu/data/sys.7674", - "data/AlMgCu/data/sys.7786", - "data/AlMgCu/data/sys.7856", - "data/AlMgCu/data/sys.794", - "data/AlMgCu/data/sys.796", - "data/AlMgCu/data/sys.800", - "data/AlMgCu/data/sys.812", - "data/AlMgCu/data/sys.816", - "data/AlMgCu/data/sys.823", - "data/AlMgCu/data/sys.833", - "data/AlMgCu/data/sys.859", - "data/AlMgCu/data/sys.866", - "data/AlMgCu/data/sys.886", - "data/AlMgCu/data/sys.889", - "data/AlMgCu/data/sys.895", - "data/AlMgCu/data/sys.9042", - "data/AlMgCu/data/sys.906", - "data/AlMgCu/data/sys.907", - "data/AlMgCu/data/sys.9122", - "data/AlMgCu/data/sys.913", - "data/AlMgCu/data/sys.9163", - "data/AlMgCu/data/sys.9241", - "data/AlMgCu/data/sys.929", - "data/AlMgCu/data/sys.9396", - "data/AlMgCu/data/sys.941", - "data/AlMgCu/data/sys.962", - "data/AlMgCu/data/sys.987", - "data/AlMgCu/data/sys.994", - "data/AlMgCu/data/sys.996", - "data/AlMgCu/data/sys.9970", - "data/AlMgCu/data/sys.9972", - "data/AlMgCu/data/sys.9985", - "data/AlMgCu/data/sys.9994" - ], - "batch_size": 1, - "numb_btch": 4, - "_comment": "that's all" - }, - "numb_steps": 10000000, - "seed": 3982377700, - "_comment": "that's all", - "disp_file": "lcurve.out", - "disp_freq": 2000, - "numb_test": 1, - "save_freq": 2000, - "save_ckpt": "model.ckpt", - "disp_training": true, - "time_training": true, - "profiling": false, - "profiling_file": "timeline.json" - } -} \ No newline at end of file + "training": { + "training_data": { + "systems": [ + "data/AlMgCu/data/init.000", + "data/AlMgCu/data/init.001", + "data/AlMgCu/data/init.002", + "data/AlMgCu/data/init.003", + "data/AlMgCu/data/init.004", + "data/AlMgCu/data/init.005", + "data/AlMgCu/data/init.006", + "data/AlMgCu/data/init.007", + "data/AlMgCu/data/init.009", + "data/AlMgCu/data/init.010", + "data/AlMgCu/data/init.011", + "data/AlMgCu/data/init.012", + "data/AlMgCu/data/init.014", + "data/AlMgCu/data/init.015", + "data/AlMgCu/data/init.016", + "data/AlMgCu/data/init.017", + "data/AlMgCu/data/init.018", + "data/AlMgCu/data/init.019", + "data/AlMgCu/data/init.020", + "data/AlMgCu/data/init.021", + "data/AlMgCu/data/init.022", + "data/AlMgCu/data/init.023", + "data/AlMgCu/data/init.024", + "data/AlMgCu/data/init.025", + "data/AlMgCu/data/init.026", + "data/AlMgCu/data/init.027", + "data/AlMgCu/data/init.028", + "data/AlMgCu/data/init.030", + "data/AlMgCu/data/init.032", + "data/AlMgCu/data/init.033", + "data/AlMgCu/data/init.034", + "data/AlMgCu/data/init.035", + "data/AlMgCu/data/init.036", + "data/AlMgCu/data/init.037", + "data/AlMgCu/data/init.038", + "data/AlMgCu/data/init.039", + "data/AlMgCu/data/init.040", + "data/AlMgCu/data/init.041", + "data/AlMgCu/data/init.042", + "data/AlMgCu/data/init.043", + "data/AlMgCu/data/init.044", + "data/AlMgCu/data/init.045", + "data/AlMgCu/data/init.046", + "data/AlMgCu/data/init.047", + "data/AlMgCu/data/init.048", + "data/AlMgCu/data/init.049", + "data/AlMgCu/data/init.050", + "data/AlMgCu/data/init.051", + "data/AlMgCu/data/init.056", + "data/AlMgCu/data/init.057", + "data/AlMgCu/data/init.058", + "data/AlMgCu/data/init.059", + "data/AlMgCu/data/init.060", + "data/AlMgCu/data/init.061", + "data/AlMgCu/data/init.062", + "data/AlMgCu/data/init.063", + "data/AlMgCu/data/init.064", + "data/AlMgCu/data/init.065", + "data/AlMgCu/data/init.067", + "data/AlMgCu/data/init.068", + "data/AlMgCu/data/init.069", + "data/AlMgCu/data/init.070", + "data/AlMgCu/data/init.071", + "data/AlMgCu/data/init.072", + "data/AlMgCu/data/init.073", + "data/AlMgCu/data/init.074", + "data/AlMgCu/data/init.075", + "data/AlMgCu/data/init.076", + "data/AlMgCu/data/init.078", + "data/AlMgCu/data/init.079", + "data/AlMgCu/data/init.080", + "data/AlMgCu/data/init.082", + "data/AlMgCu/data/init.083", + "data/AlMgCu/data/init.085", + "data/AlMgCu/data/init.086", + "data/AlMgCu/data/init.087", + "data/AlMgCu/data/init.088", + "data/AlMgCu/data/init.089", + "data/AlMgCu/data/init.090", + "data/AlMgCu/data/init.091", + "data/AlMgCu/data/init.092", + "data/AlMgCu/data/init.093", + "data/AlMgCu/data/init.094", + "data/AlMgCu/data/init.095", + "data/AlMgCu/data/init.096", + "data/AlMgCu/data/init.097", + "data/AlMgCu/data/init.098", + "data/AlMgCu/data/init.099", + "data/AlMgCu/data/init.1000", + "data/AlMgCu/data/init.1001", + "data/AlMgCu/data/init.1002", + "data/AlMgCu/data/init.1003", + "data/AlMgCu/data/init.1005", + "data/AlMgCu/data/init.1006", + "data/AlMgCu/data/init.1007", + "data/AlMgCu/data/init.1008", + "data/AlMgCu/data/init.1009", + "data/AlMgCu/data/init.101", + "data/AlMgCu/data/init.1011", + "data/AlMgCu/data/init.1012", + "data/AlMgCu/data/init.1013", + "data/AlMgCu/data/init.1014", + "data/AlMgCu/data/init.1015", + "data/AlMgCu/data/init.1016", + "data/AlMgCu/data/init.1017", + "data/AlMgCu/data/init.1018", + "data/AlMgCu/data/init.1019", + "data/AlMgCu/data/init.102", + "data/AlMgCu/data/init.1020", + "data/AlMgCu/data/init.1021", + "data/AlMgCu/data/init.1023", + "data/AlMgCu/data/init.1025", + "data/AlMgCu/data/init.1026", + "data/AlMgCu/data/init.1027", + "data/AlMgCu/data/init.1028", + "data/AlMgCu/data/init.1029", + "data/AlMgCu/data/init.103", + "data/AlMgCu/data/init.1030", + "data/AlMgCu/data/init.1031", + "data/AlMgCu/data/init.1032", + "data/AlMgCu/data/init.1033", + "data/AlMgCu/data/init.1035", + "data/AlMgCu/data/init.1037", + "data/AlMgCu/data/init.1038", + "data/AlMgCu/data/init.1039", + "data/AlMgCu/data/init.104", + "data/AlMgCu/data/init.1040", + "data/AlMgCu/data/init.1041", + "data/AlMgCu/data/init.1042", + "data/AlMgCu/data/init.1043", + "data/AlMgCu/data/init.1044", + "data/AlMgCu/data/init.1045", + "data/AlMgCu/data/init.1046", + "data/AlMgCu/data/init.1048", + "data/AlMgCu/data/init.1049", + "data/AlMgCu/data/init.105", + "data/AlMgCu/data/init.1050", + "data/AlMgCu/data/init.1051", + "data/AlMgCu/data/init.1052", + "data/AlMgCu/data/init.1053", + "data/AlMgCu/data/init.1054", + "data/AlMgCu/data/init.1055", + "data/AlMgCu/data/init.1056", + "data/AlMgCu/data/init.1058", + "data/AlMgCu/data/init.1059", + "data/AlMgCu/data/init.106", + "data/AlMgCu/data/init.1060", + "data/AlMgCu/data/init.1061", + "data/AlMgCu/data/init.1062", + "data/AlMgCu/data/init.1063", + "data/AlMgCu/data/init.1064", + "data/AlMgCu/data/init.1066", + "data/AlMgCu/data/init.1067", + "data/AlMgCu/data/init.107", + "data/AlMgCu/data/init.1070", + "data/AlMgCu/data/init.1071", + "data/AlMgCu/data/init.1072", + "data/AlMgCu/data/init.1073", + "data/AlMgCu/data/init.1074", + "data/AlMgCu/data/init.1075", + "data/AlMgCu/data/init.1076", + "data/AlMgCu/data/init.1077", + "data/AlMgCu/data/init.1080", + "data/AlMgCu/data/init.1082", + "data/AlMgCu/data/init.1083", + "data/AlMgCu/data/init.1084", + "data/AlMgCu/data/init.1085", + "data/AlMgCu/data/init.1086", + "data/AlMgCu/data/init.1087", + "data/AlMgCu/data/init.1088", + "data/AlMgCu/data/init.1089", + "data/AlMgCu/data/init.109", + "data/AlMgCu/data/init.1090", + "data/AlMgCu/data/init.1093", + "data/AlMgCu/data/init.1094", + "data/AlMgCu/data/init.1095", + "data/AlMgCu/data/init.1096", + "data/AlMgCu/data/init.1097", + "data/AlMgCu/data/init.1098", + "data/AlMgCu/data/init.1099", + "data/AlMgCu/data/init.110", + "data/AlMgCu/data/init.1101", + "data/AlMgCu/data/init.1102", + "data/AlMgCu/data/init.1103", + "data/AlMgCu/data/init.1104", + "data/AlMgCu/data/init.1105", + "data/AlMgCu/data/init.1106", + "data/AlMgCu/data/init.1107", + "data/AlMgCu/data/init.1108", + "data/AlMgCu/data/init.1109", + "data/AlMgCu/data/init.111", + "data/AlMgCu/data/init.1110", + "data/AlMgCu/data/init.1111", + "data/AlMgCu/data/init.1112", + "data/AlMgCu/data/init.1113", + "data/AlMgCu/data/init.1114", + "data/AlMgCu/data/init.1115", + "data/AlMgCu/data/init.1116", + "data/AlMgCu/data/init.1117", + "data/AlMgCu/data/init.1118", + "data/AlMgCu/data/init.1119", + "data/AlMgCu/data/init.112", + "data/AlMgCu/data/init.1120", + "data/AlMgCu/data/init.1121", + "data/AlMgCu/data/init.1122", + "data/AlMgCu/data/init.1123", + "data/AlMgCu/data/init.1124", + "data/AlMgCu/data/init.1125", + "data/AlMgCu/data/init.1126", + "data/AlMgCu/data/init.1127", + "data/AlMgCu/data/init.1128", + "data/AlMgCu/data/init.1129", + "data/AlMgCu/data/init.113", + "data/AlMgCu/data/init.1131", + "data/AlMgCu/data/init.1132", + "data/AlMgCu/data/init.1133", + "data/AlMgCu/data/init.1134", + "data/AlMgCu/data/init.1135", + "data/AlMgCu/data/init.1136", + "data/AlMgCu/data/init.1137", + "data/AlMgCu/data/init.1138", + "data/AlMgCu/data/init.114", + "data/AlMgCu/data/init.1140", + "data/AlMgCu/data/init.1143", + "data/AlMgCu/data/init.1144", + "data/AlMgCu/data/init.1145", + "data/AlMgCu/data/init.1146", + "data/AlMgCu/data/init.1147", + "data/AlMgCu/data/init.1148", + "data/AlMgCu/data/init.1149", + "data/AlMgCu/data/init.1150", + "data/AlMgCu/data/init.1151", + "data/AlMgCu/data/init.1152", + "data/AlMgCu/data/init.1153", + "data/AlMgCu/data/init.1154", + "data/AlMgCu/data/init.1155", + "data/AlMgCu/data/init.1157", + "data/AlMgCu/data/init.1158", + "data/AlMgCu/data/init.1159", + "data/AlMgCu/data/init.116", + "data/AlMgCu/data/init.1160", + "data/AlMgCu/data/init.1162", + "data/AlMgCu/data/init.1163", + "data/AlMgCu/data/init.1165", + "data/AlMgCu/data/init.1166", + "data/AlMgCu/data/init.1167", + "data/AlMgCu/data/init.1168", + "data/AlMgCu/data/init.1169", + "data/AlMgCu/data/init.1170", + "data/AlMgCu/data/init.1171", + "data/AlMgCu/data/init.1172", + "data/AlMgCu/data/init.1173", + "data/AlMgCu/data/init.1174", + "data/AlMgCu/data/init.1175", + "data/AlMgCu/data/init.1176", + "data/AlMgCu/data/init.1177", + "data/AlMgCu/data/init.1178", + "data/AlMgCu/data/init.1179", + "data/AlMgCu/data/init.118", + "data/AlMgCu/data/init.1181", + "data/AlMgCu/data/init.1182", + "data/AlMgCu/data/init.1183", + "data/AlMgCu/data/init.1184", + "data/AlMgCu/data/init.1185", + "data/AlMgCu/data/init.1186", + "data/AlMgCu/data/init.1187", + "data/AlMgCu/data/init.1188", + "data/AlMgCu/data/init.1189", + "data/AlMgCu/data/init.119", + "data/AlMgCu/data/init.1190", + "data/AlMgCu/data/init.1191", + "data/AlMgCu/data/init.1192", + "data/AlMgCu/data/init.1193", + "data/AlMgCu/data/init.1194", + "data/AlMgCu/data/init.1195", + "data/AlMgCu/data/init.1196", + "data/AlMgCu/data/init.1197", + "data/AlMgCu/data/init.1198", + "data/AlMgCu/data/init.120", + "data/AlMgCu/data/init.1200", + "data/AlMgCu/data/init.1201", + "data/AlMgCu/data/init.1202", + "data/AlMgCu/data/init.1203", + "data/AlMgCu/data/init.1204", + "data/AlMgCu/data/init.1205", + "data/AlMgCu/data/init.1206", + "data/AlMgCu/data/init.1207", + "data/AlMgCu/data/init.1208", + "data/AlMgCu/data/init.1209", + "data/AlMgCu/data/init.121", + "data/AlMgCu/data/init.1210", + "data/AlMgCu/data/init.1211", + "data/AlMgCu/data/init.1212", + "data/AlMgCu/data/init.1213", + "data/AlMgCu/data/init.1214", + "data/AlMgCu/data/init.1216", + "data/AlMgCu/data/init.1217", + "data/AlMgCu/data/init.1218", + "data/AlMgCu/data/init.1219", + "data/AlMgCu/data/init.122", + "data/AlMgCu/data/init.1220", + "data/AlMgCu/data/init.1221", + "data/AlMgCu/data/init.1222", + "data/AlMgCu/data/init.1223", + "data/AlMgCu/data/init.1224", + "data/AlMgCu/data/init.1225", + "data/AlMgCu/data/init.1226", + "data/AlMgCu/data/init.1227", + "data/AlMgCu/data/init.1228", + "data/AlMgCu/data/init.1229", + "data/AlMgCu/data/init.123", + "data/AlMgCu/data/init.1230", + "data/AlMgCu/data/init.1231", + "data/AlMgCu/data/init.1232", + "data/AlMgCu/data/init.1233", + "data/AlMgCu/data/init.1234", + "data/AlMgCu/data/init.1235", + "data/AlMgCu/data/init.1236", + "data/AlMgCu/data/init.1237", + "data/AlMgCu/data/init.1239", + "data/AlMgCu/data/init.124", + "data/AlMgCu/data/init.1240", + "data/AlMgCu/data/init.1241", + "data/AlMgCu/data/init.1242", + "data/AlMgCu/data/init.1243", + "data/AlMgCu/data/init.1244", + "data/AlMgCu/data/init.1245", + "data/AlMgCu/data/init.1246", + "data/AlMgCu/data/init.1247", + "data/AlMgCu/data/init.1248", + "data/AlMgCu/data/init.1249", + "data/AlMgCu/data/init.125", + "data/AlMgCu/data/init.1250", + "data/AlMgCu/data/init.1251", + "data/AlMgCu/data/init.1252", + "data/AlMgCu/data/init.1253", + "data/AlMgCu/data/init.1254", + "data/AlMgCu/data/init.1255", + "data/AlMgCu/data/init.1256", + "data/AlMgCu/data/init.1257", + "data/AlMgCu/data/init.1258", + "data/AlMgCu/data/init.1259", + "data/AlMgCu/data/init.126", + "data/AlMgCu/data/init.1260", + "data/AlMgCu/data/init.1261", + "data/AlMgCu/data/init.1262", + "data/AlMgCu/data/init.1263", + "data/AlMgCu/data/init.1264", + "data/AlMgCu/data/init.1265", + "data/AlMgCu/data/init.1266", + "data/AlMgCu/data/init.1268", + "data/AlMgCu/data/init.1269", + "data/AlMgCu/data/init.127", + "data/AlMgCu/data/init.1270", + "data/AlMgCu/data/init.1271", + "data/AlMgCu/data/init.1272", + "data/AlMgCu/data/init.1273", + "data/AlMgCu/data/init.1274", + "data/AlMgCu/data/init.1275", + "data/AlMgCu/data/init.1276", + "data/AlMgCu/data/init.1277", + "data/AlMgCu/data/init.1278", + "data/AlMgCu/data/init.128", + "data/AlMgCu/data/init.1280", + "data/AlMgCu/data/init.1281", + "data/AlMgCu/data/init.1282", + "data/AlMgCu/data/init.1283", + "data/AlMgCu/data/init.1284", + "data/AlMgCu/data/init.1285", + "data/AlMgCu/data/init.1286", + "data/AlMgCu/data/init.1287", + "data/AlMgCu/data/init.1288", + "data/AlMgCu/data/init.129", + "data/AlMgCu/data/init.131", + "data/AlMgCu/data/init.132", + "data/AlMgCu/data/init.134", + "data/AlMgCu/data/init.135", + "data/AlMgCu/data/init.136", + "data/AlMgCu/data/init.137", + "data/AlMgCu/data/init.138", + "data/AlMgCu/data/init.139", + "data/AlMgCu/data/init.140", + "data/AlMgCu/data/init.141", + "data/AlMgCu/data/init.142", + "data/AlMgCu/data/init.143", + "data/AlMgCu/data/init.144", + "data/AlMgCu/data/init.146", + "data/AlMgCu/data/init.147", + "data/AlMgCu/data/init.148", + "data/AlMgCu/data/init.149", + "data/AlMgCu/data/init.150", + "data/AlMgCu/data/init.152", + "data/AlMgCu/data/init.153", + "data/AlMgCu/data/init.154", + "data/AlMgCu/data/init.155", + "data/AlMgCu/data/init.156", + "data/AlMgCu/data/init.157", + "data/AlMgCu/data/init.158", + "data/AlMgCu/data/init.159", + "data/AlMgCu/data/init.160", + "data/AlMgCu/data/init.161", + "data/AlMgCu/data/init.162", + "data/AlMgCu/data/init.164", + "data/AlMgCu/data/init.165", + "data/AlMgCu/data/init.166", + "data/AlMgCu/data/init.167", + "data/AlMgCu/data/init.168", + "data/AlMgCu/data/init.169", + "data/AlMgCu/data/init.170", + "data/AlMgCu/data/init.171", + "data/AlMgCu/data/init.172", + "data/AlMgCu/data/init.173", + "data/AlMgCu/data/init.174", + "data/AlMgCu/data/init.175", + "data/AlMgCu/data/init.176", + "data/AlMgCu/data/init.177", + "data/AlMgCu/data/init.178", + "data/AlMgCu/data/init.179", + "data/AlMgCu/data/init.180", + "data/AlMgCu/data/init.181", + "data/AlMgCu/data/init.182", + "data/AlMgCu/data/init.183", + "data/AlMgCu/data/init.184", + "data/AlMgCu/data/init.185", + "data/AlMgCu/data/init.186", + "data/AlMgCu/data/init.187", + "data/AlMgCu/data/init.188", + "data/AlMgCu/data/init.189", + "data/AlMgCu/data/init.190", + "data/AlMgCu/data/init.191", + "data/AlMgCu/data/init.192", + "data/AlMgCu/data/init.193", + "data/AlMgCu/data/init.194", + "data/AlMgCu/data/init.195", + "data/AlMgCu/data/init.196", + "data/AlMgCu/data/init.197", + "data/AlMgCu/data/init.198", + "data/AlMgCu/data/init.199", + "data/AlMgCu/data/init.200", + "data/AlMgCu/data/init.201", + "data/AlMgCu/data/init.202", + "data/AlMgCu/data/init.203", + "data/AlMgCu/data/init.204", + "data/AlMgCu/data/init.205", + "data/AlMgCu/data/init.206", + "data/AlMgCu/data/init.207", + "data/AlMgCu/data/init.208", + "data/AlMgCu/data/init.210", + "data/AlMgCu/data/init.211", + "data/AlMgCu/data/init.212", + "data/AlMgCu/data/init.213", + "data/AlMgCu/data/init.214", + "data/AlMgCu/data/init.217", + "data/AlMgCu/data/init.218", + "data/AlMgCu/data/init.219", + "data/AlMgCu/data/init.220", + "data/AlMgCu/data/init.221", + "data/AlMgCu/data/init.222", + "data/AlMgCu/data/init.223", + "data/AlMgCu/data/init.224", + "data/AlMgCu/data/init.226", + "data/AlMgCu/data/init.227", + "data/AlMgCu/data/init.228", + "data/AlMgCu/data/init.229", + "data/AlMgCu/data/init.230", + "data/AlMgCu/data/init.231", + "data/AlMgCu/data/init.232", + "data/AlMgCu/data/init.233", + "data/AlMgCu/data/init.234", + "data/AlMgCu/data/init.235", + "data/AlMgCu/data/init.236", + "data/AlMgCu/data/init.237", + "data/AlMgCu/data/init.238", + "data/AlMgCu/data/init.239", + "data/AlMgCu/data/init.240", + "data/AlMgCu/data/init.241", + "data/AlMgCu/data/init.242", + "data/AlMgCu/data/init.243", + "data/AlMgCu/data/init.244", + "data/AlMgCu/data/init.245", + "data/AlMgCu/data/init.246", + "data/AlMgCu/data/init.247", + "data/AlMgCu/data/init.248", + "data/AlMgCu/data/init.250", + "data/AlMgCu/data/init.251", + "data/AlMgCu/data/init.252", + "data/AlMgCu/data/init.253", + "data/AlMgCu/data/init.254", + "data/AlMgCu/data/init.255", + "data/AlMgCu/data/init.256", + "data/AlMgCu/data/init.257", + "data/AlMgCu/data/init.258", + "data/AlMgCu/data/init.259", + "data/AlMgCu/data/init.260", + "data/AlMgCu/data/init.262", + "data/AlMgCu/data/init.263", + "data/AlMgCu/data/init.264", + "data/AlMgCu/data/init.265", + "data/AlMgCu/data/init.266", + "data/AlMgCu/data/init.267", + "data/AlMgCu/data/init.269", + "data/AlMgCu/data/init.270", + "data/AlMgCu/data/init.271", + "data/AlMgCu/data/init.273", + "data/AlMgCu/data/init.274", + "data/AlMgCu/data/init.275", + "data/AlMgCu/data/init.276", + "data/AlMgCu/data/init.277", + "data/AlMgCu/data/init.278", + "data/AlMgCu/data/init.279", + "data/AlMgCu/data/init.280", + "data/AlMgCu/data/init.281", + "data/AlMgCu/data/init.282", + "data/AlMgCu/data/init.283", + "data/AlMgCu/data/init.284", + "data/AlMgCu/data/init.285", + "data/AlMgCu/data/init.287", + "data/AlMgCu/data/init.288", + "data/AlMgCu/data/init.290", + "data/AlMgCu/data/init.291", + "data/AlMgCu/data/init.292", + "data/AlMgCu/data/init.293", + "data/AlMgCu/data/init.294", + "data/AlMgCu/data/init.295", + "data/AlMgCu/data/init.296", + "data/AlMgCu/data/init.297", + "data/AlMgCu/data/init.298", + "data/AlMgCu/data/init.299", + "data/AlMgCu/data/init.302", + "data/AlMgCu/data/init.303", + "data/AlMgCu/data/init.304", + "data/AlMgCu/data/init.305", + "data/AlMgCu/data/init.306", + "data/AlMgCu/data/init.307", + "data/AlMgCu/data/init.308", + "data/AlMgCu/data/init.309", + "data/AlMgCu/data/init.310", + "data/AlMgCu/data/init.311", + "data/AlMgCu/data/init.312", + "data/AlMgCu/data/init.313", + "data/AlMgCu/data/init.314", + "data/AlMgCu/data/init.315", + "data/AlMgCu/data/init.316", + "data/AlMgCu/data/init.317", + "data/AlMgCu/data/init.318", + "data/AlMgCu/data/init.319", + "data/AlMgCu/data/init.320", + "data/AlMgCu/data/init.321", + "data/AlMgCu/data/init.324", + "data/AlMgCu/data/init.325", + "data/AlMgCu/data/init.326", + "data/AlMgCu/data/init.327", + "data/AlMgCu/data/init.328", + "data/AlMgCu/data/init.329", + "data/AlMgCu/data/init.330", + "data/AlMgCu/data/init.331", + "data/AlMgCu/data/init.332", + "data/AlMgCu/data/init.333", + "data/AlMgCu/data/init.334", + "data/AlMgCu/data/init.336", + "data/AlMgCu/data/init.337", + "data/AlMgCu/data/init.338", + "data/AlMgCu/data/init.339", + "data/AlMgCu/data/init.340", + "data/AlMgCu/data/init.341", + "data/AlMgCu/data/init.342", + "data/AlMgCu/data/init.344", + "data/AlMgCu/data/init.345", + "data/AlMgCu/data/init.346", + "data/AlMgCu/data/init.347", + "data/AlMgCu/data/init.348", + "data/AlMgCu/data/init.349", + "data/AlMgCu/data/init.350", + "data/AlMgCu/data/init.351", + "data/AlMgCu/data/init.352", + "data/AlMgCu/data/init.353", + "data/AlMgCu/data/init.355", + "data/AlMgCu/data/init.356", + "data/AlMgCu/data/init.357", + "data/AlMgCu/data/init.358", + "data/AlMgCu/data/init.359", + "data/AlMgCu/data/init.361", + "data/AlMgCu/data/init.362", + "data/AlMgCu/data/init.363", + "data/AlMgCu/data/init.364", + "data/AlMgCu/data/init.365", + "data/AlMgCu/data/init.366", + "data/AlMgCu/data/init.367", + "data/AlMgCu/data/init.368", + "data/AlMgCu/data/init.369", + "data/AlMgCu/data/init.370", + "data/AlMgCu/data/init.371", + "data/AlMgCu/data/init.372", + "data/AlMgCu/data/init.373", + "data/AlMgCu/data/init.374", + "data/AlMgCu/data/init.375", + "data/AlMgCu/data/init.376", + "data/AlMgCu/data/init.377", + "data/AlMgCu/data/init.378", + "data/AlMgCu/data/init.379", + "data/AlMgCu/data/init.380", + "data/AlMgCu/data/init.381", + "data/AlMgCu/data/init.382", + "data/AlMgCu/data/init.383", + "data/AlMgCu/data/init.384", + "data/AlMgCu/data/init.385", + "data/AlMgCu/data/init.386", + "data/AlMgCu/data/init.387", + "data/AlMgCu/data/init.388", + "data/AlMgCu/data/init.389", + "data/AlMgCu/data/init.390", + "data/AlMgCu/data/init.391", + "data/AlMgCu/data/init.392", + "data/AlMgCu/data/init.393", + "data/AlMgCu/data/init.394", + "data/AlMgCu/data/init.395", + "data/AlMgCu/data/init.396", + "data/AlMgCu/data/init.397", + "data/AlMgCu/data/init.398", + "data/AlMgCu/data/init.399", + "data/AlMgCu/data/init.400", + "data/AlMgCu/data/init.401", + "data/AlMgCu/data/init.402", + "data/AlMgCu/data/init.403", + "data/AlMgCu/data/init.404", + "data/AlMgCu/data/init.406", + "data/AlMgCu/data/init.407", + "data/AlMgCu/data/init.408", + "data/AlMgCu/data/init.409", + "data/AlMgCu/data/init.410", + "data/AlMgCu/data/init.411", + "data/AlMgCu/data/init.412", + "data/AlMgCu/data/init.413", + "data/AlMgCu/data/init.414", + "data/AlMgCu/data/init.415", + "data/AlMgCu/data/init.416", + "data/AlMgCu/data/init.417", + "data/AlMgCu/data/init.418", + "data/AlMgCu/data/init.419", + "data/AlMgCu/data/init.420", + "data/AlMgCu/data/init.421", + "data/AlMgCu/data/init.422", + "data/AlMgCu/data/init.423", + "data/AlMgCu/data/init.426", + "data/AlMgCu/data/init.428", + "data/AlMgCu/data/init.429", + "data/AlMgCu/data/init.430", + "data/AlMgCu/data/init.431", + "data/AlMgCu/data/init.432", + "data/AlMgCu/data/init.433", + "data/AlMgCu/data/init.434", + "data/AlMgCu/data/init.435", + "data/AlMgCu/data/init.436", + "data/AlMgCu/data/init.438", + "data/AlMgCu/data/init.439", + "data/AlMgCu/data/init.440", + "data/AlMgCu/data/init.441", + "data/AlMgCu/data/init.442", + "data/AlMgCu/data/init.443", + "data/AlMgCu/data/init.444", + "data/AlMgCu/data/init.445", + "data/AlMgCu/data/init.446", + "data/AlMgCu/data/init.448", + "data/AlMgCu/data/init.449", + "data/AlMgCu/data/init.451", + "data/AlMgCu/data/init.453", + "data/AlMgCu/data/init.454", + "data/AlMgCu/data/init.456", + "data/AlMgCu/data/init.457", + "data/AlMgCu/data/init.458", + "data/AlMgCu/data/init.459", + "data/AlMgCu/data/init.460", + "data/AlMgCu/data/init.461", + "data/AlMgCu/data/init.462", + "data/AlMgCu/data/init.463", + "data/AlMgCu/data/init.464", + "data/AlMgCu/data/init.466", + "data/AlMgCu/data/init.467", + "data/AlMgCu/data/init.468", + "data/AlMgCu/data/init.469", + "data/AlMgCu/data/init.470", + "data/AlMgCu/data/init.471", + "data/AlMgCu/data/init.472", + "data/AlMgCu/data/init.473", + "data/AlMgCu/data/init.474", + "data/AlMgCu/data/init.475", + "data/AlMgCu/data/init.476", + "data/AlMgCu/data/init.478", + "data/AlMgCu/data/init.479", + "data/AlMgCu/data/init.480", + "data/AlMgCu/data/init.482", + "data/AlMgCu/data/init.483", + "data/AlMgCu/data/init.484", + "data/AlMgCu/data/init.485", + "data/AlMgCu/data/init.486", + "data/AlMgCu/data/init.487", + "data/AlMgCu/data/init.488", + "data/AlMgCu/data/init.489", + "data/AlMgCu/data/init.490", + "data/AlMgCu/data/init.491", + "data/AlMgCu/data/init.492", + "data/AlMgCu/data/init.493", + "data/AlMgCu/data/init.494", + "data/AlMgCu/data/init.495", + "data/AlMgCu/data/init.496", + "data/AlMgCu/data/init.497", + "data/AlMgCu/data/init.499", + "data/AlMgCu/data/init.502", + "data/AlMgCu/data/init.503", + "data/AlMgCu/data/init.504", + "data/AlMgCu/data/init.505", + "data/AlMgCu/data/init.506", + "data/AlMgCu/data/init.507", + "data/AlMgCu/data/init.508", + "data/AlMgCu/data/init.509", + "data/AlMgCu/data/init.510", + "data/AlMgCu/data/init.511", + "data/AlMgCu/data/init.512", + "data/AlMgCu/data/init.513", + "data/AlMgCu/data/init.514", + "data/AlMgCu/data/init.515", + "data/AlMgCu/data/init.516", + "data/AlMgCu/data/init.517", + "data/AlMgCu/data/init.518", + "data/AlMgCu/data/init.519", + "data/AlMgCu/data/init.520", + "data/AlMgCu/data/init.521", + "data/AlMgCu/data/init.522", + "data/AlMgCu/data/init.523", + "data/AlMgCu/data/init.524", + "data/AlMgCu/data/init.527", + "data/AlMgCu/data/init.528", + "data/AlMgCu/data/init.529", + "data/AlMgCu/data/init.530", + "data/AlMgCu/data/init.532", + "data/AlMgCu/data/init.533", + "data/AlMgCu/data/init.534", + "data/AlMgCu/data/init.535", + "data/AlMgCu/data/init.536", + "data/AlMgCu/data/init.537", + "data/AlMgCu/data/init.538", + "data/AlMgCu/data/init.539", + "data/AlMgCu/data/init.540", + "data/AlMgCu/data/init.541", + "data/AlMgCu/data/init.542", + "data/AlMgCu/data/init.543", + "data/AlMgCu/data/init.544", + "data/AlMgCu/data/init.546", + "data/AlMgCu/data/init.547", + "data/AlMgCu/data/init.548", + "data/AlMgCu/data/init.549", + "data/AlMgCu/data/init.551", + "data/AlMgCu/data/init.552", + "data/AlMgCu/data/init.553", + "data/AlMgCu/data/init.554", + "data/AlMgCu/data/init.555", + "data/AlMgCu/data/init.556", + "data/AlMgCu/data/init.557", + "data/AlMgCu/data/init.558", + "data/AlMgCu/data/init.559", + "data/AlMgCu/data/init.560", + "data/AlMgCu/data/init.561", + "data/AlMgCu/data/init.563", + "data/AlMgCu/data/init.565", + "data/AlMgCu/data/init.566", + "data/AlMgCu/data/init.567", + "data/AlMgCu/data/init.569", + "data/AlMgCu/data/init.570", + "data/AlMgCu/data/init.571", + "data/AlMgCu/data/init.572", + "data/AlMgCu/data/init.573", + "data/AlMgCu/data/init.574", + "data/AlMgCu/data/init.575", + "data/AlMgCu/data/init.576", + "data/AlMgCu/data/init.577", + "data/AlMgCu/data/init.578", + "data/AlMgCu/data/init.579", + "data/AlMgCu/data/init.580", + "data/AlMgCu/data/init.581", + "data/AlMgCu/data/init.582", + "data/AlMgCu/data/init.583", + "data/AlMgCu/data/init.584", + "data/AlMgCu/data/init.585", + "data/AlMgCu/data/init.587", + "data/AlMgCu/data/init.588", + "data/AlMgCu/data/init.589", + "data/AlMgCu/data/init.590", + "data/AlMgCu/data/init.591", + "data/AlMgCu/data/init.592", + "data/AlMgCu/data/init.593", + "data/AlMgCu/data/init.594", + "data/AlMgCu/data/init.595", + "data/AlMgCu/data/init.596", + "data/AlMgCu/data/init.597", + "data/AlMgCu/data/init.598", + "data/AlMgCu/data/init.599", + "data/AlMgCu/data/init.600", + "data/AlMgCu/data/init.601", + "data/AlMgCu/data/init.602", + "data/AlMgCu/data/init.603", + "data/AlMgCu/data/init.604", + "data/AlMgCu/data/init.605", + "data/AlMgCu/data/init.606", + "data/AlMgCu/data/init.607", + "data/AlMgCu/data/init.608", + "data/AlMgCu/data/init.609", + "data/AlMgCu/data/init.610", + "data/AlMgCu/data/init.611", + "data/AlMgCu/data/init.613", + "data/AlMgCu/data/init.614", + "data/AlMgCu/data/init.615", + "data/AlMgCu/data/init.616", + "data/AlMgCu/data/init.617", + "data/AlMgCu/data/init.618", + "data/AlMgCu/data/init.619", + "data/AlMgCu/data/init.620", + "data/AlMgCu/data/init.621", + "data/AlMgCu/data/init.622", + "data/AlMgCu/data/init.624", + "data/AlMgCu/data/init.625", + "data/AlMgCu/data/init.626", + "data/AlMgCu/data/init.627", + "data/AlMgCu/data/init.628", + "data/AlMgCu/data/init.629", + "data/AlMgCu/data/init.630", + "data/AlMgCu/data/init.631", + "data/AlMgCu/data/init.632", + "data/AlMgCu/data/init.633", + "data/AlMgCu/data/init.634", + "data/AlMgCu/data/init.635", + "data/AlMgCu/data/init.636", + "data/AlMgCu/data/init.638", + "data/AlMgCu/data/init.639", + "data/AlMgCu/data/init.640", + "data/AlMgCu/data/init.641", + "data/AlMgCu/data/init.642", + "data/AlMgCu/data/init.643", + "data/AlMgCu/data/init.644", + "data/AlMgCu/data/init.645", + "data/AlMgCu/data/init.646", + "data/AlMgCu/data/init.647", + "data/AlMgCu/data/init.648", + "data/AlMgCu/data/init.649", + "data/AlMgCu/data/init.650", + "data/AlMgCu/data/init.651", + "data/AlMgCu/data/init.652", + "data/AlMgCu/data/init.653", + "data/AlMgCu/data/init.654", + "data/AlMgCu/data/init.656", + "data/AlMgCu/data/init.657", + "data/AlMgCu/data/init.658", + "data/AlMgCu/data/init.659", + "data/AlMgCu/data/init.661", + "data/AlMgCu/data/init.663", + "data/AlMgCu/data/init.664", + "data/AlMgCu/data/init.665", + "data/AlMgCu/data/init.666", + "data/AlMgCu/data/init.667", + "data/AlMgCu/data/init.668", + "data/AlMgCu/data/init.669", + "data/AlMgCu/data/init.671", + "data/AlMgCu/data/init.672", + "data/AlMgCu/data/init.673", + "data/AlMgCu/data/init.674", + "data/AlMgCu/data/init.675", + "data/AlMgCu/data/init.676", + "data/AlMgCu/data/init.677", + "data/AlMgCu/data/init.678", + "data/AlMgCu/data/init.679", + "data/AlMgCu/data/init.680", + "data/AlMgCu/data/init.681", + "data/AlMgCu/data/init.682", + "data/AlMgCu/data/init.683", + "data/AlMgCu/data/init.684", + "data/AlMgCu/data/init.685", + "data/AlMgCu/data/init.686", + "data/AlMgCu/data/init.687", + "data/AlMgCu/data/init.689", + "data/AlMgCu/data/init.690", + "data/AlMgCu/data/init.691", + "data/AlMgCu/data/init.692", + "data/AlMgCu/data/init.693", + "data/AlMgCu/data/init.694", + "data/AlMgCu/data/init.695", + "data/AlMgCu/data/init.696", + "data/AlMgCu/data/init.697", + "data/AlMgCu/data/init.698", + "data/AlMgCu/data/init.699", + "data/AlMgCu/data/init.700", + "data/AlMgCu/data/init.701", + "data/AlMgCu/data/init.702", + "data/AlMgCu/data/init.703", + "data/AlMgCu/data/init.704", + "data/AlMgCu/data/init.706", + "data/AlMgCu/data/init.707", + "data/AlMgCu/data/init.708", + "data/AlMgCu/data/init.709", + "data/AlMgCu/data/init.710", + "data/AlMgCu/data/init.712", + "data/AlMgCu/data/init.713", + "data/AlMgCu/data/init.714", + "data/AlMgCu/data/init.715", + "data/AlMgCu/data/init.717", + "data/AlMgCu/data/init.718", + "data/AlMgCu/data/init.719", + "data/AlMgCu/data/init.720", + "data/AlMgCu/data/init.721", + "data/AlMgCu/data/init.722", + "data/AlMgCu/data/init.724", + "data/AlMgCu/data/init.725", + "data/AlMgCu/data/init.726", + "data/AlMgCu/data/init.727", + "data/AlMgCu/data/init.728", + "data/AlMgCu/data/init.729", + "data/AlMgCu/data/init.730", + "data/AlMgCu/data/init.731", + "data/AlMgCu/data/init.732", + "data/AlMgCu/data/init.733", + "data/AlMgCu/data/init.734", + "data/AlMgCu/data/init.735", + "data/AlMgCu/data/init.736", + "data/AlMgCu/data/init.737", + "data/AlMgCu/data/init.738", + "data/AlMgCu/data/init.739", + "data/AlMgCu/data/init.740", + "data/AlMgCu/data/init.741", + "data/AlMgCu/data/init.743", + "data/AlMgCu/data/init.744", + "data/AlMgCu/data/init.745", + "data/AlMgCu/data/init.746", + "data/AlMgCu/data/init.747", + "data/AlMgCu/data/init.749", + "data/AlMgCu/data/init.751", + "data/AlMgCu/data/init.752", + "data/AlMgCu/data/init.753", + "data/AlMgCu/data/init.754", + "data/AlMgCu/data/init.755", + "data/AlMgCu/data/init.756", + "data/AlMgCu/data/init.757", + "data/AlMgCu/data/init.758", + "data/AlMgCu/data/init.759", + "data/AlMgCu/data/init.760", + "data/AlMgCu/data/init.762", + "data/AlMgCu/data/init.764", + "data/AlMgCu/data/init.765", + "data/AlMgCu/data/init.766", + "data/AlMgCu/data/init.767", + "data/AlMgCu/data/init.768", + "data/AlMgCu/data/init.769", + "data/AlMgCu/data/init.770", + "data/AlMgCu/data/init.772", + "data/AlMgCu/data/init.773", + "data/AlMgCu/data/init.774", + "data/AlMgCu/data/init.775", + "data/AlMgCu/data/init.776", + "data/AlMgCu/data/init.777", + "data/AlMgCu/data/init.778", + "data/AlMgCu/data/init.779", + "data/AlMgCu/data/init.780", + "data/AlMgCu/data/init.781", + "data/AlMgCu/data/init.783", + "data/AlMgCu/data/init.784", + "data/AlMgCu/data/init.785", + "data/AlMgCu/data/init.786", + "data/AlMgCu/data/init.787", + "data/AlMgCu/data/init.788", + "data/AlMgCu/data/init.789", + "data/AlMgCu/data/init.790", + "data/AlMgCu/data/init.791", + "data/AlMgCu/data/init.792", + "data/AlMgCu/data/init.793", + "data/AlMgCu/data/init.794", + "data/AlMgCu/data/init.795", + "data/AlMgCu/data/init.796", + "data/AlMgCu/data/init.797", + "data/AlMgCu/data/init.799", + "data/AlMgCu/data/init.800", + "data/AlMgCu/data/init.801", + "data/AlMgCu/data/init.802", + "data/AlMgCu/data/init.803", + "data/AlMgCu/data/init.804", + "data/AlMgCu/data/init.805", + "data/AlMgCu/data/init.806", + "data/AlMgCu/data/init.807", + "data/AlMgCu/data/init.808", + "data/AlMgCu/data/init.809", + "data/AlMgCu/data/init.810", + "data/AlMgCu/data/init.811", + "data/AlMgCu/data/init.812", + "data/AlMgCu/data/init.813", + "data/AlMgCu/data/init.814", + "data/AlMgCu/data/init.816", + "data/AlMgCu/data/init.817", + "data/AlMgCu/data/init.819", + "data/AlMgCu/data/init.820", + "data/AlMgCu/data/init.821", + "data/AlMgCu/data/init.822", + "data/AlMgCu/data/init.824", + "data/AlMgCu/data/init.825", + "data/AlMgCu/data/init.826", + "data/AlMgCu/data/init.827", + "data/AlMgCu/data/init.830", + "data/AlMgCu/data/init.832", + "data/AlMgCu/data/init.833", + "data/AlMgCu/data/init.834", + "data/AlMgCu/data/init.835", + "data/AlMgCu/data/init.836", + "data/AlMgCu/data/init.837", + "data/AlMgCu/data/init.838", + "data/AlMgCu/data/init.839", + "data/AlMgCu/data/init.840", + "data/AlMgCu/data/init.842", + "data/AlMgCu/data/init.843", + "data/AlMgCu/data/init.844", + "data/AlMgCu/data/init.845", + "data/AlMgCu/data/init.847", + "data/AlMgCu/data/init.848", + "data/AlMgCu/data/init.849", + "data/AlMgCu/data/init.850", + "data/AlMgCu/data/init.851", + "data/AlMgCu/data/init.852", + "data/AlMgCu/data/init.853", + "data/AlMgCu/data/init.854", + "data/AlMgCu/data/init.855", + "data/AlMgCu/data/init.856", + "data/AlMgCu/data/init.857", + "data/AlMgCu/data/init.858", + "data/AlMgCu/data/init.859", + "data/AlMgCu/data/init.860", + "data/AlMgCu/data/init.862", + "data/AlMgCu/data/init.863", + "data/AlMgCu/data/init.864", + "data/AlMgCu/data/init.865", + "data/AlMgCu/data/init.866", + "data/AlMgCu/data/init.867", + "data/AlMgCu/data/init.868", + "data/AlMgCu/data/init.869", + "data/AlMgCu/data/init.870", + "data/AlMgCu/data/init.871", + "data/AlMgCu/data/init.872", + "data/AlMgCu/data/init.873", + "data/AlMgCu/data/init.874", + "data/AlMgCu/data/init.875", + "data/AlMgCu/data/init.876", + "data/AlMgCu/data/init.877", + "data/AlMgCu/data/init.879", + "data/AlMgCu/data/init.880", + "data/AlMgCu/data/init.881", + "data/AlMgCu/data/init.882", + "data/AlMgCu/data/init.883", + "data/AlMgCu/data/init.884", + "data/AlMgCu/data/init.885", + "data/AlMgCu/data/init.886", + "data/AlMgCu/data/init.887", + "data/AlMgCu/data/init.888", + "data/AlMgCu/data/init.889", + "data/AlMgCu/data/init.890", + "data/AlMgCu/data/init.891", + "data/AlMgCu/data/init.892", + "data/AlMgCu/data/init.894", + "data/AlMgCu/data/init.895", + "data/AlMgCu/data/init.896", + "data/AlMgCu/data/init.897", + "data/AlMgCu/data/init.898", + "data/AlMgCu/data/init.899", + "data/AlMgCu/data/init.900", + "data/AlMgCu/data/init.901", + "data/AlMgCu/data/init.902", + "data/AlMgCu/data/init.903", + "data/AlMgCu/data/init.905", + "data/AlMgCu/data/init.906", + "data/AlMgCu/data/init.907", + "data/AlMgCu/data/init.908", + "data/AlMgCu/data/init.910", + "data/AlMgCu/data/init.911", + "data/AlMgCu/data/init.912", + "data/AlMgCu/data/init.913", + "data/AlMgCu/data/init.914", + "data/AlMgCu/data/init.915", + "data/AlMgCu/data/init.916", + "data/AlMgCu/data/init.917", + "data/AlMgCu/data/init.918", + "data/AlMgCu/data/init.919", + "data/AlMgCu/data/init.922", + "data/AlMgCu/data/init.923", + "data/AlMgCu/data/init.924", + "data/AlMgCu/data/init.925", + "data/AlMgCu/data/init.926", + "data/AlMgCu/data/init.927", + "data/AlMgCu/data/init.928", + "data/AlMgCu/data/init.929", + "data/AlMgCu/data/init.930", + "data/AlMgCu/data/init.931", + "data/AlMgCu/data/init.933", + "data/AlMgCu/data/init.934", + "data/AlMgCu/data/init.935", + "data/AlMgCu/data/init.937", + "data/AlMgCu/data/init.938", + "data/AlMgCu/data/init.939", + "data/AlMgCu/data/init.940", + "data/AlMgCu/data/init.941", + "data/AlMgCu/data/init.942", + "data/AlMgCu/data/init.943", + "data/AlMgCu/data/init.944", + "data/AlMgCu/data/init.945", + "data/AlMgCu/data/init.946", + "data/AlMgCu/data/init.947", + "data/AlMgCu/data/init.948", + "data/AlMgCu/data/init.949", + "data/AlMgCu/data/init.950", + "data/AlMgCu/data/init.951", + "data/AlMgCu/data/init.952", + "data/AlMgCu/data/init.953", + "data/AlMgCu/data/init.955", + "data/AlMgCu/data/init.956", + "data/AlMgCu/data/init.957", + "data/AlMgCu/data/init.958", + "data/AlMgCu/data/init.959", + "data/AlMgCu/data/init.960", + "data/AlMgCu/data/init.961", + "data/AlMgCu/data/init.962", + "data/AlMgCu/data/init.963", + "data/AlMgCu/data/init.964", + "data/AlMgCu/data/init.965", + "data/AlMgCu/data/init.966", + "data/AlMgCu/data/init.967", + "data/AlMgCu/data/init.968", + "data/AlMgCu/data/init.969", + "data/AlMgCu/data/init.970", + "data/AlMgCu/data/init.971", + "data/AlMgCu/data/init.972", + "data/AlMgCu/data/init.973", + "data/AlMgCu/data/init.974", + "data/AlMgCu/data/init.975", + "data/AlMgCu/data/init.977", + "data/AlMgCu/data/init.978", + "data/AlMgCu/data/init.979", + "data/AlMgCu/data/init.980", + "data/AlMgCu/data/init.981", + "data/AlMgCu/data/init.982", + "data/AlMgCu/data/init.983", + "data/AlMgCu/data/init.984", + "data/AlMgCu/data/init.985", + "data/AlMgCu/data/init.986", + "data/AlMgCu/data/init.987", + "data/AlMgCu/data/init.988", + "data/AlMgCu/data/init.989", + "data/AlMgCu/data/init.990", + "data/AlMgCu/data/init.991", + "data/AlMgCu/data/init.993", + "data/AlMgCu/data/init.994", + "data/AlMgCu/data/init.995", + "data/AlMgCu/data/init.996", + "data/AlMgCu/data/init.997", + "data/AlMgCu/data/init.999", + "data/AlMgCu/data/sys.000", + "data/AlMgCu/data/sys.001", + "data/AlMgCu/data/sys.002", + "data/AlMgCu/data/sys.004", + "data/AlMgCu/data/sys.006", + "data/AlMgCu/data/sys.007", + "data/AlMgCu/data/sys.008", + "data/AlMgCu/data/sys.010", + "data/AlMgCu/data/sys.011", + "data/AlMgCu/data/sys.012", + "data/AlMgCu/data/sys.015", + "data/AlMgCu/data/sys.016", + "data/AlMgCu/data/sys.017", + "data/AlMgCu/data/sys.018", + "data/AlMgCu/data/sys.019", + "data/AlMgCu/data/sys.020", + "data/AlMgCu/data/sys.021", + "data/AlMgCu/data/sys.022", + "data/AlMgCu/data/sys.023", + "data/AlMgCu/data/sys.026", + "data/AlMgCu/data/sys.027", + "data/AlMgCu/data/sys.028", + "data/AlMgCu/data/sys.029", + "data/AlMgCu/data/sys.030", + "data/AlMgCu/data/sys.031", + "data/AlMgCu/data/sys.032", + "data/AlMgCu/data/sys.033", + "data/AlMgCu/data/sys.034", + "data/AlMgCu/data/sys.036", + "data/AlMgCu/data/sys.037", + "data/AlMgCu/data/sys.038", + "data/AlMgCu/data/sys.039", + "data/AlMgCu/data/sys.040", + "data/AlMgCu/data/sys.041", + "data/AlMgCu/data/sys.042", + "data/AlMgCu/data/sys.043", + "data/AlMgCu/data/sys.044", + "data/AlMgCu/data/sys.045", + "data/AlMgCu/data/sys.046", + "data/AlMgCu/data/sys.048", + "data/AlMgCu/data/sys.049", + "data/AlMgCu/data/sys.050", + "data/AlMgCu/data/sys.051", + "data/AlMgCu/data/sys.052", + "data/AlMgCu/data/sys.053", + "data/AlMgCu/data/sys.054", + "data/AlMgCu/data/sys.055", + "data/AlMgCu/data/sys.056", + "data/AlMgCu/data/sys.057", + "data/AlMgCu/data/sys.058", + "data/AlMgCu/data/sys.059", + "data/AlMgCu/data/sys.060", + "data/AlMgCu/data/sys.061", + "data/AlMgCu/data/sys.062", + "data/AlMgCu/data/sys.063", + "data/AlMgCu/data/sys.064", + "data/AlMgCu/data/sys.065", + "data/AlMgCu/data/sys.066", + "data/AlMgCu/data/sys.067", + "data/AlMgCu/data/sys.070", + "data/AlMgCu/data/sys.071", + "data/AlMgCu/data/sys.072", + "data/AlMgCu/data/sys.073", + "data/AlMgCu/data/sys.074", + "data/AlMgCu/data/sys.075", + "data/AlMgCu/data/sys.076", + "data/AlMgCu/data/sys.077", + "data/AlMgCu/data/sys.078", + "data/AlMgCu/data/sys.079", + "data/AlMgCu/data/sys.080", + "data/AlMgCu/data/sys.081", + "data/AlMgCu/data/sys.082", + "data/AlMgCu/data/sys.083", + "data/AlMgCu/data/sys.084", + "data/AlMgCu/data/sys.085", + "data/AlMgCu/data/sys.086", + "data/AlMgCu/data/sys.087", + "data/AlMgCu/data/sys.088", + "data/AlMgCu/data/sys.089", + "data/AlMgCu/data/sys.090", + "data/AlMgCu/data/sys.092", + "data/AlMgCu/data/sys.093", + "data/AlMgCu/data/sys.094", + "data/AlMgCu/data/sys.095", + "data/AlMgCu/data/sys.097", + "data/AlMgCu/data/sys.098", + "data/AlMgCu/data/sys.099", + "data/AlMgCu/data/sys.100", + "data/AlMgCu/data/sys.1000", + "data/AlMgCu/data/sys.10004", + "data/AlMgCu/data/sys.10006", + "data/AlMgCu/data/sys.1001", + "data/AlMgCu/data/sys.10010", + "data/AlMgCu/data/sys.10012", + "data/AlMgCu/data/sys.10018", + "data/AlMgCu/data/sys.1002", + "data/AlMgCu/data/sys.10024", + "data/AlMgCu/data/sys.10026", + "data/AlMgCu/data/sys.10027", + "data/AlMgCu/data/sys.10028", + "data/AlMgCu/data/sys.10029", + "data/AlMgCu/data/sys.1003", + "data/AlMgCu/data/sys.10030", + "data/AlMgCu/data/sys.10034", + "data/AlMgCu/data/sys.10035", + "data/AlMgCu/data/sys.10036", + "data/AlMgCu/data/sys.1004", + "data/AlMgCu/data/sys.10042", + "data/AlMgCu/data/sys.10044", + "data/AlMgCu/data/sys.10046", + "data/AlMgCu/data/sys.1005", + "data/AlMgCu/data/sys.10050", + "data/AlMgCu/data/sys.10052", + "data/AlMgCu/data/sys.10056", + "data/AlMgCu/data/sys.10058", + "data/AlMgCu/data/sys.1006", + "data/AlMgCu/data/sys.10060", + "data/AlMgCu/data/sys.10064", + "data/AlMgCu/data/sys.1007", + "data/AlMgCu/data/sys.10073", + "data/AlMgCu/data/sys.1008", + "data/AlMgCu/data/sys.10082", + "data/AlMgCu/data/sys.10083", + "data/AlMgCu/data/sys.10084", + "data/AlMgCu/data/sys.1009", + "data/AlMgCu/data/sys.10090", + "data/AlMgCu/data/sys.10091", + "data/AlMgCu/data/sys.10092", + "data/AlMgCu/data/sys.10098", + "data/AlMgCu/data/sys.101", + "data/AlMgCu/data/sys.1010", + "data/AlMgCu/data/sys.10100", + "data/AlMgCu/data/sys.10105", + "data/AlMgCu/data/sys.10106", + "data/AlMgCu/data/sys.1011", + "data/AlMgCu/data/sys.10112", + "data/AlMgCu/data/sys.10114", + "data/AlMgCu/data/sys.10115", + "data/AlMgCu/data/sys.10116", + "data/AlMgCu/data/sys.1012", + "data/AlMgCu/data/sys.10121", + "data/AlMgCu/data/sys.10122", + "data/AlMgCu/data/sys.10128", + "data/AlMgCu/data/sys.1013", + "data/AlMgCu/data/sys.10138", + "data/AlMgCu/data/sys.1014", + "data/AlMgCu/data/sys.10144", + "data/AlMgCu/data/sys.10145", + "data/AlMgCu/data/sys.10146", + "data/AlMgCu/data/sys.10148", + "data/AlMgCu/data/sys.1015", + "data/AlMgCu/data/sys.10154", + "data/AlMgCu/data/sys.10155", + "data/AlMgCu/data/sys.1016", + "data/AlMgCu/data/sys.10160", + "data/AlMgCu/data/sys.10162", + "data/AlMgCu/data/sys.10163", + "data/AlMgCu/data/sys.1017", + "data/AlMgCu/data/sys.10170", + "data/AlMgCu/data/sys.10174", + "data/AlMgCu/data/sys.10176", + "data/AlMgCu/data/sys.10178", + "data/AlMgCu/data/sys.1018", + "data/AlMgCu/data/sys.1019", + "data/AlMgCu/data/sys.10193", + "data/AlMgCu/data/sys.10194", + "data/AlMgCu/data/sys.10196", + "data/AlMgCu/data/sys.1020", + "data/AlMgCu/data/sys.10202", + "data/AlMgCu/data/sys.1021", + "data/AlMgCu/data/sys.10210", + "data/AlMgCu/data/sys.10211", + "data/AlMgCu/data/sys.10218", + "data/AlMgCu/data/sys.1022", + "data/AlMgCu/data/sys.10226", + "data/AlMgCu/data/sys.1023", + "data/AlMgCu/data/sys.10233", + "data/AlMgCu/data/sys.10236", + "data/AlMgCu/data/sys.1024", + "data/AlMgCu/data/sys.10244", + "data/AlMgCu/data/sys.10248", + "data/AlMgCu/data/sys.1025", + "data/AlMgCu/data/sys.10250", + "data/AlMgCu/data/sys.10253", + "data/AlMgCu/data/sys.10258", + "data/AlMgCu/data/sys.1026", + "data/AlMgCu/data/sys.10260", + "data/AlMgCu/data/sys.10268", + "data/AlMgCu/data/sys.1027", + "data/AlMgCu/data/sys.10274", + "data/AlMgCu/data/sys.10282", + "data/AlMgCu/data/sys.10289", + "data/AlMgCu/data/sys.1029", + "data/AlMgCu/data/sys.10296", + "data/AlMgCu/data/sys.10298", + "data/AlMgCu/data/sys.103", + "data/AlMgCu/data/sys.1030", + "data/AlMgCu/data/sys.10306", + "data/AlMgCu/data/sys.10308", + "data/AlMgCu/data/sys.1031", + "data/AlMgCu/data/sys.10314", + "data/AlMgCu/data/sys.1032", + "data/AlMgCu/data/sys.10322", + "data/AlMgCu/data/sys.10324", + "data/AlMgCu/data/sys.10329", + "data/AlMgCu/data/sys.1033", + "data/AlMgCu/data/sys.10330", + "data/AlMgCu/data/sys.1034", + "data/AlMgCu/data/sys.1035", + "data/AlMgCu/data/sys.10356", + "data/AlMgCu/data/sys.1036", + "data/AlMgCu/data/sys.10368", + "data/AlMgCu/data/sys.1037", + "data/AlMgCu/data/sys.10370", + "data/AlMgCu/data/sys.10372", + "data/AlMgCu/data/sys.1038", + "data/AlMgCu/data/sys.1039", + "data/AlMgCu/data/sys.10394", + "data/AlMgCu/data/sys.10396", + "data/AlMgCu/data/sys.104", + "data/AlMgCu/data/sys.10402", + "data/AlMgCu/data/sys.10404", + "data/AlMgCu/data/sys.10408", + "data/AlMgCu/data/sys.1041", + "data/AlMgCu/data/sys.10410", + "data/AlMgCu/data/sys.1042", + "data/AlMgCu/data/sys.1043", + "data/AlMgCu/data/sys.1044", + "data/AlMgCu/data/sys.1045", + "data/AlMgCu/data/sys.10450", + "data/AlMgCu/data/sys.1046", + "data/AlMgCu/data/sys.1047", + "data/AlMgCu/data/sys.1048", + "data/AlMgCu/data/sys.10483", + "data/AlMgCu/data/sys.10484", + "data/AlMgCu/data/sys.1049", + "data/AlMgCu/data/sys.10490", + "data/AlMgCu/data/sys.105", + "data/AlMgCu/data/sys.1050", + "data/AlMgCu/data/sys.1051", + "data/AlMgCu/data/sys.1052", + "data/AlMgCu/data/sys.1053", + "data/AlMgCu/data/sys.10536", + "data/AlMgCu/data/sys.1054", + "data/AlMgCu/data/sys.10544", + "data/AlMgCu/data/sys.10554", + "data/AlMgCu/data/sys.1056", + "data/AlMgCu/data/sys.10588", + "data/AlMgCu/data/sys.1059", + "data/AlMgCu/data/sys.10592", + "data/AlMgCu/data/sys.106", + "data/AlMgCu/data/sys.1060", + "data/AlMgCu/data/sys.10602", + "data/AlMgCu/data/sys.10604", + "data/AlMgCu/data/sys.1061", + "data/AlMgCu/data/sys.10612", + "data/AlMgCu/data/sys.1062", + "data/AlMgCu/data/sys.10626", + "data/AlMgCu/data/sys.1063", + "data/AlMgCu/data/sys.10636", + "data/AlMgCu/data/sys.1064", + "data/AlMgCu/data/sys.1065", + "data/AlMgCu/data/sys.1066", + "data/AlMgCu/data/sys.1067", + "data/AlMgCu/data/sys.10676", + "data/AlMgCu/data/sys.1068", + "data/AlMgCu/data/sys.1069", + "data/AlMgCu/data/sys.107", + "data/AlMgCu/data/sys.1070", + "data/AlMgCu/data/sys.10702", + "data/AlMgCu/data/sys.1071", + "data/AlMgCu/data/sys.1072", + "data/AlMgCu/data/sys.1073", + "data/AlMgCu/data/sys.1074", + "data/AlMgCu/data/sys.1075", + "data/AlMgCu/data/sys.1076", + "data/AlMgCu/data/sys.1078", + "data/AlMgCu/data/sys.1079", + "data/AlMgCu/data/sys.108", + "data/AlMgCu/data/sys.1080", + "data/AlMgCu/data/sys.1082", + "data/AlMgCu/data/sys.1083", + "data/AlMgCu/data/sys.1084", + "data/AlMgCu/data/sys.1085", + "data/AlMgCu/data/sys.1086", + "data/AlMgCu/data/sys.1087", + "data/AlMgCu/data/sys.1088", + "data/AlMgCu/data/sys.1089", + "data/AlMgCu/data/sys.10895", + "data/AlMgCu/data/sys.10898", + "data/AlMgCu/data/sys.109", + "data/AlMgCu/data/sys.1090", + "data/AlMgCu/data/sys.10900", + "data/AlMgCu/data/sys.10904", + "data/AlMgCu/data/sys.10905", + "data/AlMgCu/data/sys.10906", + "data/AlMgCu/data/sys.10907", + "data/AlMgCu/data/sys.10909", + "data/AlMgCu/data/sys.1091", + "data/AlMgCu/data/sys.10910", + "data/AlMgCu/data/sys.10912", + "data/AlMgCu/data/sys.10914", + "data/AlMgCu/data/sys.10916", + "data/AlMgCu/data/sys.1092", + "data/AlMgCu/data/sys.10920", + "data/AlMgCu/data/sys.10921", + "data/AlMgCu/data/sys.10922", + "data/AlMgCu/data/sys.10924", + "data/AlMgCu/data/sys.10926", + "data/AlMgCu/data/sys.10929", + "data/AlMgCu/data/sys.10930", + "data/AlMgCu/data/sys.10932", + "data/AlMgCu/data/sys.10933", + "data/AlMgCu/data/sys.10936", + "data/AlMgCu/data/sys.10938", + "data/AlMgCu/data/sys.10939", + "data/AlMgCu/data/sys.1094", + "data/AlMgCu/data/sys.10941", + "data/AlMgCu/data/sys.10942", + "data/AlMgCu/data/sys.10944", + "data/AlMgCu/data/sys.10945", + "data/AlMgCu/data/sys.10946", + "data/AlMgCu/data/sys.10947", + "data/AlMgCu/data/sys.1095", + "data/AlMgCu/data/sys.10950", + "data/AlMgCu/data/sys.10952", + "data/AlMgCu/data/sys.10956", + "data/AlMgCu/data/sys.10957", + "data/AlMgCu/data/sys.10960", + "data/AlMgCu/data/sys.10961", + "data/AlMgCu/data/sys.10962", + "data/AlMgCu/data/sys.10964", + "data/AlMgCu/data/sys.10966", + "data/AlMgCu/data/sys.10968", + "data/AlMgCu/data/sys.10969", + "data/AlMgCu/data/sys.1097", + "data/AlMgCu/data/sys.10970", + "data/AlMgCu/data/sys.10972", + "data/AlMgCu/data/sys.10977", + "data/AlMgCu/data/sys.1098", + "data/AlMgCu/data/sys.10980", + "data/AlMgCu/data/sys.10985", + "data/AlMgCu/data/sys.10986", + "data/AlMgCu/data/sys.10989", + "data/AlMgCu/data/sys.1099", + "data/AlMgCu/data/sys.10993", + "data/AlMgCu/data/sys.10994", + "data/AlMgCu/data/sys.10995", + "data/AlMgCu/data/sys.10996", + "data/AlMgCu/data/sys.10998", + "data/AlMgCu/data/sys.110", + "data/AlMgCu/data/sys.1100", + "data/AlMgCu/data/sys.11000", + "data/AlMgCu/data/sys.11001", + "data/AlMgCu/data/sys.11002", + "data/AlMgCu/data/sys.11006", + "data/AlMgCu/data/sys.11008", + "data/AlMgCu/data/sys.11009", + "data/AlMgCu/data/sys.1101", + "data/AlMgCu/data/sys.11010", + "data/AlMgCu/data/sys.11016", + "data/AlMgCu/data/sys.11018", + "data/AlMgCu/data/sys.1102", + "data/AlMgCu/data/sys.11020", + "data/AlMgCu/data/sys.11024", + "data/AlMgCu/data/sys.11028", + "data/AlMgCu/data/sys.11029", + "data/AlMgCu/data/sys.1103", + "data/AlMgCu/data/sys.11033", + "data/AlMgCu/data/sys.11034", + "data/AlMgCu/data/sys.11035", + "data/AlMgCu/data/sys.11036", + "data/AlMgCu/data/sys.11037", + "data/AlMgCu/data/sys.11038", + "data/AlMgCu/data/sys.1104", + "data/AlMgCu/data/sys.11042", + "data/AlMgCu/data/sys.11044", + "data/AlMgCu/data/sys.11048", + "data/AlMgCu/data/sys.11049", + "data/AlMgCu/data/sys.1105", + "data/AlMgCu/data/sys.11056", + "data/AlMgCu/data/sys.11057", + "data/AlMgCu/data/sys.11058", + "data/AlMgCu/data/sys.1106", + "data/AlMgCu/data/sys.11060", + "data/AlMgCu/data/sys.11062", + "data/AlMgCu/data/sys.11064", + "data/AlMgCu/data/sys.11065", + "data/AlMgCu/data/sys.11066", + "data/AlMgCu/data/sys.11068", + "data/AlMgCu/data/sys.11069", + "data/AlMgCu/data/sys.1107", + "data/AlMgCu/data/sys.11076", + "data/AlMgCu/data/sys.11077", + "data/AlMgCu/data/sys.1108", + "data/AlMgCu/data/sys.11080", + "data/AlMgCu/data/sys.11081", + "data/AlMgCu/data/sys.11082", + "data/AlMgCu/data/sys.11088", + "data/AlMgCu/data/sys.11090", + "data/AlMgCu/data/sys.11096", + "data/AlMgCu/data/sys.11097", + "data/AlMgCu/data/sys.11098", + "data/AlMgCu/data/sys.11099", + "data/AlMgCu/data/sys.111", + "data/AlMgCu/data/sys.1110", + "data/AlMgCu/data/sys.11104", + "data/AlMgCu/data/sys.11105", + "data/AlMgCu/data/sys.11106", + "data/AlMgCu/data/sys.11107", + "data/AlMgCu/data/sys.11108", + "data/AlMgCu/data/sys.1111", + "data/AlMgCu/data/sys.11114", + "data/AlMgCu/data/sys.1112", + "data/AlMgCu/data/sys.11121", + "data/AlMgCu/data/sys.11122", + "data/AlMgCu/data/sys.11128", + "data/AlMgCu/data/sys.1113", + "data/AlMgCu/data/sys.11132", + "data/AlMgCu/data/sys.11133", + "data/AlMgCu/data/sys.11134", + "data/AlMgCu/data/sys.11136", + "data/AlMgCu/data/sys.11137", + "data/AlMgCu/data/sys.11139", + "data/AlMgCu/data/sys.1114", + "data/AlMgCu/data/sys.11144", + "data/AlMgCu/data/sys.11146", + "data/AlMgCu/data/sys.1115", + "data/AlMgCu/data/sys.11152", + "data/AlMgCu/data/sys.11154", + "data/AlMgCu/data/sys.1116", + "data/AlMgCu/data/sys.11160", + "data/AlMgCu/data/sys.11162", + "data/AlMgCu/data/sys.1117", + "data/AlMgCu/data/sys.11170", + "data/AlMgCu/data/sys.11176", + "data/AlMgCu/data/sys.11177", + "data/AlMgCu/data/sys.11184", + "data/AlMgCu/data/sys.11192", + "data/AlMgCu/data/sys.11193", + "data/AlMgCu/data/sys.11196", + "data/AlMgCu/data/sys.112", + "data/AlMgCu/data/sys.1120", + "data/AlMgCu/data/sys.11202", + "data/AlMgCu/data/sys.11204", + "data/AlMgCu/data/sys.11208", + "data/AlMgCu/data/sys.1121", + "data/AlMgCu/data/sys.11216", + "data/AlMgCu/data/sys.11218", + "data/AlMgCu/data/sys.11219", + "data/AlMgCu/data/sys.1122", + "data/AlMgCu/data/sys.11222", + "data/AlMgCu/data/sys.11226", + "data/AlMgCu/data/sys.1123", + "data/AlMgCu/data/sys.11232", + "data/AlMgCu/data/sys.1124", + "data/AlMgCu/data/sys.11240", + "data/AlMgCu/data/sys.11242", + "data/AlMgCu/data/sys.11248", + "data/AlMgCu/data/sys.11249", + "data/AlMgCu/data/sys.1125", + "data/AlMgCu/data/sys.11256", + "data/AlMgCu/data/sys.11258", + "data/AlMgCu/data/sys.1126", + "data/AlMgCu/data/sys.11265", + "data/AlMgCu/data/sys.1127", + "data/AlMgCu/data/sys.11273", + "data/AlMgCu/data/sys.1128", + "data/AlMgCu/data/sys.11280", + "data/AlMgCu/data/sys.11288", + "data/AlMgCu/data/sys.11289", + "data/AlMgCu/data/sys.1129", + "data/AlMgCu/data/sys.11292", + "data/AlMgCu/data/sys.11296", + "data/AlMgCu/data/sys.113", + "data/AlMgCu/data/sys.1130", + "data/AlMgCu/data/sys.11304", + "data/AlMgCu/data/sys.11308", + "data/AlMgCu/data/sys.1131", + "data/AlMgCu/data/sys.11312", + "data/AlMgCu/data/sys.11313", + "data/AlMgCu/data/sys.1132", + "data/AlMgCu/data/sys.11320", + "data/AlMgCu/data/sys.11328", + "data/AlMgCu/data/sys.1133", + "data/AlMgCu/data/sys.11332", + "data/AlMgCu/data/sys.11337", + "data/AlMgCu/data/sys.1134", + "data/AlMgCu/data/sys.1135", + "data/AlMgCu/data/sys.11352", + "data/AlMgCu/data/sys.11353", + "data/AlMgCu/data/sys.11354", + "data/AlMgCu/data/sys.1136", + "data/AlMgCu/data/sys.11362", + "data/AlMgCu/data/sys.1137", + "data/AlMgCu/data/sys.11372", + "data/AlMgCu/data/sys.11376", + "data/AlMgCu/data/sys.1138", + "data/AlMgCu/data/sys.11386", + "data/AlMgCu/data/sys.1139", + "data/AlMgCu/data/sys.11392", + "data/AlMgCu/data/sys.114", + "data/AlMgCu/data/sys.1140", + "data/AlMgCu/data/sys.1141", + "data/AlMgCu/data/sys.1143", + "data/AlMgCu/data/sys.1144", + "data/AlMgCu/data/sys.1145", + "data/AlMgCu/data/sys.1146", + "data/AlMgCu/data/sys.1147", + "data/AlMgCu/data/sys.1148", + "data/AlMgCu/data/sys.1149", + "data/AlMgCu/data/sys.115", + "data/AlMgCu/data/sys.1150", + "data/AlMgCu/data/sys.1151", + "data/AlMgCu/data/sys.1152", + "data/AlMgCu/data/sys.1154", + "data/AlMgCu/data/sys.1155", + "data/AlMgCu/data/sys.1157", + "data/AlMgCu/data/sys.1158", + "data/AlMgCu/data/sys.1159", + "data/AlMgCu/data/sys.116", + "data/AlMgCu/data/sys.1160", + "data/AlMgCu/data/sys.1161", + "data/AlMgCu/data/sys.1162", + "data/AlMgCu/data/sys.1163", + "data/AlMgCu/data/sys.1164", + "data/AlMgCu/data/sys.1165", + "data/AlMgCu/data/sys.1166", + "data/AlMgCu/data/sys.1167", + "data/AlMgCu/data/sys.1168", + "data/AlMgCu/data/sys.1169", + "data/AlMgCu/data/sys.117", + "data/AlMgCu/data/sys.1170", + "data/AlMgCu/data/sys.1171", + "data/AlMgCu/data/sys.1172", + "data/AlMgCu/data/sys.1173", + "data/AlMgCu/data/sys.1174", + "data/AlMgCu/data/sys.1175", + "data/AlMgCu/data/sys.1176", + "data/AlMgCu/data/sys.1177", + "data/AlMgCu/data/sys.1178", + "data/AlMgCu/data/sys.1179", + "data/AlMgCu/data/sys.118", + "data/AlMgCu/data/sys.1180", + "data/AlMgCu/data/sys.1183", + "data/AlMgCu/data/sys.1184", + "data/AlMgCu/data/sys.1185", + "data/AlMgCu/data/sys.1186", + "data/AlMgCu/data/sys.1187", + "data/AlMgCu/data/sys.1188", + "data/AlMgCu/data/sys.119", + "data/AlMgCu/data/sys.1191", + "data/AlMgCu/data/sys.1193", + "data/AlMgCu/data/sys.1194", + "data/AlMgCu/data/sys.1195", + "data/AlMgCu/data/sys.1198", + "data/AlMgCu/data/sys.1199", + "data/AlMgCu/data/sys.1200", + "data/AlMgCu/data/sys.1201", + "data/AlMgCu/data/sys.1202", + "data/AlMgCu/data/sys.1203", + "data/AlMgCu/data/sys.1204", + "data/AlMgCu/data/sys.1205", + "data/AlMgCu/data/sys.1206", + "data/AlMgCu/data/sys.1208", + "data/AlMgCu/data/sys.1209", + "data/AlMgCu/data/sys.121", + "data/AlMgCu/data/sys.1210", + "data/AlMgCu/data/sys.1211", + "data/AlMgCu/data/sys.1212", + "data/AlMgCu/data/sys.1213", + "data/AlMgCu/data/sys.1214", + "data/AlMgCu/data/sys.1215", + "data/AlMgCu/data/sys.1216", + "data/AlMgCu/data/sys.1217", + "data/AlMgCu/data/sys.1218", + "data/AlMgCu/data/sys.1219", + "data/AlMgCu/data/sys.122", + "data/AlMgCu/data/sys.1220", + "data/AlMgCu/data/sys.1221", + "data/AlMgCu/data/sys.1222", + "data/AlMgCu/data/sys.1223", + "data/AlMgCu/data/sys.1224", + "data/AlMgCu/data/sys.1225", + "data/AlMgCu/data/sys.1226", + "data/AlMgCu/data/sys.1227", + "data/AlMgCu/data/sys.1228", + "data/AlMgCu/data/sys.1229", + "data/AlMgCu/data/sys.123", + "data/AlMgCu/data/sys.1230", + "data/AlMgCu/data/sys.1232", + "data/AlMgCu/data/sys.1233", + "data/AlMgCu/data/sys.1234", + "data/AlMgCu/data/sys.1236", + "data/AlMgCu/data/sys.1237", + "data/AlMgCu/data/sys.1238", + "data/AlMgCu/data/sys.1239", + "data/AlMgCu/data/sys.124", + "data/AlMgCu/data/sys.1240", + "data/AlMgCu/data/sys.1241", + "data/AlMgCu/data/sys.1242", + "data/AlMgCu/data/sys.1243", + "data/AlMgCu/data/sys.1244", + "data/AlMgCu/data/sys.1245", + "data/AlMgCu/data/sys.1246", + "data/AlMgCu/data/sys.1247", + "data/AlMgCu/data/sys.1248", + "data/AlMgCu/data/sys.1249", + "data/AlMgCu/data/sys.125", + "data/AlMgCu/data/sys.1250", + "data/AlMgCu/data/sys.1251", + "data/AlMgCu/data/sys.1252", + "data/AlMgCu/data/sys.1254", + "data/AlMgCu/data/sys.1255", + "data/AlMgCu/data/sys.1256", + "data/AlMgCu/data/sys.1257", + "data/AlMgCu/data/sys.1258", + "data/AlMgCu/data/sys.1259", + "data/AlMgCu/data/sys.126", + "data/AlMgCu/data/sys.1260", + "data/AlMgCu/data/sys.1261", + "data/AlMgCu/data/sys.1262", + "data/AlMgCu/data/sys.1263", + "data/AlMgCu/data/sys.1264", + "data/AlMgCu/data/sys.1265", + "data/AlMgCu/data/sys.1266", + "data/AlMgCu/data/sys.1268", + "data/AlMgCu/data/sys.1269", + "data/AlMgCu/data/sys.127", + "data/AlMgCu/data/sys.1270", + "data/AlMgCu/data/sys.1271", + "data/AlMgCu/data/sys.1272", + "data/AlMgCu/data/sys.1273", + "data/AlMgCu/data/sys.1274", + "data/AlMgCu/data/sys.1275", + "data/AlMgCu/data/sys.1276", + "data/AlMgCu/data/sys.1277", + "data/AlMgCu/data/sys.1278", + "data/AlMgCu/data/sys.1279", + "data/AlMgCu/data/sys.128", + "data/AlMgCu/data/sys.1280", + "data/AlMgCu/data/sys.1281", + "data/AlMgCu/data/sys.1282", + "data/AlMgCu/data/sys.1283", + "data/AlMgCu/data/sys.1284", + "data/AlMgCu/data/sys.1286", + "data/AlMgCu/data/sys.1287", + "data/AlMgCu/data/sys.1288", + "data/AlMgCu/data/sys.1289", + "data/AlMgCu/data/sys.129", + "data/AlMgCu/data/sys.1290", + "data/AlMgCu/data/sys.1291", + "data/AlMgCu/data/sys.1292", + "data/AlMgCu/data/sys.1294", + "data/AlMgCu/data/sys.1295", + "data/AlMgCu/data/sys.1296", + "data/AlMgCu/data/sys.1298", + "data/AlMgCu/data/sys.1299", + "data/AlMgCu/data/sys.130", + "data/AlMgCu/data/sys.1300", + "data/AlMgCu/data/sys.1301", + "data/AlMgCu/data/sys.1302", + "data/AlMgCu/data/sys.1303", + "data/AlMgCu/data/sys.1304", + "data/AlMgCu/data/sys.1306", + "data/AlMgCu/data/sys.1307", + "data/AlMgCu/data/sys.1308", + "data/AlMgCu/data/sys.1309", + "data/AlMgCu/data/sys.131", + "data/AlMgCu/data/sys.1310", + "data/AlMgCu/data/sys.1311", + "data/AlMgCu/data/sys.1312", + "data/AlMgCu/data/sys.1313", + "data/AlMgCu/data/sys.1314", + "data/AlMgCu/data/sys.1316", + "data/AlMgCu/data/sys.1317", + "data/AlMgCu/data/sys.1318", + "data/AlMgCu/data/sys.1319", + "data/AlMgCu/data/sys.132", + "data/AlMgCu/data/sys.1321", + "data/AlMgCu/data/sys.1322", + "data/AlMgCu/data/sys.1323", + "data/AlMgCu/data/sys.1324", + "data/AlMgCu/data/sys.1325", + "data/AlMgCu/data/sys.1326", + "data/AlMgCu/data/sys.1327", + "data/AlMgCu/data/sys.1328", + "data/AlMgCu/data/sys.1329", + "data/AlMgCu/data/sys.1330", + "data/AlMgCu/data/sys.1331", + "data/AlMgCu/data/sys.1332", + "data/AlMgCu/data/sys.1333", + "data/AlMgCu/data/sys.1334", + "data/AlMgCu/data/sys.1335", + "data/AlMgCu/data/sys.1336", + "data/AlMgCu/data/sys.1337", + "data/AlMgCu/data/sys.1338", + "data/AlMgCu/data/sys.1339", + "data/AlMgCu/data/sys.1340", + "data/AlMgCu/data/sys.1341", + "data/AlMgCu/data/sys.1342", + "data/AlMgCu/data/sys.1343", + "data/AlMgCu/data/sys.1344", + "data/AlMgCu/data/sys.1345", + "data/AlMgCu/data/sys.1346", + "data/AlMgCu/data/sys.1347", + "data/AlMgCu/data/sys.1348", + "data/AlMgCu/data/sys.1349", + "data/AlMgCu/data/sys.135", + "data/AlMgCu/data/sys.1350", + "data/AlMgCu/data/sys.1351", + "data/AlMgCu/data/sys.1352", + "data/AlMgCu/data/sys.1353", + "data/AlMgCu/data/sys.1354", + "data/AlMgCu/data/sys.1355", + "data/AlMgCu/data/sys.1356", + "data/AlMgCu/data/sys.1357", + "data/AlMgCu/data/sys.1358", + "data/AlMgCu/data/sys.1359", + "data/AlMgCu/data/sys.136", + "data/AlMgCu/data/sys.1360", + "data/AlMgCu/data/sys.1361", + "data/AlMgCu/data/sys.1362", + "data/AlMgCu/data/sys.1363", + "data/AlMgCu/data/sys.1364", + "data/AlMgCu/data/sys.1365", + "data/AlMgCu/data/sys.1366", + "data/AlMgCu/data/sys.1367", + "data/AlMgCu/data/sys.1368", + "data/AlMgCu/data/sys.1369", + "data/AlMgCu/data/sys.137", + "data/AlMgCu/data/sys.1370", + "data/AlMgCu/data/sys.1371", + "data/AlMgCu/data/sys.1372", + "data/AlMgCu/data/sys.1373", + "data/AlMgCu/data/sys.1374", + "data/AlMgCu/data/sys.1376", + "data/AlMgCu/data/sys.1377", + "data/AlMgCu/data/sys.1379", + "data/AlMgCu/data/sys.138", + "data/AlMgCu/data/sys.1381", + "data/AlMgCu/data/sys.1382", + "data/AlMgCu/data/sys.1383", + "data/AlMgCu/data/sys.1384", + "data/AlMgCu/data/sys.1385", + "data/AlMgCu/data/sys.1387", + "data/AlMgCu/data/sys.1388", + "data/AlMgCu/data/sys.139", + "data/AlMgCu/data/sys.1390", + "data/AlMgCu/data/sys.1391", + "data/AlMgCu/data/sys.1392", + "data/AlMgCu/data/sys.1394", + "data/AlMgCu/data/sys.1395", + "data/AlMgCu/data/sys.1396", + "data/AlMgCu/data/sys.1398", + "data/AlMgCu/data/sys.1399", + "data/AlMgCu/data/sys.140", + "data/AlMgCu/data/sys.1400", + "data/AlMgCu/data/sys.1401", + "data/AlMgCu/data/sys.1403", + "data/AlMgCu/data/sys.1404", + "data/AlMgCu/data/sys.1405", + "data/AlMgCu/data/sys.1406", + "data/AlMgCu/data/sys.1407", + "data/AlMgCu/data/sys.1409", + "data/AlMgCu/data/sys.141", + "data/AlMgCu/data/sys.1410", + "data/AlMgCu/data/sys.1411", + "data/AlMgCu/data/sys.1412", + "data/AlMgCu/data/sys.1413", + "data/AlMgCu/data/sys.1414", + "data/AlMgCu/data/sys.1415", + "data/AlMgCu/data/sys.1416", + "data/AlMgCu/data/sys.1418", + "data/AlMgCu/data/sys.1419", + "data/AlMgCu/data/sys.142", + "data/AlMgCu/data/sys.1420", + "data/AlMgCu/data/sys.1421", + "data/AlMgCu/data/sys.1422", + "data/AlMgCu/data/sys.1423", + "data/AlMgCu/data/sys.1424", + "data/AlMgCu/data/sys.1425", + "data/AlMgCu/data/sys.1427", + "data/AlMgCu/data/sys.1428", + "data/AlMgCu/data/sys.1429", + "data/AlMgCu/data/sys.143", + "data/AlMgCu/data/sys.1430", + "data/AlMgCu/data/sys.1431", + "data/AlMgCu/data/sys.1432", + "data/AlMgCu/data/sys.1433", + "data/AlMgCu/data/sys.1434", + "data/AlMgCu/data/sys.1435", + "data/AlMgCu/data/sys.1436", + "data/AlMgCu/data/sys.1437", + "data/AlMgCu/data/sys.1438", + "data/AlMgCu/data/sys.1439", + "data/AlMgCu/data/sys.144", + "data/AlMgCu/data/sys.1440", + "data/AlMgCu/data/sys.1441", + "data/AlMgCu/data/sys.1442", + "data/AlMgCu/data/sys.1443", + "data/AlMgCu/data/sys.1444", + "data/AlMgCu/data/sys.1445", + "data/AlMgCu/data/sys.1446", + "data/AlMgCu/data/sys.1447", + "data/AlMgCu/data/sys.1448", + "data/AlMgCu/data/sys.1449", + "data/AlMgCu/data/sys.145", + "data/AlMgCu/data/sys.1450", + "data/AlMgCu/data/sys.1451", + "data/AlMgCu/data/sys.1452", + "data/AlMgCu/data/sys.1453", + "data/AlMgCu/data/sys.1454", + "data/AlMgCu/data/sys.1455", + "data/AlMgCu/data/sys.1456", + "data/AlMgCu/data/sys.1457", + "data/AlMgCu/data/sys.1458", + "data/AlMgCu/data/sys.1459", + "data/AlMgCu/data/sys.1461", + "data/AlMgCu/data/sys.1462", + "data/AlMgCu/data/sys.1463", + "data/AlMgCu/data/sys.1464", + "data/AlMgCu/data/sys.1465", + "data/AlMgCu/data/sys.1466", + "data/AlMgCu/data/sys.1467", + "data/AlMgCu/data/sys.1468", + "data/AlMgCu/data/sys.1469", + "data/AlMgCu/data/sys.147", + "data/AlMgCu/data/sys.1470", + "data/AlMgCu/data/sys.1471", + "data/AlMgCu/data/sys.1473", + "data/AlMgCu/data/sys.1474", + "data/AlMgCu/data/sys.1475", + "data/AlMgCu/data/sys.1476", + "data/AlMgCu/data/sys.1477", + "data/AlMgCu/data/sys.1478", + "data/AlMgCu/data/sys.1479", + "data/AlMgCu/data/sys.148", + "data/AlMgCu/data/sys.1480", + "data/AlMgCu/data/sys.1483", + "data/AlMgCu/data/sys.1484", + "data/AlMgCu/data/sys.1485", + "data/AlMgCu/data/sys.1487", + "data/AlMgCu/data/sys.1488", + "data/AlMgCu/data/sys.1489", + "data/AlMgCu/data/sys.149", + "data/AlMgCu/data/sys.1490", + "data/AlMgCu/data/sys.1491", + "data/AlMgCu/data/sys.1492", + "data/AlMgCu/data/sys.1494", + "data/AlMgCu/data/sys.1495", + "data/AlMgCu/data/sys.1496", + "data/AlMgCu/data/sys.1497", + "data/AlMgCu/data/sys.1498", + "data/AlMgCu/data/sys.1499", + "data/AlMgCu/data/sys.1500", + "data/AlMgCu/data/sys.1501", + "data/AlMgCu/data/sys.1502", + "data/AlMgCu/data/sys.1503", + "data/AlMgCu/data/sys.1504", + "data/AlMgCu/data/sys.1505", + "data/AlMgCu/data/sys.1506", + "data/AlMgCu/data/sys.1507", + "data/AlMgCu/data/sys.1508", + "data/AlMgCu/data/sys.1509", + "data/AlMgCu/data/sys.151", + "data/AlMgCu/data/sys.1510", + "data/AlMgCu/data/sys.1511", + "data/AlMgCu/data/sys.1512", + "data/AlMgCu/data/sys.1513", + "data/AlMgCu/data/sys.1515", + "data/AlMgCu/data/sys.1516", + "data/AlMgCu/data/sys.1517", + "data/AlMgCu/data/sys.1518", + "data/AlMgCu/data/sys.1519", + "data/AlMgCu/data/sys.152", + "data/AlMgCu/data/sys.1520", + "data/AlMgCu/data/sys.1521", + "data/AlMgCu/data/sys.1522", + "data/AlMgCu/data/sys.1523", + "data/AlMgCu/data/sys.1524", + "data/AlMgCu/data/sys.1525", + "data/AlMgCu/data/sys.1526", + "data/AlMgCu/data/sys.1527", + "data/AlMgCu/data/sys.1528", + "data/AlMgCu/data/sys.1529", + "data/AlMgCu/data/sys.153", + "data/AlMgCu/data/sys.1530", + "data/AlMgCu/data/sys.1531", + "data/AlMgCu/data/sys.1532", + "data/AlMgCu/data/sys.1533", + "data/AlMgCu/data/sys.1534", + "data/AlMgCu/data/sys.1535", + "data/AlMgCu/data/sys.1536", + "data/AlMgCu/data/sys.1537", + "data/AlMgCu/data/sys.1538", + "data/AlMgCu/data/sys.1539", + "data/AlMgCu/data/sys.154", + "data/AlMgCu/data/sys.1540", + "data/AlMgCu/data/sys.1541", + "data/AlMgCu/data/sys.1542", + "data/AlMgCu/data/sys.1543", + "data/AlMgCu/data/sys.1544", + "data/AlMgCu/data/sys.1545", + "data/AlMgCu/data/sys.1546", + "data/AlMgCu/data/sys.1547", + "data/AlMgCu/data/sys.1548", + "data/AlMgCu/data/sys.1549", + "data/AlMgCu/data/sys.155", + "data/AlMgCu/data/sys.1550", + "data/AlMgCu/data/sys.1551", + "data/AlMgCu/data/sys.1552", + "data/AlMgCu/data/sys.1554", + "data/AlMgCu/data/sys.1555", + "data/AlMgCu/data/sys.1556", + "data/AlMgCu/data/sys.1557", + "data/AlMgCu/data/sys.1558", + "data/AlMgCu/data/sys.1559", + "data/AlMgCu/data/sys.156", + "data/AlMgCu/data/sys.1560", + "data/AlMgCu/data/sys.1561", + "data/AlMgCu/data/sys.1562", + "data/AlMgCu/data/sys.1563", + "data/AlMgCu/data/sys.1564", + "data/AlMgCu/data/sys.1565", + "data/AlMgCu/data/sys.1566", + "data/AlMgCu/data/sys.1567", + "data/AlMgCu/data/sys.1568", + "data/AlMgCu/data/sys.1569", + "data/AlMgCu/data/sys.157", + "data/AlMgCu/data/sys.1570", + "data/AlMgCu/data/sys.1571", + "data/AlMgCu/data/sys.1572", + "data/AlMgCu/data/sys.1573", + "data/AlMgCu/data/sys.1574", + "data/AlMgCu/data/sys.1575", + "data/AlMgCu/data/sys.1576", + "data/AlMgCu/data/sys.1578", + "data/AlMgCu/data/sys.1579", + "data/AlMgCu/data/sys.158", + "data/AlMgCu/data/sys.1580", + "data/AlMgCu/data/sys.1581", + "data/AlMgCu/data/sys.1582", + "data/AlMgCu/data/sys.1583", + "data/AlMgCu/data/sys.1585", + "data/AlMgCu/data/sys.1586", + "data/AlMgCu/data/sys.1587", + "data/AlMgCu/data/sys.1588", + "data/AlMgCu/data/sys.1589", + "data/AlMgCu/data/sys.159", + "data/AlMgCu/data/sys.1590", + "data/AlMgCu/data/sys.1591", + "data/AlMgCu/data/sys.1592", + "data/AlMgCu/data/sys.1594", + "data/AlMgCu/data/sys.1595", + "data/AlMgCu/data/sys.1596", + "data/AlMgCu/data/sys.1597", + "data/AlMgCu/data/sys.1598", + "data/AlMgCu/data/sys.1599", + "data/AlMgCu/data/sys.160", + "data/AlMgCu/data/sys.1600", + "data/AlMgCu/data/sys.1602", + "data/AlMgCu/data/sys.1604", + "data/AlMgCu/data/sys.1605", + "data/AlMgCu/data/sys.1606", + "data/AlMgCu/data/sys.1608", + "data/AlMgCu/data/sys.1609", + "data/AlMgCu/data/sys.161", + "data/AlMgCu/data/sys.1610", + "data/AlMgCu/data/sys.1611", + "data/AlMgCu/data/sys.1612", + "data/AlMgCu/data/sys.1613", + "data/AlMgCu/data/sys.1614", + "data/AlMgCu/data/sys.1615", + "data/AlMgCu/data/sys.1616", + "data/AlMgCu/data/sys.1617", + "data/AlMgCu/data/sys.1618", + "data/AlMgCu/data/sys.1619", + "data/AlMgCu/data/sys.162", + "data/AlMgCu/data/sys.1620", + "data/AlMgCu/data/sys.1621", + "data/AlMgCu/data/sys.1622", + "data/AlMgCu/data/sys.1623", + "data/AlMgCu/data/sys.1624", + "data/AlMgCu/data/sys.1625", + "data/AlMgCu/data/sys.1626", + "data/AlMgCu/data/sys.1627", + "data/AlMgCu/data/sys.1629", + "data/AlMgCu/data/sys.163", + "data/AlMgCu/data/sys.1630", + "data/AlMgCu/data/sys.1632", + "data/AlMgCu/data/sys.1633", + "data/AlMgCu/data/sys.1634", + "data/AlMgCu/data/sys.1635", + "data/AlMgCu/data/sys.1636", + "data/AlMgCu/data/sys.1637", + "data/AlMgCu/data/sys.1638", + "data/AlMgCu/data/sys.1639", + "data/AlMgCu/data/sys.164", + "data/AlMgCu/data/sys.1640", + "data/AlMgCu/data/sys.1641", + "data/AlMgCu/data/sys.1642", + "data/AlMgCu/data/sys.1643", + "data/AlMgCu/data/sys.1644", + "data/AlMgCu/data/sys.1645", + "data/AlMgCu/data/sys.1646", + "data/AlMgCu/data/sys.1648", + "data/AlMgCu/data/sys.1649", + "data/AlMgCu/data/sys.165", + "data/AlMgCu/data/sys.1652", + "data/AlMgCu/data/sys.1653", + "data/AlMgCu/data/sys.1654", + "data/AlMgCu/data/sys.1655", + "data/AlMgCu/data/sys.1656", + "data/AlMgCu/data/sys.1657", + "data/AlMgCu/data/sys.1658", + "data/AlMgCu/data/sys.1659", + "data/AlMgCu/data/sys.166", + "data/AlMgCu/data/sys.1660", + "data/AlMgCu/data/sys.1662", + "data/AlMgCu/data/sys.1663", + "data/AlMgCu/data/sys.1664", + "data/AlMgCu/data/sys.1665", + "data/AlMgCu/data/sys.1666", + "data/AlMgCu/data/sys.1667", + "data/AlMgCu/data/sys.1669", + "data/AlMgCu/data/sys.167", + "data/AlMgCu/data/sys.1670", + "data/AlMgCu/data/sys.1672", + "data/AlMgCu/data/sys.1673", + "data/AlMgCu/data/sys.1674", + "data/AlMgCu/data/sys.1675", + "data/AlMgCu/data/sys.1676", + "data/AlMgCu/data/sys.1677", + "data/AlMgCu/data/sys.1678", + "data/AlMgCu/data/sys.168", + "data/AlMgCu/data/sys.1680", + "data/AlMgCu/data/sys.1681", + "data/AlMgCu/data/sys.1682", + "data/AlMgCu/data/sys.1685", + "data/AlMgCu/data/sys.1686", + "data/AlMgCu/data/sys.1689", + "data/AlMgCu/data/sys.169", + "data/AlMgCu/data/sys.1691", + "data/AlMgCu/data/sys.1692", + "data/AlMgCu/data/sys.1693", + "data/AlMgCu/data/sys.1694", + "data/AlMgCu/data/sys.1695", + "data/AlMgCu/data/sys.1696", + "data/AlMgCu/data/sys.1697", + "data/AlMgCu/data/sys.1698", + "data/AlMgCu/data/sys.1699", + "data/AlMgCu/data/sys.170", + "data/AlMgCu/data/sys.1700", + "data/AlMgCu/data/sys.1701", + "data/AlMgCu/data/sys.1703", + "data/AlMgCu/data/sys.1705", + "data/AlMgCu/data/sys.1706", + "data/AlMgCu/data/sys.1707", + "data/AlMgCu/data/sys.1708", + "data/AlMgCu/data/sys.1709", + "data/AlMgCu/data/sys.171", + "data/AlMgCu/data/sys.1710", + "data/AlMgCu/data/sys.1712", + "data/AlMgCu/data/sys.1713", + "data/AlMgCu/data/sys.1714", + "data/AlMgCu/data/sys.1715", + "data/AlMgCu/data/sys.1716", + "data/AlMgCu/data/sys.1717", + "data/AlMgCu/data/sys.1718", + "data/AlMgCu/data/sys.1720", + "data/AlMgCu/data/sys.1721", + "data/AlMgCu/data/sys.1722", + "data/AlMgCu/data/sys.1723", + "data/AlMgCu/data/sys.1724", + "data/AlMgCu/data/sys.1725", + "data/AlMgCu/data/sys.1726", + "data/AlMgCu/data/sys.1727", + "data/AlMgCu/data/sys.1728", + "data/AlMgCu/data/sys.1729", + "data/AlMgCu/data/sys.173", + "data/AlMgCu/data/sys.1730", + "data/AlMgCu/data/sys.1731", + "data/AlMgCu/data/sys.1732", + "data/AlMgCu/data/sys.1733", + "data/AlMgCu/data/sys.1734", + "data/AlMgCu/data/sys.1735", + "data/AlMgCu/data/sys.1736", + "data/AlMgCu/data/sys.1737", + "data/AlMgCu/data/sys.1738", + "data/AlMgCu/data/sys.1739", + "data/AlMgCu/data/sys.174", + "data/AlMgCu/data/sys.1740", + "data/AlMgCu/data/sys.1741", + "data/AlMgCu/data/sys.1742", + "data/AlMgCu/data/sys.1743", + "data/AlMgCu/data/sys.1744", + "data/AlMgCu/data/sys.1745", + "data/AlMgCu/data/sys.1746", + "data/AlMgCu/data/sys.1747", + "data/AlMgCu/data/sys.1748", + "data/AlMgCu/data/sys.1749", + "data/AlMgCu/data/sys.175", + "data/AlMgCu/data/sys.1751", + "data/AlMgCu/data/sys.1752", + "data/AlMgCu/data/sys.1754", + "data/AlMgCu/data/sys.1755", + "data/AlMgCu/data/sys.1756", + "data/AlMgCu/data/sys.1757", + "data/AlMgCu/data/sys.1758", + "data/AlMgCu/data/sys.1759", + "data/AlMgCu/data/sys.1760", + "data/AlMgCu/data/sys.1761", + "data/AlMgCu/data/sys.1762", + "data/AlMgCu/data/sys.1763", + "data/AlMgCu/data/sys.1764", + "data/AlMgCu/data/sys.1765", + "data/AlMgCu/data/sys.1766", + "data/AlMgCu/data/sys.1767", + "data/AlMgCu/data/sys.1768", + "data/AlMgCu/data/sys.1769", + "data/AlMgCu/data/sys.177", + "data/AlMgCu/data/sys.1770", + "data/AlMgCu/data/sys.1771", + "data/AlMgCu/data/sys.1772", + "data/AlMgCu/data/sys.1773", + "data/AlMgCu/data/sys.1774", + "data/AlMgCu/data/sys.1775", + "data/AlMgCu/data/sys.1776", + "data/AlMgCu/data/sys.1777", + "data/AlMgCu/data/sys.1778", + "data/AlMgCu/data/sys.1779", + "data/AlMgCu/data/sys.178", + "data/AlMgCu/data/sys.1780", + "data/AlMgCu/data/sys.1781", + "data/AlMgCu/data/sys.1782", + "data/AlMgCu/data/sys.1783", + "data/AlMgCu/data/sys.1784", + "data/AlMgCu/data/sys.1785", + "data/AlMgCu/data/sys.1786", + "data/AlMgCu/data/sys.1787", + "data/AlMgCu/data/sys.1789", + "data/AlMgCu/data/sys.179", + "data/AlMgCu/data/sys.1790", + "data/AlMgCu/data/sys.1791", + "data/AlMgCu/data/sys.1792", + "data/AlMgCu/data/sys.1794", + "data/AlMgCu/data/sys.1795", + "data/AlMgCu/data/sys.1796", + "data/AlMgCu/data/sys.1797", + "data/AlMgCu/data/sys.1798", + "data/AlMgCu/data/sys.1799", + "data/AlMgCu/data/sys.180", + "data/AlMgCu/data/sys.1800", + "data/AlMgCu/data/sys.1801", + "data/AlMgCu/data/sys.1802", + "data/AlMgCu/data/sys.1805", + "data/AlMgCu/data/sys.1806", + "data/AlMgCu/data/sys.1807", + "data/AlMgCu/data/sys.1808", + "data/AlMgCu/data/sys.1809", + "data/AlMgCu/data/sys.181", + "data/AlMgCu/data/sys.1811", + "data/AlMgCu/data/sys.1812", + "data/AlMgCu/data/sys.1813", + "data/AlMgCu/data/sys.1814", + "data/AlMgCu/data/sys.1815", + "data/AlMgCu/data/sys.1816", + "data/AlMgCu/data/sys.1817", + "data/AlMgCu/data/sys.1818", + "data/AlMgCu/data/sys.1819", + "data/AlMgCu/data/sys.182", + "data/AlMgCu/data/sys.1820", + "data/AlMgCu/data/sys.1821", + "data/AlMgCu/data/sys.1822", + "data/AlMgCu/data/sys.1823", + "data/AlMgCu/data/sys.1824", + "data/AlMgCu/data/sys.1826", + "data/AlMgCu/data/sys.1827", + "data/AlMgCu/data/sys.1828", + "data/AlMgCu/data/sys.183", + "data/AlMgCu/data/sys.1831", + "data/AlMgCu/data/sys.1832", + "data/AlMgCu/data/sys.1833", + "data/AlMgCu/data/sys.1834", + "data/AlMgCu/data/sys.1835", + "data/AlMgCu/data/sys.1836", + "data/AlMgCu/data/sys.1837", + "data/AlMgCu/data/sys.1838", + "data/AlMgCu/data/sys.1839", + "data/AlMgCu/data/sys.184", + "data/AlMgCu/data/sys.1840", + "data/AlMgCu/data/sys.1842", + "data/AlMgCu/data/sys.1843", + "data/AlMgCu/data/sys.1845", + "data/AlMgCu/data/sys.1846", + "data/AlMgCu/data/sys.1847", + "data/AlMgCu/data/sys.1848", + "data/AlMgCu/data/sys.1849", + "data/AlMgCu/data/sys.185", + "data/AlMgCu/data/sys.1850", + "data/AlMgCu/data/sys.1852", + "data/AlMgCu/data/sys.1853", + "data/AlMgCu/data/sys.1854", + "data/AlMgCu/data/sys.1855", + "data/AlMgCu/data/sys.1856", + "data/AlMgCu/data/sys.1857", + "data/AlMgCu/data/sys.1858", + "data/AlMgCu/data/sys.1859", + "data/AlMgCu/data/sys.186", + "data/AlMgCu/data/sys.1860", + "data/AlMgCu/data/sys.1861", + "data/AlMgCu/data/sys.1862", + "data/AlMgCu/data/sys.1863", + "data/AlMgCu/data/sys.1864", + "data/AlMgCu/data/sys.1865", + "data/AlMgCu/data/sys.1866", + "data/AlMgCu/data/sys.1867", + "data/AlMgCu/data/sys.1868", + "data/AlMgCu/data/sys.1869", + "data/AlMgCu/data/sys.187", + "data/AlMgCu/data/sys.1870", + "data/AlMgCu/data/sys.1872", + "data/AlMgCu/data/sys.1874", + "data/AlMgCu/data/sys.1875", + "data/AlMgCu/data/sys.1876", + "data/AlMgCu/data/sys.1877", + "data/AlMgCu/data/sys.1878", + "data/AlMgCu/data/sys.1879", + "data/AlMgCu/data/sys.188", + "data/AlMgCu/data/sys.1880", + "data/AlMgCu/data/sys.1882", + "data/AlMgCu/data/sys.1883", + "data/AlMgCu/data/sys.1884", + "data/AlMgCu/data/sys.1885", + "data/AlMgCu/data/sys.1886", + "data/AlMgCu/data/sys.1887", + "data/AlMgCu/data/sys.1888", + "data/AlMgCu/data/sys.1889", + "data/AlMgCu/data/sys.189", + "data/AlMgCu/data/sys.1890", + "data/AlMgCu/data/sys.1891", + "data/AlMgCu/data/sys.1892", + "data/AlMgCu/data/sys.1893", + "data/AlMgCu/data/sys.1894", + "data/AlMgCu/data/sys.1895", + "data/AlMgCu/data/sys.1896", + "data/AlMgCu/data/sys.1897", + "data/AlMgCu/data/sys.1898", + "data/AlMgCu/data/sys.1899", + "data/AlMgCu/data/sys.190", + "data/AlMgCu/data/sys.1900", + "data/AlMgCu/data/sys.1902", + "data/AlMgCu/data/sys.1903", + "data/AlMgCu/data/sys.1904", + "data/AlMgCu/data/sys.1905", + "data/AlMgCu/data/sys.1906", + "data/AlMgCu/data/sys.1907", + "data/AlMgCu/data/sys.1908", + "data/AlMgCu/data/sys.1909", + "data/AlMgCu/data/sys.191", + "data/AlMgCu/data/sys.1910", + "data/AlMgCu/data/sys.1911", + "data/AlMgCu/data/sys.1912", + "data/AlMgCu/data/sys.1913", + "data/AlMgCu/data/sys.1914", + "data/AlMgCu/data/sys.1915", + "data/AlMgCu/data/sys.1916", + "data/AlMgCu/data/sys.1918", + "data/AlMgCu/data/sys.1919", + "data/AlMgCu/data/sys.192", + "data/AlMgCu/data/sys.1920", + "data/AlMgCu/data/sys.1922", + "data/AlMgCu/data/sys.1923", + "data/AlMgCu/data/sys.1924", + "data/AlMgCu/data/sys.1925", + "data/AlMgCu/data/sys.1926", + "data/AlMgCu/data/sys.1927", + "data/AlMgCu/data/sys.1928", + "data/AlMgCu/data/sys.1929", + "data/AlMgCu/data/sys.193", + "data/AlMgCu/data/sys.1930", + "data/AlMgCu/data/sys.1931", + "data/AlMgCu/data/sys.1933", + "data/AlMgCu/data/sys.1935", + "data/AlMgCu/data/sys.1936", + "data/AlMgCu/data/sys.1938", + "data/AlMgCu/data/sys.1939", + "data/AlMgCu/data/sys.1940", + "data/AlMgCu/data/sys.1941", + "data/AlMgCu/data/sys.1942", + "data/AlMgCu/data/sys.1943", + "data/AlMgCu/data/sys.1944", + "data/AlMgCu/data/sys.1946", + "data/AlMgCu/data/sys.1947", + "data/AlMgCu/data/sys.1948", + "data/AlMgCu/data/sys.1949", + "data/AlMgCu/data/sys.195", + "data/AlMgCu/data/sys.1951", + "data/AlMgCu/data/sys.1952", + "data/AlMgCu/data/sys.1953", + "data/AlMgCu/data/sys.1954", + "data/AlMgCu/data/sys.1955", + "data/AlMgCu/data/sys.1956", + "data/AlMgCu/data/sys.1957", + "data/AlMgCu/data/sys.1958", + "data/AlMgCu/data/sys.1959", + "data/AlMgCu/data/sys.196", + "data/AlMgCu/data/sys.1960", + "data/AlMgCu/data/sys.1961", + "data/AlMgCu/data/sys.1962", + "data/AlMgCu/data/sys.1963", + "data/AlMgCu/data/sys.1964", + "data/AlMgCu/data/sys.1965", + "data/AlMgCu/data/sys.1966", + "data/AlMgCu/data/sys.1967", + "data/AlMgCu/data/sys.1968", + "data/AlMgCu/data/sys.197", + "data/AlMgCu/data/sys.1970", + "data/AlMgCu/data/sys.1971", + "data/AlMgCu/data/sys.1972", + "data/AlMgCu/data/sys.1973", + "data/AlMgCu/data/sys.1974", + "data/AlMgCu/data/sys.1975", + "data/AlMgCu/data/sys.1977", + "data/AlMgCu/data/sys.1979", + "data/AlMgCu/data/sys.198", + "data/AlMgCu/data/sys.1980", + "data/AlMgCu/data/sys.1981", + "data/AlMgCu/data/sys.1982", + "data/AlMgCu/data/sys.1983", + "data/AlMgCu/data/sys.1984", + "data/AlMgCu/data/sys.1985", + "data/AlMgCu/data/sys.1986", + "data/AlMgCu/data/sys.1987", + "data/AlMgCu/data/sys.1988", + "data/AlMgCu/data/sys.1989", + "data/AlMgCu/data/sys.199", + "data/AlMgCu/data/sys.1990", + "data/AlMgCu/data/sys.1991", + "data/AlMgCu/data/sys.1992", + "data/AlMgCu/data/sys.1993", + "data/AlMgCu/data/sys.1994", + "data/AlMgCu/data/sys.1995", + "data/AlMgCu/data/sys.1996", + "data/AlMgCu/data/sys.1997", + "data/AlMgCu/data/sys.1998", + "data/AlMgCu/data/sys.1999", + "data/AlMgCu/data/sys.200", + "data/AlMgCu/data/sys.2000", + "data/AlMgCu/data/sys.2001", + "data/AlMgCu/data/sys.2002", + "data/AlMgCu/data/sys.2003", + "data/AlMgCu/data/sys.2004", + "data/AlMgCu/data/sys.2005", + "data/AlMgCu/data/sys.2007", + "data/AlMgCu/data/sys.2009", + "data/AlMgCu/data/sys.201", + "data/AlMgCu/data/sys.2011", + "data/AlMgCu/data/sys.2012", + "data/AlMgCu/data/sys.2013", + "data/AlMgCu/data/sys.2014", + "data/AlMgCu/data/sys.2015", + "data/AlMgCu/data/sys.2016", + "data/AlMgCu/data/sys.2017", + "data/AlMgCu/data/sys.2018", + "data/AlMgCu/data/sys.202", + "data/AlMgCu/data/sys.2020", + "data/AlMgCu/data/sys.2022", + "data/AlMgCu/data/sys.2023", + "data/AlMgCu/data/sys.2024", + "data/AlMgCu/data/sys.2025", + "data/AlMgCu/data/sys.2027", + "data/AlMgCu/data/sys.2028", + "data/AlMgCu/data/sys.2029", + "data/AlMgCu/data/sys.203", + "data/AlMgCu/data/sys.2030", + "data/AlMgCu/data/sys.2031", + "data/AlMgCu/data/sys.2032", + "data/AlMgCu/data/sys.2033", + "data/AlMgCu/data/sys.2034", + "data/AlMgCu/data/sys.2035", + "data/AlMgCu/data/sys.2036", + "data/AlMgCu/data/sys.2037", + "data/AlMgCu/data/sys.2038", + "data/AlMgCu/data/sys.2039", + "data/AlMgCu/data/sys.204", + "data/AlMgCu/data/sys.2040", + "data/AlMgCu/data/sys.2041", + "data/AlMgCu/data/sys.2042", + "data/AlMgCu/data/sys.2043", + "data/AlMgCu/data/sys.2044", + "data/AlMgCu/data/sys.2046", + "data/AlMgCu/data/sys.2047", + "data/AlMgCu/data/sys.2048", + "data/AlMgCu/data/sys.2050", + "data/AlMgCu/data/sys.2051", + "data/AlMgCu/data/sys.2052", + "data/AlMgCu/data/sys.2053", + "data/AlMgCu/data/sys.2054", + "data/AlMgCu/data/sys.2055", + "data/AlMgCu/data/sys.2056", + "data/AlMgCu/data/sys.2057", + "data/AlMgCu/data/sys.2058", + "data/AlMgCu/data/sys.2059", + "data/AlMgCu/data/sys.206", + "data/AlMgCu/data/sys.2060", + "data/AlMgCu/data/sys.2061", + "data/AlMgCu/data/sys.2062", + "data/AlMgCu/data/sys.2063", + "data/AlMgCu/data/sys.2064", + "data/AlMgCu/data/sys.2065", + "data/AlMgCu/data/sys.2066", + "data/AlMgCu/data/sys.2067", + "data/AlMgCu/data/sys.2068", + "data/AlMgCu/data/sys.2069", + "data/AlMgCu/data/sys.2070", + "data/AlMgCu/data/sys.2071", + "data/AlMgCu/data/sys.2072", + "data/AlMgCu/data/sys.2073", + "data/AlMgCu/data/sys.2074", + "data/AlMgCu/data/sys.2075", + "data/AlMgCu/data/sys.2078", + "data/AlMgCu/data/sys.2079", + "data/AlMgCu/data/sys.208", + "data/AlMgCu/data/sys.2080", + "data/AlMgCu/data/sys.2081", + "data/AlMgCu/data/sys.2082", + "data/AlMgCu/data/sys.2083", + "data/AlMgCu/data/sys.2084", + "data/AlMgCu/data/sys.2085", + "data/AlMgCu/data/sys.2086", + "data/AlMgCu/data/sys.2087", + "data/AlMgCu/data/sys.2088", + "data/AlMgCu/data/sys.2089", + "data/AlMgCu/data/sys.209", + "data/AlMgCu/data/sys.2090", + "data/AlMgCu/data/sys.2091", + "data/AlMgCu/data/sys.2092", + "data/AlMgCu/data/sys.2093", + "data/AlMgCu/data/sys.2094", + "data/AlMgCu/data/sys.2095", + "data/AlMgCu/data/sys.2096", + "data/AlMgCu/data/sys.2097", + "data/AlMgCu/data/sys.2098", + "data/AlMgCu/data/sys.2099", + "data/AlMgCu/data/sys.210", + "data/AlMgCu/data/sys.2100", + "data/AlMgCu/data/sys.2101", + "data/AlMgCu/data/sys.2102", + "data/AlMgCu/data/sys.2103", + "data/AlMgCu/data/sys.2104", + "data/AlMgCu/data/sys.2105", + "data/AlMgCu/data/sys.2106", + "data/AlMgCu/data/sys.2107", + "data/AlMgCu/data/sys.2108", + "data/AlMgCu/data/sys.2109", + "data/AlMgCu/data/sys.211", + "data/AlMgCu/data/sys.2110", + "data/AlMgCu/data/sys.2111", + "data/AlMgCu/data/sys.2112", + "data/AlMgCu/data/sys.2113", + "data/AlMgCu/data/sys.2114", + "data/AlMgCu/data/sys.2116", + "data/AlMgCu/data/sys.2117", + "data/AlMgCu/data/sys.2118", + "data/AlMgCu/data/sys.2119", + "data/AlMgCu/data/sys.212", + "data/AlMgCu/data/sys.2120", + "data/AlMgCu/data/sys.2121", + "data/AlMgCu/data/sys.2123", + "data/AlMgCu/data/sys.2124", + "data/AlMgCu/data/sys.2125", + "data/AlMgCu/data/sys.2126", + "data/AlMgCu/data/sys.2127", + "data/AlMgCu/data/sys.2129", + "data/AlMgCu/data/sys.213", + "data/AlMgCu/data/sys.2130", + "data/AlMgCu/data/sys.2132", + "data/AlMgCu/data/sys.2133", + "data/AlMgCu/data/sys.2134", + "data/AlMgCu/data/sys.2136", + "data/AlMgCu/data/sys.2137", + "data/AlMgCu/data/sys.2138", + "data/AlMgCu/data/sys.2139", + "data/AlMgCu/data/sys.214", + "data/AlMgCu/data/sys.2140", + "data/AlMgCu/data/sys.2141", + "data/AlMgCu/data/sys.2142", + "data/AlMgCu/data/sys.2143", + "data/AlMgCu/data/sys.2144", + "data/AlMgCu/data/sys.2145", + "data/AlMgCu/data/sys.2146", + "data/AlMgCu/data/sys.2147", + "data/AlMgCu/data/sys.2148", + "data/AlMgCu/data/sys.215", + "data/AlMgCu/data/sys.2150", + "data/AlMgCu/data/sys.2151", + "data/AlMgCu/data/sys.2152", + "data/AlMgCu/data/sys.2153", + "data/AlMgCu/data/sys.2154", + "data/AlMgCu/data/sys.2156", + "data/AlMgCu/data/sys.2157", + "data/AlMgCu/data/sys.2158", + "data/AlMgCu/data/sys.216", + "data/AlMgCu/data/sys.2160", + "data/AlMgCu/data/sys.2161", + "data/AlMgCu/data/sys.2162", + "data/AlMgCu/data/sys.2163", + "data/AlMgCu/data/sys.2164", + "data/AlMgCu/data/sys.2165", + "data/AlMgCu/data/sys.2166", + "data/AlMgCu/data/sys.2167", + "data/AlMgCu/data/sys.2168", + "data/AlMgCu/data/sys.2169", + "data/AlMgCu/data/sys.217", + "data/AlMgCu/data/sys.2170", + "data/AlMgCu/data/sys.2174", + "data/AlMgCu/data/sys.2176", + "data/AlMgCu/data/sys.2177", + "data/AlMgCu/data/sys.2178", + "data/AlMgCu/data/sys.2179", + "data/AlMgCu/data/sys.218", + "data/AlMgCu/data/sys.2180", + "data/AlMgCu/data/sys.2181", + "data/AlMgCu/data/sys.2182", + "data/AlMgCu/data/sys.2184", + "data/AlMgCu/data/sys.2185", + "data/AlMgCu/data/sys.2186", + "data/AlMgCu/data/sys.2187", + "data/AlMgCu/data/sys.2188", + "data/AlMgCu/data/sys.2189", + "data/AlMgCu/data/sys.2190", + "data/AlMgCu/data/sys.2191", + "data/AlMgCu/data/sys.2194", + "data/AlMgCu/data/sys.2195", + "data/AlMgCu/data/sys.2196", + "data/AlMgCu/data/sys.2197", + "data/AlMgCu/data/sys.2198", + "data/AlMgCu/data/sys.2199", + "data/AlMgCu/data/sys.220", + "data/AlMgCu/data/sys.2201", + "data/AlMgCu/data/sys.2202", + "data/AlMgCu/data/sys.2203", + "data/AlMgCu/data/sys.2204", + "data/AlMgCu/data/sys.2205", + "data/AlMgCu/data/sys.2207", + "data/AlMgCu/data/sys.2208", + "data/AlMgCu/data/sys.2209", + "data/AlMgCu/data/sys.221", + "data/AlMgCu/data/sys.2210", + "data/AlMgCu/data/sys.2211", + "data/AlMgCu/data/sys.2212", + "data/AlMgCu/data/sys.2213", + "data/AlMgCu/data/sys.2214", + "data/AlMgCu/data/sys.2215", + "data/AlMgCu/data/sys.2216", + "data/AlMgCu/data/sys.2217", + "data/AlMgCu/data/sys.2218", + "data/AlMgCu/data/sys.2219", + "data/AlMgCu/data/sys.222", + "data/AlMgCu/data/sys.2220", + "data/AlMgCu/data/sys.2221", + "data/AlMgCu/data/sys.2222", + "data/AlMgCu/data/sys.2223", + "data/AlMgCu/data/sys.2224", + "data/AlMgCu/data/sys.2225", + "data/AlMgCu/data/sys.2226", + "data/AlMgCu/data/sys.2227", + "data/AlMgCu/data/sys.2228", + "data/AlMgCu/data/sys.2229", + "data/AlMgCu/data/sys.223", + "data/AlMgCu/data/sys.2230", + "data/AlMgCu/data/sys.2231", + "data/AlMgCu/data/sys.2233", + "data/AlMgCu/data/sys.2234", + "data/AlMgCu/data/sys.2235", + "data/AlMgCu/data/sys.2236", + "data/AlMgCu/data/sys.2237", + "data/AlMgCu/data/sys.2238", + "data/AlMgCu/data/sys.2239", + "data/AlMgCu/data/sys.224", + "data/AlMgCu/data/sys.2240", + "data/AlMgCu/data/sys.2241", + "data/AlMgCu/data/sys.2242", + "data/AlMgCu/data/sys.2243", + "data/AlMgCu/data/sys.2244", + "data/AlMgCu/data/sys.2245", + "data/AlMgCu/data/sys.2246", + "data/AlMgCu/data/sys.2247", + "data/AlMgCu/data/sys.2248", + "data/AlMgCu/data/sys.2249", + "data/AlMgCu/data/sys.225", + "data/AlMgCu/data/sys.2250", + "data/AlMgCu/data/sys.2252", + "data/AlMgCu/data/sys.2253", + "data/AlMgCu/data/sys.2254", + "data/AlMgCu/data/sys.2255", + "data/AlMgCu/data/sys.2256", + "data/AlMgCu/data/sys.2257", + "data/AlMgCu/data/sys.2258", + "data/AlMgCu/data/sys.2259", + "data/AlMgCu/data/sys.226", + "data/AlMgCu/data/sys.2260", + "data/AlMgCu/data/sys.2261", + "data/AlMgCu/data/sys.2263", + "data/AlMgCu/data/sys.2264", + "data/AlMgCu/data/sys.2266", + "data/AlMgCu/data/sys.2267", + "data/AlMgCu/data/sys.227", + "data/AlMgCu/data/sys.2270", + "data/AlMgCu/data/sys.2271", + "data/AlMgCu/data/sys.2272", + "data/AlMgCu/data/sys.2275", + "data/AlMgCu/data/sys.2276", + "data/AlMgCu/data/sys.2278", + "data/AlMgCu/data/sys.2279", + "data/AlMgCu/data/sys.228", + "data/AlMgCu/data/sys.2280", + "data/AlMgCu/data/sys.2282", + "data/AlMgCu/data/sys.2284", + "data/AlMgCu/data/sys.2286", + "data/AlMgCu/data/sys.2288", + "data/AlMgCu/data/sys.2289", + "data/AlMgCu/data/sys.229", + "data/AlMgCu/data/sys.2290", + "data/AlMgCu/data/sys.2291", + "data/AlMgCu/data/sys.2292", + "data/AlMgCu/data/sys.2294", + "data/AlMgCu/data/sys.2295", + "data/AlMgCu/data/sys.2296", + "data/AlMgCu/data/sys.2297", + "data/AlMgCu/data/sys.2298", + "data/AlMgCu/data/sys.230", + "data/AlMgCu/data/sys.2300", + "data/AlMgCu/data/sys.2301", + "data/AlMgCu/data/sys.2302", + "data/AlMgCu/data/sys.2303", + "data/AlMgCu/data/sys.2304", + "data/AlMgCu/data/sys.2305", + "data/AlMgCu/data/sys.2306", + "data/AlMgCu/data/sys.2307", + "data/AlMgCu/data/sys.2308", + "data/AlMgCu/data/sys.2309", + "data/AlMgCu/data/sys.2310", + "data/AlMgCu/data/sys.2311", + "data/AlMgCu/data/sys.2312", + "data/AlMgCu/data/sys.2314", + "data/AlMgCu/data/sys.2316", + "data/AlMgCu/data/sys.2318", + "data/AlMgCu/data/sys.232", + "data/AlMgCu/data/sys.2320", + "data/AlMgCu/data/sys.2322", + "data/AlMgCu/data/sys.2323", + "data/AlMgCu/data/sys.2324", + "data/AlMgCu/data/sys.2327", + "data/AlMgCu/data/sys.2328", + "data/AlMgCu/data/sys.2329", + "data/AlMgCu/data/sys.233", + "data/AlMgCu/data/sys.2330", + "data/AlMgCu/data/sys.2331", + "data/AlMgCu/data/sys.2332", + "data/AlMgCu/data/sys.2333", + "data/AlMgCu/data/sys.2334", + "data/AlMgCu/data/sys.2335", + "data/AlMgCu/data/sys.2336", + "data/AlMgCu/data/sys.2338", + "data/AlMgCu/data/sys.2339", + "data/AlMgCu/data/sys.234", + "data/AlMgCu/data/sys.2340", + "data/AlMgCu/data/sys.2341", + "data/AlMgCu/data/sys.2342", + "data/AlMgCu/data/sys.2343", + "data/AlMgCu/data/sys.2344", + "data/AlMgCu/data/sys.2345", + "data/AlMgCu/data/sys.2346", + "data/AlMgCu/data/sys.2348", + "data/AlMgCu/data/sys.235", + "data/AlMgCu/data/sys.2350", + "data/AlMgCu/data/sys.2351", + "data/AlMgCu/data/sys.2352", + "data/AlMgCu/data/sys.2353", + "data/AlMgCu/data/sys.2354", + "data/AlMgCu/data/sys.2356", + "data/AlMgCu/data/sys.2357", + "data/AlMgCu/data/sys.2358", + "data/AlMgCu/data/sys.2359", + "data/AlMgCu/data/sys.236", + "data/AlMgCu/data/sys.2360", + "data/AlMgCu/data/sys.2362", + "data/AlMgCu/data/sys.2363", + "data/AlMgCu/data/sys.2364", + "data/AlMgCu/data/sys.2367", + "data/AlMgCu/data/sys.2369", + "data/AlMgCu/data/sys.237", + "data/AlMgCu/data/sys.2371", + "data/AlMgCu/data/sys.2372", + "data/AlMgCu/data/sys.2374", + "data/AlMgCu/data/sys.2375", + "data/AlMgCu/data/sys.2376", + "data/AlMgCu/data/sys.2377", + "data/AlMgCu/data/sys.2378", + "data/AlMgCu/data/sys.2379", + "data/AlMgCu/data/sys.238", + "data/AlMgCu/data/sys.2380", + "data/AlMgCu/data/sys.2382", + "data/AlMgCu/data/sys.2383", + "data/AlMgCu/data/sys.2384", + "data/AlMgCu/data/sys.2386", + "data/AlMgCu/data/sys.2387", + "data/AlMgCu/data/sys.2388", + "data/AlMgCu/data/sys.2390", + "data/AlMgCu/data/sys.2392", + "data/AlMgCu/data/sys.2393", + "data/AlMgCu/data/sys.2394", + "data/AlMgCu/data/sys.2395", + "data/AlMgCu/data/sys.2396", + "data/AlMgCu/data/sys.2397", + "data/AlMgCu/data/sys.2398", + "data/AlMgCu/data/sys.2399", + "data/AlMgCu/data/sys.240", + "data/AlMgCu/data/sys.2400", + "data/AlMgCu/data/sys.2401", + "data/AlMgCu/data/sys.2402", + "data/AlMgCu/data/sys.2403", + "data/AlMgCu/data/sys.2405", + "data/AlMgCu/data/sys.2406", + "data/AlMgCu/data/sys.2407", + "data/AlMgCu/data/sys.2408", + "data/AlMgCu/data/sys.241", + "data/AlMgCu/data/sys.2410", + "data/AlMgCu/data/sys.2411", + "data/AlMgCu/data/sys.2412", + "data/AlMgCu/data/sys.2414", + "data/AlMgCu/data/sys.2415", + "data/AlMgCu/data/sys.2419", + "data/AlMgCu/data/sys.242", + "data/AlMgCu/data/sys.2420", + "data/AlMgCu/data/sys.2422", + "data/AlMgCu/data/sys.2423", + "data/AlMgCu/data/sys.2424", + "data/AlMgCu/data/sys.2426", + "data/AlMgCu/data/sys.2427", + "data/AlMgCu/data/sys.2428", + "data/AlMgCu/data/sys.243", + "data/AlMgCu/data/sys.2430", + "data/AlMgCu/data/sys.2431", + "data/AlMgCu/data/sys.2432", + "data/AlMgCu/data/sys.2433", + "data/AlMgCu/data/sys.2434", + "data/AlMgCu/data/sys.2435", + "data/AlMgCu/data/sys.2436", + "data/AlMgCu/data/sys.2437", + "data/AlMgCu/data/sys.2438", + "data/AlMgCu/data/sys.2439", + "data/AlMgCu/data/sys.244", + "data/AlMgCu/data/sys.2440", + "data/AlMgCu/data/sys.2441", + "data/AlMgCu/data/sys.2444", + "data/AlMgCu/data/sys.2447", + "data/AlMgCu/data/sys.2448", + "data/AlMgCu/data/sys.245", + "data/AlMgCu/data/sys.2450", + "data/AlMgCu/data/sys.2451", + "data/AlMgCu/data/sys.2452", + "data/AlMgCu/data/sys.2454", + "data/AlMgCu/data/sys.2455", + "data/AlMgCu/data/sys.2456", + "data/AlMgCu/data/sys.2458", + "data/AlMgCu/data/sys.2459", + "data/AlMgCu/data/sys.246", + "data/AlMgCu/data/sys.2460", + "data/AlMgCu/data/sys.2461", + "data/AlMgCu/data/sys.2462", + "data/AlMgCu/data/sys.2463", + "data/AlMgCu/data/sys.2464", + "data/AlMgCu/data/sys.2466", + "data/AlMgCu/data/sys.2467", + "data/AlMgCu/data/sys.2468", + "data/AlMgCu/data/sys.247", + "data/AlMgCu/data/sys.2470", + "data/AlMgCu/data/sys.2471", + "data/AlMgCu/data/sys.2474", + "data/AlMgCu/data/sys.2476", + "data/AlMgCu/data/sys.2477", + "data/AlMgCu/data/sys.2478", + "data/AlMgCu/data/sys.2479", + "data/AlMgCu/data/sys.248", + "data/AlMgCu/data/sys.2480", + "data/AlMgCu/data/sys.2482", + "data/AlMgCu/data/sys.2483", + "data/AlMgCu/data/sys.2484", + "data/AlMgCu/data/sys.2485", + "data/AlMgCu/data/sys.2486", + "data/AlMgCu/data/sys.2488", + "data/AlMgCu/data/sys.249", + "data/AlMgCu/data/sys.2490", + "data/AlMgCu/data/sys.2492", + "data/AlMgCu/data/sys.2494", + "data/AlMgCu/data/sys.2495", + "data/AlMgCu/data/sys.2496", + "data/AlMgCu/data/sys.2497", + "data/AlMgCu/data/sys.2498", + "data/AlMgCu/data/sys.2499", + "data/AlMgCu/data/sys.250", + "data/AlMgCu/data/sys.2501", + "data/AlMgCu/data/sys.2503", + "data/AlMgCu/data/sys.2504", + "data/AlMgCu/data/sys.2508", + "data/AlMgCu/data/sys.2509", + "data/AlMgCu/data/sys.251", + "data/AlMgCu/data/sys.2511", + "data/AlMgCu/data/sys.2512", + "data/AlMgCu/data/sys.2514", + "data/AlMgCu/data/sys.2515", + "data/AlMgCu/data/sys.2516", + "data/AlMgCu/data/sys.2517", + "data/AlMgCu/data/sys.2518", + "data/AlMgCu/data/sys.2519", + "data/AlMgCu/data/sys.252", + "data/AlMgCu/data/sys.2520", + "data/AlMgCu/data/sys.2522", + "data/AlMgCu/data/sys.2523", + "data/AlMgCu/data/sys.2524", + "data/AlMgCu/data/sys.2526", + "data/AlMgCu/data/sys.2527", + "data/AlMgCu/data/sys.2528", + "data/AlMgCu/data/sys.2529", + "data/AlMgCu/data/sys.253", + "data/AlMgCu/data/sys.2530", + "data/AlMgCu/data/sys.2531", + "data/AlMgCu/data/sys.2532", + "data/AlMgCu/data/sys.2534", + "data/AlMgCu/data/sys.2535", + "data/AlMgCu/data/sys.2536", + "data/AlMgCu/data/sys.2537", + "data/AlMgCu/data/sys.2538", + "data/AlMgCu/data/sys.2539", + "data/AlMgCu/data/sys.254", + "data/AlMgCu/data/sys.2540", + "data/AlMgCu/data/sys.2542", + "data/AlMgCu/data/sys.2543", + "data/AlMgCu/data/sys.2544", + "data/AlMgCu/data/sys.2545", + "data/AlMgCu/data/sys.2546", + "data/AlMgCu/data/sys.2548", + "data/AlMgCu/data/sys.255", + "data/AlMgCu/data/sys.2550", + "data/AlMgCu/data/sys.2551", + "data/AlMgCu/data/sys.2554", + "data/AlMgCu/data/sys.2556", + "data/AlMgCu/data/sys.2558", + "data/AlMgCu/data/sys.256", + "data/AlMgCu/data/sys.2560", + "data/AlMgCu/data/sys.2561", + "data/AlMgCu/data/sys.2562", + "data/AlMgCu/data/sys.2563", + "data/AlMgCu/data/sys.2564", + "data/AlMgCu/data/sys.2566", + "data/AlMgCu/data/sys.2567", + "data/AlMgCu/data/sys.2568", + "data/AlMgCu/data/sys.2569", + "data/AlMgCu/data/sys.257", + "data/AlMgCu/data/sys.2570", + "data/AlMgCu/data/sys.2571", + "data/AlMgCu/data/sys.2574", + "data/AlMgCu/data/sys.2575", + "data/AlMgCu/data/sys.2577", + "data/AlMgCu/data/sys.2578", + "data/AlMgCu/data/sys.2579", + "data/AlMgCu/data/sys.258", + "data/AlMgCu/data/sys.2580", + "data/AlMgCu/data/sys.2582", + "data/AlMgCu/data/sys.2583", + "data/AlMgCu/data/sys.2586", + "data/AlMgCu/data/sys.2587", + "data/AlMgCu/data/sys.2590", + "data/AlMgCu/data/sys.2591", + "data/AlMgCu/data/sys.2592", + "data/AlMgCu/data/sys.2593", + "data/AlMgCu/data/sys.2594", + "data/AlMgCu/data/sys.2595", + "data/AlMgCu/data/sys.2596", + "data/AlMgCu/data/sys.2598", + "data/AlMgCu/data/sys.2599", + "data/AlMgCu/data/sys.260", + "data/AlMgCu/data/sys.2600", + "data/AlMgCu/data/sys.2601", + "data/AlMgCu/data/sys.2602", + "data/AlMgCu/data/sys.2603", + "data/AlMgCu/data/sys.2604", + "data/AlMgCu/data/sys.2605", + "data/AlMgCu/data/sys.2606", + "data/AlMgCu/data/sys.2607", + "data/AlMgCu/data/sys.2608", + "data/AlMgCu/data/sys.2609", + "data/AlMgCu/data/sys.2610", + "data/AlMgCu/data/sys.2611", + "data/AlMgCu/data/sys.2613", + "data/AlMgCu/data/sys.2614", + "data/AlMgCu/data/sys.2615", + "data/AlMgCu/data/sys.2616", + "data/AlMgCu/data/sys.2618", + "data/AlMgCu/data/sys.2619", + "data/AlMgCu/data/sys.262", + "data/AlMgCu/data/sys.2620", + "data/AlMgCu/data/sys.2621", + "data/AlMgCu/data/sys.2622", + "data/AlMgCu/data/sys.2623", + "data/AlMgCu/data/sys.2624", + "data/AlMgCu/data/sys.2625", + "data/AlMgCu/data/sys.2626", + "data/AlMgCu/data/sys.2627", + "data/AlMgCu/data/sys.2628", + "data/AlMgCu/data/sys.2629", + "data/AlMgCu/data/sys.263", + "data/AlMgCu/data/sys.2630", + "data/AlMgCu/data/sys.2631", + "data/AlMgCu/data/sys.2632", + "data/AlMgCu/data/sys.2633", + "data/AlMgCu/data/sys.2634", + "data/AlMgCu/data/sys.2635", + "data/AlMgCu/data/sys.2636", + "data/AlMgCu/data/sys.2637", + "data/AlMgCu/data/sys.2638", + "data/AlMgCu/data/sys.2639", + "data/AlMgCu/data/sys.264", + "data/AlMgCu/data/sys.2640", + "data/AlMgCu/data/sys.2641", + "data/AlMgCu/data/sys.2642", + "data/AlMgCu/data/sys.2643", + "data/AlMgCu/data/sys.2645", + "data/AlMgCu/data/sys.2646", + "data/AlMgCu/data/sys.2647", + "data/AlMgCu/data/sys.2648", + "data/AlMgCu/data/sys.2649", + "data/AlMgCu/data/sys.265", + "data/AlMgCu/data/sys.2650", + "data/AlMgCu/data/sys.2651", + "data/AlMgCu/data/sys.2652", + "data/AlMgCu/data/sys.2653", + "data/AlMgCu/data/sys.2654", + "data/AlMgCu/data/sys.2655", + "data/AlMgCu/data/sys.2656", + "data/AlMgCu/data/sys.2657", + "data/AlMgCu/data/sys.2658", + "data/AlMgCu/data/sys.2659", + "data/AlMgCu/data/sys.266", + "data/AlMgCu/data/sys.2660", + "data/AlMgCu/data/sys.2661", + "data/AlMgCu/data/sys.2662", + "data/AlMgCu/data/sys.2663", + "data/AlMgCu/data/sys.2664", + "data/AlMgCu/data/sys.2665", + "data/AlMgCu/data/sys.2666", + "data/AlMgCu/data/sys.2667", + "data/AlMgCu/data/sys.2668", + "data/AlMgCu/data/sys.2669", + "data/AlMgCu/data/sys.267", + "data/AlMgCu/data/sys.2670", + "data/AlMgCu/data/sys.2671", + "data/AlMgCu/data/sys.2672", + "data/AlMgCu/data/sys.2673", + "data/AlMgCu/data/sys.2675", + "data/AlMgCu/data/sys.2676", + "data/AlMgCu/data/sys.2677", + "data/AlMgCu/data/sys.2679", + "data/AlMgCu/data/sys.268", + "data/AlMgCu/data/sys.2680", + "data/AlMgCu/data/sys.2681", + "data/AlMgCu/data/sys.2682", + "data/AlMgCu/data/sys.2683", + "data/AlMgCu/data/sys.2684", + "data/AlMgCu/data/sys.2685", + "data/AlMgCu/data/sys.269", + "data/AlMgCu/data/sys.2690", + "data/AlMgCu/data/sys.2691", + "data/AlMgCu/data/sys.2692", + "data/AlMgCu/data/sys.2693", + "data/AlMgCu/data/sys.2694", + "data/AlMgCu/data/sys.2695", + "data/AlMgCu/data/sys.2696", + "data/AlMgCu/data/sys.2697", + "data/AlMgCu/data/sys.2698", + "data/AlMgCu/data/sys.2699", + "data/AlMgCu/data/sys.270", + "data/AlMgCu/data/sys.2700", + "data/AlMgCu/data/sys.2701", + "data/AlMgCu/data/sys.2702", + "data/AlMgCu/data/sys.2703", + "data/AlMgCu/data/sys.2704", + "data/AlMgCu/data/sys.2706", + "data/AlMgCu/data/sys.2707", + "data/AlMgCu/data/sys.2708", + "data/AlMgCu/data/sys.2709", + "data/AlMgCu/data/sys.271", + "data/AlMgCu/data/sys.2710", + "data/AlMgCu/data/sys.2711", + "data/AlMgCu/data/sys.2712", + "data/AlMgCu/data/sys.2713", + "data/AlMgCu/data/sys.2715", + "data/AlMgCu/data/sys.2716", + "data/AlMgCu/data/sys.2717", + "data/AlMgCu/data/sys.2718", + "data/AlMgCu/data/sys.2719", + "data/AlMgCu/data/sys.272", + "data/AlMgCu/data/sys.2720", + "data/AlMgCu/data/sys.2721", + "data/AlMgCu/data/sys.2722", + "data/AlMgCu/data/sys.2723", + "data/AlMgCu/data/sys.2724", + "data/AlMgCu/data/sys.2725", + "data/AlMgCu/data/sys.2726", + "data/AlMgCu/data/sys.2727", + "data/AlMgCu/data/sys.2728", + "data/AlMgCu/data/sys.2729", + "data/AlMgCu/data/sys.273", + "data/AlMgCu/data/sys.2730", + "data/AlMgCu/data/sys.2731", + "data/AlMgCu/data/sys.2732", + "data/AlMgCu/data/sys.2733", + "data/AlMgCu/data/sys.2734", + "data/AlMgCu/data/sys.2735", + "data/AlMgCu/data/sys.2736", + "data/AlMgCu/data/sys.2737", + "data/AlMgCu/data/sys.2738", + "data/AlMgCu/data/sys.2739", + "data/AlMgCu/data/sys.274", + "data/AlMgCu/data/sys.2740", + "data/AlMgCu/data/sys.2741", + "data/AlMgCu/data/sys.2742", + "data/AlMgCu/data/sys.2743", + "data/AlMgCu/data/sys.2744", + "data/AlMgCu/data/sys.2745", + "data/AlMgCu/data/sys.2746", + "data/AlMgCu/data/sys.2747", + "data/AlMgCu/data/sys.2748", + "data/AlMgCu/data/sys.2749", + "data/AlMgCu/data/sys.275", + "data/AlMgCu/data/sys.2750", + "data/AlMgCu/data/sys.2751", + "data/AlMgCu/data/sys.2752", + "data/AlMgCu/data/sys.2753", + "data/AlMgCu/data/sys.2754", + "data/AlMgCu/data/sys.2755", + "data/AlMgCu/data/sys.2756", + "data/AlMgCu/data/sys.2757", + "data/AlMgCu/data/sys.2758", + "data/AlMgCu/data/sys.2759", + "data/AlMgCu/data/sys.276", + "data/AlMgCu/data/sys.2760", + "data/AlMgCu/data/sys.2761", + "data/AlMgCu/data/sys.2762", + "data/AlMgCu/data/sys.2764", + "data/AlMgCu/data/sys.2765", + "data/AlMgCu/data/sys.2766", + "data/AlMgCu/data/sys.2767", + "data/AlMgCu/data/sys.2768", + "data/AlMgCu/data/sys.2769", + "data/AlMgCu/data/sys.277", + "data/AlMgCu/data/sys.2770", + "data/AlMgCu/data/sys.2771", + "data/AlMgCu/data/sys.2773", + "data/AlMgCu/data/sys.2774", + "data/AlMgCu/data/sys.2776", + "data/AlMgCu/data/sys.2777", + "data/AlMgCu/data/sys.2778", + "data/AlMgCu/data/sys.2779", + "data/AlMgCu/data/sys.278", + "data/AlMgCu/data/sys.2780", + "data/AlMgCu/data/sys.2781", + "data/AlMgCu/data/sys.2782", + "data/AlMgCu/data/sys.2783", + "data/AlMgCu/data/sys.2784", + "data/AlMgCu/data/sys.2785", + "data/AlMgCu/data/sys.2787", + "data/AlMgCu/data/sys.2788", + "data/AlMgCu/data/sys.2789", + "data/AlMgCu/data/sys.279", + "data/AlMgCu/data/sys.2790", + "data/AlMgCu/data/sys.2791", + "data/AlMgCu/data/sys.2792", + "data/AlMgCu/data/sys.2793", + "data/AlMgCu/data/sys.2794", + "data/AlMgCu/data/sys.2795", + "data/AlMgCu/data/sys.2796", + "data/AlMgCu/data/sys.2797", + "data/AlMgCu/data/sys.2798", + "data/AlMgCu/data/sys.2799", + "data/AlMgCu/data/sys.280", + "data/AlMgCu/data/sys.2800", + "data/AlMgCu/data/sys.2801", + "data/AlMgCu/data/sys.2802", + "data/AlMgCu/data/sys.2803", + "data/AlMgCu/data/sys.2804", + "data/AlMgCu/data/sys.2805", + "data/AlMgCu/data/sys.2806", + "data/AlMgCu/data/sys.2807", + "data/AlMgCu/data/sys.2809", + "data/AlMgCu/data/sys.281", + "data/AlMgCu/data/sys.2810", + "data/AlMgCu/data/sys.2811", + "data/AlMgCu/data/sys.2812", + "data/AlMgCu/data/sys.2813", + "data/AlMgCu/data/sys.2814", + "data/AlMgCu/data/sys.2815", + "data/AlMgCu/data/sys.2816", + "data/AlMgCu/data/sys.2817", + "data/AlMgCu/data/sys.2818", + "data/AlMgCu/data/sys.2819", + "data/AlMgCu/data/sys.282", + "data/AlMgCu/data/sys.2820", + "data/AlMgCu/data/sys.2822", + "data/AlMgCu/data/sys.2824", + "data/AlMgCu/data/sys.2825", + "data/AlMgCu/data/sys.2826", + "data/AlMgCu/data/sys.2827", + "data/AlMgCu/data/sys.2828", + "data/AlMgCu/data/sys.2829", + "data/AlMgCu/data/sys.283", + "data/AlMgCu/data/sys.2830", + "data/AlMgCu/data/sys.2832", + "data/AlMgCu/data/sys.2833", + "data/AlMgCu/data/sys.2834", + "data/AlMgCu/data/sys.2835", + "data/AlMgCu/data/sys.2836", + "data/AlMgCu/data/sys.2837", + "data/AlMgCu/data/sys.2838", + "data/AlMgCu/data/sys.2839", + "data/AlMgCu/data/sys.284", + "data/AlMgCu/data/sys.2840", + "data/AlMgCu/data/sys.2841", + "data/AlMgCu/data/sys.2842", + "data/AlMgCu/data/sys.2843", + "data/AlMgCu/data/sys.2844", + "data/AlMgCu/data/sys.2845", + "data/AlMgCu/data/sys.2846", + "data/AlMgCu/data/sys.2847", + "data/AlMgCu/data/sys.2848", + "data/AlMgCu/data/sys.2849", + "data/AlMgCu/data/sys.285", + "data/AlMgCu/data/sys.2850", + "data/AlMgCu/data/sys.2851", + "data/AlMgCu/data/sys.2852", + "data/AlMgCu/data/sys.2853", + "data/AlMgCu/data/sys.2854", + "data/AlMgCu/data/sys.2855", + "data/AlMgCu/data/sys.2856", + "data/AlMgCu/data/sys.2858", + "data/AlMgCu/data/sys.2859", + "data/AlMgCu/data/sys.286", + "data/AlMgCu/data/sys.2860", + "data/AlMgCu/data/sys.2861", + "data/AlMgCu/data/sys.2862", + "data/AlMgCu/data/sys.2863", + "data/AlMgCu/data/sys.2864", + "data/AlMgCu/data/sys.2865", + "data/AlMgCu/data/sys.2866", + "data/AlMgCu/data/sys.2868", + "data/AlMgCu/data/sys.2869", + "data/AlMgCu/data/sys.287", + "data/AlMgCu/data/sys.2870", + "data/AlMgCu/data/sys.2871", + "data/AlMgCu/data/sys.2872", + "data/AlMgCu/data/sys.2873", + "data/AlMgCu/data/sys.2874", + "data/AlMgCu/data/sys.2875", + "data/AlMgCu/data/sys.2876", + "data/AlMgCu/data/sys.2877", + "data/AlMgCu/data/sys.2878", + "data/AlMgCu/data/sys.2879", + "data/AlMgCu/data/sys.288", + "data/AlMgCu/data/sys.2880", + "data/AlMgCu/data/sys.2881", + "data/AlMgCu/data/sys.2883", + "data/AlMgCu/data/sys.2884", + "data/AlMgCu/data/sys.2885", + "data/AlMgCu/data/sys.2886", + "data/AlMgCu/data/sys.2887", + "data/AlMgCu/data/sys.2888", + "data/AlMgCu/data/sys.2889", + "data/AlMgCu/data/sys.289", + "data/AlMgCu/data/sys.2890", + "data/AlMgCu/data/sys.2891", + "data/AlMgCu/data/sys.2893", + "data/AlMgCu/data/sys.2894", + "data/AlMgCu/data/sys.2895", + "data/AlMgCu/data/sys.2896", + "data/AlMgCu/data/sys.2898", + "data/AlMgCu/data/sys.2899", + "data/AlMgCu/data/sys.2900", + "data/AlMgCu/data/sys.2901", + "data/AlMgCu/data/sys.2902", + "data/AlMgCu/data/sys.2903", + "data/AlMgCu/data/sys.2904", + "data/AlMgCu/data/sys.2905", + "data/AlMgCu/data/sys.2906", + "data/AlMgCu/data/sys.2907", + "data/AlMgCu/data/sys.2908", + "data/AlMgCu/data/sys.2909", + "data/AlMgCu/data/sys.291", + "data/AlMgCu/data/sys.2911", + "data/AlMgCu/data/sys.2912", + "data/AlMgCu/data/sys.2913", + "data/AlMgCu/data/sys.2914", + "data/AlMgCu/data/sys.2915", + "data/AlMgCu/data/sys.2916", + "data/AlMgCu/data/sys.2917", + "data/AlMgCu/data/sys.2918", + "data/AlMgCu/data/sys.2919", + "data/AlMgCu/data/sys.292", + "data/AlMgCu/data/sys.2920", + "data/AlMgCu/data/sys.2922", + "data/AlMgCu/data/sys.2923", + "data/AlMgCu/data/sys.2924", + "data/AlMgCu/data/sys.2925", + "data/AlMgCu/data/sys.2926", + "data/AlMgCu/data/sys.2927", + "data/AlMgCu/data/sys.2928", + "data/AlMgCu/data/sys.2929", + "data/AlMgCu/data/sys.293", + "data/AlMgCu/data/sys.2930", + "data/AlMgCu/data/sys.2931", + "data/AlMgCu/data/sys.2932", + "data/AlMgCu/data/sys.2933", + "data/AlMgCu/data/sys.2934", + "data/AlMgCu/data/sys.2935", + "data/AlMgCu/data/sys.2936", + "data/AlMgCu/data/sys.2937", + "data/AlMgCu/data/sys.2939", + "data/AlMgCu/data/sys.294", + "data/AlMgCu/data/sys.2940", + "data/AlMgCu/data/sys.2942", + "data/AlMgCu/data/sys.2943", + "data/AlMgCu/data/sys.2946", + "data/AlMgCu/data/sys.2947", + "data/AlMgCu/data/sys.2948", + "data/AlMgCu/data/sys.295", + "data/AlMgCu/data/sys.2950", + "data/AlMgCu/data/sys.2951", + "data/AlMgCu/data/sys.2952", + "data/AlMgCu/data/sys.2954", + "data/AlMgCu/data/sys.2956", + "data/AlMgCu/data/sys.2957", + "data/AlMgCu/data/sys.2958", + "data/AlMgCu/data/sys.296", + "data/AlMgCu/data/sys.2960", + "data/AlMgCu/data/sys.2961", + "data/AlMgCu/data/sys.2962", + "data/AlMgCu/data/sys.2963", + "data/AlMgCu/data/sys.2964", + "data/AlMgCu/data/sys.2965", + "data/AlMgCu/data/sys.2967", + "data/AlMgCu/data/sys.2968", + "data/AlMgCu/data/sys.2969", + "data/AlMgCu/data/sys.297", + "data/AlMgCu/data/sys.2970", + "data/AlMgCu/data/sys.2972", + "data/AlMgCu/data/sys.2973", + "data/AlMgCu/data/sys.2974", + "data/AlMgCu/data/sys.2975", + "data/AlMgCu/data/sys.2976", + "data/AlMgCu/data/sys.2977", + "data/AlMgCu/data/sys.2978", + "data/AlMgCu/data/sys.298", + "data/AlMgCu/data/sys.2980", + "data/AlMgCu/data/sys.2982", + "data/AlMgCu/data/sys.2983", + "data/AlMgCu/data/sys.2984", + "data/AlMgCu/data/sys.2986", + "data/AlMgCu/data/sys.2987", + "data/AlMgCu/data/sys.2988", + "data/AlMgCu/data/sys.2989", + "data/AlMgCu/data/sys.299", + "data/AlMgCu/data/sys.2993", + "data/AlMgCu/data/sys.2995", + "data/AlMgCu/data/sys.2996", + "data/AlMgCu/data/sys.2998", + "data/AlMgCu/data/sys.2999", + "data/AlMgCu/data/sys.300", + "data/AlMgCu/data/sys.3000", + "data/AlMgCu/data/sys.3002", + "data/AlMgCu/data/sys.3003", + "data/AlMgCu/data/sys.3004", + "data/AlMgCu/data/sys.3006", + "data/AlMgCu/data/sys.3007", + "data/AlMgCu/data/sys.301", + "data/AlMgCu/data/sys.3010", + "data/AlMgCu/data/sys.3011", + "data/AlMgCu/data/sys.3012", + "data/AlMgCu/data/sys.3013", + "data/AlMgCu/data/sys.3014", + "data/AlMgCu/data/sys.3015", + "data/AlMgCu/data/sys.3016", + "data/AlMgCu/data/sys.3017", + "data/AlMgCu/data/sys.3018", + "data/AlMgCu/data/sys.3019", + "data/AlMgCu/data/sys.302", + "data/AlMgCu/data/sys.3020", + "data/AlMgCu/data/sys.3021", + "data/AlMgCu/data/sys.3022", + "data/AlMgCu/data/sys.3023", + "data/AlMgCu/data/sys.3024", + "data/AlMgCu/data/sys.3025", + "data/AlMgCu/data/sys.3026", + "data/AlMgCu/data/sys.3027", + "data/AlMgCu/data/sys.3028", + "data/AlMgCu/data/sys.303", + "data/AlMgCu/data/sys.3030", + "data/AlMgCu/data/sys.3031", + "data/AlMgCu/data/sys.3032", + "data/AlMgCu/data/sys.3033", + "data/AlMgCu/data/sys.3034", + "data/AlMgCu/data/sys.3035", + "data/AlMgCu/data/sys.3036", + "data/AlMgCu/data/sys.3038", + "data/AlMgCu/data/sys.3039", + "data/AlMgCu/data/sys.304", + "data/AlMgCu/data/sys.3040", + "data/AlMgCu/data/sys.3041", + "data/AlMgCu/data/sys.3042", + "data/AlMgCu/data/sys.3043", + "data/AlMgCu/data/sys.3044", + "data/AlMgCu/data/sys.3045", + "data/AlMgCu/data/sys.3046", + "data/AlMgCu/data/sys.3047", + "data/AlMgCu/data/sys.3048", + "data/AlMgCu/data/sys.3049", + "data/AlMgCu/data/sys.305", + "data/AlMgCu/data/sys.3050", + "data/AlMgCu/data/sys.3051", + "data/AlMgCu/data/sys.3052", + "data/AlMgCu/data/sys.3053", + "data/AlMgCu/data/sys.3054", + "data/AlMgCu/data/sys.3056", + "data/AlMgCu/data/sys.3057", + "data/AlMgCu/data/sys.3058", + "data/AlMgCu/data/sys.3059", + "data/AlMgCu/data/sys.306", + "data/AlMgCu/data/sys.3060", + "data/AlMgCu/data/sys.3061", + "data/AlMgCu/data/sys.3062", + "data/AlMgCu/data/sys.3063", + "data/AlMgCu/data/sys.3064", + "data/AlMgCu/data/sys.3065", + "data/AlMgCu/data/sys.3066", + "data/AlMgCu/data/sys.3067", + "data/AlMgCu/data/sys.3069", + "data/AlMgCu/data/sys.3070", + "data/AlMgCu/data/sys.3071", + "data/AlMgCu/data/sys.3073", + "data/AlMgCu/data/sys.3074", + "data/AlMgCu/data/sys.3075", + "data/AlMgCu/data/sys.3077", + "data/AlMgCu/data/sys.3078", + "data/AlMgCu/data/sys.3079", + "data/AlMgCu/data/sys.308", + "data/AlMgCu/data/sys.3080", + "data/AlMgCu/data/sys.3081", + "data/AlMgCu/data/sys.3082", + "data/AlMgCu/data/sys.3083", + "data/AlMgCu/data/sys.3084", + "data/AlMgCu/data/sys.3085", + "data/AlMgCu/data/sys.3086", + "data/AlMgCu/data/sys.3087", + "data/AlMgCu/data/sys.3088", + "data/AlMgCu/data/sys.309", + "data/AlMgCu/data/sys.3090", + "data/AlMgCu/data/sys.3091", + "data/AlMgCu/data/sys.3092", + "data/AlMgCu/data/sys.3093", + "data/AlMgCu/data/sys.3094", + "data/AlMgCu/data/sys.3095", + "data/AlMgCu/data/sys.3096", + "data/AlMgCu/data/sys.3097", + "data/AlMgCu/data/sys.3098", + "data/AlMgCu/data/sys.3099", + "data/AlMgCu/data/sys.3100", + "data/AlMgCu/data/sys.3101", + "data/AlMgCu/data/sys.3102", + "data/AlMgCu/data/sys.3103", + "data/AlMgCu/data/sys.3104", + "data/AlMgCu/data/sys.3106", + "data/AlMgCu/data/sys.3107", + "data/AlMgCu/data/sys.3108", + "data/AlMgCu/data/sys.3109", + "data/AlMgCu/data/sys.311", + "data/AlMgCu/data/sys.3110", + "data/AlMgCu/data/sys.3111", + "data/AlMgCu/data/sys.3112", + "data/AlMgCu/data/sys.3114", + "data/AlMgCu/data/sys.3115", + "data/AlMgCu/data/sys.3117", + "data/AlMgCu/data/sys.3118", + "data/AlMgCu/data/sys.3119", + "data/AlMgCu/data/sys.312", + "data/AlMgCu/data/sys.3120", + "data/AlMgCu/data/sys.3121", + "data/AlMgCu/data/sys.3123", + "data/AlMgCu/data/sys.3124", + "data/AlMgCu/data/sys.3125", + "data/AlMgCu/data/sys.3126", + "data/AlMgCu/data/sys.3127", + "data/AlMgCu/data/sys.3128", + "data/AlMgCu/data/sys.3129", + "data/AlMgCu/data/sys.313", + "data/AlMgCu/data/sys.3130", + "data/AlMgCu/data/sys.3131", + "data/AlMgCu/data/sys.3132", + "data/AlMgCu/data/sys.3133", + "data/AlMgCu/data/sys.3134", + "data/AlMgCu/data/sys.3135", + "data/AlMgCu/data/sys.3136", + "data/AlMgCu/data/sys.3138", + "data/AlMgCu/data/sys.3139", + "data/AlMgCu/data/sys.314", + "data/AlMgCu/data/sys.3142", + "data/AlMgCu/data/sys.3143", + "data/AlMgCu/data/sys.3144", + "data/AlMgCu/data/sys.3145", + "data/AlMgCu/data/sys.3146", + "data/AlMgCu/data/sys.3147", + "data/AlMgCu/data/sys.3148", + "data/AlMgCu/data/sys.3149", + "data/AlMgCu/data/sys.315", + "data/AlMgCu/data/sys.3150", + "data/AlMgCu/data/sys.3151", + "data/AlMgCu/data/sys.3153", + "data/AlMgCu/data/sys.3154", + "data/AlMgCu/data/sys.3155", + "data/AlMgCu/data/sys.3156", + "data/AlMgCu/data/sys.3157", + "data/AlMgCu/data/sys.3158", + "data/AlMgCu/data/sys.3159", + "data/AlMgCu/data/sys.316", + "data/AlMgCu/data/sys.3160", + "data/AlMgCu/data/sys.3161", + "data/AlMgCu/data/sys.3162", + "data/AlMgCu/data/sys.3163", + "data/AlMgCu/data/sys.3164", + "data/AlMgCu/data/sys.3165", + "data/AlMgCu/data/sys.3166", + "data/AlMgCu/data/sys.3167", + "data/AlMgCu/data/sys.3168", + "data/AlMgCu/data/sys.317", + "data/AlMgCu/data/sys.3170", + "data/AlMgCu/data/sys.3171", + "data/AlMgCu/data/sys.3172", + "data/AlMgCu/data/sys.3174", + "data/AlMgCu/data/sys.3175", + "data/AlMgCu/data/sys.3176", + "data/AlMgCu/data/sys.3177", + "data/AlMgCu/data/sys.3178", + "data/AlMgCu/data/sys.3179", + "data/AlMgCu/data/sys.318", + "data/AlMgCu/data/sys.3180", + "data/AlMgCu/data/sys.3181", + "data/AlMgCu/data/sys.3182", + "data/AlMgCu/data/sys.3183", + "data/AlMgCu/data/sys.3184", + "data/AlMgCu/data/sys.3185", + "data/AlMgCu/data/sys.3186", + "data/AlMgCu/data/sys.3187", + "data/AlMgCu/data/sys.3188", + "data/AlMgCu/data/sys.3189", + "data/AlMgCu/data/sys.3190", + "data/AlMgCu/data/sys.3191", + "data/AlMgCu/data/sys.3192", + "data/AlMgCu/data/sys.3193", + "data/AlMgCu/data/sys.3194", + "data/AlMgCu/data/sys.3195", + "data/AlMgCu/data/sys.3196", + "data/AlMgCu/data/sys.3198", + "data/AlMgCu/data/sys.3199", + "data/AlMgCu/data/sys.3200", + "data/AlMgCu/data/sys.3202", + "data/AlMgCu/data/sys.3203", + "data/AlMgCu/data/sys.3204", + "data/AlMgCu/data/sys.3205", + "data/AlMgCu/data/sys.3206", + "data/AlMgCu/data/sys.3207", + "data/AlMgCu/data/sys.3208", + "data/AlMgCu/data/sys.3209", + "data/AlMgCu/data/sys.321", + "data/AlMgCu/data/sys.3210", + "data/AlMgCu/data/sys.3211", + "data/AlMgCu/data/sys.3212", + "data/AlMgCu/data/sys.3213", + "data/AlMgCu/data/sys.3214", + "data/AlMgCu/data/sys.3215", + "data/AlMgCu/data/sys.3216", + "data/AlMgCu/data/sys.3217", + "data/AlMgCu/data/sys.3218", + "data/AlMgCu/data/sys.322", + "data/AlMgCu/data/sys.3220", + "data/AlMgCu/data/sys.3221", + "data/AlMgCu/data/sys.3222", + "data/AlMgCu/data/sys.3223", + "data/AlMgCu/data/sys.3224", + "data/AlMgCu/data/sys.3225", + "data/AlMgCu/data/sys.3226", + "data/AlMgCu/data/sys.3227", + "data/AlMgCu/data/sys.3228", + "data/AlMgCu/data/sys.3229", + "data/AlMgCu/data/sys.323", + "data/AlMgCu/data/sys.3230", + "data/AlMgCu/data/sys.3231", + "data/AlMgCu/data/sys.3232", + "data/AlMgCu/data/sys.3233", + "data/AlMgCu/data/sys.3235", + "data/AlMgCu/data/sys.3236", + "data/AlMgCu/data/sys.3237", + "data/AlMgCu/data/sys.3238", + "data/AlMgCu/data/sys.3239", + "data/AlMgCu/data/sys.3240", + "data/AlMgCu/data/sys.3241", + "data/AlMgCu/data/sys.3242", + "data/AlMgCu/data/sys.3243", + "data/AlMgCu/data/sys.3244", + "data/AlMgCu/data/sys.3245", + "data/AlMgCu/data/sys.3246", + "data/AlMgCu/data/sys.3247", + "data/AlMgCu/data/sys.3248", + "data/AlMgCu/data/sys.3249", + "data/AlMgCu/data/sys.325", + "data/AlMgCu/data/sys.3250", + "data/AlMgCu/data/sys.3251", + "data/AlMgCu/data/sys.3252", + "data/AlMgCu/data/sys.3253", + "data/AlMgCu/data/sys.3254", + "data/AlMgCu/data/sys.3255", + "data/AlMgCu/data/sys.3256", + "data/AlMgCu/data/sys.3257", + "data/AlMgCu/data/sys.3258", + "data/AlMgCu/data/sys.3259", + "data/AlMgCu/data/sys.326", + "data/AlMgCu/data/sys.3261", + "data/AlMgCu/data/sys.3263", + "data/AlMgCu/data/sys.3264", + "data/AlMgCu/data/sys.3265", + "data/AlMgCu/data/sys.3266", + "data/AlMgCu/data/sys.3267", + "data/AlMgCu/data/sys.3268", + "data/AlMgCu/data/sys.3269", + "data/AlMgCu/data/sys.327", + "data/AlMgCu/data/sys.3270", + "data/AlMgCu/data/sys.3272", + "data/AlMgCu/data/sys.3274", + "data/AlMgCu/data/sys.3275", + "data/AlMgCu/data/sys.3276", + "data/AlMgCu/data/sys.3277", + "data/AlMgCu/data/sys.3278", + "data/AlMgCu/data/sys.3279", + "data/AlMgCu/data/sys.3280", + "data/AlMgCu/data/sys.3282", + "data/AlMgCu/data/sys.3283", + "data/AlMgCu/data/sys.3284", + "data/AlMgCu/data/sys.3286", + "data/AlMgCu/data/sys.3287", + "data/AlMgCu/data/sys.3289", + "data/AlMgCu/data/sys.329", + "data/AlMgCu/data/sys.3290", + "data/AlMgCu/data/sys.3291", + "data/AlMgCu/data/sys.3292", + "data/AlMgCu/data/sys.3293", + "data/AlMgCu/data/sys.3294", + "data/AlMgCu/data/sys.3295", + "data/AlMgCu/data/sys.3296", + "data/AlMgCu/data/sys.3297", + "data/AlMgCu/data/sys.3298", + "data/AlMgCu/data/sys.3299", + "data/AlMgCu/data/sys.330", + "data/AlMgCu/data/sys.3300", + "data/AlMgCu/data/sys.3301", + "data/AlMgCu/data/sys.3302", + "data/AlMgCu/data/sys.3303", + "data/AlMgCu/data/sys.3304", + "data/AlMgCu/data/sys.3305", + "data/AlMgCu/data/sys.3306", + "data/AlMgCu/data/sys.3307", + "data/AlMgCu/data/sys.3308", + "data/AlMgCu/data/sys.3309", + "data/AlMgCu/data/sys.331", + "data/AlMgCu/data/sys.3310", + "data/AlMgCu/data/sys.3311", + "data/AlMgCu/data/sys.3312", + "data/AlMgCu/data/sys.3313", + "data/AlMgCu/data/sys.3314", + "data/AlMgCu/data/sys.3315", + "data/AlMgCu/data/sys.3316", + "data/AlMgCu/data/sys.3317", + "data/AlMgCu/data/sys.3318", + "data/AlMgCu/data/sys.3319", + "data/AlMgCu/data/sys.332", + "data/AlMgCu/data/sys.3320", + "data/AlMgCu/data/sys.3321", + "data/AlMgCu/data/sys.3322", + "data/AlMgCu/data/sys.3323", + "data/AlMgCu/data/sys.3325", + "data/AlMgCu/data/sys.3326", + "data/AlMgCu/data/sys.3327", + "data/AlMgCu/data/sys.3328", + "data/AlMgCu/data/sys.3329", + "data/AlMgCu/data/sys.333", + "data/AlMgCu/data/sys.3330", + "data/AlMgCu/data/sys.3331", + "data/AlMgCu/data/sys.3332", + "data/AlMgCu/data/sys.3333", + "data/AlMgCu/data/sys.3334", + "data/AlMgCu/data/sys.3335", + "data/AlMgCu/data/sys.3336", + "data/AlMgCu/data/sys.3337", + "data/AlMgCu/data/sys.3338", + "data/AlMgCu/data/sys.3339", + "data/AlMgCu/data/sys.334", + "data/AlMgCu/data/sys.3340", + "data/AlMgCu/data/sys.3341", + "data/AlMgCu/data/sys.3342", + "data/AlMgCu/data/sys.3343", + "data/AlMgCu/data/sys.3344", + "data/AlMgCu/data/sys.3345", + "data/AlMgCu/data/sys.3346", + "data/AlMgCu/data/sys.3347", + "data/AlMgCu/data/sys.3348", + "data/AlMgCu/data/sys.3349", + "data/AlMgCu/data/sys.335", + "data/AlMgCu/data/sys.3350", + "data/AlMgCu/data/sys.3351", + "data/AlMgCu/data/sys.3352", + "data/AlMgCu/data/sys.3353", + "data/AlMgCu/data/sys.3356", + "data/AlMgCu/data/sys.3357", + "data/AlMgCu/data/sys.3358", + "data/AlMgCu/data/sys.336", + "data/AlMgCu/data/sys.3360", + "data/AlMgCu/data/sys.3361", + "data/AlMgCu/data/sys.3362", + "data/AlMgCu/data/sys.3363", + "data/AlMgCu/data/sys.3365", + "data/AlMgCu/data/sys.3367", + "data/AlMgCu/data/sys.3368", + "data/AlMgCu/data/sys.3369", + "data/AlMgCu/data/sys.337", + "data/AlMgCu/data/sys.3370", + "data/AlMgCu/data/sys.3372", + "data/AlMgCu/data/sys.3374", + "data/AlMgCu/data/sys.3375", + "data/AlMgCu/data/sys.3376", + "data/AlMgCu/data/sys.3377", + "data/AlMgCu/data/sys.3378", + "data/AlMgCu/data/sys.3379", + "data/AlMgCu/data/sys.338", + "data/AlMgCu/data/sys.3380", + "data/AlMgCu/data/sys.3381", + "data/AlMgCu/data/sys.3382", + "data/AlMgCu/data/sys.3384", + "data/AlMgCu/data/sys.3385", + "data/AlMgCu/data/sys.3386", + "data/AlMgCu/data/sys.3387", + "data/AlMgCu/data/sys.3388", + "data/AlMgCu/data/sys.3389", + "data/AlMgCu/data/sys.339", + "data/AlMgCu/data/sys.3390", + "data/AlMgCu/data/sys.3391", + "data/AlMgCu/data/sys.3392", + "data/AlMgCu/data/sys.3393", + "data/AlMgCu/data/sys.3394", + "data/AlMgCu/data/sys.3395", + "data/AlMgCu/data/sys.3396", + "data/AlMgCu/data/sys.3397", + "data/AlMgCu/data/sys.3398", + "data/AlMgCu/data/sys.3399", + "data/AlMgCu/data/sys.340", + "data/AlMgCu/data/sys.3400", + "data/AlMgCu/data/sys.3401", + "data/AlMgCu/data/sys.3402", + "data/AlMgCu/data/sys.3404", + "data/AlMgCu/data/sys.3405", + "data/AlMgCu/data/sys.3406", + "data/AlMgCu/data/sys.3407", + "data/AlMgCu/data/sys.3408", + "data/AlMgCu/data/sys.3409", + "data/AlMgCu/data/sys.3410", + "data/AlMgCu/data/sys.3412", + "data/AlMgCu/data/sys.3413", + "data/AlMgCu/data/sys.3416", + "data/AlMgCu/data/sys.3417", + "data/AlMgCu/data/sys.3418", + "data/AlMgCu/data/sys.3419", + "data/AlMgCu/data/sys.342", + "data/AlMgCu/data/sys.3420", + "data/AlMgCu/data/sys.3421", + "data/AlMgCu/data/sys.3422", + "data/AlMgCu/data/sys.3423", + "data/AlMgCu/data/sys.3424", + "data/AlMgCu/data/sys.3425", + "data/AlMgCu/data/sys.3426", + "data/AlMgCu/data/sys.3427", + "data/AlMgCu/data/sys.3428", + "data/AlMgCu/data/sys.3429", + "data/AlMgCu/data/sys.343", + "data/AlMgCu/data/sys.3431", + "data/AlMgCu/data/sys.3432", + "data/AlMgCu/data/sys.3433", + "data/AlMgCu/data/sys.3434", + "data/AlMgCu/data/sys.3435", + "data/AlMgCu/data/sys.3436", + "data/AlMgCu/data/sys.3437", + "data/AlMgCu/data/sys.3438", + "data/AlMgCu/data/sys.3439", + "data/AlMgCu/data/sys.344", + "data/AlMgCu/data/sys.3441", + "data/AlMgCu/data/sys.3442", + "data/AlMgCu/data/sys.3443", + "data/AlMgCu/data/sys.3444", + "data/AlMgCu/data/sys.3445", + "data/AlMgCu/data/sys.3446", + "data/AlMgCu/data/sys.3448", + "data/AlMgCu/data/sys.345", + "data/AlMgCu/data/sys.3450", + "data/AlMgCu/data/sys.3451", + "data/AlMgCu/data/sys.3452", + "data/AlMgCu/data/sys.3453", + "data/AlMgCu/data/sys.3454", + "data/AlMgCu/data/sys.3455", + "data/AlMgCu/data/sys.3456", + "data/AlMgCu/data/sys.3457", + "data/AlMgCu/data/sys.3458", + "data/AlMgCu/data/sys.3459", + "data/AlMgCu/data/sys.346", + "data/AlMgCu/data/sys.3460", + "data/AlMgCu/data/sys.3461", + "data/AlMgCu/data/sys.3462", + "data/AlMgCu/data/sys.3463", + "data/AlMgCu/data/sys.3464", + "data/AlMgCu/data/sys.3465", + "data/AlMgCu/data/sys.3466", + "data/AlMgCu/data/sys.3467", + "data/AlMgCu/data/sys.3468", + "data/AlMgCu/data/sys.3469", + "data/AlMgCu/data/sys.3470", + "data/AlMgCu/data/sys.3471", + "data/AlMgCu/data/sys.3472", + "data/AlMgCu/data/sys.3473", + "data/AlMgCu/data/sys.3474", + "data/AlMgCu/data/sys.3475", + "data/AlMgCu/data/sys.3476", + "data/AlMgCu/data/sys.3477", + "data/AlMgCu/data/sys.3478", + "data/AlMgCu/data/sys.3479", + "data/AlMgCu/data/sys.348", + "data/AlMgCu/data/sys.3481", + "data/AlMgCu/data/sys.3482", + "data/AlMgCu/data/sys.3483", + "data/AlMgCu/data/sys.3484", + "data/AlMgCu/data/sys.3485", + "data/AlMgCu/data/sys.3486", + "data/AlMgCu/data/sys.3487", + "data/AlMgCu/data/sys.3488", + "data/AlMgCu/data/sys.3489", + "data/AlMgCu/data/sys.3490", + "data/AlMgCu/data/sys.3491", + "data/AlMgCu/data/sys.3492", + "data/AlMgCu/data/sys.3494", + "data/AlMgCu/data/sys.3496", + "data/AlMgCu/data/sys.3498", + "data/AlMgCu/data/sys.3499", + "data/AlMgCu/data/sys.350", + "data/AlMgCu/data/sys.3500", + "data/AlMgCu/data/sys.3502", + "data/AlMgCu/data/sys.3503", + "data/AlMgCu/data/sys.3504", + "data/AlMgCu/data/sys.3505", + "data/AlMgCu/data/sys.3507", + "data/AlMgCu/data/sys.3509", + "data/AlMgCu/data/sys.351", + "data/AlMgCu/data/sys.3510", + "data/AlMgCu/data/sys.3512", + "data/AlMgCu/data/sys.3513", + "data/AlMgCu/data/sys.3514", + "data/AlMgCu/data/sys.3516", + "data/AlMgCu/data/sys.3517", + "data/AlMgCu/data/sys.3518", + "data/AlMgCu/data/sys.3519", + "data/AlMgCu/data/sys.352", + "data/AlMgCu/data/sys.3520", + "data/AlMgCu/data/sys.3521", + "data/AlMgCu/data/sys.3522", + "data/AlMgCu/data/sys.3524", + "data/AlMgCu/data/sys.3525", + "data/AlMgCu/data/sys.3526", + "data/AlMgCu/data/sys.3528", + "data/AlMgCu/data/sys.3529", + "data/AlMgCu/data/sys.353", + "data/AlMgCu/data/sys.3530", + "data/AlMgCu/data/sys.3532", + "data/AlMgCu/data/sys.3534", + "data/AlMgCu/data/sys.3535", + "data/AlMgCu/data/sys.3536", + "data/AlMgCu/data/sys.3537", + "data/AlMgCu/data/sys.3538", + "data/AlMgCu/data/sys.3539", + "data/AlMgCu/data/sys.3540", + "data/AlMgCu/data/sys.3541", + "data/AlMgCu/data/sys.3542", + "data/AlMgCu/data/sys.3544", + "data/AlMgCu/data/sys.3545", + "data/AlMgCu/data/sys.3546", + "data/AlMgCu/data/sys.3547", + "data/AlMgCu/data/sys.3548", + "data/AlMgCu/data/sys.3549", + "data/AlMgCu/data/sys.355", + "data/AlMgCu/data/sys.3550", + "data/AlMgCu/data/sys.3552", + "data/AlMgCu/data/sys.3554", + "data/AlMgCu/data/sys.3556", + "data/AlMgCu/data/sys.3558", + "data/AlMgCu/data/sys.356", + "data/AlMgCu/data/sys.3560", + "data/AlMgCu/data/sys.3562", + "data/AlMgCu/data/sys.3564", + "data/AlMgCu/data/sys.3566", + "data/AlMgCu/data/sys.3568", + "data/AlMgCu/data/sys.357", + "data/AlMgCu/data/sys.3570", + "data/AlMgCu/data/sys.3572", + "data/AlMgCu/data/sys.3574", + "data/AlMgCu/data/sys.3576", + "data/AlMgCu/data/sys.3578", + "data/AlMgCu/data/sys.358", + "data/AlMgCu/data/sys.3580", + "data/AlMgCu/data/sys.3582", + "data/AlMgCu/data/sys.3583", + "data/AlMgCu/data/sys.3584", + "data/AlMgCu/data/sys.3586", + "data/AlMgCu/data/sys.3587", + "data/AlMgCu/data/sys.3588", + "data/AlMgCu/data/sys.3589", + "data/AlMgCu/data/sys.3590", + "data/AlMgCu/data/sys.3591", + "data/AlMgCu/data/sys.3592", + "data/AlMgCu/data/sys.3593", + "data/AlMgCu/data/sys.3594", + "data/AlMgCu/data/sys.3595", + "data/AlMgCu/data/sys.3596", + "data/AlMgCu/data/sys.3597", + "data/AlMgCu/data/sys.3598", + "data/AlMgCu/data/sys.360", + "data/AlMgCu/data/sys.3600", + "data/AlMgCu/data/sys.3601", + "data/AlMgCu/data/sys.3602", + "data/AlMgCu/data/sys.3603", + "data/AlMgCu/data/sys.3604", + "data/AlMgCu/data/sys.3605", + "data/AlMgCu/data/sys.3606", + "data/AlMgCu/data/sys.3607", + "data/AlMgCu/data/sys.3608", + "data/AlMgCu/data/sys.3609", + "data/AlMgCu/data/sys.361", + "data/AlMgCu/data/sys.3610", + "data/AlMgCu/data/sys.3611", + "data/AlMgCu/data/sys.3612", + "data/AlMgCu/data/sys.3613", + "data/AlMgCu/data/sys.3615", + "data/AlMgCu/data/sys.3616", + "data/AlMgCu/data/sys.3617", + "data/AlMgCu/data/sys.3618", + "data/AlMgCu/data/sys.3619", + "data/AlMgCu/data/sys.362", + "data/AlMgCu/data/sys.3620", + "data/AlMgCu/data/sys.3621", + "data/AlMgCu/data/sys.3622", + "data/AlMgCu/data/sys.3623", + "data/AlMgCu/data/sys.3624", + "data/AlMgCu/data/sys.3626", + "data/AlMgCu/data/sys.3628", + "data/AlMgCu/data/sys.3629", + "data/AlMgCu/data/sys.363", + "data/AlMgCu/data/sys.3630", + "data/AlMgCu/data/sys.3632", + "data/AlMgCu/data/sys.3633", + "data/AlMgCu/data/sys.3636", + "data/AlMgCu/data/sys.3638", + "data/AlMgCu/data/sys.3640", + "data/AlMgCu/data/sys.3641", + "data/AlMgCu/data/sys.3642", + "data/AlMgCu/data/sys.3644", + "data/AlMgCu/data/sys.3646", + "data/AlMgCu/data/sys.3648", + "data/AlMgCu/data/sys.365", + "data/AlMgCu/data/sys.3652", + "data/AlMgCu/data/sys.3653", + "data/AlMgCu/data/sys.3654", + "data/AlMgCu/data/sys.3655", + "data/AlMgCu/data/sys.3656", + "data/AlMgCu/data/sys.3657", + "data/AlMgCu/data/sys.3658", + "data/AlMgCu/data/sys.3659", + "data/AlMgCu/data/sys.366", + "data/AlMgCu/data/sys.3660", + "data/AlMgCu/data/sys.3661", + "data/AlMgCu/data/sys.3662", + "data/AlMgCu/data/sys.3663", + "data/AlMgCu/data/sys.3664", + "data/AlMgCu/data/sys.3665", + "data/AlMgCu/data/sys.3666", + "data/AlMgCu/data/sys.3667", + "data/AlMgCu/data/sys.3668", + "data/AlMgCu/data/sys.3669", + "data/AlMgCu/data/sys.367", + "data/AlMgCu/data/sys.3670", + "data/AlMgCu/data/sys.3671", + "data/AlMgCu/data/sys.3672", + "data/AlMgCu/data/sys.3673", + "data/AlMgCu/data/sys.3675", + "data/AlMgCu/data/sys.3676", + "data/AlMgCu/data/sys.3677", + "data/AlMgCu/data/sys.3678", + "data/AlMgCu/data/sys.368", + "data/AlMgCu/data/sys.3680", + "data/AlMgCu/data/sys.3681", + "data/AlMgCu/data/sys.3682", + "data/AlMgCu/data/sys.3684", + "data/AlMgCu/data/sys.3686", + "data/AlMgCu/data/sys.3688", + "data/AlMgCu/data/sys.369", + "data/AlMgCu/data/sys.3690", + "data/AlMgCu/data/sys.3692", + "data/AlMgCu/data/sys.3694", + "data/AlMgCu/data/sys.3696", + "data/AlMgCu/data/sys.3697", + "data/AlMgCu/data/sys.3698", + "data/AlMgCu/data/sys.3699", + "data/AlMgCu/data/sys.370", + "data/AlMgCu/data/sys.3700", + "data/AlMgCu/data/sys.3701", + "data/AlMgCu/data/sys.3702", + "data/AlMgCu/data/sys.3703", + "data/AlMgCu/data/sys.3704", + "data/AlMgCu/data/sys.3706", + "data/AlMgCu/data/sys.3707", + "data/AlMgCu/data/sys.3709", + "data/AlMgCu/data/sys.371", + "data/AlMgCu/data/sys.3710", + "data/AlMgCu/data/sys.3711", + "data/AlMgCu/data/sys.3712", + "data/AlMgCu/data/sys.3713", + "data/AlMgCu/data/sys.3714", + "data/AlMgCu/data/sys.3715", + "data/AlMgCu/data/sys.3716", + "data/AlMgCu/data/sys.3717", + "data/AlMgCu/data/sys.3718", + "data/AlMgCu/data/sys.3719", + "data/AlMgCu/data/sys.372", + "data/AlMgCu/data/sys.3720", + "data/AlMgCu/data/sys.3721", + "data/AlMgCu/data/sys.3722", + "data/AlMgCu/data/sys.3723", + "data/AlMgCu/data/sys.3724", + "data/AlMgCu/data/sys.3725", + "data/AlMgCu/data/sys.3726", + "data/AlMgCu/data/sys.3728", + "data/AlMgCu/data/sys.3729", + "data/AlMgCu/data/sys.373", + "data/AlMgCu/data/sys.3730", + "data/AlMgCu/data/sys.3731", + "data/AlMgCu/data/sys.3734", + "data/AlMgCu/data/sys.3735", + "data/AlMgCu/data/sys.3736", + "data/AlMgCu/data/sys.3737", + "data/AlMgCu/data/sys.3739", + "data/AlMgCu/data/sys.374", + "data/AlMgCu/data/sys.3740", + "data/AlMgCu/data/sys.3741", + "data/AlMgCu/data/sys.3742", + "data/AlMgCu/data/sys.3743", + "data/AlMgCu/data/sys.3744", + "data/AlMgCu/data/sys.3746", + "data/AlMgCu/data/sys.3747", + "data/AlMgCu/data/sys.3749", + "data/AlMgCu/data/sys.375", + "data/AlMgCu/data/sys.3750", + "data/AlMgCu/data/sys.3751", + "data/AlMgCu/data/sys.3752", + "data/AlMgCu/data/sys.3753", + "data/AlMgCu/data/sys.3754", + "data/AlMgCu/data/sys.3756", + "data/AlMgCu/data/sys.376", + "data/AlMgCu/data/sys.3760", + "data/AlMgCu/data/sys.3761", + "data/AlMgCu/data/sys.3762", + "data/AlMgCu/data/sys.3764", + "data/AlMgCu/data/sys.3765", + "data/AlMgCu/data/sys.3766", + "data/AlMgCu/data/sys.3768", + "data/AlMgCu/data/sys.3769", + "data/AlMgCu/data/sys.377", + "data/AlMgCu/data/sys.3770", + "data/AlMgCu/data/sys.3771", + "data/AlMgCu/data/sys.3772", + "data/AlMgCu/data/sys.3773", + "data/AlMgCu/data/sys.3774", + "data/AlMgCu/data/sys.3776", + "data/AlMgCu/data/sys.3777", + "data/AlMgCu/data/sys.3778", + "data/AlMgCu/data/sys.3779", + "data/AlMgCu/data/sys.378", + "data/AlMgCu/data/sys.3780", + "data/AlMgCu/data/sys.3781", + "data/AlMgCu/data/sys.3782", + "data/AlMgCu/data/sys.3784", + "data/AlMgCu/data/sys.3785", + "data/AlMgCu/data/sys.3786", + "data/AlMgCu/data/sys.3787", + "data/AlMgCu/data/sys.3788", + "data/AlMgCu/data/sys.3789", + "data/AlMgCu/data/sys.379", + "data/AlMgCu/data/sys.3790", + "data/AlMgCu/data/sys.3791", + "data/AlMgCu/data/sys.3792", + "data/AlMgCu/data/sys.3793", + "data/AlMgCu/data/sys.3794", + "data/AlMgCu/data/sys.3795", + "data/AlMgCu/data/sys.3796", + "data/AlMgCu/data/sys.3797", + "data/AlMgCu/data/sys.3798", + "data/AlMgCu/data/sys.3799", + "data/AlMgCu/data/sys.380", + "data/AlMgCu/data/sys.3800", + "data/AlMgCu/data/sys.3801", + "data/AlMgCu/data/sys.3802", + "data/AlMgCu/data/sys.3803", + "data/AlMgCu/data/sys.3804", + "data/AlMgCu/data/sys.3805", + "data/AlMgCu/data/sys.3806", + "data/AlMgCu/data/sys.3808", + "data/AlMgCu/data/sys.3809", + "data/AlMgCu/data/sys.381", + "data/AlMgCu/data/sys.3810", + "data/AlMgCu/data/sys.3811", + "data/AlMgCu/data/sys.3812", + "data/AlMgCu/data/sys.3813", + "data/AlMgCu/data/sys.3814", + "data/AlMgCu/data/sys.3816", + "data/AlMgCu/data/sys.3817", + "data/AlMgCu/data/sys.3818", + "data/AlMgCu/data/sys.3819", + "data/AlMgCu/data/sys.3820", + "data/AlMgCu/data/sys.3821", + "data/AlMgCu/data/sys.3822", + "data/AlMgCu/data/sys.3823", + "data/AlMgCu/data/sys.3824", + "data/AlMgCu/data/sys.3826", + "data/AlMgCu/data/sys.3828", + "data/AlMgCu/data/sys.3829", + "data/AlMgCu/data/sys.383", + "data/AlMgCu/data/sys.3830", + "data/AlMgCu/data/sys.3831", + "data/AlMgCu/data/sys.3832", + "data/AlMgCu/data/sys.3833", + "data/AlMgCu/data/sys.3834", + "data/AlMgCu/data/sys.3835", + "data/AlMgCu/data/sys.3836", + "data/AlMgCu/data/sys.3837", + "data/AlMgCu/data/sys.3838", + "data/AlMgCu/data/sys.3839", + "data/AlMgCu/data/sys.384", + "data/AlMgCu/data/sys.3840", + "data/AlMgCu/data/sys.3841", + "data/AlMgCu/data/sys.3842", + "data/AlMgCu/data/sys.3843", + "data/AlMgCu/data/sys.3844", + "data/AlMgCu/data/sys.3845", + "data/AlMgCu/data/sys.3846", + "data/AlMgCu/data/sys.3847", + "data/AlMgCu/data/sys.3849", + "data/AlMgCu/data/sys.385", + "data/AlMgCu/data/sys.3850", + "data/AlMgCu/data/sys.3851", + "data/AlMgCu/data/sys.3852", + "data/AlMgCu/data/sys.3853", + "data/AlMgCu/data/sys.3854", + "data/AlMgCu/data/sys.3855", + "data/AlMgCu/data/sys.3856", + "data/AlMgCu/data/sys.3857", + "data/AlMgCu/data/sys.3858", + "data/AlMgCu/data/sys.3859", + "data/AlMgCu/data/sys.386", + "data/AlMgCu/data/sys.3860", + "data/AlMgCu/data/sys.3861", + "data/AlMgCu/data/sys.3862", + "data/AlMgCu/data/sys.3863", + "data/AlMgCu/data/sys.3865", + "data/AlMgCu/data/sys.3866", + "data/AlMgCu/data/sys.3868", + "data/AlMgCu/data/sys.3869", + "data/AlMgCu/data/sys.387", + "data/AlMgCu/data/sys.3870", + "data/AlMgCu/data/sys.3872", + "data/AlMgCu/data/sys.3873", + "data/AlMgCu/data/sys.3874", + "data/AlMgCu/data/sys.3875", + "data/AlMgCu/data/sys.3876", + "data/AlMgCu/data/sys.3877", + "data/AlMgCu/data/sys.3879", + "data/AlMgCu/data/sys.388", + "data/AlMgCu/data/sys.3880", + "data/AlMgCu/data/sys.3881", + "data/AlMgCu/data/sys.3882", + "data/AlMgCu/data/sys.3885", + "data/AlMgCu/data/sys.3888", + "data/AlMgCu/data/sys.3889", + "data/AlMgCu/data/sys.389", + "data/AlMgCu/data/sys.3890", + "data/AlMgCu/data/sys.3891", + "data/AlMgCu/data/sys.3892", + "data/AlMgCu/data/sys.3893", + "data/AlMgCu/data/sys.3894", + "data/AlMgCu/data/sys.3895", + "data/AlMgCu/data/sys.3896", + "data/AlMgCu/data/sys.3898", + "data/AlMgCu/data/sys.3899", + "data/AlMgCu/data/sys.390", + "data/AlMgCu/data/sys.3900", + "data/AlMgCu/data/sys.3901", + "data/AlMgCu/data/sys.3902", + "data/AlMgCu/data/sys.3904", + "data/AlMgCu/data/sys.3905", + "data/AlMgCu/data/sys.3908", + "data/AlMgCu/data/sys.3909", + "data/AlMgCu/data/sys.391", + "data/AlMgCu/data/sys.3910", + "data/AlMgCu/data/sys.3912", + "data/AlMgCu/data/sys.3914", + "data/AlMgCu/data/sys.3915", + "data/AlMgCu/data/sys.3916", + "data/AlMgCu/data/sys.3917", + "data/AlMgCu/data/sys.3918", + "data/AlMgCu/data/sys.3920", + "data/AlMgCu/data/sys.3921", + "data/AlMgCu/data/sys.3922", + "data/AlMgCu/data/sys.3924", + "data/AlMgCu/data/sys.3926", + "data/AlMgCu/data/sys.3927", + "data/AlMgCu/data/sys.3929", + "data/AlMgCu/data/sys.393", + "data/AlMgCu/data/sys.3930", + "data/AlMgCu/data/sys.3933", + "data/AlMgCu/data/sys.3934", + "data/AlMgCu/data/sys.3935", + "data/AlMgCu/data/sys.3936", + "data/AlMgCu/data/sys.3937", + "data/AlMgCu/data/sys.3938", + "data/AlMgCu/data/sys.3940", + "data/AlMgCu/data/sys.3941", + "data/AlMgCu/data/sys.3942", + "data/AlMgCu/data/sys.3943", + "data/AlMgCu/data/sys.3944", + "data/AlMgCu/data/sys.3945", + "data/AlMgCu/data/sys.3946", + "data/AlMgCu/data/sys.3947", + "data/AlMgCu/data/sys.3948", + "data/AlMgCu/data/sys.3949", + "data/AlMgCu/data/sys.395", + "data/AlMgCu/data/sys.3950", + "data/AlMgCu/data/sys.3951", + "data/AlMgCu/data/sys.3952", + "data/AlMgCu/data/sys.3953", + "data/AlMgCu/data/sys.3954", + "data/AlMgCu/data/sys.3955", + "data/AlMgCu/data/sys.3956", + "data/AlMgCu/data/sys.3959", + "data/AlMgCu/data/sys.396", + "data/AlMgCu/data/sys.3961", + "data/AlMgCu/data/sys.3962", + "data/AlMgCu/data/sys.3963", + "data/AlMgCu/data/sys.3964", + "data/AlMgCu/data/sys.3965", + "data/AlMgCu/data/sys.3966", + "data/AlMgCu/data/sys.3967", + "data/AlMgCu/data/sys.3968", + "data/AlMgCu/data/sys.3969", + "data/AlMgCu/data/sys.397", + "data/AlMgCu/data/sys.3970", + "data/AlMgCu/data/sys.3971", + "data/AlMgCu/data/sys.3973", + "data/AlMgCu/data/sys.3975", + "data/AlMgCu/data/sys.3977", + "data/AlMgCu/data/sys.3978", + "data/AlMgCu/data/sys.3979", + "data/AlMgCu/data/sys.398", + "data/AlMgCu/data/sys.3980", + "data/AlMgCu/data/sys.3981", + "data/AlMgCu/data/sys.3982", + "data/AlMgCu/data/sys.3983", + "data/AlMgCu/data/sys.3984", + "data/AlMgCu/data/sys.3985", + "data/AlMgCu/data/sys.3986", + "data/AlMgCu/data/sys.3987", + "data/AlMgCu/data/sys.3988", + "data/AlMgCu/data/sys.3989", + "data/AlMgCu/data/sys.399", + "data/AlMgCu/data/sys.3990", + "data/AlMgCu/data/sys.3991", + "data/AlMgCu/data/sys.3992", + "data/AlMgCu/data/sys.3993", + "data/AlMgCu/data/sys.3994", + "data/AlMgCu/data/sys.3997", + "data/AlMgCu/data/sys.3999", + "data/AlMgCu/data/sys.400", + "data/AlMgCu/data/sys.4000", + "data/AlMgCu/data/sys.4001", + "data/AlMgCu/data/sys.4002", + "data/AlMgCu/data/sys.4003", + "data/AlMgCu/data/sys.4004", + "data/AlMgCu/data/sys.4005", + "data/AlMgCu/data/sys.4006", + "data/AlMgCu/data/sys.4007", + "data/AlMgCu/data/sys.4008", + "data/AlMgCu/data/sys.4009", + "data/AlMgCu/data/sys.401", + "data/AlMgCu/data/sys.4010", + "data/AlMgCu/data/sys.4011", + "data/AlMgCu/data/sys.4012", + "data/AlMgCu/data/sys.4013", + "data/AlMgCu/data/sys.4014", + "data/AlMgCu/data/sys.4015", + "data/AlMgCu/data/sys.4016", + "data/AlMgCu/data/sys.4017", + "data/AlMgCu/data/sys.4018", + "data/AlMgCu/data/sys.4019", + "data/AlMgCu/data/sys.402", + "data/AlMgCu/data/sys.4020", + "data/AlMgCu/data/sys.4021", + "data/AlMgCu/data/sys.4022", + "data/AlMgCu/data/sys.4023", + "data/AlMgCu/data/sys.4024", + "data/AlMgCu/data/sys.4026", + "data/AlMgCu/data/sys.4028", + "data/AlMgCu/data/sys.4029", + "data/AlMgCu/data/sys.403", + "data/AlMgCu/data/sys.4030", + "data/AlMgCu/data/sys.4031", + "data/AlMgCu/data/sys.4032", + "data/AlMgCu/data/sys.4033", + "data/AlMgCu/data/sys.4036", + "data/AlMgCu/data/sys.4037", + "data/AlMgCu/data/sys.4038", + "data/AlMgCu/data/sys.4039", + "data/AlMgCu/data/sys.404", + "data/AlMgCu/data/sys.4040", + "data/AlMgCu/data/sys.4041", + "data/AlMgCu/data/sys.4042", + "data/AlMgCu/data/sys.4044", + "data/AlMgCu/data/sys.4045", + "data/AlMgCu/data/sys.4046", + "data/AlMgCu/data/sys.4047", + "data/AlMgCu/data/sys.4048", + "data/AlMgCu/data/sys.4049", + "data/AlMgCu/data/sys.405", + "data/AlMgCu/data/sys.4050", + "data/AlMgCu/data/sys.4052", + "data/AlMgCu/data/sys.4054", + "data/AlMgCu/data/sys.4055", + "data/AlMgCu/data/sys.4056", + "data/AlMgCu/data/sys.4057", + "data/AlMgCu/data/sys.4058", + "data/AlMgCu/data/sys.4059", + "data/AlMgCu/data/sys.406", + "data/AlMgCu/data/sys.4060", + "data/AlMgCu/data/sys.4061", + "data/AlMgCu/data/sys.4062", + "data/AlMgCu/data/sys.4063", + "data/AlMgCu/data/sys.4066", + "data/AlMgCu/data/sys.4067", + "data/AlMgCu/data/sys.4068", + "data/AlMgCu/data/sys.4069", + "data/AlMgCu/data/sys.407", + "data/AlMgCu/data/sys.4070", + "data/AlMgCu/data/sys.4071", + "data/AlMgCu/data/sys.4072", + "data/AlMgCu/data/sys.4073", + "data/AlMgCu/data/sys.4074", + "data/AlMgCu/data/sys.4075", + "data/AlMgCu/data/sys.4076", + "data/AlMgCu/data/sys.4078", + "data/AlMgCu/data/sys.4079", + "data/AlMgCu/data/sys.408", + "data/AlMgCu/data/sys.4080", + "data/AlMgCu/data/sys.4081", + "data/AlMgCu/data/sys.4082", + "data/AlMgCu/data/sys.4083", + "data/AlMgCu/data/sys.4084", + "data/AlMgCu/data/sys.4085", + "data/AlMgCu/data/sys.4086", + "data/AlMgCu/data/sys.4087", + "data/AlMgCu/data/sys.4088", + "data/AlMgCu/data/sys.4089", + "data/AlMgCu/data/sys.409", + "data/AlMgCu/data/sys.4090", + "data/AlMgCu/data/sys.4091", + "data/AlMgCu/data/sys.4092", + "data/AlMgCu/data/sys.4093", + "data/AlMgCu/data/sys.4094", + "data/AlMgCu/data/sys.4095", + "data/AlMgCu/data/sys.4096", + "data/AlMgCu/data/sys.4097", + "data/AlMgCu/data/sys.4098", + "data/AlMgCu/data/sys.4099", + "data/AlMgCu/data/sys.410", + "data/AlMgCu/data/sys.4100", + "data/AlMgCu/data/sys.4101", + "data/AlMgCu/data/sys.4102", + "data/AlMgCu/data/sys.4104", + "data/AlMgCu/data/sys.4105", + "data/AlMgCu/data/sys.4106", + "data/AlMgCu/data/sys.4107", + "data/AlMgCu/data/sys.4108", + "data/AlMgCu/data/sys.411", + "data/AlMgCu/data/sys.4110", + "data/AlMgCu/data/sys.4111", + "data/AlMgCu/data/sys.4112", + "data/AlMgCu/data/sys.4113", + "data/AlMgCu/data/sys.4114", + "data/AlMgCu/data/sys.4115", + "data/AlMgCu/data/sys.4116", + "data/AlMgCu/data/sys.4117", + "data/AlMgCu/data/sys.4118", + "data/AlMgCu/data/sys.4119", + "data/AlMgCu/data/sys.412", + "data/AlMgCu/data/sys.4120", + "data/AlMgCu/data/sys.4121", + "data/AlMgCu/data/sys.4122", + "data/AlMgCu/data/sys.4125", + "data/AlMgCu/data/sys.4126", + "data/AlMgCu/data/sys.4127", + "data/AlMgCu/data/sys.4128", + "data/AlMgCu/data/sys.4129", + "data/AlMgCu/data/sys.413", + "data/AlMgCu/data/sys.4130", + "data/AlMgCu/data/sys.4131", + "data/AlMgCu/data/sys.4132", + "data/AlMgCu/data/sys.4133", + "data/AlMgCu/data/sys.4134", + "data/AlMgCu/data/sys.4135", + "data/AlMgCu/data/sys.4136", + "data/AlMgCu/data/sys.4137", + "data/AlMgCu/data/sys.4138", + "data/AlMgCu/data/sys.414", + "data/AlMgCu/data/sys.4140", + "data/AlMgCu/data/sys.4141", + "data/AlMgCu/data/sys.4142", + "data/AlMgCu/data/sys.4143", + "data/AlMgCu/data/sys.4144", + "data/AlMgCu/data/sys.4145", + "data/AlMgCu/data/sys.4146", + "data/AlMgCu/data/sys.4147", + "data/AlMgCu/data/sys.4148", + "data/AlMgCu/data/sys.4149", + "data/AlMgCu/data/sys.415", + "data/AlMgCu/data/sys.4150", + "data/AlMgCu/data/sys.4151", + "data/AlMgCu/data/sys.4152", + "data/AlMgCu/data/sys.4153", + "data/AlMgCu/data/sys.4154", + "data/AlMgCu/data/sys.4155", + "data/AlMgCu/data/sys.4157", + "data/AlMgCu/data/sys.4158", + "data/AlMgCu/data/sys.4159", + "data/AlMgCu/data/sys.416", + "data/AlMgCu/data/sys.4161", + "data/AlMgCu/data/sys.4162", + "data/AlMgCu/data/sys.4163", + "data/AlMgCu/data/sys.4164", + "data/AlMgCu/data/sys.4165", + "data/AlMgCu/data/sys.4166", + "data/AlMgCu/data/sys.4167", + "data/AlMgCu/data/sys.4168", + "data/AlMgCu/data/sys.4169", + "data/AlMgCu/data/sys.4170", + "data/AlMgCu/data/sys.4171", + "data/AlMgCu/data/sys.4172", + "data/AlMgCu/data/sys.4174", + "data/AlMgCu/data/sys.4175", + "data/AlMgCu/data/sys.4176", + "data/AlMgCu/data/sys.4177", + "data/AlMgCu/data/sys.4178", + "data/AlMgCu/data/sys.4180", + "data/AlMgCu/data/sys.4181", + "data/AlMgCu/data/sys.4182", + "data/AlMgCu/data/sys.4183", + "data/AlMgCu/data/sys.4184", + "data/AlMgCu/data/sys.4185", + "data/AlMgCu/data/sys.4186", + "data/AlMgCu/data/sys.4187", + "data/AlMgCu/data/sys.4188", + "data/AlMgCu/data/sys.419", + "data/AlMgCu/data/sys.4190", + "data/AlMgCu/data/sys.4191", + "data/AlMgCu/data/sys.4192", + "data/AlMgCu/data/sys.4193", + "data/AlMgCu/data/sys.4194", + "data/AlMgCu/data/sys.4195", + "data/AlMgCu/data/sys.4196", + "data/AlMgCu/data/sys.4197", + "data/AlMgCu/data/sys.4198", + "data/AlMgCu/data/sys.4199", + "data/AlMgCu/data/sys.4200", + "data/AlMgCu/data/sys.4201", + "data/AlMgCu/data/sys.4203", + "data/AlMgCu/data/sys.4204", + "data/AlMgCu/data/sys.4205", + "data/AlMgCu/data/sys.4206", + "data/AlMgCu/data/sys.4207", + "data/AlMgCu/data/sys.4208", + "data/AlMgCu/data/sys.4209", + "data/AlMgCu/data/sys.421", + "data/AlMgCu/data/sys.4210", + "data/AlMgCu/data/sys.4211", + "data/AlMgCu/data/sys.4212", + "data/AlMgCu/data/sys.4213", + "data/AlMgCu/data/sys.4214", + "data/AlMgCu/data/sys.4215", + "data/AlMgCu/data/sys.4216", + "data/AlMgCu/data/sys.4217", + "data/AlMgCu/data/sys.4218", + "data/AlMgCu/data/sys.4219", + "data/AlMgCu/data/sys.422", + "data/AlMgCu/data/sys.4220", + "data/AlMgCu/data/sys.4221", + "data/AlMgCu/data/sys.4222", + "data/AlMgCu/data/sys.4223", + "data/AlMgCu/data/sys.4224", + "data/AlMgCu/data/sys.4225", + "data/AlMgCu/data/sys.4226", + "data/AlMgCu/data/sys.4227", + "data/AlMgCu/data/sys.4229", + "data/AlMgCu/data/sys.423", + "data/AlMgCu/data/sys.4230", + "data/AlMgCu/data/sys.4231", + "data/AlMgCu/data/sys.4232", + "data/AlMgCu/data/sys.4233", + "data/AlMgCu/data/sys.4234", + "data/AlMgCu/data/sys.4235", + "data/AlMgCu/data/sys.4236", + "data/AlMgCu/data/sys.4237", + "data/AlMgCu/data/sys.4238", + "data/AlMgCu/data/sys.4239", + "data/AlMgCu/data/sys.424", + "data/AlMgCu/data/sys.4240", + "data/AlMgCu/data/sys.4241", + "data/AlMgCu/data/sys.4242", + "data/AlMgCu/data/sys.4244", + "data/AlMgCu/data/sys.4245", + "data/AlMgCu/data/sys.4246", + "data/AlMgCu/data/sys.4247", + "data/AlMgCu/data/sys.4248", + "data/AlMgCu/data/sys.4249", + "data/AlMgCu/data/sys.425", + "data/AlMgCu/data/sys.4250", + "data/AlMgCu/data/sys.4251", + "data/AlMgCu/data/sys.4252", + "data/AlMgCu/data/sys.4253", + "data/AlMgCu/data/sys.4254", + "data/AlMgCu/data/sys.4255", + "data/AlMgCu/data/sys.4256", + "data/AlMgCu/data/sys.4257", + "data/AlMgCu/data/sys.4258", + "data/AlMgCu/data/sys.4259", + "data/AlMgCu/data/sys.426", + "data/AlMgCu/data/sys.4260", + "data/AlMgCu/data/sys.4261", + "data/AlMgCu/data/sys.4262", + "data/AlMgCu/data/sys.4263", + "data/AlMgCu/data/sys.4264", + "data/AlMgCu/data/sys.4266", + "data/AlMgCu/data/sys.4267", + "data/AlMgCu/data/sys.4268", + "data/AlMgCu/data/sys.4269", + "data/AlMgCu/data/sys.4270", + "data/AlMgCu/data/sys.4271", + "data/AlMgCu/data/sys.4272", + "data/AlMgCu/data/sys.4273", + "data/AlMgCu/data/sys.4274", + "data/AlMgCu/data/sys.4275", + "data/AlMgCu/data/sys.4277", + "data/AlMgCu/data/sys.4278", + "data/AlMgCu/data/sys.4279", + "data/AlMgCu/data/sys.4280", + "data/AlMgCu/data/sys.4282", + "data/AlMgCu/data/sys.4283", + "data/AlMgCu/data/sys.4284", + "data/AlMgCu/data/sys.4286", + "data/AlMgCu/data/sys.4287", + "data/AlMgCu/data/sys.4288", + "data/AlMgCu/data/sys.4289", + "data/AlMgCu/data/sys.429", + "data/AlMgCu/data/sys.4290", + "data/AlMgCu/data/sys.4291", + "data/AlMgCu/data/sys.4292", + "data/AlMgCu/data/sys.4293", + "data/AlMgCu/data/sys.4294", + "data/AlMgCu/data/sys.4295", + "data/AlMgCu/data/sys.4296", + "data/AlMgCu/data/sys.4298", + "data/AlMgCu/data/sys.430", + "data/AlMgCu/data/sys.4300", + "data/AlMgCu/data/sys.4301", + "data/AlMgCu/data/sys.4302", + "data/AlMgCu/data/sys.4303", + "data/AlMgCu/data/sys.4305", + "data/AlMgCu/data/sys.4307", + "data/AlMgCu/data/sys.4308", + "data/AlMgCu/data/sys.4310", + "data/AlMgCu/data/sys.4311", + "data/AlMgCu/data/sys.4312", + "data/AlMgCu/data/sys.4313", + "data/AlMgCu/data/sys.4314", + "data/AlMgCu/data/sys.4315", + "data/AlMgCu/data/sys.4316", + "data/AlMgCu/data/sys.4317", + "data/AlMgCu/data/sys.4318", + "data/AlMgCu/data/sys.4319", + "data/AlMgCu/data/sys.432", + "data/AlMgCu/data/sys.4322", + "data/AlMgCu/data/sys.4323", + "data/AlMgCu/data/sys.4324", + "data/AlMgCu/data/sys.4325", + "data/AlMgCu/data/sys.4326", + "data/AlMgCu/data/sys.4327", + "data/AlMgCu/data/sys.4328", + "data/AlMgCu/data/sys.4329", + "data/AlMgCu/data/sys.433", + "data/AlMgCu/data/sys.4330", + "data/AlMgCu/data/sys.4332", + "data/AlMgCu/data/sys.4333", + "data/AlMgCu/data/sys.4334", + "data/AlMgCu/data/sys.4336", + "data/AlMgCu/data/sys.4337", + "data/AlMgCu/data/sys.4338", + "data/AlMgCu/data/sys.434", + "data/AlMgCu/data/sys.4340", + "data/AlMgCu/data/sys.4341", + "data/AlMgCu/data/sys.4342", + "data/AlMgCu/data/sys.4343", + "data/AlMgCu/data/sys.4344", + "data/AlMgCu/data/sys.4345", + "data/AlMgCu/data/sys.4346", + "data/AlMgCu/data/sys.4348", + "data/AlMgCu/data/sys.4349", + "data/AlMgCu/data/sys.435", + "data/AlMgCu/data/sys.4350", + "data/AlMgCu/data/sys.4352", + "data/AlMgCu/data/sys.4353", + "data/AlMgCu/data/sys.4354", + "data/AlMgCu/data/sys.4355", + "data/AlMgCu/data/sys.4356", + "data/AlMgCu/data/sys.4358", + "data/AlMgCu/data/sys.436", + "data/AlMgCu/data/sys.4360", + "data/AlMgCu/data/sys.4361", + "data/AlMgCu/data/sys.4362", + "data/AlMgCu/data/sys.4364", + "data/AlMgCu/data/sys.4365", + "data/AlMgCu/data/sys.4366", + "data/AlMgCu/data/sys.437", + "data/AlMgCu/data/sys.4370", + "data/AlMgCu/data/sys.4371", + "data/AlMgCu/data/sys.4372", + "data/AlMgCu/data/sys.4373", + "data/AlMgCu/data/sys.4374", + "data/AlMgCu/data/sys.4375", + "data/AlMgCu/data/sys.4376", + "data/AlMgCu/data/sys.4377", + "data/AlMgCu/data/sys.4378", + "data/AlMgCu/data/sys.438", + "data/AlMgCu/data/sys.4381", + "data/AlMgCu/data/sys.4382", + "data/AlMgCu/data/sys.4385", + "data/AlMgCu/data/sys.4386", + "data/AlMgCu/data/sys.4387", + "data/AlMgCu/data/sys.4388", + "data/AlMgCu/data/sys.4389", + "data/AlMgCu/data/sys.439", + "data/AlMgCu/data/sys.4390", + "data/AlMgCu/data/sys.4392", + "data/AlMgCu/data/sys.4393", + "data/AlMgCu/data/sys.4394", + "data/AlMgCu/data/sys.4395", + "data/AlMgCu/data/sys.4396", + "data/AlMgCu/data/sys.4398", + "data/AlMgCu/data/sys.440", + "data/AlMgCu/data/sys.4402", + "data/AlMgCu/data/sys.4404", + "data/AlMgCu/data/sys.4406", + "data/AlMgCu/data/sys.4408", + "data/AlMgCu/data/sys.4409", + "data/AlMgCu/data/sys.441", + "data/AlMgCu/data/sys.4410", + "data/AlMgCu/data/sys.4411", + "data/AlMgCu/data/sys.4412", + "data/AlMgCu/data/sys.4413", + "data/AlMgCu/data/sys.4414", + "data/AlMgCu/data/sys.4415", + "data/AlMgCu/data/sys.4416", + "data/AlMgCu/data/sys.4417", + "data/AlMgCu/data/sys.4419", + "data/AlMgCu/data/sys.442", + "data/AlMgCu/data/sys.4420", + "data/AlMgCu/data/sys.4422", + "data/AlMgCu/data/sys.4423", + "data/AlMgCu/data/sys.4425", + "data/AlMgCu/data/sys.4426", + "data/AlMgCu/data/sys.4427", + "data/AlMgCu/data/sys.4428", + "data/AlMgCu/data/sys.443", + "data/AlMgCu/data/sys.4430", + "data/AlMgCu/data/sys.4431", + "data/AlMgCu/data/sys.4432", + "data/AlMgCu/data/sys.4433", + "data/AlMgCu/data/sys.4436", + "data/AlMgCu/data/sys.4438", + "data/AlMgCu/data/sys.4439", + "data/AlMgCu/data/sys.444", + "data/AlMgCu/data/sys.4440", + "data/AlMgCu/data/sys.4441", + "data/AlMgCu/data/sys.4442", + "data/AlMgCu/data/sys.4443", + "data/AlMgCu/data/sys.4446", + "data/AlMgCu/data/sys.4447", + "data/AlMgCu/data/sys.4448", + "data/AlMgCu/data/sys.445", + "data/AlMgCu/data/sys.4450", + "data/AlMgCu/data/sys.4451", + "data/AlMgCu/data/sys.4452", + "data/AlMgCu/data/sys.4453", + "data/AlMgCu/data/sys.4454", + "data/AlMgCu/data/sys.4455", + "data/AlMgCu/data/sys.4456", + "data/AlMgCu/data/sys.4457", + "data/AlMgCu/data/sys.4458", + "data/AlMgCu/data/sys.4459", + "data/AlMgCu/data/sys.4460", + "data/AlMgCu/data/sys.4462", + "data/AlMgCu/data/sys.4464", + "data/AlMgCu/data/sys.4465", + "data/AlMgCu/data/sys.447", + "data/AlMgCu/data/sys.4470", + "data/AlMgCu/data/sys.4471", + "data/AlMgCu/data/sys.4472", + "data/AlMgCu/data/sys.4474", + "data/AlMgCu/data/sys.4475", + "data/AlMgCu/data/sys.4476", + "data/AlMgCu/data/sys.4479", + "data/AlMgCu/data/sys.448", + "data/AlMgCu/data/sys.4480", + "data/AlMgCu/data/sys.4481", + "data/AlMgCu/data/sys.4482", + "data/AlMgCu/data/sys.4483", + "data/AlMgCu/data/sys.4484", + "data/AlMgCu/data/sys.4485", + "data/AlMgCu/data/sys.4486", + "data/AlMgCu/data/sys.4488", + "data/AlMgCu/data/sys.449", + "data/AlMgCu/data/sys.4490", + "data/AlMgCu/data/sys.4491", + "data/AlMgCu/data/sys.4492", + "data/AlMgCu/data/sys.4493", + "data/AlMgCu/data/sys.4494", + "data/AlMgCu/data/sys.4495", + "data/AlMgCu/data/sys.4496", + "data/AlMgCu/data/sys.4497", + "data/AlMgCu/data/sys.4498", + "data/AlMgCu/data/sys.4499", + "data/AlMgCu/data/sys.450", + "data/AlMgCu/data/sys.4500", + "data/AlMgCu/data/sys.4501", + "data/AlMgCu/data/sys.4502", + "data/AlMgCu/data/sys.4503", + "data/AlMgCu/data/sys.4505", + "data/AlMgCu/data/sys.4506", + "data/AlMgCu/data/sys.4507", + "data/AlMgCu/data/sys.4509", + "data/AlMgCu/data/sys.451", + "data/AlMgCu/data/sys.4510", + "data/AlMgCu/data/sys.4511", + "data/AlMgCu/data/sys.4512", + "data/AlMgCu/data/sys.4513", + "data/AlMgCu/data/sys.4514", + "data/AlMgCu/data/sys.4516", + "data/AlMgCu/data/sys.4517", + "data/AlMgCu/data/sys.4519", + "data/AlMgCu/data/sys.452", + "data/AlMgCu/data/sys.4520", + "data/AlMgCu/data/sys.4521", + "data/AlMgCu/data/sys.4522", + "data/AlMgCu/data/sys.4523", + "data/AlMgCu/data/sys.4524", + "data/AlMgCu/data/sys.4525", + "data/AlMgCu/data/sys.4526", + "data/AlMgCu/data/sys.4528", + "data/AlMgCu/data/sys.4529", + "data/AlMgCu/data/sys.453", + "data/AlMgCu/data/sys.4530", + "data/AlMgCu/data/sys.4531", + "data/AlMgCu/data/sys.4532", + "data/AlMgCu/data/sys.4535", + "data/AlMgCu/data/sys.4536", + "data/AlMgCu/data/sys.4537", + "data/AlMgCu/data/sys.4538", + "data/AlMgCu/data/sys.4539", + "data/AlMgCu/data/sys.454", + "data/AlMgCu/data/sys.4540", + "data/AlMgCu/data/sys.4541", + "data/AlMgCu/data/sys.4542", + "data/AlMgCu/data/sys.4543", + "data/AlMgCu/data/sys.4544", + "data/AlMgCu/data/sys.4545", + "data/AlMgCu/data/sys.4546", + "data/AlMgCu/data/sys.4547", + "data/AlMgCu/data/sys.4549", + "data/AlMgCu/data/sys.455", + "data/AlMgCu/data/sys.4550", + "data/AlMgCu/data/sys.4551", + "data/AlMgCu/data/sys.4553", + "data/AlMgCu/data/sys.4554", + "data/AlMgCu/data/sys.4555", + "data/AlMgCu/data/sys.4556", + "data/AlMgCu/data/sys.4557", + "data/AlMgCu/data/sys.4559", + "data/AlMgCu/data/sys.456", + "data/AlMgCu/data/sys.4560", + "data/AlMgCu/data/sys.4561", + "data/AlMgCu/data/sys.4562", + "data/AlMgCu/data/sys.4563", + "data/AlMgCu/data/sys.4564", + "data/AlMgCu/data/sys.4565", + "data/AlMgCu/data/sys.4566", + "data/AlMgCu/data/sys.4567", + "data/AlMgCu/data/sys.4568", + "data/AlMgCu/data/sys.4569", + "data/AlMgCu/data/sys.457", + "data/AlMgCu/data/sys.4570", + "data/AlMgCu/data/sys.4571", + "data/AlMgCu/data/sys.4572", + "data/AlMgCu/data/sys.4573", + "data/AlMgCu/data/sys.4574", + "data/AlMgCu/data/sys.4575", + "data/AlMgCu/data/sys.4576", + "data/AlMgCu/data/sys.4577", + "data/AlMgCu/data/sys.4578", + "data/AlMgCu/data/sys.4579", + "data/AlMgCu/data/sys.458", + "data/AlMgCu/data/sys.4580", + "data/AlMgCu/data/sys.4581", + "data/AlMgCu/data/sys.4582", + "data/AlMgCu/data/sys.4584", + "data/AlMgCu/data/sys.4585", + "data/AlMgCu/data/sys.4587", + "data/AlMgCu/data/sys.4588", + "data/AlMgCu/data/sys.4589", + "data/AlMgCu/data/sys.459", + "data/AlMgCu/data/sys.4590", + "data/AlMgCu/data/sys.4591", + "data/AlMgCu/data/sys.4593", + "data/AlMgCu/data/sys.4594", + "data/AlMgCu/data/sys.4596", + "data/AlMgCu/data/sys.4598", + "data/AlMgCu/data/sys.460", + "data/AlMgCu/data/sys.4600", + "data/AlMgCu/data/sys.4602", + "data/AlMgCu/data/sys.4604", + "data/AlMgCu/data/sys.4606", + "data/AlMgCu/data/sys.4608", + "data/AlMgCu/data/sys.461", + "data/AlMgCu/data/sys.4610", + "data/AlMgCu/data/sys.4612", + "data/AlMgCu/data/sys.4614", + "data/AlMgCu/data/sys.4616", + "data/AlMgCu/data/sys.4618", + "data/AlMgCu/data/sys.462", + "data/AlMgCu/data/sys.4620", + "data/AlMgCu/data/sys.4622", + "data/AlMgCu/data/sys.4624", + "data/AlMgCu/data/sys.463", + "data/AlMgCu/data/sys.4635", + "data/AlMgCu/data/sys.464", + "data/AlMgCu/data/sys.4642", + "data/AlMgCu/data/sys.4643", + "data/AlMgCu/data/sys.4648", + "data/AlMgCu/data/sys.4649", + "data/AlMgCu/data/sys.4658", + "data/AlMgCu/data/sys.466", + "data/AlMgCu/data/sys.4666", + "data/AlMgCu/data/sys.467", + "data/AlMgCu/data/sys.4670", + "data/AlMgCu/data/sys.4674", + "data/AlMgCu/data/sys.468", + "data/AlMgCu/data/sys.4681", + "data/AlMgCu/data/sys.4686", + "data/AlMgCu/data/sys.4687", + "data/AlMgCu/data/sys.4688", + "data/AlMgCu/data/sys.4689", + "data/AlMgCu/data/sys.469", + "data/AlMgCu/data/sys.4690", + "data/AlMgCu/data/sys.4691", + "data/AlMgCu/data/sys.4692", + "data/AlMgCu/data/sys.4693", + "data/AlMgCu/data/sys.4694", + "data/AlMgCu/data/sys.4695", + "data/AlMgCu/data/sys.4696", + "data/AlMgCu/data/sys.4697", + "data/AlMgCu/data/sys.4698", + "data/AlMgCu/data/sys.4699", + "data/AlMgCu/data/sys.470", + "data/AlMgCu/data/sys.4700", + "data/AlMgCu/data/sys.4701", + "data/AlMgCu/data/sys.4703", + "data/AlMgCu/data/sys.4704", + "data/AlMgCu/data/sys.4705", + "data/AlMgCu/data/sys.4707", + "data/AlMgCu/data/sys.4708", + "data/AlMgCu/data/sys.4709", + "data/AlMgCu/data/sys.471", + "data/AlMgCu/data/sys.4710", + "data/AlMgCu/data/sys.4711", + "data/AlMgCu/data/sys.4712", + "data/AlMgCu/data/sys.4713", + "data/AlMgCu/data/sys.4714", + "data/AlMgCu/data/sys.4715", + "data/AlMgCu/data/sys.4716", + "data/AlMgCu/data/sys.4717", + "data/AlMgCu/data/sys.4718", + "data/AlMgCu/data/sys.4719", + "data/AlMgCu/data/sys.472", + "data/AlMgCu/data/sys.4720", + "data/AlMgCu/data/sys.4721", + "data/AlMgCu/data/sys.4722", + "data/AlMgCu/data/sys.4723", + "data/AlMgCu/data/sys.4725", + "data/AlMgCu/data/sys.4726", + "data/AlMgCu/data/sys.4727", + "data/AlMgCu/data/sys.4728", + "data/AlMgCu/data/sys.473", + "data/AlMgCu/data/sys.4730", + "data/AlMgCu/data/sys.4731", + "data/AlMgCu/data/sys.4732", + "data/AlMgCu/data/sys.4733", + "data/AlMgCu/data/sys.4734", + "data/AlMgCu/data/sys.4735", + "data/AlMgCu/data/sys.4736", + "data/AlMgCu/data/sys.4737", + "data/AlMgCu/data/sys.4738", + "data/AlMgCu/data/sys.4739", + "data/AlMgCu/data/sys.4740", + "data/AlMgCu/data/sys.4741", + "data/AlMgCu/data/sys.4742", + "data/AlMgCu/data/sys.4743", + "data/AlMgCu/data/sys.4744", + "data/AlMgCu/data/sys.4747", + "data/AlMgCu/data/sys.4748", + "data/AlMgCu/data/sys.475", + "data/AlMgCu/data/sys.4752", + "data/AlMgCu/data/sys.4753", + "data/AlMgCu/data/sys.4754", + "data/AlMgCu/data/sys.476", + "data/AlMgCu/data/sys.4762", + "data/AlMgCu/data/sys.4763", + "data/AlMgCu/data/sys.4769", + "data/AlMgCu/data/sys.477", + "data/AlMgCu/data/sys.4771", + "data/AlMgCu/data/sys.4772", + "data/AlMgCu/data/sys.4777", + "data/AlMgCu/data/sys.4778", + "data/AlMgCu/data/sys.4779", + "data/AlMgCu/data/sys.478", + "data/AlMgCu/data/sys.4786", + "data/AlMgCu/data/sys.479", + "data/AlMgCu/data/sys.4790", + "data/AlMgCu/data/sys.4792", + "data/AlMgCu/data/sys.4793", + "data/AlMgCu/data/sys.4794", + "data/AlMgCu/data/sys.4798", + "data/AlMgCu/data/sys.480", + "data/AlMgCu/data/sys.4800", + "data/AlMgCu/data/sys.4802", + "data/AlMgCu/data/sys.4804", + "data/AlMgCu/data/sys.481", + "data/AlMgCu/data/sys.4810", + "data/AlMgCu/data/sys.4818", + "data/AlMgCu/data/sys.482", + "data/AlMgCu/data/sys.4826", + "data/AlMgCu/data/sys.483", + "data/AlMgCu/data/sys.4834", + "data/AlMgCu/data/sys.484", + "data/AlMgCu/data/sys.4843", + "data/AlMgCu/data/sys.4844", + "data/AlMgCu/data/sys.4848", + "data/AlMgCu/data/sys.4849", + "data/AlMgCu/data/sys.485", + "data/AlMgCu/data/sys.4850", + "data/AlMgCu/data/sys.4851", + "data/AlMgCu/data/sys.4857", + "data/AlMgCu/data/sys.4858", + "data/AlMgCu/data/sys.486", + "data/AlMgCu/data/sys.4872", + "data/AlMgCu/data/sys.4874", + "data/AlMgCu/data/sys.4878", + "data/AlMgCu/data/sys.488", + "data/AlMgCu/data/sys.4880", + "data/AlMgCu/data/sys.4882", + "data/AlMgCu/data/sys.4888", + "data/AlMgCu/data/sys.489", + "data/AlMgCu/data/sys.4898", + "data/AlMgCu/data/sys.490", + "data/AlMgCu/data/sys.4904", + "data/AlMgCu/data/sys.4905", + "data/AlMgCu/data/sys.4906", + "data/AlMgCu/data/sys.4907", + "data/AlMgCu/data/sys.4908", + "data/AlMgCu/data/sys.491", + "data/AlMgCu/data/sys.4913", + "data/AlMgCu/data/sys.4914", + "data/AlMgCu/data/sys.492", + "data/AlMgCu/data/sys.4920", + "data/AlMgCu/data/sys.4922", + "data/AlMgCu/data/sys.4924", + "data/AlMgCu/data/sys.493", + "data/AlMgCu/data/sys.4930", + "data/AlMgCu/data/sys.4932", + "data/AlMgCu/data/sys.4938", + "data/AlMgCu/data/sys.494", + "data/AlMgCu/data/sys.4940", + "data/AlMgCu/data/sys.4945", + "data/AlMgCu/data/sys.4946", + "data/AlMgCu/data/sys.495", + "data/AlMgCu/data/sys.4952", + "data/AlMgCu/data/sys.4953", + "data/AlMgCu/data/sys.496", + "data/AlMgCu/data/sys.4960", + "data/AlMgCu/data/sys.4967", + "data/AlMgCu/data/sys.497", + "data/AlMgCu/data/sys.4970", + "data/AlMgCu/data/sys.4971", + "data/AlMgCu/data/sys.4972", + "data/AlMgCu/data/sys.4973", + "data/AlMgCu/data/sys.4974", + "data/AlMgCu/data/sys.4976", + "data/AlMgCu/data/sys.4977", + "data/AlMgCu/data/sys.4978", + "data/AlMgCu/data/sys.4979", + "data/AlMgCu/data/sys.498", + "data/AlMgCu/data/sys.4980", + "data/AlMgCu/data/sys.4981", + "data/AlMgCu/data/sys.4982", + "data/AlMgCu/data/sys.4984", + "data/AlMgCu/data/sys.4985", + "data/AlMgCu/data/sys.4987", + "data/AlMgCu/data/sys.4988", + "data/AlMgCu/data/sys.499", + "data/AlMgCu/data/sys.4990", + "data/AlMgCu/data/sys.4992", + "data/AlMgCu/data/sys.4993", + "data/AlMgCu/data/sys.4994", + "data/AlMgCu/data/sys.4996", + "data/AlMgCu/data/sys.4998", + "data/AlMgCu/data/sys.500", + "data/AlMgCu/data/sys.5000", + "data/AlMgCu/data/sys.5001", + "data/AlMgCu/data/sys.5002", + "data/AlMgCu/data/sys.501", + "data/AlMgCu/data/sys.5010", + "data/AlMgCu/data/sys.5017", + "data/AlMgCu/data/sys.5018", + "data/AlMgCu/data/sys.5019", + "data/AlMgCu/data/sys.502", + "data/AlMgCu/data/sys.5025", + "data/AlMgCu/data/sys.5026", + "data/AlMgCu/data/sys.5027", + "data/AlMgCu/data/sys.5034", + "data/AlMgCu/data/sys.504", + "data/AlMgCu/data/sys.5043", + "data/AlMgCu/data/sys.5044", + "data/AlMgCu/data/sys.505", + "data/AlMgCu/data/sys.5050", + "data/AlMgCu/data/sys.5056", + "data/AlMgCu/data/sys.5058", + "data/AlMgCu/data/sys.506", + "data/AlMgCu/data/sys.5066", + "data/AlMgCu/data/sys.507", + "data/AlMgCu/data/sys.5074", + "data/AlMgCu/data/sys.5075", + "data/AlMgCu/data/sys.508", + "data/AlMgCu/data/sys.5083", + "data/AlMgCu/data/sys.509", + "data/AlMgCu/data/sys.5090", + "data/AlMgCu/data/sys.5091", + "data/AlMgCu/data/sys.5098", + "data/AlMgCu/data/sys.510", + "data/AlMgCu/data/sys.5100", + "data/AlMgCu/data/sys.5104", + "data/AlMgCu/data/sys.5105", + "data/AlMgCu/data/sys.5106", + "data/AlMgCu/data/sys.511", + "data/AlMgCu/data/sys.5112", + "data/AlMgCu/data/sys.5114", + "data/AlMgCu/data/sys.512", + "data/AlMgCu/data/sys.5122", + "data/AlMgCu/data/sys.5124", + "data/AlMgCu/data/sys.513", + "data/AlMgCu/data/sys.5131", + "data/AlMgCu/data/sys.514", + "data/AlMgCu/data/sys.5146", + "data/AlMgCu/data/sys.5147", + "data/AlMgCu/data/sys.515", + "data/AlMgCu/data/sys.5154", + "data/AlMgCu/data/sys.5156", + "data/AlMgCu/data/sys.516", + "data/AlMgCu/data/sys.5164", + "data/AlMgCu/data/sys.5168", + "data/AlMgCu/data/sys.517", + "data/AlMgCu/data/sys.5170", + "data/AlMgCu/data/sys.5177", + "data/AlMgCu/data/sys.5178", + "data/AlMgCu/data/sys.518", + "data/AlMgCu/data/sys.5180", + "data/AlMgCu/data/sys.5186", + "data/AlMgCu/data/sys.5187", + "data/AlMgCu/data/sys.519", + "data/AlMgCu/data/sys.5194", + "data/AlMgCu/data/sys.520", + "data/AlMgCu/data/sys.5208", + "data/AlMgCu/data/sys.521", + "data/AlMgCu/data/sys.5210", + "data/AlMgCu/data/sys.5211", + "data/AlMgCu/data/sys.5212", + "data/AlMgCu/data/sys.522", + "data/AlMgCu/data/sys.5220", + "data/AlMgCu/data/sys.5226", + "data/AlMgCu/data/sys.523", + "data/AlMgCu/data/sys.5233", + "data/AlMgCu/data/sys.5241", + "data/AlMgCu/data/sys.5249", + "data/AlMgCu/data/sys.525", + "data/AlMgCu/data/sys.526", + "data/AlMgCu/data/sys.5268", + "data/AlMgCu/data/sys.528", + "data/AlMgCu/data/sys.5282", + "data/AlMgCu/data/sys.529", + "data/AlMgCu/data/sys.5290", + "data/AlMgCu/data/sys.5293", + "data/AlMgCu/data/sys.5299", + "data/AlMgCu/data/sys.530", + "data/AlMgCu/data/sys.531", + "data/AlMgCu/data/sys.5313", + "data/AlMgCu/data/sys.5316", + "data/AlMgCu/data/sys.532", + "data/AlMgCu/data/sys.533", + "data/AlMgCu/data/sys.534", + "data/AlMgCu/data/sys.535", + "data/AlMgCu/data/sys.536", + "data/AlMgCu/data/sys.537", + "data/AlMgCu/data/sys.538", + "data/AlMgCu/data/sys.5385", + "data/AlMgCu/data/sys.5388", + "data/AlMgCu/data/sys.539", + "data/AlMgCu/data/sys.540", + "data/AlMgCu/data/sys.541", + "data/AlMgCu/data/sys.5410", + "data/AlMgCu/data/sys.5418", + "data/AlMgCu/data/sys.542", + "data/AlMgCu/data/sys.543", + "data/AlMgCu/data/sys.544", + "data/AlMgCu/data/sys.5443", + "data/AlMgCu/data/sys.545", + "data/AlMgCu/data/sys.5450", + "data/AlMgCu/data/sys.546", + "data/AlMgCu/data/sys.547", + "data/AlMgCu/data/sys.548", + "data/AlMgCu/data/sys.549", + "data/AlMgCu/data/sys.550", + "data/AlMgCu/data/sys.5506", + "data/AlMgCu/data/sys.551", + "data/AlMgCu/data/sys.552", + "data/AlMgCu/data/sys.553", + "data/AlMgCu/data/sys.554", + "data/AlMgCu/data/sys.555", + "data/AlMgCu/data/sys.556", + "data/AlMgCu/data/sys.557", + "data/AlMgCu/data/sys.5574", + "data/AlMgCu/data/sys.558", + "data/AlMgCu/data/sys.5580", + "data/AlMgCu/data/sys.559", + "data/AlMgCu/data/sys.560", + "data/AlMgCu/data/sys.561", + "data/AlMgCu/data/sys.562", + "data/AlMgCu/data/sys.563", + "data/AlMgCu/data/sys.565", + "data/AlMgCu/data/sys.566", + "data/AlMgCu/data/sys.567", + "data/AlMgCu/data/sys.569", + "data/AlMgCu/data/sys.570", + "data/AlMgCu/data/sys.571", + "data/AlMgCu/data/sys.572", + "data/AlMgCu/data/sys.573", + "data/AlMgCu/data/sys.574", + "data/AlMgCu/data/sys.575", + "data/AlMgCu/data/sys.576", + "data/AlMgCu/data/sys.577", + "data/AlMgCu/data/sys.578", + "data/AlMgCu/data/sys.579", + "data/AlMgCu/data/sys.580", + "data/AlMgCu/data/sys.581", + "data/AlMgCu/data/sys.582", + "data/AlMgCu/data/sys.583", + "data/AlMgCu/data/sys.584", + "data/AlMgCu/data/sys.5848", + "data/AlMgCu/data/sys.585", + "data/AlMgCu/data/sys.586", + "data/AlMgCu/data/sys.587", + "data/AlMgCu/data/sys.589", + "data/AlMgCu/data/sys.590", + "data/AlMgCu/data/sys.592", + "data/AlMgCu/data/sys.593", + "data/AlMgCu/data/sys.594", + "data/AlMgCu/data/sys.5943", + "data/AlMgCu/data/sys.5944", + "data/AlMgCu/data/sys.5945", + "data/AlMgCu/data/sys.5946", + "data/AlMgCu/data/sys.5947", + "data/AlMgCu/data/sys.5948", + "data/AlMgCu/data/sys.5949", + "data/AlMgCu/data/sys.595", + "data/AlMgCu/data/sys.5950", + "data/AlMgCu/data/sys.5951", + "data/AlMgCu/data/sys.5953", + "data/AlMgCu/data/sys.5954", + "data/AlMgCu/data/sys.5955", + "data/AlMgCu/data/sys.5956", + "data/AlMgCu/data/sys.5957", + "data/AlMgCu/data/sys.5958", + "data/AlMgCu/data/sys.5959", + "data/AlMgCu/data/sys.596", + "data/AlMgCu/data/sys.5960", + "data/AlMgCu/data/sys.5961", + "data/AlMgCu/data/sys.5962", + "data/AlMgCu/data/sys.5963", + "data/AlMgCu/data/sys.5964", + "data/AlMgCu/data/sys.5965", + "data/AlMgCu/data/sys.5967", + "data/AlMgCu/data/sys.5968", + "data/AlMgCu/data/sys.5969", + "data/AlMgCu/data/sys.597", + "data/AlMgCu/data/sys.5970", + "data/AlMgCu/data/sys.5971", + "data/AlMgCu/data/sys.5972", + "data/AlMgCu/data/sys.5973", + "data/AlMgCu/data/sys.5975", + "data/AlMgCu/data/sys.5976", + "data/AlMgCu/data/sys.5977", + "data/AlMgCu/data/sys.5979", + "data/AlMgCu/data/sys.598", + "data/AlMgCu/data/sys.5980", + "data/AlMgCu/data/sys.5981", + "data/AlMgCu/data/sys.5983", + "data/AlMgCu/data/sys.5984", + "data/AlMgCu/data/sys.5985", + "data/AlMgCu/data/sys.5987", + "data/AlMgCu/data/sys.5988", + "data/AlMgCu/data/sys.5989", + "data/AlMgCu/data/sys.599", + "data/AlMgCu/data/sys.5990", + "data/AlMgCu/data/sys.5991", + "data/AlMgCu/data/sys.5992", + "data/AlMgCu/data/sys.5993", + "data/AlMgCu/data/sys.5994", + "data/AlMgCu/data/sys.5995", + "data/AlMgCu/data/sys.5997", + "data/AlMgCu/data/sys.5998", + "data/AlMgCu/data/sys.5999", + "data/AlMgCu/data/sys.600", + "data/AlMgCu/data/sys.6000", + "data/AlMgCu/data/sys.6001", + "data/AlMgCu/data/sys.6004", + "data/AlMgCu/data/sys.6005", + "data/AlMgCu/data/sys.6006", + "data/AlMgCu/data/sys.6007", + "data/AlMgCu/data/sys.6008", + "data/AlMgCu/data/sys.6009", + "data/AlMgCu/data/sys.6010", + "data/AlMgCu/data/sys.6011", + "data/AlMgCu/data/sys.6012", + "data/AlMgCu/data/sys.6013", + "data/AlMgCu/data/sys.6014", + "data/AlMgCu/data/sys.6015", + "data/AlMgCu/data/sys.6016", + "data/AlMgCu/data/sys.6017", + "data/AlMgCu/data/sys.6018", + "data/AlMgCu/data/sys.6019", + "data/AlMgCu/data/sys.602", + "data/AlMgCu/data/sys.6021", + "data/AlMgCu/data/sys.6022", + "data/AlMgCu/data/sys.6023", + "data/AlMgCu/data/sys.6024", + "data/AlMgCu/data/sys.6025", + "data/AlMgCu/data/sys.6026", + "data/AlMgCu/data/sys.6027", + "data/AlMgCu/data/sys.6029", + "data/AlMgCu/data/sys.603", + "data/AlMgCu/data/sys.6030", + "data/AlMgCu/data/sys.6031", + "data/AlMgCu/data/sys.6032", + "data/AlMgCu/data/sys.6033", + "data/AlMgCu/data/sys.6034", + "data/AlMgCu/data/sys.6035", + "data/AlMgCu/data/sys.6036", + "data/AlMgCu/data/sys.6037", + "data/AlMgCu/data/sys.6038", + "data/AlMgCu/data/sys.604", + "data/AlMgCu/data/sys.6040", + "data/AlMgCu/data/sys.6042", + "data/AlMgCu/data/sys.6043", + "data/AlMgCu/data/sys.6044", + "data/AlMgCu/data/sys.6046", + "data/AlMgCu/data/sys.6047", + "data/AlMgCu/data/sys.6049", + "data/AlMgCu/data/sys.605", + "data/AlMgCu/data/sys.6050", + "data/AlMgCu/data/sys.6051", + "data/AlMgCu/data/sys.6052", + "data/AlMgCu/data/sys.6053", + "data/AlMgCu/data/sys.6054", + "data/AlMgCu/data/sys.6055", + "data/AlMgCu/data/sys.6056", + "data/AlMgCu/data/sys.6057", + "data/AlMgCu/data/sys.6058", + "data/AlMgCu/data/sys.6059", + "data/AlMgCu/data/sys.606", + "data/AlMgCu/data/sys.6060", + "data/AlMgCu/data/sys.6061", + "data/AlMgCu/data/sys.6062", + "data/AlMgCu/data/sys.6063", + "data/AlMgCu/data/sys.6064", + "data/AlMgCu/data/sys.6067", + "data/AlMgCu/data/sys.6068", + "data/AlMgCu/data/sys.6069", + "data/AlMgCu/data/sys.607", + "data/AlMgCu/data/sys.6070", + "data/AlMgCu/data/sys.6071", + "data/AlMgCu/data/sys.6072", + "data/AlMgCu/data/sys.6073", + "data/AlMgCu/data/sys.6074", + "data/AlMgCu/data/sys.6075", + "data/AlMgCu/data/sys.6076", + "data/AlMgCu/data/sys.6077", + "data/AlMgCu/data/sys.6078", + "data/AlMgCu/data/sys.6079", + "data/AlMgCu/data/sys.608", + "data/AlMgCu/data/sys.6081", + "data/AlMgCu/data/sys.6082", + "data/AlMgCu/data/sys.6083", + "data/AlMgCu/data/sys.6085", + "data/AlMgCu/data/sys.6087", + "data/AlMgCu/data/sys.6088", + "data/AlMgCu/data/sys.6089", + "data/AlMgCu/data/sys.609", + "data/AlMgCu/data/sys.6090", + "data/AlMgCu/data/sys.6091", + "data/AlMgCu/data/sys.6092", + "data/AlMgCu/data/sys.6093", + "data/AlMgCu/data/sys.6094", + "data/AlMgCu/data/sys.6095", + "data/AlMgCu/data/sys.6096", + "data/AlMgCu/data/sys.6097", + "data/AlMgCu/data/sys.6098", + "data/AlMgCu/data/sys.610", + "data/AlMgCu/data/sys.6100", + "data/AlMgCu/data/sys.6101", + "data/AlMgCu/data/sys.6103", + "data/AlMgCu/data/sys.6104", + "data/AlMgCu/data/sys.6106", + "data/AlMgCu/data/sys.6107", + "data/AlMgCu/data/sys.6108", + "data/AlMgCu/data/sys.6109", + "data/AlMgCu/data/sys.611", + "data/AlMgCu/data/sys.6110", + "data/AlMgCu/data/sys.6111", + "data/AlMgCu/data/sys.6112", + "data/AlMgCu/data/sys.6113", + "data/AlMgCu/data/sys.6114", + "data/AlMgCu/data/sys.6115", + "data/AlMgCu/data/sys.6116", + "data/AlMgCu/data/sys.6117", + "data/AlMgCu/data/sys.6118", + "data/AlMgCu/data/sys.6119", + "data/AlMgCu/data/sys.612", + "data/AlMgCu/data/sys.6120", + "data/AlMgCu/data/sys.6121", + "data/AlMgCu/data/sys.6123", + "data/AlMgCu/data/sys.6124", + "data/AlMgCu/data/sys.6125", + "data/AlMgCu/data/sys.6126", + "data/AlMgCu/data/sys.6127", + "data/AlMgCu/data/sys.6128", + "data/AlMgCu/data/sys.6129", + "data/AlMgCu/data/sys.613", + "data/AlMgCu/data/sys.6130", + "data/AlMgCu/data/sys.6131", + "data/AlMgCu/data/sys.6132", + "data/AlMgCu/data/sys.6133", + "data/AlMgCu/data/sys.6134", + "data/AlMgCu/data/sys.6135", + "data/AlMgCu/data/sys.6136", + "data/AlMgCu/data/sys.6137", + "data/AlMgCu/data/sys.6138", + "data/AlMgCu/data/sys.6139", + "data/AlMgCu/data/sys.614", + "data/AlMgCu/data/sys.6140", + "data/AlMgCu/data/sys.6141", + "data/AlMgCu/data/sys.6142", + "data/AlMgCu/data/sys.6143", + "data/AlMgCu/data/sys.6144", + "data/AlMgCu/data/sys.6145", + "data/AlMgCu/data/sys.6146", + "data/AlMgCu/data/sys.6147", + "data/AlMgCu/data/sys.6148", + "data/AlMgCu/data/sys.6149", + "data/AlMgCu/data/sys.615", + "data/AlMgCu/data/sys.6151", + "data/AlMgCu/data/sys.6154", + "data/AlMgCu/data/sys.6155", + "data/AlMgCu/data/sys.6156", + "data/AlMgCu/data/sys.6157", + "data/AlMgCu/data/sys.6158", + "data/AlMgCu/data/sys.6159", + "data/AlMgCu/data/sys.616", + "data/AlMgCu/data/sys.6160", + "data/AlMgCu/data/sys.6161", + "data/AlMgCu/data/sys.6162", + "data/AlMgCu/data/sys.6163", + "data/AlMgCu/data/sys.6164", + "data/AlMgCu/data/sys.6165", + "data/AlMgCu/data/sys.6166", + "data/AlMgCu/data/sys.6167", + "data/AlMgCu/data/sys.6168", + "data/AlMgCu/data/sys.6169", + "data/AlMgCu/data/sys.617", + "data/AlMgCu/data/sys.6170", + "data/AlMgCu/data/sys.6171", + "data/AlMgCu/data/sys.6172", + "data/AlMgCu/data/sys.6173", + "data/AlMgCu/data/sys.6174", + "data/AlMgCu/data/sys.6175", + "data/AlMgCu/data/sys.6176", + "data/AlMgCu/data/sys.6177", + "data/AlMgCu/data/sys.6178", + "data/AlMgCu/data/sys.6179", + "data/AlMgCu/data/sys.618", + "data/AlMgCu/data/sys.6180", + "data/AlMgCu/data/sys.6181", + "data/AlMgCu/data/sys.6182", + "data/AlMgCu/data/sys.6183", + "data/AlMgCu/data/sys.6185", + "data/AlMgCu/data/sys.6186", + "data/AlMgCu/data/sys.6187", + "data/AlMgCu/data/sys.6188", + "data/AlMgCu/data/sys.6189", + "data/AlMgCu/data/sys.619", + "data/AlMgCu/data/sys.6190", + "data/AlMgCu/data/sys.6191", + "data/AlMgCu/data/sys.6193", + "data/AlMgCu/data/sys.6194", + "data/AlMgCu/data/sys.6195", + "data/AlMgCu/data/sys.6196", + "data/AlMgCu/data/sys.6197", + "data/AlMgCu/data/sys.6198", + "data/AlMgCu/data/sys.6199", + "data/AlMgCu/data/sys.620", + "data/AlMgCu/data/sys.6200", + "data/AlMgCu/data/sys.6201", + "data/AlMgCu/data/sys.6202", + "data/AlMgCu/data/sys.6203", + "data/AlMgCu/data/sys.6204", + "data/AlMgCu/data/sys.6206", + "data/AlMgCu/data/sys.6207", + "data/AlMgCu/data/sys.6208", + "data/AlMgCu/data/sys.621", + "data/AlMgCu/data/sys.6210", + "data/AlMgCu/data/sys.6211", + "data/AlMgCu/data/sys.6212", + "data/AlMgCu/data/sys.6213", + "data/AlMgCu/data/sys.6215", + "data/AlMgCu/data/sys.6216", + "data/AlMgCu/data/sys.6217", + "data/AlMgCu/data/sys.6218", + "data/AlMgCu/data/sys.6219", + "data/AlMgCu/data/sys.622", + "data/AlMgCu/data/sys.6220", + "data/AlMgCu/data/sys.6221", + "data/AlMgCu/data/sys.6222", + "data/AlMgCu/data/sys.6223", + "data/AlMgCu/data/sys.6224", + "data/AlMgCu/data/sys.6225", + "data/AlMgCu/data/sys.6226", + "data/AlMgCu/data/sys.6227", + "data/AlMgCu/data/sys.6229", + "data/AlMgCu/data/sys.623", + "data/AlMgCu/data/sys.6230", + "data/AlMgCu/data/sys.6231", + "data/AlMgCu/data/sys.6232", + "data/AlMgCu/data/sys.6233", + "data/AlMgCu/data/sys.6235", + "data/AlMgCu/data/sys.6236", + "data/AlMgCu/data/sys.6237", + "data/AlMgCu/data/sys.6238", + "data/AlMgCu/data/sys.6239", + "data/AlMgCu/data/sys.624", + "data/AlMgCu/data/sys.6240", + "data/AlMgCu/data/sys.6241", + "data/AlMgCu/data/sys.6242", + "data/AlMgCu/data/sys.6243", + "data/AlMgCu/data/sys.6244", + "data/AlMgCu/data/sys.6245", + "data/AlMgCu/data/sys.6246", + "data/AlMgCu/data/sys.6247", + "data/AlMgCu/data/sys.6249", + "data/AlMgCu/data/sys.6250", + "data/AlMgCu/data/sys.6251", + "data/AlMgCu/data/sys.6252", + "data/AlMgCu/data/sys.6253", + "data/AlMgCu/data/sys.6254", + "data/AlMgCu/data/sys.6256", + "data/AlMgCu/data/sys.6257", + "data/AlMgCu/data/sys.6258", + "data/AlMgCu/data/sys.626", + "data/AlMgCu/data/sys.6260", + "data/AlMgCu/data/sys.6261", + "data/AlMgCu/data/sys.6262", + "data/AlMgCu/data/sys.6263", + "data/AlMgCu/data/sys.6264", + "data/AlMgCu/data/sys.6265", + "data/AlMgCu/data/sys.6266", + "data/AlMgCu/data/sys.6267", + "data/AlMgCu/data/sys.6268", + "data/AlMgCu/data/sys.6269", + "data/AlMgCu/data/sys.627", + "data/AlMgCu/data/sys.6271", + "data/AlMgCu/data/sys.6272", + "data/AlMgCu/data/sys.6273", + "data/AlMgCu/data/sys.6274", + "data/AlMgCu/data/sys.6275", + "data/AlMgCu/data/sys.6276", + "data/AlMgCu/data/sys.6277", + "data/AlMgCu/data/sys.6278", + "data/AlMgCu/data/sys.6279", + "data/AlMgCu/data/sys.628", + "data/AlMgCu/data/sys.6280", + "data/AlMgCu/data/sys.6282", + "data/AlMgCu/data/sys.6283", + "data/AlMgCu/data/sys.6284", + "data/AlMgCu/data/sys.6285", + "data/AlMgCu/data/sys.6286", + "data/AlMgCu/data/sys.6287", + "data/AlMgCu/data/sys.6288", + "data/AlMgCu/data/sys.6289", + "data/AlMgCu/data/sys.629", + "data/AlMgCu/data/sys.6290", + "data/AlMgCu/data/sys.6291", + "data/AlMgCu/data/sys.6292", + "data/AlMgCu/data/sys.6293", + "data/AlMgCu/data/sys.6295", + "data/AlMgCu/data/sys.6296", + "data/AlMgCu/data/sys.6298", + "data/AlMgCu/data/sys.630", + "data/AlMgCu/data/sys.6300", + "data/AlMgCu/data/sys.6301", + "data/AlMgCu/data/sys.6302", + "data/AlMgCu/data/sys.6303", + "data/AlMgCu/data/sys.6304", + "data/AlMgCu/data/sys.6305", + "data/AlMgCu/data/sys.6306", + "data/AlMgCu/data/sys.6308", + "data/AlMgCu/data/sys.6309", + "data/AlMgCu/data/sys.631", + "data/AlMgCu/data/sys.6310", + "data/AlMgCu/data/sys.6311", + "data/AlMgCu/data/sys.6312", + "data/AlMgCu/data/sys.6313", + "data/AlMgCu/data/sys.6314", + "data/AlMgCu/data/sys.6315", + "data/AlMgCu/data/sys.6316", + "data/AlMgCu/data/sys.6317", + "data/AlMgCu/data/sys.6318", + "data/AlMgCu/data/sys.6319", + "data/AlMgCu/data/sys.632", + "data/AlMgCu/data/sys.6320", + "data/AlMgCu/data/sys.6321", + "data/AlMgCu/data/sys.6322", + "data/AlMgCu/data/sys.6323", + "data/AlMgCu/data/sys.6324", + "data/AlMgCu/data/sys.6325", + "data/AlMgCu/data/sys.6326", + "data/AlMgCu/data/sys.6327", + "data/AlMgCu/data/sys.6328", + "data/AlMgCu/data/sys.6329", + "data/AlMgCu/data/sys.6331", + "data/AlMgCu/data/sys.6332", + "data/AlMgCu/data/sys.6333", + "data/AlMgCu/data/sys.6334", + "data/AlMgCu/data/sys.6335", + "data/AlMgCu/data/sys.6336", + "data/AlMgCu/data/sys.6337", + "data/AlMgCu/data/sys.6338", + "data/AlMgCu/data/sys.6339", + "data/AlMgCu/data/sys.634", + "data/AlMgCu/data/sys.6341", + "data/AlMgCu/data/sys.6342", + "data/AlMgCu/data/sys.6344", + "data/AlMgCu/data/sys.6345", + "data/AlMgCu/data/sys.6346", + "data/AlMgCu/data/sys.6347", + "data/AlMgCu/data/sys.6349", + "data/AlMgCu/data/sys.635", + "data/AlMgCu/data/sys.6350", + "data/AlMgCu/data/sys.6351", + "data/AlMgCu/data/sys.6354", + "data/AlMgCu/data/sys.6355", + "data/AlMgCu/data/sys.6356", + "data/AlMgCu/data/sys.6357", + "data/AlMgCu/data/sys.6358", + "data/AlMgCu/data/sys.6359", + "data/AlMgCu/data/sys.636", + "data/AlMgCu/data/sys.6360", + "data/AlMgCu/data/sys.6361", + "data/AlMgCu/data/sys.6362", + "data/AlMgCu/data/sys.6363", + "data/AlMgCu/data/sys.6364", + "data/AlMgCu/data/sys.6366", + "data/AlMgCu/data/sys.6367", + "data/AlMgCu/data/sys.6368", + "data/AlMgCu/data/sys.6369", + "data/AlMgCu/data/sys.637", + "data/AlMgCu/data/sys.6370", + "data/AlMgCu/data/sys.6371", + "data/AlMgCu/data/sys.6372", + "data/AlMgCu/data/sys.6373", + "data/AlMgCu/data/sys.6374", + "data/AlMgCu/data/sys.6375", + "data/AlMgCu/data/sys.6376", + "data/AlMgCu/data/sys.6377", + "data/AlMgCu/data/sys.6378", + "data/AlMgCu/data/sys.6379", + "data/AlMgCu/data/sys.638", + "data/AlMgCu/data/sys.6381", + "data/AlMgCu/data/sys.6382", + "data/AlMgCu/data/sys.6383", + "data/AlMgCu/data/sys.6384", + "data/AlMgCu/data/sys.6385", + "data/AlMgCu/data/sys.6386", + "data/AlMgCu/data/sys.6387", + "data/AlMgCu/data/sys.6388", + "data/AlMgCu/data/sys.6389", + "data/AlMgCu/data/sys.639", + "data/AlMgCu/data/sys.6390", + "data/AlMgCu/data/sys.6391", + "data/AlMgCu/data/sys.6392", + "data/AlMgCu/data/sys.6393", + "data/AlMgCu/data/sys.6394", + "data/AlMgCu/data/sys.6396", + "data/AlMgCu/data/sys.6397", + "data/AlMgCu/data/sys.6398", + "data/AlMgCu/data/sys.6399", + "data/AlMgCu/data/sys.640", + "data/AlMgCu/data/sys.6400", + "data/AlMgCu/data/sys.6401", + "data/AlMgCu/data/sys.6402", + "data/AlMgCu/data/sys.6403", + "data/AlMgCu/data/sys.6404", + "data/AlMgCu/data/sys.6405", + "data/AlMgCu/data/sys.6406", + "data/AlMgCu/data/sys.6408", + "data/AlMgCu/data/sys.6409", + "data/AlMgCu/data/sys.641", + "data/AlMgCu/data/sys.6410", + "data/AlMgCu/data/sys.6411", + "data/AlMgCu/data/sys.6413", + "data/AlMgCu/data/sys.6414", + "data/AlMgCu/data/sys.6416", + "data/AlMgCu/data/sys.6417", + "data/AlMgCu/data/sys.6418", + "data/AlMgCu/data/sys.6419", + "data/AlMgCu/data/sys.642", + "data/AlMgCu/data/sys.6421", + "data/AlMgCu/data/sys.6422", + "data/AlMgCu/data/sys.6423", + "data/AlMgCu/data/sys.6424", + "data/AlMgCu/data/sys.6425", + "data/AlMgCu/data/sys.6426", + "data/AlMgCu/data/sys.6428", + "data/AlMgCu/data/sys.6429", + "data/AlMgCu/data/sys.643", + "data/AlMgCu/data/sys.6430", + "data/AlMgCu/data/sys.6431", + "data/AlMgCu/data/sys.6432", + "data/AlMgCu/data/sys.6433", + "data/AlMgCu/data/sys.6434", + "data/AlMgCu/data/sys.6436", + "data/AlMgCu/data/sys.6437", + "data/AlMgCu/data/sys.6438", + "data/AlMgCu/data/sys.6439", + "data/AlMgCu/data/sys.644", + "data/AlMgCu/data/sys.6440", + "data/AlMgCu/data/sys.6441", + "data/AlMgCu/data/sys.6442", + "data/AlMgCu/data/sys.6443", + "data/AlMgCu/data/sys.6444", + "data/AlMgCu/data/sys.6445", + "data/AlMgCu/data/sys.6446", + "data/AlMgCu/data/sys.6447", + "data/AlMgCu/data/sys.6449", + "data/AlMgCu/data/sys.645", + "data/AlMgCu/data/sys.6450", + "data/AlMgCu/data/sys.6451", + "data/AlMgCu/data/sys.6452", + "data/AlMgCu/data/sys.6453", + "data/AlMgCu/data/sys.6454", + "data/AlMgCu/data/sys.6455", + "data/AlMgCu/data/sys.6456", + "data/AlMgCu/data/sys.6457", + "data/AlMgCu/data/sys.6460", + "data/AlMgCu/data/sys.6461", + "data/AlMgCu/data/sys.6462", + "data/AlMgCu/data/sys.6464", + "data/AlMgCu/data/sys.6465", + "data/AlMgCu/data/sys.6467", + "data/AlMgCu/data/sys.6468", + "data/AlMgCu/data/sys.6469", + "data/AlMgCu/data/sys.647", + "data/AlMgCu/data/sys.6471", + "data/AlMgCu/data/sys.6472", + "data/AlMgCu/data/sys.6474", + "data/AlMgCu/data/sys.6475", + "data/AlMgCu/data/sys.6477", + "data/AlMgCu/data/sys.6478", + "data/AlMgCu/data/sys.6479", + "data/AlMgCu/data/sys.648", + "data/AlMgCu/data/sys.6480", + "data/AlMgCu/data/sys.6481", + "data/AlMgCu/data/sys.6482", + "data/AlMgCu/data/sys.6483", + "data/AlMgCu/data/sys.6485", + "data/AlMgCu/data/sys.6486", + "data/AlMgCu/data/sys.6487", + "data/AlMgCu/data/sys.6488", + "data/AlMgCu/data/sys.6489", + "data/AlMgCu/data/sys.649", + "data/AlMgCu/data/sys.6490", + "data/AlMgCu/data/sys.6491", + "data/AlMgCu/data/sys.6492", + "data/AlMgCu/data/sys.6493", + "data/AlMgCu/data/sys.6494", + "data/AlMgCu/data/sys.6495", + "data/AlMgCu/data/sys.6497", + "data/AlMgCu/data/sys.6498", + "data/AlMgCu/data/sys.6499", + "data/AlMgCu/data/sys.650", + "data/AlMgCu/data/sys.6501", + "data/AlMgCu/data/sys.6502", + "data/AlMgCu/data/sys.6503", + "data/AlMgCu/data/sys.6505", + "data/AlMgCu/data/sys.6506", + "data/AlMgCu/data/sys.6507", + "data/AlMgCu/data/sys.6508", + "data/AlMgCu/data/sys.6509", + "data/AlMgCu/data/sys.651", + "data/AlMgCu/data/sys.6510", + "data/AlMgCu/data/sys.6511", + "data/AlMgCu/data/sys.6512", + "data/AlMgCu/data/sys.6513", + "data/AlMgCu/data/sys.6514", + "data/AlMgCu/data/sys.6515", + "data/AlMgCu/data/sys.6516", + "data/AlMgCu/data/sys.6517", + "data/AlMgCu/data/sys.6519", + "data/AlMgCu/data/sys.652", + "data/AlMgCu/data/sys.6520", + "data/AlMgCu/data/sys.6521", + "data/AlMgCu/data/sys.6522", + "data/AlMgCu/data/sys.6523", + "data/AlMgCu/data/sys.6524", + "data/AlMgCu/data/sys.6525", + "data/AlMgCu/data/sys.6526", + "data/AlMgCu/data/sys.6527", + "data/AlMgCu/data/sys.6528", + "data/AlMgCu/data/sys.6529", + "data/AlMgCu/data/sys.653", + "data/AlMgCu/data/sys.6530", + "data/AlMgCu/data/sys.6531", + "data/AlMgCu/data/sys.6533", + "data/AlMgCu/data/sys.6534", + "data/AlMgCu/data/sys.6535", + "data/AlMgCu/data/sys.6537", + "data/AlMgCu/data/sys.6539", + "data/AlMgCu/data/sys.654", + "data/AlMgCu/data/sys.6540", + "data/AlMgCu/data/sys.6541", + "data/AlMgCu/data/sys.6542", + "data/AlMgCu/data/sys.6544", + "data/AlMgCu/data/sys.6545", + "data/AlMgCu/data/sys.6546", + "data/AlMgCu/data/sys.6547", + "data/AlMgCu/data/sys.6548", + "data/AlMgCu/data/sys.6549", + "data/AlMgCu/data/sys.655", + "data/AlMgCu/data/sys.6550", + "data/AlMgCu/data/sys.6551", + "data/AlMgCu/data/sys.6552", + "data/AlMgCu/data/sys.6553", + "data/AlMgCu/data/sys.6554", + "data/AlMgCu/data/sys.6555", + "data/AlMgCu/data/sys.6556", + "data/AlMgCu/data/sys.6557", + "data/AlMgCu/data/sys.6558", + "data/AlMgCu/data/sys.6559", + "data/AlMgCu/data/sys.656", + "data/AlMgCu/data/sys.6561", + "data/AlMgCu/data/sys.6562", + "data/AlMgCu/data/sys.6563", + "data/AlMgCu/data/sys.6564", + "data/AlMgCu/data/sys.6566", + "data/AlMgCu/data/sys.6567", + "data/AlMgCu/data/sys.6568", + "data/AlMgCu/data/sys.657", + "data/AlMgCu/data/sys.6571", + "data/AlMgCu/data/sys.6572", + "data/AlMgCu/data/sys.6573", + "data/AlMgCu/data/sys.6574", + "data/AlMgCu/data/sys.6575", + "data/AlMgCu/data/sys.6576", + "data/AlMgCu/data/sys.6577", + "data/AlMgCu/data/sys.6578", + "data/AlMgCu/data/sys.6579", + "data/AlMgCu/data/sys.658", + "data/AlMgCu/data/sys.6580", + "data/AlMgCu/data/sys.6581", + "data/AlMgCu/data/sys.6582", + "data/AlMgCu/data/sys.6583", + "data/AlMgCu/data/sys.6584", + "data/AlMgCu/data/sys.6585", + "data/AlMgCu/data/sys.6586", + "data/AlMgCu/data/sys.6587", + "data/AlMgCu/data/sys.6588", + "data/AlMgCu/data/sys.6589", + "data/AlMgCu/data/sys.659", + "data/AlMgCu/data/sys.6590", + "data/AlMgCu/data/sys.6591", + "data/AlMgCu/data/sys.6592", + "data/AlMgCu/data/sys.6593", + "data/AlMgCu/data/sys.6596", + "data/AlMgCu/data/sys.6597", + "data/AlMgCu/data/sys.6598", + "data/AlMgCu/data/sys.660", + "data/AlMgCu/data/sys.6600", + "data/AlMgCu/data/sys.6601", + "data/AlMgCu/data/sys.6602", + "data/AlMgCu/data/sys.6603", + "data/AlMgCu/data/sys.6604", + "data/AlMgCu/data/sys.6605", + "data/AlMgCu/data/sys.6606", + "data/AlMgCu/data/sys.6607", + "data/AlMgCu/data/sys.6608", + "data/AlMgCu/data/sys.6609", + "data/AlMgCu/data/sys.661", + "data/AlMgCu/data/sys.6610", + "data/AlMgCu/data/sys.6611", + "data/AlMgCu/data/sys.6612", + "data/AlMgCu/data/sys.6613", + "data/AlMgCu/data/sys.6614", + "data/AlMgCu/data/sys.6615", + "data/AlMgCu/data/sys.6616", + "data/AlMgCu/data/sys.6617", + "data/AlMgCu/data/sys.6618", + "data/AlMgCu/data/sys.6619", + "data/AlMgCu/data/sys.662", + "data/AlMgCu/data/sys.6620", + "data/AlMgCu/data/sys.6621", + "data/AlMgCu/data/sys.6622", + "data/AlMgCu/data/sys.6623", + "data/AlMgCu/data/sys.6624", + "data/AlMgCu/data/sys.6625", + "data/AlMgCu/data/sys.6626", + "data/AlMgCu/data/sys.6627", + "data/AlMgCu/data/sys.6628", + "data/AlMgCu/data/sys.6629", + "data/AlMgCu/data/sys.663", + "data/AlMgCu/data/sys.6630", + "data/AlMgCu/data/sys.6631", + "data/AlMgCu/data/sys.6632", + "data/AlMgCu/data/sys.6633", + "data/AlMgCu/data/sys.6634", + "data/AlMgCu/data/sys.6637", + "data/AlMgCu/data/sys.6638", + "data/AlMgCu/data/sys.6639", + "data/AlMgCu/data/sys.664", + "data/AlMgCu/data/sys.6640", + "data/AlMgCu/data/sys.6641", + "data/AlMgCu/data/sys.6642", + "data/AlMgCu/data/sys.6644", + "data/AlMgCu/data/sys.6645", + "data/AlMgCu/data/sys.6646", + "data/AlMgCu/data/sys.6647", + "data/AlMgCu/data/sys.6648", + "data/AlMgCu/data/sys.665", + "data/AlMgCu/data/sys.6650", + "data/AlMgCu/data/sys.6651", + "data/AlMgCu/data/sys.6652", + "data/AlMgCu/data/sys.6655", + "data/AlMgCu/data/sys.6656", + "data/AlMgCu/data/sys.6657", + "data/AlMgCu/data/sys.6658", + "data/AlMgCu/data/sys.666", + "data/AlMgCu/data/sys.6660", + "data/AlMgCu/data/sys.6661", + "data/AlMgCu/data/sys.6662", + "data/AlMgCu/data/sys.6663", + "data/AlMgCu/data/sys.6664", + "data/AlMgCu/data/sys.6665", + "data/AlMgCu/data/sys.6666", + "data/AlMgCu/data/sys.6667", + "data/AlMgCu/data/sys.6668", + "data/AlMgCu/data/sys.6669", + "data/AlMgCu/data/sys.6670", + "data/AlMgCu/data/sys.6671", + "data/AlMgCu/data/sys.6673", + "data/AlMgCu/data/sys.6674", + "data/AlMgCu/data/sys.6676", + "data/AlMgCu/data/sys.6677", + "data/AlMgCu/data/sys.6678", + "data/AlMgCu/data/sys.6679", + "data/AlMgCu/data/sys.668", + "data/AlMgCu/data/sys.6680", + "data/AlMgCu/data/sys.6681", + "data/AlMgCu/data/sys.6682", + "data/AlMgCu/data/sys.6683", + "data/AlMgCu/data/sys.6684", + "data/AlMgCu/data/sys.6685", + "data/AlMgCu/data/sys.6686", + "data/AlMgCu/data/sys.6687", + "data/AlMgCu/data/sys.6688", + "data/AlMgCu/data/sys.6689", + "data/AlMgCu/data/sys.6690", + "data/AlMgCu/data/sys.6691", + "data/AlMgCu/data/sys.6692", + "data/AlMgCu/data/sys.6693", + "data/AlMgCu/data/sys.6694", + "data/AlMgCu/data/sys.6695", + "data/AlMgCu/data/sys.6696", + "data/AlMgCu/data/sys.6697", + "data/AlMgCu/data/sys.6698", + "data/AlMgCu/data/sys.6699", + "data/AlMgCu/data/sys.670", + "data/AlMgCu/data/sys.6700", + "data/AlMgCu/data/sys.6701", + "data/AlMgCu/data/sys.6703", + "data/AlMgCu/data/sys.6704", + "data/AlMgCu/data/sys.6705", + "data/AlMgCu/data/sys.6706", + "data/AlMgCu/data/sys.6707", + "data/AlMgCu/data/sys.6708", + "data/AlMgCu/data/sys.6709", + "data/AlMgCu/data/sys.671", + "data/AlMgCu/data/sys.6710", + "data/AlMgCu/data/sys.6711", + "data/AlMgCu/data/sys.6712", + "data/AlMgCu/data/sys.6714", + "data/AlMgCu/data/sys.6715", + "data/AlMgCu/data/sys.6716", + "data/AlMgCu/data/sys.6717", + "data/AlMgCu/data/sys.6718", + "data/AlMgCu/data/sys.6719", + "data/AlMgCu/data/sys.672", + "data/AlMgCu/data/sys.6720", + "data/AlMgCu/data/sys.6721", + "data/AlMgCu/data/sys.6722", + "data/AlMgCu/data/sys.6723", + "data/AlMgCu/data/sys.6724", + "data/AlMgCu/data/sys.6725", + "data/AlMgCu/data/sys.6726", + "data/AlMgCu/data/sys.6727", + "data/AlMgCu/data/sys.6728", + "data/AlMgCu/data/sys.6729", + "data/AlMgCu/data/sys.673", + "data/AlMgCu/data/sys.6730", + "data/AlMgCu/data/sys.6731", + "data/AlMgCu/data/sys.6732", + "data/AlMgCu/data/sys.6733", + "data/AlMgCu/data/sys.6734", + "data/AlMgCu/data/sys.6735", + "data/AlMgCu/data/sys.6736", + "data/AlMgCu/data/sys.6737", + "data/AlMgCu/data/sys.6738", + "data/AlMgCu/data/sys.6739", + "data/AlMgCu/data/sys.674", + "data/AlMgCu/data/sys.6740", + "data/AlMgCu/data/sys.6741", + "data/AlMgCu/data/sys.6742", + "data/AlMgCu/data/sys.6743", + "data/AlMgCu/data/sys.6745", + "data/AlMgCu/data/sys.6746", + "data/AlMgCu/data/sys.675", + "data/AlMgCu/data/sys.6750", + "data/AlMgCu/data/sys.6751", + "data/AlMgCu/data/sys.6752", + "data/AlMgCu/data/sys.6753", + "data/AlMgCu/data/sys.6754", + "data/AlMgCu/data/sys.6755", + "data/AlMgCu/data/sys.6756", + "data/AlMgCu/data/sys.6758", + "data/AlMgCu/data/sys.676", + "data/AlMgCu/data/sys.6760", + "data/AlMgCu/data/sys.6762", + "data/AlMgCu/data/sys.6763", + "data/AlMgCu/data/sys.6764", + "data/AlMgCu/data/sys.6765", + "data/AlMgCu/data/sys.6766", + "data/AlMgCu/data/sys.6767", + "data/AlMgCu/data/sys.6768", + "data/AlMgCu/data/sys.677", + "data/AlMgCu/data/sys.6770", + "data/AlMgCu/data/sys.6771", + "data/AlMgCu/data/sys.6772", + "data/AlMgCu/data/sys.6773", + "data/AlMgCu/data/sys.6774", + "data/AlMgCu/data/sys.6775", + "data/AlMgCu/data/sys.6778", + "data/AlMgCu/data/sys.6779", + "data/AlMgCu/data/sys.678", + "data/AlMgCu/data/sys.6780", + "data/AlMgCu/data/sys.6781", + "data/AlMgCu/data/sys.6782", + "data/AlMgCu/data/sys.6783", + "data/AlMgCu/data/sys.6784", + "data/AlMgCu/data/sys.6785", + "data/AlMgCu/data/sys.6786", + "data/AlMgCu/data/sys.6787", + "data/AlMgCu/data/sys.6788", + "data/AlMgCu/data/sys.6789", + "data/AlMgCu/data/sys.679", + "data/AlMgCu/data/sys.6790", + "data/AlMgCu/data/sys.6791", + "data/AlMgCu/data/sys.6792", + "data/AlMgCu/data/sys.6794", + "data/AlMgCu/data/sys.6795", + "data/AlMgCu/data/sys.6796", + "data/AlMgCu/data/sys.6797", + "data/AlMgCu/data/sys.6798", + "data/AlMgCu/data/sys.6799", + "data/AlMgCu/data/sys.680", + "data/AlMgCu/data/sys.6800", + "data/AlMgCu/data/sys.6801", + "data/AlMgCu/data/sys.6802", + "data/AlMgCu/data/sys.6804", + "data/AlMgCu/data/sys.6805", + "data/AlMgCu/data/sys.6806", + "data/AlMgCu/data/sys.6807", + "data/AlMgCu/data/sys.6808", + "data/AlMgCu/data/sys.6809", + "data/AlMgCu/data/sys.681", + "data/AlMgCu/data/sys.6810", + "data/AlMgCu/data/sys.6811", + "data/AlMgCu/data/sys.6812", + "data/AlMgCu/data/sys.6813", + "data/AlMgCu/data/sys.6814", + "data/AlMgCu/data/sys.6815", + "data/AlMgCu/data/sys.6816", + "data/AlMgCu/data/sys.6817", + "data/AlMgCu/data/sys.6818", + "data/AlMgCu/data/sys.6819", + "data/AlMgCu/data/sys.682", + "data/AlMgCu/data/sys.6820", + "data/AlMgCu/data/sys.6821", + "data/AlMgCu/data/sys.6822", + "data/AlMgCu/data/sys.6823", + "data/AlMgCu/data/sys.6825", + "data/AlMgCu/data/sys.6826", + "data/AlMgCu/data/sys.6827", + "data/AlMgCu/data/sys.6828", + "data/AlMgCu/data/sys.6829", + "data/AlMgCu/data/sys.683", + "data/AlMgCu/data/sys.6830", + "data/AlMgCu/data/sys.6831", + "data/AlMgCu/data/sys.6832", + "data/AlMgCu/data/sys.6833", + "data/AlMgCu/data/sys.6834", + "data/AlMgCu/data/sys.6835", + "data/AlMgCu/data/sys.6836", + "data/AlMgCu/data/sys.6837", + "data/AlMgCu/data/sys.6838", + "data/AlMgCu/data/sys.6839", + "data/AlMgCu/data/sys.684", + "data/AlMgCu/data/sys.6840", + "data/AlMgCu/data/sys.6842", + "data/AlMgCu/data/sys.6843", + "data/AlMgCu/data/sys.6844", + "data/AlMgCu/data/sys.6845", + "data/AlMgCu/data/sys.6847", + "data/AlMgCu/data/sys.6849", + "data/AlMgCu/data/sys.685", + "data/AlMgCu/data/sys.6850", + "data/AlMgCu/data/sys.6851", + "data/AlMgCu/data/sys.6852", + "data/AlMgCu/data/sys.6853", + "data/AlMgCu/data/sys.6854", + "data/AlMgCu/data/sys.6855", + "data/AlMgCu/data/sys.6856", + "data/AlMgCu/data/sys.6858", + "data/AlMgCu/data/sys.6859", + "data/AlMgCu/data/sys.686", + "data/AlMgCu/data/sys.6860", + "data/AlMgCu/data/sys.6861", + "data/AlMgCu/data/sys.6862", + "data/AlMgCu/data/sys.6863", + "data/AlMgCu/data/sys.6864", + "data/AlMgCu/data/sys.6865", + "data/AlMgCu/data/sys.6866", + "data/AlMgCu/data/sys.6867", + "data/AlMgCu/data/sys.6868", + "data/AlMgCu/data/sys.6869", + "data/AlMgCu/data/sys.6870", + "data/AlMgCu/data/sys.6871", + "data/AlMgCu/data/sys.6874", + "data/AlMgCu/data/sys.688", + "data/AlMgCu/data/sys.6880", + "data/AlMgCu/data/sys.6881", + "data/AlMgCu/data/sys.6882", + "data/AlMgCu/data/sys.6883", + "data/AlMgCu/data/sys.6884", + "data/AlMgCu/data/sys.6889", + "data/AlMgCu/data/sys.689", + "data/AlMgCu/data/sys.6890", + "data/AlMgCu/data/sys.6891", + "data/AlMgCu/data/sys.6897", + "data/AlMgCu/data/sys.6898", + "data/AlMgCu/data/sys.6899", + "data/AlMgCu/data/sys.690", + "data/AlMgCu/data/sys.6900", + "data/AlMgCu/data/sys.6904", + "data/AlMgCu/data/sys.6912", + "data/AlMgCu/data/sys.6922", + "data/AlMgCu/data/sys.693", + "data/AlMgCu/data/sys.6930", + "data/AlMgCu/data/sys.6938", + "data/AlMgCu/data/sys.6944", + "data/AlMgCu/data/sys.6946", + "data/AlMgCu/data/sys.695", + "data/AlMgCu/data/sys.6952", + "data/AlMgCu/data/sys.6954", + "data/AlMgCu/data/sys.696", + "data/AlMgCu/data/sys.6962", + "data/AlMgCu/data/sys.697", + "data/AlMgCu/data/sys.6970", + "data/AlMgCu/data/sys.6972", + "data/AlMgCu/data/sys.6978", + "data/AlMgCu/data/sys.6979", + "data/AlMgCu/data/sys.698", + "data/AlMgCu/data/sys.6985", + "data/AlMgCu/data/sys.699", + "data/AlMgCu/data/sys.6992", + "data/AlMgCu/data/sys.6993", + "data/AlMgCu/data/sys.6994", + "data/AlMgCu/data/sys.6996", + "data/AlMgCu/data/sys.6998", + "data/AlMgCu/data/sys.7000", + "data/AlMgCu/data/sys.7002", + "data/AlMgCu/data/sys.7008", + "data/AlMgCu/data/sys.701", + "data/AlMgCu/data/sys.7010", + "data/AlMgCu/data/sys.7012", + "data/AlMgCu/data/sys.7018", + "data/AlMgCu/data/sys.702", + "data/AlMgCu/data/sys.7025", + "data/AlMgCu/data/sys.7026", + "data/AlMgCu/data/sys.7028", + "data/AlMgCu/data/sys.703", + "data/AlMgCu/data/sys.7034", + "data/AlMgCu/data/sys.7036", + "data/AlMgCu/data/sys.704", + "data/AlMgCu/data/sys.7040", + "data/AlMgCu/data/sys.7041", + "data/AlMgCu/data/sys.7042", + "data/AlMgCu/data/sys.705", + "data/AlMgCu/data/sys.7058", + "data/AlMgCu/data/sys.7059", + "data/AlMgCu/data/sys.706", + "data/AlMgCu/data/sys.7060", + "data/AlMgCu/data/sys.7061", + "data/AlMgCu/data/sys.7065", + "data/AlMgCu/data/sys.7066", + "data/AlMgCu/data/sys.7067", + "data/AlMgCu/data/sys.707", + "data/AlMgCu/data/sys.708", + "data/AlMgCu/data/sys.7081", + "data/AlMgCu/data/sys.7083", + "data/AlMgCu/data/sys.7089", + "data/AlMgCu/data/sys.709", + "data/AlMgCu/data/sys.7090", + "data/AlMgCu/data/sys.7091", + "data/AlMgCu/data/sys.7092", + "data/AlMgCu/data/sys.7093", + "data/AlMgCu/data/sys.7096", + "data/AlMgCu/data/sys.7098", + "data/AlMgCu/data/sys.710", + "data/AlMgCu/data/sys.7100", + "data/AlMgCu/data/sys.7106", + "data/AlMgCu/data/sys.7108", + "data/AlMgCu/data/sys.711", + "data/AlMgCu/data/sys.7112", + "data/AlMgCu/data/sys.7114", + "data/AlMgCu/data/sys.712", + "data/AlMgCu/data/sys.713", + "data/AlMgCu/data/sys.7130", + "data/AlMgCu/data/sys.7138", + "data/AlMgCu/data/sys.714", + "data/AlMgCu/data/sys.7140", + "data/AlMgCu/data/sys.7146", + "data/AlMgCu/data/sys.7147", + "data/AlMgCu/data/sys.715", + "data/AlMgCu/data/sys.7154", + "data/AlMgCu/data/sys.7155", + "data/AlMgCu/data/sys.716", + "data/AlMgCu/data/sys.7162", + "data/AlMgCu/data/sys.7164", + "data/AlMgCu/data/sys.717", + "data/AlMgCu/data/sys.7170", + "data/AlMgCu/data/sys.7173", + "data/AlMgCu/data/sys.7177", + "data/AlMgCu/data/sys.7178", + "data/AlMgCu/data/sys.718", + "data/AlMgCu/data/sys.7180", + "data/AlMgCu/data/sys.7184", + "data/AlMgCu/data/sys.7186", + "data/AlMgCu/data/sys.7188", + "data/AlMgCu/data/sys.719", + "data/AlMgCu/data/sys.7194", + "data/AlMgCu/data/sys.7200", + "data/AlMgCu/data/sys.7202", + "data/AlMgCu/data/sys.7208", + "data/AlMgCu/data/sys.721", + "data/AlMgCu/data/sys.7218", + "data/AlMgCu/data/sys.722", + "data/AlMgCu/data/sys.7226", + "data/AlMgCu/data/sys.723", + "data/AlMgCu/data/sys.7234", + "data/AlMgCu/data/sys.724", + "data/AlMgCu/data/sys.7240", + "data/AlMgCu/data/sys.7241", + "data/AlMgCu/data/sys.7243", + "data/AlMgCu/data/sys.725", + "data/AlMgCu/data/sys.7250", + "data/AlMgCu/data/sys.7256", + "data/AlMgCu/data/sys.7258", + "data/AlMgCu/data/sys.726", + "data/AlMgCu/data/sys.7268", + "data/AlMgCu/data/sys.727", + "data/AlMgCu/data/sys.7274", + "data/AlMgCu/data/sys.728", + "data/AlMgCu/data/sys.7282", + "data/AlMgCu/data/sys.7289", + "data/AlMgCu/data/sys.729", + "data/AlMgCu/data/sys.7292", + "data/AlMgCu/data/sys.730", + "data/AlMgCu/data/sys.731", + "data/AlMgCu/data/sys.732", + "data/AlMgCu/data/sys.7322", + "data/AlMgCu/data/sys.7325", + "data/AlMgCu/data/sys.7336", + "data/AlMgCu/data/sys.7338", + "data/AlMgCu/data/sys.734", + "data/AlMgCu/data/sys.7344", + "data/AlMgCu/data/sys.7348", + "data/AlMgCu/data/sys.735", + "data/AlMgCu/data/sys.7352", + "data/AlMgCu/data/sys.7354", + "data/AlMgCu/data/sys.7356", + "data/AlMgCu/data/sys.736", + "data/AlMgCu/data/sys.7360", + "data/AlMgCu/data/sys.7362", + "data/AlMgCu/data/sys.7364", + "data/AlMgCu/data/sys.737", + "data/AlMgCu/data/sys.7378", + "data/AlMgCu/data/sys.7380", + "data/AlMgCu/data/sys.739", + "data/AlMgCu/data/sys.7394", + "data/AlMgCu/data/sys.7401", + "data/AlMgCu/data/sys.7412", + "data/AlMgCu/data/sys.7425", + "data/AlMgCu/data/sys.7426", + "data/AlMgCu/data/sys.7427", + "data/AlMgCu/data/sys.7430", + "data/AlMgCu/data/sys.7434", + "data/AlMgCu/data/sys.744", + "data/AlMgCu/data/sys.7442", + "data/AlMgCu/data/sys.7444", + "data/AlMgCu/data/sys.7450", + "data/AlMgCu/data/sys.7456", + "data/AlMgCu/data/sys.7457", + "data/AlMgCu/data/sys.746", + "data/AlMgCu/data/sys.747", + "data/AlMgCu/data/sys.7474", + "data/AlMgCu/data/sys.748", + "data/AlMgCu/data/sys.749", + "data/AlMgCu/data/sys.7498", + "data/AlMgCu/data/sys.750", + "data/AlMgCu/data/sys.7508", + "data/AlMgCu/data/sys.751", + "data/AlMgCu/data/sys.752", + "data/AlMgCu/data/sys.7522", + "data/AlMgCu/data/sys.753", + "data/AlMgCu/data/sys.754", + "data/AlMgCu/data/sys.7540", + "data/AlMgCu/data/sys.755", + "data/AlMgCu/data/sys.756", + "data/AlMgCu/data/sys.7561", + "data/AlMgCu/data/sys.7569", + "data/AlMgCu/data/sys.757", + "data/AlMgCu/data/sys.7570", + "data/AlMgCu/data/sys.7578", + "data/AlMgCu/data/sys.758", + "data/AlMgCu/data/sys.7580", + "data/AlMgCu/data/sys.7582", + "data/AlMgCu/data/sys.759", + "data/AlMgCu/data/sys.7592", + "data/AlMgCu/data/sys.7594", + "data/AlMgCu/data/sys.760", + "data/AlMgCu/data/sys.7604", + "data/AlMgCu/data/sys.761", + "data/AlMgCu/data/sys.7610", + "data/AlMgCu/data/sys.7618", + "data/AlMgCu/data/sys.762", + "data/AlMgCu/data/sys.763", + "data/AlMgCu/data/sys.764", + "data/AlMgCu/data/sys.7642", + "data/AlMgCu/data/sys.765", + "data/AlMgCu/data/sys.7650", + "data/AlMgCu/data/sys.7657", + "data/AlMgCu/data/sys.7658", + "data/AlMgCu/data/sys.766", + "data/AlMgCu/data/sys.767", + "data/AlMgCu/data/sys.7676", + "data/AlMgCu/data/sys.768", + "data/AlMgCu/data/sys.7680", + "data/AlMgCu/data/sys.7684", + "data/AlMgCu/data/sys.769", + "data/AlMgCu/data/sys.770", + "data/AlMgCu/data/sys.771", + "data/AlMgCu/data/sys.7712", + "data/AlMgCu/data/sys.7716", + "data/AlMgCu/data/sys.772", + "data/AlMgCu/data/sys.7720", + "data/AlMgCu/data/sys.773", + "data/AlMgCu/data/sys.774", + "data/AlMgCu/data/sys.7740", + "data/AlMgCu/data/sys.7748", + "data/AlMgCu/data/sys.775", + "data/AlMgCu/data/sys.776", + "data/AlMgCu/data/sys.777", + "data/AlMgCu/data/sys.7772", + "data/AlMgCu/data/sys.778", + "data/AlMgCu/data/sys.779", + "data/AlMgCu/data/sys.7796", + "data/AlMgCu/data/sys.780", + "data/AlMgCu/data/sys.7802", + "data/AlMgCu/data/sys.7804", + "data/AlMgCu/data/sys.781", + "data/AlMgCu/data/sys.7810", + "data/AlMgCu/data/sys.7812", + "data/AlMgCu/data/sys.782", + "data/AlMgCu/data/sys.783", + "data/AlMgCu/data/sys.784", + "data/AlMgCu/data/sys.7842", + "data/AlMgCu/data/sys.785", + "data/AlMgCu/data/sys.7850", + "data/AlMgCu/data/sys.7858", + "data/AlMgCu/data/sys.786", + "data/AlMgCu/data/sys.7860", + "data/AlMgCu/data/sys.7866", + "data/AlMgCu/data/sys.7868", + "data/AlMgCu/data/sys.787", + "data/AlMgCu/data/sys.788", + "data/AlMgCu/data/sys.789", + "data/AlMgCu/data/sys.790", + "data/AlMgCu/data/sys.791", + "data/AlMgCu/data/sys.792", + "data/AlMgCu/data/sys.793", + "data/AlMgCu/data/sys.7936", + "data/AlMgCu/data/sys.795", + "data/AlMgCu/data/sys.7952", + "data/AlMgCu/data/sys.797", + "data/AlMgCu/data/sys.798", + "data/AlMgCu/data/sys.799", + "data/AlMgCu/data/sys.801", + "data/AlMgCu/data/sys.802", + "data/AlMgCu/data/sys.803", + "data/AlMgCu/data/sys.804", + "data/AlMgCu/data/sys.805", + "data/AlMgCu/data/sys.806", + "data/AlMgCu/data/sys.807", + "data/AlMgCu/data/sys.808", + "data/AlMgCu/data/sys.809", + "data/AlMgCu/data/sys.810", + "data/AlMgCu/data/sys.811", + "data/AlMgCu/data/sys.813", + "data/AlMgCu/data/sys.814", + "data/AlMgCu/data/sys.815", + "data/AlMgCu/data/sys.817", + "data/AlMgCu/data/sys.818", + "data/AlMgCu/data/sys.819", + "data/AlMgCu/data/sys.820", + "data/AlMgCu/data/sys.821", + "data/AlMgCu/data/sys.822", + "data/AlMgCu/data/sys.824", + "data/AlMgCu/data/sys.825", + "data/AlMgCu/data/sys.826", + "data/AlMgCu/data/sys.827", + "data/AlMgCu/data/sys.828", + "data/AlMgCu/data/sys.829", + "data/AlMgCu/data/sys.830", + "data/AlMgCu/data/sys.831", + "data/AlMgCu/data/sys.832", + "data/AlMgCu/data/sys.834", + "data/AlMgCu/data/sys.835", + "data/AlMgCu/data/sys.836", + "data/AlMgCu/data/sys.837", + "data/AlMgCu/data/sys.838", + "data/AlMgCu/data/sys.839", + "data/AlMgCu/data/sys.840", + "data/AlMgCu/data/sys.841", + "data/AlMgCu/data/sys.842", + "data/AlMgCu/data/sys.843", + "data/AlMgCu/data/sys.844", + "data/AlMgCu/data/sys.846", + "data/AlMgCu/data/sys.847", + "data/AlMgCu/data/sys.848", + "data/AlMgCu/data/sys.850", + "data/AlMgCu/data/sys.851", + "data/AlMgCu/data/sys.852", + "data/AlMgCu/data/sys.853", + "data/AlMgCu/data/sys.854", + "data/AlMgCu/data/sys.855", + "data/AlMgCu/data/sys.856", + "data/AlMgCu/data/sys.857", + "data/AlMgCu/data/sys.858", + "data/AlMgCu/data/sys.860", + "data/AlMgCu/data/sys.861", + "data/AlMgCu/data/sys.862", + "data/AlMgCu/data/sys.863", + "data/AlMgCu/data/sys.864", + "data/AlMgCu/data/sys.865", + "data/AlMgCu/data/sys.867", + "data/AlMgCu/data/sys.868", + "data/AlMgCu/data/sys.869", + "data/AlMgCu/data/sys.870", + "data/AlMgCu/data/sys.871", + "data/AlMgCu/data/sys.872", + "data/AlMgCu/data/sys.874", + "data/AlMgCu/data/sys.875", + "data/AlMgCu/data/sys.876", + "data/AlMgCu/data/sys.877", + "data/AlMgCu/data/sys.878", + "data/AlMgCu/data/sys.879", + "data/AlMgCu/data/sys.880", + "data/AlMgCu/data/sys.881", + "data/AlMgCu/data/sys.882", + "data/AlMgCu/data/sys.883", + "data/AlMgCu/data/sys.884", + "data/AlMgCu/data/sys.885", + "data/AlMgCu/data/sys.887", + "data/AlMgCu/data/sys.888", + "data/AlMgCu/data/sys.890", + "data/AlMgCu/data/sys.891", + "data/AlMgCu/data/sys.892", + "data/AlMgCu/data/sys.893", + "data/AlMgCu/data/sys.894", + "data/AlMgCu/data/sys.896", + "data/AlMgCu/data/sys.897", + "data/AlMgCu/data/sys.898", + "data/AlMgCu/data/sys.899", + "data/AlMgCu/data/sys.900", + "data/AlMgCu/data/sys.901", + "data/AlMgCu/data/sys.902", + "data/AlMgCu/data/sys.903", + "data/AlMgCu/data/sys.9034", + "data/AlMgCu/data/sys.9035", + "data/AlMgCu/data/sys.904", + "data/AlMgCu/data/sys.905", + "data/AlMgCu/data/sys.9050", + "data/AlMgCu/data/sys.9058", + "data/AlMgCu/data/sys.9066", + "data/AlMgCu/data/sys.9072", + "data/AlMgCu/data/sys.9074", + "data/AlMgCu/data/sys.908", + "data/AlMgCu/data/sys.9082", + "data/AlMgCu/data/sys.909", + "data/AlMgCu/data/sys.9099", + "data/AlMgCu/data/sys.910", + "data/AlMgCu/data/sys.9105", + "data/AlMgCu/data/sys.911", + "data/AlMgCu/data/sys.9114", + "data/AlMgCu/data/sys.9118", + "data/AlMgCu/data/sys.912", + "data/AlMgCu/data/sys.9121", + "data/AlMgCu/data/sys.9136", + "data/AlMgCu/data/sys.9137", + "data/AlMgCu/data/sys.914", + "data/AlMgCu/data/sys.9146", + "data/AlMgCu/data/sys.915", + "data/AlMgCu/data/sys.9154", + "data/AlMgCu/data/sys.9155", + "data/AlMgCu/data/sys.916", + "data/AlMgCu/data/sys.9162", + "data/AlMgCu/data/sys.917", + "data/AlMgCu/data/sys.918", + "data/AlMgCu/data/sys.9186", + "data/AlMgCu/data/sys.919", + "data/AlMgCu/data/sys.9196", + "data/AlMgCu/data/sys.920", + "data/AlMgCu/data/sys.921", + "data/AlMgCu/data/sys.9210", + "data/AlMgCu/data/sys.9217", + "data/AlMgCu/data/sys.9218", + "data/AlMgCu/data/sys.922", + "data/AlMgCu/data/sys.923", + "data/AlMgCu/data/sys.9232", + "data/AlMgCu/data/sys.9234", + "data/AlMgCu/data/sys.924", + "data/AlMgCu/data/sys.925", + "data/AlMgCu/data/sys.9250", + "data/AlMgCu/data/sys.926", + "data/AlMgCu/data/sys.9267", + "data/AlMgCu/data/sys.927", + "data/AlMgCu/data/sys.9274", + "data/AlMgCu/data/sys.928", + "data/AlMgCu/data/sys.9288", + "data/AlMgCu/data/sys.9296", + "data/AlMgCu/data/sys.9297", + "data/AlMgCu/data/sys.930", + "data/AlMgCu/data/sys.931", + "data/AlMgCu/data/sys.932", + "data/AlMgCu/data/sys.933", + "data/AlMgCu/data/sys.9331", + "data/AlMgCu/data/sys.934", + "data/AlMgCu/data/sys.9342", + "data/AlMgCu/data/sys.935", + "data/AlMgCu/data/sys.9356", + "data/AlMgCu/data/sys.936", + "data/AlMgCu/data/sys.937", + "data/AlMgCu/data/sys.938", + "data/AlMgCu/data/sys.9386", + "data/AlMgCu/data/sys.939", + "data/AlMgCu/data/sys.940", + "data/AlMgCu/data/sys.9409", + "data/AlMgCu/data/sys.9418", + "data/AlMgCu/data/sys.942", + "data/AlMgCu/data/sys.943", + "data/AlMgCu/data/sys.944", + "data/AlMgCu/data/sys.9442", + "data/AlMgCu/data/sys.9444", + "data/AlMgCu/data/sys.945", + "data/AlMgCu/data/sys.946", + "data/AlMgCu/data/sys.9467", + "data/AlMgCu/data/sys.947", + "data/AlMgCu/data/sys.948", + "data/AlMgCu/data/sys.949", + "data/AlMgCu/data/sys.950", + "data/AlMgCu/data/sys.9506", + "data/AlMgCu/data/sys.951", + "data/AlMgCu/data/sys.952", + "data/AlMgCu/data/sys.953", + "data/AlMgCu/data/sys.954", + "data/AlMgCu/data/sys.955", + "data/AlMgCu/data/sys.956", + "data/AlMgCu/data/sys.957", + "data/AlMgCu/data/sys.9572", + "data/AlMgCu/data/sys.958", + "data/AlMgCu/data/sys.959", + "data/AlMgCu/data/sys.960", + "data/AlMgCu/data/sys.9604", + "data/AlMgCu/data/sys.963", + "data/AlMgCu/data/sys.964", + "data/AlMgCu/data/sys.965", + "data/AlMgCu/data/sys.966", + "data/AlMgCu/data/sys.967", + "data/AlMgCu/data/sys.968", + "data/AlMgCu/data/sys.969", + "data/AlMgCu/data/sys.970", + "data/AlMgCu/data/sys.9700", + "data/AlMgCu/data/sys.971", + "data/AlMgCu/data/sys.972", + "data/AlMgCu/data/sys.9728", + "data/AlMgCu/data/sys.973", + "data/AlMgCu/data/sys.974", + "data/AlMgCu/data/sys.975", + "data/AlMgCu/data/sys.976", + "data/AlMgCu/data/sys.978", + "data/AlMgCu/data/sys.979", + "data/AlMgCu/data/sys.980", + "data/AlMgCu/data/sys.982", + "data/AlMgCu/data/sys.983", + "data/AlMgCu/data/sys.984", + "data/AlMgCu/data/sys.986", + "data/AlMgCu/data/sys.988", + "data/AlMgCu/data/sys.9884", + "data/AlMgCu/data/sys.989", + "data/AlMgCu/data/sys.990", + "data/AlMgCu/data/sys.991", + "data/AlMgCu/data/sys.992", + "data/AlMgCu/data/sys.993", + "data/AlMgCu/data/sys.995", + "data/AlMgCu/data/sys.9968", + "data/AlMgCu/data/sys.9969", + "data/AlMgCu/data/sys.997", + "data/AlMgCu/data/sys.9971", + "data/AlMgCu/data/sys.9977", + "data/AlMgCu/data/sys.9978", + "data/AlMgCu/data/sys.998", + "data/AlMgCu/data/sys.9980", + "data/AlMgCu/data/sys.9984", + "data/AlMgCu/data/sys.9986", + "data/AlMgCu/data/sys.999", + "data/AlMgCu/data/sys.9990", + "data/AlMgCu/data/sys.9992", + "data/AlMgCu/data/sys.9997" + ], + "batch_size": "auto" + }, + "validation_data": { + "systems": [ + "data/AlMgCu/data/init.008", + "data/AlMgCu/data/init.013", + "data/AlMgCu/data/init.029", + "data/AlMgCu/data/init.031", + "data/AlMgCu/data/init.052", + "data/AlMgCu/data/init.053", + "data/AlMgCu/data/init.054", + "data/AlMgCu/data/init.055", + "data/AlMgCu/data/init.066", + "data/AlMgCu/data/init.077", + "data/AlMgCu/data/init.081", + "data/AlMgCu/data/init.084", + "data/AlMgCu/data/init.100", + "data/AlMgCu/data/init.1004", + "data/AlMgCu/data/init.1010", + "data/AlMgCu/data/init.1022", + "data/AlMgCu/data/init.1024", + "data/AlMgCu/data/init.1034", + "data/AlMgCu/data/init.1036", + "data/AlMgCu/data/init.1047", + "data/AlMgCu/data/init.1057", + "data/AlMgCu/data/init.1065", + "data/AlMgCu/data/init.1068", + "data/AlMgCu/data/init.1069", + "data/AlMgCu/data/init.1078", + "data/AlMgCu/data/init.1079", + "data/AlMgCu/data/init.108", + "data/AlMgCu/data/init.1081", + "data/AlMgCu/data/init.1091", + "data/AlMgCu/data/init.1092", + "data/AlMgCu/data/init.1100", + "data/AlMgCu/data/init.1130", + "data/AlMgCu/data/init.1139", + "data/AlMgCu/data/init.1141", + "data/AlMgCu/data/init.1142", + "data/AlMgCu/data/init.115", + "data/AlMgCu/data/init.1156", + "data/AlMgCu/data/init.1161", + "data/AlMgCu/data/init.1164", + "data/AlMgCu/data/init.117", + "data/AlMgCu/data/init.1180", + "data/AlMgCu/data/init.1199", + "data/AlMgCu/data/init.1215", + "data/AlMgCu/data/init.1238", + "data/AlMgCu/data/init.1267", + "data/AlMgCu/data/init.1279", + "data/AlMgCu/data/init.130", + "data/AlMgCu/data/init.133", + "data/AlMgCu/data/init.145", + "data/AlMgCu/data/init.151", + "data/AlMgCu/data/init.163", + "data/AlMgCu/data/init.209", + "data/AlMgCu/data/init.215", + "data/AlMgCu/data/init.216", + "data/AlMgCu/data/init.225", + "data/AlMgCu/data/init.249", + "data/AlMgCu/data/init.261", + "data/AlMgCu/data/init.268", + "data/AlMgCu/data/init.272", + "data/AlMgCu/data/init.286", + "data/AlMgCu/data/init.289", + "data/AlMgCu/data/init.300", + "data/AlMgCu/data/init.301", + "data/AlMgCu/data/init.322", + "data/AlMgCu/data/init.323", + "data/AlMgCu/data/init.335", + "data/AlMgCu/data/init.343", + "data/AlMgCu/data/init.354", + "data/AlMgCu/data/init.360", + "data/AlMgCu/data/init.405", + "data/AlMgCu/data/init.424", + "data/AlMgCu/data/init.425", + "data/AlMgCu/data/init.427", + "data/AlMgCu/data/init.437", + "data/AlMgCu/data/init.447", + "data/AlMgCu/data/init.450", + "data/AlMgCu/data/init.452", + "data/AlMgCu/data/init.455", + "data/AlMgCu/data/init.465", + "data/AlMgCu/data/init.477", + "data/AlMgCu/data/init.481", + "data/AlMgCu/data/init.498", + "data/AlMgCu/data/init.500", + "data/AlMgCu/data/init.501", + "data/AlMgCu/data/init.525", + "data/AlMgCu/data/init.526", + "data/AlMgCu/data/init.531", + "data/AlMgCu/data/init.545", + "data/AlMgCu/data/init.550", + "data/AlMgCu/data/init.562", + "data/AlMgCu/data/init.564", + "data/AlMgCu/data/init.568", + "data/AlMgCu/data/init.586", + "data/AlMgCu/data/init.612", + "data/AlMgCu/data/init.623", + "data/AlMgCu/data/init.637", + "data/AlMgCu/data/init.655", + "data/AlMgCu/data/init.660", + "data/AlMgCu/data/init.662", + "data/AlMgCu/data/init.670", + "data/AlMgCu/data/init.688", + "data/AlMgCu/data/init.705", + "data/AlMgCu/data/init.711", + "data/AlMgCu/data/init.716", + "data/AlMgCu/data/init.723", + "data/AlMgCu/data/init.742", + "data/AlMgCu/data/init.748", + "data/AlMgCu/data/init.750", + "data/AlMgCu/data/init.761", + "data/AlMgCu/data/init.763", + "data/AlMgCu/data/init.771", + "data/AlMgCu/data/init.782", + "data/AlMgCu/data/init.798", + "data/AlMgCu/data/init.815", + "data/AlMgCu/data/init.818", + "data/AlMgCu/data/init.823", + "data/AlMgCu/data/init.828", + "data/AlMgCu/data/init.829", + "data/AlMgCu/data/init.831", + "data/AlMgCu/data/init.841", + "data/AlMgCu/data/init.846", + "data/AlMgCu/data/init.861", + "data/AlMgCu/data/init.878", + "data/AlMgCu/data/init.893", + "data/AlMgCu/data/init.904", + "data/AlMgCu/data/init.909", + "data/AlMgCu/data/init.920", + "data/AlMgCu/data/init.921", + "data/AlMgCu/data/init.932", + "data/AlMgCu/data/init.936", + "data/AlMgCu/data/init.954", + "data/AlMgCu/data/init.976", + "data/AlMgCu/data/init.992", + "data/AlMgCu/data/init.998", + "data/AlMgCu/data/sys.003", + "data/AlMgCu/data/sys.005", + "data/AlMgCu/data/sys.009", + "data/AlMgCu/data/sys.013", + "data/AlMgCu/data/sys.014", + "data/AlMgCu/data/sys.024", + "data/AlMgCu/data/sys.025", + "data/AlMgCu/data/sys.035", + "data/AlMgCu/data/sys.047", + "data/AlMgCu/data/sys.068", + "data/AlMgCu/data/sys.069", + "data/AlMgCu/data/sys.091", + "data/AlMgCu/data/sys.096", + "data/AlMgCu/data/sys.10002", + "data/AlMgCu/data/sys.10120", + "data/AlMgCu/data/sys.10139", + "data/AlMgCu/data/sys.102", + "data/AlMgCu/data/sys.1028", + "data/AlMgCu/data/sys.10281", + "data/AlMgCu/data/sys.10346", + "data/AlMgCu/data/sys.10354", + "data/AlMgCu/data/sys.1040", + "data/AlMgCu/data/sys.10434", + "data/AlMgCu/data/sys.1055", + "data/AlMgCu/data/sys.1057", + "data/AlMgCu/data/sys.10570", + "data/AlMgCu/data/sys.1058", + "data/AlMgCu/data/sys.10609", + "data/AlMgCu/data/sys.10748", + "data/AlMgCu/data/sys.1081", + "data/AlMgCu/data/sys.10897", + "data/AlMgCu/data/sys.10908", + "data/AlMgCu/data/sys.1093", + "data/AlMgCu/data/sys.10948", + "data/AlMgCu/data/sys.10954", + "data/AlMgCu/data/sys.1096", + "data/AlMgCu/data/sys.10988", + "data/AlMgCu/data/sys.11005", + "data/AlMgCu/data/sys.11012", + "data/AlMgCu/data/sys.11026", + "data/AlMgCu/data/sys.11061", + "data/AlMgCu/data/sys.11067", + "data/AlMgCu/data/sys.11073", + "data/AlMgCu/data/sys.11084", + "data/AlMgCu/data/sys.1109", + "data/AlMgCu/data/sys.11101", + "data/AlMgCu/data/sys.11113", + "data/AlMgCu/data/sys.11130", + "data/AlMgCu/data/sys.1118", + "data/AlMgCu/data/sys.1119", + "data/AlMgCu/data/sys.11252", + "data/AlMgCu/data/sys.11264", + "data/AlMgCu/data/sys.11305", + "data/AlMgCu/data/sys.11336", + "data/AlMgCu/data/sys.1142", + "data/AlMgCu/data/sys.1153", + "data/AlMgCu/data/sys.1156", + "data/AlMgCu/data/sys.1190", + "data/AlMgCu/data/sys.1192", + "data/AlMgCu/data/sys.1196", + "data/AlMgCu/data/sys.1207", + "data/AlMgCu/data/sys.1231", + "data/AlMgCu/data/sys.1235", + "data/AlMgCu/data/sys.1253", + "data/AlMgCu/data/sys.1267", + "data/AlMgCu/data/sys.1305", + "data/AlMgCu/data/sys.1315", + "data/AlMgCu/data/sys.1320", + "data/AlMgCu/data/sys.133", + "data/AlMgCu/data/sys.134", + "data/AlMgCu/data/sys.1375", + "data/AlMgCu/data/sys.1378", + "data/AlMgCu/data/sys.1380", + "data/AlMgCu/data/sys.1386", + "data/AlMgCu/data/sys.1393", + "data/AlMgCu/data/sys.1402", + "data/AlMgCu/data/sys.1408", + "data/AlMgCu/data/sys.1417", + "data/AlMgCu/data/sys.1426", + "data/AlMgCu/data/sys.146", + "data/AlMgCu/data/sys.1460", + "data/AlMgCu/data/sys.1472", + "data/AlMgCu/data/sys.1481", + "data/AlMgCu/data/sys.1482", + "data/AlMgCu/data/sys.1486", + "data/AlMgCu/data/sys.1493", + "data/AlMgCu/data/sys.150", + "data/AlMgCu/data/sys.1514", + "data/AlMgCu/data/sys.1553", + "data/AlMgCu/data/sys.1584", + "data/AlMgCu/data/sys.1593", + "data/AlMgCu/data/sys.1601", + "data/AlMgCu/data/sys.1603", + "data/AlMgCu/data/sys.1607", + "data/AlMgCu/data/sys.1628", + "data/AlMgCu/data/sys.1631", + "data/AlMgCu/data/sys.1647", + "data/AlMgCu/data/sys.1650", + "data/AlMgCu/data/sys.1651", + "data/AlMgCu/data/sys.1668", + "data/AlMgCu/data/sys.1671", + "data/AlMgCu/data/sys.1679", + "data/AlMgCu/data/sys.1683", + "data/AlMgCu/data/sys.1684", + "data/AlMgCu/data/sys.1687", + "data/AlMgCu/data/sys.1688", + "data/AlMgCu/data/sys.1690", + "data/AlMgCu/data/sys.1702", + "data/AlMgCu/data/sys.1704", + "data/AlMgCu/data/sys.1711", + "data/AlMgCu/data/sys.1719", + "data/AlMgCu/data/sys.1788", + "data/AlMgCu/data/sys.1793", + "data/AlMgCu/data/sys.1803", + "data/AlMgCu/data/sys.1804", + "data/AlMgCu/data/sys.1810", + "data/AlMgCu/data/sys.1825", + "data/AlMgCu/data/sys.1841", + "data/AlMgCu/data/sys.1844", + "data/AlMgCu/data/sys.1851", + "data/AlMgCu/data/sys.1871", + "data/AlMgCu/data/sys.1873", + "data/AlMgCu/data/sys.1881", + "data/AlMgCu/data/sys.1921", + "data/AlMgCu/data/sys.1932", + "data/AlMgCu/data/sys.1934", + "data/AlMgCu/data/sys.1937", + "data/AlMgCu/data/sys.194", + "data/AlMgCu/data/sys.1945", + "data/AlMgCu/data/sys.1950", + "data/AlMgCu/data/sys.1969", + "data/AlMgCu/data/sys.1976", + "data/AlMgCu/data/sys.1978", + "data/AlMgCu/data/sys.2006", + "data/AlMgCu/data/sys.2008", + "data/AlMgCu/data/sys.2010", + "data/AlMgCu/data/sys.2019", + "data/AlMgCu/data/sys.2021", + "data/AlMgCu/data/sys.2026", + "data/AlMgCu/data/sys.2045", + "data/AlMgCu/data/sys.205", + "data/AlMgCu/data/sys.207", + "data/AlMgCu/data/sys.2076", + "data/AlMgCu/data/sys.2077", + "data/AlMgCu/data/sys.2115", + "data/AlMgCu/data/sys.2122", + "data/AlMgCu/data/sys.2128", + "data/AlMgCu/data/sys.2131", + "data/AlMgCu/data/sys.2135", + "data/AlMgCu/data/sys.2155", + "data/AlMgCu/data/sys.2159", + "data/AlMgCu/data/sys.2171", + "data/AlMgCu/data/sys.2172", + "data/AlMgCu/data/sys.2175", + "data/AlMgCu/data/sys.2183", + "data/AlMgCu/data/sys.219", + "data/AlMgCu/data/sys.2192", + "data/AlMgCu/data/sys.2193", + "data/AlMgCu/data/sys.2200", + "data/AlMgCu/data/sys.2206", + "data/AlMgCu/data/sys.2232", + "data/AlMgCu/data/sys.2251", + "data/AlMgCu/data/sys.2262", + "data/AlMgCu/data/sys.2268", + "data/AlMgCu/data/sys.2274", + "data/AlMgCu/data/sys.2283", + "data/AlMgCu/data/sys.2287", + "data/AlMgCu/data/sys.2293", + "data/AlMgCu/data/sys.231", + "data/AlMgCu/data/sys.2315", + "data/AlMgCu/data/sys.2319", + "data/AlMgCu/data/sys.2347", + "data/AlMgCu/data/sys.2355", + "data/AlMgCu/data/sys.2368", + "data/AlMgCu/data/sys.2370", + "data/AlMgCu/data/sys.239", + "data/AlMgCu/data/sys.2404", + "data/AlMgCu/data/sys.2416", + "data/AlMgCu/data/sys.2418", + "data/AlMgCu/data/sys.2442", + "data/AlMgCu/data/sys.2446", + "data/AlMgCu/data/sys.2449", + "data/AlMgCu/data/sys.2472", + "data/AlMgCu/data/sys.2475", + "data/AlMgCu/data/sys.2491", + "data/AlMgCu/data/sys.2500", + "data/AlMgCu/data/sys.2507", + "data/AlMgCu/data/sys.2547", + "data/AlMgCu/data/sys.2552", + "data/AlMgCu/data/sys.2557", + "data/AlMgCu/data/sys.259", + "data/AlMgCu/data/sys.2597", + "data/AlMgCu/data/sys.261", + "data/AlMgCu/data/sys.2612", + "data/AlMgCu/data/sys.2617", + "data/AlMgCu/data/sys.2674", + "data/AlMgCu/data/sys.2678", + "data/AlMgCu/data/sys.2686", + "data/AlMgCu/data/sys.2687", + "data/AlMgCu/data/sys.2688", + "data/AlMgCu/data/sys.2689", + "data/AlMgCu/data/sys.2705", + "data/AlMgCu/data/sys.2714", + "data/AlMgCu/data/sys.2763", + "data/AlMgCu/data/sys.2772", + "data/AlMgCu/data/sys.2775", + "data/AlMgCu/data/sys.2786", + "data/AlMgCu/data/sys.2808", + "data/AlMgCu/data/sys.2821", + "data/AlMgCu/data/sys.2823", + "data/AlMgCu/data/sys.2831", + "data/AlMgCu/data/sys.2867", + "data/AlMgCu/data/sys.2882", + "data/AlMgCu/data/sys.2892", + "data/AlMgCu/data/sys.290", + "data/AlMgCu/data/sys.2910", + "data/AlMgCu/data/sys.2944", + "data/AlMgCu/data/sys.2945", + "data/AlMgCu/data/sys.2966", + "data/AlMgCu/data/sys.2971", + "data/AlMgCu/data/sys.2990", + "data/AlMgCu/data/sys.2992", + "data/AlMgCu/data/sys.2994", + "data/AlMgCu/data/sys.3029", + "data/AlMgCu/data/sys.3037", + "data/AlMgCu/data/sys.3055", + "data/AlMgCu/data/sys.3068", + "data/AlMgCu/data/sys.307", + "data/AlMgCu/data/sys.3072", + "data/AlMgCu/data/sys.3076", + "data/AlMgCu/data/sys.3089", + "data/AlMgCu/data/sys.310", + "data/AlMgCu/data/sys.3105", + "data/AlMgCu/data/sys.3113", + "data/AlMgCu/data/sys.3116", + "data/AlMgCu/data/sys.3122", + "data/AlMgCu/data/sys.3137", + "data/AlMgCu/data/sys.3140", + "data/AlMgCu/data/sys.3141", + "data/AlMgCu/data/sys.3152", + "data/AlMgCu/data/sys.3169", + "data/AlMgCu/data/sys.3173", + "data/AlMgCu/data/sys.319", + "data/AlMgCu/data/sys.3197", + "data/AlMgCu/data/sys.320", + "data/AlMgCu/data/sys.3201", + "data/AlMgCu/data/sys.3219", + "data/AlMgCu/data/sys.3234", + "data/AlMgCu/data/sys.324", + "data/AlMgCu/data/sys.3260", + "data/AlMgCu/data/sys.3262", + "data/AlMgCu/data/sys.3271", + "data/AlMgCu/data/sys.3273", + "data/AlMgCu/data/sys.328", + "data/AlMgCu/data/sys.3281", + "data/AlMgCu/data/sys.3285", + "data/AlMgCu/data/sys.3288", + "data/AlMgCu/data/sys.3324", + "data/AlMgCu/data/sys.3354", + "data/AlMgCu/data/sys.3355", + "data/AlMgCu/data/sys.3359", + "data/AlMgCu/data/sys.3364", + "data/AlMgCu/data/sys.3366", + "data/AlMgCu/data/sys.3371", + "data/AlMgCu/data/sys.3373", + "data/AlMgCu/data/sys.3383", + "data/AlMgCu/data/sys.3403", + "data/AlMgCu/data/sys.341", + "data/AlMgCu/data/sys.3411", + "data/AlMgCu/data/sys.3415", + "data/AlMgCu/data/sys.3430", + "data/AlMgCu/data/sys.3440", + "data/AlMgCu/data/sys.347", + "data/AlMgCu/data/sys.3480", + "data/AlMgCu/data/sys.349", + "data/AlMgCu/data/sys.3501", + "data/AlMgCu/data/sys.3506", + "data/AlMgCu/data/sys.3508", + "data/AlMgCu/data/sys.3515", + "data/AlMgCu/data/sys.3523", + "data/AlMgCu/data/sys.3527", + "data/AlMgCu/data/sys.3531", + "data/AlMgCu/data/sys.3533", + "data/AlMgCu/data/sys.354", + "data/AlMgCu/data/sys.3543", + "data/AlMgCu/data/sys.359", + "data/AlMgCu/data/sys.3599", + "data/AlMgCu/data/sys.3614", + "data/AlMgCu/data/sys.3634", + "data/AlMgCu/data/sys.3650", + "data/AlMgCu/data/sys.3674", + "data/AlMgCu/data/sys.3679", + "data/AlMgCu/data/sys.3705", + "data/AlMgCu/data/sys.3708", + "data/AlMgCu/data/sys.3727", + "data/AlMgCu/data/sys.3732", + "data/AlMgCu/data/sys.3733", + "data/AlMgCu/data/sys.3738", + "data/AlMgCu/data/sys.3745", + "data/AlMgCu/data/sys.3748", + "data/AlMgCu/data/sys.3755", + "data/AlMgCu/data/sys.3758", + "data/AlMgCu/data/sys.3763", + "data/AlMgCu/data/sys.3767", + "data/AlMgCu/data/sys.3775", + "data/AlMgCu/data/sys.3807", + "data/AlMgCu/data/sys.382", + "data/AlMgCu/data/sys.3848", + "data/AlMgCu/data/sys.3864", + "data/AlMgCu/data/sys.3878", + "data/AlMgCu/data/sys.3884", + "data/AlMgCu/data/sys.3886", + "data/AlMgCu/data/sys.3903", + "data/AlMgCu/data/sys.3906", + "data/AlMgCu/data/sys.392", + "data/AlMgCu/data/sys.3925", + "data/AlMgCu/data/sys.3928", + "data/AlMgCu/data/sys.3931", + "data/AlMgCu/data/sys.3932", + "data/AlMgCu/data/sys.3939", + "data/AlMgCu/data/sys.394", + "data/AlMgCu/data/sys.3957", + "data/AlMgCu/data/sys.3958", + "data/AlMgCu/data/sys.3960", + "data/AlMgCu/data/sys.3972", + "data/AlMgCu/data/sys.3974", + "data/AlMgCu/data/sys.3976", + "data/AlMgCu/data/sys.3995", + "data/AlMgCu/data/sys.3996", + "data/AlMgCu/data/sys.3998", + "data/AlMgCu/data/sys.4025", + "data/AlMgCu/data/sys.4027", + "data/AlMgCu/data/sys.4034", + "data/AlMgCu/data/sys.4035", + "data/AlMgCu/data/sys.4043", + "data/AlMgCu/data/sys.4051", + "data/AlMgCu/data/sys.4053", + "data/AlMgCu/data/sys.4064", + "data/AlMgCu/data/sys.4065", + "data/AlMgCu/data/sys.4077", + "data/AlMgCu/data/sys.4103", + "data/AlMgCu/data/sys.4109", + "data/AlMgCu/data/sys.4123", + "data/AlMgCu/data/sys.4124", + "data/AlMgCu/data/sys.4139", + "data/AlMgCu/data/sys.4156", + "data/AlMgCu/data/sys.4160", + "data/AlMgCu/data/sys.417", + "data/AlMgCu/data/sys.4173", + "data/AlMgCu/data/sys.4179", + "data/AlMgCu/data/sys.418", + "data/AlMgCu/data/sys.4189", + "data/AlMgCu/data/sys.4202", + "data/AlMgCu/data/sys.4228", + "data/AlMgCu/data/sys.4243", + "data/AlMgCu/data/sys.4265", + "data/AlMgCu/data/sys.427", + "data/AlMgCu/data/sys.4276", + "data/AlMgCu/data/sys.428", + "data/AlMgCu/data/sys.4285", + "data/AlMgCu/data/sys.4297", + "data/AlMgCu/data/sys.4304", + "data/AlMgCu/data/sys.4306", + "data/AlMgCu/data/sys.4309", + "data/AlMgCu/data/sys.431", + "data/AlMgCu/data/sys.4320", + "data/AlMgCu/data/sys.4321", + "data/AlMgCu/data/sys.4335", + "data/AlMgCu/data/sys.4351", + "data/AlMgCu/data/sys.4368", + "data/AlMgCu/data/sys.4369", + "data/AlMgCu/data/sys.4380", + "data/AlMgCu/data/sys.4384", + "data/AlMgCu/data/sys.4397", + "data/AlMgCu/data/sys.4400", + "data/AlMgCu/data/sys.4418", + "data/AlMgCu/data/sys.4424", + "data/AlMgCu/data/sys.4434", + "data/AlMgCu/data/sys.4444", + "data/AlMgCu/data/sys.446", + "data/AlMgCu/data/sys.4463", + "data/AlMgCu/data/sys.4466", + "data/AlMgCu/data/sys.4468", + "data/AlMgCu/data/sys.4469", + "data/AlMgCu/data/sys.4478", + "data/AlMgCu/data/sys.4487", + "data/AlMgCu/data/sys.4489", + "data/AlMgCu/data/sys.4504", + "data/AlMgCu/data/sys.4508", + "data/AlMgCu/data/sys.4515", + "data/AlMgCu/data/sys.4518", + "data/AlMgCu/data/sys.4527", + "data/AlMgCu/data/sys.4533", + "data/AlMgCu/data/sys.4534", + "data/AlMgCu/data/sys.4548", + "data/AlMgCu/data/sys.4552", + "data/AlMgCu/data/sys.4558", + "data/AlMgCu/data/sys.4586", + "data/AlMgCu/data/sys.4592", + "data/AlMgCu/data/sys.4634", + "data/AlMgCu/data/sys.4637", + "data/AlMgCu/data/sys.465", + "data/AlMgCu/data/sys.4661", + "data/AlMgCu/data/sys.4664", + "data/AlMgCu/data/sys.4673", + "data/AlMgCu/data/sys.4702", + "data/AlMgCu/data/sys.4706", + "data/AlMgCu/data/sys.4724", + "data/AlMgCu/data/sys.4729", + "data/AlMgCu/data/sys.474", + "data/AlMgCu/data/sys.4745", + "data/AlMgCu/data/sys.4746", + "data/AlMgCu/data/sys.4816", + "data/AlMgCu/data/sys.4856", + "data/AlMgCu/data/sys.4866", + "data/AlMgCu/data/sys.487", + "data/AlMgCu/data/sys.4915", + "data/AlMgCu/data/sys.4921", + "data/AlMgCu/data/sys.4923", + "data/AlMgCu/data/sys.4954", + "data/AlMgCu/data/sys.4962", + "data/AlMgCu/data/sys.4969", + "data/AlMgCu/data/sys.4975", + "data/AlMgCu/data/sys.4986", + "data/AlMgCu/data/sys.5006", + "data/AlMgCu/data/sys.503", + "data/AlMgCu/data/sys.5172", + "data/AlMgCu/data/sys.5196", + "data/AlMgCu/data/sys.5200", + "data/AlMgCu/data/sys.524", + "data/AlMgCu/data/sys.5242", + "data/AlMgCu/data/sys.527", + "data/AlMgCu/data/sys.5320", + "data/AlMgCu/data/sys.564", + "data/AlMgCu/data/sys.568", + "data/AlMgCu/data/sys.588", + "data/AlMgCu/data/sys.591", + "data/AlMgCu/data/sys.5942", + "data/AlMgCu/data/sys.5952", + "data/AlMgCu/data/sys.5966", + "data/AlMgCu/data/sys.5974", + "data/AlMgCu/data/sys.5978", + "data/AlMgCu/data/sys.5982", + "data/AlMgCu/data/sys.5986", + "data/AlMgCu/data/sys.5996", + "data/AlMgCu/data/sys.6003", + "data/AlMgCu/data/sys.601", + "data/AlMgCu/data/sys.6020", + "data/AlMgCu/data/sys.6028", + "data/AlMgCu/data/sys.6039", + "data/AlMgCu/data/sys.6041", + "data/AlMgCu/data/sys.6045", + "data/AlMgCu/data/sys.6048", + "data/AlMgCu/data/sys.6065", + "data/AlMgCu/data/sys.6066", + "data/AlMgCu/data/sys.6080", + "data/AlMgCu/data/sys.6084", + "data/AlMgCu/data/sys.6086", + "data/AlMgCu/data/sys.6099", + "data/AlMgCu/data/sys.6102", + "data/AlMgCu/data/sys.6105", + "data/AlMgCu/data/sys.6122", + "data/AlMgCu/data/sys.6150", + "data/AlMgCu/data/sys.6152", + "data/AlMgCu/data/sys.6153", + "data/AlMgCu/data/sys.6184", + "data/AlMgCu/data/sys.6192", + "data/AlMgCu/data/sys.6205", + "data/AlMgCu/data/sys.6209", + "data/AlMgCu/data/sys.6214", + "data/AlMgCu/data/sys.6228", + "data/AlMgCu/data/sys.6234", + "data/AlMgCu/data/sys.6248", + "data/AlMgCu/data/sys.625", + "data/AlMgCu/data/sys.6255", + "data/AlMgCu/data/sys.6259", + "data/AlMgCu/data/sys.6270", + "data/AlMgCu/data/sys.6281", + "data/AlMgCu/data/sys.6294", + "data/AlMgCu/data/sys.6297", + "data/AlMgCu/data/sys.6299", + "data/AlMgCu/data/sys.6307", + "data/AlMgCu/data/sys.633", + "data/AlMgCu/data/sys.6330", + "data/AlMgCu/data/sys.6340", + "data/AlMgCu/data/sys.6343", + "data/AlMgCu/data/sys.6348", + "data/AlMgCu/data/sys.6352", + "data/AlMgCu/data/sys.6353", + "data/AlMgCu/data/sys.6365", + "data/AlMgCu/data/sys.6380", + "data/AlMgCu/data/sys.6395", + "data/AlMgCu/data/sys.6407", + "data/AlMgCu/data/sys.6412", + "data/AlMgCu/data/sys.6415", + "data/AlMgCu/data/sys.6420", + "data/AlMgCu/data/sys.6427", + "data/AlMgCu/data/sys.6435", + "data/AlMgCu/data/sys.6448", + "data/AlMgCu/data/sys.6458", + "data/AlMgCu/data/sys.6459", + "data/AlMgCu/data/sys.646", + "data/AlMgCu/data/sys.6463", + "data/AlMgCu/data/sys.6466", + "data/AlMgCu/data/sys.6470", + "data/AlMgCu/data/sys.6476", + "data/AlMgCu/data/sys.6484", + "data/AlMgCu/data/sys.6496", + "data/AlMgCu/data/sys.6500", + "data/AlMgCu/data/sys.6504", + "data/AlMgCu/data/sys.6518", + "data/AlMgCu/data/sys.6532", + "data/AlMgCu/data/sys.6536", + "data/AlMgCu/data/sys.6538", + "data/AlMgCu/data/sys.6543", + "data/AlMgCu/data/sys.6560", + "data/AlMgCu/data/sys.6565", + "data/AlMgCu/data/sys.6569", + "data/AlMgCu/data/sys.6570", + "data/AlMgCu/data/sys.6594", + "data/AlMgCu/data/sys.6595", + "data/AlMgCu/data/sys.6599", + "data/AlMgCu/data/sys.6635", + "data/AlMgCu/data/sys.6636", + "data/AlMgCu/data/sys.6643", + "data/AlMgCu/data/sys.6653", + "data/AlMgCu/data/sys.6654", + "data/AlMgCu/data/sys.6659", + "data/AlMgCu/data/sys.667", + "data/AlMgCu/data/sys.6672", + "data/AlMgCu/data/sys.6675", + "data/AlMgCu/data/sys.669", + "data/AlMgCu/data/sys.6702", + "data/AlMgCu/data/sys.6713", + "data/AlMgCu/data/sys.6744", + "data/AlMgCu/data/sys.6747", + "data/AlMgCu/data/sys.6748", + "data/AlMgCu/data/sys.6749", + "data/AlMgCu/data/sys.6757", + "data/AlMgCu/data/sys.6759", + "data/AlMgCu/data/sys.6769", + "data/AlMgCu/data/sys.6776", + "data/AlMgCu/data/sys.6793", + "data/AlMgCu/data/sys.6803", + "data/AlMgCu/data/sys.6824", + "data/AlMgCu/data/sys.6846", + "data/AlMgCu/data/sys.6848", + "data/AlMgCu/data/sys.687", + "data/AlMgCu/data/sys.691", + "data/AlMgCu/data/sys.6914", + "data/AlMgCu/data/sys.692", + "data/AlMgCu/data/sys.694", + "data/AlMgCu/data/sys.6971", + "data/AlMgCu/data/sys.6986", + "data/AlMgCu/data/sys.700", + "data/AlMgCu/data/sys.7035", + "data/AlMgCu/data/sys.7117", + "data/AlMgCu/data/sys.7153", + "data/AlMgCu/data/sys.7196", + "data/AlMgCu/data/sys.720", + "data/AlMgCu/data/sys.7220", + "data/AlMgCu/data/sys.7242", + "data/AlMgCu/data/sys.7252", + "data/AlMgCu/data/sys.7316", + "data/AlMgCu/data/sys.7329", + "data/AlMgCu/data/sys.7331", + "data/AlMgCu/data/sys.7369", + "data/AlMgCu/data/sys.738", + "data/AlMgCu/data/sys.740", + "data/AlMgCu/data/sys.7402", + "data/AlMgCu/data/sys.7417", + "data/AlMgCu/data/sys.743", + "data/AlMgCu/data/sys.7475", + "data/AlMgCu/data/sys.7516", + "data/AlMgCu/data/sys.7524", + "data/AlMgCu/data/sys.7666", + "data/AlMgCu/data/sys.7674", + "data/AlMgCu/data/sys.7786", + "data/AlMgCu/data/sys.7856", + "data/AlMgCu/data/sys.794", + "data/AlMgCu/data/sys.796", + "data/AlMgCu/data/sys.800", + "data/AlMgCu/data/sys.812", + "data/AlMgCu/data/sys.816", + "data/AlMgCu/data/sys.823", + "data/AlMgCu/data/sys.833", + "data/AlMgCu/data/sys.859", + "data/AlMgCu/data/sys.866", + "data/AlMgCu/data/sys.886", + "data/AlMgCu/data/sys.889", + "data/AlMgCu/data/sys.895", + "data/AlMgCu/data/sys.9042", + "data/AlMgCu/data/sys.906", + "data/AlMgCu/data/sys.907", + "data/AlMgCu/data/sys.9122", + "data/AlMgCu/data/sys.913", + "data/AlMgCu/data/sys.9163", + "data/AlMgCu/data/sys.9241", + "data/AlMgCu/data/sys.929", + "data/AlMgCu/data/sys.9396", + "data/AlMgCu/data/sys.941", + "data/AlMgCu/data/sys.962", + "data/AlMgCu/data/sys.987", + "data/AlMgCu/data/sys.994", + "data/AlMgCu/data/sys.996", + "data/AlMgCu/data/sys.9970", + "data/AlMgCu/data/sys.9972", + "data/AlMgCu/data/sys.9985", + "data/AlMgCu/data/sys.9994" + ], + "batch_size": 1, + "numb_btch": 4, + "_comment": "that's all" + }, + "numb_steps": 10000000, + "seed": 3982377700, + "_comment": "that's all", + "disp_file": "lcurve.out", + "disp_freq": 2000, + "numb_test": 1, + "save_freq": 2000, + "save_ckpt": "model.ckpt", + "disp_training": true, + "time_training": true, + "profiling": false, + "profiling_file": "timeline.json" + } +} diff --git a/tests/AlMgCu/job.json b/tests/AlMgCu/job.json index 2ccb1783..5f5f5984 100644 --- a/tests/AlMgCu/job.json +++ b/tests/AlMgCu/job.json @@ -1,11 +1,14 @@ { - "job_name": "torch AlMgCu", - "command": " source deactivate && conda activate gnn && PYTHONPATH=./ python3 -u deepmd_pt/main.py train tests/AlMgCu/input_AlCuMg.json >tmp_log 2>&1", - "log_file": "tmp_log", - "backward_files": ["lcurve.out", "model.ckpt"], - "project_id": 11176, - "platform": "ali", - "machine_type": "c12_m92_1 * NVIDIA V100", - "job_type": "container", - "image_address": "registry.dp.tech/dptech/prod-195/stable:torch2.0_cu116" -} \ No newline at end of file + "job_name": "torch AlMgCu", + "command": " source deactivate && conda activate gnn && PYTHONPATH=./ python3 -u deepmd_pt/main.py train tests/AlMgCu/input_AlCuMg.json >tmp_log 2>&1", + "log_file": "tmp_log", + "backward_files": [ + "lcurve.out", + "model.ckpt" + ], + "project_id": 11176, + "platform": "ali", + "machine_type": "c12_m92_1 * NVIDIA V100", + "job_type": "container", + "image_address": "registry.dp.tech/dptech/prod-195/stable:torch2.0_cu116" +} diff --git a/tests/Cu/job.json b/tests/Cu/job.json index ea883101..e716b68c 100644 --- a/tests/Cu/job.json +++ b/tests/Cu/job.json @@ -1,11 +1,14 @@ { - "job_name": "torch Cu", - "command": " source deactivate && conda activate gnn && PYTHONPATH=./ python3 -u deepmd_pt/main.py train tests/Cu/se_e2_a.json >tmp_log 2>&1", - "log_file": "tmp_log", - "backward_files": ["lcurve.out", "model.ckpt"], - "project_id": 11176, - "platform": "ali", - "machine_type": "c12_m92_1 * NVIDIA V100", - "job_type": "container", - "image_address": "registry.dp.tech/dptech/prod-195/stable:torch2.0_cu116" -} \ No newline at end of file + "job_name": "torch Cu", + "command": " source deactivate && conda activate gnn && PYTHONPATH=./ python3 -u deepmd_pt/main.py train tests/Cu/se_e2_a.json >tmp_log 2>&1", + "log_file": "tmp_log", + "backward_files": [ + "lcurve.out", + "model.ckpt" + ], + "project_id": 11176, + "platform": "ali", + "machine_type": "c12_m92_1 * NVIDIA V100", + "job_type": "container", + "image_address": "registry.dp.tech/dptech/prod-195/stable:torch2.0_cu116" +} diff --git a/tests/Cu/se_e2_a.json b/tests/Cu/se_e2_a.json index 8e1433b6..6c4b271e 100644 --- a/tests/Cu/se_e2_a.json +++ b/tests/Cu/se_e2_a.json @@ -1,71 +1,71 @@ { - "model": { - "type_map": [ - "Cu" - ], - "descriptor": { - "type": "se_e2_a", - "sel": [ - 138 - ], - "rcut_smth": 0.50, - "rcut": 6.00, - "neuron": [ - 25, - 50, - 100 - ], - "resnet_dt": false, - "axis_neuron": 16, - "seed": 20, - "_comment": " that's all" - }, - "fitting_net": { - "neuron": [ - 240, - 240, - 240 - ], - "resnet_dt": true, - "seed": 20, - "_comment": " that's all" - }, - "data_stat_nbatch": 20, - "_comment": " that's all" + "model": { + "type_map": [ + "Cu" + ], + "descriptor": { + "type": "se_e2_a", + "sel": [ + 138 + ], + "rcut_smth": 0.50, + "rcut": 6.00, + "neuron": [ + 25, + 50, + 100 + ], + "resnet_dt": false, + "axis_neuron": 16, + "seed": 20, + "_comment": " that's all" }, - "learning_rate": { - "type": "exp", - "decay_steps": 5000, - "start_lr": 0.001, - "stop_lr": 3.51e-8, - "_comment": "that's all" + "fitting_net": { + "neuron": [ + 240, + 240, + 240 + ], + "resnet_dt": true, + "seed": 20, + "_comment": " that's all" }, - "loss": { - "type": "ener", - "start_pref_e": 0.02, - "limit_pref_e": 1, - "start_pref_f": 1000, - "limit_pref_f": 1, - "_comment": " that's all" + "data_stat_nbatch": 20, + "_comment": " that's all" + }, + "learning_rate": { + "type": "exp", + "decay_steps": 5000, + "start_lr": 0.001, + "stop_lr": 3.51e-8, + "_comment": "that's all" + }, + "loss": { + "type": "ener", + "start_pref_e": 0.02, + "limit_pref_e": 1, + "start_pref_f": 1000, + "limit_pref_f": 1, + "_comment": " that's all" + }, + "training": { + "training_data": { + "systems": "data/cu_train.hdf5", + "batch_size": "auto", + "_comment": "that's all" }, - "training": { - "training_data": { - "systems": "data/cu_train.hdf5", - "batch_size": "auto", - "_comment": "that's all" - }, - "validation_data": { - "systems": "data/cu_test.hdf5", - "batch_size": 1, - "numb_btch": 3, - "_comment": "that's all" - }, - "numb_steps": 1000000, - "seed": 20, - "disp_file": "lcurve.out", - "disp_freq": 2, - "save_freq": 10000, - "_comment": "that's all" + "validation_data": { + "systems": "data/cu_test.hdf5", + "batch_size": 1, + "numb_btch": 3, + "_comment": "that's all" }, + "numb_steps": 1000000, + "seed": 20, + "disp_file": "lcurve.out", + "disp_freq": 2, + "save_freq": 10000, "_comment": "that's all" + }, + "_comment": "that's all" } diff --git a/tests/LiGePS/0310.json b/tests/LiGePS/0310.json index 2c75e23f..15f1c199 100644 --- a/tests/LiGePS/0310.json +++ b/tests/LiGePS/0310.json @@ -1,119 +1,124 @@ { - "model": { - "descriptor": { - "type": "se_e2_a", - "sel": [30, 30, 30, 30], - "rcut_smth": 2.0, - "rcut": 9.0, - "neuron": [ - 36, - 72, - 144 - ], - "resnet_dt": false, - "axis_neuron": 12, - "attn": 128, - "attn_layer": 2, - "attn_dotr": true, - "attn_mask": false, - "seed": 10, - "_activation_function": "tanh" + "model": { + "descriptor": { + "type": "se_e2_a", + "sel": [ + 30, + 30, + 30, + 30 + ], + "rcut_smth": 2.0, + "rcut": 9.0, + "neuron": [ + 36, + 72, + 144 + ], + "resnet_dt": false, + "axis_neuron": 12, + "attn": 128, + "attn_layer": 2, + "attn_dotr": true, + "attn_mask": false, + "seed": 10, + "_activation_function": "tanh" + }, + "fitting_net": { + "neuron": [ + 240, + 240, + 240 + ], + "resnet_dt": true, + "_coord_norm": true, + "_type_fitting_net": false, + "seed": 10, + "_activation_function": "tanh" + }, + "type_map": [ + "Li", + "Ge", + "P", + "S" + ] }, - "fitting_net": { - "neuron": [ - 240, - 240, - 240 - ], - "resnet_dt": true, - "_coord_norm": true, - "_type_fitting_net": false, - "seed": 10, - "_activation_function": "tanh" + "learning_rate": { + "type": "exp", + "start_lr": 0.001, + "decay_steps": 80000, + "stop_lr": 5e-08, + "_decay_rate": 0.95 }, - "type_map": [ - "Li", - "Ge", - "P", - "S" - ] - }, - "learning_rate": { - "type": "exp", - "start_lr": 0.001, - "decay_steps": 80000, - "stop_lr": 5e-08, - "_decay_rate": 0.95 - }, - "loss": { - "start_pref_e": 0.02, - "limit_pref_e": 2, - "start_pref_f": 1000, - "limit_pref_f": 1, - "start_pref_v": 0.01, - "limit_pref_v": 1 - }, - "training": { - "training_data": { - "systems": [ - "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-init.system", - "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000000-data.000", - "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000001-data.001", - "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000002-data.002", - "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000003-data.003", - "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000007-data.007", - "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000008-data.008", - "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000008-data.016", - "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000009-data.009", - "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000010-data.010", - "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000010-data.018", - "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000011-data.011", - "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000011-data.019", - "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000012-data.012", - "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000012-data.020", - "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000013-data.013", - "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000013-data.021", - "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000014-data.014", - "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000014-data.022", - "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000015-data.015", - "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000015-data.023", - "data/LiGePS-SSE-PBE/data/iter.000000/02.fp/data.000", - "data/LiGePS-SSE-PBE/data/iter.000000/02.fp/data.001", - "data/LiGePS-SSE-PBE/data/iter.000000/02.fp/data.002", - "data/LiGePS-SSE-PBE/data/iter.000000/02.fp/data.003", - "data/LiGePS-SSE-PBE/data/iter.000001/02.fp/data.000", - "data/LiGePS-SSE-PBE/data/iter.000001/02.fp/data.001", - "data/LiGePS-SSE-PBE/data/iter.000001/02.fp/data.002", - "data/LiGePS-SSE-PBE/data/iter.000001/02.fp/data.003", - "data/LiGePS-SSE-PBE/data/iter.000002/02.fp/data.000", - "data/LiGePS-SSE-PBE/data/iter.000002/02.fp/data.001", - "data/LiGePS-SSE-PBE/data/iter.000002/02.fp/data.002", - "data/LiGePS-SSE-PBE/data/iter.000002/02.fp/data.003" - ], - "batch_size": "auto" + "loss": { + "start_pref_e": 0.02, + "limit_pref_e": 2, + "start_pref_f": 1000, + "limit_pref_f": 1, + "start_pref_v": 0.01, + "limit_pref_v": 1 }, - "validation_data": { - "systems": [ - "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000004-data.004", - "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000005-data.005", - "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000006-data.006", - "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000009-data.017" - ], - "batch_size": 1, - "numb_btch": 4, - "_comment": "that's all" - }, - "numb_steps": 2000000, - "seed": 10, - "_comment": "that's all", - "disp_file": "lcurve.out", - "disp_freq": 2000, - "numb_test": 1, - "save_freq": 2000, - "save_ckpt": "model.ckpt", - "disp_training": true, - "time_training": true, - "profiling": false, - "profiling_file": "timeline.json" - } + "training": { + "training_data": { + "systems": [ + "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-init.system", + "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000000-data.000", + "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000001-data.001", + "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000002-data.002", + "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000003-data.003", + "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000007-data.007", + "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000008-data.008", + "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000008-data.016", + "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000009-data.009", + "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000010-data.010", + "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000010-data.018", + "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000011-data.011", + "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000011-data.019", + "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000012-data.012", + "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000012-data.020", + "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000013-data.013", + "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000013-data.021", + "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000014-data.014", + "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000014-data.022", + "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000015-data.015", + "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000015-data.023", + "data/LiGePS-SSE-PBE/data/iter.000000/02.fp/data.000", + "data/LiGePS-SSE-PBE/data/iter.000000/02.fp/data.001", + "data/LiGePS-SSE-PBE/data/iter.000000/02.fp/data.002", + "data/LiGePS-SSE-PBE/data/iter.000000/02.fp/data.003", + "data/LiGePS-SSE-PBE/data/iter.000001/02.fp/data.000", + "data/LiGePS-SSE-PBE/data/iter.000001/02.fp/data.001", + "data/LiGePS-SSE-PBE/data/iter.000001/02.fp/data.002", + "data/LiGePS-SSE-PBE/data/iter.000001/02.fp/data.003", + "data/LiGePS-SSE-PBE/data/iter.000002/02.fp/data.000", + "data/LiGePS-SSE-PBE/data/iter.000002/02.fp/data.001", + "data/LiGePS-SSE-PBE/data/iter.000002/02.fp/data.002", + "data/LiGePS-SSE-PBE/data/iter.000002/02.fp/data.003" + ], + "batch_size": "auto" + }, + "validation_data": { + "systems": [ + "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000004-data.004", + "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000005-data.005", + "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000006-data.006", + "data/LiGePS-SSE-PBE/data/home/chenglab/hjx/proj-sse-new/dpgen-LiGePS/data.init/LiGePS-iter.000009-data.017" + ], + "batch_size": 1, + "numb_btch": 4, + "_comment": "that's all" + }, + "numb_steps": 2000000, + "seed": 10, + "_comment": "that's all", + "disp_file": "lcurve.out", + "disp_freq": 2000, + "numb_test": 1, + "save_freq": 2000, + "save_ckpt": "model.ckpt", + "disp_training": true, + "time_training": true, + "profiling": false, + "profiling_file": "timeline.json" + } } diff --git a/tests/LiGePS/job.json b/tests/LiGePS/job.json index a801e065..b7ddec56 100644 --- a/tests/LiGePS/job.json +++ b/tests/LiGePS/job.json @@ -1,11 +1,14 @@ { - "job_name": "torch LiGePS", - "command": " source deactivate && conda activate gnn && PYTHONPATH=./ python3 -u deepmd_pt/main.py train tests/LiGePS/0310.json >tmp_log 2>&1", - "log_file": "tmp_log", - "backward_files": ["lcurve.out", "model.ckpt"], - "project_id": 11176, - "platform": "ali", - "machine_type": "c12_m92_1 * NVIDIA V100", - "job_type": "container", - "image_address": "registry.dp.tech/dptech/prod-195/stable:torch2.0_cu116" -} \ No newline at end of file + "job_name": "torch LiGePS", + "command": " source deactivate && conda activate gnn && PYTHONPATH=./ python3 -u deepmd_pt/main.py train tests/LiGePS/0310.json >tmp_log 2>&1", + "log_file": "tmp_log", + "backward_files": [ + "lcurve.out", + "model.ckpt" + ], + "project_id": 11176, + "platform": "ali", + "machine_type": "c12_m92_1 * NVIDIA V100", + "job_type": "container", + "image_address": "registry.dp.tech/dptech/prod-195/stable:torch2.0_cu116" +} diff --git a/tests/__init__.py b/tests/__init__.py index e69de29b..6ceb116d 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -0,0 +1 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later diff --git a/tests/models/dpa1.json b/tests/models/dpa1.json index 56b39ba2..dd838ac6 100644 --- a/tests/models/dpa1.json +++ b/tests/models/dpa1.json @@ -1,35 +1,39 @@ { "type_map": [ - "O", - "H" + "O", + "H" ], "descriptor": { - "type": "se_atten", - "sel": 30, - "rcut_smth": 2.0, - "rcut": 6.0, - "neuron": [2, 4, 8 ], - "axis_neuron": 4, - "attn": 5, - "attn_layer": 2, - "attn_dotr": true, - "attn_mask": false, - "post_ln": true, - "ffn": false, - "ffn_embed_dim": 10, - "activation": "tanh", - "scaling_factor": 1.0, - "head_num": 1, - "normalize": true, - "temperature": 1.0 + "type": "se_atten", + "sel": 30, + "rcut_smth": 2.0, + "rcut": 6.0, + "neuron": [ + 2, + 4, + 8 + ], + "axis_neuron": 4, + "attn": 5, + "attn_layer": 2, + "attn_dotr": true, + "attn_mask": false, + "post_ln": true, + "ffn": false, + "ffn_embed_dim": 10, + "activation": "tanh", + "scaling_factor": 1.0, + "head_num": 1, + "normalize": true, + "temperature": 1.0 }, "fitting_net": { - "neuron": [ - 240, - 240, - 240 - ], - "resnet_dt": true, - "seed": 1 + "neuron": [ + 240, + 240, + 240 + ], + "resnet_dt": true, + "seed": 1 } } diff --git a/tests/models/dpa2.json b/tests/models/dpa2.json index 3ef7dc5f..8b9c7358 100644 --- a/tests/models/dpa2.json +++ b/tests/models/dpa2.json @@ -1,44 +1,48 @@ { "type_map": [ - "O", - "H" + "O", + "H" ], "descriptor": { - "type": "dpa2", - "repinit_rcut": 6.0, - "repinit_rcut_smth": 2.0, - "repinit_nsel": 30, - "repformer_rcut": 4.0, - "repformer_rcut_smth": 0.5, - "repformer_nsel": 10, - "repinit_neuron": [2, 4, 8], - "repinit_axis_neuron": 4, - "repinit_activation": "tanh", - "repformer_nlayers": 12, - "repformer_g1_dim": 8, - "repformer_g2_dim": 5, - "repformer_attn2_hidden": 3, - "repformer_attn2_nhead": 1, - "repformer_attn1_hidden": 5, - "repformer_attn1_nhead": 1, - "repformer_axis_dim": 4, - "repformer_update_h2": false, - "repformer_update_g1_has_conv": true, - "repformer_update_g1_has_grrg": true, - "repformer_update_g1_has_drrd": true, - "repformer_update_g1_has_attn": true, - "repformer_update_g2_has_g1g1": true, - "repformer_update_g2_has_attn": true, - "repformer_attn2_has_gate": true, - "repformer_add_type_ebd_to_seq": false + "type": "dpa2", + "repinit_rcut": 6.0, + "repinit_rcut_smth": 2.0, + "repinit_nsel": 30, + "repformer_rcut": 4.0, + "repformer_rcut_smth": 0.5, + "repformer_nsel": 10, + "repinit_neuron": [ + 2, + 4, + 8 + ], + "repinit_axis_neuron": 4, + "repinit_activation": "tanh", + "repformer_nlayers": 12, + "repformer_g1_dim": 8, + "repformer_g2_dim": 5, + "repformer_attn2_hidden": 3, + "repformer_attn2_nhead": 1, + "repformer_attn1_hidden": 5, + "repformer_attn1_nhead": 1, + "repformer_axis_dim": 4, + "repformer_update_h2": false, + "repformer_update_g1_has_conv": true, + "repformer_update_g1_has_grrg": true, + "repformer_update_g1_has_drrd": true, + "repformer_update_g1_has_attn": true, + "repformer_update_g2_has_g1g1": true, + "repformer_update_g2_has_attn": true, + "repformer_attn2_has_gate": true, + "repformer_add_type_ebd_to_seq": false }, "fitting_net": { - "neuron": [ - 240, - 240, - 240 - ], - "resnet_dt": true, - "seed": 1 + "neuron": [ + 240, + 240, + 240 + ], + "resnet_dt": true, + "seed": 1 } } diff --git a/tests/models/dpa2_hyb.json b/tests/models/dpa2_hyb.json index c3bf0cac..b5d53b02 100644 --- a/tests/models/dpa2_hyb.json +++ b/tests/models/dpa2_hyb.json @@ -1,69 +1,69 @@ { "type_map": [ - "O", - "H" + "O", + "H" ], "descriptor": { - "type": "hybrid", - "hybrid_mode": "sequential", - "list": [ - { - "type": "se_atten", - "sel": 30, - "rcut_smth": 2.0, - "rcut": 6.0, - "neuron": [ - 2, - 4, - 8 - ], - "axis_neuron": 4, - "attn": 5, - "attn_layer": 0, - "attn_dotr": true, - "attn_mask": false, - "post_ln": true, - "ffn": false, - "ffn_embed_dim": 10, - "activation": "tanh", - "scaling_factor": 1.0, - "head_num": 1, - "normalize": true, - "temperature": 1.0 - }, - { - "type": "se_uni", - "sel": 10, - "rcut_smth": 0.5, - "rcut": 4.0, - "nlayers": 12, - "g1_dim": 8, - "g2_dim": 5, - "attn2_hidden": 3, - "attn2_nhead": 1, - "attn1_hidden": 5, - "attn1_nhead": 1, - "axis_dim": 4, - "update_h2": false, - "update_g1_has_conv": true, - "update_g1_has_grrg": true, - "update_g1_has_drrd": true, - "update_g1_has_attn": true, - "update_g2_has_g1g1": true, - "update_g2_has_attn": true, - "attn2_has_gate": true, - "add_type_ebd_to_seq": false, - "smooth": true - } - ] + "type": "hybrid", + "hybrid_mode": "sequential", + "list": [ + { + "type": "se_atten", + "sel": 30, + "rcut_smth": 2.0, + "rcut": 6.0, + "neuron": [ + 2, + 4, + 8 + ], + "axis_neuron": 4, + "attn": 5, + "attn_layer": 0, + "attn_dotr": true, + "attn_mask": false, + "post_ln": true, + "ffn": false, + "ffn_embed_dim": 10, + "activation": "tanh", + "scaling_factor": 1.0, + "head_num": 1, + "normalize": true, + "temperature": 1.0 + }, + { + "type": "se_uni", + "sel": 10, + "rcut_smth": 0.5, + "rcut": 4.0, + "nlayers": 12, + "g1_dim": 8, + "g2_dim": 5, + "attn2_hidden": 3, + "attn2_nhead": 1, + "attn1_hidden": 5, + "attn1_nhead": 1, + "axis_dim": 4, + "update_h2": false, + "update_g1_has_conv": true, + "update_g1_has_grrg": true, + "update_g1_has_drrd": true, + "update_g1_has_attn": true, + "update_g2_has_g1g1": true, + "update_g2_has_attn": true, + "attn2_has_gate": true, + "add_type_ebd_to_seq": false, + "smooth": true + } + ] }, "fitting_net": { - "neuron": [ - 240, - 240, - 240 - ], - "resnet_dt": true, - "seed": 1 + "neuron": [ + 240, + 240, + 240 + ], + "resnet_dt": true, + "seed": 1 } } diff --git a/tests/test_LKF.py b/tests/test_LKF.py index 5c0adecb..393a6799 100644 --- a/tests/test_LKF.py +++ b/tests/test_LKF.py @@ -1,6 +1,9 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later import unittest -from deepmd_pt.entrypoints.main import main +from deepmd_pt.entrypoints.main import ( + main, +) class TestLKF(unittest.TestCase): @@ -8,5 +11,5 @@ def test_lkf(self): main(["train", "tests/water/lkf.json"]) -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/tests/test_autodiff.py b/tests/test_autodiff.py index 6c915c4b..442603cb 100644 --- a/tests/test_autodiff.py +++ b/tests/test_autodiff.py @@ -1,20 +1,28 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later import copy -import torch import unittest + import numpy as np -from deepmd_pt.utils import env -from deepmd_pt.model.model import get_model +import torch + +from deepmd_pt.model.model import ( + get_model, +) +from deepmd_pt.utils import ( + env, +) dtype = torch.float64 from .test_permutation import ( - model_se_e2_a, - model_dpa1, - model_dpa2, - eval_model, - make_sample, + eval_model, + make_sample, + model_dpa1, + model_dpa2, + model_se_e2_a, ) + # from deepmd-kit repo def finite_difference(f, x, delta=1e-6): in_shape = x.shape @@ -29,6 +37,7 @@ def finite_difference(f, x, delta=1e-6): res[(Ellipsis, *idx)] = (y1p - y1n) / (2 * delta) return res + def stretch_box(old_coord, old_box, new_box): ocoord = old_coord.reshape(-1, 3) obox = old_box.reshape(3, 3) @@ -37,111 +46,145 @@ def stretch_box(old_coord, old_box, new_box): return ncoord.reshape(old_coord.shape) -class TestForce(): - def test( - self, - ): - places = 8 - delta = 1e-5 - natoms = 5 - cell = torch.rand([3, 3], dtype=dtype) - cell = (cell + cell.T) + 5. * torch.eye(3) - coord = torch.rand([natoms, 3], dtype=dtype) - coord = torch.matmul(coord, cell) - atype = torch.IntTensor([0, 0, 0, 1, 1]) - # assumes input to be numpy tensor - coord = coord.numpy() - def np_infer( - coord, +class TestForce: + def test( + self, ): - e0, f0, v0 = eval_model(self.model, torch.tensor(coord).unsqueeze(0), cell.unsqueeze(0), atype) - ret = {'energy': e0.squeeze(0), 'force': f0.squeeze(0), 'virial': v0.squeeze(0)} - # detach - ret = {kk: ret[kk].detach().cpu().numpy() for kk in ret} - return ret - ff = lambda coord: np_infer(coord)["energy"] - fdf = -finite_difference(ff, coord, delta=delta).squeeze() - rff = np_infer(coord)["force"] - np.testing.assert_almost_equal(fdf, rff, decimal=places) - - -class TestVirial(): - def test( - self, - ): - places = 8 - delta = 1e-4 - natoms = 5 - cell = torch.rand([3, 3], dtype=dtype) - cell = (cell) + 5. * torch.eye(3) - coord = torch.rand([natoms, 3], dtype=dtype) - coord = torch.matmul(coord, cell) - atype = torch.IntTensor([0, 0, 0, 1, 1]) - # assumes input to be numpy tensor - coord = coord.numpy() - cell = cell.numpy() - def np_infer( - new_cell, + places = 8 + delta = 1e-5 + natoms = 5 + cell = torch.rand([3, 3], dtype=dtype) + cell = (cell + cell.T) + 5.0 * torch.eye(3) + coord = torch.rand([natoms, 3], dtype=dtype) + coord = torch.matmul(coord, cell) + atype = torch.IntTensor([0, 0, 0, 1, 1]) + # assumes input to be numpy tensor + coord = coord.numpy() + + def np_infer( + coord, + ): + e0, f0, v0 = eval_model( + self.model, torch.tensor(coord).unsqueeze(0), cell.unsqueeze(0), atype + ) + ret = { + "energy": e0.squeeze(0), + "force": f0.squeeze(0), + "virial": v0.squeeze(0), + } + # detach + ret = {kk: ret[kk].detach().cpu().numpy() for kk in ret} + return ret + + def ff(_coord): + return np_infer(_coord)["energy"] + + fdf = -finite_difference(ff, coord, delta=delta).squeeze() + rff = np_infer(coord)["force"] + np.testing.assert_almost_equal(fdf, rff, decimal=places) + + +class TestVirial: + def test( + self, ): - e0, f0, v0 = eval_model(self.model, torch.tensor(stretch_box(coord, cell, new_cell)).unsqueeze(0), torch.tensor(new_cell).unsqueeze(0), atype) - ret = {'energy': e0.squeeze(0), 'force': f0.squeeze(0), 'virial': v0.squeeze(0)} - # detach - ret = {kk: ret[kk].detach().cpu().numpy() for kk in ret} - return ret - ff = lambda bb: np_infer(bb)["energy"] - fdv = -(finite_difference(ff, cell, delta=delta)\ - .transpose(0, 2, 1) @ cell).squeeze() - rfv = np_infer(cell)["virial"] - np.testing.assert_almost_equal(fdv, rfv, decimal=places) - + places = 8 + delta = 1e-4 + natoms = 5 + cell = torch.rand([3, 3], dtype=dtype) + cell = (cell) + 5.0 * torch.eye(3) + coord = torch.rand([natoms, 3], dtype=dtype) + coord = torch.matmul(coord, cell) + atype = torch.IntTensor([0, 0, 0, 1, 1]) + # assumes input to be numpy tensor + coord = coord.numpy() + cell = cell.numpy() + + def np_infer( + new_cell, + ): + e0, f0, v0 = eval_model( + self.model, + torch.tensor(stretch_box(coord, cell, new_cell)).unsqueeze(0), + torch.tensor(new_cell).unsqueeze(0), + atype, + ) + ret = { + "energy": e0.squeeze(0), + "force": f0.squeeze(0), + "virial": v0.squeeze(0), + } + # detach + ret = {kk: ret[kk].detach().cpu().numpy() for kk in ret} + return ret + + def ff(bb): + return np_infer(bb)["energy"] + + fdv = -( + finite_difference(ff, cell, delta=delta).transpose(0, 2, 1) @ cell + ).squeeze() + rfv = np_infer(cell)["virial"] + np.testing.assert_almost_equal(fdv, rfv, decimal=places) + class TestEnergyModelSeAForce(unittest.TestCase, TestForce): - def setUp(self): - model_params = copy.deepcopy(model_se_e2_a) - sampled = make_sample(model_params) - self.type_split = False - self.model = get_model(model_params, sampled).to(env.DEVICE) + def setUp(self): + model_params = copy.deepcopy(model_se_e2_a) + sampled = make_sample(model_params) + self.type_split = False + self.model = get_model(model_params, sampled).to(env.DEVICE) + class TestEnergyModelSeAVirial(unittest.TestCase, TestVirial): - def setUp(self): - model_params = copy.deepcopy(model_se_e2_a) - sampled = make_sample(model_params) - self.type_split = False - self.model = get_model(model_params, sampled).to(env.DEVICE) + def setUp(self): + model_params = copy.deepcopy(model_se_e2_a) + sampled = make_sample(model_params) + self.type_split = False + self.model = get_model(model_params, sampled).to(env.DEVICE) + class TestEnergyModelDPA1Force(unittest.TestCase, TestForce): - def setUp(self): - model_params = copy.deepcopy(model_dpa1) - sampled = make_sample(model_params) - self.type_split = True - self.model = get_model(model_params, sampled).to(env.DEVICE) + def setUp(self): + model_params = copy.deepcopy(model_dpa1) + sampled = make_sample(model_params) + self.type_split = True + self.model = get_model(model_params, sampled).to(env.DEVICE) + class TestEnergyModelDPA1Virial(unittest.TestCase, TestVirial): - def setUp(self): - model_params = copy.deepcopy(model_dpa1) - sampled = make_sample(model_params) - self.type_split = True - self.model = get_model(model_params, sampled).to(env.DEVICE) + def setUp(self): + model_params = copy.deepcopy(model_dpa1) + sampled = make_sample(model_params) + self.type_split = True + self.model = get_model(model_params, sampled).to(env.DEVICE) class TestEnergyModelDPA2Force(unittest.TestCase, TestForce): - def setUp(self): - model_params_sample = copy.deepcopy(model_dpa2) - model_params_sample["descriptor"]["rcut"] = model_params_sample["descriptor"]["repinit_rcut"] - model_params_sample["descriptor"]["sel"] = model_params_sample["descriptor"]["repinit_nsel"] - sampled = make_sample(model_params_sample) - model_params = copy.deepcopy(model_dpa2) - self.type_split = True - self.model = get_model(model_params, sampled).to(env.DEVICE) - -class TestEnergyModelDPAUniVirial(unittest.TestCase, TestVirial): - def setUp(self): - model_params_sample = copy.deepcopy(model_dpa2) - model_params_sample["descriptor"]["rcut"] = model_params_sample["descriptor"]["repinit_rcut"] - model_params_sample["descriptor"]["sel"] = model_params_sample["descriptor"]["repinit_nsel"] - sampled = make_sample(model_params_sample) - model_params = copy.deepcopy(model_dpa2) - self.type_split = True - self.model = get_model(model_params, sampled).to(env.DEVICE) + def setUp(self): + model_params_sample = copy.deepcopy(model_dpa2) + model_params_sample["descriptor"]["rcut"] = model_params_sample["descriptor"][ + "repinit_rcut" + ] + model_params_sample["descriptor"]["sel"] = model_params_sample["descriptor"][ + "repinit_nsel" + ] + sampled = make_sample(model_params_sample) + model_params = copy.deepcopy(model_dpa2) + self.type_split = True + self.model = get_model(model_params, sampled).to(env.DEVICE) +class TestEnergyModelDPAUniVirial(unittest.TestCase, TestVirial): + def setUp(self): + model_params_sample = copy.deepcopy(model_dpa2) + model_params_sample["descriptor"]["rcut"] = model_params_sample["descriptor"][ + "repinit_rcut" + ] + model_params_sample["descriptor"]["sel"] = model_params_sample["descriptor"][ + "repinit_nsel" + ] + sampled = make_sample(model_params_sample) + model_params = copy.deepcopy(model_dpa2) + self.type_split = True + self.model = get_model(model_params, sampled).to(env.DEVICE) diff --git a/tests/test_calculator.py b/tests/test_calculator.py index 7cf4fe07..7018b4ac 100644 --- a/tests/test_calculator.py +++ b/tests/test_calculator.py @@ -1,12 +1,18 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later import json -import os -import torch import unittest -from copy import deepcopy +from copy import ( + deepcopy, +) + +import torch -from deepmd_pt.entrypoints.main import get_trainer -from deepmd_pt.infer import inference -from deepmd_pt.utils.ase_calc import DPCalculator +from deepmd_pt.entrypoints.main import ( + get_trainer, +) +from deepmd_pt.utils.ase_calc import ( + DPCalculator, +) dtype = torch.float64 @@ -14,11 +20,13 @@ class TestCalculator(unittest.TestCase): def setUp(self): input_json = "tests/water/se_atten.json" - with open(input_json, "r") as f: + with open(input_json) as f: self.config = json.load(f) self.config["training"]["numb_steps"] = 1 self.config["training"]["save_freq"] = 1 - self.config["training"]["validation_data"]["systems"] = ["tests/water/data/single"] + self.config["training"]["validation_data"]["systems"] = [ + "tests/water/data/single" + ] self.input_json = "test_dp_test.json" with open(self.input_json, "w") as fp: json.dump(self.config, fp, indent=4) @@ -32,7 +40,9 @@ def setUp(self): self.calculator = DPCalculator("model.pt") def test_calculator(self): - from ase import Atoms + from ase import ( + Atoms, + ) natoms = 5 cell = torch.eye(3, dtype=dtype) * 10 @@ -53,7 +63,10 @@ def test_calculator(self): calculator=self.calculator, ) e0, f0 = ase_atoms0.get_potential_energy(), ase_atoms0.get_forces() - s0, v0 = ase_atoms0.get_stress(voigt=True), -ase_atoms0.get_stress(voigt=False) * ase_atoms0.get_volume() + s0, v0 = ( + ase_atoms0.get_stress(voigt=True), + -ase_atoms0.get_stress(voigt=False) * ase_atoms0.get_volume(), + ) ase_atoms1 = Atoms( numbers=[atomic_numbers[i] for i in idx_perm], @@ -63,9 +76,12 @@ def test_calculator(self): calculator=self.calculator, ) e1, f1 = ase_atoms1.get_potential_energy(), ase_atoms1.get_forces() - s1, v1 = ase_atoms1.get_stress(voigt=True), -ase_atoms1.get_stress(voigt=False) * ase_atoms1.get_volume() + s1, v1 = ( + ase_atoms1.get_stress(voigt=True), + -ase_atoms1.get_stress(voigt=False) * ase_atoms1.get_volume(), + ) - assert type(e0) == float + assert isinstance(e0, float) assert f0.shape == (natoms, 3) assert v0.shape == (3, 3) torch.testing.assert_close(e0, e1, rtol=low_prec, atol=prec) diff --git a/tests/test_deeppot.py b/tests/test_deeppot.py index 3f678d08..3749e842 100644 --- a/tests/test_deeppot.py +++ b/tests/test_deeppot.py @@ -1,22 +1,36 @@ -from copy import deepcopy +# SPDX-License-Identifier: LGPL-3.0-or-later import json import unittest -from pathlib import Path +from copy import ( + deepcopy, +) +from pathlib import ( + Path, +) import numpy as np -from deepmd_pt.entrypoints.main import get_trainer -from deepmd_pt.infer.deep_eval import DeepPot + +from deepmd_pt.entrypoints.main import ( + get_trainer, +) +from deepmd_pt.infer.deep_eval import ( + DeepPot, +) class TestDeepPot(unittest.TestCase): def setUp(self): input_json = str(Path(__file__).parent / "water/se_atten.json") - with open(input_json, "r") as f: + with open(input_json) as f: self.config = json.load(f) self.config["training"]["numb_steps"] = 1 self.config["training"]["save_freq"] = 1 - self.config["training"]["training_data"]["systems"] = [str(Path(__file__).parent / "water/data/single")] - self.config["training"]["validation_data"]["systems"] = [str(Path(__file__).parent / "water/data/single")] + self.config["training"]["training_data"]["systems"] = [ + str(Path(__file__).parent / "water/data/single") + ] + self.config["training"]["validation_data"]["systems"] = [ + str(Path(__file__).parent / "water/data/single") + ] self.input_json = "test_dp_test.json" with open(self.input_json, "w") as fp: json.dump(self.config, fp, indent=4) @@ -30,14 +44,38 @@ def setUp(self): def test_dp_test(self): dp = DeepPot(str(self.model)) - cell = np.array([ - 5.122106549439247480e+00,4.016537340154059388e-01,6.951654033828678081e-01, - 4.016537340154059388e-01,6.112136112297989143e+00,8.178091365465004481e-01, - 6.951654033828678081e-01,8.178091365465004481e-01,6.159552512682983760e+00, - ]).reshape(1, 3, 3) - coord = np.array([ - 2.978060152121375648e+00,3.588469695887098077e+00,2.792459820604495491e+00,3.895592322591093115e+00,2.712091020667753760e+00,1.366836847133650501e+00,9.955616170888935690e-01,4.121324820711413039e+00,1.817239061889086571e+00,3.553661462345699906e+00,5.313046969500791583e+00,6.635182659098815883e+00,6.088601018589653080e+00,6.575011420004332585e+00,6.825240650611076099e+00 - ]).reshape(1, -1, 3) + cell = np.array( + [ + 5.122106549439247480e00, + 4.016537340154059388e-01, + 6.951654033828678081e-01, + 4.016537340154059388e-01, + 6.112136112297989143e00, + 8.178091365465004481e-01, + 6.951654033828678081e-01, + 8.178091365465004481e-01, + 6.159552512682983760e00, + ] + ).reshape(1, 3, 3) + coord = np.array( + [ + 2.978060152121375648e00, + 3.588469695887098077e00, + 2.792459820604495491e00, + 3.895592322591093115e00, + 2.712091020667753760e00, + 1.366836847133650501e00, + 9.955616170888935690e-01, + 4.121324820711413039e00, + 1.817239061889086571e00, + 3.553661462345699906e00, + 5.313046969500791583e00, + 6.635182659098815883e00, + 6.088601018589653080e00, + 6.575011420004332585e00, + 6.825240650611076099e00, + ] + ).reshape(1, -1, 3) atype = np.array([0, 0, 0, 1, 1]).reshape(1, -1) e, f, v, ae, av = dp.eval(coord, cell, atype, atomic=True) diff --git a/tests/test_descriptor.py b/tests/test_descriptor.py index cc2ccc00..0c902da4 100644 --- a/tests/test_descriptor.py +++ b/tests/test_descriptor.py @@ -1,21 +1,38 @@ -import numpy as np +# SPDX-License-Identifier: LGPL-3.0-or-later import os -import torch import unittest +import numpy as np import tensorflow.compat.v1 as tf +import torch tf.disable_eager_execution() -from deepmd.env import op_module - -from deepmd_pt.utils import dp_random -from deepmd_pt.utils.dataset import DeepmdDataSet -from deepmd_pt.model.descriptor import prod_env_mat_se_a -from deepmd_pt.utils.env import * -from deepmd.common import expand_sys_str import json +from deepmd.tf.common import ( + expand_sys_str, +) +from deepmd.tf.env import ( + op_module, +) + +from deepmd_pt.model.descriptor import ( + prod_env_mat_se_a, +) +from deepmd_pt.utils import ( + dp_random, +) +from deepmd_pt.utils.dataset import ( + DeepmdDataSet, +) +from deepmd_pt.utils.env import ( + DEVICE, + GLOBAL_NP_FLOAT_PRECISION, + GLOBAL_PT_FLOAT_PRECISION, + TEST_CONFIG, +) + CUR_DIR = os.path.dirname(__file__) @@ -27,80 +44,91 @@ def base_se_a(rcut, rcut_smth, sel, batch, mean, stddev): atype = tf.placeholder(tf.int32, [None, None]) natoms_vec = tf.placeholder(tf.int32, [None]) default_mesh = tf.placeholder(tf.int32, [None]) - stat_descrpt, descrpt_deriv, rij, nlist \ - = op_module.prod_env_mat_a(coord, - atype, - natoms_vec, - box, - default_mesh, - tf.constant(mean), - tf.constant(stddev), - rcut_a=-1., - rcut_r=rcut, - rcut_r_smth=rcut_smth, - sel_a=sel, - sel_r=[0 for i in sel]) + stat_descrpt, descrpt_deriv, rij, nlist = op_module.prod_env_mat_a( + coord, + atype, + natoms_vec, + box, + default_mesh, + tf.constant(mean), + tf.constant(stddev), + rcut_a=-1.0, + rcut_r=rcut, + rcut_r_smth=rcut_smth, + sel_a=sel, + sel_r=[0 for i in sel], + ) net_deriv_reshape = tf.ones_like(stat_descrpt) - force = op_module.prod_force_se_a(net_deriv_reshape, - descrpt_deriv, - nlist, - natoms_vec, - n_a_sel=sum(sel), - n_r_sel=0) + force = op_module.prod_force_se_a( + net_deriv_reshape, + descrpt_deriv, + nlist, + natoms_vec, + n_a_sel=sum(sel), + n_r_sel=0, + ) with tf.Session(graph=g) as sess: - return sess.run([stat_descrpt, force, nlist], feed_dict={ - coord: batch['coord'], - box: batch['box'], - natoms_vec: batch['natoms'], - atype: batch['atype'], - default_mesh: np.array([0, 0, 0, 2, 2, 2]) - }) + return sess.run( + [stat_descrpt, force, nlist], + feed_dict={ + coord: batch["coord"], + box: batch["box"], + natoms_vec: batch["natoms"], + atype: batch["atype"], + default_mesh: np.array([0, 0, 0, 2, 2, 2]), + }, + ) class TestSeA(unittest.TestCase): - def setUp(self): dp_random.seed(20) - with open(TEST_CONFIG, 'r') as fin: + with open(TEST_CONFIG) as fin: content = fin.read() config = json.loads(content) - model_config = config['model'] - self.rcut = model_config['descriptor']['rcut'] - self.rcut_smth = model_config['descriptor']['rcut_smth'] - self.sel = model_config['descriptor']['sel'] - self.bsz = config['training']['training_data']['batch_size'] - self.systems = config['training']['validation_data']['systems'] + model_config = config["model"] + self.rcut = model_config["descriptor"]["rcut"] + self.rcut_smth = model_config["descriptor"]["rcut_smth"] + self.sel = model_config["descriptor"]["sel"] + self.bsz = config["training"]["training_data"]["batch_size"] + self.systems = config["training"]["validation_data"]["systems"] if isinstance(self.systems, str): self.systems = expand_sys_str(self.systems) - ds = DeepmdDataSet(self.systems, self.bsz, model_config['type_map'], self.rcut, self.sel) + ds = DeepmdDataSet( + self.systems, self.bsz, model_config["type_map"], self.rcut, self.sel + ) self.np_batch, self.pt_batch = ds.get_batch() self.sec = np.cumsum(self.sel) self.ntypes = len(self.sel) self.nnei = sum(self.sel) def test_consistency(self): - avg_zero = torch.zeros([self.ntypes, self.nnei * 4], dtype=GLOBAL_PT_FLOAT_PRECISION) - std_ones = torch.ones([self.ntypes, self.nnei * 4], dtype=GLOBAL_PT_FLOAT_PRECISION) + avg_zero = torch.zeros( + [self.ntypes, self.nnei * 4], dtype=GLOBAL_PT_FLOAT_PRECISION + ) + std_ones = torch.ones( + [self.ntypes, self.nnei * 4], dtype=GLOBAL_PT_FLOAT_PRECISION + ) base_d, base_force, nlist = base_se_a( rcut=self.rcut, rcut_smth=self.rcut_smth, sel=self.sel, batch=self.np_batch, mean=avg_zero, - stddev=std_ones + stddev=std_ones, ) - pt_coord = self.pt_batch['coord'] + pt_coord = self.pt_batch["coord"] pt_coord.requires_grad_(True) - index = self.pt_batch['mapping'].unsqueeze(-1).expand(-1, -1, 3) + index = self.pt_batch["mapping"].unsqueeze(-1).expand(-1, -1, 3) extended_coord = torch.gather(pt_coord, dim=1, index=index) - extended_coord = extended_coord - self.pt_batch['shift'] + extended_coord = extended_coord - self.pt_batch["shift"] my_d, _, _ = prod_env_mat_se_a( extended_coord.to(DEVICE), - self.pt_batch['nlist'], - self.pt_batch['atype'], + self.pt_batch["nlist"], + self.pt_batch["atype"], avg_zero.reshape([-1, self.nnei, 4]).to(DEVICE), std_ones.reshape([-1, self.nnei, 4]).to(DEVICE), self.rcut, @@ -114,8 +142,8 @@ def test_consistency(self): my_d = my_d.view(bsz, -1, self.nnei, 4).cpu().detach().numpy() nlist = nlist.reshape(bsz, -1, self.nnei) - mapping = self.pt_batch['mapping'].cpu() - my_nlist = self.pt_batch['nlist'].view(bsz, -1).cpu() + mapping = self.pt_batch["mapping"].cpu() + my_nlist = self.pt_batch["nlist"].view(bsz, -1).cpu() mask = my_nlist == -1 my_nlist = my_nlist * ~mask my_nlist = torch.gather(mapping, dim=-1, index=my_nlist) @@ -128,5 +156,5 @@ def test_consistency(self): self.assertTrue(np.allclose(base_force, -my_force)) -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/tests/test_descriptor_dpa1.py b/tests/test_descriptor_dpa1.py index a0957dbf..f68b6af7 100644 --- a/tests/test_descriptor_dpa1.py +++ b/tests/test_descriptor_dpa1.py @@ -1,17 +1,30 @@ -import numpy as np +# SPDX-License-Identifier: LGPL-3.0-or-later +import json import os -import torch import unittest -import json -from typing import Optional -from pathlib import Path +from pathlib import ( + Path, +) -from deepmd_pt.model.descriptor import DescrptBlockSeAtten, DescrptDPA1 -from deepmd_pt.utils import env -from deepmd_pt.utils.region import normalize_coord -from deepmd_pt.utils.nlist import extend_coord_with_ghosts, build_neighbor_list -from deepmd_pt.model.network import TypeEmbedNet -from deepmd_pt.model.model.ener import process_nlist, process_nlist_gathered +import torch + +from deepmd_pt.model.descriptor import ( + DescrptBlockSeAtten, + DescrptDPA1, +) +from deepmd_pt.model.network.network import ( + TypeEmbedNet, +) +from deepmd_pt.utils import ( + env, +) +from deepmd_pt.utils.nlist import ( + build_neighbor_list, + extend_coord_with_ghosts, +) +from deepmd_pt.utils.region import ( + normalize_coord, +) dtype = torch.float64 torch.set_default_dtype(dtype) @@ -20,133 +33,318 @@ class TestDPA1(unittest.TestCase): - def setUp(self): - cell = [ - 5.122106549439247480e+00,4.016537340154059388e-01,6.951654033828678081e-01, - 4.016537340154059388e-01,6.112136112297989143e+00,8.178091365465004481e-01, - 6.951654033828678081e-01,8.178091365465004481e-01,6.159552512682983760e+00, - ] - self.cell = torch.Tensor(cell).view(1,3,3).to(env.DEVICE) - coord = [ - 2.978060152121375648e+00,3.588469695887098077e+00,2.792459820604495491e+00,3.895592322591093115e+00,2.712091020667753760e+00,1.366836847133650501e+00,9.955616170888935690e-01,4.121324820711413039e+00,1.817239061889086571e+00,3.553661462345699906e+00,5.313046969500791583e+00,6.635182659098815883e+00,6.088601018589653080e+00,6.575011420004332585e+00,6.825240650611076099e+00 - ] - self.coord = torch.Tensor(coord).view(1,-1,3).to(env.DEVICE) - self.atype = torch.IntTensor([0, 0, 0, 1, 1]).view(1,-1).to(env.DEVICE) - self.ref_d = torch.Tensor([ - 8.382518544113587780e-03,-3.390120566088597812e-03,6.145981571114964362e-03,-4.880300873973819273e-03,-3.390120566088597812e-03,1.372540996564941464e-03,-2.484163690574096341e-03,1.972313058658722688e-03,6.145981571114964362e-03,-2.484163690574096341e-03,4.507748738021747671e-03,-3.579717194906019764e-03,-4.880300873973819273e-03,1.972313058658722688e-03,-3.579717194906019764e-03,2.842794615687799838e-03,6.733043802494966066e-04,-2.721540313345096771e-04,4.936158526085561134e-04,-3.919743287822345223e-04,-1.311123004527576900e-02,5.301179352601203924e-03,-9.614612349318877454e-03,7.634884975521277241e-03,8.877088452901006621e-03,-3.590945566653638409e-03,6.508042782015627942e-03,-5.167671664327699171e-03,-2.697241463040870365e-03,1.091350446825975137e-03,-1.976895708961905022e-03,1.569671412121975348e-03,8.645131636261189911e-03,-3.557395265621639355e-03,6.298048561552698106e-03,-4.999272007935521948e-03,-3.557395265621639355e-03,1.467866637220284964e-03,-2.587004431651147504e-03,2.052752235601402672e-03,6.298048561552698106e-03,-2.587004431651147504e-03,4.594085551315935101e-03,-3.647656549789176847e-03,-4.999272007935521948e-03,2.052752235601402672e-03,-3.647656549789176847e-03,2.896359275520481256e-03,6.689620176492027878e-04,-2.753606422414641049e-04,4.864958810186969444e-04,-3.860599754167503119e-04,-1.349238259226558101e-02,5.547478630961994242e-03,-9.835472300819447095e-03,7.808197926069362048e-03,9.220744348752592245e-03,-3.795799103392961601e-03,6.716516319358462918e-03,-5.331265718473574867e-03,-2.783836698392940304e-03,1.147461939123531121e-03,-2.025013030986024063e-03,1.606944814423778541e-03,9.280385723343491378e-03,-3.515852178447095942e-03,7.085282215778941628e-03,-5.675852414643783178e-03,-3.515852178447095942e-03,1.337760635271160884e-03,-2.679428786337713451e-03,2.145400621815936413e-03,7.085282215778941628e-03,-2.679428786337713451e-03,5.414439648102228192e-03,-4.338426468139268931e-03,-5.675852414643783178e-03,2.145400621815936413e-03,-4.338426468139268931e-03,3.476467482674507146e-03,7.166961981167455130e-04,-2.697932188839837972e-04,5.474643906631899504e-04,-4.386556623669893621e-04,-1.480434821331240956e-02,5.604647062899507579e-03,-1.130745349141585449e-02,9.059113563516829268e-03,9.758791063112262978e-03,-3.701477720487638626e-03,7.448215522796466058e-03,-5.966057584545172120e-03,-2.845102393948158344e-03,1.078743584169829543e-03,-2.170093031447992756e-03,1.738010461687942770e-03,9.867599071916231118e-03,-3.811041717688905522e-03,7.121877634386481262e-03,-5.703120290113914553e-03,-3.811041717688905522e-03,1.474046183772771213e-03,-2.747386907428428938e-03,2.199711055637492037e-03,7.121877634386481262e-03,-2.747386907428428938e-03,5.145050639440944609e-03,-4.120642824501622239e-03,-5.703120290113914553e-03,2.199711055637492037e-03,-4.120642824501622239e-03,3.300262321758350853e-03,1.370499995344566383e-03,-5.313041843655797901e-04,9.860110343046961986e-04,-7.892505817954784597e-04,-1.507686316307561489e-02,5.818961290579217904e-03,-1.088774506142304276e-02,8.719460408506790952e-03,9.764630842803939323e-03,-3.770134041110058572e-03,7.049438389985595785e-03,-5.645302934019884485e-03,-3.533582373572779437e-03,1.367148320603491559e-03,-2.546602904764623705e-03,2.038882844528267305e-03,7.448297038731285964e-03,-2.924276815200288742e-03,5.355960540523636154e-03,-4.280386435083473329e-03,-2.924276815200288742e-03,1.150311064893848757e-03,-2.100635980860638373e-03,1.678427895009850001e-03,5.355960540523636154e-03,-2.100635980860638373e-03,3.853607053247790071e-03,-3.080076301871465493e-03,-4.280386435083473329e-03,1.678427895009850001e-03,-3.080076301871465493e-03,2.461876613756722523e-03,9.730712866459405395e-04,-3.821759579990726546e-04,6.994242056622360787e-04,-5.589662297882965055e-04,-1.138916742131982317e-02,4.469391132927387489e-03,-8.192016282448397885e-03,6.547234460517113892e-03,7.460070829043288082e-03,-2.929867802018087421e-03,5.363646855497249989e-03,-4.286347242903034739e-03,-2.643569023340565718e-03,1.038826463247002245e-03,-1.899910089750410976e-03,1.518237240362583541e-03 - ]).to(env.DEVICE) - with open(Path(CUR_DIR)/"models"/"dpa1.json") as fp: - self.model_json = json.load(fp) - self.file_model_param = Path(CUR_DIR)/"models"/"dpa1.pth" - self.file_type_embed = Path(CUR_DIR)/"models"/"dpa2_tebd.pth" - - def test_descriptor_block(self): - # torch.manual_seed(0) - model_dpa1 = self.model_json - dparams = model_dpa1["descriptor"] - ntypes = len(model_dpa1["type_map"]) - assert "se_atten" == dparams.pop("type") - dparams["ntypes"] = ntypes - des = DescrptBlockSeAtten( - **dparams, - ) - des.load_state_dict(torch.load(self.file_model_param)) - rcut = dparams["rcut"] - nsel = dparams["sel"] - coord = self.coord - atype = self.atype - box = self.cell - nf, nloc = coord.shape[:2] - coord_normalized = normalize_coord( - coord, box.reshape(-1, 3, 3)) - extended_coord, extended_atype, mapping = extend_coord_with_ghosts( - coord_normalized, atype, box, rcut) - # single nlist - nlist = build_neighbor_list( - extended_coord, extended_atype, nloc, - rcut, nsel, distinguish_types=False) - # handel type_embedding - type_embedding = TypeEmbedNet(ntypes, 8) - type_embedding.load_state_dict(torch.load(self.file_type_embed)) + def setUp(self): + cell = [ + 5.122106549439247480e00, + 4.016537340154059388e-01, + 6.951654033828678081e-01, + 4.016537340154059388e-01, + 6.112136112297989143e00, + 8.178091365465004481e-01, + 6.951654033828678081e-01, + 8.178091365465004481e-01, + 6.159552512682983760e00, + ] + self.cell = torch.Tensor(cell).view(1, 3, 3).to(env.DEVICE) + coord = [ + 2.978060152121375648e00, + 3.588469695887098077e00, + 2.792459820604495491e00, + 3.895592322591093115e00, + 2.712091020667753760e00, + 1.366836847133650501e00, + 9.955616170888935690e-01, + 4.121324820711413039e00, + 1.817239061889086571e00, + 3.553661462345699906e00, + 5.313046969500791583e00, + 6.635182659098815883e00, + 6.088601018589653080e00, + 6.575011420004332585e00, + 6.825240650611076099e00, + ] + self.coord = torch.Tensor(coord).view(1, -1, 3).to(env.DEVICE) + self.atype = torch.IntTensor([0, 0, 0, 1, 1]).view(1, -1).to(env.DEVICE) + self.ref_d = torch.Tensor( + [ + 8.382518544113587780e-03, + -3.390120566088597812e-03, + 6.145981571114964362e-03, + -4.880300873973819273e-03, + -3.390120566088597812e-03, + 1.372540996564941464e-03, + -2.484163690574096341e-03, + 1.972313058658722688e-03, + 6.145981571114964362e-03, + -2.484163690574096341e-03, + 4.507748738021747671e-03, + -3.579717194906019764e-03, + -4.880300873973819273e-03, + 1.972313058658722688e-03, + -3.579717194906019764e-03, + 2.842794615687799838e-03, + 6.733043802494966066e-04, + -2.721540313345096771e-04, + 4.936158526085561134e-04, + -3.919743287822345223e-04, + -1.311123004527576900e-02, + 5.301179352601203924e-03, + -9.614612349318877454e-03, + 7.634884975521277241e-03, + 8.877088452901006621e-03, + -3.590945566653638409e-03, + 6.508042782015627942e-03, + -5.167671664327699171e-03, + -2.697241463040870365e-03, + 1.091350446825975137e-03, + -1.976895708961905022e-03, + 1.569671412121975348e-03, + 8.645131636261189911e-03, + -3.557395265621639355e-03, + 6.298048561552698106e-03, + -4.999272007935521948e-03, + -3.557395265621639355e-03, + 1.467866637220284964e-03, + -2.587004431651147504e-03, + 2.052752235601402672e-03, + 6.298048561552698106e-03, + -2.587004431651147504e-03, + 4.594085551315935101e-03, + -3.647656549789176847e-03, + -4.999272007935521948e-03, + 2.052752235601402672e-03, + -3.647656549789176847e-03, + 2.896359275520481256e-03, + 6.689620176492027878e-04, + -2.753606422414641049e-04, + 4.864958810186969444e-04, + -3.860599754167503119e-04, + -1.349238259226558101e-02, + 5.547478630961994242e-03, + -9.835472300819447095e-03, + 7.808197926069362048e-03, + 9.220744348752592245e-03, + -3.795799103392961601e-03, + 6.716516319358462918e-03, + -5.331265718473574867e-03, + -2.783836698392940304e-03, + 1.147461939123531121e-03, + -2.025013030986024063e-03, + 1.606944814423778541e-03, + 9.280385723343491378e-03, + -3.515852178447095942e-03, + 7.085282215778941628e-03, + -5.675852414643783178e-03, + -3.515852178447095942e-03, + 1.337760635271160884e-03, + -2.679428786337713451e-03, + 2.145400621815936413e-03, + 7.085282215778941628e-03, + -2.679428786337713451e-03, + 5.414439648102228192e-03, + -4.338426468139268931e-03, + -5.675852414643783178e-03, + 2.145400621815936413e-03, + -4.338426468139268931e-03, + 3.476467482674507146e-03, + 7.166961981167455130e-04, + -2.697932188839837972e-04, + 5.474643906631899504e-04, + -4.386556623669893621e-04, + -1.480434821331240956e-02, + 5.604647062899507579e-03, + -1.130745349141585449e-02, + 9.059113563516829268e-03, + 9.758791063112262978e-03, + -3.701477720487638626e-03, + 7.448215522796466058e-03, + -5.966057584545172120e-03, + -2.845102393948158344e-03, + 1.078743584169829543e-03, + -2.170093031447992756e-03, + 1.738010461687942770e-03, + 9.867599071916231118e-03, + -3.811041717688905522e-03, + 7.121877634386481262e-03, + -5.703120290113914553e-03, + -3.811041717688905522e-03, + 1.474046183772771213e-03, + -2.747386907428428938e-03, + 2.199711055637492037e-03, + 7.121877634386481262e-03, + -2.747386907428428938e-03, + 5.145050639440944609e-03, + -4.120642824501622239e-03, + -5.703120290113914553e-03, + 2.199711055637492037e-03, + -4.120642824501622239e-03, + 3.300262321758350853e-03, + 1.370499995344566383e-03, + -5.313041843655797901e-04, + 9.860110343046961986e-04, + -7.892505817954784597e-04, + -1.507686316307561489e-02, + 5.818961290579217904e-03, + -1.088774506142304276e-02, + 8.719460408506790952e-03, + 9.764630842803939323e-03, + -3.770134041110058572e-03, + 7.049438389985595785e-03, + -5.645302934019884485e-03, + -3.533582373572779437e-03, + 1.367148320603491559e-03, + -2.546602904764623705e-03, + 2.038882844528267305e-03, + 7.448297038731285964e-03, + -2.924276815200288742e-03, + 5.355960540523636154e-03, + -4.280386435083473329e-03, + -2.924276815200288742e-03, + 1.150311064893848757e-03, + -2.100635980860638373e-03, + 1.678427895009850001e-03, + 5.355960540523636154e-03, + -2.100635980860638373e-03, + 3.853607053247790071e-03, + -3.080076301871465493e-03, + -4.280386435083473329e-03, + 1.678427895009850001e-03, + -3.080076301871465493e-03, + 2.461876613756722523e-03, + 9.730712866459405395e-04, + -3.821759579990726546e-04, + 6.994242056622360787e-04, + -5.589662297882965055e-04, + -1.138916742131982317e-02, + 4.469391132927387489e-03, + -8.192016282448397885e-03, + 6.547234460517113892e-03, + 7.460070829043288082e-03, + -2.929867802018087421e-03, + 5.363646855497249989e-03, + -4.286347242903034739e-03, + -2.643569023340565718e-03, + 1.038826463247002245e-03, + -1.899910089750410976e-03, + 1.518237240362583541e-03, + ] + ).to(env.DEVICE) + with open(Path(CUR_DIR) / "models" / "dpa1.json") as fp: + self.model_json = json.load(fp) + self.file_model_param = Path(CUR_DIR) / "models" / "dpa1.pth" + self.file_type_embed = Path(CUR_DIR) / "models" / "dpa2_tebd.pth" - ## to save model parameters - # torch.save(des.state_dict(), 'model_weights.pth') - # torch.save(type_embedding.state_dict(), 'model_weights.pth') - descriptor, env_mat, diff, rot_mat, sw = \ - des( - nlist, - extended_coord, - extended_atype, - type_embedding(extended_atype), - mapping=None, - ) - # np.savetxt('tmp.out', descriptor.detach().numpy().reshape(1,-1), delimiter=",") - self.assertEqual(descriptor.shape[-1], des.get_dim_out()) - self.assertAlmostEqual(6., des.get_rcut()) - self.assertEqual(30, des.get_nsel()) - self.assertEqual(2, des.get_ntype()) - torch.testing.assert_close(descriptor.view(-1), self.ref_d, atol=1e-10, rtol=1e-10) + def test_descriptor_block(self): + # torch.manual_seed(0) + model_dpa1 = self.model_json + dparams = model_dpa1["descriptor"] + ntypes = len(model_dpa1["type_map"]) + assert "se_atten" == dparams.pop("type") + dparams["ntypes"] = ntypes + des = DescrptBlockSeAtten( + **dparams, + ) + des.load_state_dict(torch.load(self.file_model_param)) + rcut = dparams["rcut"] + nsel = dparams["sel"] + coord = self.coord + atype = self.atype + box = self.cell + nf, nloc = coord.shape[:2] + coord_normalized = normalize_coord(coord, box.reshape(-1, 3, 3)) + extended_coord, extended_atype, mapping = extend_coord_with_ghosts( + coord_normalized, atype, box, rcut + ) + # single nlist + nlist = build_neighbor_list( + extended_coord, extended_atype, nloc, rcut, nsel, distinguish_types=False + ) + # handel type_embedding + type_embedding = TypeEmbedNet(ntypes, 8) + type_embedding.load_state_dict(torch.load(self.file_type_embed)) + ## to save model parameters + # torch.save(des.state_dict(), 'model_weights.pth') + # torch.save(type_embedding.state_dict(), 'model_weights.pth') + descriptor, env_mat, diff, rot_mat, sw = des( + nlist, + extended_coord, + extended_atype, + type_embedding(extended_atype), + mapping=None, + ) + # np.savetxt('tmp.out', descriptor.detach().numpy().reshape(1,-1), delimiter=",") + self.assertEqual(descriptor.shape[-1], des.get_dim_out()) + self.assertAlmostEqual(6.0, des.get_rcut()) + self.assertEqual(30, des.get_nsel()) + self.assertEqual(2, des.get_ntype()) + torch.testing.assert_close( + descriptor.view(-1), self.ref_d, atol=1e-10, rtol=1e-10 + ) - def test_descriptor(self): - with open(Path(CUR_DIR)/"models"/"dpa1.json") as fp: - self.model_json = json.load(fp) - model_dpa2 = self.model_json - ntypes = len(model_dpa2["type_map"]) - dparams = model_dpa2["descriptor"] - dparams["ntypes"] = ntypes - assert dparams.pop("type") == "se_atten" - dparams["concat_output_tebd"] = False - des = DescrptDPA1( - **dparams, - ) - target_dict = des.state_dict() - source_dict = torch.load(self.file_model_param) - type_embd_dict = torch.load(self.file_type_embed) - target_dict = translate_se_atten_and_type_embd_dicts_to_dpa1( - target_dict, - source_dict, - type_embd_dict, - ) - des.load_state_dict(target_dict) + def test_descriptor(self): + with open(Path(CUR_DIR) / "models" / "dpa1.json") as fp: + self.model_json = json.load(fp) + model_dpa2 = self.model_json + ntypes = len(model_dpa2["type_map"]) + dparams = model_dpa2["descriptor"] + dparams["ntypes"] = ntypes + assert dparams.pop("type") == "se_atten" + dparams["concat_output_tebd"] = False + des = DescrptDPA1( + **dparams, + ) + target_dict = des.state_dict() + source_dict = torch.load(self.file_model_param) + type_embd_dict = torch.load(self.file_type_embed) + target_dict = translate_se_atten_and_type_embd_dicts_to_dpa1( + target_dict, + source_dict, + type_embd_dict, + ) + des.load_state_dict(target_dict) - coord = self.coord - atype = self.atype - box = self.cell - nf, nloc = coord.shape[:2] - coord_normalized = normalize_coord( - coord, box.reshape(-1, 3, 3)) - extended_coord, extended_atype, mapping = extend_coord_with_ghosts( - coord_normalized, atype, box, des.get_rcut()) - nlist = build_neighbor_list( - extended_coord, extended_atype, nloc, - des.get_rcut(), des.get_nsel(), distinguish_types=False, - ) - descriptor, env_mat, diff, rot_mat, sw = \ - des( - extended_coord, - extended_atype, - nlist, - mapping=mapping, - ) - self.assertEqual(descriptor.shape[-1], des.get_dim_out()) - self.assertAlmostEqual(6., des.get_rcut()) - self.assertEqual(30, des.get_nsel()) - self.assertEqual(2, des.get_ntype()) - torch.testing.assert_close(descriptor.view(-1), self.ref_d, atol=1e-10, rtol=1e-10) + coord = self.coord + atype = self.atype + box = self.cell + nf, nloc = coord.shape[:2] + coord_normalized = normalize_coord(coord, box.reshape(-1, 3, 3)) + extended_coord, extended_atype, mapping = extend_coord_with_ghosts( + coord_normalized, atype, box, des.get_rcut() + ) + nlist = build_neighbor_list( + extended_coord, + extended_atype, + nloc, + des.get_rcut(), + des.get_nsel(), + distinguish_types=False, + ) + descriptor, env_mat, diff, rot_mat, sw = des( + extended_coord, + extended_atype, + nlist, + mapping=mapping, + ) + self.assertEqual(descriptor.shape[-1], des.get_dim_out()) + self.assertAlmostEqual(6.0, des.get_rcut()) + self.assertEqual(30, des.get_nsel()) + self.assertEqual(2, des.get_ntype()) + torch.testing.assert_close( + descriptor.view(-1), self.ref_d, atol=1e-10, rtol=1e-10 + ) - dparams["concat_output_tebd"] = True - des = DescrptDPA1( - **dparams, - ) - descriptor, env_mat, diff, rot_mat, sw = \ - des( - extended_coord, - extended_atype, - nlist, - mapping=mapping, - ) - self.assertEqual(descriptor.shape[-1], des.get_dim_out()) + dparams["concat_output_tebd"] = True + des = DescrptDPA1( + **dparams, + ) + descriptor, env_mat, diff, rot_mat, sw = des( + extended_coord, + extended_atype, + nlist, + mapping=mapping, + ) + self.assertEqual(descriptor.shape[-1], des.get_dim_out()) def translate_se_atten_and_type_embd_dicts_to_dpa1( @@ -154,16 +352,16 @@ def translate_se_atten_and_type_embd_dicts_to_dpa1( source_dict, type_embd_dict, ): - all_keys = list(target_dict.keys()) - record = [False for ii in all_keys] - for kk, vv in source_dict.items(): - tk = "se_atten." + kk + all_keys = list(target_dict.keys()) + record = [False for ii in all_keys] + for kk, vv in source_dict.items(): + tk = "se_atten." + kk + record[all_keys.index(tk)] = True + target_dict[tk] = vv + assert len(type_embd_dict.keys()) == 1 + kk = next(iter(type_embd_dict.keys())) + tk = "type_embedding." + kk record[all_keys.index(tk)] = True - target_dict[tk] = vv - assert len(type_embd_dict.keys()) == 1 - kk = [ii for ii in type_embd_dict.keys()][0] - tk = "type_embedding." + kk - record[all_keys.index(tk)] = True - target_dict[tk] = type_embd_dict[kk] - assert(all(record)) - return target_dict + target_dict[tk] = type_embd_dict[kk] + assert all(record) + return target_dict diff --git a/tests/test_descriptor_dpa2.py b/tests/test_descriptor_dpa2.py index 37228808..d1154623 100644 --- a/tests/test_descriptor_dpa2.py +++ b/tests/test_descriptor_dpa2.py @@ -1,17 +1,30 @@ -import numpy as np +# SPDX-License-Identifier: LGPL-3.0-or-later +import json import os -import torch import unittest -import json -from typing import Optional -from pathlib import Path +from pathlib import ( + Path, +) + +import torch -from deepmd_pt.model.descriptor import DescrptBlockHybrid, DescrptDPA2 -from deepmd_pt.utils import env -from deepmd_pt.utils.region import normalize_coord -from deepmd_pt.utils.nlist import extend_coord_with_ghosts, build_neighbor_list -from deepmd_pt.model.network import TypeEmbedNet -from deepmd_pt.model.model.ener import process_nlist, process_nlist_gathered +from deepmd_pt.model.descriptor import ( + DescrptBlockHybrid, + DescrptDPA2, +) +from deepmd_pt.model.network.network import ( + TypeEmbedNet, +) +from deepmd_pt.utils import ( + env, +) +from deepmd_pt.utils.nlist import ( + build_neighbor_list, + extend_coord_with_ghosts, +) +from deepmd_pt.utils.region import ( + normalize_coord, +) dtype = torch.float64 torch.set_default_dtype(dtype) @@ -20,146 +33,213 @@ class TestDPA2(unittest.TestCase): - def setUp(self): - cell = [ - 5.122106549439247480e+00,4.016537340154059388e-01,6.951654033828678081e-01, - 4.016537340154059388e-01,6.112136112297989143e+00,8.178091365465004481e-01, - 6.951654033828678081e-01,8.178091365465004481e-01,6.159552512682983760e+00, - ] - self.cell = torch.Tensor(cell).view(1,3,3).to(env.DEVICE) - coord = [ - 2.978060152121375648e+00,3.588469695887098077e+00,2.792459820604495491e+00,3.895592322591093115e+00,2.712091020667753760e+00,1.366836847133650501e+00,9.955616170888935690e-01,4.121324820711413039e+00,1.817239061889086571e+00,3.553661462345699906e+00,5.313046969500791583e+00,6.635182659098815883e+00,6.088601018589653080e+00,6.575011420004332585e+00,6.825240650611076099e+00 - ] - self.coord = torch.Tensor(coord).view(1,-1,3).to(env.DEVICE) - self.atype = torch.IntTensor([0, 0, 0, 1, 1]).view(1,-1).to(env.DEVICE) - self.ref_d = torch.Tensor([ - 8.435412613327306630e-01,-4.717109614540972440e-01,-1.812643456954206256e+00,-2.315248767961955167e-01,-7.112973006771171613e-01,-4.162041919507591392e-01,-1.505159810095323181e+00,-1.191652416985768403e-01,8.439214937875325617e-01,-4.712976890460106594e-01,-1.812605149396642856e+00,-2.307222236291133766e-01,-7.115427800870099961e-01,-4.164729253167227530e-01,-1.505483119125936797e+00,-1.191288524278367872e-01,8.286420823261241297e-01,-4.535033763979030574e-01,-1.787877160970498425e+00,-1.961763875645104460e-01,-7.475459187804838201e-01,-5.231446874663764346e-01,-1.488399984491664219e+00,-3.974117581747104583e-02,8.283793431613817315e-01,-4.551551577556525729e-01,-1.789253136645859943e+00,-1.977673627726055372e-01,-7.448826048241211639e-01,-5.161350182531234676e-01,-1.487589463573479209e+00,-4.377376017839779143e-02,8.295404560710329944e-01,-4.492219258475603216e-01,-1.784484611185287450e+00,-1.901182059718481143e-01,-7.537407667483000395e-01,-5.384371277650709109e-01,-1.490368056268364549e+00,-3.073744832541754762e-02 - ]).to(env.DEVICE) - with open(Path(CUR_DIR)/"models"/"dpa2_hyb.json") as fp: - self.model_json = json.load(fp) - self.file_model_param = Path(CUR_DIR)/"models"/"dpa2.pth" - self.file_type_embed = Path(CUR_DIR)/"models"/"dpa2_tebd.pth" + def setUp(self): + cell = [ + 5.122106549439247480e00, + 4.016537340154059388e-01, + 6.951654033828678081e-01, + 4.016537340154059388e-01, + 6.112136112297989143e00, + 8.178091365465004481e-01, + 6.951654033828678081e-01, + 8.178091365465004481e-01, + 6.159552512682983760e00, + ] + self.cell = torch.Tensor(cell).view(1, 3, 3).to(env.DEVICE) + coord = [ + 2.978060152121375648e00, + 3.588469695887098077e00, + 2.792459820604495491e00, + 3.895592322591093115e00, + 2.712091020667753760e00, + 1.366836847133650501e00, + 9.955616170888935690e-01, + 4.121324820711413039e00, + 1.817239061889086571e00, + 3.553661462345699906e00, + 5.313046969500791583e00, + 6.635182659098815883e00, + 6.088601018589653080e00, + 6.575011420004332585e00, + 6.825240650611076099e00, + ] + self.coord = torch.Tensor(coord).view(1, -1, 3).to(env.DEVICE) + self.atype = torch.IntTensor([0, 0, 0, 1, 1]).view(1, -1).to(env.DEVICE) + self.ref_d = torch.Tensor( + [ + 8.435412613327306630e-01, + -4.717109614540972440e-01, + -1.812643456954206256e00, + -2.315248767961955167e-01, + -7.112973006771171613e-01, + -4.162041919507591392e-01, + -1.505159810095323181e00, + -1.191652416985768403e-01, + 8.439214937875325617e-01, + -4.712976890460106594e-01, + -1.812605149396642856e00, + -2.307222236291133766e-01, + -7.115427800870099961e-01, + -4.164729253167227530e-01, + -1.505483119125936797e00, + -1.191288524278367872e-01, + 8.286420823261241297e-01, + -4.535033763979030574e-01, + -1.787877160970498425e00, + -1.961763875645104460e-01, + -7.475459187804838201e-01, + -5.231446874663764346e-01, + -1.488399984491664219e00, + -3.974117581747104583e-02, + 8.283793431613817315e-01, + -4.551551577556525729e-01, + -1.789253136645859943e00, + -1.977673627726055372e-01, + -7.448826048241211639e-01, + -5.161350182531234676e-01, + -1.487589463573479209e00, + -4.377376017839779143e-02, + 8.295404560710329944e-01, + -4.492219258475603216e-01, + -1.784484611185287450e00, + -1.901182059718481143e-01, + -7.537407667483000395e-01, + -5.384371277650709109e-01, + -1.490368056268364549e00, + -3.073744832541754762e-02, + ] + ).to(env.DEVICE) + with open(Path(CUR_DIR) / "models" / "dpa2_hyb.json") as fp: + self.model_json = json.load(fp) + self.file_model_param = Path(CUR_DIR) / "models" / "dpa2.pth" + self.file_type_embed = Path(CUR_DIR) / "models" / "dpa2_tebd.pth" - def test_descriptor_hyb(self): - # torch.manual_seed(0) - model_hybrid_dpa2 = self.model_json - dparams = model_hybrid_dpa2["descriptor"] - ntypes = len(model_hybrid_dpa2["type_map"]) - dlist = dparams.pop("list") - des = DescrptBlockHybrid( - dlist, - ntypes, - hybrid_mode=dparams["hybrid_mode"], - ) - model_dict = torch.load(self.file_model_param) - # type_embd of repformer is removed - model_dict.pop("descriptor_list.1.type_embd.embedding.weight") - des.load_state_dict(model_dict) - all_rcut = [ii["rcut"] for ii in dlist] - all_nsel = [ii["sel"] for ii in dlist] - rcut_max = max(all_rcut) - coord = self.coord - atype = self.atype - box = self.cell - nf, nloc = coord.shape[:2] - coord_normalized = normalize_coord( - coord, box.reshape(-1, 3, 3)) - extended_coord, extended_atype, mapping = extend_coord_with_ghosts( - coord_normalized, atype, box, rcut_max) - ## single nlist - # nlist = build_neighbor_list( - # extended_coord, extended_atype, nloc, - # rcut_max, nsel, distinguish_types=False) - nlist_list = [] - for rcut, sel in zip(all_rcut, all_nsel): - nlist_list.append( - build_neighbor_list( - extended_coord, - extended_atype, - nloc, - rcut, - sel, - distinguish_types=False, - )) - nlist = torch.cat(nlist_list, -1) - # handel type_embedding - type_embedding = TypeEmbedNet(ntypes, 8) - type_embedding.load_state_dict(torch.load(self.file_type_embed)) + def test_descriptor_hyb(self): + # torch.manual_seed(0) + model_hybrid_dpa2 = self.model_json + dparams = model_hybrid_dpa2["descriptor"] + ntypes = len(model_hybrid_dpa2["type_map"]) + dlist = dparams.pop("list") + des = DescrptBlockHybrid( + dlist, + ntypes, + hybrid_mode=dparams["hybrid_mode"], + ) + model_dict = torch.load(self.file_model_param) + # type_embd of repformer is removed + model_dict.pop("descriptor_list.1.type_embd.embedding.weight") + des.load_state_dict(model_dict) + all_rcut = [ii["rcut"] for ii in dlist] + all_nsel = [ii["sel"] for ii in dlist] + rcut_max = max(all_rcut) + coord = self.coord + atype = self.atype + box = self.cell + nf, nloc = coord.shape[:2] + coord_normalized = normalize_coord(coord, box.reshape(-1, 3, 3)) + extended_coord, extended_atype, mapping = extend_coord_with_ghosts( + coord_normalized, atype, box, rcut_max + ) + ## single nlist + # nlist = build_neighbor_list( + # extended_coord, extended_atype, nloc, + # rcut_max, nsel, distinguish_types=False) + nlist_list = [] + for rcut, sel in zip(all_rcut, all_nsel): + nlist_list.append( + build_neighbor_list( + extended_coord, + extended_atype, + nloc, + rcut, + sel, + distinguish_types=False, + ) + ) + nlist = torch.cat(nlist_list, -1) + # handel type_embedding + type_embedding = TypeEmbedNet(ntypes, 8) + type_embedding.load_state_dict(torch.load(self.file_type_embed)) - ## to save model parameters - # torch.save(des.state_dict(), 'model_weights.pth') - # torch.save(type_embedding.state_dict(), 'model_weights.pth') - descriptor, env_mat, diff, rot_mat, sw = \ - des( - nlist, - extended_coord, - extended_atype, - type_embedding(extended_atype), - mapping=mapping, - ) - torch.testing.assert_close(descriptor.view(-1), self.ref_d, atol=1e-10, rtol=1e-10) + ## to save model parameters + # torch.save(des.state_dict(), 'model_weights.pth') + # torch.save(type_embedding.state_dict(), 'model_weights.pth') + descriptor, env_mat, diff, rot_mat, sw = des( + nlist, + extended_coord, + extended_atype, + type_embedding(extended_atype), + mapping=mapping, + ) + torch.testing.assert_close( + descriptor.view(-1), self.ref_d, atol=1e-10, rtol=1e-10 + ) + def test_descriptor(self): + with open(Path(CUR_DIR) / "models" / "dpa2.json") as fp: + self.model_json = json.load(fp) + model_dpa2 = self.model_json + ntypes = len(model_dpa2["type_map"]) + dparams = model_dpa2["descriptor"] + dparams["ntypes"] = ntypes + assert dparams.pop("type") == "dpa2" + dparams["concat_output_tebd"] = False + des = DescrptDPA2( + **dparams, + ) + target_dict = des.state_dict() + source_dict = torch.load(self.file_model_param) + # type_embd of repformer is removed + source_dict.pop("descriptor_list.1.type_embd.embedding.weight") + type_embd_dict = torch.load(self.file_type_embed) + target_dict = translate_hybrid_and_type_embd_dicts_to_dpa2( + target_dict, + source_dict, + type_embd_dict, + ) + des.load_state_dict(target_dict) - def test_descriptor(self): - with open(Path(CUR_DIR)/"models"/"dpa2.json") as fp: - self.model_json = json.load(fp) - model_dpa2 = self.model_json - ntypes = len(model_dpa2["type_map"]) - dparams = model_dpa2["descriptor"] - dparams["ntypes"] = ntypes - assert dparams.pop("type") == "dpa2" - dparams["concat_output_tebd"] = False - des = DescrptDPA2( - **dparams, - ) - target_dict = des.state_dict() - source_dict = torch.load(self.file_model_param) - # type_embd of repformer is removed - source_dict.pop("descriptor_list.1.type_embd.embedding.weight") - type_embd_dict = torch.load(self.file_type_embed) - target_dict = translate_hybrid_and_type_embd_dicts_to_dpa2( - target_dict, - source_dict, - type_embd_dict, - ) - des.load_state_dict(target_dict) - - coord = self.coord - atype = self.atype - box = self.cell - nf, nloc = coord.shape[:2] - coord_normalized = normalize_coord( - coord, box.reshape(-1, 3, 3)) - extended_coord, extended_atype, mapping = extend_coord_with_ghosts( - coord_normalized, atype, box, des.repinit.rcut) - nlist = build_neighbor_list( - extended_coord, extended_atype, nloc, - des.repinit.rcut, des.repinit.sel, distinguish_types=False) - descriptor, env_mat, diff, rot_mat, sw = \ - des( - extended_coord, - extended_atype, - nlist, - mapping=mapping, - ) - self.assertEqual(descriptor.shape[-1], des.get_dim_out()) - self.assertAlmostEqual(6., des.get_rcut()) - self.assertEqual(30, des.get_nsel()) - self.assertEqual(2, des.get_ntype()) - torch.testing.assert_close(descriptor.view(-1), self.ref_d, atol=1e-10, rtol=1e-10) + coord = self.coord + atype = self.atype + box = self.cell + nf, nloc = coord.shape[:2] + coord_normalized = normalize_coord(coord, box.reshape(-1, 3, 3)) + extended_coord, extended_atype, mapping = extend_coord_with_ghosts( + coord_normalized, atype, box, des.repinit.rcut + ) + nlist = build_neighbor_list( + extended_coord, + extended_atype, + nloc, + des.repinit.rcut, + des.repinit.sel, + distinguish_types=False, + ) + descriptor, env_mat, diff, rot_mat, sw = des( + extended_coord, + extended_atype, + nlist, + mapping=mapping, + ) + self.assertEqual(descriptor.shape[-1], des.get_dim_out()) + self.assertAlmostEqual(6.0, des.get_rcut()) + self.assertEqual(30, des.get_nsel()) + self.assertEqual(2, des.get_ntype()) + torch.testing.assert_close( + descriptor.view(-1), self.ref_d, atol=1e-10, rtol=1e-10 + ) - dparams["concat_output_tebd"] = True - des = DescrptDPA2( - **dparams, - ) - descriptor, env_mat, diff, rot_mat, sw = \ - des( - extended_coord, - extended_atype, - nlist, - mapping=mapping, - ) - self.assertEqual(descriptor.shape[-1], des.get_dim_out()) + dparams["concat_output_tebd"] = True + des = DescrptDPA2( + **dparams, + ) + descriptor, env_mat, diff, rot_mat, sw = des( + extended_coord, + extended_atype, + nlist, + mapping=mapping, + ) + self.assertEqual(descriptor.shape[-1], des.get_dim_out()) def translate_hybrid_and_type_embd_dicts_to_dpa2( @@ -167,18 +247,18 @@ def translate_hybrid_and_type_embd_dicts_to_dpa2( source_dict, type_embd_dict, ): - all_keys = list(target_dict.keys()) - record = [False for ii in all_keys] - for kk, vv in source_dict.items(): - tk = kk.replace("descriptor_list.1", "repformers") - tk = tk.replace("descriptor_list.0", "repinit") - tk = tk.replace("sequential_transform.0", "g1_shape_tranform") + all_keys = list(target_dict.keys()) + record = [False for ii in all_keys] + for kk, vv in source_dict.items(): + tk = kk.replace("descriptor_list.1", "repformers") + tk = tk.replace("descriptor_list.0", "repinit") + tk = tk.replace("sequential_transform.0", "g1_shape_tranform") + record[all_keys.index(tk)] = True + target_dict[tk] = vv + assert len(type_embd_dict.keys()) == 1 + kk = next(iter(type_embd_dict.keys())) + tk = "type_embedding." + kk record[all_keys.index(tk)] = True - target_dict[tk] = vv - assert len(type_embd_dict.keys()) == 1 - kk = [ii for ii in type_embd_dict.keys()][0] - tk = "type_embedding." + kk - record[all_keys.index(tk)] = True - target_dict[tk] = type_embd_dict[kk] - assert(all(record)) - return target_dict + target_dict[tk] = type_embd_dict[kk] + assert all(record) + return target_dict diff --git a/tests/test_dp_test.py b/tests/test_dp_test.py index 3484c85f..d66e1bde 100644 --- a/tests/test_dp_test.py +++ b/tests/test_dp_test.py @@ -1,22 +1,32 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later import json import os import shutil import unittest -from copy import deepcopy +from copy import ( + deepcopy, +) import numpy as np -from deepmd_pt.entrypoints.main import get_trainer -from deepmd_pt.infer import inference + +from deepmd_pt.entrypoints.main import ( + get_trainer, +) +from deepmd_pt.infer import ( + inference, +) class TestDPTest(unittest.TestCase): def setUp(self): input_json = "tests/water/se_atten.json" - with open(input_json, "r") as f: + with open(input_json) as f: self.config = json.load(f) self.config["training"]["numb_steps"] = 1 self.config["training"]["save_freq"] = 1 - self.config["training"]["validation_data"]["systems"] = ["tests/water/data/single"] + self.config["training"]["validation_data"]["systems"] = [ + "tests/water/data/single" + ] self.input_json = "test_dp_test.json" with open(self.input_json, "w") as fp: json.dump(self.config, fp, indent=4) @@ -25,7 +35,7 @@ def test_dp_test(self): trainer = get_trainer(deepcopy(self.config)) trainer.run() - input_dict, label_dict,_ = trainer.get_data(is_train=False) + input_dict, label_dict, _ = trainer.get_data(is_train=False) _, _, more_loss = trainer.wrapper(**input_dict, label=label_dict, cur_lr=1.0) tester = inference.Tester("model.pt", input_script=self.input_json) @@ -37,7 +47,9 @@ def test_dp_test(self): for k, v in res.items(): if k == "rmse" or "mae" in k or k not in more_loss: continue - np.testing.assert_allclose(v, more_loss[k].cpu().detach().numpy(), rtol=1e-04, atol=1e-07) + np.testing.assert_allclose( + v, more_loss[k].cpu().detach().numpy(), rtol=1e-04, atol=1e-07 + ) def tearDown(self): for f in os.listdir("."): @@ -50,5 +62,5 @@ def tearDown(self): os.remove(self.input_json) -if __name__ == '__main__': - unittest.main() \ No newline at end of file +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_embedding_net.py b/tests/test_embedding_net.py index 78ac963a..791ce245 100644 --- a/tests/test_embedding_net.py +++ b/tests/test_embedding_net.py @@ -1,21 +1,34 @@ -import numpy as np +# SPDX-License-Identifier: LGPL-3.0-or-later +import json import os import re -import torch -import json import unittest +import numpy as np import tensorflow.compat.v1 as tf +import torch tf.disable_eager_execution() -from deepmd.descriptor import DescrptSeA as DescrptSeA_tf - -from deepmd_pt.utils import dp_random -from deepmd_pt.utils.dataset import DeepmdDataSet -from deepmd_pt.model.descriptor import DescrptSeA -from deepmd_pt.utils.env import GLOBAL_NP_FLOAT_PRECISION, DEVICE, TEST_CONFIG -from deepmd.common import expand_sys_str +from deepmd.tf.common import ( + expand_sys_str, +) +from deepmd.tf.descriptor import DescrptSeA as DescrptSeA_tf + +from deepmd_pt.model.descriptor import ( + DescrptSeA, +) +from deepmd_pt.utils import ( + dp_random, +) +from deepmd_pt.utils.dataset import ( + DeepmdDataSet, +) +from deepmd_pt.utils.env import ( + DEVICE, + GLOBAL_NP_FLOAT_PRECISION, + TEST_CONFIG, +) CUR_DIR = os.path.dirname(__file__) @@ -27,18 +40,26 @@ def gen_key(worb, depth, elemid): def base_se_a(descriptor, coord, atype, natoms, box): g = tf.Graph() with g.as_default(): - name_pfx = 'd_sea_' - t_coord = tf.placeholder(GLOBAL_NP_FLOAT_PRECISION, [None, None], name=name_pfx + 't_coord') - t_atype = tf.placeholder(tf.int32, [None, None], name=name_pfx + 't_type') - t_natoms = tf.placeholder(tf.int32, [descriptor.ntypes + 2], name=name_pfx + 't_natoms') - t_box = tf.placeholder(GLOBAL_NP_FLOAT_PRECISION, [None, None], name=name_pfx + 't_box') - t_default_mesh = tf.placeholder(tf.int32, [None], name=name_pfx + 't_mesh') - t_embedding = descriptor.build(t_coord, t_atype, t_natoms, t_box, t_default_mesh, input_dict={}) + name_pfx = "d_sea_" + t_coord = tf.placeholder( + GLOBAL_NP_FLOAT_PRECISION, [None, None], name=name_pfx + "t_coord" + ) + t_atype = tf.placeholder(tf.int32, [None, None], name=name_pfx + "t_type") + t_natoms = tf.placeholder( + tf.int32, [descriptor.ntypes + 2], name=name_pfx + "t_natoms" + ) + t_box = tf.placeholder( + GLOBAL_NP_FLOAT_PRECISION, [None, None], name=name_pfx + "t_box" + ) + t_default_mesh = tf.placeholder(tf.int32, [None], name=name_pfx + "t_mesh") + t_embedding = descriptor.build( + t_coord, t_atype, t_natoms, t_box, t_default_mesh, input_dict={} + ) fake_energy = tf.reduce_sum(t_embedding) t_force = descriptor.prod_force_virial(fake_energy, t_natoms)[0] t_vars = {} for var in tf.global_variables(): - ms = re.findall(r'([a-z]+)_(\d)_(\d)', var.name) + ms = re.findall(r"([a-z]+)_(\d)_(\d)", var.name) if len(ms) == 1: m = ms[0] key = gen_key(worb=m[0], depth=int(m[1]), elemid=int(m[2])) @@ -47,34 +68,38 @@ def base_se_a(descriptor, coord, atype, natoms, box): with tf.Session(graph=g) as sess: sess.run(init_op) - embedding, force, values = sess.run([t_embedding, t_force, t_vars], feed_dict={ - t_coord: coord, - t_atype: atype, - t_natoms: natoms, - t_box: box, - t_default_mesh: np.array([0, 0, 0, 2, 2, 2]) - }) + embedding, force, values = sess.run( + [t_embedding, t_force, t_vars], + feed_dict={ + t_coord: coord, + t_atype: atype, + t_natoms: natoms, + t_box: box, + t_default_mesh: np.array([0, 0, 0, 2, 2, 2]), + }, + ) return embedding, force, values class TestSeA(unittest.TestCase): - def setUp(self): dp_random.seed(0) - with open(TEST_CONFIG, 'r') as fin: + with open(TEST_CONFIG) as fin: content = fin.read() config = json.loads(content) - model_config = config['model'] - self.rcut = model_config['descriptor']['rcut'] - self.rcut_smth = model_config['descriptor']['rcut_smth'] - self.sel = model_config['descriptor']['sel'] - self.bsz = config['training']['training_data']['batch_size'] - self.systems = config['training']['validation_data']['systems'] + model_config = config["model"] + self.rcut = model_config["descriptor"]["rcut"] + self.rcut_smth = model_config["descriptor"]["rcut_smth"] + self.sel = model_config["descriptor"]["sel"] + self.bsz = config["training"]["training_data"]["batch_size"] + self.systems = config["training"]["validation_data"]["systems"] if isinstance(self.systems, str): self.systems = expand_sys_str(self.systems) - ds = DeepmdDataSet(self.systems, self.bsz, model_config['type_map'], self.rcut, self.sel) - self.filter_neuron = model_config['descriptor']['neuron'] - self.axis_neuron = model_config['descriptor']['axis_neuron'] + ds = DeepmdDataSet( + self.systems, self.bsz, model_config["type_map"], self.rcut, self.sel + ) + self.filter_neuron = model_config["descriptor"]["neuron"] + self.axis_neuron = model_config["descriptor"]["axis_neuron"] self.np_batch, self.torch_batch = ds.get_batch() def test_consistency(self): @@ -88,25 +113,27 @@ def test_consistency(self): ) dp_embedding, dp_force, dp_vars = base_se_a( descriptor=dp_d, - coord=self.np_batch['coord'], - atype=self.np_batch['atype'], - natoms=self.np_batch['natoms'], - box=self.np_batch['box'], + coord=self.np_batch["coord"], + atype=self.np_batch["atype"], + natoms=self.np_batch["natoms"], + box=self.np_batch["box"], ) # Reproduced old_impl = False descriptor = DescrptSeA( - self.rcut, self.rcut_smth, self.sel, - neuron=self.filter_neuron, + self.rcut, + self.rcut_smth, + self.sel, + neuron=self.filter_neuron, axis_neuron=self.axis_neuron, old_impl=old_impl, ).to(DEVICE) for name, param in descriptor.named_parameters(): if old_impl: - ms = re.findall(r'(\d)\.deep_layers\.(\d)\.([a-z]+)', name) + ms = re.findall(r"(\d)\.deep_layers\.(\d)\.([a-z]+)", name) else: - ms = re.findall(r'(\d)\.layers\.(\d)\.([a-z]+)', name) + ms = re.findall(r"(\d)\.layers\.(\d)\.([a-z]+)", name) if len(ms) == 1: m = ms[0] key = gen_key(worb=m[2], depth=int(m[1]) + 1, elemid=int(m[0])) @@ -115,16 +142,18 @@ def test_consistency(self): # Keep parameter value consistency between 2 implentations param.data.copy_(torch.from_numpy(var)) - pt_coord = self.torch_batch['coord'] + pt_coord = self.torch_batch["coord"] pt_coord.requires_grad_(True) - index = self.torch_batch['mapping'].unsqueeze(-1).expand(-1, -1, 3) + index = self.torch_batch["mapping"].unsqueeze(-1).expand(-1, -1, 3) extended_coord = torch.gather(pt_coord, dim=1, index=index) - extended_coord = extended_coord - self.torch_batch['shift'] - extended_atype = torch.gather(self.torch_batch['atype'], dim=1, index=self.torch_batch['mapping']) + extended_coord = extended_coord - self.torch_batch["shift"] + extended_atype = torch.gather( + self.torch_batch["atype"], dim=1, index=self.torch_batch["mapping"] + ) descriptor_out, _, _, _, _ = descriptor( extended_coord, extended_atype, - self.torch_batch['nlist'], + self.torch_batch["nlist"], ) my_embedding = descriptor_out.cpu().detach().numpy() fake_energy = torch.sum(descriptor_out) @@ -137,5 +166,5 @@ def test_consistency(self): np.testing.assert_allclose(dp_force, my_force) -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/tests/test_env_mat.py b/tests/test_env_mat.py index 94cc0396..0033d416 100644 --- a/tests/test_env_mat.py +++ b/tests/test_env_mat.py @@ -1,24 +1,31 @@ -import torch, copy +# SPDX-License-Identifier: LGPL-3.0-or-later import unittest -import itertools + import numpy as np +import torch + +try: + from deepmd.model_format import ( + EnvMat, + ) -try : - from deepmd_utils.model_format import ( - EnvMat, - ) - support_env_mat = True + support_env_mat = True except ModuleNotFoundError: - support_env_mat = False + support_env_mat = False except ImportError: - support_env_mat = False + support_env_mat = False -from deepmd_pt.model.descriptor.env_mat import prod_env_mat_se_a -from deepmd_pt.utils import env +from deepmd_pt.model.descriptor.env_mat import ( + prod_env_mat_se_a, +) +from deepmd_pt.utils import ( + env, +) dtype = env.GLOBAL_PT_FLOAT_PRECISION -class TestCaseSingleFrameWithNlist(): + +class TestCaseSingleFrameWithNlist: def setUp(self): # nloc == 3, nall == 4 self.nloc = 3 @@ -45,30 +52,33 @@ def setUp(self): dtype=int, ).reshape([1, self.nloc, sum(self.sel)]) self.rcut = 0.4 - self.rcut_smth = 2.2 + self.rcut_smth = 2.2 + # to be merged with the tf test case @unittest.skipIf(not support_env_mat, "EnvMat not supported") class TestEnvMat(unittest.TestCase, TestCaseSingleFrameWithNlist): - def setUp(self): - TestCaseSingleFrameWithNlist.setUp(self) - - def test_consistency( - self, - ): - rng = np.random.default_rng() - nf, nloc, nnei = self.nlist.shape - davg = rng.normal(size=(self.nt, nnei, 4)) - dstd = rng.normal(size=(self.nt, nnei, 4)) - dstd = 0.1 + np.abs(dstd) - em0 = EnvMat(self.rcut, self.rcut_smth) - mm0, ww0 = em0.call(self.coord_ext, self.atype_ext, self.nlist, davg, dstd) - mm1, _, ww1 = prod_env_mat_se_a( - torch.tensor(self.coord_ext, dtype=dtype), - torch.tensor(self.nlist, dtype=int), - torch.tensor(self.atype_ext[:,:nloc], dtype=int), - davg, dstd, self.rcut, self.rcut_smth - ) - np.testing.assert_allclose(mm0, mm1) - np.testing.assert_allclose(ww0, ww1) + def setUp(self): + TestCaseSingleFrameWithNlist.setUp(self) + def test_consistency( + self, + ): + rng = np.random.default_rng() + nf, nloc, nnei = self.nlist.shape + davg = rng.normal(size=(self.nt, nnei, 4)) + dstd = rng.normal(size=(self.nt, nnei, 4)) + dstd = 0.1 + np.abs(dstd) + em0 = EnvMat(self.rcut, self.rcut_smth) + mm0, ww0 = em0.call(self.coord_ext, self.atype_ext, self.nlist, davg, dstd) + mm1, _, ww1 = prod_env_mat_se_a( + torch.tensor(self.coord_ext, dtype=dtype), + torch.tensor(self.nlist, dtype=int), + torch.tensor(self.atype_ext[:, :nloc], dtype=int), + davg, + dstd, + self.rcut, + self.rcut_smth, + ) + np.testing.assert_allclose(mm0, mm1) + np.testing.assert_allclose(ww0, ww1) diff --git a/tests/test_fitting_net.py b/tests/test_fitting_net.py index 4f03e812..aed474c0 100644 --- a/tests/test_fitting_net.py +++ b/tests/test_fitting_net.py @@ -1,21 +1,26 @@ -import numpy as np +# SPDX-License-Identifier: LGPL-3.0-or-later import re -import torch import unittest -import json +import numpy as np import tensorflow.compat.v1 as tf +import torch tf.disable_eager_execution() -from deepmd.fit.ener import EnerFitting - -from deepmd_pt.utils.env import GLOBAL_NP_FLOAT_PRECISION, TEST_CONFIG -from deepmd_pt.model.task import EnergyFittingNet +from deepmd.tf.fit.ener import ( + EnerFitting, +) +from deepmd_pt.model.task import ( + EnergyFittingNet, +) +from deepmd_pt.utils.env import ( + GLOBAL_NP_FLOAT_PRECISION, +) -class FakeDescriptor(object): +class FakeDescriptor: def __init__(self, ntypes, embedding_width): self._ntypes = ntypes self._dim_out = embedding_width @@ -37,62 +42,85 @@ def base_fitting_net(dp_fn, embedding, natoms, atype): t_embedding = tf.placeholder(GLOBAL_NP_FLOAT_PRECISION, [None, None]) t_natoms = tf.placeholder(tf.int32, [None]) t_atype = tf.placeholder(tf.int32, [None, None]) - t_energy = dp_fn.build(t_embedding, t_natoms, {'atype': t_atype}) + t_energy = dp_fn.build(t_embedding, t_natoms, {"atype": t_atype}) init_op = tf.global_variables_initializer() t_vars = {} for var in tf.global_variables(): key = None - matched = re.match(r'layer_(\d)_type_(\d)/([a-z]+)', var.name) + matched = re.match(r"layer_(\d)_type_(\d)/([a-z]+)", var.name) if matched: - key = gen_key(type_id=matched.group(2), layer_id=matched.group(1), w_or_b=matched.group(3)) + key = gen_key( + type_id=matched.group(2), + layer_id=matched.group(1), + w_or_b=matched.group(3), + ) else: - matched = re.match(r'final_layer_type_(\d)/([a-z]+)', var.name) + matched = re.match(r"final_layer_type_(\d)/([a-z]+)", var.name) if matched: - key = gen_key(type_id=matched.group(1), layer_id=-1, w_or_b=matched.group(2)) + key = gen_key( + type_id=matched.group(1), layer_id=-1, w_or_b=matched.group(2) + ) if key is not None: t_vars[key] = var with tf.Session(graph=g) as sess: sess.run(init_op) - energy, values = sess.run([t_energy, t_vars], feed_dict={ - t_embedding: embedding, - t_natoms: natoms, - t_atype: atype, - }) + energy, values = sess.run( + [t_energy, t_vars], + feed_dict={ + t_embedding: embedding, + t_natoms: natoms, + t_atype: atype, + }, + ) return energy, values class TestFittingNet(unittest.TestCase): - def setUp(self): nloc = 7 self.embedding_width = 30 self.natoms = np.array([nloc, nloc, 2, 5], dtype=np.int32) - self.embedding = np.random.uniform(size=[4, nloc * self.embedding_width]) + rng = np.random.default_rng() + self.embedding = rng.uniform(size=[4, nloc * self.embedding_width]) self.ntypes = self.natoms.size - 2 self.n_neuron = [32, 32, 32] self.atype = np.zeros([4, nloc], dtype=np.int32) cnt = 0 for i in range(self.ntypes): - self.atype[:, cnt:cnt + self.natoms[i + 2]] = i + self.atype[:, cnt : cnt + self.natoms[i + 2]] = i cnt += self.natoms[i + 2] fake_d = FakeDescriptor(2, 30) self.dp_fn = EnerFitting(fake_d, self.n_neuron) - self.dp_fn.bias_atom_e = np.random.uniform(size=[self.ntypes]) + self.dp_fn.bias_atom_e = rng.uniform(size=[self.ntypes]) def test_consistency(self): - dp_energy, values = base_fitting_net(self.dp_fn, self.embedding, self.natoms, self.atype) - my_fn = EnergyFittingNet(self.ntypes, self.embedding_width, self.n_neuron, self.dp_fn.bias_atom_e, use_tebd=False) + dp_energy, values = base_fitting_net( + self.dp_fn, self.embedding, self.natoms, self.atype + ) + my_fn = EnergyFittingNet( + self.ntypes, + self.embedding_width, + self.n_neuron, + self.dp_fn.bias_atom_e, + use_tebd=False, + ) for name, param in my_fn.named_parameters(): - matched = re.match('filter_layers\.(\d).deep_layers\.(\d)\.([a-z]+)', name) + matched = re.match("filter_layers\.(\d).deep_layers\.(\d)\.([a-z]+)", name) key = None if matched: - key = gen_key(type_id=matched.group(1), layer_id=matched.group(2), w_or_b=matched.group(3)) + key = gen_key( + type_id=matched.group(1), + layer_id=matched.group(2), + w_or_b=matched.group(3), + ) else: - matched = re.match('filter_layers\.(\d).final_layer\.([a-z]+)', name) + matched = re.match("filter_layers\.(\d).final_layer\.([a-z]+)", name) if matched: - key = gen_key(type_id=matched.group(1), layer_id=-1, w_or_b=matched.group(2)) + key = gen_key( + type_id=matched.group(1), layer_id=-1, w_or_b=matched.group(2) + ) assert key is not None var = values[key] with torch.no_grad(): @@ -107,5 +135,5 @@ def test_consistency(self): self.assertTrue(np.allclose(dp_energy, my_energy.numpy().reshape([-1]))) -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/tests/test_force_grad.py b/tests/test_force_grad.py index e3b3cdf4..191f62a8 100644 --- a/tests/test_force_grad.py +++ b/tests/test_force_grad.py @@ -1,45 +1,67 @@ -from typing import List -import unittest -import torch +# SPDX-License-Identifier: LGPL-3.0-or-later +import copy import json +import unittest +from typing import ( + List, + Optional, +) + import numpy as np -import copy +import torch -from deepmd_pt.utils import env -from deepmd_pt.utils.dataset import DeepmdDataSystem -from deepmd_pt.model.model import get_model -from deepmd_pt.utils.dataloader import DpLoaderSet -from deepmd_pt.utils.stat import make_stat_input +from deepmd_pt.model.model import ( + get_model, +) +from deepmd_pt.utils import ( + env, +) +from deepmd_pt.utils.dataloader import ( + DpLoaderSet, +) +from deepmd_pt.utils.dataset import ( + DeepmdDataSystem, +) +from deepmd_pt.utils.stat import ( + make_stat_input, +) class CheckSymmetry(DeepmdDataSystem): - def __init__(self, sys_path: str, rcut, sec, type_map: List[str] = None, type_split=True): + def __init__( + self, + sys_path: str, + rcut, + sec, + type_map: Optional[List[str]] = None, + type_split=True, + ): super().__init__(sys_path, rcut, sec, type_map, type_split) def get_disturb(self, index, atom_index, axis_index, delta): - for i in range(0, - len(self._dirs) + 1): # note: if different sets can be merged, prefix sum is unused to calculate + for i in range( + 0, len(self._dirs) + 1 + ): # note: if different sets can be merged, prefix sum is unused to calculate if index < self.prefix_sum[i]: break frames = self._load_set(self._dirs[i - 1]) - tmp = copy.deepcopy(frames['coord'].reshape(self.nframes, -1, 3)) + tmp = copy.deepcopy(frames["coord"].reshape(self.nframes, -1, 3)) tmp[:, atom_index, axis_index] += delta - frames['coord'] = tmp + frames["coord"] = tmp frame = self.single_preprocess(frames, index - self.prefix_sum[i - 1]) return frame def get_data(batch): inputs = {} - for key in ['coord', 'atype', 'box']: + for key in ["coord", "atype", "box"]: inputs[key] = batch[key].unsqueeze(0).to(env.DEVICE) return inputs class TestForceGrad(unittest.TestCase): def setUp(self): - np.random.seed(20) - with open(env.TEST_CONFIG, 'r') as fin: + with open(env.TEST_CONFIG) as fin: self.config = json.load(fin) self.system_index = 0 self.batch_index = 0 @@ -47,36 +69,48 @@ def setUp(self): self.get_model() def get_model(self): - training_systems = self.config['training']['training_data']['systems'] - model_params = self.config['model'] - data_stat_nbatch = model_params.get('data_stat_nbatch', 10) - train_data = DpLoaderSet(training_systems, self.config['training']['training_data']['batch_size'], model_params) - sampled = make_stat_input(train_data.systems, train_data.dataloaders, data_stat_nbatch) - self.model = get_model(self.config['model'], sampled).to(env.DEVICE) + training_systems = self.config["training"]["training_data"]["systems"] + model_params = self.config["model"] + data_stat_nbatch = model_params.get("data_stat_nbatch", 10) + train_data = DpLoaderSet( + training_systems, + self.config["training"]["training_data"]["batch_size"], + model_params, + ) + sampled = make_stat_input( + train_data.systems, train_data.dataloaders, data_stat_nbatch + ) + self.model = get_model(self.config["model"], sampled).to(env.DEVICE) def get_dataset(self, system_index=0, batch_index=0): - systems = self.config['training']['training_data']['systems'] - rcut = self.config['model']['descriptor']['rcut'] - sel = self.config['model']['descriptor']['sel'] + systems = self.config["training"]["training_data"]["systems"] + rcut = self.config["model"]["descriptor"]["rcut"] + sel = self.config["model"]["descriptor"]["sel"] sec = torch.cumsum(torch.tensor(sel), dim=0) - type_map = self.config['model']['type_map'] - self.dpdatasystem = CheckSymmetry(sys_path=systems[system_index], rcut=rcut, sec=sec, type_map=type_map) + type_map = self.config["model"]["type_map"] + self.dpdatasystem = CheckSymmetry( + sys_path=systems[system_index], rcut=rcut, sec=sec, type_map=type_map + ) self.origin_batch = self.dpdatasystem._get_item(batch_index) - def test_force_grad(self, threshold=1E-3, delta0=1E-6, seed=20): + def test_force_grad(self, threshold=1e-3, delta0=1e-6, seed=20): result0 = self.model(**get_data(self.origin_batch)) - np.random.seed(seed) + np.random.default_rng(seed) errors = np.zeros((self.dpdatasystem._natoms, 3)) for atom_index in range(self.dpdatasystem._natoms): for axis_index in range(3): delta = np.random.random() * delta0 - disturb_batch = self.dpdatasystem.get_disturb(self.batch_index, atom_index, axis_index, delta) + disturb_batch = self.dpdatasystem.get_disturb( + self.batch_index, atom_index, axis_index, delta + ) disturb_result = self.model(**get_data(disturb_batch)) - disturb_force = -(disturb_result['energy'] - result0['energy']) / delta - disturb_error = result0['force'][0, atom_index, axis_index] - disturb_force + disturb_force = -(disturb_result["energy"] - result0["energy"]) / delta + disturb_error = ( + result0["force"][0, atom_index, axis_index] - disturb_force + ) errors[atom_index, axis_index] = disturb_error.detach().cpu().numpy() self.assertTrue(np.abs(errors).max() < threshold) -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/tests/test_jit.py b/tests/test_jit.py index 3610d0b2..c0f65887 100644 --- a/tests/test_jit.py +++ b/tests/test_jit.py @@ -1,19 +1,26 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later import json import os import shutil import unittest -from copy import deepcopy -from pathlib import Path +from copy import ( + deepcopy, +) + import torch -import numpy as np -from deepmd_pt.entrypoints.main import get_trainer -from deepmd_pt.infer import inference +from deepmd_pt.entrypoints.main import ( + get_trainer, +) +from deepmd_pt.infer import ( + inference, +) + from .test_permutation import ( - model_se_e2_a, - model_dpa1, - model_dpa2, - model_hybrid, + model_dpa1, + model_dpa2, + model_hybrid, + model_se_e2_a, ) @@ -21,8 +28,8 @@ class TestJIT: def test_jit(self): trainer = get_trainer(deepcopy(self.config)) trainer.run() - model = torch.jit.script(inference.Tester('./model.pt', numb_test=1).model) - torch.jit.save(model, './frozen_model.pth', {}) + model = torch.jit.script(inference.Tester("./model.pt", numb_test=1).model) + torch.jit.save(model, "./frozen_model.pth", {}) def tearDown(self): for f in os.listdir("."): @@ -37,12 +44,12 @@ def tearDown(self): class TestEnergyModelSeA(unittest.TestCase, TestJIT): def setUp(self): input_json = "tests/water/se_atten.json" - with open(input_json, "r") as f: + with open(input_json) as f: self.config = json.load(f) self.config["model"] = deepcopy(model_se_e2_a) self.config["training"]["numb_steps"] = 10 self.config["training"]["save_freq"] = 10 - + def tearDown(self): TestJIT.tearDown(self) @@ -50,7 +57,7 @@ def tearDown(self): class TestEnergyModelDPA1(unittest.TestCase, TestJIT): def setUp(self): input_json = "tests/water/se_atten.json" - with open(input_json, "r") as f: + with open(input_json) as f: self.config = json.load(f) self.config["model"] = deepcopy(model_dpa1) self.config["training"]["numb_steps"] = 10 @@ -63,12 +70,18 @@ def tearDown(self): class TestEnergyModelDPA2(unittest.TestCase, TestJIT): def setUp(self): input_json = "tests/water/se_atten.json" - with open(input_json, "r") as f: + with open(input_json) as f: self.config = json.load(f) - self.config["model"] = deepcopy(model_dpa2) - self.config["model"]["descriptor"]["rcut"] = self.config["model"]["descriptor"]["repinit_rcut"] - self.config["model"]["descriptor"]["rcut_smth"] = self.config["model"]["descriptor"]["repinit_rcut_smth"] - self.config["model"]["descriptor"]["sel"] = self.config["model"]["descriptor"]["repinit_nsel"] + self.config["model"] = deepcopy(model_dpa2) + self.config["model"]["descriptor"]["rcut"] = self.config["model"]["descriptor"][ + "repinit_rcut" + ] + self.config["model"]["descriptor"]["rcut_smth"] = self.config["model"][ + "descriptor" + ]["repinit_rcut_smth"] + self.config["model"]["descriptor"]["sel"] = self.config["model"]["descriptor"][ + "repinit_nsel" + ] self.config["training"]["numb_steps"] = 10 self.config["training"]["save_freq"] = 10 @@ -77,17 +90,18 @@ def setUp(self): class TestEnergyModelHybrid(unittest.TestCase, TestJIT): def setUp(self): input_json = "tests/water/se_atten.json" - with open(input_json, "r") as f: + with open(input_json) as f: self.config = json.load(f) self.config["model"] = deepcopy(model_hybrid) self.config["training"]["numb_steps"] = 10 self.config["training"]["save_freq"] = 10 + @unittest.skip("hybrid not supported at the moment") class TestEnergyModelHybrid2(unittest.TestCase, TestJIT): def setUp(self): input_json = "tests/water/se_atten.json" - with open(input_json, "r") as f: + with open(input_json) as f: self.config = json.load(f) self.config["model"] = deepcopy(model_hybrid) self.config["model"]["descriptor"]["hybrid_mode"] = "sequential" @@ -95,5 +109,5 @@ def setUp(self): self.config["training"]["save_freq"] = 10 -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/tests/test_loss.py b/tests/test_loss.py index b075a111..e7e57891 100644 --- a/tests/test_loss.py +++ b/tests/test_loss.py @@ -1,64 +1,88 @@ -import numpy as np +# SPDX-License-Identifier: LGPL-3.0-or-later +import json import os -import torch import unittest -import json +import numpy as np import tensorflow.compat.v1 as tf +import torch tf.disable_eager_execution() -from deepmd.loss.ener import EnerStdLoss -from deepmd.common import expand_sys_str +from deepmd.tf.common import ( + expand_sys_str, +) +from deepmd.tf.loss.ener import ( + EnerStdLoss, +) -from deepmd_pt.loss import EnergyStdLoss -from deepmd_pt.utils.env import TEST_CONFIG -from deepmd_pt.utils.dataset import DeepmdDataSet +from deepmd_pt.loss import ( + EnergyStdLoss, +) +from deepmd_pt.utils.dataset import ( + DeepmdDataSet, +) +from deepmd_pt.utils.env import ( + TEST_CONFIG, +) CUR_DIR = os.path.dirname(__file__) def get_batch(): - with open(TEST_CONFIG, 'r') as fin: + with open(TEST_CONFIG) as fin: content = fin.read() config = json.loads(content) - model_config = config['model'] - rcut = model_config['descriptor']['rcut'] + model_config = config["model"] + rcut = model_config["descriptor"]["rcut"] # self.rcut_smth = model_config['descriptor']['rcut_smth'] - sel = model_config['descriptor']['sel'] - batch_size = config['training']['training_data']['batch_size'] - systems = config['training']['validation_data']['systems'] + sel = model_config["descriptor"]["sel"] + batch_size = config["training"]["training_data"]["batch_size"] + systems = config["training"]["validation_data"]["systems"] if isinstance(systems, str): systems = expand_sys_str(systems) - dataset = DeepmdDataSet(systems, - batch_size, model_config['type_map'], rcut, sel) + dataset = DeepmdDataSet(systems, batch_size, model_config["type_map"], rcut, sel) np_batch, pt_batch = dataset.get_batch() return np_batch, pt_batch class TestLearningRate(unittest.TestCase): - def setUp(self): self.start_lr = 1.1 self.start_pref_e = 0.02 - self.limit_pref_e = 1. - self.start_pref_f = 1000. - self.limit_pref_f = 1. + self.limit_pref_e = 1.0 + self.start_pref_f = 1000.0 + self.limit_pref_f = 1.0 self.start_pref_v = 0.02 - self.limit_pref_v = 1. + self.limit_pref_v = 1.0 self.cur_lr = 1.2 # data np_batch, pt_batch = get_batch() - natoms = np_batch['natoms'] + natoms = np_batch["natoms"] self.nloc = natoms[0] - l_energy, l_force, l_virial = np_batch['energy'], np_batch['force'], np_batch['virial'] - p_energy, p_force, p_virial = np.ones_like(l_energy), np.ones_like(l_force), np.ones_like(l_virial) + l_energy, l_force, l_virial = ( + np_batch["energy"], + np_batch["force"], + np_batch["virial"], + ) + p_energy, p_force, p_virial = ( + np.ones_like(l_energy), + np.ones_like(l_force), + np.ones_like(l_virial), + ) nloc = natoms[0] - batch_size = pt_batch['coord'].shape[0] + batch_size = pt_batch["coord"].shape[0] atom_energy = np.zeros(shape=[batch_size, nloc]) atom_pref = np.zeros(shape=[batch_size, nloc * 3]) # tf - base = EnerStdLoss(self.start_lr, self.start_pref_e, self.limit_pref_e, self.start_pref_f, self.limit_pref_f, - self.start_pref_v, self.limit_pref_v) + base = EnerStdLoss( + self.start_lr, + self.start_pref_e, + self.limit_pref_e, + self.start_pref_f, + self.limit_pref_f, + self.start_pref_v, + self.limit_pref_v, + ) self.g = tf.Graph() with self.g.as_default(): t_cur_lr = tf.placeholder(shape=[], dtype=tf.float64) @@ -72,30 +96,32 @@ def setUp(self): t_lvirial = tf.placeholder(shape=[None, 9], dtype=tf.float64) t_latom_energy = tf.placeholder(shape=[None, None], dtype=tf.float64) t_atom_pref = tf.placeholder(shape=[None, None], dtype=tf.float64) - find_energy = tf.constant(1., dtype=tf.float64) - find_force = tf.constant(1., dtype=tf.float64) - find_virial = tf.constant(1., dtype=tf.float64) - find_atom_energy = tf.constant(0., dtype=tf.float64) - find_atom_pref = tf.constant(0., dtype=tf.float64) + find_energy = tf.constant(1.0, dtype=tf.float64) + find_force = tf.constant(1.0, dtype=tf.float64) + find_virial = tf.constant(1.0, dtype=tf.float64) + find_atom_energy = tf.constant(0.0, dtype=tf.float64) + find_atom_pref = tf.constant(0.0, dtype=tf.float64) model_dict = { - 'energy': t_penergy, - 'force': t_pforce, - 'virial': t_pvirial, - 'atom_ener': t_patom_energy + "energy": t_penergy, + "force": t_pforce, + "virial": t_pvirial, + "atom_ener": t_patom_energy, } label_dict = { - 'energy': t_lenergy, - 'force': t_lforce, - 'virial': t_lvirial, - 'atom_ener': t_latom_energy, - 'atom_pref': t_atom_pref, - 'find_energy': find_energy, - 'find_force': find_force, - 'find_virial': find_virial, - 'find_atom_ener': find_atom_energy, - 'find_atom_pref': find_atom_pref + "energy": t_lenergy, + "force": t_lforce, + "virial": t_lvirial, + "atom_ener": t_latom_energy, + "atom_pref": t_atom_pref, + "find_energy": find_energy, + "find_force": find_force, + "find_virial": find_virial, + "find_atom_ener": find_atom_energy, + "find_atom_pref": find_atom_pref, } - self.base_loss_sess = base.build(t_cur_lr, t_natoms, model_dict, label_dict, '') + self.base_loss_sess = base.build( + t_cur_lr, t_natoms, model_dict, label_dict, "" + ) # torch self.feed_dict = { t_cur_lr: self.cur_lr, @@ -108,23 +134,34 @@ def setUp(self): t_lforce: l_force, t_lvirial: l_virial.reshape(-1, 9), t_latom_energy: atom_energy, - t_atom_pref: atom_pref + t_atom_pref: atom_pref, } - self.model_pred = {'energy': torch.from_numpy(p_energy), - 'force': torch.from_numpy(p_force), - 'virial': torch.from_numpy(p_virial), - } - self.label = {'energy': torch.from_numpy(l_energy), - 'force': torch.from_numpy(l_force), - 'virial': torch.from_numpy(l_virial), - } - self.natoms = pt_batch['natoms'] + self.model_pred = { + "energy": torch.from_numpy(p_energy), + "force": torch.from_numpy(p_force), + "virial": torch.from_numpy(p_virial), + } + self.label = { + "energy": torch.from_numpy(l_energy), + "force": torch.from_numpy(l_force), + "virial": torch.from_numpy(l_virial), + } + self.natoms = pt_batch["natoms"] def test_consistency(self): with tf.Session(graph=self.g) as sess: - base_loss, base_more_loss = sess.run(self.base_loss_sess, feed_dict=self.feed_dict) - mine = EnergyStdLoss(self.start_lr, self.start_pref_e, self.limit_pref_e, self.start_pref_f, self.limit_pref_f, - self.start_pref_v, self.limit_pref_v) + base_loss, base_more_loss = sess.run( + self.base_loss_sess, feed_dict=self.feed_dict + ) + mine = EnergyStdLoss( + self.start_lr, + self.start_pref_e, + self.limit_pref_e, + self.start_pref_f, + self.limit_pref_f, + self.start_pref_v, + self.limit_pref_v, + ) my_loss, my_more_loss = mine( self.label, self.model_pred, @@ -133,9 +170,13 @@ def test_consistency(self): ) my_loss = my_loss.detach().cpu() self.assertTrue(np.allclose(base_loss, my_loss.numpy())) - for key in ['ener', 'force', 'virial']: - self.assertTrue(np.allclose(base_more_loss['l2_%s_loss' % key], my_more_loss['l2_%s_loss' % key])) + for key in ["ener", "force", "virial"]: + self.assertTrue( + np.allclose( + base_more_loss["l2_%s_loss" % key], my_more_loss["l2_%s_loss" % key] + ) + ) -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/tests/test_lr.py b/tests/test_lr.py index adeb8fe9..d1ede612 100644 --- a/tests/test_lr.py +++ b/tests/test_lr.py @@ -1,17 +1,21 @@ -import numpy as np +# SPDX-License-Identifier: LGPL-3.0-or-later import unittest +import numpy as np import tensorflow.compat.v1 as tf tf.disable_eager_execution() -from deepmd.utils import learning_rate +from deepmd.tf.utils import ( + learning_rate, +) -from deepmd_pt.utils.learning_rate import LearningRateExp +from deepmd_pt.utils.learning_rate import ( + LearningRateExp, +) class TestLearningRate(unittest.TestCase): - def setUp(self): self.start_lr = 0.001 self.stop_lr = 3.51e-8 @@ -26,19 +30,30 @@ def test_consistency(self): self.judge_it() def judge_it(self): - base_lr = learning_rate.LearningRateExp(self.start_lr, self.stop_lr, self.decay_step) + base_lr = learning_rate.LearningRateExp( + self.start_lr, self.stop_lr, self.decay_step + ) g = tf.Graph() with g.as_default(): global_step = tf.placeholder(shape=[], dtype=tf.int32) t_lr = base_lr.build(global_step, self.stop_step) - my_lr = LearningRateExp(self.start_lr, self.stop_lr, self.decay_step, self.stop_step) + my_lr = LearningRateExp( + self.start_lr, self.stop_lr, self.decay_step, self.stop_step + ) with tf.Session(graph=g) as sess: - base_vals = [sess.run(t_lr, feed_dict={global_step: step_id}) for step_id in range(self.stop_step) if - step_id % self.decay_step != 0] - my_vals = [my_lr.value(step_id) for step_id in range(self.stop_step) if step_id % self.decay_step != 0] + base_vals = [ + sess.run(t_lr, feed_dict={global_step: step_id}) + for step_id in range(self.stop_step) + if step_id % self.decay_step != 0 + ] + my_vals = [ + my_lr.value(step_id) + for step_id in range(self.stop_step) + if step_id % self.decay_step != 0 + ] self.assertTrue(np.allclose(base_vals, my_vals)) -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/tests/test_mlp.py b/tests/test_mlp.py index 0b068cf5..c5511482 100644 --- a/tests/test_mlp.py +++ b/tests/test_mlp.py @@ -1,294 +1,321 @@ -import torch, copy -import unittest +# SPDX-License-Identifier: LGPL-3.0-or-later import itertools +import unittest + import numpy as np +import torch + from deepmd_pt.utils.env import ( - PRECISION_DICT, + PRECISION_DICT, ) try: - from deepmd_pt.model.network.mlp import ( - MLPLayer, - MLP, - ) - support_native_net = True + from deepmd_pt.model.network.mlp import ( + MLP, + MLPLayer, + ) + + support_native_net = True except ModuleNotFoundError: - support_native_net = False + support_native_net = False try: - from deepmd_pt.model.network.mlp import ( - EmbeddingNet, - ) - support_embedding_net = True + from deepmd_pt.model.network.mlp import ( + EmbeddingNet, + ) + + support_embedding_net = True except ModuleNotFoundError: - support_embedding_net = False + support_embedding_net = False try: - from deepmd_pt.model.network.mlp import ( - FittingNet, - ) - support_fitting_net = True + from deepmd_pt.model.network.mlp import ( + FittingNet, + ) + + support_fitting_net = True except ModuleNotFoundError: - support_fitting_net = False + support_fitting_net = False -try : - from deepmd_utils.model_format import ( - NativeLayer, - NativeNet, - ) - support_native_net = True +try: + from deepmd.model_format import ( + NativeLayer, + NativeNet, + ) + + support_native_net = True except ModuleNotFoundError: - support_native_net = False + support_native_net = False except ImportError: - support_native_net = False + support_native_net = False -try : - from deepmd_utils.model_format import ( - EmbeddingNet as DPEmbeddingNet, - ) - support_embedding_net = True +try: + from deepmd.model_format import EmbeddingNet as DPEmbeddingNet + + support_embedding_net = True except ModuleNotFoundError: - support_embedding_net = False + support_embedding_net = False except ImportError: - support_embedding_net = False + support_embedding_net = False + +try: + from deepmd.model_format import FittingNet as DPFittingNet -try : - from deepmd_utils.model_format import ( - FittingNet as DPFittingNet, - ) - support_fitting_net = True + support_fitting_net = True except ModuleNotFoundError: - support_fitting_net = False + support_fitting_net = False except ImportError: - support_fitting_net = False - + support_fitting_net = False def get_tols(prec): - if prec in ["single", "float32"]: - rtol, atol=0., 1e-4 - elif prec in ["double", "float64"]: - rtol, atol=0., 1e-12 - # elif prec in ["half", "float16"]: - # rtol, atol=1e-2, 0 - else: - raise ValueError(f"unknown prec {prec}") - return rtol, atol + if prec in ["single", "float32"]: + rtol, atol = 0.0, 1e-4 + elif prec in ["double", "float64"]: + rtol, atol = 0.0, 1e-12 + # elif prec in ["half", "float16"]: + # rtol, atol=1e-2, 0 + else: + raise ValueError(f"unknown prec {prec}") + return rtol, atol + @unittest.skipIf(not support_native_net, "NativeLayer not supported") class TestMLPLayer(unittest.TestCase): - def setUp(self): - self.test_cases = itertools.product( - [(5, 5), (5, 10), (5, 8), (8, 5)], # inp, out - [True, False], # bias - [True, False], # use time step - ["tanh", "none"], # activation - [True, False], # resnet - [None, [4], [3,2]], # prefix shapes - ["float32", "double"], # precision - ) + def setUp(self): + self.test_cases = itertools.product( + [(5, 5), (5, 10), (5, 8), (8, 5)], # inp, out + [True, False], # bias + [True, False], # use time step + ["tanh", "none"], # activation + [True, False], # resnet + [None, [4], [3, 2]], # prefix shapes + ["float32", "double"], # precision + ) - def test_match_native_layer( - self, - ): - for (ninp, nout), bias, ut, ac, resnet, ashp, prec in self.test_cases: - # input - inp_shap = [ninp] - if ashp is not None: - inp_shap = ashp + inp_shap - rtol, atol = get_tols(prec) - dtype = PRECISION_DICT[prec] - xx = torch.arange(np.prod(inp_shap), dtype=dtype).view(inp_shap) - # def mlp layer - ml = MLPLayer(ninp, nout, bias, ut, ac, resnet, precision=prec) - # check consistency - nl = NativeLayer.deserialize(ml.serialize()) - np.testing.assert_allclose( - ml.forward(xx).detach().numpy(), nl.call(xx.detach().numpy()), - rtol=rtol, atol=atol, - err_msg=f"(i={ninp}, o={nout}) bias={bias} use_dt={ut} act={ac} resnet={resnet} prec={prec}" - ) - # check self-consistency - ml1 = MLPLayer.deserialize(ml.serialize()) - np.testing.assert_allclose( - ml.forward(xx).detach().numpy(), ml1.forward(xx).detach().numpy(), - rtol=rtol, atol=atol, - err_msg=f"(i={ninp}, o={nout}) bias={bias} use_dt={ut} act={ac} resnet={resnet} prec={prec}" - ) - - def test_jit(self): - for (ninp, nout), bias, ut, ac, resnet, _, prec in self.test_cases: - ml = MLPLayer(ninp, nout, bias, ut, ac, resnet, precision=prec) - model = torch.jit.script(ml) - ml1 = MLPLayer.deserialize(ml.serialize()) - model = torch.jit.script(ml1) + def test_match_native_layer( + self, + ): + for (ninp, nout), bias, ut, ac, resnet, ashp, prec in self.test_cases: + # input + inp_shap = [ninp] + if ashp is not None: + inp_shap = ashp + inp_shap + rtol, atol = get_tols(prec) + dtype = PRECISION_DICT[prec] + xx = torch.arange(np.prod(inp_shap), dtype=dtype).view(inp_shap) + # def mlp layer + ml = MLPLayer(ninp, nout, bias, ut, ac, resnet, precision=prec) + # check consistency + nl = NativeLayer.deserialize(ml.serialize()) + np.testing.assert_allclose( + ml.forward(xx).detach().numpy(), + nl.call(xx.detach().numpy()), + rtol=rtol, + atol=atol, + err_msg=f"(i={ninp}, o={nout}) bias={bias} use_dt={ut} act={ac} resnet={resnet} prec={prec}", + ) + # check self-consistency + ml1 = MLPLayer.deserialize(ml.serialize()) + np.testing.assert_allclose( + ml.forward(xx).detach().numpy(), + ml1.forward(xx).detach().numpy(), + rtol=rtol, + atol=atol, + err_msg=f"(i={ninp}, o={nout}) bias={bias} use_dt={ut} act={ac} resnet={resnet} prec={prec}", + ) + + def test_jit(self): + for (ninp, nout), bias, ut, ac, resnet, _, prec in self.test_cases: + ml = MLPLayer(ninp, nout, bias, ut, ac, resnet, precision=prec) + model = torch.jit.script(ml) + ml1 = MLPLayer.deserialize(ml.serialize()) + model = torch.jit.script(ml1) @unittest.skipIf(not support_native_net, "NativeLayer not supported") class TestMLP(unittest.TestCase): - def setUp(self): - self.test_cases = itertools.product( - [[2, 2, 4, 8], [1, 3, 3] ], # inp and hiddens - [True, False], # bias - [True, False], # use time step - ["tanh", "none"], # activation - [True, False], # resnet - [None, [4], [3,2]], # prefix shapes - ["float32", "double"], # precision - ) + def setUp(self): + self.test_cases = itertools.product( + [[2, 2, 4, 8], [1, 3, 3]], # inp and hiddens + [True, False], # bias + [True, False], # use time step + ["tanh", "none"], # activation + [True, False], # resnet + [None, [4], [3, 2]], # prefix shapes + ["float32", "double"], # precision + ) + + def test_match_native_net( + self, + ): + for ndims, bias, ut, ac, resnet, ashp, prec in self.test_cases: + # input + inp_shap = [ndims[0]] + if ashp is not None: + inp_shap = ashp + inp_shap + rtol, atol = get_tols(prec) + dtype = PRECISION_DICT[prec] + xx = torch.arange(np.prod(inp_shap), dtype=dtype).view(inp_shap) + # def MLP + layers = [] + for ii in range(1, len(ndims)): + layers.append( + MLPLayer( + ndims[ii - 1], ndims[ii], bias, ut, ac, resnet, precision=prec + ).serialize() + ) + ml = MLP(layers) + # check consistency + nl = NativeNet.deserialize(ml.serialize()) + np.testing.assert_allclose( + ml.forward(xx).detach().numpy(), + nl.call(xx.detach().numpy()), + rtol=rtol, + atol=atol, + err_msg=f"net={ndims} bias={bias} use_dt={ut} act={ac} resnet={resnet} prec={prec}", + ) + # check self-consistency + ml1 = MLP.deserialize(ml.serialize()) + np.testing.assert_allclose( + ml.forward(xx).detach().numpy(), + ml1.forward(xx).detach().numpy(), + rtol=rtol, + atol=atol, + err_msg=f"net={ndims} bias={bias} use_dt={ut} act={ac} resnet={resnet} prec={prec}", + ) - def test_match_native_net( - self, - ): - for ndims, bias, ut, ac, resnet, ashp, prec in self.test_cases: - # input - inp_shap = [ndims[0]] - if ashp is not None: - inp_shap = ashp + inp_shap - rtol, atol = get_tols(prec) - dtype = PRECISION_DICT[prec] - xx = torch.arange(np.prod(inp_shap), dtype=dtype).view(inp_shap) - # def MLP - layers = [] - for ii in range(1, len(ndims)): - layers.append( - MLPLayer(ndims[ii-1], ndims[ii], bias, ut, ac, resnet, precision=prec).serialize()) - ml = MLP(layers) - # check consistency - nl = NativeNet.deserialize(ml.serialize()) - np.testing.assert_allclose( - ml.forward(xx).detach().numpy(), nl.call(xx.detach().numpy()), - rtol=rtol, atol=atol, - err_msg=f"net={ndims} bias={bias} use_dt={ut} act={ac} resnet={resnet} prec={prec}" - ) - # check self-consistency - ml1 = MLP.deserialize(ml.serialize()) - np.testing.assert_allclose( - ml.forward(xx).detach().numpy(), ml1.forward(xx).detach().numpy(), - rtol=rtol, atol=atol, - err_msg=f"net={ndims} bias={bias} use_dt={ut} act={ac} resnet={resnet} prec={prec}" - ) - - def test_jit(self): - for ndims, bias, ut, ac, resnet, _, prec in self.test_cases: - layers = [] - for ii in range(1, len(ndims)): - ml = layers.append( - MLPLayer(ndims[ii-1], ndims[ii], bias, ut, ac, resnet, precision=prec).serialize()) - ml = MLP(ml) - model = torch.jit.script(ml) - ml1 = MLP.deserialize(ml.serialize()) - model = torch.jit.script(ml1) + def test_jit(self): + for ndims, bias, ut, ac, resnet, _, prec in self.test_cases: + layers = [] + for ii in range(1, len(ndims)): + ml = layers.append( + MLPLayer( + ndims[ii - 1], ndims[ii], bias, ut, ac, resnet, precision=prec + ).serialize() + ) + ml = MLP(ml) + model = torch.jit.script(ml) + ml1 = MLP.deserialize(ml.serialize()) + model = torch.jit.script(ml1) @unittest.skipIf(not support_embedding_net, "EmbeddingNet not supported") class TestEmbeddingNet(unittest.TestCase): - def setUp(self): - self.test_cases = itertools.product( - [1, 3], # inp - [[24, 48, 96], [24, 36]], # and hiddens - ["tanh", "none"], # activation - [True, False], # resnet_dt - ["float32", "double"], # precision - ) + def setUp(self): + self.test_cases = itertools.product( + [1, 3], # inp + [[24, 48, 96], [24, 36]], # and hiddens + ["tanh", "none"], # activation + [True, False], # resnet_dt + ["float32", "double"], # precision + ) - def test_match_embedding_net( - self, - ): - for idim, nn, act, idt, prec in self.test_cases: - # input - rtol, atol = get_tols(prec) - dtype = PRECISION_DICT[prec] - xx = torch.arange(idim, dtype=dtype) - # def MLP - ml = EmbeddingNet(idim, nn, act, idt, prec) - # check consistency - nl = DPEmbeddingNet.deserialize(ml.serialize()) - np.testing.assert_allclose( - ml.forward(xx).detach().numpy(), nl.call(xx.detach().numpy()), - rtol=rtol, atol=atol, - err_msg=f"idim={idim} nn={nn} use_dt={idt} act={act} prec={prec}" - ) - # check self-consistency - ml1 = EmbeddingNet.deserialize(ml.serialize()) - np.testing.assert_allclose( - ml.forward(xx).detach().numpy(), ml1.forward(xx).detach().numpy(), - rtol=rtol, atol=atol, - err_msg=f"idim={idim} nn={nn} use_dt={idt} act={act} prec={prec}" - ) - - def test_jit( - self, - ): - for idim, nn, act, idt, prec in self.test_cases: - # def MLP - ml = EmbeddingNet(idim, nn, act, idt, prec) - ml1 = EmbeddingNet.deserialize(ml.serialize()) - model = torch.jit.script(ml) - model = torch.jit.script(ml1) + def test_match_embedding_net( + self, + ): + for idim, nn, act, idt, prec in self.test_cases: + # input + rtol, atol = get_tols(prec) + dtype = PRECISION_DICT[prec] + xx = torch.arange(idim, dtype=dtype) + # def MLP + ml = EmbeddingNet(idim, nn, act, idt, prec) + # check consistency + nl = DPEmbeddingNet.deserialize(ml.serialize()) + np.testing.assert_allclose( + ml.forward(xx).detach().numpy(), + nl.call(xx.detach().numpy()), + rtol=rtol, + atol=atol, + err_msg=f"idim={idim} nn={nn} use_dt={idt} act={act} prec={prec}", + ) + # check self-consistency + ml1 = EmbeddingNet.deserialize(ml.serialize()) + np.testing.assert_allclose( + ml.forward(xx).detach().numpy(), + ml1.forward(xx).detach().numpy(), + rtol=rtol, + atol=atol, + err_msg=f"idim={idim} nn={nn} use_dt={idt} act={act} prec={prec}", + ) + def test_jit( + self, + ): + for idim, nn, act, idt, prec in self.test_cases: + # def MLP + ml = EmbeddingNet(idim, nn, act, idt, prec) + ml1 = EmbeddingNet.deserialize(ml.serialize()) + model = torch.jit.script(ml) + model = torch.jit.script(ml1) @unittest.skipIf(not support_fitting_net, "FittingNet not supported") class TestFittingNet(unittest.TestCase): - def setUp(self): - self.test_cases = itertools.product( - [1, 3], # inp - [1, 5], # out - [[24, 48, 96], [24, 36]], # and hiddens - ["tanh", "none"], # activation - [True, False], # resnet_dt - ["float32", "double"], # precision - [True, False], # bias_out - ) + def setUp(self): + self.test_cases = itertools.product( + [1, 3], # inp + [1, 5], # out + [[24, 48, 96], [24, 36]], # and hiddens + ["tanh", "none"], # activation + [True, False], # resnet_dt + ["float32", "double"], # precision + [True, False], # bias_out + ) + + def test_match_fitting_net( + self, + ): + for idim, odim, nn, act, idt, prec, ob in self.test_cases: + # input + rtol, atol = get_tols(prec) + dtype = PRECISION_DICT[prec] + xx = torch.arange(idim, dtype=dtype) + # def MLP + ml = FittingNet( + idim, + odim, + neuron=nn, + activation_function=act, + resnet_dt=idt, + precision=prec, + bias_out=ob, + ) + # check consistency + nl = DPFittingNet.deserialize(ml.serialize()) + np.testing.assert_allclose( + ml.forward(xx).detach().numpy(), + nl.call(xx.detach().numpy()), + rtol=rtol, + atol=atol, + err_msg=f"idim={idim} nn={nn} use_dt={idt} act={act} prec={prec}", + ) + # check self-consistency + ml1 = FittingNet.deserialize(ml.serialize()) + np.testing.assert_allclose( + ml.forward(xx).detach().numpy(), + ml1.forward(xx).detach().numpy(), + rtol=rtol, + atol=atol, + err_msg=f"idim={idim} nn={nn} use_dt={idt} act={act} prec={prec}", + ) - def test_match_fitting_net( - self, - ): - for idim, odim, nn, act, idt, prec, ob in self.test_cases: - # input - rtol, atol = get_tols(prec) - dtype = PRECISION_DICT[prec] - xx = torch.arange(idim, dtype=dtype) - # def MLP - ml = FittingNet( - idim, odim, - neuron=nn, - activation_function=act, - resnet_dt=idt, - precision=prec, - bias_out=ob, - ) - # check consistency - nl = DPFittingNet.deserialize(ml.serialize()) - np.testing.assert_allclose( - ml.forward(xx).detach().numpy(), nl.call(xx.detach().numpy()), - rtol=rtol, atol=atol, - err_msg=f"idim={idim} nn={nn} use_dt={idt} act={act} prec={prec}" - ) - # check self-consistency - ml1 = FittingNet.deserialize(ml.serialize()) - np.testing.assert_allclose( - ml.forward(xx).detach().numpy(), ml1.forward(xx).detach().numpy(), - rtol=rtol, atol=atol, - err_msg=f"idim={idim} nn={nn} use_dt={idt} act={act} prec={prec}" - ) - - def test_jit( - self, - ): - for idim, odim, nn, act, idt, prec, ob in self.test_cases: - # def MLP - ml = FittingNet( - idim, odim, - neuron=nn, - activation_function=act, - resnet_dt=idt, - precision=prec, - bias_out=ob, - ) - ml1 = FittingNet.deserialize(ml.serialize()) - model = torch.jit.script(ml) - model = torch.jit.script(ml1) - + def test_jit( + self, + ): + for idim, odim, nn, act, idt, prec, ob in self.test_cases: + # def MLP + ml = FittingNet( + idim, + odim, + neuron=nn, + activation_function=act, + resnet_dt=idt, + precision=prec, + bias_out=ob, + ) + ml1 = FittingNet.deserialize(ml.serialize()) + model = torch.jit.script(ml) + model = torch.jit.script(ml1) diff --git a/tests/test_model.py b/tests/test_model.py index 61ee2c6e..10aefe49 100644 --- a/tests/test_model.py +++ b/tests/test_model.py @@ -1,77 +1,101 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later import collections import json import unittest +import numpy as np import tensorflow.compat.v1 as tf +import torch tf.disable_eager_execution() -from deepmd import op -from deepmd.common import data_requirement, expand_sys_str -from deepmd.descriptor import DescrptSeA as DescrptSeA_tf -from deepmd.fit import EnerFitting -from deepmd.loss import EnerStdLoss -from deepmd.model import EnerModel -from deepmd.utils.data_system import DeepmdDataSystem -from deepmd.utils.learning_rate import LearningRateExp - -from deepmd_pt.utils.dataloader import DpLoaderSet +from deepmd.tf.common import ( + data_requirement, + expand_sys_str, +) +from deepmd.tf.descriptor import DescrptSeA as DescrptSeA_tf +from deepmd.tf.fit import ( + EnerFitting, +) +from deepmd.tf.loss import ( + EnerStdLoss, +) +from deepmd.tf.model import ( + EnerModel, +) +from deepmd.tf.utils.data_system import ( + DeepmdDataSystem, +) +from deepmd.tf.utils.learning_rate import ( + LearningRateExp, +) + +from deepmd_pt.loss import ( + EnergyStdLoss, +) +from deepmd_pt.model.model import ( + get_model, +) +from deepmd_pt.utils.dataloader import ( + DpLoaderSet, +) +from deepmd_pt.utils.env import ( + DEVICE, + TEST_CONFIG, +) from deepmd_pt.utils.learning_rate import LearningRateExp as MyLRExp -from deepmd_pt.loss import EnergyStdLoss -from deepmd_pt.model.model import get_model -from deepmd_pt.utils.env import * - -from deepmd_pt.utils.stat import make_stat_input +from deepmd_pt.utils.stat import ( + make_stat_input, +) -VariableState = collections.namedtuple('VariableState', ['value', 'gradient']) +VariableState = collections.namedtuple("VariableState", ["value", "gradient"]) def torch2tf(torch_name): - fields = torch_name.split('.') + fields = torch_name.split(".") offset = int(fields[2] == "networks") element_id = int(fields[2 + offset]) - if fields[0] == 'descriptor': + if fields[0] == "descriptor": layer_id = int(fields[4 + offset]) + 1 weight_type = fields[5 + offset] - return 'filter_type_all/%s_%d_%d:0' % (weight_type, layer_id, element_id) - elif fields[3] == 'deep_layers': + return "filter_type_all/%s_%d_%d:0" % (weight_type, layer_id, element_id) + elif fields[3] == "deep_layers": layer_id = int(fields[4]) weight_type = fields[5] - return 'layer_%d_type_%d/%s:0' % (layer_id, element_id, weight_type) - elif fields[3] == 'final_layer': + return "layer_%d_type_%d/%s:0" % (layer_id, element_id, weight_type) + elif fields[3] == "final_layer": weight_type = fields[4] - return 'final_layer_type_%d/%s:0' % (element_id, weight_type) + return "final_layer_type_%d/%s:0" % (element_id, weight_type) else: - raise RuntimeError('Unexpected parameter name: %s' % torch_name) + raise RuntimeError("Unexpected parameter name: %s" % torch_name) -class DpTrainer(object): - +class DpTrainer: def __init__(self): - with open(TEST_CONFIG, 'r') as fin: + with open(TEST_CONFIG) as fin: content = fin.read() config = json.loads(content) - model_config = config['model'] - self.rcut = model_config['descriptor']['rcut'] - self.rcut_smth = model_config['descriptor']['rcut_smth'] - self.sel = model_config['descriptor']['sel'] - self.systems = config['training']['validation_data']['systems'] + model_config = config["model"] + self.rcut = model_config["descriptor"]["rcut"] + self.rcut_smth = model_config["descriptor"]["rcut_smth"] + self.sel = model_config["descriptor"]["sel"] + self.systems = config["training"]["validation_data"]["systems"] if isinstance(self.systems, str): self.systems = expand_sys_str(self.systems) - self.batch_size = config['training']['training_data']['batch_size'] - self.type_map = model_config['type_map'] - self.filter_neuron = model_config['descriptor']['neuron'] - self.axis_neuron = model_config['descriptor']['axis_neuron'] - self.n_neuron = model_config['fitting_net']['neuron'] + self.batch_size = config["training"]["training_data"]["batch_size"] + self.type_map = model_config["type_map"] + self.filter_neuron = model_config["descriptor"]["neuron"] + self.axis_neuron = model_config["descriptor"]["axis_neuron"] + self.n_neuron = model_config["fitting_net"]["neuron"] self.data_stat_nbatch = 3 self.start_lr = 0.001 self.stop_lr = 3.51e-8 self.decay_steps = 500 self.stop_steps = 1600 - self.start_pref_e = 1. - self.limit_pref_e = 2. - self.start_pref_f = 2. - self.limit_pref_f = 1. + self.start_pref_e = 1.0 + self.limit_pref_e = 2.0 + self.start_pref_f = 2.0 + self.limit_pref_f = 1.0 self.ntypes = len(self.type_map) def get_intermediate_state(self, num_steps=1): @@ -86,21 +110,21 @@ def get_intermediate_state(self, num_steps=1): with g.as_default(): place_holders = self._get_dp_placeholders(dp_ds) model_pred = dp_model.build( - coord_=place_holders['coord'], - atype_=place_holders['type'], - natoms=place_holders['natoms_vec'], - box=place_holders['box'], - mesh=place_holders['default_mesh'], - input_dict=place_holders + coord_=place_holders["coord"], + atype_=place_holders["type"], + natoms=place_holders["natoms_vec"], + box=place_holders["box"], + mesh=place_holders["default_mesh"], + input_dict=place_holders, ) global_step = tf.train.get_or_create_global_step() learning_rate = dp_lr.build(global_step, self.stop_steps) l2_l, _ = dp_loss.build( learning_rate=learning_rate, - natoms=place_holders['natoms_vec'], + natoms=place_holders["natoms_vec"], model_dict=model_pred, label_dict=place_holders, - suffix='test' + suffix="test", ) t_vars = tf.trainable_variables() optimizer = tf.train.AdamOptimizer(learning_rate) @@ -108,18 +132,18 @@ def get_intermediate_state(self, num_steps=1): train_op = optimizer.apply_gradients(t_grad_and_vars, global_step) init_op = tf.global_variables_initializer() t_heads = { - 'loss': l2_l, - 'energy': model_pred['energy'], - 'force': model_pred['force'], - 'virial': model_pred['virial'], - 'atomic_virial': model_pred['atom_virial'], + "loss": l2_l, + "energy": model_pred["energy"], + "force": model_pred["force"], + "virial": model_pred["virial"], + "atomic_virial": model_pred["atom_virial"], } # Get statistics of each component stat_dict = { - 'descriptor.mean': dp_model.descrpt.davg, - 'descriptor.stddev': dp_model.descrpt.dstd, - 'fitting_net.bias_atom_e': dp_model.fitting.bias_atom_e + "descriptor.mean": dp_model.descrpt.davg, + "descriptor.stddev": dp_model.descrpt.dstd, + "fitting_net.bias_atom_e": dp_model.fitting.bias_atom_e, } # Get variables and their gradients @@ -132,7 +156,9 @@ def get_intermediate_state(self, num_steps=1): batch = dp_ds.get_batch() feeds = self._get_feed_dict(batch, place_holders) - grads_and_vars, head_dict = sess.run([t_grad_and_vars, t_heads], feed_dict=feeds) + grads_and_vars, head_dict = sess.run( + [t_grad_and_vars, t_heads], feed_dict=feeds + ) vs_dict = {} for idx, one in enumerate(t_vars): grad, var = grads_and_vars[idx] @@ -148,7 +174,7 @@ def _get_dp_dataset(self): test_size=1, rcut=self.rcut, type_map=self.type_map, - trn_all_set=True + trn_all_set=True, ) data.add_dict(data_requirement) return data @@ -159,17 +185,14 @@ def _get_dp_model(self): rcut_smth=self.rcut_smth, sel=self.sel, neuron=self.filter_neuron, - axis_neuron=self.axis_neuron - ) - dp_fitting = EnerFitting( - descrpt=dp_descrpt, - neuron=self.n_neuron + axis_neuron=self.axis_neuron, ) + dp_fitting = EnerFitting(descrpt=dp_descrpt, neuron=self.n_neuron) return EnerModel( dp_descrpt, dp_fitting, type_map=self.type_map, - data_stat_nbatch=self.data_stat_nbatch + data_stat_nbatch=self.data_stat_nbatch, ) def _get_dp_loss(self): @@ -178,88 +201,94 @@ def _get_dp_loss(self): start_pref_e=self.start_pref_e, limit_pref_e=self.limit_pref_e, start_pref_f=self.start_pref_f, - limit_pref_f=self.limit_pref_f + limit_pref_f=self.limit_pref_f, ) def _get_dp_lr(self): return LearningRateExp( - start_lr=self.start_lr, - stop_lr=self.stop_lr, - decay_steps=self.decay_steps + start_lr=self.start_lr, stop_lr=self.stop_lr, decay_steps=self.decay_steps ) def _get_dp_placeholders(self, dataset): place_holders = {} data_dict = dataset.get_data_dict() for kk in data_dict.keys(): - if kk == 'type': + if kk == "type": continue prec = tf.float64 - place_holders[kk] = tf.placeholder(prec, [None], name='t_' + kk) - place_holders['find_' + kk] = tf.placeholder(tf.float32, name='t_find_' + kk) - place_holders['type'] = tf.placeholder(tf.int32, [None], name='t_type') - place_holders['natoms_vec'] = tf.placeholder(tf.int32, [self.ntypes + 2], name='t_natoms') - place_holders['default_mesh'] = tf.placeholder(tf.int32, [None], name='t_mesh') - place_holders['is_training'] = tf.placeholder(tf.bool) + place_holders[kk] = tf.placeholder(prec, [None], name="t_" + kk) + place_holders["find_" + kk] = tf.placeholder( + tf.float32, name="t_find_" + kk + ) + place_holders["type"] = tf.placeholder(tf.int32, [None], name="t_type") + place_holders["natoms_vec"] = tf.placeholder( + tf.int32, [self.ntypes + 2], name="t_natoms" + ) + place_holders["default_mesh"] = tf.placeholder(tf.int32, [None], name="t_mesh") + place_holders["is_training"] = tf.placeholder(tf.bool) return place_holders def _get_feed_dict(self, batch, place_holders): feed_dict = {} for kk in batch.keys(): - if kk == 'find_type' or kk == 'type': + if kk == "find_type" or kk == "type": continue - if 'find_' in kk: + if "find_" in kk: feed_dict[place_holders[kk]] = batch[kk] else: feed_dict[place_holders[kk]] = np.reshape(batch[kk], [-1]) - for ii in ['type']: + for ii in ["type"]: feed_dict[place_holders[ii]] = np.reshape(batch[ii], [-1]) - for ii in ['natoms_vec', 'default_mesh']: + for ii in ["natoms_vec", "default_mesh"]: feed_dict[place_holders[ii]] = batch[ii] - feed_dict[place_holders['is_training']] = True + feed_dict[place_holders["is_training"]] = True return feed_dict class TestEnergy(unittest.TestCase): - def setUp(self): self.dp_trainer = DpTrainer() self.wanted_step = 0 for key in dir(self.dp_trainer): - if not key.startswith('_') or key == 'get_intermediate_state': + if not key.startswith("_") or key == "get_intermediate_state": value = getattr(self.dp_trainer, key) setattr(self, key, value) def test_consistency(self): - batch, head_dict, stat_dict, vs_dict = self.dp_trainer.get_intermediate_state(self.wanted_step) + batch, head_dict, stat_dict, vs_dict = self.dp_trainer.get_intermediate_state( + self.wanted_step + ) # Build DeePMD graph - my_ds = DpLoaderSet(self.systems, self.batch_size, - model_params={ - 'descriptor': { - 'type': 'se_e2_a', - 'sel': self.sel, - 'rcut': self.rcut, - }, - 'type_map': self.type_map - }) - sampled = make_stat_input(my_ds.systems, my_ds.dataloaders, self.data_stat_nbatch) - my_model = get_model( + my_ds = DpLoaderSet( + self.systems, + self.batch_size, model_params={ - 'descriptor': { - 'type': 'se_e2_a', - 'sel': self.sel, - 'rcut_smth': self.rcut_smth, - 'rcut': self.rcut, - 'neuron': self.filter_neuron, - 'axis_neuron': self.axis_neuron, + "descriptor": { + "type": "se_e2_a", + "sel": self.sel, + "rcut": self.rcut, }, - 'fitting_net': { - 'neuron': self.n_neuron + "type_map": self.type_map, + }, + ) + sampled = make_stat_input( + my_ds.systems, my_ds.dataloaders, self.data_stat_nbatch + ) + my_model = get_model( + model_params={ + "descriptor": { + "type": "se_e2_a", + "sel": self.sel, + "rcut_smth": self.rcut_smth, + "rcut": self.rcut, + "neuron": self.filter_neuron, + "axis_neuron": self.axis_neuron, }, - 'data_stat_nbatch': self.data_stat_nbatch, - 'type_map': self.type_map, + "fitting_net": {"neuron": self.n_neuron}, + "data_stat_nbatch": self.data_stat_nbatch, + "type_map": self.type_map, }, - sampled=sampled + sampled=sampled, ) my_model.to(DEVICE) my_lr = MyLRExp(self.start_lr, self.stop_lr, self.decay_steps, self.stop_steps) @@ -268,22 +297,26 @@ def test_consistency(self): start_pref_e=self.start_pref_e, limit_pref_e=self.limit_pref_e, start_pref_f=self.start_pref_f, - limit_pref_f=self.limit_pref_f + limit_pref_f=self.limit_pref_f, ) # Keep statistics consistency between 2 implentations my_em = my_model.descriptor - mean = stat_dict['descriptor.mean'].reshape([self.ntypes, my_em.get_nsel(), 4]) - stddev = stat_dict['descriptor.stddev'].reshape([self.ntypes, my_em.get_nsel(), 4]) + mean = stat_dict["descriptor.mean"].reshape([self.ntypes, my_em.get_nsel(), 4]) + stddev = stat_dict["descriptor.stddev"].reshape( + [self.ntypes, my_em.get_nsel(), 4] + ) my_em.set_stat_mean_and_stddev( - torch.tensor(mean, device=DEVICE), - torch.tensor(stddev, device=DEVICE), + torch.tensor(mean, device=DEVICE), + torch.tensor(stddev, device=DEVICE), + ) + my_model.fitting_net.bias_atom_e = torch.tensor( + stat_dict["fitting_net.bias_atom_e"], device=DEVICE ) - my_model.fitting_net.bias_atom_e = torch.tensor(stat_dict['fitting_net.bias_atom_e'], device=DEVICE) # Keep parameter value consistency between 2 implentations for name, param in my_model.named_parameters(): - name = name.replace('sea.', '') + name = name.replace("sea.", "") var_name = torch2tf(name) var = vs_dict[var_name].value with torch.no_grad(): @@ -295,28 +328,64 @@ def test_consistency(self): dst.copy_(src) # Start forward computing batch = my_ds.systems[0]._data_system.preprocess(batch) - batch['coord'].requires_grad_(True) - batch['natoms'] = torch.tensor(batch['natoms_vec'], device=batch['coord'].device).unsqueeze(0) - model_predict = my_model(batch['coord'], batch['atype'], batch['box'], do_atomic_virial=True) - model_predict_1 = my_model(batch['coord'], batch['atype'], batch['box'], do_atomic_virial=False) - p_energy, p_force, p_virial, p_atomic_virial = model_predict['energy'], model_predict['force'], model_predict['virial'], model_predict['atomic_virial'] + batch["coord"].requires_grad_(True) + batch["natoms"] = torch.tensor( + batch["natoms_vec"], device=batch["coord"].device + ).unsqueeze(0) + model_predict = my_model( + batch["coord"], batch["atype"], batch["box"], do_atomic_virial=True + ) + model_predict_1 = my_model( + batch["coord"], batch["atype"], batch["box"], do_atomic_virial=False + ) + p_energy, p_force, p_virial, p_atomic_virial = ( + model_predict["energy"], + model_predict["force"], + model_predict["virial"], + model_predict["atomic_virial"], + ) cur_lr = my_lr.value(self.wanted_step) - model_pred = {'energy': p_energy, - 'force': p_force, - } - label = {'energy': batch['energy'], - 'force': batch['force'], - } - loss, _ = my_loss(model_pred, label, int(batch['natoms'][0, 0]), cur_lr) - np.testing.assert_allclose(head_dict['energy'], p_energy.view(-1).cpu().detach().numpy()) - np.testing.assert_allclose(head_dict['force'], p_force.view(*head_dict['force'].shape).cpu().detach().numpy()) + model_pred = { + "energy": p_energy, + "force": p_force, + } + label = { + "energy": batch["energy"], + "force": batch["force"], + } + loss, _ = my_loss(model_pred, label, int(batch["natoms"][0, 0]), cur_lr) + np.testing.assert_allclose( + head_dict["energy"], p_energy.view(-1).cpu().detach().numpy() + ) + np.testing.assert_allclose( + head_dict["force"], + p_force.view(*head_dict["force"].shape).cpu().detach().numpy(), + ) rtol = 1e-5 atol = 1e-8 - np.testing.assert_allclose(head_dict['loss'], loss.cpu().detach().numpy(), rtol=rtol, atol=atol) - np.testing.assert_allclose(head_dict['virial'], p_virial.view(*head_dict['virial'].shape).cpu().detach().numpy()) - np.testing.assert_allclose(head_dict['virial'], model_predict_1['virial'].view(*head_dict['virial'].shape).cpu().detach().numpy()) - self.assertIsNone(model_predict_1.get('atomic_virial', None)) - np.testing.assert_allclose(head_dict['atomic_virial'], p_atomic_virial.view(*head_dict['atomic_virial'].shape).cpu().detach().numpy()) + np.testing.assert_allclose( + head_dict["loss"], loss.cpu().detach().numpy(), rtol=rtol, atol=atol + ) + np.testing.assert_allclose( + head_dict["virial"], + p_virial.view(*head_dict["virial"].shape).cpu().detach().numpy(), + ) + np.testing.assert_allclose( + head_dict["virial"], + model_predict_1["virial"] + .view(*head_dict["virial"].shape) + .cpu() + .detach() + .numpy(), + ) + self.assertIsNone(model_predict_1.get("atomic_virial", None)) + np.testing.assert_allclose( + head_dict["atomic_virial"], + p_atomic_virial.view(*head_dict["atomic_virial"].shape) + .cpu() + .detach() + .numpy(), + ) optimizer = torch.optim.Adam(my_model.parameters(), lr=cur_lr) optimizer.zero_grad() @@ -328,7 +397,7 @@ def step(step_id): loss.backward() for name, param in my_model.named_parameters(): - name = name.replace('sea.', '') + name = name.replace("sea.", "") var_name = torch2tf(name) var_grad = vs_dict[var_name].gradient param_grad = param.grad.cpu() @@ -336,5 +405,5 @@ def step(step_id): assert np.allclose(var_grad, param_grad, rtol=rtol, atol=atol) -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/tests/test_nlist.py b/tests/test_nlist.py index 493bc7eb..1987528e 100644 --- a/tests/test_nlist.py +++ b/tests/test_nlist.py @@ -1,155 +1,212 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later import unittest + import torch -from deepmd_pt.utils.preprocess import Region3D -from deepmd_pt.utils import env -from deepmd_pt.utils.region import ( - phys2inter, - inter2phys, - to_face_distance, + +from deepmd_pt.utils import ( + env, ) from deepmd_pt.utils.nlist import ( - extend_coord_with_ghosts, - build_neighbor_list, - build_multiple_neighbor_list, - get_multiple_nlist_key, + build_multiple_neighbor_list, + build_neighbor_list, + extend_coord_with_ghosts, + get_multiple_nlist_key, ) -from deepmd_pt.utils.preprocess import( - build_neighbor_list as legacy_build_neighbor_list, +from deepmd_pt.utils.region import ( + inter2phys, ) dtype = torch.float64 + class TestNeighList(unittest.TestCase): - def setUp(self): - self.nf = 3 - self.nloc = 2 - self.ns = 5 * 5 * 3 - self.nall = self.ns * self.nloc - self.cell = torch.tensor( - [[1, 0, 0], [0.4, 0.8, 0], [0.1, 0.3, 2.1]], dtype=dtype).to(env.DEVICE) - self.icoord = torch.tensor([[0, 0, 0], [0.5, 0.5, 0.1]], dtype=dtype).to(env.DEVICE) - self.atype = torch.tensor([0, 1], dtype=torch.int).to(env.DEVICE) - [self.cell, self.icoord, self.atype] = [ - ii.unsqueeze(0) for ii in [self.cell, self.icoord, self.atype]] - self.coord = inter2phys(self.icoord, self.cell).view([-1, self.nloc*3]) - self.cell = self.cell.view([-1, 9]) - [self.cell, self.coord, self.atype] = [ - torch.tile(ii, [self.nf,1]) for ii in [self.cell, self.coord, self.atype]] - self.rcut = 1.01 - self.prec = 1e-10 - self.nsel = [10, 10] - # genrated by preprocess.build_neighbor_list - # ref_nlist, _, _ = legacy_build_neighbor_list( - # 2, ecoord[0], eatype[0], - # self.rcut, - # torch.tensor([10,20], dtype=torch.long), - # mapping[0], type_split=True, ) - self.ref_nlist = torch.tensor( - [[0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1], - [0, 0, 0, 0, -1, -1, -1, -1, -1, -1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1]] - ).to(env.DEVICE) - - def test_build_notype(self): - ecoord, eatype, mapping = extend_coord_with_ghosts( - self.coord, self.atype, self.cell, self.rcut) - nlist = build_neighbor_list( - ecoord, eatype, self.nloc, - self.rcut, sum(self.nsel), distinguish_types=False) - torch.testing.assert_close( - nlist[0], nlist[1]) - nlist_mask = nlist[0] == -1 - nlist_loc = mapping[0][nlist[0]] - nlist_loc[nlist_mask] = -1 - torch.testing.assert_close( - torch.sort(nlist_loc, dim=-1)[0], - torch.sort(self.ref_nlist, dim=-1)[0], - ) + def setUp(self): + self.nf = 3 + self.nloc = 2 + self.ns = 5 * 5 * 3 + self.nall = self.ns * self.nloc + self.cell = torch.tensor( + [[1, 0, 0], [0.4, 0.8, 0], [0.1, 0.3, 2.1]], dtype=dtype + ).to(env.DEVICE) + self.icoord = torch.tensor([[0, 0, 0], [0.5, 0.5, 0.1]], dtype=dtype).to( + env.DEVICE + ) + self.atype = torch.tensor([0, 1], dtype=torch.int).to(env.DEVICE) + [self.cell, self.icoord, self.atype] = [ + ii.unsqueeze(0) for ii in [self.cell, self.icoord, self.atype] + ] + self.coord = inter2phys(self.icoord, self.cell).view([-1, self.nloc * 3]) + self.cell = self.cell.view([-1, 9]) + [self.cell, self.coord, self.atype] = [ + torch.tile(ii, [self.nf, 1]) for ii in [self.cell, self.coord, self.atype] + ] + self.rcut = 1.01 + self.prec = 1e-10 + self.nsel = [10, 10] + # genrated by preprocess.build_neighbor_list + # ref_nlist, _, _ = legacy_build_neighbor_list( + # 2, ecoord[0], eatype[0], + # self.rcut, + # torch.tensor([10,20], dtype=torch.long), + # mapping[0], type_split=True, ) + self.ref_nlist = torch.tensor( + [ + [0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1], + [0, 0, 0, 0, -1, -1, -1, -1, -1, -1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1], + ] + ).to(env.DEVICE) - def test_build_type(self): - ecoord, eatype, mapping = extend_coord_with_ghosts( - self.coord, self.atype, self.cell, self.rcut) - nlist = build_neighbor_list( - ecoord, eatype, self.nloc, - self.rcut, self.nsel, distinguish_types=True, - ) - torch.testing.assert_close(nlist[0], nlist[1]) - nlist_mask = nlist[0] == -1 - nlist_loc = mapping[0][nlist[0]] - nlist_loc[nlist_mask] = -1 - for ii in range(2): - torch.testing.assert_close( - torch.sort(torch.split(nlist_loc, self.nsel, dim=-1)[ii], dim=-1)[0], - torch.sort(torch.split(self.ref_nlist, self.nsel, dim=-1)[ii], dim=-1)[0], - ) + def test_build_notype(self): + ecoord, eatype, mapping = extend_coord_with_ghosts( + self.coord, self.atype, self.cell, self.rcut + ) + nlist = build_neighbor_list( + ecoord, + eatype, + self.nloc, + self.rcut, + sum(self.nsel), + distinguish_types=False, + ) + torch.testing.assert_close(nlist[0], nlist[1]) + nlist_mask = nlist[0] == -1 + nlist_loc = mapping[0][nlist[0]] + nlist_loc[nlist_mask] = -1 + torch.testing.assert_close( + torch.sort(nlist_loc, dim=-1)[0], + torch.sort(self.ref_nlist, dim=-1)[0], + ) - def test_build_multiple_nlist(self): - rcuts = [1.01, 2.01] - nsels = [20, 80] - ecoord, eatype, mapping = extend_coord_with_ghosts( - self.coord, self.atype, self.cell, max(rcuts)) - nlist1 = build_neighbor_list( - ecoord, eatype, self.nloc, - rcuts[1], nsels[1]-1, - distinguish_types=False, - ) - pad = -1*torch.ones([self.nf,self.nloc,1], dtype=nlist1.dtype, device=nlist1.device) - nlist2 = torch.cat([nlist1, pad], dim=-1) - nlist0 = build_neighbor_list( - ecoord, eatype, self.nloc, - rcuts[0], nsels[0], - distinguish_types=False, - ) - nlists = build_multiple_neighbor_list(ecoord, nlist1, rcuts, nsels) - for dd in range(2): - self.assertEqual( - nlists[get_multiple_nlist_key(rcuts[dd], nsels[dd])].shape[-1], - nsels[dd], - ) - torch.testing.assert_close( - nlists[get_multiple_nlist_key(rcuts[0], nsels[0])], - nlist0, - ) - torch.testing.assert_close( - nlists[get_multiple_nlist_key(rcuts[1], nsels[1])], - nlist2, - ) + def test_build_type(self): + ecoord, eatype, mapping = extend_coord_with_ghosts( + self.coord, self.atype, self.cell, self.rcut + ) + nlist = build_neighbor_list( + ecoord, + eatype, + self.nloc, + self.rcut, + self.nsel, + distinguish_types=True, + ) + torch.testing.assert_close(nlist[0], nlist[1]) + nlist_mask = nlist[0] == -1 + nlist_loc = mapping[0][nlist[0]] + nlist_loc[nlist_mask] = -1 + for ii in range(2): + torch.testing.assert_close( + torch.sort(torch.split(nlist_loc, self.nsel, dim=-1)[ii], dim=-1)[0], + torch.sort(torch.split(self.ref_nlist, self.nsel, dim=-1)[ii], dim=-1)[ + 0 + ], + ) - def test_extend_coord(self): - ecoord, eatype, mapping = extend_coord_with_ghosts( - self.coord, self.atype, self.cell, self.rcut) - # expected ncopy x nloc - self.assertEqual(list(ecoord.shape), [self.nf, self.nall*3]) - self.assertEqual(list(eatype.shape), [self.nf, self.nall]) - self.assertEqual(list(mapping.shape), [self.nf, self.nall]) - # check the nloc part is identical with original coord - torch.testing.assert_close( - ecoord[:,:self.nloc*3], self.coord, rtol=self.prec, atol=self.prec) - # check the shift vectors are aligned with grid - shift_vec = \ - ecoord.view([-1, self.ns, self.nloc, 3]) - \ - self.coord.view([-1, self.nloc, 3])[:,None,:,:] - shift_vec = shift_vec.view([-1, self.nall, 3]) - # hack!!! assumes identical cell across frames - shift_vec = torch.matmul(shift_vec, torch.linalg.inv(self.cell.view([self.nf,3,3])[0])) - # nf x nall x 3 - shift_vec = torch.round(shift_vec) - # check: identical shift vecs - torch.testing.assert_close( - shift_vec[0], shift_vec[1], rtol=self.prec, atol=self.prec) - # check: shift idx aligned with grid - mm, cc = torch.unique(shift_vec[0][:,0], dim=-1, return_counts=True) - torch.testing.assert_close( - mm, torch.tensor([-2,-1,0,1,2], dtype=dtype).to(env.DEVICE), rtol=self.prec, atol=self.prec) - torch.testing.assert_close( - cc, torch.tensor([30,30,30,30,30], dtype=torch.long).to(env.DEVICE), rtol=self.prec, atol=self.prec) - mm, cc = torch.unique(shift_vec[1][:,1], dim=-1, return_counts=True) - torch.testing.assert_close( - mm, torch.tensor([-2,-1,0,1,2], dtype=dtype).to(env.DEVICE), rtol=self.prec, atol=self.prec) - torch.testing.assert_close( - cc, torch.tensor([30,30,30,30,30], dtype=torch.long).to(env.DEVICE), rtol=self.prec, atol=self.prec) - mm, cc = torch.unique(shift_vec[1][:,2], dim=-1, return_counts=True) - torch.testing.assert_close( - mm, torch.tensor([-1,0,1], dtype=dtype).to(env.DEVICE), rtol=self.prec, atol=self.prec) - torch.testing.assert_close( - cc, torch.tensor([50,50,50], dtype=torch.long).to(env.DEVICE), rtol=self.prec, atol=self.prec) + def test_build_multiple_nlist(self): + rcuts = [1.01, 2.01] + nsels = [20, 80] + ecoord, eatype, mapping = extend_coord_with_ghosts( + self.coord, self.atype, self.cell, max(rcuts) + ) + nlist1 = build_neighbor_list( + ecoord, + eatype, + self.nloc, + rcuts[1], + nsels[1] - 1, + distinguish_types=False, + ) + pad = -1 * torch.ones( + [self.nf, self.nloc, 1], dtype=nlist1.dtype, device=nlist1.device + ) + nlist2 = torch.cat([nlist1, pad], dim=-1) + nlist0 = build_neighbor_list( + ecoord, + eatype, + self.nloc, + rcuts[0], + nsels[0], + distinguish_types=False, + ) + nlists = build_multiple_neighbor_list(ecoord, nlist1, rcuts, nsels) + for dd in range(2): + self.assertEqual( + nlists[get_multiple_nlist_key(rcuts[dd], nsels[dd])].shape[-1], + nsels[dd], + ) + torch.testing.assert_close( + nlists[get_multiple_nlist_key(rcuts[0], nsels[0])], + nlist0, + ) + torch.testing.assert_close( + nlists[get_multiple_nlist_key(rcuts[1], nsels[1])], + nlist2, + ) + def test_extend_coord(self): + ecoord, eatype, mapping = extend_coord_with_ghosts( + self.coord, self.atype, self.cell, self.rcut + ) + # expected ncopy x nloc + self.assertEqual(list(ecoord.shape), [self.nf, self.nall * 3]) + self.assertEqual(list(eatype.shape), [self.nf, self.nall]) + self.assertEqual(list(mapping.shape), [self.nf, self.nall]) + # check the nloc part is identical with original coord + torch.testing.assert_close( + ecoord[:, : self.nloc * 3], self.coord, rtol=self.prec, atol=self.prec + ) + # check the shift vectors are aligned with grid + shift_vec = ( + ecoord.view([-1, self.ns, self.nloc, 3]) + - self.coord.view([-1, self.nloc, 3])[:, None, :, :] + ) + shift_vec = shift_vec.view([-1, self.nall, 3]) + # hack!!! assumes identical cell across frames + shift_vec = torch.matmul( + shift_vec, torch.linalg.inv(self.cell.view([self.nf, 3, 3])[0]) + ) + # nf x nall x 3 + shift_vec = torch.round(shift_vec) + # check: identical shift vecs + torch.testing.assert_close( + shift_vec[0], shift_vec[1], rtol=self.prec, atol=self.prec + ) + # check: shift idx aligned with grid + mm, cc = torch.unique(shift_vec[0][:, 0], dim=-1, return_counts=True) + torch.testing.assert_close( + mm, + torch.tensor([-2, -1, 0, 1, 2], dtype=dtype).to(env.DEVICE), + rtol=self.prec, + atol=self.prec, + ) + torch.testing.assert_close( + cc, + torch.tensor([30, 30, 30, 30, 30], dtype=torch.long).to(env.DEVICE), + rtol=self.prec, + atol=self.prec, + ) + mm, cc = torch.unique(shift_vec[1][:, 1], dim=-1, return_counts=True) + torch.testing.assert_close( + mm, + torch.tensor([-2, -1, 0, 1, 2], dtype=dtype).to(env.DEVICE), + rtol=self.prec, + atol=self.prec, + ) + torch.testing.assert_close( + cc, + torch.tensor([30, 30, 30, 30, 30], dtype=torch.long).to(env.DEVICE), + rtol=self.prec, + atol=self.prec, + ) + mm, cc = torch.unique(shift_vec[1][:, 2], dim=-1, return_counts=True) + torch.testing.assert_close( + mm, + torch.tensor([-1, 0, 1], dtype=dtype).to(env.DEVICE), + rtol=self.prec, + atol=self.prec, + ) + torch.testing.assert_close( + cc, + torch.tensor([50, 50, 50], dtype=torch.long).to(env.DEVICE), + rtol=self.prec, + atol=self.prec, + ) diff --git a/tests/test_permutation.py b/tests/test_permutation.py index ff77c464..f33d1c28 100644 --- a/tests/test_permutation.py +++ b/tests/test_permutation.py @@ -1,143 +1,57 @@ -import torch, copy +# SPDX-License-Identifier: LGPL-3.0-or-later +import copy import unittest -from deepmd_pt.utils import env -from deepmd_pt.model.model import get_model -from deepmd_pt.utils.dataloader import DpLoaderSet -from deepmd_pt.utils.stat import make_stat_input -from deepmd_pt.infer.deep_eval import eval_model + +import torch + +from deepmd_pt.infer.deep_eval import ( + eval_model, +) +from deepmd_pt.model.model import ( + get_model, +) +from deepmd_pt.utils import ( + env, +) +from deepmd_pt.utils.dataloader import ( + DpLoaderSet, +) +from deepmd_pt.utils.stat import ( + make_stat_input, +) dtype = torch.float64 model_se_e2_a = { - "type_map": ["O", "H", "B"], - "descriptor": { - "type": "se_e2_a", - "sel": [46, 92, 4], - "rcut_smth": 0.50, - "rcut": 6.00, - "neuron": [25, 50, 100], - "resnet_dt": False, - "axis_neuron": 16, - "seed": 1, - }, - "fitting_net": { - "neuron": [24, 24, 24], - "resnet_dt": True, - "seed": 1, - }, - "data_stat_nbatch": 20, + "type_map": ["O", "H", "B"], + "descriptor": { + "type": "se_e2_a", + "sel": [46, 92, 4], + "rcut_smth": 0.50, + "rcut": 6.00, + "neuron": [25, 50, 100], + "resnet_dt": False, + "axis_neuron": 16, + "seed": 1, + }, + "fitting_net": { + "neuron": [24, 24, 24], + "resnet_dt": True, + "seed": 1, + }, + "data_stat_nbatch": 20, } model_dpa2 = { - "type_map": ["O", "H", "B"], - "descriptor": { - "type": "dpa2", - "repinit_rcut": 6.0, - "repinit_rcut_smth": 2.0, - "repinit_nsel": 30, - "repformer_rcut": 4.0, - "repformer_rcut_smth": 0.5, - "repformer_nsel": 20, - "repinit_neuron": [2, 4, 8], - "repinit_axis_neuron": 4, - "repinit_activation": "tanh", - "repformer_nlayers": 12, - "repformer_g1_dim": 8, - "repformer_g2_dim": 5, - "repformer_attn2_hidden": 3, - "repformer_attn2_nhead": 1, - "repformer_attn1_hidden": 5, - "repformer_attn1_nhead": 1, - "repformer_axis_dim": 4, - "repformer_update_h2": False, - "repformer_update_g1_has_conv": True, - "repformer_update_g1_has_grrg": True, - "repformer_update_g1_has_drrd": True, - "repformer_update_g1_has_attn": True, - "repformer_update_g2_has_g1g1": True, - "repformer_update_g2_has_attn": True, - "repformer_attn2_has_gate": True, - "repformer_add_type_ebd_to_seq": False - }, - "fitting_net": { - "neuron": [24, 24], - "resnet_dt": True, - "seed": 1, - }, -} - -model_dpa1 = { - "type_map": ["O", "H", "B"], - "descriptor": { - "type": "se_atten", - "sel": 40, - "rcut_smth": 0.5, - "rcut": 4.0, - "neuron": [25, 50, 100], - "axis_neuron": 16, - "attn": 64, - "attn_layer": 2, - "attn_dotr": True, - "attn_mask": False, - "post_ln": True, - "ffn": False, - "ffn_embed_dim": 512, - "activation": "tanh", - "scaling_factor": 1.0, - "head_num": 1, - "normalize": False, - "temperature": 1.0, - "set_davg_zero": True - }, - "fitting_net": { - "neuron": [24, 24, 24], - "resnet_dt": True, - "seed": 1, - }, -} - - -model_hybrid = { - "type_map": [ - "O", - "H", - "B" - ], - "descriptor": { - "type": "hybrid", - "list": [ - { - "type": "se_atten", - "sel": 120, - "rcut_smth": 0.5, - "rcut": 6.0, - "neuron": [ - 25, - 50, - 100 - ], - "axis_neuron": 16, - "attn": 128, - "attn_layer": 0, - "attn_dotr": True, - "attn_mask": False, - "post_ln": True, - "ffn": False, - "ffn_embed_dim": 1024, - "activation": "tanh", - "scaling_factor": 1.0, - "head_num": 1, - "normalize": True, - "temperature": 1.0 - }, - { + "type_map": ["O", "H", "B"], + "descriptor": { "type": "dpa2", "repinit_rcut": 6.0, "repinit_rcut_smth": 2.0, "repinit_nsel": 30, "repformer_rcut": 4.0, "repformer_rcut_smth": 0.5, - "repformer_nsel": 10, + "repformer_nsel": 20, "repinit_neuron": [2, 4, 8], "repinit_axis_neuron": 4, "repinit_activation": "tanh", @@ -157,115 +71,232 @@ "repformer_update_g2_has_g1g1": True, "repformer_update_g2_has_attn": True, "repformer_attn2_has_gate": True, - "repformer_add_type_ebd_to_seq": False - }, - ] - }, - "fitting_net": { - "neuron": [ - 240, - 240, - 240 - ], - "resnet_dt": True, - "seed": 1, - "_comment": " that's all" - }, - "_comment": " that's all" + "repformer_add_type_ebd_to_seq": False, + }, + "fitting_net": { + "neuron": [24, 24], + "resnet_dt": True, + "seed": 1, + }, +} + +model_dpa1 = { + "type_map": ["O", "H", "B"], + "descriptor": { + "type": "se_atten", + "sel": 40, + "rcut_smth": 0.5, + "rcut": 4.0, + "neuron": [25, 50, 100], + "axis_neuron": 16, + "attn": 64, + "attn_layer": 2, + "attn_dotr": True, + "attn_mask": False, + "post_ln": True, + "ffn": False, + "ffn_embed_dim": 512, + "activation": "tanh", + "scaling_factor": 1.0, + "head_num": 1, + "normalize": False, + "temperature": 1.0, + "set_davg_zero": True, + }, + "fitting_net": { + "neuron": [24, 24, 24], + "resnet_dt": True, + "seed": 1, + }, +} + + +model_hybrid = { + "type_map": ["O", "H", "B"], + "descriptor": { + "type": "hybrid", + "list": [ + { + "type": "se_atten", + "sel": 120, + "rcut_smth": 0.5, + "rcut": 6.0, + "neuron": [25, 50, 100], + "axis_neuron": 16, + "attn": 128, + "attn_layer": 0, + "attn_dotr": True, + "attn_mask": False, + "post_ln": True, + "ffn": False, + "ffn_embed_dim": 1024, + "activation": "tanh", + "scaling_factor": 1.0, + "head_num": 1, + "normalize": True, + "temperature": 1.0, + }, + { + "type": "dpa2", + "repinit_rcut": 6.0, + "repinit_rcut_smth": 2.0, + "repinit_nsel": 30, + "repformer_rcut": 4.0, + "repformer_rcut_smth": 0.5, + "repformer_nsel": 10, + "repinit_neuron": [2, 4, 8], + "repinit_axis_neuron": 4, + "repinit_activation": "tanh", + "repformer_nlayers": 12, + "repformer_g1_dim": 8, + "repformer_g2_dim": 5, + "repformer_attn2_hidden": 3, + "repformer_attn2_nhead": 1, + "repformer_attn1_hidden": 5, + "repformer_attn1_nhead": 1, + "repformer_axis_dim": 4, + "repformer_update_h2": False, + "repformer_update_g1_has_conv": True, + "repformer_update_g1_has_grrg": True, + "repformer_update_g1_has_drrd": True, + "repformer_update_g1_has_attn": True, + "repformer_update_g2_has_g1g1": True, + "repformer_update_g2_has_attn": True, + "repformer_attn2_has_gate": True, + "repformer_add_type_ebd_to_seq": False, + }, + ], + }, + "fitting_net": { + "neuron": [240, 240, 240], + "resnet_dt": True, + "seed": 1, + "_comment": " that's all", + }, + "_comment": " that's all", } def make_sample(model_params): - training_systems = ["tests/water/data/data_0", ] - data_stat_nbatch = model_params.get('data_stat_nbatch', 10) - train_data = DpLoaderSet( - training_systems, batch_size=4, model_params=model_params.copy(), - ) - sampled = make_stat_input( - train_data.systems, train_data.dataloaders, data_stat_nbatch) - return sampled + training_systems = [ + "tests/water/data/data_0", + ] + data_stat_nbatch = model_params.get("data_stat_nbatch", 10) + train_data = DpLoaderSet( + training_systems, + batch_size=4, + model_params=model_params.copy(), + ) + sampled = make_stat_input( + train_data.systems, train_data.dataloaders, data_stat_nbatch + ) + return sampled class TestPermutation: - def test( - self, - ): - natoms = 5 - cell = torch.rand([3, 3], dtype=dtype).to(env.DEVICE) - cell = (cell + cell.T) + 5. * torch.eye(3).to(env.DEVICE) - coord = torch.rand([natoms, 3], dtype=dtype).to(env.DEVICE) - coord = torch.matmul(coord, cell) - atype = torch.IntTensor([0, 0, 0, 1, 1]).to(env.DEVICE) - idx_perm = [1, 0, 4, 3, 2] - e0, f0, v0 = eval_model(self.model, coord.unsqueeze(0), cell.unsqueeze(0), atype) - ret0 = {'energy': e0.squeeze(0), 'force': f0.squeeze(0), 'virial': v0.squeeze(0)} - e1, f1, v1 = eval_model(self.model, coord[idx_perm].unsqueeze(0), cell.unsqueeze(0), atype[idx_perm]) - ret1 = {'energy': e1.squeeze(0), 'force': f1.squeeze(0), 'virial': v1.squeeze(0)} - prec = 1e-10 - torch.testing.assert_close(ret0['energy'], ret1['energy'], rtol=prec, atol=prec) - torch.testing.assert_close(ret0['force'][idx_perm], ret1['force'], rtol=prec, atol=prec) - if not hasattr(self, "test_virial") or self.test_virial: - torch.testing.assert_close(ret0['virial'], ret1['virial'], rtol=prec, atol=prec) + def test( + self, + ): + natoms = 5 + cell = torch.rand([3, 3], dtype=dtype).to(env.DEVICE) + cell = (cell + cell.T) + 5.0 * torch.eye(3).to(env.DEVICE) + coord = torch.rand([natoms, 3], dtype=dtype).to(env.DEVICE) + coord = torch.matmul(coord, cell) + atype = torch.IntTensor([0, 0, 0, 1, 1]).to(env.DEVICE) + idx_perm = [1, 0, 4, 3, 2] + e0, f0, v0 = eval_model( + self.model, coord.unsqueeze(0), cell.unsqueeze(0), atype + ) + ret0 = { + "energy": e0.squeeze(0), + "force": f0.squeeze(0), + "virial": v0.squeeze(0), + } + e1, f1, v1 = eval_model( + self.model, coord[idx_perm].unsqueeze(0), cell.unsqueeze(0), atype[idx_perm] + ) + ret1 = { + "energy": e1.squeeze(0), + "force": f1.squeeze(0), + "virial": v1.squeeze(0), + } + prec = 1e-10 + torch.testing.assert_close(ret0["energy"], ret1["energy"], rtol=prec, atol=prec) + torch.testing.assert_close( + ret0["force"][idx_perm], ret1["force"], rtol=prec, atol=prec + ) + if not hasattr(self, "test_virial") or self.test_virial: + torch.testing.assert_close( + ret0["virial"], ret1["virial"], rtol=prec, atol=prec + ) class TestEnergyModelSeA(unittest.TestCase, TestPermutation): - def setUp(self): - model_params = copy.deepcopy(model_se_e2_a) - sampled = make_sample(model_params) - self.type_split = False - self.model = get_model(model_params, sampled).to(env.DEVICE) + def setUp(self): + model_params = copy.deepcopy(model_se_e2_a) + sampled = make_sample(model_params) + self.type_split = False + self.model = get_model(model_params, sampled).to(env.DEVICE) class TestEnergyModelDPA1(unittest.TestCase, TestPermutation): - def setUp(self): - model_params = copy.deepcopy(model_dpa1) - sampled = make_sample(model_params) - self.type_split = True - self.model = get_model(model_params, sampled).to(env.DEVICE) + def setUp(self): + model_params = copy.deepcopy(model_dpa1) + sampled = make_sample(model_params) + self.type_split = True + self.model = get_model(model_params, sampled).to(env.DEVICE) class TestEnergyModelDPA2(unittest.TestCase, TestPermutation): - def setUp(self): - model_params_sample = copy.deepcopy(model_dpa2) - model_params_sample["descriptor"]["rcut"] = model_params_sample["descriptor"]["repinit_rcut"] - model_params_sample["descriptor"]["sel"] = model_params_sample["descriptor"]["repinit_nsel"] - sampled = make_sample(model_params_sample) - model_params = copy.deepcopy(model_dpa2) - self.type_split = True - self.model = get_model(model_params, sampled).to(env.DEVICE) + def setUp(self): + model_params_sample = copy.deepcopy(model_dpa2) + model_params_sample["descriptor"]["rcut"] = model_params_sample["descriptor"][ + "repinit_rcut" + ] + model_params_sample["descriptor"]["sel"] = model_params_sample["descriptor"][ + "repinit_nsel" + ] + sampled = make_sample(model_params_sample) + model_params = copy.deepcopy(model_dpa2) + self.type_split = True + self.model = get_model(model_params, sampled).to(env.DEVICE) class TestForceModelDPA2(unittest.TestCase, TestPermutation): - def setUp(self): - model_params_sample = copy.deepcopy(model_dpa2) - model_params_sample["descriptor"]["rcut"] = model_params_sample["descriptor"]["repinit_rcut"] - model_params_sample["descriptor"]["sel"] = model_params_sample["descriptor"]["repinit_nsel"] - sampled = make_sample(model_params_sample) - model_params = copy.deepcopy(model_dpa2) - model_params["fitting_net"]["type"] = "direct_force_ener" - self.type_split = True - self.test_virial = False - self.model = get_model(model_params, sampled).to(env.DEVICE) + def setUp(self): + model_params_sample = copy.deepcopy(model_dpa2) + model_params_sample["descriptor"]["rcut"] = model_params_sample["descriptor"][ + "repinit_rcut" + ] + model_params_sample["descriptor"]["sel"] = model_params_sample["descriptor"][ + "repinit_nsel" + ] + sampled = make_sample(model_params_sample) + model_params = copy.deepcopy(model_dpa2) + model_params["fitting_net"]["type"] = "direct_force_ener" + self.type_split = True + self.test_virial = False + self.model = get_model(model_params, sampled).to(env.DEVICE) @unittest.skip("hybrid not supported at the moment") class TestEnergyModelHybrid(unittest.TestCase, TestPermutation): - def setUp(self): - model_params = copy.deepcopy(model_hybrid) - sampled = make_sample(model_params) - self.type_split = True - self.model = get_model(model_params, sampled).to(env.DEVICE) + def setUp(self): + model_params = copy.deepcopy(model_hybrid) + sampled = make_sample(model_params) + self.type_split = True + self.model = get_model(model_params, sampled).to(env.DEVICE) @unittest.skip("hybrid not supported at the moment") class TestForceModelHybrid(unittest.TestCase, TestPermutation): - def setUp(self): - model_params = copy.deepcopy(model_hybrid) - model_params["fitting_net"]["type"] = "direct_force_ener" - sampled = make_sample(model_params) - self.type_split = True - self.test_virial = False - self.model = get_model(model_params, sampled).to(env.DEVICE) + def setUp(self): + model_params = copy.deepcopy(model_hybrid) + model_params["fitting_net"]["type"] = "direct_force_ener" + sampled = make_sample(model_params) + self.type_split = True + self.test_virial = False + self.model = get_model(model_params, sampled).to(env.DEVICE) # class TestEnergyFoo(unittest.TestCase): @@ -279,10 +310,10 @@ def setUp(self): # cell = (cell + cell.T) + 5. * torch.eye(3) # coord = torch.rand([natoms, 3], dtype=dtype) # coord = torch.matmul(coord, cell) -# atype = torch.IntTensor([0, 0, 0, 1, 1]) -# idx_perm = [1, 0, 4, 3, 2] +# atype = torch.IntTensor([0, 0, 0, 1, 1]) +# idx_perm = [1, 0, 4, 3, 2] # ret0 = infer_model(self.model, coord, cell, atype, type_split=True) -if __name__ == '__main__': - unittest.main() +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_permutation_denoise.py b/tests/test_permutation_denoise.py index 77cf74a5..aaff8fd1 100644 --- a/tests/test_permutation_denoise.py +++ b/tests/test_permutation_denoise.py @@ -1,16 +1,24 @@ -import torch, copy +# SPDX-License-Identifier: LGPL-3.0-or-later +import copy import unittest -from deepmd_pt.utils import env -from deepmd_pt.model.model import get_model -from deepmd_pt.utils.dataloader import DpLoaderSet -from deepmd_pt.utils.stat import make_stat_input -from deepmd_pt.infer.deep_eval import eval_model -from .test_permutation import ( - make_sample, - model_dpa1, - model_dpa2, - # model_dpau, - model_hybrid, + +import torch + +from deepmd_pt.infer.deep_eval import ( + eval_model, +) +from deepmd_pt.model.model import ( + get_model, +) +from deepmd_pt.utils import ( + env, +) + +from .test_permutation import ( # model_dpau, + make_sample, + model_dpa1, + model_dpa2, + model_hybrid, ) dtype = torch.float64 @@ -25,49 +33,70 @@ model_hybrid["type_map"] = ["O", "H", "B", "MASKED_TOKEN"] model_hybrid.pop("fitting_net") + class TestPermutationDenoise: - def test( - self, - ): - natoms = 5 - cell = torch.rand([3, 3], dtype=dtype).to(env.DEVICE) - cell = (cell + cell.T) + 5. * torch.eye(3).to(env.DEVICE) - coord = torch.rand([natoms, 3], dtype=dtype).to(env.DEVICE) - coord = torch.matmul(coord, cell) - atype = torch.IntTensor([0, 0, 0, 1, 1]).to(env.DEVICE) - idx_perm = [1, 0, 4, 3, 2] - updated_c0, logits0 = eval_model(self.model, coord.unsqueeze(0), cell.unsqueeze(0), atype, denoise=True) - ret0 = {'updated_coord': updated_c0.squeeze(0), 'logits': logits0.squeeze(0)} - updated_c1, logits1 = eval_model(self.model, coord[idx_perm].unsqueeze(0), cell.unsqueeze(0), atype[idx_perm], denoise=True) - ret1 = {'updated_coord': updated_c1.squeeze(0), 'logits': logits1.squeeze(0)} - prec = 1e-10 - torch.testing.assert_close(ret0['updated_coord'][idx_perm], ret1['updated_coord'], rtol=prec, atol=prec) - torch.testing.assert_close(ret0['logits'][idx_perm], ret1['logits'], rtol=prec, atol=prec) + def test( + self, + ): + natoms = 5 + cell = torch.rand([3, 3], dtype=dtype).to(env.DEVICE) + cell = (cell + cell.T) + 5.0 * torch.eye(3).to(env.DEVICE) + coord = torch.rand([natoms, 3], dtype=dtype).to(env.DEVICE) + coord = torch.matmul(coord, cell) + atype = torch.IntTensor([0, 0, 0, 1, 1]).to(env.DEVICE) + idx_perm = [1, 0, 4, 3, 2] + updated_c0, logits0 = eval_model( + self.model, coord.unsqueeze(0), cell.unsqueeze(0), atype, denoise=True + ) + ret0 = {"updated_coord": updated_c0.squeeze(0), "logits": logits0.squeeze(0)} + updated_c1, logits1 = eval_model( + self.model, + coord[idx_perm].unsqueeze(0), + cell.unsqueeze(0), + atype[idx_perm], + denoise=True, + ) + ret1 = {"updated_coord": updated_c1.squeeze(0), "logits": logits1.squeeze(0)} + prec = 1e-10 + torch.testing.assert_close( + ret0["updated_coord"][idx_perm], ret1["updated_coord"], rtol=prec, atol=prec + ) + torch.testing.assert_close( + ret0["logits"][idx_perm], ret1["logits"], rtol=prec, atol=prec + ) + class TestDenoiseModelDPA1(unittest.TestCase, TestPermutationDenoise): - def setUp(self): - model_params = copy.deepcopy(model_dpa1) - sampled = make_sample(model_params) - self.type_split = True - self.model = get_model(model_params, sampled).to(env.DEVICE) + def setUp(self): + model_params = copy.deepcopy(model_dpa1) + sampled = make_sample(model_params) + self.type_split = True + self.model = get_model(model_params, sampled).to(env.DEVICE) + class TestDenoiseModelDPA2(unittest.TestCase, TestPermutationDenoise): - def setUp(self): - model_params_sample = copy.deepcopy(model_dpa2) - model_params_sample["descriptor"]["rcut"] = model_params_sample["descriptor"]["repinit_rcut"] - model_params_sample["descriptor"]["sel"] = model_params_sample["descriptor"]["repinit_nsel"] - sampled = make_sample(model_params_sample) - model_params = copy.deepcopy(model_dpa2) - self.type_split = True - self.model = get_model(model_params, sampled).to(env.DEVICE) + def setUp(self): + model_params_sample = copy.deepcopy(model_dpa2) + model_params_sample["descriptor"]["rcut"] = model_params_sample["descriptor"][ + "repinit_rcut" + ] + model_params_sample["descriptor"]["sel"] = model_params_sample["descriptor"][ + "repinit_nsel" + ] + sampled = make_sample(model_params_sample) + model_params = copy.deepcopy(model_dpa2) + self.type_split = True + self.model = get_model(model_params, sampled).to(env.DEVICE) + + +# @unittest.skip("hybrid not supported at the moment") +# class TestDenoiseModelHybrid(unittest.TestCase, TestPermutationDenoise): +# def setUp(self): +# model_params = copy.deepcopy(model_hybrid_denoise) +# sampled = make_sample(model_params) +# self.type_split = True +# self.model = get_model(model_params, sampled).to(env.DEVICE) -@unittest.skip("hybrid not supported at the moment") -class TestDenoiseModelHybrid(unittest.TestCase, TestPermutationDenoise): - def setUp(self): - model_params = copy.deepcopy(model_hybrid_denoise) - sampled = make_sample(model_params) - self.type_split = True - self.model = get_model(model_params, sampled).to(env.DEVICE) -if __name__ == '__main__': - unittest.main() +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_region.py b/tests/test_region.py index 669487c0..98d3271e 100644 --- a/tests/test_region.py +++ b/tests/test_region.py @@ -1,69 +1,78 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later import unittest + +import numpy as np import torch -from deepmd_pt.utils.preprocess import Region3D + +from deepmd_pt.utils.preprocess import ( + Region3D, +) from deepmd_pt.utils.region import ( - phys2inter, - inter2phys, - to_face_distance, + inter2phys, + to_face_distance, ) -import numpy as np dtype = torch.float64 + class TestRegion(unittest.TestCase): - def setUp(self): - self.cell = torch.tensor( - [[1, 0, 0], [0.4, 0.8, 0], [0.1, 0.3, 2.1]], dtype=dtype) - self.cell = self.cell.unsqueeze(0).unsqueeze(0) - self.cell = torch.tile(self.cell, [4, 5, 1, 1]) - self.prec = 1e-8 - - def test_inter_to_phys(self): - inter = torch.rand([4, 5, 3, 3], dtype=dtype) - phys = inter2phys(inter, self.cell) - for ii in range(4): - for jj in range(5): - expected_phys = torch.matmul(inter[ii,jj], self.cell[ii,jj]) - torch.testing.assert_close( - phys[ii,jj], expected_phys, rtol=self.prec, atol=self.prec) + def setUp(self): + self.cell = torch.tensor( + [[1, 0, 0], [0.4, 0.8, 0], [0.1, 0.3, 2.1]], dtype=dtype + ) + self.cell = self.cell.unsqueeze(0).unsqueeze(0) + self.cell = torch.tile(self.cell, [4, 5, 1, 1]) + self.prec = 1e-8 - def test_to_face_dist(self): - cell0 = self.cell[0][0].numpy() - vol = np.linalg.det(cell0) - # area of surfaces xy, xz, yz - sxy = np.linalg.norm(np.cross(cell0[0], cell0[1])) - sxz = np.linalg.norm(np.cross(cell0[0], cell0[2])) - syz = np.linalg.norm(np.cross(cell0[1], cell0[2])) - # vol / area gives distance - dz = vol / sxy - dy = vol / sxz - dx = vol / syz - expected = torch.tensor([dx, dy, dz]) - dists = to_face_distance(self.cell) - for ii in range(4): - for jj in range(5): - torch.testing.assert_close( - dists[ii][jj], expected, rtol=self.prec, atol=self.prec) + def test_inter_to_phys(self): + inter = torch.rand([4, 5, 3, 3], dtype=dtype) + phys = inter2phys(inter, self.cell) + for ii in range(4): + for jj in range(5): + expected_phys = torch.matmul(inter[ii, jj], self.cell[ii, jj]) + torch.testing.assert_close( + phys[ii, jj], expected_phys, rtol=self.prec, atol=self.prec + ) + + def test_to_face_dist(self): + cell0 = self.cell[0][0].numpy() + vol = np.linalg.det(cell0) + # area of surfaces xy, xz, yz + sxy = np.linalg.norm(np.cross(cell0[0], cell0[1])) + sxz = np.linalg.norm(np.cross(cell0[0], cell0[2])) + syz = np.linalg.norm(np.cross(cell0[1], cell0[2])) + # vol / area gives distance + dz = vol / sxy + dy = vol / sxz + dx = vol / syz + expected = torch.tensor([dx, dy, dz]) + dists = to_face_distance(self.cell) + for ii in range(4): + for jj in range(5): + torch.testing.assert_close( + dists[ii][jj], expected, rtol=self.prec, atol=self.prec + ) class TestLegacyRegion(unittest.TestCase): - def setUp(self): - self.cell = torch.tensor( - [[1, 0, 0], [0.4, 0.8, 0], [0.1, 0.3, 2.1]], dtype=dtype) - self.prec = 1e-6 + def setUp(self): + self.cell = torch.tensor( + [[1, 0, 0], [0.4, 0.8, 0], [0.1, 0.3, 2.1]], dtype=dtype + ) + self.prec = 1e-6 + + def test_inter_to_phys(self): + inter = torch.rand([3, 3], dtype=dtype) + reg = Region3D(self.cell) + phys = reg.inter2phys(inter) + expected_phys = torch.matmul(inter, self.cell) + torch.testing.assert_close(phys, expected_phys, rtol=self.prec, atol=self.prec) - def test_inter_to_phys(self): - inter = torch.rand([3, 3], dtype=dtype) - reg = Region3D(self.cell) - phys = reg.inter2phys(inter) - expected_phys = torch.matmul(inter, self.cell) - torch.testing.assert_close(phys, expected_phys, rtol=self.prec, atol=self.prec) + def test_inter_to_inter(self): + inter = torch.rand([3, 3], dtype=dtype) + reg = Region3D(self.cell) + new_inter = reg.phys2inter(reg.inter2phys(inter)) + torch.testing.assert_close(inter, new_inter, rtol=self.prec, atol=self.prec) - def test_inter_to_inter(self): - inter = torch.rand([3, 3], dtype=dtype) - reg = Region3D(self.cell) - new_inter = reg.phys2inter(reg.inter2phys(inter)) - torch.testing.assert_close(inter, new_inter, rtol=self.prec, atol=self.prec) - - def test_to_face_dist(self): - pass + def test_to_face_dist(self): + pass diff --git a/tests/test_rot.py b/tests/test_rot.py index f21106ed..2e343824 100644 --- a/tests/test_rot.py +++ b/tests/test_rot.py @@ -1,125 +1,181 @@ -import torch, copy +# SPDX-License-Identifier: LGPL-3.0-or-later +import copy import unittest -from deepmd_pt.utils.preprocess import ( - Region3D, make_env_mat, + +import torch + +from deepmd_pt.infer.deep_eval import ( + eval_model, ) -from deepmd_pt.utils import env -from deepmd_pt.model.model import get_model -from deepmd_pt.utils.dataloader import DpLoaderSet -from deepmd_pt.utils.stat import make_stat_input -from .test_permutation import ( - make_sample, - model_se_e2_a, - model_dpa1, - model_dpa2, - # model_dpau, - model_hybrid, +from deepmd_pt.model.model import ( + get_model, +) +from deepmd_pt.utils import ( + env, +) + +from .test_permutation import ( # model_dpau, + make_sample, + model_dpa1, + model_dpa2, + model_hybrid, + model_se_e2_a, ) -from deepmd_pt.infer.deep_eval import eval_model dtype = torch.float64 -class TestRot(): - def test( - self, - ): - prec = 1e-10 - natoms = 5 - cell = 10. * torch.eye(3, dtype=dtype).to(env.DEVICE) - coord = 2*torch.rand([natoms, 3], dtype=dtype).to(env.DEVICE) - shift = torch.tensor([4, 4, 4], dtype=dtype).to(env.DEVICE) - atype = torch.IntTensor([0, 0, 0, 1, 1]).to(env.DEVICE) - from scipy.stats import special_ortho_group - rmat = torch.tensor(special_ortho_group.rvs(3), dtype=dtype).to(env.DEVICE) - - # rotate only coord and shift to the center of cell - coord_rot = torch.matmul(coord, rmat) - e0, f0, v0 = eval_model(self.model, (coord + shift).unsqueeze(0), cell.unsqueeze(0), atype) - ret0 = {'energy': e0.squeeze(0), 'force': f0.squeeze(0), 'virial': v0.squeeze(0)} - e1, f1, v1 = eval_model(self.model, (coord_rot + shift).unsqueeze(0), cell.unsqueeze(0), atype) - ret1 = {'energy': e1.squeeze(0), 'force': f1.squeeze(0), 'virial': v1.squeeze(0)} - torch.testing.assert_close(ret0['energy'], ret1['energy'], rtol=prec, atol=prec) - torch.testing.assert_close(torch.matmul(ret0['force'], rmat), ret1['force'], rtol=prec, atol=prec) - if not hasattr(self, "test_virial") or self.test_virial: - torch.testing.assert_close( - torch.matmul(rmat.T, torch.matmul(ret0['virial'], rmat)), - ret1['virial'], rtol=prec, atol=prec) - - # rotate coord and cell - torch.manual_seed(0) - cell = torch.rand([3, 3], dtype=dtype).to(env.DEVICE) - cell = (cell + cell.T) + 5. * torch.eye(3).to(env.DEVICE) - coord = torch.rand([natoms, 3], dtype=dtype).to(env.DEVICE) - coord = torch.matmul(coord, cell) - atype = torch.IntTensor([0, 0, 0, 1, 1]).to(env.DEVICE) - coord_rot = torch.matmul(coord, rmat) - cell_rot = torch.matmul(cell, rmat) - e0, f0, v0 = eval_model(self.model, coord.unsqueeze(0), cell.unsqueeze(0), atype) - ret0 = {'energy': e0.squeeze(0), 'force': f0.squeeze(0), 'virial': v0.squeeze(0)} - e1, f1, v1 = eval_model(self.model, coord_rot.unsqueeze(0), cell_rot.unsqueeze(0), atype) - ret1 = {'energy': e1.squeeze(0), 'force': f1.squeeze(0), 'virial': v1.squeeze(0)} - torch.testing.assert_close(ret0['energy'], ret1['energy'], rtol=prec, atol=prec) - torch.testing.assert_close(torch.matmul(ret0['force'], rmat), ret1['force'], rtol=prec, atol=prec) - if not hasattr(self, "test_virial") or self.test_virial: - torch.testing.assert_close( - torch.matmul(rmat.T, torch.matmul(ret0['virial'], rmat)), - ret1['virial'], rtol=prec, atol=prec) + +class TestRot: + def test( + self, + ): + prec = 1e-10 + natoms = 5 + cell = 10.0 * torch.eye(3, dtype=dtype).to(env.DEVICE) + coord = 2 * torch.rand([natoms, 3], dtype=dtype).to(env.DEVICE) + shift = torch.tensor([4, 4, 4], dtype=dtype).to(env.DEVICE) + atype = torch.IntTensor([0, 0, 0, 1, 1]).to(env.DEVICE) + from scipy.stats import ( + special_ortho_group, + ) + + rmat = torch.tensor(special_ortho_group.rvs(3), dtype=dtype).to(env.DEVICE) + + # rotate only coord and shift to the center of cell + coord_rot = torch.matmul(coord, rmat) + e0, f0, v0 = eval_model( + self.model, (coord + shift).unsqueeze(0), cell.unsqueeze(0), atype + ) + ret0 = { + "energy": e0.squeeze(0), + "force": f0.squeeze(0), + "virial": v0.squeeze(0), + } + e1, f1, v1 = eval_model( + self.model, (coord_rot + shift).unsqueeze(0), cell.unsqueeze(0), atype + ) + ret1 = { + "energy": e1.squeeze(0), + "force": f1.squeeze(0), + "virial": v1.squeeze(0), + } + torch.testing.assert_close(ret0["energy"], ret1["energy"], rtol=prec, atol=prec) + torch.testing.assert_close( + torch.matmul(ret0["force"], rmat), ret1["force"], rtol=prec, atol=prec + ) + if not hasattr(self, "test_virial") or self.test_virial: + torch.testing.assert_close( + torch.matmul(rmat.T, torch.matmul(ret0["virial"], rmat)), + ret1["virial"], + rtol=prec, + atol=prec, + ) + + # rotate coord and cell + torch.manual_seed(0) + cell = torch.rand([3, 3], dtype=dtype).to(env.DEVICE) + cell = (cell + cell.T) + 5.0 * torch.eye(3).to(env.DEVICE) + coord = torch.rand([natoms, 3], dtype=dtype).to(env.DEVICE) + coord = torch.matmul(coord, cell) + atype = torch.IntTensor([0, 0, 0, 1, 1]).to(env.DEVICE) + coord_rot = torch.matmul(coord, rmat) + cell_rot = torch.matmul(cell, rmat) + e0, f0, v0 = eval_model( + self.model, coord.unsqueeze(0), cell.unsqueeze(0), atype + ) + ret0 = { + "energy": e0.squeeze(0), + "force": f0.squeeze(0), + "virial": v0.squeeze(0), + } + e1, f1, v1 = eval_model( + self.model, coord_rot.unsqueeze(0), cell_rot.unsqueeze(0), atype + ) + ret1 = { + "energy": e1.squeeze(0), + "force": f1.squeeze(0), + "virial": v1.squeeze(0), + } + torch.testing.assert_close(ret0["energy"], ret1["energy"], rtol=prec, atol=prec) + torch.testing.assert_close( + torch.matmul(ret0["force"], rmat), ret1["force"], rtol=prec, atol=prec + ) + if not hasattr(self, "test_virial") or self.test_virial: + torch.testing.assert_close( + torch.matmul(rmat.T, torch.matmul(ret0["virial"], rmat)), + ret1["virial"], + rtol=prec, + atol=prec, + ) class TestEnergyModelSeA(unittest.TestCase, TestRot): - def setUp(self): - model_params = copy.deepcopy(model_se_e2_a) - sampled = make_sample(model_params) - self.type_split = False - self.model = get_model(model_params, sampled).to(env.DEVICE) + def setUp(self): + model_params = copy.deepcopy(model_se_e2_a) + sampled = make_sample(model_params) + self.type_split = False + self.model = get_model(model_params, sampled).to(env.DEVICE) + class TestEnergyModelDPA1(unittest.TestCase, TestRot): - def setUp(self): - model_params = copy.deepcopy(model_dpa1) - sampled = make_sample(model_params) - self.type_split = True - self.model = get_model(model_params, sampled).to(env.DEVICE) + def setUp(self): + model_params = copy.deepcopy(model_dpa1) + sampled = make_sample(model_params) + self.type_split = True + self.model = get_model(model_params, sampled).to(env.DEVICE) + class TestEnergyModelDPA2(unittest.TestCase, TestRot): - def setUp(self): - model_params_sample = copy.deepcopy(model_dpa2) - model_params_sample["descriptor"]["rcut"] = model_params_sample["descriptor"]["repinit_rcut"] - model_params_sample["descriptor"]["sel"] = model_params_sample["descriptor"]["repinit_nsel"] - sampled = make_sample(model_params_sample) - model_params = copy.deepcopy(model_dpa2) - self.type_split = True - self.model = get_model(model_params, sampled).to(env.DEVICE) + def setUp(self): + model_params_sample = copy.deepcopy(model_dpa2) + model_params_sample["descriptor"]["rcut"] = model_params_sample["descriptor"][ + "repinit_rcut" + ] + model_params_sample["descriptor"]["sel"] = model_params_sample["descriptor"][ + "repinit_nsel" + ] + sampled = make_sample(model_params_sample) + model_params = copy.deepcopy(model_dpa2) + self.type_split = True + self.model = get_model(model_params, sampled).to(env.DEVICE) + class TestForceModelDPA2(unittest.TestCase, TestRot): - def setUp(self): - model_params_sample = copy.deepcopy(model_dpa2) - model_params_sample["descriptor"]["rcut"] = model_params_sample["descriptor"]["repinit_rcut"] - model_params_sample["descriptor"]["sel"] = model_params_sample["descriptor"]["repinit_nsel"] - sampled = make_sample(model_params_sample) - model_params = copy.deepcopy(model_dpa2) - model_params["fitting_net"]["type"] = "direct_force_ener" - self.type_split = True - self.test_virial = False - self.model = get_model(model_params, sampled).to(env.DEVICE) + def setUp(self): + model_params_sample = copy.deepcopy(model_dpa2) + model_params_sample["descriptor"]["rcut"] = model_params_sample["descriptor"][ + "repinit_rcut" + ] + model_params_sample["descriptor"]["sel"] = model_params_sample["descriptor"][ + "repinit_nsel" + ] + sampled = make_sample(model_params_sample) + model_params = copy.deepcopy(model_dpa2) + model_params["fitting_net"]["type"] = "direct_force_ener" + self.type_split = True + self.test_virial = False + self.model = get_model(model_params, sampled).to(env.DEVICE) + @unittest.skip("hybrid not supported at the moment") class TestEnergyModelHybrid(unittest.TestCase, TestRot): - def setUp(self): - model_params = copy.deepcopy(model_hybrid) - sampled = make_sample(model_params) - self.type_split = True - self.model = get_model(model_params, sampled).to(env.DEVICE) + def setUp(self): + model_params = copy.deepcopy(model_hybrid) + sampled = make_sample(model_params) + self.type_split = True + self.model = get_model(model_params, sampled).to(env.DEVICE) + @unittest.skip("hybrid not supported at the moment") class TestForceModelHybrid(unittest.TestCase, TestRot): - def setUp(self): - model_params = copy.deepcopy(model_hybrid) - model_params["fitting_net"]["type"] = "direct_force_ener" - sampled = make_sample(model_params) - self.type_split = True - self.test_virial = False - self.model = get_model(model_params, sampled).to(env.DEVICE) + def setUp(self): + model_params = copy.deepcopy(model_hybrid) + model_params["fitting_net"]["type"] = "direct_force_ener" + sampled = make_sample(model_params) + self.type_split = True + self.test_virial = False + self.model = get_model(model_params, sampled).to(env.DEVICE) -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/tests/test_rot_denoise.py b/tests/test_rot_denoise.py index 3c63d2bc..8acb288e 100644 --- a/tests/test_rot_denoise.py +++ b/tests/test_rot_denoise.py @@ -1,86 +1,133 @@ -import torch, copy +# SPDX-License-Identifier: LGPL-3.0-or-later +import copy import unittest -from deepmd_pt.utils.preprocess import ( - Region3D, make_env_mat, + +import torch + +from deepmd_pt.infer.deep_eval import ( + eval_model, +) +from deepmd_pt.model.model import ( + get_model, +) +from deepmd_pt.utils import ( + env, ) -from deepmd_pt.utils import env -from deepmd_pt.model.model import get_model -from deepmd_pt.utils.dataloader import DpLoaderSet -from deepmd_pt.utils.stat import make_stat_input + from .test_permutation_denoise import ( - make_sample, - model_dpa1, - model_dpa2, - model_hybrid, + make_sample, + model_dpa1, + model_dpa2, ) -from deepmd_pt.infer.deep_eval import eval_model dtype = torch.float64 -class TestRotDenoise(): - def test( - self, - ): - prec = 1e-10 - natoms = 5 - cell = 10. * torch.eye(3, dtype=dtype).to(env.DEVICE) - coord = 2*torch.rand([natoms, 3], dtype=dtype).to(env.DEVICE) - shift = torch.tensor([4, 4, 4], dtype=dtype).to(env.DEVICE) - atype = torch.IntTensor([0, 0, 0, 1, 1]).to(env.DEVICE) - from scipy.stats import special_ortho_group - rmat = torch.tensor(special_ortho_group.rvs(3), dtype=dtype).to(env.DEVICE) - - # rotate only coord and shift to the center of cell - coord_rot = torch.matmul(coord, rmat) - update_c0, logits0 = eval_model(self.model, (coord + shift).unsqueeze(0), cell.unsqueeze(0), atype, denoise=True) - update_c0 = update_c0 - (coord + shift).unsqueeze(0) - ret0 = {'updated_coord': update_c0.squeeze(0), 'logits': logits0.squeeze(0)} - update_c1, logits1 = eval_model(self.model, (coord_rot + shift).unsqueeze(0), cell.unsqueeze(0), atype, denoise = True) - update_c1 = update_c1 - (coord_rot + shift).unsqueeze(0) - ret1 = {'updated_coord': update_c1.squeeze(0), 'logits': logits1.squeeze(0)} - torch.testing.assert_close(torch.matmul(ret0['updated_coord'], rmat), ret1['updated_coord'], rtol=prec, atol=prec) - torch.testing.assert_close(ret0['logits'], ret1['logits'], rtol=prec, atol=prec) - - # rotate coord and cell - torch.manual_seed(0) - cell = torch.rand([3, 3], dtype=dtype).to(env.DEVICE) - cell = (cell + cell.T) + 5. * torch.eye(3).to(env.DEVICE) - coord = torch.rand([natoms, 3], dtype=dtype).to(env.DEVICE) - coord = torch.matmul(coord, cell) - atype = torch.IntTensor([0, 0, 0, 1, 1]).to(env.DEVICE) - coord_rot = torch.matmul(coord, rmat) - cell_rot = torch.matmul(cell, rmat) - update_c0, logits0 = eval_model(self.model, coord.unsqueeze(0), cell.unsqueeze(0), atype, denoise=True) - ret0 = {'updated_coord': update_c0.squeeze(0), 'logits': logits0.squeeze(0)} - update_c1, logits1 = eval_model(self.model, coord_rot.unsqueeze(0), cell_rot.unsqueeze(0), atype, denoise=True) - ret1 = {'updated_coord': update_c1.squeeze(0), 'logits': logits1.squeeze(0)} - torch.testing.assert_close(ret0['logits'], ret1['logits'], rtol=prec, atol=prec) - torch.testing.assert_close(torch.matmul(ret0['updated_coord'], rmat), ret1['updated_coord'], rtol=prec, atol=prec) + +class TestRotDenoise: + def test( + self, + ): + prec = 1e-10 + natoms = 5 + cell = 10.0 * torch.eye(3, dtype=dtype).to(env.DEVICE) + coord = 2 * torch.rand([natoms, 3], dtype=dtype).to(env.DEVICE) + shift = torch.tensor([4, 4, 4], dtype=dtype).to(env.DEVICE) + atype = torch.IntTensor([0, 0, 0, 1, 1]).to(env.DEVICE) + from scipy.stats import ( + special_ortho_group, + ) + + rmat = torch.tensor(special_ortho_group.rvs(3), dtype=dtype).to(env.DEVICE) + + # rotate only coord and shift to the center of cell + coord_rot = torch.matmul(coord, rmat) + update_c0, logits0 = eval_model( + self.model, + (coord + shift).unsqueeze(0), + cell.unsqueeze(0), + atype, + denoise=True, + ) + update_c0 = update_c0 - (coord + shift).unsqueeze(0) + ret0 = {"updated_coord": update_c0.squeeze(0), "logits": logits0.squeeze(0)} + update_c1, logits1 = eval_model( + self.model, + (coord_rot + shift).unsqueeze(0), + cell.unsqueeze(0), + atype, + denoise=True, + ) + update_c1 = update_c1 - (coord_rot + shift).unsqueeze(0) + ret1 = {"updated_coord": update_c1.squeeze(0), "logits": logits1.squeeze(0)} + torch.testing.assert_close( + torch.matmul(ret0["updated_coord"], rmat), + ret1["updated_coord"], + rtol=prec, + atol=prec, + ) + torch.testing.assert_close(ret0["logits"], ret1["logits"], rtol=prec, atol=prec) + + # rotate coord and cell + torch.manual_seed(0) + cell = torch.rand([3, 3], dtype=dtype).to(env.DEVICE) + cell = (cell + cell.T) + 5.0 * torch.eye(3).to(env.DEVICE) + coord = torch.rand([natoms, 3], dtype=dtype).to(env.DEVICE) + coord = torch.matmul(coord, cell) + atype = torch.IntTensor([0, 0, 0, 1, 1]).to(env.DEVICE) + coord_rot = torch.matmul(coord, rmat) + cell_rot = torch.matmul(cell, rmat) + update_c0, logits0 = eval_model( + self.model, coord.unsqueeze(0), cell.unsqueeze(0), atype, denoise=True + ) + ret0 = {"updated_coord": update_c0.squeeze(0), "logits": logits0.squeeze(0)} + update_c1, logits1 = eval_model( + self.model, + coord_rot.unsqueeze(0), + cell_rot.unsqueeze(0), + atype, + denoise=True, + ) + ret1 = {"updated_coord": update_c1.squeeze(0), "logits": logits1.squeeze(0)} + torch.testing.assert_close(ret0["logits"], ret1["logits"], rtol=prec, atol=prec) + torch.testing.assert_close( + torch.matmul(ret0["updated_coord"], rmat), + ret1["updated_coord"], + rtol=prec, + atol=prec, + ) + class TestDenoiseModelDPA1(unittest.TestCase, TestRotDenoise): - def setUp(self): - model_params = copy.deepcopy(model_dpa1) - sampled = make_sample(model_params) - self.type_split = True - self.model = get_model(model_params, sampled).to(env.DEVICE) + def setUp(self): + model_params = copy.deepcopy(model_dpa1) + sampled = make_sample(model_params) + self.type_split = True + self.model = get_model(model_params, sampled).to(env.DEVICE) + class TestDenoiseModelDPA2(unittest.TestCase, TestRotDenoise): - def setUp(self): - model_params_sample = copy.deepcopy(model_dpa2) - model_params_sample["descriptor"]["rcut"] = model_params_sample["descriptor"]["repinit_rcut"] - model_params_sample["descriptor"]["sel"] = model_params_sample["descriptor"]["repinit_nsel"] - sampled = make_sample(model_params_sample) - model_params = copy.deepcopy(model_dpa2) - self.type_split = True - self.model = get_model(model_params, sampled).to(env.DEVICE) - -@unittest.skip("hybrid not supported at the moment") -class TestEnergyModelHybrid(unittest.TestCase, TestRotDenoise): - def setUp(self): - model_params = copy.deepcopy(model_hybrid_denoise) - sampled = make_sample(model_params) - self.type_split = True - self.model = get_model(model_params, sampled).to(env.DEVICE) - -if __name__ == '__main__': + def setUp(self): + model_params_sample = copy.deepcopy(model_dpa2) + model_params_sample["descriptor"]["rcut"] = model_params_sample["descriptor"][ + "repinit_rcut" + ] + model_params_sample["descriptor"]["sel"] = model_params_sample["descriptor"][ + "repinit_nsel" + ] + sampled = make_sample(model_params_sample) + model_params = copy.deepcopy(model_dpa2) + self.type_split = True + self.model = get_model(model_params, sampled).to(env.DEVICE) + + +# @unittest.skip("hybrid not supported at the moment") +# class TestEnergyModelHybrid(unittest.TestCase, TestRotDenoise): +# def setUp(self): +# model_params = copy.deepcopy(model_hybrid_denoise) +# sampled = make_sample(model_params) +# self.type_split = True +# self.model = get_model(model_params, sampled).to(env.DEVICE) + + +if __name__ == "__main__": unittest.main() diff --git a/tests/test_rotation.py b/tests/test_rotation.py index bec2f888..1eda8908 100644 --- a/tests/test_rotation.py +++ b/tests/test_rotation.py @@ -1,65 +1,103 @@ -from typing import List -import unittest -import torch +# SPDX-License-Identifier: LGPL-3.0-or-later import json -from scipy.stats import special_ortho_group +import unittest +from typing import ( + List, + Optional, +) + import numpy as np +import torch +from scipy.stats import ( + special_ortho_group, +) -from deepmd_pt.utils import env -from deepmd_pt.utils.dataset import DeepmdDataSystem -from deepmd_pt.model.model import get_model -from deepmd_pt.utils.dataloader import DpLoaderSet -from deepmd_pt.utils.stat import make_stat_input +from deepmd_pt.model.model import ( + get_model, +) +from deepmd_pt.utils import ( + env, +) +from deepmd_pt.utils.dataloader import ( + DpLoaderSet, +) +from deepmd_pt.utils.dataset import ( + DeepmdDataSystem, +) +from deepmd_pt.utils.stat import ( + make_stat_input, +) class CheckSymmetry(DeepmdDataSystem): - def __init__(self, sys_path: str, rcut, sec, type_map: List[str] = None, type_split=True): + def __init__( + self, + sys_path: str, + rcut, + sec, + type_map: Optional[List[str]] = None, + type_split=True, + ): super().__init__(sys_path, rcut, sec, type_map, type_split) def get_rotation(self, index, rotation_matrix): - for i in range(0, - len(self._dirs) + 1): # note: if different sets can be merged, prefix sum is unused to calculate + for i in range( + 0, len(self._dirs) + 1 + ): # note: if different sets can be merged, prefix sum is unused to calculate if index < self.prefix_sum[i]: break frames = self._load_set(self._dirs[i - 1]) - frames['coord'] = np.dot(rotation_matrix, frames['coord'].reshape(-1, 3).T).T.reshape(self.nframes, -1) - frames['box'] = np.dot(rotation_matrix, frames['box'].reshape(-1, 3).T).T.reshape(self.nframes, -1) - frames['force'] = np.dot(rotation_matrix, frames['force'].reshape(-1, 3).T).T.reshape(self.nframes, -1) + frames["coord"] = np.dot( + rotation_matrix, frames["coord"].reshape(-1, 3).T + ).T.reshape(self.nframes, -1) + frames["box"] = np.dot( + rotation_matrix, frames["box"].reshape(-1, 3).T + ).T.reshape(self.nframes, -1) + frames["force"] = np.dot( + rotation_matrix, frames["force"].reshape(-1, 3).T + ).T.reshape(self.nframes, -1) frame = self.single_preprocess(frames, index - self.prefix_sum[i - 1]) return frame def get_data(batch): inputs = {} - for key in ['coord', 'atype', 'box']: + for key in ["coord", "atype", "box"]: inputs[key] = batch[key].unsqueeze(0).to(env.DEVICE) return inputs class TestRotation(unittest.TestCase): def setUp(self): - np.random.seed(20) - with open(env.TEST_CONFIG, 'r') as fin: + with open(env.TEST_CONFIG) as fin: self.config = json.load(fin) self.rotation = special_ortho_group.rvs(3) self.get_dataset(0) self.get_model() def get_model(self): - training_systems = self.config['training']['training_data']['systems'] - model_params = self.config['model'] - data_stat_nbatch = model_params.get('data_stat_nbatch', 10) - train_data = DpLoaderSet(training_systems, self.config['training']['training_data']['batch_size'], model_params) - sampled = make_stat_input(train_data.systems, train_data.dataloaders, data_stat_nbatch) - self.model = get_model(self.config['model'], sampled).to(env.DEVICE) + training_systems = self.config["training"]["training_data"]["systems"] + model_params = self.config["model"] + data_stat_nbatch = model_params.get("data_stat_nbatch", 10) + train_data = DpLoaderSet( + training_systems, + self.config["training"]["training_data"]["batch_size"], + model_params, + ) + sampled = make_stat_input( + train_data.systems, train_data.dataloaders, data_stat_nbatch + ) + self.model = get_model(self.config["model"], sampled).to(env.DEVICE) def get_dataset(self, system_index=0, batch_index=0): - systems = self.config['training']['training_data']['systems'] - rcut = self.config['model']['descriptor']['rcut'] - sel = self.config['model']['descriptor']['sel'] + systems = self.config["training"]["training_data"]["systems"] + rcut = self.config["model"]["descriptor"]["rcut"] + sel = self.config["model"]["descriptor"]["sel"] sec = torch.cumsum(torch.tensor(sel), dim=0) - type_map = self.config['model']['type_map'] - dpdatasystem = CheckSymmetry(sys_path=systems[system_index], rcut=rcut, sec=sec, type_map=type_map) + type_map = self.config["model"]["type_map"] + dpdatasystem = CheckSymmetry( + sys_path=systems[system_index], rcut=rcut, sec=sec, type_map=type_map + ) self.origin_batch = dpdatasystem._get_item(batch_index) self.rotated_batch = dpdatasystem.get_rotation(batch_index, self.rotation) @@ -67,13 +105,23 @@ def test_rotation(self): result1 = self.model(**get_data(self.origin_batch)) result2 = self.model(**get_data(self.rotated_batch)) rotation = torch.from_numpy(self.rotation).to(env.DEVICE) - self.assertTrue(result1['energy'] == result2['energy']) - if 'force' in result1: - self.assertTrue(torch.allclose(result2['force'][0], torch.matmul(rotation, result1['force'][0].T).T)) - if 'virial' in result1: - self.assertTrue(torch.allclose(result2['virial'][0], - torch.matmul(torch.matmul(rotation, result1['virial'][0].T), rotation.T))) + self.assertTrue(result1["energy"] == result2["energy"]) + if "force" in result1: + self.assertTrue( + torch.allclose( + result2["force"][0], torch.matmul(rotation, result1["force"][0].T).T + ) + ) + if "virial" in result1: + self.assertTrue( + torch.allclose( + result2["virial"][0], + torch.matmul( + torch.matmul(rotation, result1["virial"][0].T), rotation.T + ), + ) + ) -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/tests/test_sampler.py b/tests/test_sampler.py index 84418ce7..37382dc6 100644 --- a/tests/test_sampler.py +++ b/tests/test_sampler.py @@ -1,95 +1,112 @@ -import numpy as np +# SPDX-License-Identifier: LGPL-3.0-or-later +import json import os import unittest -import json -from deepmd.utils.data_system import DeepmdDataSystem -from deepmd.utils import random as tf_random -from deepmd.common import expand_sys_str -from torch.utils.data import DataLoader -from deepmd_pt.utils.dataloader import DpLoaderSet, get_weighted_sampler -from deepmd_pt.utils import env +import numpy as np +from deepmd.tf.common import ( + expand_sys_str, +) +from deepmd.tf.utils import random as tf_random +from deepmd.tf.utils.data_system import ( + DeepmdDataSystem, +) +from torch.utils.data import ( + DataLoader, +) -CUR_DIR = os.path.dirname(__file__) +from deepmd_pt.utils import ( + env, +) +from deepmd_pt.utils.dataloader import ( + DpLoaderSet, + get_weighted_sampler, +) +CUR_DIR = os.path.dirname(__file__) class TestSampler(unittest.TestCase): - def setUp(self): - with open(env.TEST_CONFIG, 'r') as fin: + with open(env.TEST_CONFIG) as fin: content = fin.read() config = json.loads(content) - model_config = config['model'] - self.rcut = model_config['descriptor']['rcut'] - self.rcut_smth = model_config['descriptor']['rcut_smth'] - self.sel = model_config['descriptor']['sel'] - self.batch_size = config['training']['training_data']['batch_size'] - self.systems = config['training']['validation_data']['systems'] + model_config = config["model"] + self.rcut = model_config["descriptor"]["rcut"] + self.rcut_smth = model_config["descriptor"]["rcut_smth"] + self.sel = model_config["descriptor"]["sel"] + self.batch_size = config["training"]["training_data"]["batch_size"] + self.systems = config["training"]["validation_data"]["systems"] if isinstance(self.systems, str): self.systems = expand_sys_str(self.systems) - self.my_dataset = DpLoaderSet(self.systems, self.batch_size, - model_params={ - 'descriptor': { - 'type': 'se_e2_a', - 'sel': self.sel, - 'rcut': self.rcut, - }, - 'type_map': model_config['type_map'] - }, seed=10, shuffle=False) + self.my_dataset = DpLoaderSet( + self.systems, + self.batch_size, + model_params={ + "descriptor": { + "type": "se_e2_a", + "sel": self.sel, + "rcut": self.rcut, + }, + "type_map": model_config["type_map"], + }, + seed=10, + shuffle=False, + ) tf_random.seed(10) self.dp_dataset = DeepmdDataSystem(self.systems, self.batch_size, 1, self.rcut) def test_sampler_debug_info(self): dataloader = DataLoader( - self.my_dataset, - sampler=get_weighted_sampler(self.my_dataset,prob_style='prob_sys_size'), - batch_size=None, - num_workers=1, # setting to 0 diverges the behavior of its iterator; should be >=1 - drop_last=False, - pin_memory=True + self.my_dataset, + sampler=get_weighted_sampler(self.my_dataset, prob_style="prob_sys_size"), + batch_size=None, + num_workers=1, # setting to 0 diverges the behavior of its iterator; should be >=1 + drop_last=False, + pin_memory=True, ) batch_data = next(iter(dataloader)) - sid = batch_data['sid'] - fid = batch_data['fid'][0] - coord = batch_data['coord'].squeeze(0) + sid = batch_data["sid"] + fid = batch_data["fid"][0] + coord = batch_data["coord"].squeeze(0) frame = self.my_dataset.systems[sid].__getitem__(fid) - self.assertTrue(np.allclose(coord,frame['coord'])) - + self.assertTrue(np.allclose(coord, frame["coord"])) def test_auto_prob_uniform(self): - auto_prob_style= 'prob_uniform' - sampler = get_weighted_sampler(self.my_dataset,prob_style=auto_prob_style) + auto_prob_style = "prob_uniform" + sampler = get_weighted_sampler(self.my_dataset, prob_style=auto_prob_style) my_probs = np.array(sampler.weights) self.dp_dataset.set_sys_probs(auto_prob_style=auto_prob_style) dp_probs = np.array(self.dp_dataset.sys_probs) - self.assertTrue(np.allclose(my_probs,dp_probs)) - + self.assertTrue(np.allclose(my_probs, dp_probs)) def test_auto_prob_sys_size(self): - auto_prob_style= 'prob_sys_size' - sampler = get_weighted_sampler(self.my_dataset,prob_style=auto_prob_style) + auto_prob_style = "prob_sys_size" + sampler = get_weighted_sampler(self.my_dataset, prob_style=auto_prob_style) my_probs = np.array(sampler.weights) self.dp_dataset.set_sys_probs(auto_prob_style=auto_prob_style) dp_probs = np.array(self.dp_dataset.sys_probs) - self.assertTrue(np.allclose(my_probs,dp_probs)) + self.assertTrue(np.allclose(my_probs, dp_probs)) def test_auto_prob_sys_size_ext(self): - auto_prob_style= 'prob_sys_size;0:1:0.2;1:3:0.8' - sampler = get_weighted_sampler(self.my_dataset,prob_style=auto_prob_style) + auto_prob_style = "prob_sys_size;0:1:0.2;1:3:0.8" + sampler = get_weighted_sampler(self.my_dataset, prob_style=auto_prob_style) my_probs = np.array(sampler.weights) self.dp_dataset.set_sys_probs(auto_prob_style=auto_prob_style) dp_probs = np.array(self.dp_dataset.sys_probs) - self.assertTrue(np.allclose(my_probs,dp_probs)) + self.assertTrue(np.allclose(my_probs, dp_probs)) def test_sys_probs(self): - sys_probs= [0.1,0.4,0.5] - sampler = get_weighted_sampler(self.my_dataset,prob_style=sys_probs,sys_prob=True) + sys_probs = [0.1, 0.4, 0.5] + sampler = get_weighted_sampler( + self.my_dataset, prob_style=sys_probs, sys_prob=True + ) my_probs = np.array(sampler.weights) self.dp_dataset.set_sys_probs(sys_probs=sys_probs) dp_probs = np.array(self.dp_dataset.sys_probs) - self.assertTrue(np.allclose(my_probs,dp_probs)) + self.assertTrue(np.allclose(my_probs, dp_probs)) + -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/tests/test_saveload_dpa1.py b/tests/test_saveload_dpa1.py index 33e11fb4..1554602d 100644 --- a/tests/test_saveload_dpa1.py +++ b/tests/test_saveload_dpa1.py @@ -1,49 +1,73 @@ -import unittest -import torch -import json +# SPDX-License-Identifier: LGPL-3.0-or-later import copy +import json import os +import unittest -from torch.utils.data import DataLoader -from deepmd_pt.utils.dataloader import BufferedIterator, DpLoaderSet -from deepmd.common import expand_sys_str -from deepmd_pt.model.model import get_model -from deepmd_pt.utils import env -from deepmd_pt.utils.stat import make_stat_input -from deepmd_pt.train.wrapper import ModelWrapper -from deepmd_pt.loss import EnergyStdLoss +import torch +from deepmd.tf.common import ( + expand_sys_str, +) +from torch.utils.data import ( + DataLoader, +) + +from deepmd_pt.loss import ( + EnergyStdLoss, +) +from deepmd_pt.model.model import ( + get_model, +) +from deepmd_pt.train.wrapper import ( + ModelWrapper, +) +from deepmd_pt.utils import ( + env, +) +from deepmd_pt.utils.dataloader import ( + BufferedIterator, + DpLoaderSet, +) +from deepmd_pt.utils.stat import ( + make_stat_input, +) def get_dataset(config): - model_config = config['model'] - rcut = model_config['descriptor']['rcut'] - sel = model_config['descriptor']['sel'] - systems = config['training']['validation_data']['systems'] + model_config = config["model"] + rcut = model_config["descriptor"]["rcut"] + sel = model_config["descriptor"]["sel"] + systems = config["training"]["validation_data"]["systems"] if isinstance(systems, str): systems = expand_sys_str(systems) - batch_size = config['training']['training_data']['batch_size'] - type_map = model_config['type_map'] + batch_size = config["training"]["training_data"]["batch_size"] + type_map = model_config["type_map"] - dataset = DpLoaderSet(systems, batch_size, - model_params={ - 'descriptor': { - 'type': 'dpa1', - 'sel': sel, - 'rcut': rcut, - }, - 'type_map': type_map - }) - data_stat_nbatch = model_config.get('data_stat_nbatch', 10) + dataset = DpLoaderSet( + systems, + batch_size, + model_params={ + "descriptor": { + "type": "dpa1", + "sel": sel, + "rcut": rcut, + }, + "type_map": type_map, + }, + ) + data_stat_nbatch = model_config.get("data_stat_nbatch", 10) sampled = make_stat_input(dataset.systems, dataset.dataloaders, data_stat_nbatch) return dataset, sampled class TestSaveLoadDPA1(unittest.TestCase): def setUp(self): - input_json = 'tests/water/se_atten.json' - with open(input_json, 'r') as fin: + input_json = "tests/water/se_atten.json" + with open(input_json) as fin: self.config = json.load(fin) - self.config['loss']['starter_learning_rate'] = self.config['learning_rate']['start_lr'] + self.config["loss"]["starter_learning_rate"] = self.config["learning_rate"][ + "start_lr" + ] self.dataset, self.sampled = get_dataset(self.config) self.training_dataloader = DataLoader( self.dataset, @@ -54,13 +78,13 @@ def setUp(self): pin_memory=True, ) self.training_data = BufferedIterator(iter(self.training_dataloader)) - self.loss = EnergyStdLoss(**self.config['loss']) + self.loss = EnergyStdLoss(**self.config["loss"]) self.cur_lr = 1 self.task_key = "Default" self.input_dict, self.label_dict = self.get_data() - self.start_lr = self.config['learning_rate']['start_lr'] + self.start_lr = self.config["learning_rate"]["start_lr"] - def get_model_result(self, read=False, model_file='tmp_model.pt'): + def get_model_result(self, read=False, model_file="tmp_model.pt"): wrapper = self.create_wrapper(read) optimizer = torch.optim.Adam(wrapper.parameters(), lr=self.start_lr) optimizer.zero_grad() @@ -69,16 +93,23 @@ def get_model_result(self, read=False, model_file='tmp_model.pt'): os.remove(model_file) else: torch.save(wrapper.state_dict(), model_file) - result = wrapper(**self.input_dict, cur_lr=self.cur_lr, label=self.label_dict, task_key=self.task_key)[0] + result = wrapper( + **self.input_dict, + cur_lr=self.cur_lr, + label=self.label_dict, + task_key=self.task_key, + )[0] return result def create_wrapper(self, read: bool): - model_config = copy.deepcopy(self.config['model']) + model_config = copy.deepcopy(self.config["model"]) sampled = copy.deepcopy(self.sampled) model_config["resuming"] = read model_config["stat_file_dir"] = "stat_files" model_config["stat_file"] = "stat.npz" - model_config["stat_file_path"] = os.path.join(model_config["stat_file_dir"], model_config["stat_file"]) + model_config["stat_file_path"] = os.path.join( + model_config["stat_file_dir"], model_config["stat_file"] + ) model = get_model(model_config, sampled).to(env.DEVICE) return ModelWrapper(model, self.loss) @@ -90,13 +121,13 @@ def get_data(self): self.training_data = BufferedIterator(iter(self.training_dataloader)) batch_data = next(iter(self.training_data)) input_dict = {} - for item in ['coord', 'atype', 'box']: + for item in ["coord", "atype", "box"]: if item in batch_data: input_dict[item] = batch_data[item] else: input_dict[item] = None label_dict = {} - for item in ['energy', 'force', 'virial']: + for item in ["energy", "force", "virial"]: if item in batch_data: label_dict[item] = batch_data[item] return input_dict, label_dict @@ -104,9 +135,11 @@ def get_data(self): def test_saveload(self): result1 = self.get_model_result() result2 = self.get_model_result(read=True) - final_result = all([torch.allclose(result1[item], result2[item]) for item in result1]) + final_result = all( + torch.allclose(result1[item], result2[item]) for item in result1 + ) self.assertTrue(final_result) -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/tests/test_saveload_se_e2_a.py b/tests/test_saveload_se_e2_a.py index 8c129840..a149b090 100644 --- a/tests/test_saveload_se_e2_a.py +++ b/tests/test_saveload_se_e2_a.py @@ -1,40 +1,61 @@ -import unittest -import torch -import json +# SPDX-License-Identifier: LGPL-3.0-or-later import copy +import json import os +import unittest + +import torch +from deepmd.tf.common import ( + expand_sys_str, +) +from torch.utils.data import ( + DataLoader, +) -from torch.utils.data import DataLoader -from deepmd_pt.utils.dataloader import BufferedIterator, DpLoaderSet -from deepmd.common import expand_sys_str -from deepmd_pt.utils.dataset import DeepmdDataSet -from deepmd_pt.model.model import get_model -from deepmd_pt.utils import env -from deepmd_pt.utils.stat import make_stat_input -from deepmd_pt.train.wrapper import ModelWrapper -from deepmd_pt.loss import EnergyStdLoss +from deepmd_pt.loss import ( + EnergyStdLoss, +) +from deepmd_pt.model.model import ( + get_model, +) +from deepmd_pt.train.wrapper import ( + ModelWrapper, +) +from deepmd_pt.utils import ( + env, +) +from deepmd_pt.utils.dataloader import ( + BufferedIterator, + DpLoaderSet, +) +from deepmd_pt.utils.stat import ( + make_stat_input, +) def get_dataset(config): - model_config = config['model'] - rcut = model_config['descriptor']['rcut'] - sel = model_config['descriptor']['sel'] - systems = config['training']['validation_data']['systems'] + model_config = config["model"] + rcut = model_config["descriptor"]["rcut"] + sel = model_config["descriptor"]["sel"] + systems = config["training"]["validation_data"]["systems"] if isinstance(systems, str): systems = expand_sys_str(systems) - batch_size = config['training']['training_data']['batch_size'] - type_map = model_config['type_map'] + batch_size = config["training"]["training_data"]["batch_size"] + type_map = model_config["type_map"] - dataset = DpLoaderSet(systems, batch_size, - model_params={ - 'descriptor': { - 'type': 'se_e2_a', - 'sel': sel, - 'rcut': rcut, - }, - 'type_map': type_map - }) - data_stat_nbatch = model_config.get('data_stat_nbatch', 10) + dataset = DpLoaderSet( + systems, + batch_size, + model_params={ + "descriptor": { + "type": "se_e2_a", + "sel": sel, + "rcut": rcut, + }, + "type_map": type_map, + }, + ) + data_stat_nbatch = model_config.get("data_stat_nbatch", 10) sampled = make_stat_input(dataset.systems, dataset.dataloaders, data_stat_nbatch) return dataset, sampled @@ -42,9 +63,11 @@ def get_dataset(config): class TestSaveLoadDPA1(unittest.TestCase): def setUp(self): input_json = env.TEST_CONFIG - with open(input_json, 'r') as fin: + with open(input_json) as fin: self.config = json.load(fin) - self.config['loss']['starter_learning_rate'] = self.config['learning_rate']['start_lr'] + self.config["loss"]["starter_learning_rate"] = self.config["learning_rate"][ + "start_lr" + ] self.dataset, self.sampled = get_dataset(self.config) self.training_dataloader = DataLoader( self.dataset, @@ -55,13 +78,13 @@ def setUp(self): pin_memory=True, ) self.training_data = BufferedIterator(iter(self.training_dataloader)) - self.loss = EnergyStdLoss(**self.config['loss']) + self.loss = EnergyStdLoss(**self.config["loss"]) self.cur_lr = 1 self.task_key = "Default" self.input_dict, self.label_dict = self.get_data() - self.start_lr = self.config['learning_rate']['start_lr'] + self.start_lr = self.config["learning_rate"]["start_lr"] - def get_model_result(self, read=False, model_file='tmp_model.pt'): + def get_model_result(self, read=False, model_file="tmp_model.pt"): wrapper = self.create_wrapper() optimizer = torch.optim.Adam(wrapper.parameters(), lr=self.start_lr) optimizer.zero_grad() @@ -70,11 +93,16 @@ def get_model_result(self, read=False, model_file='tmp_model.pt'): os.remove(model_file) else: torch.save(wrapper.state_dict(), model_file) - result = wrapper(**self.input_dict, cur_lr=self.cur_lr, label=self.label_dict, task_key=self.task_key)[0] + result = wrapper( + **self.input_dict, + cur_lr=self.cur_lr, + label=self.label_dict, + task_key=self.task_key, + )[0] return result def create_wrapper(self): - model_config = copy.deepcopy(self.config['model']) + model_config = copy.deepcopy(self.config["model"]) sampled = copy.deepcopy(self.sampled) model = get_model(model_config, sampled).to(env.DEVICE) return ModelWrapper(model, self.loss) @@ -87,13 +115,13 @@ def get_data(self): self.training_data = BufferedIterator(iter(self.training_dataloader)) batch_data = next(iter(self.training_data)) input_dict = {} - for item in ['coord', 'atype', 'box']: + for item in ["coord", "atype", "box"]: if item in batch_data: input_dict[item] = batch_data[item] else: input_dict[item] = None label_dict = {} - for item in ['energy', 'force', 'virial']: + for item in ["energy", "force", "virial"]: if item in batch_data: label_dict[item] = batch_data[item] return input_dict, label_dict @@ -101,9 +129,11 @@ def get_data(self): def test_saveload(self): result1 = self.get_model_result() result2 = self.get_model_result(read=True) - final_result = all([torch.allclose(result1[item], result2[item]) for item in result1]) + final_result = all( + torch.allclose(result1[item], result2[item]) for item in result1 + ) self.assertTrue(final_result) -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/tests/test_se_e2_a.py b/tests/test_se_e2_a.py index cec56cbe..987bea51 100644 --- a/tests/test_se_e2_a.py +++ b/tests/test_se_e2_a.py @@ -1,32 +1,38 @@ -import torch, copy -import unittest +# SPDX-License-Identifier: LGPL-3.0-or-later import itertools +import unittest + import numpy as np +import torch -try : - from deepmd_utils.model_format import ( - DescrptSeA as DPDescrptSeA, - PRECISION_DICT as DP_PRECISION_DICT, - ) - support_se_e2_a = True +try: + # from deepmd.model_format import PRECISION_DICT as DP_PRECISION_DICT + from deepmd.model_format import DescrptSeA as DPDescrptSeA + + support_se_e2_a = True except ModuleNotFoundError: - support_se_e2_a = False + support_se_e2_a = False except ImportError: - support_se_e2_a = False + support_se_e2_a = False from deepmd_pt.model.descriptor.se_a import ( - DescrptSeA + DescrptSeA, +) +from deepmd_pt.utils import ( + env, ) from deepmd_pt.utils.env import ( - PRECISION_DICT, - DEFAULT_PRECISION, + PRECISION_DICT, +) + +from .test_mlp import ( + get_tols, ) -from deepmd_pt.utils import env -from .test_mlp import get_tols dtype = env.GLOBAL_PT_FLOAT_PRECISION -class TestCaseSingleFrameWithNlist(): + +class TestCaseSingleFrameWithNlist: def setUp(self): # nloc == 3, nall == 4 self.nloc = 3 @@ -53,117 +59,141 @@ def setUp(self): dtype=int, ).reshape([1, self.nloc, sum(self.sel)]) self.rcut = 0.4 - self.rcut_smth = 2.2 + self.rcut_smth = 2.2 # to be merged with the tf test case @unittest.skipIf(not support_se_e2_a, "EnvMat not supported") class TestDescrptSeA(unittest.TestCase, TestCaseSingleFrameWithNlist): - def setUp(self): - TestCaseSingleFrameWithNlist.setUp(self) - - def test_consistency( - self, - ): - rng = np.random.default_rng() - nf, nloc, nnei = self.nlist.shape - davg = rng.normal(size=(self.nt, nnei, 4)) - dstd = rng.normal(size=(self.nt, nnei, 4)) - dstd = 0.1 + np.abs(dstd) + def setUp(self): + TestCaseSingleFrameWithNlist.setUp(self) - for idt, prec in itertools.product( - [False, True], - ["float64", "float32"], + def test_consistency( + self, ): - dtype = PRECISION_DICT[prec] - rtol, atol = get_tols(prec) - err_msg = f"idt={idt} prec={prec}" - # sea new impl - dd0 = DescrptSeA( - self.rcut, self.rcut_smth, self.sel, - precision=prec, - resnet_dt=idt, - old_impl=False, - ).to(env.DEVICE) - dd0.sea.mean = torch.tensor(davg, dtype=dtype, device=env.DEVICE) - dd0.sea.dstd = torch.tensor(dstd, dtype=dtype, device=env.DEVICE) - rd0, _,_,_,_ = dd0( - torch.tensor(self.coord_ext, dtype=dtype, device=env.DEVICE), - torch.tensor(self.atype_ext, dtype=int, device=env.DEVICE), - torch.tensor(self.nlist, dtype=int, device=env.DEVICE), - ) - # serialization - dd1 = DescrptSeA.deserialize(dd0.serialize()) - rd1, _, _, _, _ = dd1( - torch.tensor(self.coord_ext, dtype=dtype, device=env.DEVICE), - torch.tensor(self.atype_ext, dtype=int, device=env.DEVICE), - torch.tensor(self.nlist, dtype=int, device=env.DEVICE), - ) - np.testing.assert_allclose( - rd0.detach().cpu().numpy(), rd1.detach().cpu().numpy(), - rtol=rtol, atol=atol, err_msg=err_msg, - ) - # dp impl - dd2 = DPDescrptSeA.deserialize(dd0.serialize()) - rd2 = dd2.call( - self.coord_ext, self.atype_ext, self.nlist, - ) - np.testing.assert_allclose( - rd0.detach().cpu().numpy(), rd2, - rtol=rtol, atol=atol, err_msg=err_msg, - ) - # old impl - if idt == False and prec == "float64": - dd3 = DescrptSeA( - self.rcut, self.rcut_smth, self.sel, - precision=prec, - resnet_dt=idt, - old_impl=True, - ).to(env.DEVICE) - dd0_state_dict = dd0.sea.state_dict() - dd3_state_dict = dd3.sea.state_dict() - for i in dd3_state_dict: - dd3_state_dict[i] = dd0_state_dict[i.replace('.deep_layers.', '.layers.') - .replace('filter_layers_old.', 'filter_layers.networks.')].detach().clone() - if '.bias' in i: - dd3_state_dict[i] = dd3_state_dict[i].unsqueeze(0) - dd3.sea.load_state_dict(dd3_state_dict) + rng = np.random.default_rng() + nf, nloc, nnei = self.nlist.shape + davg = rng.normal(size=(self.nt, nnei, 4)) + dstd = rng.normal(size=(self.nt, nnei, 4)) + dstd = 0.1 + np.abs(dstd) - rd3, _,_,_,_ = dd3( - torch.tensor(self.coord_ext, dtype=dtype, device=env.DEVICE), - torch.tensor(self.atype_ext, dtype=int, device=env.DEVICE), - torch.tensor(self.nlist, dtype=int, device=env.DEVICE), - ) - np.testing.assert_allclose( - rd0.detach().cpu().numpy(), rd3.detach().cpu().numpy(), - rtol=rtol, atol=atol, err_msg=err_msg, - ) + for idt, prec in itertools.product( + [False, True], + ["float64", "float32"], + ): + dtype = PRECISION_DICT[prec] + rtol, atol = get_tols(prec) + err_msg = f"idt={idt} prec={prec}" + # sea new impl + dd0 = DescrptSeA( + self.rcut, + self.rcut_smth, + self.sel, + precision=prec, + resnet_dt=idt, + old_impl=False, + ).to(env.DEVICE) + dd0.sea.mean = torch.tensor(davg, dtype=dtype, device=env.DEVICE) + dd0.sea.dstd = torch.tensor(dstd, dtype=dtype, device=env.DEVICE) + rd0, _, _, _, _ = dd0( + torch.tensor(self.coord_ext, dtype=dtype, device=env.DEVICE), + torch.tensor(self.atype_ext, dtype=int, device=env.DEVICE), + torch.tensor(self.nlist, dtype=int, device=env.DEVICE), + ) + # serialization + dd1 = DescrptSeA.deserialize(dd0.serialize()) + rd1, _, _, _, _ = dd1( + torch.tensor(self.coord_ext, dtype=dtype, device=env.DEVICE), + torch.tensor(self.atype_ext, dtype=int, device=env.DEVICE), + torch.tensor(self.nlist, dtype=int, device=env.DEVICE), + ) + np.testing.assert_allclose( + rd0.detach().cpu().numpy(), + rd1.detach().cpu().numpy(), + rtol=rtol, + atol=atol, + err_msg=err_msg, + ) + # dp impl + dd2 = DPDescrptSeA.deserialize(dd0.serialize()) + rd2 = dd2.call( + self.coord_ext, + self.atype_ext, + self.nlist, + ) + np.testing.assert_allclose( + rd0.detach().cpu().numpy(), + rd2, + rtol=rtol, + atol=atol, + err_msg=err_msg, + ) + # old impl + if idt is False and prec == "float64": + dd3 = DescrptSeA( + self.rcut, + self.rcut_smth, + self.sel, + precision=prec, + resnet_dt=idt, + old_impl=True, + ).to(env.DEVICE) + dd0_state_dict = dd0.sea.state_dict() + dd3_state_dict = dd3.sea.state_dict() + for i in dd3_state_dict: + dd3_state_dict[i] = ( + dd0_state_dict[ + i.replace(".deep_layers.", ".layers.").replace( + "filter_layers_old.", "filter_layers.networks." + ) + ] + .detach() + .clone() + ) + if ".bias" in i: + dd3_state_dict[i] = dd3_state_dict[i].unsqueeze(0) + dd3.sea.load_state_dict(dd3_state_dict) - def test_jit( - self, - ): - rng = np.random.default_rng() - nf, nloc, nnei = self.nlist.shape - davg = rng.normal(size=(self.nt, nnei, 4)) - dstd = rng.normal(size=(self.nt, nnei, 4)) - dstd = 0.1 + np.abs(dstd) + rd3, _, _, _, _ = dd3( + torch.tensor(self.coord_ext, dtype=dtype, device=env.DEVICE), + torch.tensor(self.atype_ext, dtype=int, device=env.DEVICE), + torch.tensor(self.nlist, dtype=int, device=env.DEVICE), + ) + np.testing.assert_allclose( + rd0.detach().cpu().numpy(), + rd3.detach().cpu().numpy(), + rtol=rtol, + atol=atol, + err_msg=err_msg, + ) - for idt, prec in itertools.product( - [False, True], - ["float64", "float32"], + def test_jit( + self, ): - dtype = PRECISION_DICT[prec] - rtol, atol = get_tols(prec) - err_msg = f"idt={idt} prec={prec}" - # sea new impl - dd0 = DescrptSeA( - self.rcut, self.rcut_smth, self.sel, - precision=prec, - resnet_dt=idt, - old_impl=False, - ) - dd0.sea.mean = torch.tensor(davg, dtype=dtype, device=env.DEVICE) - dd0.sea.dstd = torch.tensor(dstd, dtype=dtype, device=env.DEVICE) - dd1 = DescrptSeA.deserialize(dd0.serialize()) - model = torch.jit.script(dd0) - model = torch.jit.script(dd1) + rng = np.random.default_rng() + nf, nloc, nnei = self.nlist.shape + davg = rng.normal(size=(self.nt, nnei, 4)) + dstd = rng.normal(size=(self.nt, nnei, 4)) + dstd = 0.1 + np.abs(dstd) + + for idt, prec in itertools.product( + [False, True], + ["float64", "float32"], + ): + dtype = PRECISION_DICT[prec] + rtol, atol = get_tols(prec) + err_msg = f"idt={idt} prec={prec}" + # sea new impl + dd0 = DescrptSeA( + self.rcut, + self.rcut_smth, + self.sel, + precision=prec, + resnet_dt=idt, + old_impl=False, + ) + dd0.sea.mean = torch.tensor(davg, dtype=dtype, device=env.DEVICE) + dd0.sea.dstd = torch.tensor(dstd, dtype=dtype, device=env.DEVICE) + dd1 = DescrptSeA.deserialize(dd0.serialize()) + model = torch.jit.script(dd0) + model = torch.jit.script(dd1) diff --git a/tests/test_smooth.py b/tests/test_smooth.py index 4607256c..b0f36383 100644 --- a/tests/test_smooth.py +++ b/tests/test_smooth.py @@ -1,151 +1,213 @@ -import torch, copy +# SPDX-License-Identifier: LGPL-3.0-or-later +import copy import unittest -from deepmd_pt.utils import env -from deepmd_pt.model.model import get_model -from deepmd_pt.utils.dataloader import DpLoaderSet -from deepmd_pt.utils.stat import make_stat_input -from .test_permutation import ( - make_sample, - model_se_e2_a, - model_dpa1, - model_dpa2, - # model_dpau, - model_hybrid, + +import torch + +from deepmd_pt.infer.deep_eval import ( + eval_model, +) +from deepmd_pt.model.model import ( + get_model, +) +from deepmd_pt.utils import ( + env, +) + +from .test_permutation import ( # model_dpau, + make_sample, + model_dpa1, + model_dpa2, + model_hybrid, + model_se_e2_a, ) -from deepmd_pt.infer.deep_eval import eval_model dtype = torch.float64 class TestSmooth: - def test( - self, - ): - # displacement of atoms - epsilon = 1e-5 if self.epsilon is None else self.epsilon - # required prec. relative prec is not checked. - rprec = 0 - aprec = 1e-5 if self.aprec is None else self.aprec - - natoms = 10 - cell = 8.6 * torch.eye(3, dtype=dtype).to(env.DEVICE) - atype = torch.randint(0, 3, [natoms]) - coord0 = torch.tensor( - [ - 0., 0., 0., - 4.-.5*epsilon, 0., 0., - 0., 4.-.5*epsilon, 0., - ], - dtype=dtype).view([-1, 3]).to(env.DEVICE) - coord1 = torch.rand([natoms-coord0.shape[0], 3], dtype=dtype).to(env.DEVICE) - coord1 = torch.matmul(coord1, cell) - coord = torch.concat([coord0, coord1], dim=0) - - coord0 = torch.clone(coord) - coord1 = torch.clone(coord) - coord1[1][0] += epsilon - coord2 = torch.clone(coord) - coord2[2][1] += epsilon - coord3 = torch.clone(coord) - coord3[1][0] += epsilon - coord3[2][1] += epsilon - - e0, f0, v0 = eval_model(self.model, coord0.unsqueeze(0), cell.unsqueeze(0), atype) - ret0 = {'energy': e0.squeeze(0), 'force': f0.squeeze(0), 'virial': v0.squeeze(0)} - e1, f1, v1 = eval_model(self.model, coord1.unsqueeze(0), cell.unsqueeze(0), atype) - ret1 = {'energy': e1.squeeze(0), 'force': f1.squeeze(0), 'virial': v1.squeeze(0)} - e2, f2, v2 = eval_model(self.model, coord2.unsqueeze(0), cell.unsqueeze(0), atype) - ret2 = {'energy': e2.squeeze(0), 'force': f2.squeeze(0), 'virial': v2.squeeze(0)} - e3, f3, v3 = eval_model(self.model, coord3.unsqueeze(0), cell.unsqueeze(0), atype) - ret3 = {'energy': e3.squeeze(0), 'force': f3.squeeze(0), 'virial': v3.squeeze(0)} - - def compare(ret0, ret1): - torch.testing.assert_close(ret0['energy'], ret1['energy'], rtol=rprec, atol=aprec) - # plus 1. to avoid the divided-by-zero issue - torch.testing.assert_close(1.+ret0['force'], 1.+ret1['force'], rtol=rprec, atol=aprec) - if not hasattr(self, "test_virial") or self.test_virial: - torch.testing.assert_close(1.+ret0['virial'], 1.+ret1['virial'], rtol=rprec, atol=aprec) - - compare(ret0, ret1) - compare(ret1, ret2) - compare(ret0, ret3) + def test( + self, + ): + # displacement of atoms + epsilon = 1e-5 if self.epsilon is None else self.epsilon + # required prec. relative prec is not checked. + rprec = 0 + aprec = 1e-5 if self.aprec is None else self.aprec + + natoms = 10 + cell = 8.6 * torch.eye(3, dtype=dtype).to(env.DEVICE) + atype = torch.randint(0, 3, [natoms]) + coord0 = ( + torch.tensor( + [ + 0.0, + 0.0, + 0.0, + 4.0 - 0.5 * epsilon, + 0.0, + 0.0, + 0.0, + 4.0 - 0.5 * epsilon, + 0.0, + ], + dtype=dtype, + ) + .view([-1, 3]) + .to(env.DEVICE) + ) + coord1 = torch.rand([natoms - coord0.shape[0], 3], dtype=dtype).to(env.DEVICE) + coord1 = torch.matmul(coord1, cell) + coord = torch.concat([coord0, coord1], dim=0) + + coord0 = torch.clone(coord) + coord1 = torch.clone(coord) + coord1[1][0] += epsilon + coord2 = torch.clone(coord) + coord2[2][1] += epsilon + coord3 = torch.clone(coord) + coord3[1][0] += epsilon + coord3[2][1] += epsilon + + e0, f0, v0 = eval_model( + self.model, coord0.unsqueeze(0), cell.unsqueeze(0), atype + ) + ret0 = { + "energy": e0.squeeze(0), + "force": f0.squeeze(0), + "virial": v0.squeeze(0), + } + e1, f1, v1 = eval_model( + self.model, coord1.unsqueeze(0), cell.unsqueeze(0), atype + ) + ret1 = { + "energy": e1.squeeze(0), + "force": f1.squeeze(0), + "virial": v1.squeeze(0), + } + e2, f2, v2 = eval_model( + self.model, coord2.unsqueeze(0), cell.unsqueeze(0), atype + ) + ret2 = { + "energy": e2.squeeze(0), + "force": f2.squeeze(0), + "virial": v2.squeeze(0), + } + e3, f3, v3 = eval_model( + self.model, coord3.unsqueeze(0), cell.unsqueeze(0), atype + ) + ret3 = { + "energy": e3.squeeze(0), + "force": f3.squeeze(0), + "virial": v3.squeeze(0), + } + + def compare(ret0, ret1): + torch.testing.assert_close( + ret0["energy"], ret1["energy"], rtol=rprec, atol=aprec + ) + # plus 1. to avoid the divided-by-zero issue + torch.testing.assert_close( + 1.0 + ret0["force"], 1.0 + ret1["force"], rtol=rprec, atol=aprec + ) + if not hasattr(self, "test_virial") or self.test_virial: + torch.testing.assert_close( + 1.0 + ret0["virial"], 1.0 + ret1["virial"], rtol=rprec, atol=aprec + ) + + compare(ret0, ret1) + compare(ret1, ret2) + compare(ret0, ret3) class TestEnergyModelSeA(unittest.TestCase, TestSmooth): - def setUp(self): - model_params = copy.deepcopy(model_se_e2_a) - sampled = make_sample(model_params) - self.type_split = False - self.model = get_model(model_params, sampled).to(env.DEVICE) - self.epsilon, self.aprec = None, None + def setUp(self): + model_params = copy.deepcopy(model_se_e2_a) + sampled = make_sample(model_params) + self.type_split = False + self.model = get_model(model_params, sampled).to(env.DEVICE) + self.epsilon, self.aprec = None, None # @unittest.skip("dpa-1 not smooth at the moment") class TestEnergyModelDPA1(unittest.TestCase, TestSmooth): - def setUp(self): - model_params = copy.deepcopy(model_dpa1) - sampled = make_sample(model_params) - self.type_split = True - self.model = get_model(model_params, sampled).to(env.DEVICE) - # less degree of smoothness, - # error can be systematically removed by reducing epsilon - self.epsilon = 1e-5 - self.aprec = 1e-5 + def setUp(self): + model_params = copy.deepcopy(model_dpa1) + sampled = make_sample(model_params) + self.type_split = True + self.model = get_model(model_params, sampled).to(env.DEVICE) + # less degree of smoothness, + # error can be systematically removed by reducing epsilon + self.epsilon = 1e-5 + self.aprec = 1e-5 + class TestEnergyModelDPA2(unittest.TestCase, TestSmooth): - def setUp(self): - model_params = copy.deepcopy(model_dpa2) - model_params["descriptor"]["repinit_rcut"] = 8 - model_params["descriptor"]["repinit_rcut_smth"] = 3.5 - model_params_sample = copy.deepcopy(model_params) - ####################################################### - # dirty hack here! the interface of dataload should be - # redesigned to support specifying rcut and sel - ####################################################### - model_params_sample["descriptor"]["rcut"] = model_params_sample["descriptor"]["repinit_rcut"] - model_params_sample["descriptor"]["sel"] = model_params_sample["descriptor"]["repinit_nsel"] - sampled = make_sample(model_params_sample) - self.type_split = True - self.model = get_model(model_params, sampled).to(env.DEVICE) - self.epsilon, self.aprec = 1e-5, 1e-4 + def setUp(self): + model_params = copy.deepcopy(model_dpa2) + model_params["descriptor"]["repinit_rcut"] = 8 + model_params["descriptor"]["repinit_rcut_smth"] = 3.5 + model_params_sample = copy.deepcopy(model_params) + ####################################################### + # dirty hack here! the interface of dataload should be + # redesigned to support specifying rcut and sel + ####################################################### + model_params_sample["descriptor"]["rcut"] = model_params_sample["descriptor"][ + "repinit_rcut" + ] + model_params_sample["descriptor"]["sel"] = model_params_sample["descriptor"][ + "repinit_nsel" + ] + sampled = make_sample(model_params_sample) + self.type_split = True + self.model = get_model(model_params, sampled).to(env.DEVICE) + self.epsilon, self.aprec = 1e-5, 1e-4 class TestEnergyModelDPA2_1(unittest.TestCase, TestSmooth): - def setUp(self): - model_params = copy.deepcopy(model_dpa2) - model_params["fitting_net"]["type"] = "ener" - model_params_sample = copy.deepcopy(model_params) - model_params_sample["descriptor"]["rcut"] = model_params_sample["descriptor"]["repinit_rcut"] - model_params_sample["descriptor"]["sel"] = model_params_sample["descriptor"]["repinit_nsel"] - sampled = make_sample(model_params_sample) - self.type_split = True - self.test_virial = False - self.model = get_model(model_params, sampled).to(env.DEVICE) - self.epsilon, self.aprec = None, None + def setUp(self): + model_params = copy.deepcopy(model_dpa2) + model_params["fitting_net"]["type"] = "ener" + model_params_sample = copy.deepcopy(model_params) + model_params_sample["descriptor"]["rcut"] = model_params_sample["descriptor"][ + "repinit_rcut" + ] + model_params_sample["descriptor"]["sel"] = model_params_sample["descriptor"][ + "repinit_nsel" + ] + sampled = make_sample(model_params_sample) + self.type_split = True + self.test_virial = False + self.model = get_model(model_params, sampled).to(env.DEVICE) + self.epsilon, self.aprec = None, None class TestEnergyModelDPA2_2(unittest.TestCase, TestSmooth): - def setUp(self): - model_params = copy.deepcopy(model_dpa2) - model_params["fitting_net"]["type"] = "ener" - model_params_sample = copy.deepcopy(model_params) - model_params_sample["descriptor"]["rcut"] = model_params_sample["descriptor"]["repinit_rcut"] - model_params_sample["descriptor"]["sel"] = model_params_sample["descriptor"]["repinit_nsel"] - sampled = make_sample(model_params_sample) - self.type_split = True - self.test_virial = False - self.model = get_model(model_params, sampled).to(env.DEVICE) - self.epsilon, self.aprec = None, None + def setUp(self): + model_params = copy.deepcopy(model_dpa2) + model_params["fitting_net"]["type"] = "ener" + model_params_sample = copy.deepcopy(model_params) + model_params_sample["descriptor"]["rcut"] = model_params_sample["descriptor"][ + "repinit_rcut" + ] + model_params_sample["descriptor"]["sel"] = model_params_sample["descriptor"][ + "repinit_nsel" + ] + sampled = make_sample(model_params_sample) + self.type_split = True + self.test_virial = False + self.model = get_model(model_params, sampled).to(env.DEVICE) + self.epsilon, self.aprec = None, None @unittest.skip("hybrid not supported at the moment") class TestEnergyModelHybrid(unittest.TestCase, TestSmooth): - def setUp(self): - model_params = copy.deepcopy(model_hybrid) - sampled = make_sample(model_params) - self.type_split = True - self.model = get_model(model_params, sampled).to(env.DEVICE) - self.epsilon, self.aprec = None, None + def setUp(self): + model_params = copy.deepcopy(model_hybrid) + sampled = make_sample(model_params) + self.type_split = True + self.model = get_model(model_params, sampled).to(env.DEVICE) + self.epsilon, self.aprec = None, None # class TestEnergyFoo(unittest.TestCase): @@ -159,10 +221,10 @@ def setUp(self): # cell = (cell + cell.T) + 5. * torch.eye(3) # coord = torch.rand([natoms, 3], dtype=dtype) # coord = torch.matmul(coord, cell) -# atype = torch.IntTensor([0, 0, 0, 1, 1]) -# idx_perm = [1, 0, 4, 3, 2] +# atype = torch.IntTensor([0, 0, 0, 1, 1]) +# idx_perm = [1, 0, 4, 3, 2] # ret0 = infer_model(self.model, coord, cell, atype, type_split=True) -if __name__ == '__main__': - unittest.main() +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_smooth_denoise.py b/tests/test_smooth_denoise.py index eaa3229b..26f32b6f 100644 --- a/tests/test_smooth_denoise.py +++ b/tests/test_smooth_denoise.py @@ -1,108 +1,151 @@ -import torch, copy +# SPDX-License-Identifier: LGPL-3.0-or-later +import copy import unittest -from deepmd_pt.utils import env -from deepmd_pt.model.model import get_model -from deepmd_pt.utils.dataloader import DpLoaderSet -from deepmd_pt.utils.stat import make_stat_input + +import torch + +from deepmd_pt.infer.deep_eval import ( + eval_model, +) +from deepmd_pt.model.model import ( + get_model, +) +from deepmd_pt.utils import ( + env, +) + from .test_permutation_denoise import ( - make_sample, - model_dpa1, - model_dpa2, - model_hybrid, + make_sample, + model_dpa2, ) -from deepmd_pt.infer.deep_eval import eval_model dtype = torch.float64 + class TestSmoothDenoise: - def test( - self, - ): - # displacement of atoms - epsilon = 1e-5 if self.epsilon is None else self.epsilon - # required prec. relative prec is not checked. - rprec = 0 - aprec = 1e-5 if self.aprec is None else self.aprec - - natoms = 10 - cell = 8.6 * torch.eye(3, dtype=dtype).to(env.DEVICE) - atype = torch.randint(0, 3, [natoms]) - coord0 = torch.tensor( - [ - 0., 0., 0., - 4.-.5*epsilon, 0., 0., - 0., 4.-.5*epsilon, 0., - ], - dtype=dtype).view([-1, 3]).to(env.DEVICE) - coord1 = torch.rand([natoms-coord0.shape[0], 3], dtype=dtype).to(env.DEVICE) - coord1 = torch.matmul(coord1, cell) - coord = torch.concat([coord0, coord1], dim=0) - - coord0 = torch.clone(coord) - coord1 = torch.clone(coord) - coord1[1][0] += epsilon - coord2 = torch.clone(coord) - coord2[2][1] += epsilon - coord3 = torch.clone(coord) - coord3[1][0] += epsilon - coord3[2][1] += epsilon - - update_c0, logits0 = eval_model(self.model, coord0.unsqueeze(0), cell.unsqueeze(0), atype, denoise = True) - ret0 = {'updated_coord': update_c0.squeeze(0), 'logits': logits0.squeeze(0)} - update_c1, logits1 = eval_model(self.model, coord1.unsqueeze(0), cell.unsqueeze(0), atype, denoise = True) - ret1 = {'updated_coord': update_c1.squeeze(0), 'logits': logits1.squeeze(0)} - update_c2, logits2 = eval_model(self.model, coord2.unsqueeze(0), cell.unsqueeze(0), atype, denoise = True) - ret2 = {'updated_coord': update_c2.squeeze(0), 'logits': logits2.squeeze(0)} - update_c3, logits3 = eval_model(self.model, coord3.unsqueeze(0), cell.unsqueeze(0), atype, denoise = True) - ret3 = {'updated_coord': update_c3.squeeze(0), 'logits': logits3.squeeze(0)} - - def compare(ret0, ret1): - torch.testing.assert_close(ret0['updated_coord'], ret1['updated_coord'], rtol=rprec, atol=aprec) - torch.testing.assert_close(ret0['logits'], ret1['logits'], rtol=rprec, atol=aprec) - - compare(ret0, ret1) - compare(ret1, ret2) - compare(ret0, ret3) + def test( + self, + ): + # displacement of atoms + epsilon = 1e-5 if self.epsilon is None else self.epsilon + # required prec. relative prec is not checked. + rprec = 0 + aprec = 1e-5 if self.aprec is None else self.aprec + + natoms = 10 + cell = 8.6 * torch.eye(3, dtype=dtype).to(env.DEVICE) + atype = torch.randint(0, 3, [natoms]) + coord0 = ( + torch.tensor( + [ + 0.0, + 0.0, + 0.0, + 4.0 - 0.5 * epsilon, + 0.0, + 0.0, + 0.0, + 4.0 - 0.5 * epsilon, + 0.0, + ], + dtype=dtype, + ) + .view([-1, 3]) + .to(env.DEVICE) + ) + coord1 = torch.rand([natoms - coord0.shape[0], 3], dtype=dtype).to(env.DEVICE) + coord1 = torch.matmul(coord1, cell) + coord = torch.concat([coord0, coord1], dim=0) + + coord0 = torch.clone(coord) + coord1 = torch.clone(coord) + coord1[1][0] += epsilon + coord2 = torch.clone(coord) + coord2[2][1] += epsilon + coord3 = torch.clone(coord) + coord3[1][0] += epsilon + coord3[2][1] += epsilon + + update_c0, logits0 = eval_model( + self.model, coord0.unsqueeze(0), cell.unsqueeze(0), atype, denoise=True + ) + ret0 = {"updated_coord": update_c0.squeeze(0), "logits": logits0.squeeze(0)} + update_c1, logits1 = eval_model( + self.model, coord1.unsqueeze(0), cell.unsqueeze(0), atype, denoise=True + ) + ret1 = {"updated_coord": update_c1.squeeze(0), "logits": logits1.squeeze(0)} + update_c2, logits2 = eval_model( + self.model, coord2.unsqueeze(0), cell.unsqueeze(0), atype, denoise=True + ) + ret2 = {"updated_coord": update_c2.squeeze(0), "logits": logits2.squeeze(0)} + update_c3, logits3 = eval_model( + self.model, coord3.unsqueeze(0), cell.unsqueeze(0), atype, denoise=True + ) + ret3 = {"updated_coord": update_c3.squeeze(0), "logits": logits3.squeeze(0)} + + def compare(ret0, ret1): + torch.testing.assert_close( + ret0["updated_coord"], ret1["updated_coord"], rtol=rprec, atol=aprec + ) + torch.testing.assert_close( + ret0["logits"], ret1["logits"], rtol=rprec, atol=aprec + ) + + compare(ret0, ret1) + compare(ret1, ret2) + compare(ret0, ret3) + class TestDenoiseModelDPA2(unittest.TestCase, TestSmoothDenoise): - def setUp(self): - model_params_sample = copy.deepcopy(model_dpa2) - model_params_sample["descriptor"]["rcut"] = model_params_sample["descriptor"]["repinit_rcut"] - model_params_sample["descriptor"]["sel"] = model_params_sample["descriptor"]["repinit_nsel"] - sampled = make_sample(model_params_sample) - model_params = copy.deepcopy(model_dpa2) - model_params["descriptor"]["sel"] = 8 - model_params["descriptor"]["rcut_smth"] = 3.5 - self.type_split = True - self.model = get_model(model_params, sampled).to(env.DEVICE) - self.epsilon, self.aprec = None, None - self.epsilon = 1e-7 - self.aprec = 1e-5 + def setUp(self): + model_params_sample = copy.deepcopy(model_dpa2) + model_params_sample["descriptor"]["rcut"] = model_params_sample["descriptor"][ + "repinit_rcut" + ] + model_params_sample["descriptor"]["sel"] = model_params_sample["descriptor"][ + "repinit_nsel" + ] + sampled = make_sample(model_params_sample) + model_params = copy.deepcopy(model_dpa2) + model_params["descriptor"]["sel"] = 8 + model_params["descriptor"]["rcut_smth"] = 3.5 + self.type_split = True + self.model = get_model(model_params, sampled).to(env.DEVICE) + self.epsilon, self.aprec = None, None + self.epsilon = 1e-7 + self.aprec = 1e-5 + class TestDenoiseModelDPA2_1(unittest.TestCase, TestSmoothDenoise): - def setUp(self): - model_params_sample = copy.deepcopy(model_dpa2) - model_params_sample["descriptor"]["rcut"] = model_params_sample["descriptor"]["repinit_rcut"] - model_params_sample["descriptor"]["sel"] = model_params_sample["descriptor"]["repinit_nsel"] - sampled = make_sample(model_params_sample) - model_params = copy.deepcopy(model_dpa2) - # model_params["descriptor"]["combine_grrg"] = True - self.type_split = True - self.model = get_model(model_params, sampled).to(env.DEVICE) - self.epsilon, self.aprec = None, None - self.epsilon = 1e-7 - self.aprec = 1e-5 - -@unittest.skip("hybrid not supported at the moment") -class TestDenoiseModelHybrid(unittest.TestCase, TestSmoothDenoise): - def setUp(self): - model_params = copy.deepcopy(model_hybrid_denoise) - sampled = make_sample(model_params) - self.type_split = True - self.model = get_model(model_params, sampled).to(env.DEVICE) - self.epsilon, self.aprec = None, None - self.epsilon = 1e-7 - self.aprec = 1e-5 - -if __name__ == '__main__': - unittest.main() + def setUp(self): + model_params_sample = copy.deepcopy(model_dpa2) + model_params_sample["descriptor"]["rcut"] = model_params_sample["descriptor"][ + "repinit_rcut" + ] + model_params_sample["descriptor"]["sel"] = model_params_sample["descriptor"][ + "repinit_nsel" + ] + sampled = make_sample(model_params_sample) + model_params = copy.deepcopy(model_dpa2) + # model_params["descriptor"]["combine_grrg"] = True + self.type_split = True + self.model = get_model(model_params, sampled).to(env.DEVICE) + self.epsilon, self.aprec = None, None + self.epsilon = 1e-7 + self.aprec = 1e-5 + + +# @unittest.skip("hybrid not supported at the moment") +# class TestDenoiseModelHybrid(unittest.TestCase, TestSmoothDenoise): +# def setUp(self): +# model_params = copy.deepcopy(model_hybrid_denoise) +# sampled = make_sample(model_params) +# self.type_split = True +# self.model = get_model(model_params, sampled).to(env.DEVICE) +# self.epsilon, self.aprec = None, None +# self.epsilon = 1e-7 +# self.aprec = 1e-5 + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_stat.py b/tests/test_stat.py index 38cb61ee..4bc97826 100644 --- a/tests/test_stat.py +++ b/tests/test_stat.py @@ -1,21 +1,37 @@ -import numpy as np +# SPDX-License-Identifier: LGPL-3.0-or-later +import json import os -import torch import unittest -import json -from deepmd.descriptor.se_a import DescrptSeA as DescrptSeA_tf -from deepmd.fit.ener import EnerFitting -from deepmd.model.model_stat import make_stat_input as dp_make, merge_sys_stat as dp_merge -from deepmd.utils.data_system import DeepmdDataSystem -from deepmd.utils import random as tf_random -from deepmd.common import expand_sys_str - -from deepmd_pt.utils.dataset import DeepmdDataSet -from deepmd_pt.model.descriptor import DescrptSeA -from deepmd_pt.utils.stat import make_stat_input as my_make, compute_output_stats -from deepmd_pt.utils.dataloader import DpLoaderSet -from deepmd_pt.utils import env +import numpy as np +import torch +from deepmd.tf.common import ( + expand_sys_str, +) +from deepmd.tf.descriptor.se_a import DescrptSeA as DescrptSeA_tf +from deepmd.tf.fit.ener import ( + EnerFitting, +) +from deepmd.tf.model.model_stat import make_stat_input as dp_make +from deepmd.tf.model.model_stat import merge_sys_stat as dp_merge +from deepmd.tf.utils import random as tf_random +from deepmd.tf.utils.data_system import ( + DeepmdDataSystem, +) + +from deepmd_pt.model.descriptor import ( + DescrptSeA, +) +from deepmd_pt.utils import ( + env, +) +from deepmd_pt.utils.dataloader import ( + DpLoaderSet, +) +from deepmd_pt.utils.stat import ( + compute_output_stats, +) +from deepmd_pt.utils.stat import make_stat_input as my_make CUR_DIR = os.path.dirname(__file__) @@ -32,50 +48,55 @@ def compare(ut, base, given): class TestDataset(unittest.TestCase): - def setUp(self): - with open(env.TEST_CONFIG, 'r') as fin: + with open(env.TEST_CONFIG) as fin: content = fin.read() config = json.loads(content) - model_config = config['model'] - self.rcut = model_config['descriptor']['rcut'] - self.rcut_smth = model_config['descriptor']['rcut_smth'] - self.sel = model_config['descriptor']['sel'] - self.batch_size = config['training']['training_data']['batch_size'] - self.systems = config['training']['validation_data']['systems'] + model_config = config["model"] + self.rcut = model_config["descriptor"]["rcut"] + self.rcut_smth = model_config["descriptor"]["rcut_smth"] + self.sel = model_config["descriptor"]["sel"] + self.batch_size = config["training"]["training_data"]["batch_size"] + self.systems = config["training"]["validation_data"]["systems"] if isinstance(self.systems, str): self.systems = expand_sys_str(self.systems) - self.my_dataset = DpLoaderSet(self.systems, self.batch_size, - model_params={ - 'descriptor': { - 'type': 'se_e2_a', - 'sel': self.sel, - 'rcut': self.rcut, - }, - 'type_map': model_config['type_map'] - }, seed=10) - self.filter_neuron = model_config['descriptor']['neuron'] - self.axis_neuron = model_config['descriptor']['axis_neuron'] + self.my_dataset = DpLoaderSet( + self.systems, + self.batch_size, + model_params={ + "descriptor": { + "type": "se_e2_a", + "sel": self.sel, + "rcut": self.rcut, + }, + "type_map": model_config["type_map"], + }, + seed=10, + ) + self.filter_neuron = model_config["descriptor"]["neuron"] + self.axis_neuron = model_config["descriptor"]["axis_neuron"] self.data_stat_nbatch = 2 - self.filter_neuron = model_config['descriptor']['neuron'] - self.axis_neuron = model_config['descriptor']['axis_neuron'] - self.n_neuron = model_config['fitting_net']['neuron'] + self.filter_neuron = model_config["descriptor"]["neuron"] + self.axis_neuron = model_config["descriptor"]["axis_neuron"] + self.n_neuron = model_config["fitting_net"]["neuron"] - self.my_sampled = my_make(self.my_dataset.systems, self.my_dataset.dataloaders, self.data_stat_nbatch) + self.my_sampled = my_make( + self.my_dataset.systems, self.my_dataset.dataloaders, self.data_stat_nbatch + ) tf_random.seed(10) dp_dataset = DeepmdDataSystem(self.systems, self.batch_size, 1, self.rcut) - dp_dataset.add('energy', 1, atomic=False, must=False, high_prec=True) - dp_dataset.add('force', 3, atomic=True, must=False, high_prec=False) + dp_dataset.add("energy", 1, atomic=False, must=False, high_prec=True) + dp_dataset.add("force", 3, atomic=True, must=False, high_prec=False) self.dp_sampled = dp_make(dp_dataset, self.data_stat_nbatch, False) self.dp_merged = dp_merge(self.dp_sampled) - self.dp_mesh = self.dp_merged.pop('default_mesh') + self.dp_mesh = self.dp_merged.pop("default_mesh") self.dp_d = DescrptSeA_tf( rcut=self.rcut, rcut_smth=self.rcut_smth, sel=self.sel, neuron=self.filter_neuron, - axis_neuron=self.axis_neuron + axis_neuron=self.axis_neuron, ) def test_stat_output(self): @@ -85,11 +106,15 @@ def my_merge(energy, natoms): for i in range(len(energy)): for j in range(len(energy[i])): energy_lst.append(torch.tensor(energy[i][j])) - natoms_lst.append(torch.tensor(natoms[i][j]).unsqueeze(0).expand(energy[i][j].shape[0], -1)) + natoms_lst.append( + torch.tensor(natoms[i][j]) + .unsqueeze(0) + .expand(energy[i][j].shape[0], -1) + ) return energy_lst, natoms_lst - energy = self.dp_sampled['energy'] - natoms = self.dp_sampled['natoms_vec'] + energy = self.dp_sampled["energy"] + natoms = self.dp_sampled["natoms_vec"] energy, natoms = my_merge(energy, natoms) dp_fn = EnerFitting(self.dp_d, self.n_neuron) dp_fn.compute_output_stats(self.dp_sampled) @@ -97,7 +122,7 @@ def my_merge(energy, natoms): self.assertTrue(np.allclose(dp_fn.bias_atom_e, bias_atom_e[:, 0])) # temporarily delete this function for performance of seeds in tf and pytorch may be different - ''' + """ def test_stat_input(self): my_sampled = self.my_sampled # list of dicts, each dict contains samples from a system @@ -113,30 +138,51 @@ def test_stat_input(self): for j in range(self.data_stat_nbatch): lst.append(item[key][j*bsz:(j+1)*bsz].cpu().numpy()) compare(self, self.dp_merged[key], lst) - ''' + """ def test_descriptor(self): - coord = self.dp_merged['coord'] - atype = self.dp_merged['type'] - natoms = self.dp_merged['natoms_vec'] - box = self.dp_merged['box'] + coord = self.dp_merged["coord"] + atype = self.dp_merged["type"] + natoms = self.dp_merged["natoms_vec"] + box = self.dp_merged["box"] self.dp_d.compute_input_stats(coord, box, atype, natoms, self.dp_mesh, {}) - my_en = DescrptSeA(self.rcut, self.rcut_smth, self.sel, self.filter_neuron, self.axis_neuron) - my_en = my_en.sea # get the block who has stat as private vars + my_en = DescrptSeA( + self.rcut, self.rcut_smth, self.sel, self.filter_neuron, self.axis_neuron + ) + my_en = my_en.sea # get the block who has stat as private vars sampled = self.my_sampled for sys in sampled: - for key in ['coord', 'force', 'energy', 'atype', 'natoms', 'extended_coord', 'nlist', 'shift', - 'mapping']: + for key in [ + "coord", + "force", + "energy", + "atype", + "natoms", + "extended_coord", + "nlist", + "shift", + "mapping", + ]: if key in sys.keys(): sys[key] = sys[key].to(env.DEVICE) sumr, suma, sumn, sumr2, suma2 = my_en.compute_input_stats(sampled) my_en.init_desc_stat(sumr, suma, sumn, sumr2, suma2) my_en.mean = my_en.mean my_en.stddev = my_en.stddev - self.assertTrue(np.allclose(self.dp_d.davg.reshape([-1]), my_en.mean.cpu().reshape([-1]), rtol=0.01)) - self.assertTrue(np.allclose(self.dp_d.dstd.reshape([-1]), my_en.stddev.cpu().reshape([-1]), rtol=0.01)) + self.assertTrue( + np.allclose( + self.dp_d.davg.reshape([-1]), my_en.mean.cpu().reshape([-1]), rtol=0.01 + ) + ) + self.assertTrue( + np.allclose( + self.dp_d.dstd.reshape([-1]), + my_en.stddev.cpu().reshape([-1]), + rtol=0.01, + ) + ) -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/tests/test_training.py b/tests/test_training.py index bcf5eca8..1567da10 100644 --- a/tests/test_training.py +++ b/tests/test_training.py @@ -1,16 +1,21 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later import json import os import shutil import unittest -from copy import deepcopy +from copy import ( + deepcopy, +) + +from deepmd_pt.entrypoints.main import ( + get_trainer, +) -import numpy as np -from deepmd_pt.entrypoints.main import get_trainer from .test_permutation import ( - model_se_e2_a, - model_dpa1, - model_dpa2, - model_hybrid, + model_dpa1, + model_dpa2, + model_hybrid, + model_se_e2_a, ) @@ -33,7 +38,7 @@ def tearDown(self): class TestEnergyModelSeA(unittest.TestCase, TestDPTrain): def setUp(self): input_json = "tests/water/se_atten.json" - with open(input_json, "r") as f: + with open(input_json) as f: self.config = json.load(f) self.config["model"] = deepcopy(model_se_e2_a) self.config["training"]["numb_steps"] = 1 @@ -43,7 +48,7 @@ def setUp(self): class TestEnergyModelDPA1(unittest.TestCase, TestDPTrain): def setUp(self): input_json = "tests/water/se_atten.json" - with open(input_json, "r") as f: + with open(input_json) as f: self.config = json.load(f) self.config["model"] = deepcopy(model_dpa1) self.config["training"]["numb_steps"] = 1 @@ -53,12 +58,18 @@ def setUp(self): class TestEnergyModelDPA2(unittest.TestCase, TestDPTrain): def setUp(self): input_json = "tests/water/se_atten.json" - with open(input_json, "r") as f: + with open(input_json) as f: self.config = json.load(f) self.config["model"] = deepcopy(model_dpa2) - self.config["model"]["descriptor"]["rcut"] = self.config["model"]["descriptor"]["repinit_rcut"] - self.config["model"]["descriptor"]["rcut_smth"] = self.config["model"]["descriptor"]["repinit_rcut_smth"] - self.config["model"]["descriptor"]["sel"] = self.config["model"]["descriptor"]["repinit_nsel"] + self.config["model"]["descriptor"]["rcut"] = self.config["model"]["descriptor"][ + "repinit_rcut" + ] + self.config["model"]["descriptor"]["rcut_smth"] = self.config["model"][ + "descriptor" + ]["repinit_rcut_smth"] + self.config["model"]["descriptor"]["sel"] = self.config["model"]["descriptor"][ + "repinit_nsel" + ] self.config["training"]["numb_steps"] = 1 self.config["training"]["save_freq"] = 1 @@ -67,12 +78,12 @@ def setUp(self): class TestEnergyModelHybrid(unittest.TestCase, TestDPTrain): def setUp(self): input_json = "tests/water/se_atten.json" - with open(input_json, "r") as f: + with open(input_json) as f: self.config = json.load(f) self.config["model"] = deepcopy(model_hybrid) self.config["training"]["numb_steps"] = 1 self.config["training"]["save_freq"] = 1 -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/tests/test_trans.py b/tests/test_trans.py index 7b3144ce..4cd76af6 100644 --- a/tests/test_trans.py +++ b/tests/test_trans.py @@ -1,109 +1,137 @@ -import torch, copy +# SPDX-License-Identifier: LGPL-3.0-or-later +import copy import unittest -from deepmd_pt.utils.preprocess import ( - Region3D, make_env_mat, + +import torch + +from deepmd_pt.infer.deep_eval import ( + eval_model, +) +from deepmd_pt.model.model import ( + get_model, ) -from deepmd_pt.utils import env -from deepmd_pt.model.model import get_model -from deepmd_pt.utils.dataloader import DpLoaderSet -from deepmd_pt.utils.stat import make_stat_input -from .test_permutation import ( - make_sample, - model_se_e2_a, - model_dpa1, - model_dpa2, - # model_dpau, - model_hybrid, +from deepmd_pt.utils import ( + env, +) + +from .test_permutation import ( # model_dpau, + make_sample, + model_dpa1, + model_dpa2, + model_hybrid, + model_se_e2_a, ) -from deepmd_pt.infer.deep_eval import eval_model dtype = torch.float64 class TestTrans: - def test( - self, - ): - natoms = 5 - cell = torch.rand([3, 3], dtype=dtype).to(env.DEVICE) - cell = (cell + cell.T) + 5. * torch.eye(3).to(env.DEVICE) - coord = torch.rand([natoms, 3], dtype=dtype).to(env.DEVICE) - coord = torch.matmul(coord, cell) - atype = torch.IntTensor([0, 0, 0, 1, 1]).to(env.DEVICE) - shift = (torch.rand([3], dtype=dtype) - .5).to(env.DEVICE) * 2. - coord_s = torch.matmul( - torch.remainder( - torch.matmul(coord + shift, torch.linalg.inv(cell)), 1.), cell) - e0, f0, v0 = eval_model(self.model, coord.unsqueeze(0), cell.unsqueeze(0), atype) - ret0 = {'energy': e0.squeeze(0), 'force': f0.squeeze(0), 'virial': v0.squeeze(0)} - e1, f1, v1 = eval_model(self.model, coord_s.unsqueeze(0), cell.unsqueeze(0), atype) - ret1 = {'energy': e1.squeeze(0), 'force': f1.squeeze(0), 'virial': v1.squeeze(0)} - prec = 1e-10 - torch.testing.assert_close(ret0['energy'], ret1['energy'], rtol=prec, atol=prec) - torch.testing.assert_close(ret0['force'], ret1['force'], rtol=prec, atol=prec) - if not hasattr(self, "test_virial") or self.test_virial: - torch.testing.assert_close(ret0['virial'], ret1['virial'], rtol=prec, atol=prec) + def test( + self, + ): + natoms = 5 + cell = torch.rand([3, 3], dtype=dtype).to(env.DEVICE) + cell = (cell + cell.T) + 5.0 * torch.eye(3).to(env.DEVICE) + coord = torch.rand([natoms, 3], dtype=dtype).to(env.DEVICE) + coord = torch.matmul(coord, cell) + atype = torch.IntTensor([0, 0, 0, 1, 1]).to(env.DEVICE) + shift = (torch.rand([3], dtype=dtype) - 0.5).to(env.DEVICE) * 2.0 + coord_s = torch.matmul( + torch.remainder(torch.matmul(coord + shift, torch.linalg.inv(cell)), 1.0), + cell, + ) + e0, f0, v0 = eval_model( + self.model, coord.unsqueeze(0), cell.unsqueeze(0), atype + ) + ret0 = { + "energy": e0.squeeze(0), + "force": f0.squeeze(0), + "virial": v0.squeeze(0), + } + e1, f1, v1 = eval_model( + self.model, coord_s.unsqueeze(0), cell.unsqueeze(0), atype + ) + ret1 = { + "energy": e1.squeeze(0), + "force": f1.squeeze(0), + "virial": v1.squeeze(0), + } + prec = 1e-10 + torch.testing.assert_close(ret0["energy"], ret1["energy"], rtol=prec, atol=prec) + torch.testing.assert_close(ret0["force"], ret1["force"], rtol=prec, atol=prec) + if not hasattr(self, "test_virial") or self.test_virial: + torch.testing.assert_close( + ret0["virial"], ret1["virial"], rtol=prec, atol=prec + ) class TestEnergyModelSeA(unittest.TestCase, TestTrans): - def setUp(self): - model_params = copy.deepcopy(model_se_e2_a) - sampled = make_sample(model_params) - self.type_split = False - self.model = get_model(model_params, sampled).to(env.DEVICE) + def setUp(self): + model_params = copy.deepcopy(model_se_e2_a) + sampled = make_sample(model_params) + self.type_split = False + self.model = get_model(model_params, sampled).to(env.DEVICE) class TestEnergyModelDPA1(unittest.TestCase, TestTrans): - def setUp(self): - model_params = copy.deepcopy(model_dpa1) - sampled = make_sample(model_params) - self.type_split = True - self.model = get_model(model_params, sampled).to(env.DEVICE) + def setUp(self): + model_params = copy.deepcopy(model_dpa1) + sampled = make_sample(model_params) + self.type_split = True + self.model = get_model(model_params, sampled).to(env.DEVICE) class TestEnergyModelDPA2(unittest.TestCase, TestTrans): - def setUp(self): - model_params_sample = copy.deepcopy(model_dpa2) - model_params_sample["descriptor"]["rcut"] = model_params_sample["descriptor"]["repinit_rcut"] - model_params_sample["descriptor"]["sel"] = model_params_sample["descriptor"]["repinit_nsel"] - sampled = make_sample(model_params_sample) - model_params = copy.deepcopy(model_dpa2) - self.type_split = True - self.model = get_model(model_params, sampled).to(env.DEVICE) + def setUp(self): + model_params_sample = copy.deepcopy(model_dpa2) + model_params_sample["descriptor"]["rcut"] = model_params_sample["descriptor"][ + "repinit_rcut" + ] + model_params_sample["descriptor"]["sel"] = model_params_sample["descriptor"][ + "repinit_nsel" + ] + sampled = make_sample(model_params_sample) + model_params = copy.deepcopy(model_dpa2) + self.type_split = True + self.model = get_model(model_params, sampled).to(env.DEVICE) class TestForceModelDPA2(unittest.TestCase, TestTrans): - def setUp(self): - model_params_sample = copy.deepcopy(model_dpa2) - model_params_sample["descriptor"]["rcut"] = model_params_sample["descriptor"]["repinit_rcut"] - model_params_sample["descriptor"]["sel"] = model_params_sample["descriptor"]["repinit_nsel"] - sampled = make_sample(model_params_sample) - model_params = copy.deepcopy(model_dpa2) - model_params["fitting_net"]["type"] = "direct_force_ener" - self.type_split = True - self.test_virial = False - self.model = get_model(model_params, sampled).to(env.DEVICE) + def setUp(self): + model_params_sample = copy.deepcopy(model_dpa2) + model_params_sample["descriptor"]["rcut"] = model_params_sample["descriptor"][ + "repinit_rcut" + ] + model_params_sample["descriptor"]["sel"] = model_params_sample["descriptor"][ + "repinit_nsel" + ] + sampled = make_sample(model_params_sample) + model_params = copy.deepcopy(model_dpa2) + model_params["fitting_net"]["type"] = "direct_force_ener" + self.type_split = True + self.test_virial = False + self.model = get_model(model_params, sampled).to(env.DEVICE) @unittest.skip("hybrid not supported at the moment") class TestEnergyModelHybrid(unittest.TestCase, TestTrans): - def setUp(self): - model_params = copy.deepcopy(model_hybrid) - sampled = make_sample(model_params) - self.type_split = True - self.model = get_model(model_params, sampled).to(env.DEVICE) + def setUp(self): + model_params = copy.deepcopy(model_hybrid) + sampled = make_sample(model_params) + self.type_split = True + self.model = get_model(model_params, sampled).to(env.DEVICE) @unittest.skip("hybrid not supported at the moment") class TestForceModelHybrid(unittest.TestCase, TestTrans): - def setUp(self): - model_params = copy.deepcopy(model_hybrid) - model_params["fitting_net"]["type"] = "direct_force_ener" - sampled = make_sample(model_params) - self.type_split = True - self.test_virial = False - self.model = get_model(model_params, sampled).to(env.DEVICE) + def setUp(self): + model_params = copy.deepcopy(model_hybrid) + model_params["fitting_net"]["type"] = "direct_force_ener" + sampled = make_sample(model_params) + self.type_split = True + self.test_virial = False + self.model = get_model(model_params, sampled).to(env.DEVICE) -if __name__ == '__main__': - unittest.main() +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_trans_denoise.py b/tests/test_trans_denoise.py index 25f67984..48ee99d6 100644 --- a/tests/test_trans_denoise.py +++ b/tests/test_trans_denoise.py @@ -1,70 +1,92 @@ -import torch, copy +# SPDX-License-Identifier: LGPL-3.0-or-later +import copy import unittest -from deepmd_pt.utils.preprocess import ( - Region3D, make_env_mat, + +import torch + +from deepmd_pt.infer.deep_eval import ( + eval_model, +) +from deepmd_pt.model.model import ( + get_model, ) -from deepmd_pt.utils import env -from deepmd_pt.model.model import get_model -from deepmd_pt.utils.dataloader import DpLoaderSet -from deepmd_pt.utils.stat import make_stat_input +from deepmd_pt.utils import ( + env, +) + from .test_permutation_denoise import ( - make_sample, - model_dpa1, - model_dpa2, - model_hybrid, + make_sample, + model_dpa1, + model_dpa2, + model_hybrid, ) -from deepmd_pt.infer.deep_eval import eval_model dtype = torch.float64 + class TestTransDenoise: - def test( - self, - ): - natoms = 5 - cell = torch.rand([3, 3], dtype=dtype).to(env.DEVICE) - cell = (cell + cell.T) + 5. * torch.eye(3).to(env.DEVICE) - coord = torch.rand([natoms, 3], dtype=dtype).to(env.DEVICE) - coord = torch.matmul(coord, cell) - atype = torch.IntTensor([0, 0, 0, 1, 1]).to(env.DEVICE) - shift = (torch.rand([3], dtype=dtype) - .5).to(env.DEVICE) * 2. - coord_s = torch.matmul( - torch.remainder( - torch.matmul(coord + shift, torch.linalg.inv(cell)), 1.), cell) - updated_c0, logits0 = eval_model(self.model, coord.unsqueeze(0), cell.unsqueeze(0), atype, denoise=True) - updated_c0 = updated_c0 - coord.unsqueeze(0) - ret0 = {'updated_coord': updated_c0.squeeze(0), 'logits': logits0.squeeze(0)} - updated_c1, logits1 = eval_model(self.model, coord_s.unsqueeze(0), cell.unsqueeze(0), atype, denoise=True) - updated_c1 = updated_c1 - coord_s.unsqueeze(0) - ret1 = {'updated_coord': updated_c1.squeeze(0), 'logits': logits1.squeeze(0)} - prec = 1e-10 - torch.testing.assert_close(ret0['updated_coord'], ret1['updated_coord'], rtol=prec, atol=prec) - torch.testing.assert_close(ret0['logits'], ret1['logits'], rtol=prec, atol=prec) + def test( + self, + ): + natoms = 5 + cell = torch.rand([3, 3], dtype=dtype).to(env.DEVICE) + cell = (cell + cell.T) + 5.0 * torch.eye(3).to(env.DEVICE) + coord = torch.rand([natoms, 3], dtype=dtype).to(env.DEVICE) + coord = torch.matmul(coord, cell) + atype = torch.IntTensor([0, 0, 0, 1, 1]).to(env.DEVICE) + shift = (torch.rand([3], dtype=dtype) - 0.5).to(env.DEVICE) * 2.0 + coord_s = torch.matmul( + torch.remainder(torch.matmul(coord + shift, torch.linalg.inv(cell)), 1.0), + cell, + ) + updated_c0, logits0 = eval_model( + self.model, coord.unsqueeze(0), cell.unsqueeze(0), atype, denoise=True + ) + updated_c0 = updated_c0 - coord.unsqueeze(0) + ret0 = {"updated_coord": updated_c0.squeeze(0), "logits": logits0.squeeze(0)} + updated_c1, logits1 = eval_model( + self.model, coord_s.unsqueeze(0), cell.unsqueeze(0), atype, denoise=True + ) + updated_c1 = updated_c1 - coord_s.unsqueeze(0) + ret1 = {"updated_coord": updated_c1.squeeze(0), "logits": logits1.squeeze(0)} + prec = 1e-10 + torch.testing.assert_close( + ret0["updated_coord"], ret1["updated_coord"], rtol=prec, atol=prec + ) + torch.testing.assert_close(ret0["logits"], ret1["logits"], rtol=prec, atol=prec) + class TestDenoiseModelDPA1(unittest.TestCase, TestTransDenoise): - def setUp(self): - model_params = copy.deepcopy(model_dpa1) - sampled = make_sample(model_params) - self.type_split = True - self.model = get_model(model_params, sampled).to(env.DEVICE) + def setUp(self): + model_params = copy.deepcopy(model_dpa1) + sampled = make_sample(model_params) + self.type_split = True + self.model = get_model(model_params, sampled).to(env.DEVICE) + class TestDenoiseModelDPA2(unittest.TestCase, TestTransDenoise): - def setUp(self): - model_params_sample = copy.deepcopy(model_dpa2) - model_params_sample["descriptor"]["rcut"] = model_params_sample["descriptor"]["repinit_rcut"] - model_params_sample["descriptor"]["sel"] = model_params_sample["descriptor"]["repinit_nsel"] - sampled = make_sample(model_params_sample) - model_params = copy.deepcopy(model_dpa2) - self.type_split = True - self.model = get_model(model_params, sampled).to(env.DEVICE) + def setUp(self): + model_params_sample = copy.deepcopy(model_dpa2) + model_params_sample["descriptor"]["rcut"] = model_params_sample["descriptor"][ + "repinit_rcut" + ] + model_params_sample["descriptor"]["sel"] = model_params_sample["descriptor"][ + "repinit_nsel" + ] + sampled = make_sample(model_params_sample) + model_params = copy.deepcopy(model_dpa2) + self.type_split = True + self.model = get_model(model_params, sampled).to(env.DEVICE) + @unittest.skip("hybrid not supported at the moment") class TestDenoiseModelHybrid(unittest.TestCase, TestTransDenoise): - def setUp(self): - model_params = copy.deepcopy(model_hybrid) - sampled = make_sample(model_params) - self.type_split = True - self.model = get_model(model_params, sampled).to(env.DEVICE) + def setUp(self): + model_params = copy.deepcopy(model_hybrid) + sampled = make_sample(model_params) + self.type_split = True + self.model = get_model(model_params, sampled).to(env.DEVICE) + -if __name__ == '__main__': - unittest.main() +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_unused_params.py b/tests/test_unused_params.py index 284323b2..aefcda05 100644 --- a/tests/test_unused_params.py +++ b/tests/test_unused_params.py @@ -1,81 +1,98 @@ -import torch, copy +# SPDX-License-Identifier: LGPL-3.0-or-later +import copy import unittest -from deepmd_pt.utils.preprocess import ( - Region3D, make_env_mat, + +import torch + +from deepmd_pt.infer.deep_eval import ( + eval_model, +) +from deepmd_pt.model.model import ( + get_model, +) +from deepmd_pt.utils import ( + env, ) -from deepmd_pt.utils import env -from deepmd_pt.model.model import get_model -from deepmd_pt.utils.dataloader import DpLoaderSet -from deepmd_pt.utils.stat import make_stat_input + from .test_permutation import ( make_sample, model_dpa2, ) -from deepmd_pt.infer.deep_eval import eval_model dtype = torch.float64 class TestUnusedParamsDPA2(unittest.TestCase): - def test_unused(self): - import itertools - for conv, drrd, grrg, attn1, g1g1, attn2, h2 in \ - itertools.product( - [True,False], [True,False], [True,False], [True,False], - [True,False], [True,False], [True,False], + def test_unused(self): + import itertools + + for conv, drrd, grrg, attn1, g1g1, attn2, h2 in itertools.product( + [True, False], + [True, False], + [True, False], + [True, False], + [True, False], + [True, False], + [True, False], ): - if (not drrd) and (not grrg) and h2: - # skip the case h2 is not envolved - continue - if (not grrg) and (not conv): - # skip the case g2 is not envolved - continue - model = copy.deepcopy(model_dpa2) - model["descriptor"]["rcut"] = model["descriptor"]["repinit_rcut"] - model["descriptor"]["sel"] = model["descriptor"]["repinit_nsel"] - model["descriptor"]["repformer_nlayers"] = 2 - # model["descriptor"]["combine_grrg"] = cmbg2 - model["descriptor"]["repformer_update_g1_has_conv"] = conv - model["descriptor"]["repformer_update_g1_has_drrd"] = drrd - model["descriptor"]["repformer_update_g1_has_grrg"] = grrg - model["descriptor"]["repformer_update_g1_has_attn"] = attn1 - model["descriptor"]["repformer_update_g2_has_g1g1"] = g1g1 - model["descriptor"]["repformer_update_g2_has_attn"] = attn2 - model["descriptor"]["repformer_update_h2"] = h2 - model["fitting_net"]["neuron"] = [12, 12, 12] - self._test_unused(model) + if (not drrd) and (not grrg) and h2: + # skip the case h2 is not envolved + continue + if (not grrg) and (not conv): + # skip the case g2 is not envolved + continue + model = copy.deepcopy(model_dpa2) + model["descriptor"]["rcut"] = model["descriptor"]["repinit_rcut"] + model["descriptor"]["sel"] = model["descriptor"]["repinit_nsel"] + model["descriptor"]["repformer_nlayers"] = 2 + # model["descriptor"]["combine_grrg"] = cmbg2 + model["descriptor"]["repformer_update_g1_has_conv"] = conv + model["descriptor"]["repformer_update_g1_has_drrd"] = drrd + model["descriptor"]["repformer_update_g1_has_grrg"] = grrg + model["descriptor"]["repformer_update_g1_has_attn"] = attn1 + model["descriptor"]["repformer_update_g2_has_g1g1"] = g1g1 + model["descriptor"]["repformer_update_g2_has_attn"] = attn2 + model["descriptor"]["repformer_update_h2"] = h2 + model["fitting_net"]["neuron"] = [12, 12, 12] + self._test_unused(model) + + def _test_unused(self, model_params): + sampled = make_sample(model_params) + self.model = get_model(model_params, sampled).to(env.DEVICE) + natoms = 5 + cell = torch.rand([3, 3], dtype=dtype).to(env.DEVICE) + cell = (cell + cell.T) + 5.0 * torch.eye(3).to(env.DEVICE) + coord = torch.rand([natoms, 3], dtype=dtype).to(env.DEVICE) + coord = torch.matmul(coord, cell) + atype = torch.IntTensor([0, 0, 0, 1, 1]).to(env.DEVICE) + idx_perm = [1, 0, 4, 3, 2] + e0, f0, v0 = eval_model( + self.model, coord.unsqueeze(0), cell.unsqueeze(0), atype + ) + ret0 = { + "energy": e0.squeeze(0), + "force": f0.squeeze(0), + "virial": v0.squeeze(0), + } - def _test_unused(self, model_params): - sampled = make_sample(model_params) - self.model = get_model(model_params, sampled).to(env.DEVICE) - natoms = 5 - cell = torch.rand([3, 3], dtype=dtype).to(env.DEVICE) - cell = (cell + cell.T) + 5. * torch.eye(3).to(env.DEVICE) - coord = torch.rand([natoms, 3], dtype=dtype).to(env.DEVICE) - coord = torch.matmul(coord, cell) - atype = torch.IntTensor([0, 0, 0, 1, 1]).to(env.DEVICE) - idx_perm = [1, 0, 4, 3, 2] - e0, f0, v0 = eval_model(self.model, coord.unsqueeze(0), cell.unsqueeze(0), atype) - ret0 = {'energy': e0.squeeze(0), 'force': f0.squeeze(0), 'virial': v0.squeeze(0)} - - # use computation graph to find all contributing tensors - def get_contributing_params(y, top_level=True): - nf = y.grad_fn.next_functions if top_level else y.next_functions - for f, _ in nf: - try: - yield f.variable - except AttributeError: - pass # node has no tensor - if f is not None: - yield from get_contributing_params(f, top_level=False) + # use computation graph to find all contributing tensors + def get_contributing_params(y, top_level=True): + nf = y.grad_fn.next_functions if top_level else y.next_functions + for f, _ in nf: + try: + yield f.variable + except AttributeError: + pass # node has no tensor + if f is not None: + yield from get_contributing_params(f, top_level=False) - contributing_parameters = set(get_contributing_params(ret0['energy'])) - all_parameters = set(self.model.parameters()) - non_contributing = all_parameters - contributing_parameters - for ii in non_contributing: - print(ii.shape) - self.assertEqual(len(non_contributing), 0) + contributing_parameters = set(get_contributing_params(ret0["energy"])) + all_parameters = set(self.model.parameters()) + non_contributing = all_parameters - contributing_parameters + for ii in non_contributing: + print(ii.shape) + self.assertEqual(len(non_contributing), 0) -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/tests/water/input_AlCuMg.json b/tests/water/input_AlCuMg.json index 92c6639f..1b4fe307 100644 --- a/tests/water/input_AlCuMg.json +++ b/tests/water/input_AlCuMg.json @@ -1,7513 +1,7513 @@ { - "model": { - "descriptor": { - "type": "se_e2_a", - "sel": [ - 120 - ], - "rcut_smth": 2.0, - "rcut": 9.0, - "neuron": [ - 25, - 50, - 100 - ], - "resnet_dt": false, - "axis_neuron": 12, - "attn": 128, - "attn_layer": 2, - "attn_dotr": true, - "attn_mask": false, - "seed": 1801819940, - "_activation_function": "tanh" + "model": { + "descriptor": { + "type": "se_e2_a", + "sel": [ + 120 + ], + "rcut_smth": 2.0, + "rcut": 9.0, + "neuron": [ + 25, + 50, + 100 + ], + "resnet_dt": false, + "axis_neuron": 12, + "attn": 128, + "attn_layer": 2, + "attn_dotr": true, + "attn_mask": false, + "seed": 1801819940, + "_activation_function": "tanh" + }, + "fitting_net": { + "neuron": [ + 240, + 240, + 240 + ], + "resnet_dt": true, + "_coord_norm": true, + "_type_fitting_net": false, + "seed": 2375417769, + "_activation_function": "tanh" + }, + "type_map": [ + "Al", + "Cu", + "Mg" + ] }, - "fitting_net": { - "neuron": [ - 240, - 240, - 240 - ], - "resnet_dt": true, - "_coord_norm": true, - "_type_fitting_net": false, - "seed": 2375417769, - "_activation_function": "tanh" + "learning_rate": { + "type": "exp", + "start_lr": 0.001, + "decay_steps": 80000, + "stop_lr": 5e-08, + "_decay_rate": 0.95 }, - "type_map": [ - "Al", - "Cu", - "Mg" - ] - }, - "learning_rate": { - "type": "exp", - "start_lr": 0.001, - "decay_steps": 80000, - "stop_lr": 5e-08, - "_decay_rate": 0.95 - }, - "loss": { - "start_pref_e": 0.02, - "limit_pref_e": 2, - "start_pref_f": 1000, - "limit_pref_f": 1, - "start_pref_v": 0.01, - "limit_pref_v": 1 - }, - "training": { - "training_data": { - "systems": [ - "/root/data/AlMgCu/data/init.000", - "/root/data/AlMgCu/data/init.001", - "/root/data/AlMgCu/data/init.002", - "/root/data/AlMgCu/data/init.003", - "/root/data/AlMgCu/data/init.004", - "/root/data/AlMgCu/data/init.005", - "/root/data/AlMgCu/data/init.006", - "/root/data/AlMgCu/data/init.007", - "/root/data/AlMgCu/data/init.009", - "/root/data/AlMgCu/data/init.010", - "/root/data/AlMgCu/data/init.011", - "/root/data/AlMgCu/data/init.012", - "/root/data/AlMgCu/data/init.014", - "/root/data/AlMgCu/data/init.015", - "/root/data/AlMgCu/data/init.016", - "/root/data/AlMgCu/data/init.017", - "/root/data/AlMgCu/data/init.018", - "/root/data/AlMgCu/data/init.019", - "/root/data/AlMgCu/data/init.020", - "/root/data/AlMgCu/data/init.021", - "/root/data/AlMgCu/data/init.022", - "/root/data/AlMgCu/data/init.023", - "/root/data/AlMgCu/data/init.024", - "/root/data/AlMgCu/data/init.025", - "/root/data/AlMgCu/data/init.026", - "/root/data/AlMgCu/data/init.027", - "/root/data/AlMgCu/data/init.028", - "/root/data/AlMgCu/data/init.030", - "/root/data/AlMgCu/data/init.032", - "/root/data/AlMgCu/data/init.033", - "/root/data/AlMgCu/data/init.034", - "/root/data/AlMgCu/data/init.035", - "/root/data/AlMgCu/data/init.036", - "/root/data/AlMgCu/data/init.037", - "/root/data/AlMgCu/data/init.038", - "/root/data/AlMgCu/data/init.039", - "/root/data/AlMgCu/data/init.040", - "/root/data/AlMgCu/data/init.041", - "/root/data/AlMgCu/data/init.042", - "/root/data/AlMgCu/data/init.043", - "/root/data/AlMgCu/data/init.044", - "/root/data/AlMgCu/data/init.045", - "/root/data/AlMgCu/data/init.046", - "/root/data/AlMgCu/data/init.047", - "/root/data/AlMgCu/data/init.048", - "/root/data/AlMgCu/data/init.049", - "/root/data/AlMgCu/data/init.050", - "/root/data/AlMgCu/data/init.051", - "/root/data/AlMgCu/data/init.056", - "/root/data/AlMgCu/data/init.057", - "/root/data/AlMgCu/data/init.058", - "/root/data/AlMgCu/data/init.059", - "/root/data/AlMgCu/data/init.060", - "/root/data/AlMgCu/data/init.061", - "/root/data/AlMgCu/data/init.062", - "/root/data/AlMgCu/data/init.063", - "/root/data/AlMgCu/data/init.064", - "/root/data/AlMgCu/data/init.065", - "/root/data/AlMgCu/data/init.067", - "/root/data/AlMgCu/data/init.068", - "/root/data/AlMgCu/data/init.069", - "/root/data/AlMgCu/data/init.070", - "/root/data/AlMgCu/data/init.071", - "/root/data/AlMgCu/data/init.072", - "/root/data/AlMgCu/data/init.073", - "/root/data/AlMgCu/data/init.074", - "/root/data/AlMgCu/data/init.075", - "/root/data/AlMgCu/data/init.076", - "/root/data/AlMgCu/data/init.078", - "/root/data/AlMgCu/data/init.079", - "/root/data/AlMgCu/data/init.080", - "/root/data/AlMgCu/data/init.082", - "/root/data/AlMgCu/data/init.083", - "/root/data/AlMgCu/data/init.085", - "/root/data/AlMgCu/data/init.086", - "/root/data/AlMgCu/data/init.087", - "/root/data/AlMgCu/data/init.088", - "/root/data/AlMgCu/data/init.089", - "/root/data/AlMgCu/data/init.090", - "/root/data/AlMgCu/data/init.091", - "/root/data/AlMgCu/data/init.092", - "/root/data/AlMgCu/data/init.093", - "/root/data/AlMgCu/data/init.094", - "/root/data/AlMgCu/data/init.095", - "/root/data/AlMgCu/data/init.096", - "/root/data/AlMgCu/data/init.097", - "/root/data/AlMgCu/data/init.098", - "/root/data/AlMgCu/data/init.099", - "/root/data/AlMgCu/data/init.1000", - "/root/data/AlMgCu/data/init.1001", - "/root/data/AlMgCu/data/init.1002", - "/root/data/AlMgCu/data/init.1003", - "/root/data/AlMgCu/data/init.1005", - "/root/data/AlMgCu/data/init.1006", - "/root/data/AlMgCu/data/init.1007", - "/root/data/AlMgCu/data/init.1008", - "/root/data/AlMgCu/data/init.1009", - "/root/data/AlMgCu/data/init.101", - "/root/data/AlMgCu/data/init.1011", - "/root/data/AlMgCu/data/init.1012", - "/root/data/AlMgCu/data/init.1013", - "/root/data/AlMgCu/data/init.1014", - "/root/data/AlMgCu/data/init.1015", - "/root/data/AlMgCu/data/init.1016", - "/root/data/AlMgCu/data/init.1017", - "/root/data/AlMgCu/data/init.1018", - "/root/data/AlMgCu/data/init.1019", - "/root/data/AlMgCu/data/init.102", - "/root/data/AlMgCu/data/init.1020", - "/root/data/AlMgCu/data/init.1021", - "/root/data/AlMgCu/data/init.1023", - "/root/data/AlMgCu/data/init.1025", - "/root/data/AlMgCu/data/init.1026", - "/root/data/AlMgCu/data/init.1027", - "/root/data/AlMgCu/data/init.1028", - "/root/data/AlMgCu/data/init.1029", - "/root/data/AlMgCu/data/init.103", - "/root/data/AlMgCu/data/init.1030", - "/root/data/AlMgCu/data/init.1031", - "/root/data/AlMgCu/data/init.1032", - "/root/data/AlMgCu/data/init.1033", - "/root/data/AlMgCu/data/init.1035", - "/root/data/AlMgCu/data/init.1037", - "/root/data/AlMgCu/data/init.1038", - "/root/data/AlMgCu/data/init.1039", - "/root/data/AlMgCu/data/init.104", - "/root/data/AlMgCu/data/init.1040", - "/root/data/AlMgCu/data/init.1041", - "/root/data/AlMgCu/data/init.1042", - "/root/data/AlMgCu/data/init.1043", - "/root/data/AlMgCu/data/init.1044", - "/root/data/AlMgCu/data/init.1045", - "/root/data/AlMgCu/data/init.1046", - "/root/data/AlMgCu/data/init.1048", - "/root/data/AlMgCu/data/init.1049", - "/root/data/AlMgCu/data/init.105", - "/root/data/AlMgCu/data/init.1050", - "/root/data/AlMgCu/data/init.1051", - "/root/data/AlMgCu/data/init.1052", - "/root/data/AlMgCu/data/init.1053", - "/root/data/AlMgCu/data/init.1054", - "/root/data/AlMgCu/data/init.1055", - "/root/data/AlMgCu/data/init.1056", - "/root/data/AlMgCu/data/init.1058", - "/root/data/AlMgCu/data/init.1059", - "/root/data/AlMgCu/data/init.106", - "/root/data/AlMgCu/data/init.1060", - "/root/data/AlMgCu/data/init.1061", - "/root/data/AlMgCu/data/init.1062", - "/root/data/AlMgCu/data/init.1063", - "/root/data/AlMgCu/data/init.1064", - "/root/data/AlMgCu/data/init.1066", - "/root/data/AlMgCu/data/init.1067", - "/root/data/AlMgCu/data/init.107", - "/root/data/AlMgCu/data/init.1070", - "/root/data/AlMgCu/data/init.1071", - "/root/data/AlMgCu/data/init.1072", - "/root/data/AlMgCu/data/init.1073", - "/root/data/AlMgCu/data/init.1074", - "/root/data/AlMgCu/data/init.1075", - "/root/data/AlMgCu/data/init.1076", - "/root/data/AlMgCu/data/init.1077", - "/root/data/AlMgCu/data/init.1080", - "/root/data/AlMgCu/data/init.1082", - "/root/data/AlMgCu/data/init.1083", - "/root/data/AlMgCu/data/init.1084", - "/root/data/AlMgCu/data/init.1085", - "/root/data/AlMgCu/data/init.1086", - "/root/data/AlMgCu/data/init.1087", - "/root/data/AlMgCu/data/init.1088", - "/root/data/AlMgCu/data/init.1089", - "/root/data/AlMgCu/data/init.109", - "/root/data/AlMgCu/data/init.1090", - "/root/data/AlMgCu/data/init.1093", - "/root/data/AlMgCu/data/init.1094", - "/root/data/AlMgCu/data/init.1095", - "/root/data/AlMgCu/data/init.1096", - "/root/data/AlMgCu/data/init.1097", - "/root/data/AlMgCu/data/init.1098", - "/root/data/AlMgCu/data/init.1099", - "/root/data/AlMgCu/data/init.110", - "/root/data/AlMgCu/data/init.1101", - "/root/data/AlMgCu/data/init.1102", - "/root/data/AlMgCu/data/init.1103", - "/root/data/AlMgCu/data/init.1104", - "/root/data/AlMgCu/data/init.1105", - "/root/data/AlMgCu/data/init.1106", - "/root/data/AlMgCu/data/init.1107", - "/root/data/AlMgCu/data/init.1108", - "/root/data/AlMgCu/data/init.1109", - "/root/data/AlMgCu/data/init.111", - "/root/data/AlMgCu/data/init.1110", - "/root/data/AlMgCu/data/init.1111", - "/root/data/AlMgCu/data/init.1112", - "/root/data/AlMgCu/data/init.1113", - "/root/data/AlMgCu/data/init.1114", - "/root/data/AlMgCu/data/init.1115", - "/root/data/AlMgCu/data/init.1116", - "/root/data/AlMgCu/data/init.1117", - "/root/data/AlMgCu/data/init.1118", - "/root/data/AlMgCu/data/init.1119", - "/root/data/AlMgCu/data/init.112", - "/root/data/AlMgCu/data/init.1120", - "/root/data/AlMgCu/data/init.1121", - "/root/data/AlMgCu/data/init.1122", - "/root/data/AlMgCu/data/init.1123", - "/root/data/AlMgCu/data/init.1124", - "/root/data/AlMgCu/data/init.1125", - "/root/data/AlMgCu/data/init.1126", - "/root/data/AlMgCu/data/init.1127", - "/root/data/AlMgCu/data/init.1128", - "/root/data/AlMgCu/data/init.1129", - "/root/data/AlMgCu/data/init.113", - "/root/data/AlMgCu/data/init.1131", - "/root/data/AlMgCu/data/init.1132", - "/root/data/AlMgCu/data/init.1133", - "/root/data/AlMgCu/data/init.1134", - "/root/data/AlMgCu/data/init.1135", - "/root/data/AlMgCu/data/init.1136", - "/root/data/AlMgCu/data/init.1137", - "/root/data/AlMgCu/data/init.1138", - "/root/data/AlMgCu/data/init.114", - "/root/data/AlMgCu/data/init.1140", - "/root/data/AlMgCu/data/init.1143", - "/root/data/AlMgCu/data/init.1144", - "/root/data/AlMgCu/data/init.1145", - "/root/data/AlMgCu/data/init.1146", - "/root/data/AlMgCu/data/init.1147", - "/root/data/AlMgCu/data/init.1148", - "/root/data/AlMgCu/data/init.1149", - "/root/data/AlMgCu/data/init.1150", - "/root/data/AlMgCu/data/init.1151", - "/root/data/AlMgCu/data/init.1152", - "/root/data/AlMgCu/data/init.1153", - "/root/data/AlMgCu/data/init.1154", - "/root/data/AlMgCu/data/init.1155", - "/root/data/AlMgCu/data/init.1157", - "/root/data/AlMgCu/data/init.1158", - "/root/data/AlMgCu/data/init.1159", - "/root/data/AlMgCu/data/init.116", - "/root/data/AlMgCu/data/init.1160", - "/root/data/AlMgCu/data/init.1162", - "/root/data/AlMgCu/data/init.1163", - "/root/data/AlMgCu/data/init.1165", - "/root/data/AlMgCu/data/init.1166", - "/root/data/AlMgCu/data/init.1167", - "/root/data/AlMgCu/data/init.1168", - "/root/data/AlMgCu/data/init.1169", - "/root/data/AlMgCu/data/init.1170", - "/root/data/AlMgCu/data/init.1171", - "/root/data/AlMgCu/data/init.1172", - "/root/data/AlMgCu/data/init.1173", - "/root/data/AlMgCu/data/init.1174", - "/root/data/AlMgCu/data/init.1175", - "/root/data/AlMgCu/data/init.1176", - "/root/data/AlMgCu/data/init.1177", - "/root/data/AlMgCu/data/init.1178", - "/root/data/AlMgCu/data/init.1179", - "/root/data/AlMgCu/data/init.118", - "/root/data/AlMgCu/data/init.1181", - "/root/data/AlMgCu/data/init.1182", - "/root/data/AlMgCu/data/init.1183", - "/root/data/AlMgCu/data/init.1184", - "/root/data/AlMgCu/data/init.1185", - "/root/data/AlMgCu/data/init.1186", - "/root/data/AlMgCu/data/init.1187", - "/root/data/AlMgCu/data/init.1188", - "/root/data/AlMgCu/data/init.1189", - "/root/data/AlMgCu/data/init.119", - "/root/data/AlMgCu/data/init.1190", - "/root/data/AlMgCu/data/init.1191", - "/root/data/AlMgCu/data/init.1192", - "/root/data/AlMgCu/data/init.1193", - "/root/data/AlMgCu/data/init.1194", - "/root/data/AlMgCu/data/init.1195", - "/root/data/AlMgCu/data/init.1196", - "/root/data/AlMgCu/data/init.1197", - "/root/data/AlMgCu/data/init.1198", - "/root/data/AlMgCu/data/init.120", - "/root/data/AlMgCu/data/init.1200", - "/root/data/AlMgCu/data/init.1201", - "/root/data/AlMgCu/data/init.1202", - "/root/data/AlMgCu/data/init.1203", - "/root/data/AlMgCu/data/init.1204", - "/root/data/AlMgCu/data/init.1205", - "/root/data/AlMgCu/data/init.1206", - "/root/data/AlMgCu/data/init.1207", - "/root/data/AlMgCu/data/init.1208", - "/root/data/AlMgCu/data/init.1209", - "/root/data/AlMgCu/data/init.121", - "/root/data/AlMgCu/data/init.1210", - "/root/data/AlMgCu/data/init.1211", - "/root/data/AlMgCu/data/init.1212", - "/root/data/AlMgCu/data/init.1213", - "/root/data/AlMgCu/data/init.1214", - "/root/data/AlMgCu/data/init.1216", - "/root/data/AlMgCu/data/init.1217", - "/root/data/AlMgCu/data/init.1218", - "/root/data/AlMgCu/data/init.1219", - "/root/data/AlMgCu/data/init.122", - "/root/data/AlMgCu/data/init.1220", - "/root/data/AlMgCu/data/init.1221", - "/root/data/AlMgCu/data/init.1222", - "/root/data/AlMgCu/data/init.1223", - "/root/data/AlMgCu/data/init.1224", - "/root/data/AlMgCu/data/init.1225", - "/root/data/AlMgCu/data/init.1226", - "/root/data/AlMgCu/data/init.1227", - "/root/data/AlMgCu/data/init.1228", - "/root/data/AlMgCu/data/init.1229", - "/root/data/AlMgCu/data/init.123", - "/root/data/AlMgCu/data/init.1230", - "/root/data/AlMgCu/data/init.1231", - "/root/data/AlMgCu/data/init.1232", - "/root/data/AlMgCu/data/init.1233", - "/root/data/AlMgCu/data/init.1234", - "/root/data/AlMgCu/data/init.1235", - "/root/data/AlMgCu/data/init.1236", - "/root/data/AlMgCu/data/init.1237", - "/root/data/AlMgCu/data/init.1239", - "/root/data/AlMgCu/data/init.124", - "/root/data/AlMgCu/data/init.1240", - "/root/data/AlMgCu/data/init.1241", - "/root/data/AlMgCu/data/init.1242", - "/root/data/AlMgCu/data/init.1243", - "/root/data/AlMgCu/data/init.1244", - "/root/data/AlMgCu/data/init.1245", - "/root/data/AlMgCu/data/init.1246", - "/root/data/AlMgCu/data/init.1247", - "/root/data/AlMgCu/data/init.1248", - "/root/data/AlMgCu/data/init.1249", - "/root/data/AlMgCu/data/init.125", - "/root/data/AlMgCu/data/init.1250", - "/root/data/AlMgCu/data/init.1251", - "/root/data/AlMgCu/data/init.1252", - "/root/data/AlMgCu/data/init.1253", - "/root/data/AlMgCu/data/init.1254", - "/root/data/AlMgCu/data/init.1255", - "/root/data/AlMgCu/data/init.1256", - "/root/data/AlMgCu/data/init.1257", - "/root/data/AlMgCu/data/init.1258", - "/root/data/AlMgCu/data/init.1259", - "/root/data/AlMgCu/data/init.126", - "/root/data/AlMgCu/data/init.1260", - "/root/data/AlMgCu/data/init.1261", - "/root/data/AlMgCu/data/init.1262", - "/root/data/AlMgCu/data/init.1263", - "/root/data/AlMgCu/data/init.1264", - "/root/data/AlMgCu/data/init.1265", - "/root/data/AlMgCu/data/init.1266", - "/root/data/AlMgCu/data/init.1268", - "/root/data/AlMgCu/data/init.1269", - "/root/data/AlMgCu/data/init.127", - "/root/data/AlMgCu/data/init.1270", - "/root/data/AlMgCu/data/init.1271", - "/root/data/AlMgCu/data/init.1272", - "/root/data/AlMgCu/data/init.1273", - "/root/data/AlMgCu/data/init.1274", - "/root/data/AlMgCu/data/init.1275", - "/root/data/AlMgCu/data/init.1276", - "/root/data/AlMgCu/data/init.1277", - "/root/data/AlMgCu/data/init.1278", - "/root/data/AlMgCu/data/init.128", - "/root/data/AlMgCu/data/init.1280", - "/root/data/AlMgCu/data/init.1281", - "/root/data/AlMgCu/data/init.1282", - "/root/data/AlMgCu/data/init.1283", - "/root/data/AlMgCu/data/init.1284", - "/root/data/AlMgCu/data/init.1285", - "/root/data/AlMgCu/data/init.1286", - "/root/data/AlMgCu/data/init.1287", - "/root/data/AlMgCu/data/init.1288", - "/root/data/AlMgCu/data/init.129", - "/root/data/AlMgCu/data/init.131", - "/root/data/AlMgCu/data/init.132", - "/root/data/AlMgCu/data/init.134", - "/root/data/AlMgCu/data/init.135", - "/root/data/AlMgCu/data/init.136", - "/root/data/AlMgCu/data/init.137", - "/root/data/AlMgCu/data/init.138", - "/root/data/AlMgCu/data/init.139", - "/root/data/AlMgCu/data/init.140", - "/root/data/AlMgCu/data/init.141", - "/root/data/AlMgCu/data/init.142", - "/root/data/AlMgCu/data/init.143", - "/root/data/AlMgCu/data/init.144", - "/root/data/AlMgCu/data/init.146", - "/root/data/AlMgCu/data/init.147", - "/root/data/AlMgCu/data/init.148", - "/root/data/AlMgCu/data/init.149", - "/root/data/AlMgCu/data/init.150", - "/root/data/AlMgCu/data/init.152", - "/root/data/AlMgCu/data/init.153", - "/root/data/AlMgCu/data/init.154", - "/root/data/AlMgCu/data/init.155", - "/root/data/AlMgCu/data/init.156", - "/root/data/AlMgCu/data/init.157", - "/root/data/AlMgCu/data/init.158", - "/root/data/AlMgCu/data/init.159", - "/root/data/AlMgCu/data/init.160", - "/root/data/AlMgCu/data/init.161", - "/root/data/AlMgCu/data/init.162", - "/root/data/AlMgCu/data/init.164", - "/root/data/AlMgCu/data/init.165", - "/root/data/AlMgCu/data/init.166", - "/root/data/AlMgCu/data/init.167", - "/root/data/AlMgCu/data/init.168", - "/root/data/AlMgCu/data/init.169", - "/root/data/AlMgCu/data/init.170", - "/root/data/AlMgCu/data/init.171", - "/root/data/AlMgCu/data/init.172", - "/root/data/AlMgCu/data/init.173", - "/root/data/AlMgCu/data/init.174", - "/root/data/AlMgCu/data/init.175", - "/root/data/AlMgCu/data/init.176", - "/root/data/AlMgCu/data/init.177", - "/root/data/AlMgCu/data/init.178", - "/root/data/AlMgCu/data/init.179", - "/root/data/AlMgCu/data/init.180", - "/root/data/AlMgCu/data/init.181", - "/root/data/AlMgCu/data/init.182", - "/root/data/AlMgCu/data/init.183", - "/root/data/AlMgCu/data/init.184", - "/root/data/AlMgCu/data/init.185", - "/root/data/AlMgCu/data/init.186", - "/root/data/AlMgCu/data/init.187", - "/root/data/AlMgCu/data/init.188", - "/root/data/AlMgCu/data/init.189", - "/root/data/AlMgCu/data/init.190", - "/root/data/AlMgCu/data/init.191", - "/root/data/AlMgCu/data/init.192", - "/root/data/AlMgCu/data/init.193", - "/root/data/AlMgCu/data/init.194", - "/root/data/AlMgCu/data/init.195", - "/root/data/AlMgCu/data/init.196", - "/root/data/AlMgCu/data/init.197", - "/root/data/AlMgCu/data/init.198", - "/root/data/AlMgCu/data/init.199", - "/root/data/AlMgCu/data/init.200", - "/root/data/AlMgCu/data/init.201", - "/root/data/AlMgCu/data/init.202", - "/root/data/AlMgCu/data/init.203", - "/root/data/AlMgCu/data/init.204", - "/root/data/AlMgCu/data/init.205", - "/root/data/AlMgCu/data/init.206", - "/root/data/AlMgCu/data/init.207", - "/root/data/AlMgCu/data/init.208", - "/root/data/AlMgCu/data/init.210", - "/root/data/AlMgCu/data/init.211", - "/root/data/AlMgCu/data/init.212", - "/root/data/AlMgCu/data/init.213", - "/root/data/AlMgCu/data/init.214", - "/root/data/AlMgCu/data/init.217", - "/root/data/AlMgCu/data/init.218", - "/root/data/AlMgCu/data/init.219", - "/root/data/AlMgCu/data/init.220", - "/root/data/AlMgCu/data/init.221", - "/root/data/AlMgCu/data/init.222", - "/root/data/AlMgCu/data/init.223", - "/root/data/AlMgCu/data/init.224", - "/root/data/AlMgCu/data/init.226", - "/root/data/AlMgCu/data/init.227", - "/root/data/AlMgCu/data/init.228", - "/root/data/AlMgCu/data/init.229", - "/root/data/AlMgCu/data/init.230", - "/root/data/AlMgCu/data/init.231", - "/root/data/AlMgCu/data/init.232", - "/root/data/AlMgCu/data/init.233", - "/root/data/AlMgCu/data/init.234", - "/root/data/AlMgCu/data/init.235", - "/root/data/AlMgCu/data/init.236", - "/root/data/AlMgCu/data/init.237", - "/root/data/AlMgCu/data/init.238", - "/root/data/AlMgCu/data/init.239", - "/root/data/AlMgCu/data/init.240", - "/root/data/AlMgCu/data/init.241", - "/root/data/AlMgCu/data/init.242", - "/root/data/AlMgCu/data/init.243", - "/root/data/AlMgCu/data/init.244", - "/root/data/AlMgCu/data/init.245", - "/root/data/AlMgCu/data/init.246", - "/root/data/AlMgCu/data/init.247", - "/root/data/AlMgCu/data/init.248", - "/root/data/AlMgCu/data/init.250", - "/root/data/AlMgCu/data/init.251", - "/root/data/AlMgCu/data/init.252", - "/root/data/AlMgCu/data/init.253", - "/root/data/AlMgCu/data/init.254", - "/root/data/AlMgCu/data/init.255", - "/root/data/AlMgCu/data/init.256", - "/root/data/AlMgCu/data/init.257", - "/root/data/AlMgCu/data/init.258", - "/root/data/AlMgCu/data/init.259", - "/root/data/AlMgCu/data/init.260", - "/root/data/AlMgCu/data/init.262", - "/root/data/AlMgCu/data/init.263", - "/root/data/AlMgCu/data/init.264", - "/root/data/AlMgCu/data/init.265", - "/root/data/AlMgCu/data/init.266", - "/root/data/AlMgCu/data/init.267", - "/root/data/AlMgCu/data/init.269", - "/root/data/AlMgCu/data/init.270", - "/root/data/AlMgCu/data/init.271", - "/root/data/AlMgCu/data/init.273", - "/root/data/AlMgCu/data/init.274", - "/root/data/AlMgCu/data/init.275", - "/root/data/AlMgCu/data/init.276", - "/root/data/AlMgCu/data/init.277", - "/root/data/AlMgCu/data/init.278", - "/root/data/AlMgCu/data/init.279", - "/root/data/AlMgCu/data/init.280", - "/root/data/AlMgCu/data/init.281", - "/root/data/AlMgCu/data/init.282", - "/root/data/AlMgCu/data/init.283", - "/root/data/AlMgCu/data/init.284", - "/root/data/AlMgCu/data/init.285", - "/root/data/AlMgCu/data/init.287", - "/root/data/AlMgCu/data/init.288", - "/root/data/AlMgCu/data/init.290", - "/root/data/AlMgCu/data/init.291", - "/root/data/AlMgCu/data/init.292", - "/root/data/AlMgCu/data/init.293", - "/root/data/AlMgCu/data/init.294", - "/root/data/AlMgCu/data/init.295", - "/root/data/AlMgCu/data/init.296", - "/root/data/AlMgCu/data/init.297", - "/root/data/AlMgCu/data/init.298", - "/root/data/AlMgCu/data/init.299", - "/root/data/AlMgCu/data/init.302", - "/root/data/AlMgCu/data/init.303", - "/root/data/AlMgCu/data/init.304", - "/root/data/AlMgCu/data/init.305", - "/root/data/AlMgCu/data/init.306", - "/root/data/AlMgCu/data/init.307", - "/root/data/AlMgCu/data/init.308", - "/root/data/AlMgCu/data/init.309", - "/root/data/AlMgCu/data/init.310", - "/root/data/AlMgCu/data/init.311", - "/root/data/AlMgCu/data/init.312", - "/root/data/AlMgCu/data/init.313", - "/root/data/AlMgCu/data/init.314", - "/root/data/AlMgCu/data/init.315", - "/root/data/AlMgCu/data/init.316", - "/root/data/AlMgCu/data/init.317", - "/root/data/AlMgCu/data/init.318", - "/root/data/AlMgCu/data/init.319", - "/root/data/AlMgCu/data/init.320", - "/root/data/AlMgCu/data/init.321", - "/root/data/AlMgCu/data/init.324", - "/root/data/AlMgCu/data/init.325", - "/root/data/AlMgCu/data/init.326", - "/root/data/AlMgCu/data/init.327", - "/root/data/AlMgCu/data/init.328", - "/root/data/AlMgCu/data/init.329", - "/root/data/AlMgCu/data/init.330", - "/root/data/AlMgCu/data/init.331", - "/root/data/AlMgCu/data/init.332", - "/root/data/AlMgCu/data/init.333", - "/root/data/AlMgCu/data/init.334", - "/root/data/AlMgCu/data/init.336", - "/root/data/AlMgCu/data/init.337", - "/root/data/AlMgCu/data/init.338", - "/root/data/AlMgCu/data/init.339", - "/root/data/AlMgCu/data/init.340", - "/root/data/AlMgCu/data/init.341", - "/root/data/AlMgCu/data/init.342", - "/root/data/AlMgCu/data/init.344", - "/root/data/AlMgCu/data/init.345", - "/root/data/AlMgCu/data/init.346", - "/root/data/AlMgCu/data/init.347", - "/root/data/AlMgCu/data/init.348", - "/root/data/AlMgCu/data/init.349", - "/root/data/AlMgCu/data/init.350", - "/root/data/AlMgCu/data/init.351", - "/root/data/AlMgCu/data/init.352", - "/root/data/AlMgCu/data/init.353", - "/root/data/AlMgCu/data/init.355", - "/root/data/AlMgCu/data/init.356", - "/root/data/AlMgCu/data/init.357", - "/root/data/AlMgCu/data/init.358", - "/root/data/AlMgCu/data/init.359", - "/root/data/AlMgCu/data/init.361", - "/root/data/AlMgCu/data/init.362", - "/root/data/AlMgCu/data/init.363", - "/root/data/AlMgCu/data/init.364", - "/root/data/AlMgCu/data/init.365", - "/root/data/AlMgCu/data/init.366", - "/root/data/AlMgCu/data/init.367", - "/root/data/AlMgCu/data/init.368", - "/root/data/AlMgCu/data/init.369", - "/root/data/AlMgCu/data/init.370", - "/root/data/AlMgCu/data/init.371", - "/root/data/AlMgCu/data/init.372", - "/root/data/AlMgCu/data/init.373", - "/root/data/AlMgCu/data/init.374", - "/root/data/AlMgCu/data/init.375", - "/root/data/AlMgCu/data/init.376", - "/root/data/AlMgCu/data/init.377", - "/root/data/AlMgCu/data/init.378", - "/root/data/AlMgCu/data/init.379", - "/root/data/AlMgCu/data/init.380", - "/root/data/AlMgCu/data/init.381", - "/root/data/AlMgCu/data/init.382", - "/root/data/AlMgCu/data/init.383", - "/root/data/AlMgCu/data/init.384", - "/root/data/AlMgCu/data/init.385", - "/root/data/AlMgCu/data/init.386", - "/root/data/AlMgCu/data/init.387", - "/root/data/AlMgCu/data/init.388", - "/root/data/AlMgCu/data/init.389", - "/root/data/AlMgCu/data/init.390", - "/root/data/AlMgCu/data/init.391", - "/root/data/AlMgCu/data/init.392", - "/root/data/AlMgCu/data/init.393", - "/root/data/AlMgCu/data/init.394", - "/root/data/AlMgCu/data/init.395", - "/root/data/AlMgCu/data/init.396", - "/root/data/AlMgCu/data/init.397", - "/root/data/AlMgCu/data/init.398", - "/root/data/AlMgCu/data/init.399", - "/root/data/AlMgCu/data/init.400", - "/root/data/AlMgCu/data/init.401", - "/root/data/AlMgCu/data/init.402", - "/root/data/AlMgCu/data/init.403", - "/root/data/AlMgCu/data/init.404", - "/root/data/AlMgCu/data/init.406", - "/root/data/AlMgCu/data/init.407", - "/root/data/AlMgCu/data/init.408", - "/root/data/AlMgCu/data/init.409", - "/root/data/AlMgCu/data/init.410", - "/root/data/AlMgCu/data/init.411", - "/root/data/AlMgCu/data/init.412", - "/root/data/AlMgCu/data/init.413", - "/root/data/AlMgCu/data/init.414", - "/root/data/AlMgCu/data/init.415", - "/root/data/AlMgCu/data/init.416", - "/root/data/AlMgCu/data/init.417", - "/root/data/AlMgCu/data/init.418", - "/root/data/AlMgCu/data/init.419", - "/root/data/AlMgCu/data/init.420", - "/root/data/AlMgCu/data/init.421", - "/root/data/AlMgCu/data/init.422", - "/root/data/AlMgCu/data/init.423", - "/root/data/AlMgCu/data/init.426", - "/root/data/AlMgCu/data/init.428", - "/root/data/AlMgCu/data/init.429", - "/root/data/AlMgCu/data/init.430", - "/root/data/AlMgCu/data/init.431", - "/root/data/AlMgCu/data/init.432", - "/root/data/AlMgCu/data/init.433", - "/root/data/AlMgCu/data/init.434", - "/root/data/AlMgCu/data/init.435", - "/root/data/AlMgCu/data/init.436", - "/root/data/AlMgCu/data/init.438", - "/root/data/AlMgCu/data/init.439", - "/root/data/AlMgCu/data/init.440", - "/root/data/AlMgCu/data/init.441", - "/root/data/AlMgCu/data/init.442", - "/root/data/AlMgCu/data/init.443", - "/root/data/AlMgCu/data/init.444", - "/root/data/AlMgCu/data/init.445", - "/root/data/AlMgCu/data/init.446", - "/root/data/AlMgCu/data/init.448", - "/root/data/AlMgCu/data/init.449", - "/root/data/AlMgCu/data/init.451", - "/root/data/AlMgCu/data/init.453", - "/root/data/AlMgCu/data/init.454", - "/root/data/AlMgCu/data/init.456", - "/root/data/AlMgCu/data/init.457", - "/root/data/AlMgCu/data/init.458", - "/root/data/AlMgCu/data/init.459", - "/root/data/AlMgCu/data/init.460", - "/root/data/AlMgCu/data/init.461", - "/root/data/AlMgCu/data/init.462", - "/root/data/AlMgCu/data/init.463", - "/root/data/AlMgCu/data/init.464", - "/root/data/AlMgCu/data/init.466", - "/root/data/AlMgCu/data/init.467", - "/root/data/AlMgCu/data/init.468", - "/root/data/AlMgCu/data/init.469", - "/root/data/AlMgCu/data/init.470", - "/root/data/AlMgCu/data/init.471", - "/root/data/AlMgCu/data/init.472", - "/root/data/AlMgCu/data/init.473", - "/root/data/AlMgCu/data/init.474", - "/root/data/AlMgCu/data/init.475", - "/root/data/AlMgCu/data/init.476", - "/root/data/AlMgCu/data/init.478", - "/root/data/AlMgCu/data/init.479", - "/root/data/AlMgCu/data/init.480", - "/root/data/AlMgCu/data/init.482", - "/root/data/AlMgCu/data/init.483", - "/root/data/AlMgCu/data/init.484", - "/root/data/AlMgCu/data/init.485", - "/root/data/AlMgCu/data/init.486", - "/root/data/AlMgCu/data/init.487", - "/root/data/AlMgCu/data/init.488", - "/root/data/AlMgCu/data/init.489", - "/root/data/AlMgCu/data/init.490", - "/root/data/AlMgCu/data/init.491", - "/root/data/AlMgCu/data/init.492", - "/root/data/AlMgCu/data/init.493", - "/root/data/AlMgCu/data/init.494", - "/root/data/AlMgCu/data/init.495", - "/root/data/AlMgCu/data/init.496", - "/root/data/AlMgCu/data/init.497", - "/root/data/AlMgCu/data/init.499", - "/root/data/AlMgCu/data/init.502", - "/root/data/AlMgCu/data/init.503", - "/root/data/AlMgCu/data/init.504", - "/root/data/AlMgCu/data/init.505", - "/root/data/AlMgCu/data/init.506", - "/root/data/AlMgCu/data/init.507", - "/root/data/AlMgCu/data/init.508", - "/root/data/AlMgCu/data/init.509", - "/root/data/AlMgCu/data/init.510", - "/root/data/AlMgCu/data/init.511", - "/root/data/AlMgCu/data/init.512", - "/root/data/AlMgCu/data/init.513", - "/root/data/AlMgCu/data/init.514", - "/root/data/AlMgCu/data/init.515", - "/root/data/AlMgCu/data/init.516", - "/root/data/AlMgCu/data/init.517", - "/root/data/AlMgCu/data/init.518", - "/root/data/AlMgCu/data/init.519", - "/root/data/AlMgCu/data/init.520", - "/root/data/AlMgCu/data/init.521", - "/root/data/AlMgCu/data/init.522", - "/root/data/AlMgCu/data/init.523", - "/root/data/AlMgCu/data/init.524", - "/root/data/AlMgCu/data/init.527", - "/root/data/AlMgCu/data/init.528", - "/root/data/AlMgCu/data/init.529", - "/root/data/AlMgCu/data/init.530", - "/root/data/AlMgCu/data/init.532", - "/root/data/AlMgCu/data/init.533", - "/root/data/AlMgCu/data/init.534", - "/root/data/AlMgCu/data/init.535", - "/root/data/AlMgCu/data/init.536", - "/root/data/AlMgCu/data/init.537", - "/root/data/AlMgCu/data/init.538", - "/root/data/AlMgCu/data/init.539", - "/root/data/AlMgCu/data/init.540", - "/root/data/AlMgCu/data/init.541", - "/root/data/AlMgCu/data/init.542", - "/root/data/AlMgCu/data/init.543", - "/root/data/AlMgCu/data/init.544", - "/root/data/AlMgCu/data/init.546", - "/root/data/AlMgCu/data/init.547", - "/root/data/AlMgCu/data/init.548", - "/root/data/AlMgCu/data/init.549", - "/root/data/AlMgCu/data/init.551", - "/root/data/AlMgCu/data/init.552", - "/root/data/AlMgCu/data/init.553", - "/root/data/AlMgCu/data/init.554", - "/root/data/AlMgCu/data/init.555", - "/root/data/AlMgCu/data/init.556", - "/root/data/AlMgCu/data/init.557", - "/root/data/AlMgCu/data/init.558", - "/root/data/AlMgCu/data/init.559", - "/root/data/AlMgCu/data/init.560", - "/root/data/AlMgCu/data/init.561", - "/root/data/AlMgCu/data/init.563", - "/root/data/AlMgCu/data/init.565", - "/root/data/AlMgCu/data/init.566", - "/root/data/AlMgCu/data/init.567", - "/root/data/AlMgCu/data/init.569", - "/root/data/AlMgCu/data/init.570", - "/root/data/AlMgCu/data/init.571", - "/root/data/AlMgCu/data/init.572", - "/root/data/AlMgCu/data/init.573", - "/root/data/AlMgCu/data/init.574", - "/root/data/AlMgCu/data/init.575", - "/root/data/AlMgCu/data/init.576", - "/root/data/AlMgCu/data/init.577", - "/root/data/AlMgCu/data/init.578", - "/root/data/AlMgCu/data/init.579", - "/root/data/AlMgCu/data/init.580", - "/root/data/AlMgCu/data/init.581", - "/root/data/AlMgCu/data/init.582", - "/root/data/AlMgCu/data/init.583", - "/root/data/AlMgCu/data/init.584", - "/root/data/AlMgCu/data/init.585", - "/root/data/AlMgCu/data/init.587", - "/root/data/AlMgCu/data/init.588", - "/root/data/AlMgCu/data/init.589", - "/root/data/AlMgCu/data/init.590", - "/root/data/AlMgCu/data/init.591", - "/root/data/AlMgCu/data/init.592", - "/root/data/AlMgCu/data/init.593", - "/root/data/AlMgCu/data/init.594", - "/root/data/AlMgCu/data/init.595", - "/root/data/AlMgCu/data/init.596", - "/root/data/AlMgCu/data/init.597", - "/root/data/AlMgCu/data/init.598", - "/root/data/AlMgCu/data/init.599", - "/root/data/AlMgCu/data/init.600", - "/root/data/AlMgCu/data/init.601", - "/root/data/AlMgCu/data/init.602", - "/root/data/AlMgCu/data/init.603", - "/root/data/AlMgCu/data/init.604", - "/root/data/AlMgCu/data/init.605", - "/root/data/AlMgCu/data/init.606", - "/root/data/AlMgCu/data/init.607", - "/root/data/AlMgCu/data/init.608", - "/root/data/AlMgCu/data/init.609", - "/root/data/AlMgCu/data/init.610", - "/root/data/AlMgCu/data/init.611", - "/root/data/AlMgCu/data/init.613", - "/root/data/AlMgCu/data/init.614", - "/root/data/AlMgCu/data/init.615", - "/root/data/AlMgCu/data/init.616", - "/root/data/AlMgCu/data/init.617", - "/root/data/AlMgCu/data/init.618", - "/root/data/AlMgCu/data/init.619", - "/root/data/AlMgCu/data/init.620", - "/root/data/AlMgCu/data/init.621", - "/root/data/AlMgCu/data/init.622", - "/root/data/AlMgCu/data/init.624", - "/root/data/AlMgCu/data/init.625", - "/root/data/AlMgCu/data/init.626", - "/root/data/AlMgCu/data/init.627", - "/root/data/AlMgCu/data/init.628", - "/root/data/AlMgCu/data/init.629", - "/root/data/AlMgCu/data/init.630", - "/root/data/AlMgCu/data/init.631", - "/root/data/AlMgCu/data/init.632", - "/root/data/AlMgCu/data/init.633", - "/root/data/AlMgCu/data/init.634", - "/root/data/AlMgCu/data/init.635", - "/root/data/AlMgCu/data/init.636", - "/root/data/AlMgCu/data/init.638", - "/root/data/AlMgCu/data/init.639", - "/root/data/AlMgCu/data/init.640", - "/root/data/AlMgCu/data/init.641", - "/root/data/AlMgCu/data/init.642", - "/root/data/AlMgCu/data/init.643", - "/root/data/AlMgCu/data/init.644", - "/root/data/AlMgCu/data/init.645", - "/root/data/AlMgCu/data/init.646", - "/root/data/AlMgCu/data/init.647", - "/root/data/AlMgCu/data/init.648", - "/root/data/AlMgCu/data/init.649", - "/root/data/AlMgCu/data/init.650", - "/root/data/AlMgCu/data/init.651", - "/root/data/AlMgCu/data/init.652", - "/root/data/AlMgCu/data/init.653", - "/root/data/AlMgCu/data/init.654", - "/root/data/AlMgCu/data/init.656", - "/root/data/AlMgCu/data/init.657", - "/root/data/AlMgCu/data/init.658", - "/root/data/AlMgCu/data/init.659", - "/root/data/AlMgCu/data/init.661", - "/root/data/AlMgCu/data/init.663", - "/root/data/AlMgCu/data/init.664", - "/root/data/AlMgCu/data/init.665", - "/root/data/AlMgCu/data/init.666", - "/root/data/AlMgCu/data/init.667", - "/root/data/AlMgCu/data/init.668", - "/root/data/AlMgCu/data/init.669", - "/root/data/AlMgCu/data/init.671", - "/root/data/AlMgCu/data/init.672", - "/root/data/AlMgCu/data/init.673", - "/root/data/AlMgCu/data/init.674", - "/root/data/AlMgCu/data/init.675", - "/root/data/AlMgCu/data/init.676", - "/root/data/AlMgCu/data/init.677", - "/root/data/AlMgCu/data/init.678", - "/root/data/AlMgCu/data/init.679", - "/root/data/AlMgCu/data/init.680", - "/root/data/AlMgCu/data/init.681", - "/root/data/AlMgCu/data/init.682", - "/root/data/AlMgCu/data/init.683", - "/root/data/AlMgCu/data/init.684", - "/root/data/AlMgCu/data/init.685", - "/root/data/AlMgCu/data/init.686", - "/root/data/AlMgCu/data/init.687", - "/root/data/AlMgCu/data/init.689", - "/root/data/AlMgCu/data/init.690", - "/root/data/AlMgCu/data/init.691", - "/root/data/AlMgCu/data/init.692", - "/root/data/AlMgCu/data/init.693", - "/root/data/AlMgCu/data/init.694", - "/root/data/AlMgCu/data/init.695", - "/root/data/AlMgCu/data/init.696", - "/root/data/AlMgCu/data/init.697", - "/root/data/AlMgCu/data/init.698", - "/root/data/AlMgCu/data/init.699", - "/root/data/AlMgCu/data/init.700", - "/root/data/AlMgCu/data/init.701", - "/root/data/AlMgCu/data/init.702", - "/root/data/AlMgCu/data/init.703", - "/root/data/AlMgCu/data/init.704", - "/root/data/AlMgCu/data/init.706", - "/root/data/AlMgCu/data/init.707", - "/root/data/AlMgCu/data/init.708", - "/root/data/AlMgCu/data/init.709", - "/root/data/AlMgCu/data/init.710", - "/root/data/AlMgCu/data/init.712", - "/root/data/AlMgCu/data/init.713", - "/root/data/AlMgCu/data/init.714", - "/root/data/AlMgCu/data/init.715", - "/root/data/AlMgCu/data/init.717", - "/root/data/AlMgCu/data/init.718", - "/root/data/AlMgCu/data/init.719", - "/root/data/AlMgCu/data/init.720", - "/root/data/AlMgCu/data/init.721", - "/root/data/AlMgCu/data/init.722", - "/root/data/AlMgCu/data/init.724", - "/root/data/AlMgCu/data/init.725", - "/root/data/AlMgCu/data/init.726", - "/root/data/AlMgCu/data/init.727", - "/root/data/AlMgCu/data/init.728", - "/root/data/AlMgCu/data/init.729", - "/root/data/AlMgCu/data/init.730", - "/root/data/AlMgCu/data/init.731", - "/root/data/AlMgCu/data/init.732", - "/root/data/AlMgCu/data/init.733", - "/root/data/AlMgCu/data/init.734", - "/root/data/AlMgCu/data/init.735", - "/root/data/AlMgCu/data/init.736", - "/root/data/AlMgCu/data/init.737", - "/root/data/AlMgCu/data/init.738", - "/root/data/AlMgCu/data/init.739", - "/root/data/AlMgCu/data/init.740", - "/root/data/AlMgCu/data/init.741", - "/root/data/AlMgCu/data/init.743", - "/root/data/AlMgCu/data/init.744", - "/root/data/AlMgCu/data/init.745", - "/root/data/AlMgCu/data/init.746", - "/root/data/AlMgCu/data/init.747", - "/root/data/AlMgCu/data/init.749", - "/root/data/AlMgCu/data/init.751", - "/root/data/AlMgCu/data/init.752", - "/root/data/AlMgCu/data/init.753", - "/root/data/AlMgCu/data/init.754", - "/root/data/AlMgCu/data/init.755", - "/root/data/AlMgCu/data/init.756", - "/root/data/AlMgCu/data/init.757", - "/root/data/AlMgCu/data/init.758", - "/root/data/AlMgCu/data/init.759", - "/root/data/AlMgCu/data/init.760", - "/root/data/AlMgCu/data/init.762", - "/root/data/AlMgCu/data/init.764", - "/root/data/AlMgCu/data/init.765", - "/root/data/AlMgCu/data/init.766", - "/root/data/AlMgCu/data/init.767", - "/root/data/AlMgCu/data/init.768", - "/root/data/AlMgCu/data/init.769", - "/root/data/AlMgCu/data/init.770", - "/root/data/AlMgCu/data/init.772", - "/root/data/AlMgCu/data/init.773", - "/root/data/AlMgCu/data/init.774", - "/root/data/AlMgCu/data/init.775", - "/root/data/AlMgCu/data/init.776", - "/root/data/AlMgCu/data/init.777", - "/root/data/AlMgCu/data/init.778", - "/root/data/AlMgCu/data/init.779", - "/root/data/AlMgCu/data/init.780", - "/root/data/AlMgCu/data/init.781", - "/root/data/AlMgCu/data/init.783", - "/root/data/AlMgCu/data/init.784", - "/root/data/AlMgCu/data/init.785", - "/root/data/AlMgCu/data/init.786", - "/root/data/AlMgCu/data/init.787", - "/root/data/AlMgCu/data/init.788", - "/root/data/AlMgCu/data/init.789", - "/root/data/AlMgCu/data/init.790", - "/root/data/AlMgCu/data/init.791", - "/root/data/AlMgCu/data/init.792", - "/root/data/AlMgCu/data/init.793", - "/root/data/AlMgCu/data/init.794", - "/root/data/AlMgCu/data/init.795", - "/root/data/AlMgCu/data/init.796", - "/root/data/AlMgCu/data/init.797", - "/root/data/AlMgCu/data/init.799", - "/root/data/AlMgCu/data/init.800", - "/root/data/AlMgCu/data/init.801", - "/root/data/AlMgCu/data/init.802", - "/root/data/AlMgCu/data/init.803", - "/root/data/AlMgCu/data/init.804", - "/root/data/AlMgCu/data/init.805", - "/root/data/AlMgCu/data/init.806", - "/root/data/AlMgCu/data/init.807", - "/root/data/AlMgCu/data/init.808", - "/root/data/AlMgCu/data/init.809", - "/root/data/AlMgCu/data/init.810", - "/root/data/AlMgCu/data/init.811", - "/root/data/AlMgCu/data/init.812", - "/root/data/AlMgCu/data/init.813", - "/root/data/AlMgCu/data/init.814", - "/root/data/AlMgCu/data/init.816", - "/root/data/AlMgCu/data/init.817", - "/root/data/AlMgCu/data/init.819", - "/root/data/AlMgCu/data/init.820", - "/root/data/AlMgCu/data/init.821", - "/root/data/AlMgCu/data/init.822", - "/root/data/AlMgCu/data/init.824", - "/root/data/AlMgCu/data/init.825", - "/root/data/AlMgCu/data/init.826", - "/root/data/AlMgCu/data/init.827", - "/root/data/AlMgCu/data/init.830", - "/root/data/AlMgCu/data/init.832", - "/root/data/AlMgCu/data/init.833", - "/root/data/AlMgCu/data/init.834", - "/root/data/AlMgCu/data/init.835", - "/root/data/AlMgCu/data/init.836", - "/root/data/AlMgCu/data/init.837", - "/root/data/AlMgCu/data/init.838", - "/root/data/AlMgCu/data/init.839", - "/root/data/AlMgCu/data/init.840", - "/root/data/AlMgCu/data/init.842", - "/root/data/AlMgCu/data/init.843", - "/root/data/AlMgCu/data/init.844", - "/root/data/AlMgCu/data/init.845", - "/root/data/AlMgCu/data/init.847", - "/root/data/AlMgCu/data/init.848", - "/root/data/AlMgCu/data/init.849", - "/root/data/AlMgCu/data/init.850", - "/root/data/AlMgCu/data/init.851", - "/root/data/AlMgCu/data/init.852", - "/root/data/AlMgCu/data/init.853", - "/root/data/AlMgCu/data/init.854", - "/root/data/AlMgCu/data/init.855", - "/root/data/AlMgCu/data/init.856", - "/root/data/AlMgCu/data/init.857", - "/root/data/AlMgCu/data/init.858", - "/root/data/AlMgCu/data/init.859", - "/root/data/AlMgCu/data/init.860", - "/root/data/AlMgCu/data/init.862", - "/root/data/AlMgCu/data/init.863", - "/root/data/AlMgCu/data/init.864", - "/root/data/AlMgCu/data/init.865", - "/root/data/AlMgCu/data/init.866", - "/root/data/AlMgCu/data/init.867", - "/root/data/AlMgCu/data/init.868", - "/root/data/AlMgCu/data/init.869", - "/root/data/AlMgCu/data/init.870", - "/root/data/AlMgCu/data/init.871", - "/root/data/AlMgCu/data/init.872", - "/root/data/AlMgCu/data/init.873", - "/root/data/AlMgCu/data/init.874", - "/root/data/AlMgCu/data/init.875", - "/root/data/AlMgCu/data/init.876", - "/root/data/AlMgCu/data/init.877", - "/root/data/AlMgCu/data/init.879", - "/root/data/AlMgCu/data/init.880", - "/root/data/AlMgCu/data/init.881", - "/root/data/AlMgCu/data/init.882", - "/root/data/AlMgCu/data/init.883", - "/root/data/AlMgCu/data/init.884", - "/root/data/AlMgCu/data/init.885", - "/root/data/AlMgCu/data/init.886", - "/root/data/AlMgCu/data/init.887", - "/root/data/AlMgCu/data/init.888", - "/root/data/AlMgCu/data/init.889", - "/root/data/AlMgCu/data/init.890", - "/root/data/AlMgCu/data/init.891", - "/root/data/AlMgCu/data/init.892", - "/root/data/AlMgCu/data/init.894", - "/root/data/AlMgCu/data/init.895", - "/root/data/AlMgCu/data/init.896", - "/root/data/AlMgCu/data/init.897", - "/root/data/AlMgCu/data/init.898", - "/root/data/AlMgCu/data/init.899", - "/root/data/AlMgCu/data/init.900", - "/root/data/AlMgCu/data/init.901", - "/root/data/AlMgCu/data/init.902", - "/root/data/AlMgCu/data/init.903", - "/root/data/AlMgCu/data/init.905", - "/root/data/AlMgCu/data/init.906", - "/root/data/AlMgCu/data/init.907", - "/root/data/AlMgCu/data/init.908", - "/root/data/AlMgCu/data/init.910", - "/root/data/AlMgCu/data/init.911", - "/root/data/AlMgCu/data/init.912", - "/root/data/AlMgCu/data/init.913", - "/root/data/AlMgCu/data/init.914", - "/root/data/AlMgCu/data/init.915", - "/root/data/AlMgCu/data/init.916", - "/root/data/AlMgCu/data/init.917", - "/root/data/AlMgCu/data/init.918", - "/root/data/AlMgCu/data/init.919", - "/root/data/AlMgCu/data/init.922", - "/root/data/AlMgCu/data/init.923", - "/root/data/AlMgCu/data/init.924", - "/root/data/AlMgCu/data/init.925", - "/root/data/AlMgCu/data/init.926", - "/root/data/AlMgCu/data/init.927", - "/root/data/AlMgCu/data/init.928", - "/root/data/AlMgCu/data/init.929", - "/root/data/AlMgCu/data/init.930", - "/root/data/AlMgCu/data/init.931", - "/root/data/AlMgCu/data/init.933", - "/root/data/AlMgCu/data/init.934", - "/root/data/AlMgCu/data/init.935", - "/root/data/AlMgCu/data/init.937", - "/root/data/AlMgCu/data/init.938", - "/root/data/AlMgCu/data/init.939", - "/root/data/AlMgCu/data/init.940", - "/root/data/AlMgCu/data/init.941", - "/root/data/AlMgCu/data/init.942", - "/root/data/AlMgCu/data/init.943", - "/root/data/AlMgCu/data/init.944", - "/root/data/AlMgCu/data/init.945", - "/root/data/AlMgCu/data/init.946", - "/root/data/AlMgCu/data/init.947", - "/root/data/AlMgCu/data/init.948", - "/root/data/AlMgCu/data/init.949", - "/root/data/AlMgCu/data/init.950", - "/root/data/AlMgCu/data/init.951", - "/root/data/AlMgCu/data/init.952", - "/root/data/AlMgCu/data/init.953", - "/root/data/AlMgCu/data/init.955", - "/root/data/AlMgCu/data/init.956", - "/root/data/AlMgCu/data/init.957", - "/root/data/AlMgCu/data/init.958", - "/root/data/AlMgCu/data/init.959", - "/root/data/AlMgCu/data/init.960", - "/root/data/AlMgCu/data/init.961", - "/root/data/AlMgCu/data/init.962", - "/root/data/AlMgCu/data/init.963", - "/root/data/AlMgCu/data/init.964", - "/root/data/AlMgCu/data/init.965", - "/root/data/AlMgCu/data/init.966", - "/root/data/AlMgCu/data/init.967", - "/root/data/AlMgCu/data/init.968", - "/root/data/AlMgCu/data/init.969", - "/root/data/AlMgCu/data/init.970", - "/root/data/AlMgCu/data/init.971", - "/root/data/AlMgCu/data/init.972", - "/root/data/AlMgCu/data/init.973", - "/root/data/AlMgCu/data/init.974", - "/root/data/AlMgCu/data/init.975", - "/root/data/AlMgCu/data/init.977", - "/root/data/AlMgCu/data/init.978", - "/root/data/AlMgCu/data/init.979", - "/root/data/AlMgCu/data/init.980", - "/root/data/AlMgCu/data/init.981", - "/root/data/AlMgCu/data/init.982", - "/root/data/AlMgCu/data/init.983", - "/root/data/AlMgCu/data/init.984", - "/root/data/AlMgCu/data/init.985", - "/root/data/AlMgCu/data/init.986", - "/root/data/AlMgCu/data/init.987", - "/root/data/AlMgCu/data/init.988", - "/root/data/AlMgCu/data/init.989", - "/root/data/AlMgCu/data/init.990", - "/root/data/AlMgCu/data/init.991", - "/root/data/AlMgCu/data/init.993", - "/root/data/AlMgCu/data/init.994", - "/root/data/AlMgCu/data/init.995", - "/root/data/AlMgCu/data/init.996", - "/root/data/AlMgCu/data/init.997", - "/root/data/AlMgCu/data/init.999", - "/root/data/AlMgCu/data/sys.000", - "/root/data/AlMgCu/data/sys.001", - "/root/data/AlMgCu/data/sys.002", - "/root/data/AlMgCu/data/sys.004", - "/root/data/AlMgCu/data/sys.006", - "/root/data/AlMgCu/data/sys.007", - "/root/data/AlMgCu/data/sys.008", - "/root/data/AlMgCu/data/sys.010", - "/root/data/AlMgCu/data/sys.011", - "/root/data/AlMgCu/data/sys.012", - "/root/data/AlMgCu/data/sys.015", - "/root/data/AlMgCu/data/sys.016", - "/root/data/AlMgCu/data/sys.017", - "/root/data/AlMgCu/data/sys.018", - "/root/data/AlMgCu/data/sys.019", - "/root/data/AlMgCu/data/sys.020", - "/root/data/AlMgCu/data/sys.021", - "/root/data/AlMgCu/data/sys.022", - "/root/data/AlMgCu/data/sys.023", - "/root/data/AlMgCu/data/sys.026", - "/root/data/AlMgCu/data/sys.027", - "/root/data/AlMgCu/data/sys.028", - "/root/data/AlMgCu/data/sys.029", - "/root/data/AlMgCu/data/sys.030", - "/root/data/AlMgCu/data/sys.031", - "/root/data/AlMgCu/data/sys.032", - "/root/data/AlMgCu/data/sys.033", - "/root/data/AlMgCu/data/sys.034", - "/root/data/AlMgCu/data/sys.036", - "/root/data/AlMgCu/data/sys.037", - "/root/data/AlMgCu/data/sys.038", - "/root/data/AlMgCu/data/sys.039", - "/root/data/AlMgCu/data/sys.040", - "/root/data/AlMgCu/data/sys.041", - "/root/data/AlMgCu/data/sys.042", - "/root/data/AlMgCu/data/sys.043", - "/root/data/AlMgCu/data/sys.044", - "/root/data/AlMgCu/data/sys.045", - "/root/data/AlMgCu/data/sys.046", - "/root/data/AlMgCu/data/sys.048", - "/root/data/AlMgCu/data/sys.049", - "/root/data/AlMgCu/data/sys.050", - "/root/data/AlMgCu/data/sys.051", - "/root/data/AlMgCu/data/sys.052", - "/root/data/AlMgCu/data/sys.053", - "/root/data/AlMgCu/data/sys.054", - "/root/data/AlMgCu/data/sys.055", - "/root/data/AlMgCu/data/sys.056", - "/root/data/AlMgCu/data/sys.057", - "/root/data/AlMgCu/data/sys.058", - "/root/data/AlMgCu/data/sys.059", - "/root/data/AlMgCu/data/sys.060", - "/root/data/AlMgCu/data/sys.061", - "/root/data/AlMgCu/data/sys.062", - "/root/data/AlMgCu/data/sys.063", - "/root/data/AlMgCu/data/sys.064", - "/root/data/AlMgCu/data/sys.065", - "/root/data/AlMgCu/data/sys.066", - "/root/data/AlMgCu/data/sys.067", - "/root/data/AlMgCu/data/sys.070", - "/root/data/AlMgCu/data/sys.071", - "/root/data/AlMgCu/data/sys.072", - "/root/data/AlMgCu/data/sys.073", - "/root/data/AlMgCu/data/sys.074", - "/root/data/AlMgCu/data/sys.075", - "/root/data/AlMgCu/data/sys.076", - "/root/data/AlMgCu/data/sys.077", - "/root/data/AlMgCu/data/sys.078", - "/root/data/AlMgCu/data/sys.079", - "/root/data/AlMgCu/data/sys.080", - "/root/data/AlMgCu/data/sys.081", - "/root/data/AlMgCu/data/sys.082", - "/root/data/AlMgCu/data/sys.083", - "/root/data/AlMgCu/data/sys.084", - "/root/data/AlMgCu/data/sys.085", - "/root/data/AlMgCu/data/sys.086", - "/root/data/AlMgCu/data/sys.087", - "/root/data/AlMgCu/data/sys.088", - "/root/data/AlMgCu/data/sys.089", - "/root/data/AlMgCu/data/sys.090", - "/root/data/AlMgCu/data/sys.092", - "/root/data/AlMgCu/data/sys.093", - "/root/data/AlMgCu/data/sys.094", - "/root/data/AlMgCu/data/sys.095", - "/root/data/AlMgCu/data/sys.097", - "/root/data/AlMgCu/data/sys.098", - "/root/data/AlMgCu/data/sys.099", - "/root/data/AlMgCu/data/sys.100", - "/root/data/AlMgCu/data/sys.1000", - "/root/data/AlMgCu/data/sys.10004", - "/root/data/AlMgCu/data/sys.10006", - "/root/data/AlMgCu/data/sys.1001", - "/root/data/AlMgCu/data/sys.10010", - "/root/data/AlMgCu/data/sys.10012", - "/root/data/AlMgCu/data/sys.10018", - "/root/data/AlMgCu/data/sys.1002", - "/root/data/AlMgCu/data/sys.10024", - "/root/data/AlMgCu/data/sys.10026", - "/root/data/AlMgCu/data/sys.10027", - "/root/data/AlMgCu/data/sys.10028", - "/root/data/AlMgCu/data/sys.10029", - "/root/data/AlMgCu/data/sys.1003", - "/root/data/AlMgCu/data/sys.10030", - "/root/data/AlMgCu/data/sys.10034", - "/root/data/AlMgCu/data/sys.10035", - "/root/data/AlMgCu/data/sys.10036", - "/root/data/AlMgCu/data/sys.1004", - "/root/data/AlMgCu/data/sys.10042", - "/root/data/AlMgCu/data/sys.10044", - "/root/data/AlMgCu/data/sys.10046", - "/root/data/AlMgCu/data/sys.1005", - "/root/data/AlMgCu/data/sys.10050", - "/root/data/AlMgCu/data/sys.10052", - "/root/data/AlMgCu/data/sys.10056", - "/root/data/AlMgCu/data/sys.10058", - "/root/data/AlMgCu/data/sys.1006", - "/root/data/AlMgCu/data/sys.10060", - "/root/data/AlMgCu/data/sys.10064", - "/root/data/AlMgCu/data/sys.1007", - "/root/data/AlMgCu/data/sys.10073", - "/root/data/AlMgCu/data/sys.1008", - "/root/data/AlMgCu/data/sys.10082", - "/root/data/AlMgCu/data/sys.10083", - "/root/data/AlMgCu/data/sys.10084", - "/root/data/AlMgCu/data/sys.1009", - "/root/data/AlMgCu/data/sys.10090", - "/root/data/AlMgCu/data/sys.10091", - "/root/data/AlMgCu/data/sys.10092", - "/root/data/AlMgCu/data/sys.10098", - "/root/data/AlMgCu/data/sys.101", - "/root/data/AlMgCu/data/sys.1010", - "/root/data/AlMgCu/data/sys.10100", - "/root/data/AlMgCu/data/sys.10105", - "/root/data/AlMgCu/data/sys.10106", - "/root/data/AlMgCu/data/sys.1011", - "/root/data/AlMgCu/data/sys.10112", - "/root/data/AlMgCu/data/sys.10114", - "/root/data/AlMgCu/data/sys.10115", - "/root/data/AlMgCu/data/sys.10116", - "/root/data/AlMgCu/data/sys.1012", - "/root/data/AlMgCu/data/sys.10121", - "/root/data/AlMgCu/data/sys.10122", - "/root/data/AlMgCu/data/sys.10128", - "/root/data/AlMgCu/data/sys.1013", - "/root/data/AlMgCu/data/sys.10138", - "/root/data/AlMgCu/data/sys.1014", - "/root/data/AlMgCu/data/sys.10144", - "/root/data/AlMgCu/data/sys.10145", - "/root/data/AlMgCu/data/sys.10146", - "/root/data/AlMgCu/data/sys.10148", - "/root/data/AlMgCu/data/sys.1015", - "/root/data/AlMgCu/data/sys.10154", - "/root/data/AlMgCu/data/sys.10155", - "/root/data/AlMgCu/data/sys.1016", - "/root/data/AlMgCu/data/sys.10160", - "/root/data/AlMgCu/data/sys.10162", - "/root/data/AlMgCu/data/sys.10163", - "/root/data/AlMgCu/data/sys.1017", - "/root/data/AlMgCu/data/sys.10170", - "/root/data/AlMgCu/data/sys.10174", - "/root/data/AlMgCu/data/sys.10176", - "/root/data/AlMgCu/data/sys.10178", - "/root/data/AlMgCu/data/sys.1018", - "/root/data/AlMgCu/data/sys.1019", - "/root/data/AlMgCu/data/sys.10193", - "/root/data/AlMgCu/data/sys.10194", - "/root/data/AlMgCu/data/sys.10196", - "/root/data/AlMgCu/data/sys.1020", - "/root/data/AlMgCu/data/sys.10202", - "/root/data/AlMgCu/data/sys.1021", - "/root/data/AlMgCu/data/sys.10210", - "/root/data/AlMgCu/data/sys.10211", - "/root/data/AlMgCu/data/sys.10218", - "/root/data/AlMgCu/data/sys.1022", - "/root/data/AlMgCu/data/sys.10226", - "/root/data/AlMgCu/data/sys.1023", - "/root/data/AlMgCu/data/sys.10233", - "/root/data/AlMgCu/data/sys.10236", - "/root/data/AlMgCu/data/sys.1024", - "/root/data/AlMgCu/data/sys.10244", - "/root/data/AlMgCu/data/sys.10248", - "/root/data/AlMgCu/data/sys.1025", - "/root/data/AlMgCu/data/sys.10250", - "/root/data/AlMgCu/data/sys.10253", - "/root/data/AlMgCu/data/sys.10258", - "/root/data/AlMgCu/data/sys.1026", - "/root/data/AlMgCu/data/sys.10260", - "/root/data/AlMgCu/data/sys.10268", - "/root/data/AlMgCu/data/sys.1027", - "/root/data/AlMgCu/data/sys.10274", - "/root/data/AlMgCu/data/sys.10282", - "/root/data/AlMgCu/data/sys.10289", - "/root/data/AlMgCu/data/sys.1029", - "/root/data/AlMgCu/data/sys.10296", - "/root/data/AlMgCu/data/sys.10298", - "/root/data/AlMgCu/data/sys.103", - "/root/data/AlMgCu/data/sys.1030", - "/root/data/AlMgCu/data/sys.10306", - "/root/data/AlMgCu/data/sys.10308", - "/root/data/AlMgCu/data/sys.1031", - "/root/data/AlMgCu/data/sys.10314", - "/root/data/AlMgCu/data/sys.1032", - "/root/data/AlMgCu/data/sys.10322", - "/root/data/AlMgCu/data/sys.10324", - "/root/data/AlMgCu/data/sys.10329", - "/root/data/AlMgCu/data/sys.1033", - "/root/data/AlMgCu/data/sys.10330", - "/root/data/AlMgCu/data/sys.1034", - "/root/data/AlMgCu/data/sys.1035", - "/root/data/AlMgCu/data/sys.10356", - "/root/data/AlMgCu/data/sys.1036", - "/root/data/AlMgCu/data/sys.10368", - "/root/data/AlMgCu/data/sys.1037", - "/root/data/AlMgCu/data/sys.10370", - "/root/data/AlMgCu/data/sys.10372", - "/root/data/AlMgCu/data/sys.1038", - "/root/data/AlMgCu/data/sys.1039", - "/root/data/AlMgCu/data/sys.10394", - "/root/data/AlMgCu/data/sys.10396", - "/root/data/AlMgCu/data/sys.104", - "/root/data/AlMgCu/data/sys.10402", - "/root/data/AlMgCu/data/sys.10404", - "/root/data/AlMgCu/data/sys.10408", - "/root/data/AlMgCu/data/sys.1041", - "/root/data/AlMgCu/data/sys.10410", - "/root/data/AlMgCu/data/sys.1042", - "/root/data/AlMgCu/data/sys.1043", - "/root/data/AlMgCu/data/sys.1044", - "/root/data/AlMgCu/data/sys.1045", - "/root/data/AlMgCu/data/sys.10450", - "/root/data/AlMgCu/data/sys.1046", - "/root/data/AlMgCu/data/sys.1047", - "/root/data/AlMgCu/data/sys.1048", - "/root/data/AlMgCu/data/sys.10483", - "/root/data/AlMgCu/data/sys.10484", - "/root/data/AlMgCu/data/sys.1049", - "/root/data/AlMgCu/data/sys.10490", - "/root/data/AlMgCu/data/sys.105", - "/root/data/AlMgCu/data/sys.1050", - "/root/data/AlMgCu/data/sys.1051", - "/root/data/AlMgCu/data/sys.1052", - "/root/data/AlMgCu/data/sys.1053", - "/root/data/AlMgCu/data/sys.10536", - "/root/data/AlMgCu/data/sys.1054", - "/root/data/AlMgCu/data/sys.10544", - "/root/data/AlMgCu/data/sys.10554", - "/root/data/AlMgCu/data/sys.1056", - "/root/data/AlMgCu/data/sys.10588", - "/root/data/AlMgCu/data/sys.1059", - "/root/data/AlMgCu/data/sys.10592", - "/root/data/AlMgCu/data/sys.106", - "/root/data/AlMgCu/data/sys.1060", - "/root/data/AlMgCu/data/sys.10602", - "/root/data/AlMgCu/data/sys.10604", - "/root/data/AlMgCu/data/sys.1061", - "/root/data/AlMgCu/data/sys.10612", - "/root/data/AlMgCu/data/sys.1062", - "/root/data/AlMgCu/data/sys.10626", - "/root/data/AlMgCu/data/sys.1063", - "/root/data/AlMgCu/data/sys.10636", - "/root/data/AlMgCu/data/sys.1064", - "/root/data/AlMgCu/data/sys.1065", - "/root/data/AlMgCu/data/sys.1066", - "/root/data/AlMgCu/data/sys.1067", - "/root/data/AlMgCu/data/sys.10676", - "/root/data/AlMgCu/data/sys.1068", - "/root/data/AlMgCu/data/sys.1069", - "/root/data/AlMgCu/data/sys.107", - "/root/data/AlMgCu/data/sys.1070", - "/root/data/AlMgCu/data/sys.10702", - "/root/data/AlMgCu/data/sys.1071", - "/root/data/AlMgCu/data/sys.1072", - "/root/data/AlMgCu/data/sys.1073", - "/root/data/AlMgCu/data/sys.1074", - "/root/data/AlMgCu/data/sys.1075", - "/root/data/AlMgCu/data/sys.1076", - "/root/data/AlMgCu/data/sys.1078", - "/root/data/AlMgCu/data/sys.1079", - "/root/data/AlMgCu/data/sys.108", - "/root/data/AlMgCu/data/sys.1080", - "/root/data/AlMgCu/data/sys.1082", - "/root/data/AlMgCu/data/sys.1083", - "/root/data/AlMgCu/data/sys.1084", - "/root/data/AlMgCu/data/sys.1085", - "/root/data/AlMgCu/data/sys.1086", - "/root/data/AlMgCu/data/sys.1087", - "/root/data/AlMgCu/data/sys.1088", - "/root/data/AlMgCu/data/sys.1089", - "/root/data/AlMgCu/data/sys.10895", - "/root/data/AlMgCu/data/sys.10898", - "/root/data/AlMgCu/data/sys.109", - "/root/data/AlMgCu/data/sys.1090", - "/root/data/AlMgCu/data/sys.10900", - "/root/data/AlMgCu/data/sys.10904", - "/root/data/AlMgCu/data/sys.10905", - "/root/data/AlMgCu/data/sys.10906", - "/root/data/AlMgCu/data/sys.10907", - "/root/data/AlMgCu/data/sys.10909", - "/root/data/AlMgCu/data/sys.1091", - "/root/data/AlMgCu/data/sys.10910", - "/root/data/AlMgCu/data/sys.10912", - "/root/data/AlMgCu/data/sys.10914", - "/root/data/AlMgCu/data/sys.10916", - "/root/data/AlMgCu/data/sys.1092", - "/root/data/AlMgCu/data/sys.10920", - "/root/data/AlMgCu/data/sys.10921", - "/root/data/AlMgCu/data/sys.10922", - "/root/data/AlMgCu/data/sys.10924", - "/root/data/AlMgCu/data/sys.10926", - "/root/data/AlMgCu/data/sys.10929", - "/root/data/AlMgCu/data/sys.10930", - "/root/data/AlMgCu/data/sys.10932", - "/root/data/AlMgCu/data/sys.10933", - "/root/data/AlMgCu/data/sys.10936", - "/root/data/AlMgCu/data/sys.10938", - "/root/data/AlMgCu/data/sys.10939", - "/root/data/AlMgCu/data/sys.1094", - "/root/data/AlMgCu/data/sys.10941", - "/root/data/AlMgCu/data/sys.10942", - "/root/data/AlMgCu/data/sys.10944", - "/root/data/AlMgCu/data/sys.10945", - "/root/data/AlMgCu/data/sys.10946", - "/root/data/AlMgCu/data/sys.10947", - "/root/data/AlMgCu/data/sys.1095", - "/root/data/AlMgCu/data/sys.10950", - "/root/data/AlMgCu/data/sys.10952", - "/root/data/AlMgCu/data/sys.10956", - "/root/data/AlMgCu/data/sys.10957", - "/root/data/AlMgCu/data/sys.10960", - "/root/data/AlMgCu/data/sys.10961", - "/root/data/AlMgCu/data/sys.10962", - "/root/data/AlMgCu/data/sys.10964", - "/root/data/AlMgCu/data/sys.10966", - "/root/data/AlMgCu/data/sys.10968", - "/root/data/AlMgCu/data/sys.10969", - "/root/data/AlMgCu/data/sys.1097", - "/root/data/AlMgCu/data/sys.10970", - "/root/data/AlMgCu/data/sys.10972", - "/root/data/AlMgCu/data/sys.10977", - "/root/data/AlMgCu/data/sys.1098", - "/root/data/AlMgCu/data/sys.10980", - "/root/data/AlMgCu/data/sys.10985", - "/root/data/AlMgCu/data/sys.10986", - "/root/data/AlMgCu/data/sys.10989", - "/root/data/AlMgCu/data/sys.1099", - "/root/data/AlMgCu/data/sys.10993", - "/root/data/AlMgCu/data/sys.10994", - "/root/data/AlMgCu/data/sys.10995", - "/root/data/AlMgCu/data/sys.10996", - "/root/data/AlMgCu/data/sys.10998", - "/root/data/AlMgCu/data/sys.110", - "/root/data/AlMgCu/data/sys.1100", - "/root/data/AlMgCu/data/sys.11000", - "/root/data/AlMgCu/data/sys.11001", - "/root/data/AlMgCu/data/sys.11002", - "/root/data/AlMgCu/data/sys.11006", - "/root/data/AlMgCu/data/sys.11008", - "/root/data/AlMgCu/data/sys.11009", - "/root/data/AlMgCu/data/sys.1101", - "/root/data/AlMgCu/data/sys.11010", - "/root/data/AlMgCu/data/sys.11016", - "/root/data/AlMgCu/data/sys.11018", - "/root/data/AlMgCu/data/sys.1102", - "/root/data/AlMgCu/data/sys.11020", - "/root/data/AlMgCu/data/sys.11024", - "/root/data/AlMgCu/data/sys.11028", - "/root/data/AlMgCu/data/sys.11029", - "/root/data/AlMgCu/data/sys.1103", - "/root/data/AlMgCu/data/sys.11033", - "/root/data/AlMgCu/data/sys.11034", - "/root/data/AlMgCu/data/sys.11035", - "/root/data/AlMgCu/data/sys.11036", - "/root/data/AlMgCu/data/sys.11037", - "/root/data/AlMgCu/data/sys.11038", - "/root/data/AlMgCu/data/sys.1104", - "/root/data/AlMgCu/data/sys.11042", - "/root/data/AlMgCu/data/sys.11044", - "/root/data/AlMgCu/data/sys.11048", - "/root/data/AlMgCu/data/sys.11049", - "/root/data/AlMgCu/data/sys.1105", - "/root/data/AlMgCu/data/sys.11056", - "/root/data/AlMgCu/data/sys.11057", - "/root/data/AlMgCu/data/sys.11058", - "/root/data/AlMgCu/data/sys.1106", - "/root/data/AlMgCu/data/sys.11060", - "/root/data/AlMgCu/data/sys.11062", - "/root/data/AlMgCu/data/sys.11064", - "/root/data/AlMgCu/data/sys.11065", - "/root/data/AlMgCu/data/sys.11066", - "/root/data/AlMgCu/data/sys.11068", - "/root/data/AlMgCu/data/sys.11069", - "/root/data/AlMgCu/data/sys.1107", - "/root/data/AlMgCu/data/sys.11076", - "/root/data/AlMgCu/data/sys.11077", - "/root/data/AlMgCu/data/sys.1108", - "/root/data/AlMgCu/data/sys.11080", - "/root/data/AlMgCu/data/sys.11081", - "/root/data/AlMgCu/data/sys.11082", - "/root/data/AlMgCu/data/sys.11088", - "/root/data/AlMgCu/data/sys.11090", - "/root/data/AlMgCu/data/sys.11096", - "/root/data/AlMgCu/data/sys.11097", - "/root/data/AlMgCu/data/sys.11098", - "/root/data/AlMgCu/data/sys.11099", - "/root/data/AlMgCu/data/sys.111", - "/root/data/AlMgCu/data/sys.1110", - "/root/data/AlMgCu/data/sys.11104", - "/root/data/AlMgCu/data/sys.11105", - "/root/data/AlMgCu/data/sys.11106", - "/root/data/AlMgCu/data/sys.11107", - "/root/data/AlMgCu/data/sys.11108", - "/root/data/AlMgCu/data/sys.1111", - "/root/data/AlMgCu/data/sys.11114", - "/root/data/AlMgCu/data/sys.1112", - "/root/data/AlMgCu/data/sys.11121", - "/root/data/AlMgCu/data/sys.11122", - "/root/data/AlMgCu/data/sys.11128", - "/root/data/AlMgCu/data/sys.1113", - "/root/data/AlMgCu/data/sys.11132", - "/root/data/AlMgCu/data/sys.11133", - "/root/data/AlMgCu/data/sys.11134", - "/root/data/AlMgCu/data/sys.11136", - "/root/data/AlMgCu/data/sys.11137", - "/root/data/AlMgCu/data/sys.11139", - "/root/data/AlMgCu/data/sys.1114", - "/root/data/AlMgCu/data/sys.11144", - "/root/data/AlMgCu/data/sys.11146", - "/root/data/AlMgCu/data/sys.1115", - "/root/data/AlMgCu/data/sys.11152", - "/root/data/AlMgCu/data/sys.11154", - "/root/data/AlMgCu/data/sys.1116", - "/root/data/AlMgCu/data/sys.11160", - "/root/data/AlMgCu/data/sys.11162", - "/root/data/AlMgCu/data/sys.1117", - "/root/data/AlMgCu/data/sys.11170", - "/root/data/AlMgCu/data/sys.11176", - "/root/data/AlMgCu/data/sys.11177", - "/root/data/AlMgCu/data/sys.11184", - "/root/data/AlMgCu/data/sys.11192", - "/root/data/AlMgCu/data/sys.11193", - "/root/data/AlMgCu/data/sys.11196", - "/root/data/AlMgCu/data/sys.112", - "/root/data/AlMgCu/data/sys.1120", - "/root/data/AlMgCu/data/sys.11202", - "/root/data/AlMgCu/data/sys.11204", - "/root/data/AlMgCu/data/sys.11208", - "/root/data/AlMgCu/data/sys.1121", - "/root/data/AlMgCu/data/sys.11216", - "/root/data/AlMgCu/data/sys.11218", - "/root/data/AlMgCu/data/sys.11219", - "/root/data/AlMgCu/data/sys.1122", - "/root/data/AlMgCu/data/sys.11222", - "/root/data/AlMgCu/data/sys.11226", - "/root/data/AlMgCu/data/sys.1123", - "/root/data/AlMgCu/data/sys.11232", - "/root/data/AlMgCu/data/sys.1124", - "/root/data/AlMgCu/data/sys.11240", - "/root/data/AlMgCu/data/sys.11242", - "/root/data/AlMgCu/data/sys.11248", - "/root/data/AlMgCu/data/sys.11249", - "/root/data/AlMgCu/data/sys.1125", - "/root/data/AlMgCu/data/sys.11256", - "/root/data/AlMgCu/data/sys.11258", - "/root/data/AlMgCu/data/sys.1126", - "/root/data/AlMgCu/data/sys.11265", - "/root/data/AlMgCu/data/sys.1127", - "/root/data/AlMgCu/data/sys.11273", - "/root/data/AlMgCu/data/sys.1128", - "/root/data/AlMgCu/data/sys.11280", - "/root/data/AlMgCu/data/sys.11288", - "/root/data/AlMgCu/data/sys.11289", - "/root/data/AlMgCu/data/sys.1129", - "/root/data/AlMgCu/data/sys.11292", - "/root/data/AlMgCu/data/sys.11296", - "/root/data/AlMgCu/data/sys.113", - "/root/data/AlMgCu/data/sys.1130", - "/root/data/AlMgCu/data/sys.11304", - "/root/data/AlMgCu/data/sys.11308", - "/root/data/AlMgCu/data/sys.1131", - "/root/data/AlMgCu/data/sys.11312", - "/root/data/AlMgCu/data/sys.11313", - "/root/data/AlMgCu/data/sys.1132", - "/root/data/AlMgCu/data/sys.11320", - "/root/data/AlMgCu/data/sys.11328", - "/root/data/AlMgCu/data/sys.1133", - "/root/data/AlMgCu/data/sys.11332", - "/root/data/AlMgCu/data/sys.11337", - "/root/data/AlMgCu/data/sys.1134", - "/root/data/AlMgCu/data/sys.1135", - "/root/data/AlMgCu/data/sys.11352", - "/root/data/AlMgCu/data/sys.11353", - "/root/data/AlMgCu/data/sys.11354", - "/root/data/AlMgCu/data/sys.1136", - "/root/data/AlMgCu/data/sys.11362", - "/root/data/AlMgCu/data/sys.1137", - "/root/data/AlMgCu/data/sys.11372", - "/root/data/AlMgCu/data/sys.11376", - "/root/data/AlMgCu/data/sys.1138", - "/root/data/AlMgCu/data/sys.11386", - "/root/data/AlMgCu/data/sys.1139", - "/root/data/AlMgCu/data/sys.11392", - "/root/data/AlMgCu/data/sys.114", - "/root/data/AlMgCu/data/sys.1140", - "/root/data/AlMgCu/data/sys.1141", - "/root/data/AlMgCu/data/sys.1143", - "/root/data/AlMgCu/data/sys.1144", - "/root/data/AlMgCu/data/sys.1145", - "/root/data/AlMgCu/data/sys.1146", - "/root/data/AlMgCu/data/sys.1147", - "/root/data/AlMgCu/data/sys.1148", - "/root/data/AlMgCu/data/sys.1149", - "/root/data/AlMgCu/data/sys.115", - "/root/data/AlMgCu/data/sys.1150", - "/root/data/AlMgCu/data/sys.1151", - "/root/data/AlMgCu/data/sys.1152", - "/root/data/AlMgCu/data/sys.1154", - "/root/data/AlMgCu/data/sys.1155", - "/root/data/AlMgCu/data/sys.1157", - "/root/data/AlMgCu/data/sys.1158", - "/root/data/AlMgCu/data/sys.1159", - "/root/data/AlMgCu/data/sys.116", - "/root/data/AlMgCu/data/sys.1160", - "/root/data/AlMgCu/data/sys.1161", - "/root/data/AlMgCu/data/sys.1162", - "/root/data/AlMgCu/data/sys.1163", - "/root/data/AlMgCu/data/sys.1164", - "/root/data/AlMgCu/data/sys.1165", - "/root/data/AlMgCu/data/sys.1166", - "/root/data/AlMgCu/data/sys.1167", - "/root/data/AlMgCu/data/sys.1168", - "/root/data/AlMgCu/data/sys.1169", - "/root/data/AlMgCu/data/sys.117", - "/root/data/AlMgCu/data/sys.1170", - "/root/data/AlMgCu/data/sys.1171", - "/root/data/AlMgCu/data/sys.1172", - "/root/data/AlMgCu/data/sys.1173", - "/root/data/AlMgCu/data/sys.1174", - "/root/data/AlMgCu/data/sys.1175", - "/root/data/AlMgCu/data/sys.1176", - "/root/data/AlMgCu/data/sys.1177", - "/root/data/AlMgCu/data/sys.1178", - "/root/data/AlMgCu/data/sys.1179", - "/root/data/AlMgCu/data/sys.118", - "/root/data/AlMgCu/data/sys.1180", - "/root/data/AlMgCu/data/sys.1183", - "/root/data/AlMgCu/data/sys.1184", - "/root/data/AlMgCu/data/sys.1185", - "/root/data/AlMgCu/data/sys.1186", - "/root/data/AlMgCu/data/sys.1187", - "/root/data/AlMgCu/data/sys.1188", - "/root/data/AlMgCu/data/sys.119", - "/root/data/AlMgCu/data/sys.1191", - "/root/data/AlMgCu/data/sys.1193", - "/root/data/AlMgCu/data/sys.1194", - "/root/data/AlMgCu/data/sys.1195", - "/root/data/AlMgCu/data/sys.1198", - "/root/data/AlMgCu/data/sys.1199", - "/root/data/AlMgCu/data/sys.1200", - "/root/data/AlMgCu/data/sys.1201", - "/root/data/AlMgCu/data/sys.1202", - "/root/data/AlMgCu/data/sys.1203", - "/root/data/AlMgCu/data/sys.1204", - "/root/data/AlMgCu/data/sys.1205", - "/root/data/AlMgCu/data/sys.1206", - "/root/data/AlMgCu/data/sys.1208", - "/root/data/AlMgCu/data/sys.1209", - "/root/data/AlMgCu/data/sys.121", - "/root/data/AlMgCu/data/sys.1210", - "/root/data/AlMgCu/data/sys.1211", - "/root/data/AlMgCu/data/sys.1212", - "/root/data/AlMgCu/data/sys.1213", - "/root/data/AlMgCu/data/sys.1214", - "/root/data/AlMgCu/data/sys.1215", - "/root/data/AlMgCu/data/sys.1216", - "/root/data/AlMgCu/data/sys.1217", - "/root/data/AlMgCu/data/sys.1218", - "/root/data/AlMgCu/data/sys.1219", - "/root/data/AlMgCu/data/sys.122", - "/root/data/AlMgCu/data/sys.1220", - "/root/data/AlMgCu/data/sys.1221", - "/root/data/AlMgCu/data/sys.1222", - "/root/data/AlMgCu/data/sys.1223", - "/root/data/AlMgCu/data/sys.1224", - "/root/data/AlMgCu/data/sys.1225", - "/root/data/AlMgCu/data/sys.1226", - "/root/data/AlMgCu/data/sys.1227", - "/root/data/AlMgCu/data/sys.1228", - "/root/data/AlMgCu/data/sys.1229", - "/root/data/AlMgCu/data/sys.123", - "/root/data/AlMgCu/data/sys.1230", - "/root/data/AlMgCu/data/sys.1232", - "/root/data/AlMgCu/data/sys.1233", - "/root/data/AlMgCu/data/sys.1234", - "/root/data/AlMgCu/data/sys.1236", - "/root/data/AlMgCu/data/sys.1237", - "/root/data/AlMgCu/data/sys.1238", - "/root/data/AlMgCu/data/sys.1239", - "/root/data/AlMgCu/data/sys.124", - "/root/data/AlMgCu/data/sys.1240", - "/root/data/AlMgCu/data/sys.1241", - "/root/data/AlMgCu/data/sys.1242", - "/root/data/AlMgCu/data/sys.1243", - "/root/data/AlMgCu/data/sys.1244", - "/root/data/AlMgCu/data/sys.1245", - "/root/data/AlMgCu/data/sys.1246", - "/root/data/AlMgCu/data/sys.1247", - "/root/data/AlMgCu/data/sys.1248", - "/root/data/AlMgCu/data/sys.1249", - "/root/data/AlMgCu/data/sys.125", - "/root/data/AlMgCu/data/sys.1250", - "/root/data/AlMgCu/data/sys.1251", - "/root/data/AlMgCu/data/sys.1252", - "/root/data/AlMgCu/data/sys.1254", - "/root/data/AlMgCu/data/sys.1255", - "/root/data/AlMgCu/data/sys.1256", - "/root/data/AlMgCu/data/sys.1257", - "/root/data/AlMgCu/data/sys.1258", - "/root/data/AlMgCu/data/sys.1259", - "/root/data/AlMgCu/data/sys.126", - "/root/data/AlMgCu/data/sys.1260", - "/root/data/AlMgCu/data/sys.1261", - "/root/data/AlMgCu/data/sys.1262", - "/root/data/AlMgCu/data/sys.1263", - "/root/data/AlMgCu/data/sys.1264", - "/root/data/AlMgCu/data/sys.1265", - "/root/data/AlMgCu/data/sys.1266", - "/root/data/AlMgCu/data/sys.1268", - "/root/data/AlMgCu/data/sys.1269", - "/root/data/AlMgCu/data/sys.127", - "/root/data/AlMgCu/data/sys.1270", - "/root/data/AlMgCu/data/sys.1271", - "/root/data/AlMgCu/data/sys.1272", - "/root/data/AlMgCu/data/sys.1273", - "/root/data/AlMgCu/data/sys.1274", - "/root/data/AlMgCu/data/sys.1275", - "/root/data/AlMgCu/data/sys.1276", - "/root/data/AlMgCu/data/sys.1277", - "/root/data/AlMgCu/data/sys.1278", - "/root/data/AlMgCu/data/sys.1279", - "/root/data/AlMgCu/data/sys.128", - "/root/data/AlMgCu/data/sys.1280", - "/root/data/AlMgCu/data/sys.1281", - "/root/data/AlMgCu/data/sys.1282", - "/root/data/AlMgCu/data/sys.1283", - "/root/data/AlMgCu/data/sys.1284", - "/root/data/AlMgCu/data/sys.1286", - "/root/data/AlMgCu/data/sys.1287", - "/root/data/AlMgCu/data/sys.1288", - "/root/data/AlMgCu/data/sys.1289", - "/root/data/AlMgCu/data/sys.129", - "/root/data/AlMgCu/data/sys.1290", - "/root/data/AlMgCu/data/sys.1291", - "/root/data/AlMgCu/data/sys.1292", - "/root/data/AlMgCu/data/sys.1294", - "/root/data/AlMgCu/data/sys.1295", - "/root/data/AlMgCu/data/sys.1296", - "/root/data/AlMgCu/data/sys.1298", - "/root/data/AlMgCu/data/sys.1299", - "/root/data/AlMgCu/data/sys.130", - "/root/data/AlMgCu/data/sys.1300", - "/root/data/AlMgCu/data/sys.1301", - "/root/data/AlMgCu/data/sys.1302", - "/root/data/AlMgCu/data/sys.1303", - "/root/data/AlMgCu/data/sys.1304", - "/root/data/AlMgCu/data/sys.1306", - "/root/data/AlMgCu/data/sys.1307", - "/root/data/AlMgCu/data/sys.1308", - "/root/data/AlMgCu/data/sys.1309", - "/root/data/AlMgCu/data/sys.131", - "/root/data/AlMgCu/data/sys.1310", - "/root/data/AlMgCu/data/sys.1311", - "/root/data/AlMgCu/data/sys.1312", - "/root/data/AlMgCu/data/sys.1313", - "/root/data/AlMgCu/data/sys.1314", - "/root/data/AlMgCu/data/sys.1316", - "/root/data/AlMgCu/data/sys.1317", - "/root/data/AlMgCu/data/sys.1318", - "/root/data/AlMgCu/data/sys.1319", - "/root/data/AlMgCu/data/sys.132", - "/root/data/AlMgCu/data/sys.1321", - "/root/data/AlMgCu/data/sys.1322", - "/root/data/AlMgCu/data/sys.1323", - "/root/data/AlMgCu/data/sys.1324", - "/root/data/AlMgCu/data/sys.1325", - "/root/data/AlMgCu/data/sys.1326", - "/root/data/AlMgCu/data/sys.1327", - "/root/data/AlMgCu/data/sys.1328", - "/root/data/AlMgCu/data/sys.1329", - "/root/data/AlMgCu/data/sys.1330", - "/root/data/AlMgCu/data/sys.1331", - "/root/data/AlMgCu/data/sys.1332", - "/root/data/AlMgCu/data/sys.1333", - "/root/data/AlMgCu/data/sys.1334", - "/root/data/AlMgCu/data/sys.1335", - "/root/data/AlMgCu/data/sys.1336", - "/root/data/AlMgCu/data/sys.1337", - "/root/data/AlMgCu/data/sys.1338", - "/root/data/AlMgCu/data/sys.1339", - "/root/data/AlMgCu/data/sys.1340", - "/root/data/AlMgCu/data/sys.1341", - "/root/data/AlMgCu/data/sys.1342", - "/root/data/AlMgCu/data/sys.1343", - "/root/data/AlMgCu/data/sys.1344", - "/root/data/AlMgCu/data/sys.1345", - "/root/data/AlMgCu/data/sys.1346", - "/root/data/AlMgCu/data/sys.1347", - "/root/data/AlMgCu/data/sys.1348", - "/root/data/AlMgCu/data/sys.1349", - "/root/data/AlMgCu/data/sys.135", - "/root/data/AlMgCu/data/sys.1350", - "/root/data/AlMgCu/data/sys.1351", - "/root/data/AlMgCu/data/sys.1352", - "/root/data/AlMgCu/data/sys.1353", - "/root/data/AlMgCu/data/sys.1354", - "/root/data/AlMgCu/data/sys.1355", - "/root/data/AlMgCu/data/sys.1356", - "/root/data/AlMgCu/data/sys.1357", - "/root/data/AlMgCu/data/sys.1358", - "/root/data/AlMgCu/data/sys.1359", - "/root/data/AlMgCu/data/sys.136", - "/root/data/AlMgCu/data/sys.1360", - "/root/data/AlMgCu/data/sys.1361", - "/root/data/AlMgCu/data/sys.1362", - "/root/data/AlMgCu/data/sys.1363", - "/root/data/AlMgCu/data/sys.1364", - "/root/data/AlMgCu/data/sys.1365", - "/root/data/AlMgCu/data/sys.1366", - "/root/data/AlMgCu/data/sys.1367", - "/root/data/AlMgCu/data/sys.1368", - "/root/data/AlMgCu/data/sys.1369", - "/root/data/AlMgCu/data/sys.137", - "/root/data/AlMgCu/data/sys.1370", - "/root/data/AlMgCu/data/sys.1371", - "/root/data/AlMgCu/data/sys.1372", - "/root/data/AlMgCu/data/sys.1373", - "/root/data/AlMgCu/data/sys.1374", - "/root/data/AlMgCu/data/sys.1376", - "/root/data/AlMgCu/data/sys.1377", - "/root/data/AlMgCu/data/sys.1379", - "/root/data/AlMgCu/data/sys.138", - "/root/data/AlMgCu/data/sys.1381", - "/root/data/AlMgCu/data/sys.1382", - "/root/data/AlMgCu/data/sys.1383", - "/root/data/AlMgCu/data/sys.1384", - "/root/data/AlMgCu/data/sys.1385", - "/root/data/AlMgCu/data/sys.1387", - "/root/data/AlMgCu/data/sys.1388", - "/root/data/AlMgCu/data/sys.139", - "/root/data/AlMgCu/data/sys.1390", - "/root/data/AlMgCu/data/sys.1391", - "/root/data/AlMgCu/data/sys.1392", - "/root/data/AlMgCu/data/sys.1394", - "/root/data/AlMgCu/data/sys.1395", - "/root/data/AlMgCu/data/sys.1396", - "/root/data/AlMgCu/data/sys.1398", - "/root/data/AlMgCu/data/sys.1399", - "/root/data/AlMgCu/data/sys.140", - "/root/data/AlMgCu/data/sys.1400", - "/root/data/AlMgCu/data/sys.1401", - "/root/data/AlMgCu/data/sys.1403", - "/root/data/AlMgCu/data/sys.1404", - "/root/data/AlMgCu/data/sys.1405", - "/root/data/AlMgCu/data/sys.1406", - "/root/data/AlMgCu/data/sys.1407", - "/root/data/AlMgCu/data/sys.1409", - "/root/data/AlMgCu/data/sys.141", - "/root/data/AlMgCu/data/sys.1410", - "/root/data/AlMgCu/data/sys.1411", - "/root/data/AlMgCu/data/sys.1412", - "/root/data/AlMgCu/data/sys.1413", - "/root/data/AlMgCu/data/sys.1414", - "/root/data/AlMgCu/data/sys.1415", - "/root/data/AlMgCu/data/sys.1416", - "/root/data/AlMgCu/data/sys.1418", - "/root/data/AlMgCu/data/sys.1419", - "/root/data/AlMgCu/data/sys.142", - "/root/data/AlMgCu/data/sys.1420", - "/root/data/AlMgCu/data/sys.1421", - "/root/data/AlMgCu/data/sys.1422", - "/root/data/AlMgCu/data/sys.1423", - "/root/data/AlMgCu/data/sys.1424", - "/root/data/AlMgCu/data/sys.1425", - "/root/data/AlMgCu/data/sys.1427", - "/root/data/AlMgCu/data/sys.1428", - "/root/data/AlMgCu/data/sys.1429", - "/root/data/AlMgCu/data/sys.143", - "/root/data/AlMgCu/data/sys.1430", - "/root/data/AlMgCu/data/sys.1431", - "/root/data/AlMgCu/data/sys.1432", - "/root/data/AlMgCu/data/sys.1433", - "/root/data/AlMgCu/data/sys.1434", - "/root/data/AlMgCu/data/sys.1435", - "/root/data/AlMgCu/data/sys.1436", - "/root/data/AlMgCu/data/sys.1437", - "/root/data/AlMgCu/data/sys.1438", - "/root/data/AlMgCu/data/sys.1439", - "/root/data/AlMgCu/data/sys.144", - "/root/data/AlMgCu/data/sys.1440", - "/root/data/AlMgCu/data/sys.1441", - "/root/data/AlMgCu/data/sys.1442", - "/root/data/AlMgCu/data/sys.1443", - "/root/data/AlMgCu/data/sys.1444", - "/root/data/AlMgCu/data/sys.1445", - "/root/data/AlMgCu/data/sys.1446", - "/root/data/AlMgCu/data/sys.1447", - "/root/data/AlMgCu/data/sys.1448", - "/root/data/AlMgCu/data/sys.1449", - "/root/data/AlMgCu/data/sys.145", - "/root/data/AlMgCu/data/sys.1450", - "/root/data/AlMgCu/data/sys.1451", - "/root/data/AlMgCu/data/sys.1452", - "/root/data/AlMgCu/data/sys.1453", - "/root/data/AlMgCu/data/sys.1454", - "/root/data/AlMgCu/data/sys.1455", - "/root/data/AlMgCu/data/sys.1456", - "/root/data/AlMgCu/data/sys.1457", - "/root/data/AlMgCu/data/sys.1458", - "/root/data/AlMgCu/data/sys.1459", - "/root/data/AlMgCu/data/sys.1461", - "/root/data/AlMgCu/data/sys.1462", - "/root/data/AlMgCu/data/sys.1463", - "/root/data/AlMgCu/data/sys.1464", - "/root/data/AlMgCu/data/sys.1465", - "/root/data/AlMgCu/data/sys.1466", - "/root/data/AlMgCu/data/sys.1467", - "/root/data/AlMgCu/data/sys.1468", - "/root/data/AlMgCu/data/sys.1469", - "/root/data/AlMgCu/data/sys.147", - "/root/data/AlMgCu/data/sys.1470", - "/root/data/AlMgCu/data/sys.1471", - "/root/data/AlMgCu/data/sys.1473", - "/root/data/AlMgCu/data/sys.1474", - "/root/data/AlMgCu/data/sys.1475", - "/root/data/AlMgCu/data/sys.1476", - "/root/data/AlMgCu/data/sys.1477", - "/root/data/AlMgCu/data/sys.1478", - "/root/data/AlMgCu/data/sys.1479", - "/root/data/AlMgCu/data/sys.148", - "/root/data/AlMgCu/data/sys.1480", - "/root/data/AlMgCu/data/sys.1483", - "/root/data/AlMgCu/data/sys.1484", - "/root/data/AlMgCu/data/sys.1485", - "/root/data/AlMgCu/data/sys.1487", - "/root/data/AlMgCu/data/sys.1488", - "/root/data/AlMgCu/data/sys.1489", - "/root/data/AlMgCu/data/sys.149", - "/root/data/AlMgCu/data/sys.1490", - "/root/data/AlMgCu/data/sys.1491", - "/root/data/AlMgCu/data/sys.1492", - "/root/data/AlMgCu/data/sys.1494", - "/root/data/AlMgCu/data/sys.1495", - "/root/data/AlMgCu/data/sys.1496", - "/root/data/AlMgCu/data/sys.1497", - "/root/data/AlMgCu/data/sys.1498", - "/root/data/AlMgCu/data/sys.1499", - "/root/data/AlMgCu/data/sys.1500", - "/root/data/AlMgCu/data/sys.1501", - "/root/data/AlMgCu/data/sys.1502", - "/root/data/AlMgCu/data/sys.1503", - "/root/data/AlMgCu/data/sys.1504", - "/root/data/AlMgCu/data/sys.1505", - "/root/data/AlMgCu/data/sys.1506", - "/root/data/AlMgCu/data/sys.1507", - "/root/data/AlMgCu/data/sys.1508", - "/root/data/AlMgCu/data/sys.1509", - "/root/data/AlMgCu/data/sys.151", - "/root/data/AlMgCu/data/sys.1510", - "/root/data/AlMgCu/data/sys.1511", - "/root/data/AlMgCu/data/sys.1512", - "/root/data/AlMgCu/data/sys.1513", - "/root/data/AlMgCu/data/sys.1515", - "/root/data/AlMgCu/data/sys.1516", - "/root/data/AlMgCu/data/sys.1517", - "/root/data/AlMgCu/data/sys.1518", - "/root/data/AlMgCu/data/sys.1519", - "/root/data/AlMgCu/data/sys.152", - "/root/data/AlMgCu/data/sys.1520", - "/root/data/AlMgCu/data/sys.1521", - "/root/data/AlMgCu/data/sys.1522", - "/root/data/AlMgCu/data/sys.1523", - "/root/data/AlMgCu/data/sys.1524", - "/root/data/AlMgCu/data/sys.1525", - "/root/data/AlMgCu/data/sys.1526", - "/root/data/AlMgCu/data/sys.1527", - "/root/data/AlMgCu/data/sys.1528", - "/root/data/AlMgCu/data/sys.1529", - "/root/data/AlMgCu/data/sys.153", - "/root/data/AlMgCu/data/sys.1530", - "/root/data/AlMgCu/data/sys.1531", - "/root/data/AlMgCu/data/sys.1532", - "/root/data/AlMgCu/data/sys.1533", - "/root/data/AlMgCu/data/sys.1534", - "/root/data/AlMgCu/data/sys.1535", - "/root/data/AlMgCu/data/sys.1536", - "/root/data/AlMgCu/data/sys.1537", - "/root/data/AlMgCu/data/sys.1538", - "/root/data/AlMgCu/data/sys.1539", - "/root/data/AlMgCu/data/sys.154", - "/root/data/AlMgCu/data/sys.1540", - "/root/data/AlMgCu/data/sys.1541", - "/root/data/AlMgCu/data/sys.1542", - "/root/data/AlMgCu/data/sys.1543", - "/root/data/AlMgCu/data/sys.1544", - "/root/data/AlMgCu/data/sys.1545", - "/root/data/AlMgCu/data/sys.1546", - "/root/data/AlMgCu/data/sys.1547", - "/root/data/AlMgCu/data/sys.1548", - "/root/data/AlMgCu/data/sys.1549", - "/root/data/AlMgCu/data/sys.155", - "/root/data/AlMgCu/data/sys.1550", - "/root/data/AlMgCu/data/sys.1551", - "/root/data/AlMgCu/data/sys.1552", - "/root/data/AlMgCu/data/sys.1554", - "/root/data/AlMgCu/data/sys.1555", - "/root/data/AlMgCu/data/sys.1556", - "/root/data/AlMgCu/data/sys.1557", - "/root/data/AlMgCu/data/sys.1558", - "/root/data/AlMgCu/data/sys.1559", - "/root/data/AlMgCu/data/sys.156", - "/root/data/AlMgCu/data/sys.1560", - "/root/data/AlMgCu/data/sys.1561", - "/root/data/AlMgCu/data/sys.1562", - "/root/data/AlMgCu/data/sys.1563", - "/root/data/AlMgCu/data/sys.1564", - "/root/data/AlMgCu/data/sys.1565", - "/root/data/AlMgCu/data/sys.1566", - "/root/data/AlMgCu/data/sys.1567", - "/root/data/AlMgCu/data/sys.1568", - "/root/data/AlMgCu/data/sys.1569", - "/root/data/AlMgCu/data/sys.157", - "/root/data/AlMgCu/data/sys.1570", - "/root/data/AlMgCu/data/sys.1571", - "/root/data/AlMgCu/data/sys.1572", - "/root/data/AlMgCu/data/sys.1573", - "/root/data/AlMgCu/data/sys.1574", - "/root/data/AlMgCu/data/sys.1575", - "/root/data/AlMgCu/data/sys.1576", - "/root/data/AlMgCu/data/sys.1578", - "/root/data/AlMgCu/data/sys.1579", - "/root/data/AlMgCu/data/sys.158", - "/root/data/AlMgCu/data/sys.1580", - "/root/data/AlMgCu/data/sys.1581", - "/root/data/AlMgCu/data/sys.1582", - "/root/data/AlMgCu/data/sys.1583", - "/root/data/AlMgCu/data/sys.1585", - "/root/data/AlMgCu/data/sys.1586", - "/root/data/AlMgCu/data/sys.1587", - "/root/data/AlMgCu/data/sys.1588", - "/root/data/AlMgCu/data/sys.1589", - "/root/data/AlMgCu/data/sys.159", - "/root/data/AlMgCu/data/sys.1590", - "/root/data/AlMgCu/data/sys.1591", - "/root/data/AlMgCu/data/sys.1592", - "/root/data/AlMgCu/data/sys.1594", - "/root/data/AlMgCu/data/sys.1595", - "/root/data/AlMgCu/data/sys.1596", - "/root/data/AlMgCu/data/sys.1597", - "/root/data/AlMgCu/data/sys.1598", - "/root/data/AlMgCu/data/sys.1599", - "/root/data/AlMgCu/data/sys.160", - "/root/data/AlMgCu/data/sys.1600", - "/root/data/AlMgCu/data/sys.1602", - "/root/data/AlMgCu/data/sys.1604", - "/root/data/AlMgCu/data/sys.1605", - "/root/data/AlMgCu/data/sys.1606", - "/root/data/AlMgCu/data/sys.1608", - "/root/data/AlMgCu/data/sys.1609", - "/root/data/AlMgCu/data/sys.161", - "/root/data/AlMgCu/data/sys.1610", - "/root/data/AlMgCu/data/sys.1611", - "/root/data/AlMgCu/data/sys.1612", - "/root/data/AlMgCu/data/sys.1613", - "/root/data/AlMgCu/data/sys.1614", - "/root/data/AlMgCu/data/sys.1615", - "/root/data/AlMgCu/data/sys.1616", - "/root/data/AlMgCu/data/sys.1617", - "/root/data/AlMgCu/data/sys.1618", - "/root/data/AlMgCu/data/sys.1619", - "/root/data/AlMgCu/data/sys.162", - "/root/data/AlMgCu/data/sys.1620", - "/root/data/AlMgCu/data/sys.1621", - "/root/data/AlMgCu/data/sys.1622", - "/root/data/AlMgCu/data/sys.1623", - "/root/data/AlMgCu/data/sys.1624", - "/root/data/AlMgCu/data/sys.1625", - "/root/data/AlMgCu/data/sys.1626", - "/root/data/AlMgCu/data/sys.1627", - "/root/data/AlMgCu/data/sys.1629", - "/root/data/AlMgCu/data/sys.163", - "/root/data/AlMgCu/data/sys.1630", - "/root/data/AlMgCu/data/sys.1632", - "/root/data/AlMgCu/data/sys.1633", - "/root/data/AlMgCu/data/sys.1634", - "/root/data/AlMgCu/data/sys.1635", - "/root/data/AlMgCu/data/sys.1636", - "/root/data/AlMgCu/data/sys.1637", - "/root/data/AlMgCu/data/sys.1638", - "/root/data/AlMgCu/data/sys.1639", - "/root/data/AlMgCu/data/sys.164", - "/root/data/AlMgCu/data/sys.1640", - "/root/data/AlMgCu/data/sys.1641", - "/root/data/AlMgCu/data/sys.1642", - "/root/data/AlMgCu/data/sys.1643", - "/root/data/AlMgCu/data/sys.1644", - "/root/data/AlMgCu/data/sys.1645", - "/root/data/AlMgCu/data/sys.1646", - "/root/data/AlMgCu/data/sys.1648", - "/root/data/AlMgCu/data/sys.1649", - "/root/data/AlMgCu/data/sys.165", - "/root/data/AlMgCu/data/sys.1652", - "/root/data/AlMgCu/data/sys.1653", - "/root/data/AlMgCu/data/sys.1654", - "/root/data/AlMgCu/data/sys.1655", - "/root/data/AlMgCu/data/sys.1656", - "/root/data/AlMgCu/data/sys.1657", - "/root/data/AlMgCu/data/sys.1658", - "/root/data/AlMgCu/data/sys.1659", - "/root/data/AlMgCu/data/sys.166", - "/root/data/AlMgCu/data/sys.1660", - "/root/data/AlMgCu/data/sys.1662", - "/root/data/AlMgCu/data/sys.1663", - "/root/data/AlMgCu/data/sys.1664", - "/root/data/AlMgCu/data/sys.1665", - "/root/data/AlMgCu/data/sys.1666", - "/root/data/AlMgCu/data/sys.1667", - "/root/data/AlMgCu/data/sys.1669", - "/root/data/AlMgCu/data/sys.167", - "/root/data/AlMgCu/data/sys.1670", - "/root/data/AlMgCu/data/sys.1672", - "/root/data/AlMgCu/data/sys.1673", - "/root/data/AlMgCu/data/sys.1674", - "/root/data/AlMgCu/data/sys.1675", - "/root/data/AlMgCu/data/sys.1676", - "/root/data/AlMgCu/data/sys.1677", - "/root/data/AlMgCu/data/sys.1678", - "/root/data/AlMgCu/data/sys.168", - "/root/data/AlMgCu/data/sys.1680", - "/root/data/AlMgCu/data/sys.1681", - "/root/data/AlMgCu/data/sys.1682", - "/root/data/AlMgCu/data/sys.1685", - "/root/data/AlMgCu/data/sys.1686", - "/root/data/AlMgCu/data/sys.1689", - "/root/data/AlMgCu/data/sys.169", - "/root/data/AlMgCu/data/sys.1691", - "/root/data/AlMgCu/data/sys.1692", - "/root/data/AlMgCu/data/sys.1693", - "/root/data/AlMgCu/data/sys.1694", - "/root/data/AlMgCu/data/sys.1695", - "/root/data/AlMgCu/data/sys.1696", - "/root/data/AlMgCu/data/sys.1697", - "/root/data/AlMgCu/data/sys.1698", - "/root/data/AlMgCu/data/sys.1699", - "/root/data/AlMgCu/data/sys.170", - "/root/data/AlMgCu/data/sys.1700", - "/root/data/AlMgCu/data/sys.1701", - "/root/data/AlMgCu/data/sys.1703", - "/root/data/AlMgCu/data/sys.1705", - "/root/data/AlMgCu/data/sys.1706", - "/root/data/AlMgCu/data/sys.1707", - "/root/data/AlMgCu/data/sys.1708", - "/root/data/AlMgCu/data/sys.1709", - "/root/data/AlMgCu/data/sys.171", - "/root/data/AlMgCu/data/sys.1710", - "/root/data/AlMgCu/data/sys.1712", - "/root/data/AlMgCu/data/sys.1713", - "/root/data/AlMgCu/data/sys.1714", - "/root/data/AlMgCu/data/sys.1715", - "/root/data/AlMgCu/data/sys.1716", - "/root/data/AlMgCu/data/sys.1717", - "/root/data/AlMgCu/data/sys.1718", - "/root/data/AlMgCu/data/sys.1720", - "/root/data/AlMgCu/data/sys.1721", - "/root/data/AlMgCu/data/sys.1722", - "/root/data/AlMgCu/data/sys.1723", - "/root/data/AlMgCu/data/sys.1724", - "/root/data/AlMgCu/data/sys.1725", - "/root/data/AlMgCu/data/sys.1726", - "/root/data/AlMgCu/data/sys.1727", - "/root/data/AlMgCu/data/sys.1728", - "/root/data/AlMgCu/data/sys.1729", - "/root/data/AlMgCu/data/sys.173", - "/root/data/AlMgCu/data/sys.1730", - "/root/data/AlMgCu/data/sys.1731", - "/root/data/AlMgCu/data/sys.1732", - "/root/data/AlMgCu/data/sys.1733", - "/root/data/AlMgCu/data/sys.1734", - "/root/data/AlMgCu/data/sys.1735", - "/root/data/AlMgCu/data/sys.1736", - "/root/data/AlMgCu/data/sys.1737", - "/root/data/AlMgCu/data/sys.1738", - "/root/data/AlMgCu/data/sys.1739", - "/root/data/AlMgCu/data/sys.174", - "/root/data/AlMgCu/data/sys.1740", - "/root/data/AlMgCu/data/sys.1741", - "/root/data/AlMgCu/data/sys.1742", - "/root/data/AlMgCu/data/sys.1743", - "/root/data/AlMgCu/data/sys.1744", - "/root/data/AlMgCu/data/sys.1745", - "/root/data/AlMgCu/data/sys.1746", - "/root/data/AlMgCu/data/sys.1747", - "/root/data/AlMgCu/data/sys.1748", - "/root/data/AlMgCu/data/sys.1749", - "/root/data/AlMgCu/data/sys.175", - "/root/data/AlMgCu/data/sys.1751", - "/root/data/AlMgCu/data/sys.1752", - "/root/data/AlMgCu/data/sys.1754", - "/root/data/AlMgCu/data/sys.1755", - "/root/data/AlMgCu/data/sys.1756", - "/root/data/AlMgCu/data/sys.1757", - "/root/data/AlMgCu/data/sys.1758", - "/root/data/AlMgCu/data/sys.1759", - "/root/data/AlMgCu/data/sys.1760", - "/root/data/AlMgCu/data/sys.1761", - "/root/data/AlMgCu/data/sys.1762", - "/root/data/AlMgCu/data/sys.1763", - "/root/data/AlMgCu/data/sys.1764", - "/root/data/AlMgCu/data/sys.1765", - "/root/data/AlMgCu/data/sys.1766", - "/root/data/AlMgCu/data/sys.1767", - "/root/data/AlMgCu/data/sys.1768", - "/root/data/AlMgCu/data/sys.1769", - "/root/data/AlMgCu/data/sys.177", - "/root/data/AlMgCu/data/sys.1770", - "/root/data/AlMgCu/data/sys.1771", - "/root/data/AlMgCu/data/sys.1772", - "/root/data/AlMgCu/data/sys.1773", - "/root/data/AlMgCu/data/sys.1774", - "/root/data/AlMgCu/data/sys.1775", - "/root/data/AlMgCu/data/sys.1776", - "/root/data/AlMgCu/data/sys.1777", - "/root/data/AlMgCu/data/sys.1778", - "/root/data/AlMgCu/data/sys.1779", - "/root/data/AlMgCu/data/sys.178", - "/root/data/AlMgCu/data/sys.1780", - "/root/data/AlMgCu/data/sys.1781", - "/root/data/AlMgCu/data/sys.1782", - "/root/data/AlMgCu/data/sys.1783", - "/root/data/AlMgCu/data/sys.1784", - "/root/data/AlMgCu/data/sys.1785", - "/root/data/AlMgCu/data/sys.1786", - "/root/data/AlMgCu/data/sys.1787", - "/root/data/AlMgCu/data/sys.1789", - "/root/data/AlMgCu/data/sys.179", - "/root/data/AlMgCu/data/sys.1790", - "/root/data/AlMgCu/data/sys.1791", - "/root/data/AlMgCu/data/sys.1792", - "/root/data/AlMgCu/data/sys.1794", - "/root/data/AlMgCu/data/sys.1795", - "/root/data/AlMgCu/data/sys.1796", - "/root/data/AlMgCu/data/sys.1797", - "/root/data/AlMgCu/data/sys.1798", - "/root/data/AlMgCu/data/sys.1799", - "/root/data/AlMgCu/data/sys.180", - "/root/data/AlMgCu/data/sys.1800", - "/root/data/AlMgCu/data/sys.1801", - "/root/data/AlMgCu/data/sys.1802", - "/root/data/AlMgCu/data/sys.1805", - "/root/data/AlMgCu/data/sys.1806", - "/root/data/AlMgCu/data/sys.1807", - "/root/data/AlMgCu/data/sys.1808", - "/root/data/AlMgCu/data/sys.1809", - "/root/data/AlMgCu/data/sys.181", - "/root/data/AlMgCu/data/sys.1811", - "/root/data/AlMgCu/data/sys.1812", - "/root/data/AlMgCu/data/sys.1813", - "/root/data/AlMgCu/data/sys.1814", - "/root/data/AlMgCu/data/sys.1815", - "/root/data/AlMgCu/data/sys.1816", - "/root/data/AlMgCu/data/sys.1817", - "/root/data/AlMgCu/data/sys.1818", - "/root/data/AlMgCu/data/sys.1819", - "/root/data/AlMgCu/data/sys.182", - "/root/data/AlMgCu/data/sys.1820", - "/root/data/AlMgCu/data/sys.1821", - "/root/data/AlMgCu/data/sys.1822", - "/root/data/AlMgCu/data/sys.1823", - "/root/data/AlMgCu/data/sys.1824", - "/root/data/AlMgCu/data/sys.1826", - "/root/data/AlMgCu/data/sys.1827", - "/root/data/AlMgCu/data/sys.1828", - "/root/data/AlMgCu/data/sys.183", - "/root/data/AlMgCu/data/sys.1831", - "/root/data/AlMgCu/data/sys.1832", - "/root/data/AlMgCu/data/sys.1833", - "/root/data/AlMgCu/data/sys.1834", - "/root/data/AlMgCu/data/sys.1835", - "/root/data/AlMgCu/data/sys.1836", - "/root/data/AlMgCu/data/sys.1837", - "/root/data/AlMgCu/data/sys.1838", - "/root/data/AlMgCu/data/sys.1839", - "/root/data/AlMgCu/data/sys.184", - "/root/data/AlMgCu/data/sys.1840", - "/root/data/AlMgCu/data/sys.1842", - "/root/data/AlMgCu/data/sys.1843", - "/root/data/AlMgCu/data/sys.1845", - "/root/data/AlMgCu/data/sys.1846", - "/root/data/AlMgCu/data/sys.1847", - "/root/data/AlMgCu/data/sys.1848", - "/root/data/AlMgCu/data/sys.1849", - "/root/data/AlMgCu/data/sys.185", - "/root/data/AlMgCu/data/sys.1850", - "/root/data/AlMgCu/data/sys.1852", - "/root/data/AlMgCu/data/sys.1853", - "/root/data/AlMgCu/data/sys.1854", - "/root/data/AlMgCu/data/sys.1855", - "/root/data/AlMgCu/data/sys.1856", - "/root/data/AlMgCu/data/sys.1857", - "/root/data/AlMgCu/data/sys.1858", - "/root/data/AlMgCu/data/sys.1859", - "/root/data/AlMgCu/data/sys.186", - "/root/data/AlMgCu/data/sys.1860", - "/root/data/AlMgCu/data/sys.1861", - "/root/data/AlMgCu/data/sys.1862", - "/root/data/AlMgCu/data/sys.1863", - "/root/data/AlMgCu/data/sys.1864", - "/root/data/AlMgCu/data/sys.1865", - "/root/data/AlMgCu/data/sys.1866", - "/root/data/AlMgCu/data/sys.1867", - "/root/data/AlMgCu/data/sys.1868", - "/root/data/AlMgCu/data/sys.1869", - "/root/data/AlMgCu/data/sys.187", - "/root/data/AlMgCu/data/sys.1870", - "/root/data/AlMgCu/data/sys.1872", - "/root/data/AlMgCu/data/sys.1874", - "/root/data/AlMgCu/data/sys.1875", - "/root/data/AlMgCu/data/sys.1876", - "/root/data/AlMgCu/data/sys.1877", - "/root/data/AlMgCu/data/sys.1878", - "/root/data/AlMgCu/data/sys.1879", - "/root/data/AlMgCu/data/sys.188", - "/root/data/AlMgCu/data/sys.1880", - "/root/data/AlMgCu/data/sys.1882", - "/root/data/AlMgCu/data/sys.1883", - "/root/data/AlMgCu/data/sys.1884", - "/root/data/AlMgCu/data/sys.1885", - "/root/data/AlMgCu/data/sys.1886", - "/root/data/AlMgCu/data/sys.1887", - "/root/data/AlMgCu/data/sys.1888", - "/root/data/AlMgCu/data/sys.1889", - "/root/data/AlMgCu/data/sys.189", - "/root/data/AlMgCu/data/sys.1890", - "/root/data/AlMgCu/data/sys.1891", - "/root/data/AlMgCu/data/sys.1892", - "/root/data/AlMgCu/data/sys.1893", - "/root/data/AlMgCu/data/sys.1894", - "/root/data/AlMgCu/data/sys.1895", - "/root/data/AlMgCu/data/sys.1896", - "/root/data/AlMgCu/data/sys.1897", - "/root/data/AlMgCu/data/sys.1898", - "/root/data/AlMgCu/data/sys.1899", - "/root/data/AlMgCu/data/sys.190", - "/root/data/AlMgCu/data/sys.1900", - "/root/data/AlMgCu/data/sys.1902", - "/root/data/AlMgCu/data/sys.1903", - "/root/data/AlMgCu/data/sys.1904", - "/root/data/AlMgCu/data/sys.1905", - "/root/data/AlMgCu/data/sys.1906", - "/root/data/AlMgCu/data/sys.1907", - "/root/data/AlMgCu/data/sys.1908", - "/root/data/AlMgCu/data/sys.1909", - "/root/data/AlMgCu/data/sys.191", - "/root/data/AlMgCu/data/sys.1910", - "/root/data/AlMgCu/data/sys.1911", - "/root/data/AlMgCu/data/sys.1912", - "/root/data/AlMgCu/data/sys.1913", - "/root/data/AlMgCu/data/sys.1914", - "/root/data/AlMgCu/data/sys.1915", - "/root/data/AlMgCu/data/sys.1916", - "/root/data/AlMgCu/data/sys.1918", - "/root/data/AlMgCu/data/sys.1919", - "/root/data/AlMgCu/data/sys.192", - "/root/data/AlMgCu/data/sys.1920", - "/root/data/AlMgCu/data/sys.1922", - "/root/data/AlMgCu/data/sys.1923", - "/root/data/AlMgCu/data/sys.1924", - "/root/data/AlMgCu/data/sys.1925", - "/root/data/AlMgCu/data/sys.1926", - "/root/data/AlMgCu/data/sys.1927", - "/root/data/AlMgCu/data/sys.1928", - "/root/data/AlMgCu/data/sys.1929", - "/root/data/AlMgCu/data/sys.193", - "/root/data/AlMgCu/data/sys.1930", - "/root/data/AlMgCu/data/sys.1931", - "/root/data/AlMgCu/data/sys.1933", - "/root/data/AlMgCu/data/sys.1935", - "/root/data/AlMgCu/data/sys.1936", - "/root/data/AlMgCu/data/sys.1938", - "/root/data/AlMgCu/data/sys.1939", - "/root/data/AlMgCu/data/sys.1940", - "/root/data/AlMgCu/data/sys.1941", - "/root/data/AlMgCu/data/sys.1942", - "/root/data/AlMgCu/data/sys.1943", - "/root/data/AlMgCu/data/sys.1944", - "/root/data/AlMgCu/data/sys.1946", - "/root/data/AlMgCu/data/sys.1947", - "/root/data/AlMgCu/data/sys.1948", - "/root/data/AlMgCu/data/sys.1949", - "/root/data/AlMgCu/data/sys.195", - "/root/data/AlMgCu/data/sys.1951", - "/root/data/AlMgCu/data/sys.1952", - "/root/data/AlMgCu/data/sys.1953", - "/root/data/AlMgCu/data/sys.1954", - "/root/data/AlMgCu/data/sys.1955", - "/root/data/AlMgCu/data/sys.1956", - "/root/data/AlMgCu/data/sys.1957", - "/root/data/AlMgCu/data/sys.1958", - "/root/data/AlMgCu/data/sys.1959", - "/root/data/AlMgCu/data/sys.196", - "/root/data/AlMgCu/data/sys.1960", - "/root/data/AlMgCu/data/sys.1961", - "/root/data/AlMgCu/data/sys.1962", - "/root/data/AlMgCu/data/sys.1963", - "/root/data/AlMgCu/data/sys.1964", - "/root/data/AlMgCu/data/sys.1965", - "/root/data/AlMgCu/data/sys.1966", - "/root/data/AlMgCu/data/sys.1967", - "/root/data/AlMgCu/data/sys.1968", - "/root/data/AlMgCu/data/sys.197", - "/root/data/AlMgCu/data/sys.1970", - "/root/data/AlMgCu/data/sys.1971", - "/root/data/AlMgCu/data/sys.1972", - "/root/data/AlMgCu/data/sys.1973", - "/root/data/AlMgCu/data/sys.1974", - "/root/data/AlMgCu/data/sys.1975", - "/root/data/AlMgCu/data/sys.1977", - "/root/data/AlMgCu/data/sys.1979", - "/root/data/AlMgCu/data/sys.198", - "/root/data/AlMgCu/data/sys.1980", - "/root/data/AlMgCu/data/sys.1981", - "/root/data/AlMgCu/data/sys.1982", - "/root/data/AlMgCu/data/sys.1983", - "/root/data/AlMgCu/data/sys.1984", - "/root/data/AlMgCu/data/sys.1985", - "/root/data/AlMgCu/data/sys.1986", - "/root/data/AlMgCu/data/sys.1987", - "/root/data/AlMgCu/data/sys.1988", - "/root/data/AlMgCu/data/sys.1989", - "/root/data/AlMgCu/data/sys.199", - "/root/data/AlMgCu/data/sys.1990", - "/root/data/AlMgCu/data/sys.1991", - "/root/data/AlMgCu/data/sys.1992", - "/root/data/AlMgCu/data/sys.1993", - "/root/data/AlMgCu/data/sys.1994", - "/root/data/AlMgCu/data/sys.1995", - "/root/data/AlMgCu/data/sys.1996", - "/root/data/AlMgCu/data/sys.1997", - "/root/data/AlMgCu/data/sys.1998", - "/root/data/AlMgCu/data/sys.1999", - "/root/data/AlMgCu/data/sys.200", - "/root/data/AlMgCu/data/sys.2000", - "/root/data/AlMgCu/data/sys.2001", - "/root/data/AlMgCu/data/sys.2002", - "/root/data/AlMgCu/data/sys.2003", - "/root/data/AlMgCu/data/sys.2004", - "/root/data/AlMgCu/data/sys.2005", - "/root/data/AlMgCu/data/sys.2007", - "/root/data/AlMgCu/data/sys.2009", - "/root/data/AlMgCu/data/sys.201", - "/root/data/AlMgCu/data/sys.2011", - "/root/data/AlMgCu/data/sys.2012", - "/root/data/AlMgCu/data/sys.2013", - "/root/data/AlMgCu/data/sys.2014", - "/root/data/AlMgCu/data/sys.2015", - "/root/data/AlMgCu/data/sys.2016", - "/root/data/AlMgCu/data/sys.2017", - "/root/data/AlMgCu/data/sys.2018", - "/root/data/AlMgCu/data/sys.202", - "/root/data/AlMgCu/data/sys.2020", - "/root/data/AlMgCu/data/sys.2022", - "/root/data/AlMgCu/data/sys.2023", - "/root/data/AlMgCu/data/sys.2024", - "/root/data/AlMgCu/data/sys.2025", - "/root/data/AlMgCu/data/sys.2027", - "/root/data/AlMgCu/data/sys.2028", - "/root/data/AlMgCu/data/sys.2029", - "/root/data/AlMgCu/data/sys.203", - "/root/data/AlMgCu/data/sys.2030", - "/root/data/AlMgCu/data/sys.2031", - "/root/data/AlMgCu/data/sys.2032", - "/root/data/AlMgCu/data/sys.2033", - "/root/data/AlMgCu/data/sys.2034", - "/root/data/AlMgCu/data/sys.2035", - "/root/data/AlMgCu/data/sys.2036", - "/root/data/AlMgCu/data/sys.2037", - "/root/data/AlMgCu/data/sys.2038", - "/root/data/AlMgCu/data/sys.2039", - "/root/data/AlMgCu/data/sys.204", - "/root/data/AlMgCu/data/sys.2040", - "/root/data/AlMgCu/data/sys.2041", - "/root/data/AlMgCu/data/sys.2042", - "/root/data/AlMgCu/data/sys.2043", - "/root/data/AlMgCu/data/sys.2044", - "/root/data/AlMgCu/data/sys.2046", - "/root/data/AlMgCu/data/sys.2047", - "/root/data/AlMgCu/data/sys.2048", - "/root/data/AlMgCu/data/sys.2050", - "/root/data/AlMgCu/data/sys.2051", - "/root/data/AlMgCu/data/sys.2052", - "/root/data/AlMgCu/data/sys.2053", - "/root/data/AlMgCu/data/sys.2054", - "/root/data/AlMgCu/data/sys.2055", - "/root/data/AlMgCu/data/sys.2056", - "/root/data/AlMgCu/data/sys.2057", - "/root/data/AlMgCu/data/sys.2058", - "/root/data/AlMgCu/data/sys.2059", - "/root/data/AlMgCu/data/sys.206", - "/root/data/AlMgCu/data/sys.2060", - "/root/data/AlMgCu/data/sys.2061", - "/root/data/AlMgCu/data/sys.2062", - "/root/data/AlMgCu/data/sys.2063", - "/root/data/AlMgCu/data/sys.2064", - "/root/data/AlMgCu/data/sys.2065", - "/root/data/AlMgCu/data/sys.2066", - "/root/data/AlMgCu/data/sys.2067", - "/root/data/AlMgCu/data/sys.2068", - "/root/data/AlMgCu/data/sys.2069", - "/root/data/AlMgCu/data/sys.2070", - "/root/data/AlMgCu/data/sys.2071", - "/root/data/AlMgCu/data/sys.2072", - "/root/data/AlMgCu/data/sys.2073", - "/root/data/AlMgCu/data/sys.2074", - "/root/data/AlMgCu/data/sys.2075", - "/root/data/AlMgCu/data/sys.2078", - "/root/data/AlMgCu/data/sys.2079", - "/root/data/AlMgCu/data/sys.208", - "/root/data/AlMgCu/data/sys.2080", - "/root/data/AlMgCu/data/sys.2081", - "/root/data/AlMgCu/data/sys.2082", - "/root/data/AlMgCu/data/sys.2083", - "/root/data/AlMgCu/data/sys.2084", - "/root/data/AlMgCu/data/sys.2085", - "/root/data/AlMgCu/data/sys.2086", - "/root/data/AlMgCu/data/sys.2087", - "/root/data/AlMgCu/data/sys.2088", - "/root/data/AlMgCu/data/sys.2089", - "/root/data/AlMgCu/data/sys.209", - "/root/data/AlMgCu/data/sys.2090", - "/root/data/AlMgCu/data/sys.2091", - "/root/data/AlMgCu/data/sys.2092", - "/root/data/AlMgCu/data/sys.2093", - "/root/data/AlMgCu/data/sys.2094", - "/root/data/AlMgCu/data/sys.2095", - "/root/data/AlMgCu/data/sys.2096", - "/root/data/AlMgCu/data/sys.2097", - "/root/data/AlMgCu/data/sys.2098", - "/root/data/AlMgCu/data/sys.2099", - "/root/data/AlMgCu/data/sys.210", - "/root/data/AlMgCu/data/sys.2100", - "/root/data/AlMgCu/data/sys.2101", - "/root/data/AlMgCu/data/sys.2102", - "/root/data/AlMgCu/data/sys.2103", - "/root/data/AlMgCu/data/sys.2104", - "/root/data/AlMgCu/data/sys.2105", - "/root/data/AlMgCu/data/sys.2106", - "/root/data/AlMgCu/data/sys.2107", - "/root/data/AlMgCu/data/sys.2108", - "/root/data/AlMgCu/data/sys.2109", - "/root/data/AlMgCu/data/sys.211", - "/root/data/AlMgCu/data/sys.2110", - "/root/data/AlMgCu/data/sys.2111", - "/root/data/AlMgCu/data/sys.2112", - "/root/data/AlMgCu/data/sys.2113", - "/root/data/AlMgCu/data/sys.2114", - "/root/data/AlMgCu/data/sys.2116", - "/root/data/AlMgCu/data/sys.2117", - "/root/data/AlMgCu/data/sys.2118", - "/root/data/AlMgCu/data/sys.2119", - "/root/data/AlMgCu/data/sys.212", - "/root/data/AlMgCu/data/sys.2120", - "/root/data/AlMgCu/data/sys.2121", - "/root/data/AlMgCu/data/sys.2123", - "/root/data/AlMgCu/data/sys.2124", - "/root/data/AlMgCu/data/sys.2125", - "/root/data/AlMgCu/data/sys.2126", - "/root/data/AlMgCu/data/sys.2127", - "/root/data/AlMgCu/data/sys.2129", - "/root/data/AlMgCu/data/sys.213", - "/root/data/AlMgCu/data/sys.2130", - "/root/data/AlMgCu/data/sys.2132", - "/root/data/AlMgCu/data/sys.2133", - "/root/data/AlMgCu/data/sys.2134", - "/root/data/AlMgCu/data/sys.2136", - "/root/data/AlMgCu/data/sys.2137", - "/root/data/AlMgCu/data/sys.2138", - "/root/data/AlMgCu/data/sys.2139", - "/root/data/AlMgCu/data/sys.214", - "/root/data/AlMgCu/data/sys.2140", - "/root/data/AlMgCu/data/sys.2141", - "/root/data/AlMgCu/data/sys.2142", - "/root/data/AlMgCu/data/sys.2143", - "/root/data/AlMgCu/data/sys.2144", - "/root/data/AlMgCu/data/sys.2145", - "/root/data/AlMgCu/data/sys.2146", - "/root/data/AlMgCu/data/sys.2147", - "/root/data/AlMgCu/data/sys.2148", - "/root/data/AlMgCu/data/sys.215", - "/root/data/AlMgCu/data/sys.2150", - "/root/data/AlMgCu/data/sys.2151", - "/root/data/AlMgCu/data/sys.2152", - "/root/data/AlMgCu/data/sys.2153", - "/root/data/AlMgCu/data/sys.2154", - "/root/data/AlMgCu/data/sys.2156", - "/root/data/AlMgCu/data/sys.2157", - "/root/data/AlMgCu/data/sys.2158", - "/root/data/AlMgCu/data/sys.216", - "/root/data/AlMgCu/data/sys.2160", - "/root/data/AlMgCu/data/sys.2161", - "/root/data/AlMgCu/data/sys.2162", - "/root/data/AlMgCu/data/sys.2163", - "/root/data/AlMgCu/data/sys.2164", - "/root/data/AlMgCu/data/sys.2165", - "/root/data/AlMgCu/data/sys.2166", - "/root/data/AlMgCu/data/sys.2167", - "/root/data/AlMgCu/data/sys.2168", - "/root/data/AlMgCu/data/sys.2169", - "/root/data/AlMgCu/data/sys.217", - "/root/data/AlMgCu/data/sys.2170", - "/root/data/AlMgCu/data/sys.2174", - "/root/data/AlMgCu/data/sys.2176", - "/root/data/AlMgCu/data/sys.2177", - "/root/data/AlMgCu/data/sys.2178", - "/root/data/AlMgCu/data/sys.2179", - "/root/data/AlMgCu/data/sys.218", - "/root/data/AlMgCu/data/sys.2180", - "/root/data/AlMgCu/data/sys.2181", - "/root/data/AlMgCu/data/sys.2182", - "/root/data/AlMgCu/data/sys.2184", - "/root/data/AlMgCu/data/sys.2185", - "/root/data/AlMgCu/data/sys.2186", - "/root/data/AlMgCu/data/sys.2187", - "/root/data/AlMgCu/data/sys.2188", - "/root/data/AlMgCu/data/sys.2189", - "/root/data/AlMgCu/data/sys.2190", - "/root/data/AlMgCu/data/sys.2191", - "/root/data/AlMgCu/data/sys.2194", - "/root/data/AlMgCu/data/sys.2195", - "/root/data/AlMgCu/data/sys.2196", - "/root/data/AlMgCu/data/sys.2197", - "/root/data/AlMgCu/data/sys.2198", - "/root/data/AlMgCu/data/sys.2199", - "/root/data/AlMgCu/data/sys.220", - "/root/data/AlMgCu/data/sys.2201", - "/root/data/AlMgCu/data/sys.2202", - "/root/data/AlMgCu/data/sys.2203", - "/root/data/AlMgCu/data/sys.2204", - "/root/data/AlMgCu/data/sys.2205", - "/root/data/AlMgCu/data/sys.2207", - "/root/data/AlMgCu/data/sys.2208", - "/root/data/AlMgCu/data/sys.2209", - "/root/data/AlMgCu/data/sys.221", - "/root/data/AlMgCu/data/sys.2210", - "/root/data/AlMgCu/data/sys.2211", - "/root/data/AlMgCu/data/sys.2212", - "/root/data/AlMgCu/data/sys.2213", - "/root/data/AlMgCu/data/sys.2214", - "/root/data/AlMgCu/data/sys.2215", - "/root/data/AlMgCu/data/sys.2216", - "/root/data/AlMgCu/data/sys.2217", - "/root/data/AlMgCu/data/sys.2218", - "/root/data/AlMgCu/data/sys.2219", - "/root/data/AlMgCu/data/sys.222", - "/root/data/AlMgCu/data/sys.2220", - "/root/data/AlMgCu/data/sys.2221", - "/root/data/AlMgCu/data/sys.2222", - "/root/data/AlMgCu/data/sys.2223", - "/root/data/AlMgCu/data/sys.2224", - "/root/data/AlMgCu/data/sys.2225", - "/root/data/AlMgCu/data/sys.2226", - "/root/data/AlMgCu/data/sys.2227", - "/root/data/AlMgCu/data/sys.2228", - "/root/data/AlMgCu/data/sys.2229", - "/root/data/AlMgCu/data/sys.223", - "/root/data/AlMgCu/data/sys.2230", - "/root/data/AlMgCu/data/sys.2231", - "/root/data/AlMgCu/data/sys.2233", - "/root/data/AlMgCu/data/sys.2234", - "/root/data/AlMgCu/data/sys.2235", - "/root/data/AlMgCu/data/sys.2236", - "/root/data/AlMgCu/data/sys.2237", - "/root/data/AlMgCu/data/sys.2238", - "/root/data/AlMgCu/data/sys.2239", - "/root/data/AlMgCu/data/sys.224", - "/root/data/AlMgCu/data/sys.2240", - "/root/data/AlMgCu/data/sys.2241", - "/root/data/AlMgCu/data/sys.2242", - "/root/data/AlMgCu/data/sys.2243", - "/root/data/AlMgCu/data/sys.2244", - "/root/data/AlMgCu/data/sys.2245", - "/root/data/AlMgCu/data/sys.2246", - "/root/data/AlMgCu/data/sys.2247", - "/root/data/AlMgCu/data/sys.2248", - "/root/data/AlMgCu/data/sys.2249", - "/root/data/AlMgCu/data/sys.225", - "/root/data/AlMgCu/data/sys.2250", - "/root/data/AlMgCu/data/sys.2252", - "/root/data/AlMgCu/data/sys.2253", - "/root/data/AlMgCu/data/sys.2254", - "/root/data/AlMgCu/data/sys.2255", - "/root/data/AlMgCu/data/sys.2256", - "/root/data/AlMgCu/data/sys.2257", - "/root/data/AlMgCu/data/sys.2258", - "/root/data/AlMgCu/data/sys.2259", - "/root/data/AlMgCu/data/sys.226", - "/root/data/AlMgCu/data/sys.2260", - "/root/data/AlMgCu/data/sys.2261", - "/root/data/AlMgCu/data/sys.2263", - "/root/data/AlMgCu/data/sys.2264", - "/root/data/AlMgCu/data/sys.2266", - "/root/data/AlMgCu/data/sys.2267", - "/root/data/AlMgCu/data/sys.227", - "/root/data/AlMgCu/data/sys.2270", - "/root/data/AlMgCu/data/sys.2271", - "/root/data/AlMgCu/data/sys.2272", - "/root/data/AlMgCu/data/sys.2275", - "/root/data/AlMgCu/data/sys.2276", - "/root/data/AlMgCu/data/sys.2278", - "/root/data/AlMgCu/data/sys.2279", - "/root/data/AlMgCu/data/sys.228", - "/root/data/AlMgCu/data/sys.2280", - "/root/data/AlMgCu/data/sys.2282", - "/root/data/AlMgCu/data/sys.2284", - "/root/data/AlMgCu/data/sys.2286", - "/root/data/AlMgCu/data/sys.2288", - "/root/data/AlMgCu/data/sys.2289", - "/root/data/AlMgCu/data/sys.229", - "/root/data/AlMgCu/data/sys.2290", - "/root/data/AlMgCu/data/sys.2291", - "/root/data/AlMgCu/data/sys.2292", - "/root/data/AlMgCu/data/sys.2294", - "/root/data/AlMgCu/data/sys.2295", - "/root/data/AlMgCu/data/sys.2296", - "/root/data/AlMgCu/data/sys.2297", - "/root/data/AlMgCu/data/sys.2298", - "/root/data/AlMgCu/data/sys.230", - "/root/data/AlMgCu/data/sys.2300", - "/root/data/AlMgCu/data/sys.2301", - "/root/data/AlMgCu/data/sys.2302", - "/root/data/AlMgCu/data/sys.2303", - "/root/data/AlMgCu/data/sys.2304", - "/root/data/AlMgCu/data/sys.2305", - "/root/data/AlMgCu/data/sys.2306", - "/root/data/AlMgCu/data/sys.2307", - "/root/data/AlMgCu/data/sys.2308", - "/root/data/AlMgCu/data/sys.2309", - "/root/data/AlMgCu/data/sys.2310", - "/root/data/AlMgCu/data/sys.2311", - "/root/data/AlMgCu/data/sys.2312", - "/root/data/AlMgCu/data/sys.2314", - "/root/data/AlMgCu/data/sys.2316", - "/root/data/AlMgCu/data/sys.2318", - "/root/data/AlMgCu/data/sys.232", - "/root/data/AlMgCu/data/sys.2320", - "/root/data/AlMgCu/data/sys.2322", - "/root/data/AlMgCu/data/sys.2323", - "/root/data/AlMgCu/data/sys.2324", - "/root/data/AlMgCu/data/sys.2327", - "/root/data/AlMgCu/data/sys.2328", - "/root/data/AlMgCu/data/sys.2329", - "/root/data/AlMgCu/data/sys.233", - "/root/data/AlMgCu/data/sys.2330", - "/root/data/AlMgCu/data/sys.2331", - "/root/data/AlMgCu/data/sys.2332", - "/root/data/AlMgCu/data/sys.2333", - "/root/data/AlMgCu/data/sys.2334", - "/root/data/AlMgCu/data/sys.2335", - "/root/data/AlMgCu/data/sys.2336", - "/root/data/AlMgCu/data/sys.2338", - "/root/data/AlMgCu/data/sys.2339", - "/root/data/AlMgCu/data/sys.234", - "/root/data/AlMgCu/data/sys.2340", - "/root/data/AlMgCu/data/sys.2341", - "/root/data/AlMgCu/data/sys.2342", - "/root/data/AlMgCu/data/sys.2343", - "/root/data/AlMgCu/data/sys.2344", - "/root/data/AlMgCu/data/sys.2345", - "/root/data/AlMgCu/data/sys.2346", - "/root/data/AlMgCu/data/sys.2348", - "/root/data/AlMgCu/data/sys.235", - "/root/data/AlMgCu/data/sys.2350", - "/root/data/AlMgCu/data/sys.2351", - "/root/data/AlMgCu/data/sys.2352", - "/root/data/AlMgCu/data/sys.2353", - "/root/data/AlMgCu/data/sys.2354", - "/root/data/AlMgCu/data/sys.2356", - "/root/data/AlMgCu/data/sys.2357", - "/root/data/AlMgCu/data/sys.2358", - "/root/data/AlMgCu/data/sys.2359", - "/root/data/AlMgCu/data/sys.236", - "/root/data/AlMgCu/data/sys.2360", - "/root/data/AlMgCu/data/sys.2362", - "/root/data/AlMgCu/data/sys.2363", - "/root/data/AlMgCu/data/sys.2364", - "/root/data/AlMgCu/data/sys.2367", - "/root/data/AlMgCu/data/sys.2369", - "/root/data/AlMgCu/data/sys.237", - "/root/data/AlMgCu/data/sys.2371", - "/root/data/AlMgCu/data/sys.2372", - "/root/data/AlMgCu/data/sys.2374", - "/root/data/AlMgCu/data/sys.2375", - "/root/data/AlMgCu/data/sys.2376", - "/root/data/AlMgCu/data/sys.2377", - "/root/data/AlMgCu/data/sys.2378", - "/root/data/AlMgCu/data/sys.2379", - "/root/data/AlMgCu/data/sys.238", - "/root/data/AlMgCu/data/sys.2380", - "/root/data/AlMgCu/data/sys.2382", - "/root/data/AlMgCu/data/sys.2383", - "/root/data/AlMgCu/data/sys.2384", - "/root/data/AlMgCu/data/sys.2386", - "/root/data/AlMgCu/data/sys.2387", - "/root/data/AlMgCu/data/sys.2388", - "/root/data/AlMgCu/data/sys.2390", - "/root/data/AlMgCu/data/sys.2392", - "/root/data/AlMgCu/data/sys.2393", - "/root/data/AlMgCu/data/sys.2394", - "/root/data/AlMgCu/data/sys.2395", - "/root/data/AlMgCu/data/sys.2396", - "/root/data/AlMgCu/data/sys.2397", - "/root/data/AlMgCu/data/sys.2398", - "/root/data/AlMgCu/data/sys.2399", - "/root/data/AlMgCu/data/sys.240", - "/root/data/AlMgCu/data/sys.2400", - "/root/data/AlMgCu/data/sys.2401", - "/root/data/AlMgCu/data/sys.2402", - "/root/data/AlMgCu/data/sys.2403", - "/root/data/AlMgCu/data/sys.2405", - "/root/data/AlMgCu/data/sys.2406", - "/root/data/AlMgCu/data/sys.2407", - "/root/data/AlMgCu/data/sys.2408", - "/root/data/AlMgCu/data/sys.241", - "/root/data/AlMgCu/data/sys.2410", - "/root/data/AlMgCu/data/sys.2411", - "/root/data/AlMgCu/data/sys.2412", - "/root/data/AlMgCu/data/sys.2414", - "/root/data/AlMgCu/data/sys.2415", - "/root/data/AlMgCu/data/sys.2419", - "/root/data/AlMgCu/data/sys.242", - "/root/data/AlMgCu/data/sys.2420", - "/root/data/AlMgCu/data/sys.2422", - "/root/data/AlMgCu/data/sys.2423", - "/root/data/AlMgCu/data/sys.2424", - "/root/data/AlMgCu/data/sys.2426", - "/root/data/AlMgCu/data/sys.2427", - "/root/data/AlMgCu/data/sys.2428", - "/root/data/AlMgCu/data/sys.243", - "/root/data/AlMgCu/data/sys.2430", - "/root/data/AlMgCu/data/sys.2431", - "/root/data/AlMgCu/data/sys.2432", - "/root/data/AlMgCu/data/sys.2433", - "/root/data/AlMgCu/data/sys.2434", - "/root/data/AlMgCu/data/sys.2435", - "/root/data/AlMgCu/data/sys.2436", - "/root/data/AlMgCu/data/sys.2437", - "/root/data/AlMgCu/data/sys.2438", - "/root/data/AlMgCu/data/sys.2439", - "/root/data/AlMgCu/data/sys.244", - "/root/data/AlMgCu/data/sys.2440", - "/root/data/AlMgCu/data/sys.2441", - "/root/data/AlMgCu/data/sys.2444", - "/root/data/AlMgCu/data/sys.2447", - "/root/data/AlMgCu/data/sys.2448", - "/root/data/AlMgCu/data/sys.245", - "/root/data/AlMgCu/data/sys.2450", - "/root/data/AlMgCu/data/sys.2451", - "/root/data/AlMgCu/data/sys.2452", - "/root/data/AlMgCu/data/sys.2454", - "/root/data/AlMgCu/data/sys.2455", - "/root/data/AlMgCu/data/sys.2456", - "/root/data/AlMgCu/data/sys.2458", - "/root/data/AlMgCu/data/sys.2459", - "/root/data/AlMgCu/data/sys.246", - "/root/data/AlMgCu/data/sys.2460", - "/root/data/AlMgCu/data/sys.2461", - "/root/data/AlMgCu/data/sys.2462", - "/root/data/AlMgCu/data/sys.2463", - "/root/data/AlMgCu/data/sys.2464", - "/root/data/AlMgCu/data/sys.2466", - "/root/data/AlMgCu/data/sys.2467", - "/root/data/AlMgCu/data/sys.2468", - "/root/data/AlMgCu/data/sys.247", - "/root/data/AlMgCu/data/sys.2470", - "/root/data/AlMgCu/data/sys.2471", - "/root/data/AlMgCu/data/sys.2474", - "/root/data/AlMgCu/data/sys.2476", - "/root/data/AlMgCu/data/sys.2477", - "/root/data/AlMgCu/data/sys.2478", - "/root/data/AlMgCu/data/sys.2479", - "/root/data/AlMgCu/data/sys.248", - "/root/data/AlMgCu/data/sys.2480", - "/root/data/AlMgCu/data/sys.2482", - "/root/data/AlMgCu/data/sys.2483", - "/root/data/AlMgCu/data/sys.2484", - "/root/data/AlMgCu/data/sys.2485", - "/root/data/AlMgCu/data/sys.2486", - "/root/data/AlMgCu/data/sys.2488", - "/root/data/AlMgCu/data/sys.249", - "/root/data/AlMgCu/data/sys.2490", - "/root/data/AlMgCu/data/sys.2492", - "/root/data/AlMgCu/data/sys.2494", - "/root/data/AlMgCu/data/sys.2495", - "/root/data/AlMgCu/data/sys.2496", - "/root/data/AlMgCu/data/sys.2497", - "/root/data/AlMgCu/data/sys.2498", - "/root/data/AlMgCu/data/sys.2499", - "/root/data/AlMgCu/data/sys.250", - "/root/data/AlMgCu/data/sys.2501", - "/root/data/AlMgCu/data/sys.2503", - "/root/data/AlMgCu/data/sys.2504", - "/root/data/AlMgCu/data/sys.2508", - "/root/data/AlMgCu/data/sys.2509", - "/root/data/AlMgCu/data/sys.251", - "/root/data/AlMgCu/data/sys.2511", - "/root/data/AlMgCu/data/sys.2512", - "/root/data/AlMgCu/data/sys.2514", - "/root/data/AlMgCu/data/sys.2515", - "/root/data/AlMgCu/data/sys.2516", - "/root/data/AlMgCu/data/sys.2517", - "/root/data/AlMgCu/data/sys.2518", - "/root/data/AlMgCu/data/sys.2519", - "/root/data/AlMgCu/data/sys.252", - "/root/data/AlMgCu/data/sys.2520", - "/root/data/AlMgCu/data/sys.2522", - "/root/data/AlMgCu/data/sys.2523", - "/root/data/AlMgCu/data/sys.2524", - "/root/data/AlMgCu/data/sys.2526", - "/root/data/AlMgCu/data/sys.2527", - "/root/data/AlMgCu/data/sys.2528", - "/root/data/AlMgCu/data/sys.2529", - "/root/data/AlMgCu/data/sys.253", - "/root/data/AlMgCu/data/sys.2530", - "/root/data/AlMgCu/data/sys.2531", - "/root/data/AlMgCu/data/sys.2532", - "/root/data/AlMgCu/data/sys.2534", - "/root/data/AlMgCu/data/sys.2535", - "/root/data/AlMgCu/data/sys.2536", - "/root/data/AlMgCu/data/sys.2537", - "/root/data/AlMgCu/data/sys.2538", - "/root/data/AlMgCu/data/sys.2539", - "/root/data/AlMgCu/data/sys.254", - "/root/data/AlMgCu/data/sys.2540", - "/root/data/AlMgCu/data/sys.2542", - "/root/data/AlMgCu/data/sys.2543", - "/root/data/AlMgCu/data/sys.2544", - "/root/data/AlMgCu/data/sys.2545", - "/root/data/AlMgCu/data/sys.2546", - "/root/data/AlMgCu/data/sys.2548", - "/root/data/AlMgCu/data/sys.255", - "/root/data/AlMgCu/data/sys.2550", - "/root/data/AlMgCu/data/sys.2551", - "/root/data/AlMgCu/data/sys.2554", - "/root/data/AlMgCu/data/sys.2556", - "/root/data/AlMgCu/data/sys.2558", - "/root/data/AlMgCu/data/sys.256", - "/root/data/AlMgCu/data/sys.2560", - "/root/data/AlMgCu/data/sys.2561", - "/root/data/AlMgCu/data/sys.2562", - "/root/data/AlMgCu/data/sys.2563", - "/root/data/AlMgCu/data/sys.2564", - "/root/data/AlMgCu/data/sys.2566", - "/root/data/AlMgCu/data/sys.2567", - "/root/data/AlMgCu/data/sys.2568", - "/root/data/AlMgCu/data/sys.2569", - "/root/data/AlMgCu/data/sys.257", - "/root/data/AlMgCu/data/sys.2570", - "/root/data/AlMgCu/data/sys.2571", - "/root/data/AlMgCu/data/sys.2574", - "/root/data/AlMgCu/data/sys.2575", - "/root/data/AlMgCu/data/sys.2577", - "/root/data/AlMgCu/data/sys.2578", - "/root/data/AlMgCu/data/sys.2579", - "/root/data/AlMgCu/data/sys.258", - "/root/data/AlMgCu/data/sys.2580", - "/root/data/AlMgCu/data/sys.2582", - "/root/data/AlMgCu/data/sys.2583", - "/root/data/AlMgCu/data/sys.2586", - "/root/data/AlMgCu/data/sys.2587", - "/root/data/AlMgCu/data/sys.2590", - "/root/data/AlMgCu/data/sys.2591", - "/root/data/AlMgCu/data/sys.2592", - "/root/data/AlMgCu/data/sys.2593", - "/root/data/AlMgCu/data/sys.2594", - "/root/data/AlMgCu/data/sys.2595", - "/root/data/AlMgCu/data/sys.2596", - "/root/data/AlMgCu/data/sys.2598", - "/root/data/AlMgCu/data/sys.2599", - "/root/data/AlMgCu/data/sys.260", - "/root/data/AlMgCu/data/sys.2600", - "/root/data/AlMgCu/data/sys.2601", - "/root/data/AlMgCu/data/sys.2602", - "/root/data/AlMgCu/data/sys.2603", - "/root/data/AlMgCu/data/sys.2604", - "/root/data/AlMgCu/data/sys.2605", - "/root/data/AlMgCu/data/sys.2606", - "/root/data/AlMgCu/data/sys.2607", - "/root/data/AlMgCu/data/sys.2608", - "/root/data/AlMgCu/data/sys.2609", - "/root/data/AlMgCu/data/sys.2610", - "/root/data/AlMgCu/data/sys.2611", - "/root/data/AlMgCu/data/sys.2613", - "/root/data/AlMgCu/data/sys.2614", - "/root/data/AlMgCu/data/sys.2615", - "/root/data/AlMgCu/data/sys.2616", - "/root/data/AlMgCu/data/sys.2618", - "/root/data/AlMgCu/data/sys.2619", - "/root/data/AlMgCu/data/sys.262", - "/root/data/AlMgCu/data/sys.2620", - "/root/data/AlMgCu/data/sys.2621", - "/root/data/AlMgCu/data/sys.2622", - "/root/data/AlMgCu/data/sys.2623", - "/root/data/AlMgCu/data/sys.2624", - "/root/data/AlMgCu/data/sys.2625", - "/root/data/AlMgCu/data/sys.2626", - "/root/data/AlMgCu/data/sys.2627", - "/root/data/AlMgCu/data/sys.2628", - "/root/data/AlMgCu/data/sys.2629", - "/root/data/AlMgCu/data/sys.263", - "/root/data/AlMgCu/data/sys.2630", - "/root/data/AlMgCu/data/sys.2631", - "/root/data/AlMgCu/data/sys.2632", - "/root/data/AlMgCu/data/sys.2633", - "/root/data/AlMgCu/data/sys.2634", - "/root/data/AlMgCu/data/sys.2635", - "/root/data/AlMgCu/data/sys.2636", - "/root/data/AlMgCu/data/sys.2637", - "/root/data/AlMgCu/data/sys.2638", - "/root/data/AlMgCu/data/sys.2639", - "/root/data/AlMgCu/data/sys.264", - "/root/data/AlMgCu/data/sys.2640", - "/root/data/AlMgCu/data/sys.2641", - "/root/data/AlMgCu/data/sys.2642", - "/root/data/AlMgCu/data/sys.2643", - "/root/data/AlMgCu/data/sys.2645", - "/root/data/AlMgCu/data/sys.2646", - "/root/data/AlMgCu/data/sys.2647", - "/root/data/AlMgCu/data/sys.2648", - "/root/data/AlMgCu/data/sys.2649", - "/root/data/AlMgCu/data/sys.265", - "/root/data/AlMgCu/data/sys.2650", - "/root/data/AlMgCu/data/sys.2651", - "/root/data/AlMgCu/data/sys.2652", - "/root/data/AlMgCu/data/sys.2653", - "/root/data/AlMgCu/data/sys.2654", - "/root/data/AlMgCu/data/sys.2655", - "/root/data/AlMgCu/data/sys.2656", - "/root/data/AlMgCu/data/sys.2657", - "/root/data/AlMgCu/data/sys.2658", - "/root/data/AlMgCu/data/sys.2659", - "/root/data/AlMgCu/data/sys.266", - "/root/data/AlMgCu/data/sys.2660", - "/root/data/AlMgCu/data/sys.2661", - "/root/data/AlMgCu/data/sys.2662", - "/root/data/AlMgCu/data/sys.2663", - "/root/data/AlMgCu/data/sys.2664", - "/root/data/AlMgCu/data/sys.2665", - "/root/data/AlMgCu/data/sys.2666", - "/root/data/AlMgCu/data/sys.2667", - "/root/data/AlMgCu/data/sys.2668", - "/root/data/AlMgCu/data/sys.2669", - "/root/data/AlMgCu/data/sys.267", - "/root/data/AlMgCu/data/sys.2670", - "/root/data/AlMgCu/data/sys.2671", - "/root/data/AlMgCu/data/sys.2672", - "/root/data/AlMgCu/data/sys.2673", - "/root/data/AlMgCu/data/sys.2675", - "/root/data/AlMgCu/data/sys.2676", - "/root/data/AlMgCu/data/sys.2677", - "/root/data/AlMgCu/data/sys.2679", - "/root/data/AlMgCu/data/sys.268", - "/root/data/AlMgCu/data/sys.2680", - "/root/data/AlMgCu/data/sys.2681", - "/root/data/AlMgCu/data/sys.2682", - "/root/data/AlMgCu/data/sys.2683", - "/root/data/AlMgCu/data/sys.2684", - "/root/data/AlMgCu/data/sys.2685", - "/root/data/AlMgCu/data/sys.269", - "/root/data/AlMgCu/data/sys.2690", - "/root/data/AlMgCu/data/sys.2691", - "/root/data/AlMgCu/data/sys.2692", - "/root/data/AlMgCu/data/sys.2693", - "/root/data/AlMgCu/data/sys.2694", - "/root/data/AlMgCu/data/sys.2695", - "/root/data/AlMgCu/data/sys.2696", - "/root/data/AlMgCu/data/sys.2697", - "/root/data/AlMgCu/data/sys.2698", - "/root/data/AlMgCu/data/sys.2699", - "/root/data/AlMgCu/data/sys.270", - "/root/data/AlMgCu/data/sys.2700", - "/root/data/AlMgCu/data/sys.2701", - "/root/data/AlMgCu/data/sys.2702", - "/root/data/AlMgCu/data/sys.2703", - "/root/data/AlMgCu/data/sys.2704", - "/root/data/AlMgCu/data/sys.2706", - "/root/data/AlMgCu/data/sys.2707", - "/root/data/AlMgCu/data/sys.2708", - "/root/data/AlMgCu/data/sys.2709", - "/root/data/AlMgCu/data/sys.271", - "/root/data/AlMgCu/data/sys.2710", - "/root/data/AlMgCu/data/sys.2711", - "/root/data/AlMgCu/data/sys.2712", - "/root/data/AlMgCu/data/sys.2713", - "/root/data/AlMgCu/data/sys.2715", - "/root/data/AlMgCu/data/sys.2716", - "/root/data/AlMgCu/data/sys.2717", - "/root/data/AlMgCu/data/sys.2718", - "/root/data/AlMgCu/data/sys.2719", - "/root/data/AlMgCu/data/sys.272", - "/root/data/AlMgCu/data/sys.2720", - "/root/data/AlMgCu/data/sys.2721", - "/root/data/AlMgCu/data/sys.2722", - "/root/data/AlMgCu/data/sys.2723", - "/root/data/AlMgCu/data/sys.2724", - "/root/data/AlMgCu/data/sys.2725", - "/root/data/AlMgCu/data/sys.2726", - "/root/data/AlMgCu/data/sys.2727", - "/root/data/AlMgCu/data/sys.2728", - "/root/data/AlMgCu/data/sys.2729", - "/root/data/AlMgCu/data/sys.273", - "/root/data/AlMgCu/data/sys.2730", - "/root/data/AlMgCu/data/sys.2731", - "/root/data/AlMgCu/data/sys.2732", - "/root/data/AlMgCu/data/sys.2733", - "/root/data/AlMgCu/data/sys.2734", - "/root/data/AlMgCu/data/sys.2735", - "/root/data/AlMgCu/data/sys.2736", - "/root/data/AlMgCu/data/sys.2737", - "/root/data/AlMgCu/data/sys.2738", - "/root/data/AlMgCu/data/sys.2739", - "/root/data/AlMgCu/data/sys.274", - "/root/data/AlMgCu/data/sys.2740", - "/root/data/AlMgCu/data/sys.2741", - "/root/data/AlMgCu/data/sys.2742", - "/root/data/AlMgCu/data/sys.2743", - "/root/data/AlMgCu/data/sys.2744", - "/root/data/AlMgCu/data/sys.2745", - "/root/data/AlMgCu/data/sys.2746", - "/root/data/AlMgCu/data/sys.2747", - "/root/data/AlMgCu/data/sys.2748", - "/root/data/AlMgCu/data/sys.2749", - "/root/data/AlMgCu/data/sys.275", - "/root/data/AlMgCu/data/sys.2750", - "/root/data/AlMgCu/data/sys.2751", - "/root/data/AlMgCu/data/sys.2752", - "/root/data/AlMgCu/data/sys.2753", - "/root/data/AlMgCu/data/sys.2754", - "/root/data/AlMgCu/data/sys.2755", - "/root/data/AlMgCu/data/sys.2756", - "/root/data/AlMgCu/data/sys.2757", - "/root/data/AlMgCu/data/sys.2758", - "/root/data/AlMgCu/data/sys.2759", - "/root/data/AlMgCu/data/sys.276", - "/root/data/AlMgCu/data/sys.2760", - "/root/data/AlMgCu/data/sys.2761", - "/root/data/AlMgCu/data/sys.2762", - "/root/data/AlMgCu/data/sys.2764", - "/root/data/AlMgCu/data/sys.2765", - "/root/data/AlMgCu/data/sys.2766", - "/root/data/AlMgCu/data/sys.2767", - "/root/data/AlMgCu/data/sys.2768", - "/root/data/AlMgCu/data/sys.2769", - "/root/data/AlMgCu/data/sys.277", - "/root/data/AlMgCu/data/sys.2770", - "/root/data/AlMgCu/data/sys.2771", - "/root/data/AlMgCu/data/sys.2773", - "/root/data/AlMgCu/data/sys.2774", - "/root/data/AlMgCu/data/sys.2776", - "/root/data/AlMgCu/data/sys.2777", - "/root/data/AlMgCu/data/sys.2778", - "/root/data/AlMgCu/data/sys.2779", - "/root/data/AlMgCu/data/sys.278", - "/root/data/AlMgCu/data/sys.2780", - "/root/data/AlMgCu/data/sys.2781", - "/root/data/AlMgCu/data/sys.2782", - "/root/data/AlMgCu/data/sys.2783", - "/root/data/AlMgCu/data/sys.2784", - "/root/data/AlMgCu/data/sys.2785", - "/root/data/AlMgCu/data/sys.2787", - "/root/data/AlMgCu/data/sys.2788", - "/root/data/AlMgCu/data/sys.2789", - "/root/data/AlMgCu/data/sys.279", - "/root/data/AlMgCu/data/sys.2790", - "/root/data/AlMgCu/data/sys.2791", - "/root/data/AlMgCu/data/sys.2792", - "/root/data/AlMgCu/data/sys.2793", - "/root/data/AlMgCu/data/sys.2794", - "/root/data/AlMgCu/data/sys.2795", - "/root/data/AlMgCu/data/sys.2796", - "/root/data/AlMgCu/data/sys.2797", - "/root/data/AlMgCu/data/sys.2798", - "/root/data/AlMgCu/data/sys.2799", - "/root/data/AlMgCu/data/sys.280", - "/root/data/AlMgCu/data/sys.2800", - "/root/data/AlMgCu/data/sys.2801", - "/root/data/AlMgCu/data/sys.2802", - "/root/data/AlMgCu/data/sys.2803", - "/root/data/AlMgCu/data/sys.2804", - "/root/data/AlMgCu/data/sys.2805", - "/root/data/AlMgCu/data/sys.2806", - "/root/data/AlMgCu/data/sys.2807", - "/root/data/AlMgCu/data/sys.2809", - "/root/data/AlMgCu/data/sys.281", - "/root/data/AlMgCu/data/sys.2810", - "/root/data/AlMgCu/data/sys.2811", - "/root/data/AlMgCu/data/sys.2812", - "/root/data/AlMgCu/data/sys.2813", - "/root/data/AlMgCu/data/sys.2814", - "/root/data/AlMgCu/data/sys.2815", - "/root/data/AlMgCu/data/sys.2816", - "/root/data/AlMgCu/data/sys.2817", - "/root/data/AlMgCu/data/sys.2818", - "/root/data/AlMgCu/data/sys.2819", - "/root/data/AlMgCu/data/sys.282", - "/root/data/AlMgCu/data/sys.2820", - "/root/data/AlMgCu/data/sys.2822", - "/root/data/AlMgCu/data/sys.2824", - "/root/data/AlMgCu/data/sys.2825", - "/root/data/AlMgCu/data/sys.2826", - "/root/data/AlMgCu/data/sys.2827", - "/root/data/AlMgCu/data/sys.2828", - "/root/data/AlMgCu/data/sys.2829", - "/root/data/AlMgCu/data/sys.283", - "/root/data/AlMgCu/data/sys.2830", - "/root/data/AlMgCu/data/sys.2832", - "/root/data/AlMgCu/data/sys.2833", - "/root/data/AlMgCu/data/sys.2834", - "/root/data/AlMgCu/data/sys.2835", - "/root/data/AlMgCu/data/sys.2836", - "/root/data/AlMgCu/data/sys.2837", - "/root/data/AlMgCu/data/sys.2838", - "/root/data/AlMgCu/data/sys.2839", - "/root/data/AlMgCu/data/sys.284", - "/root/data/AlMgCu/data/sys.2840", - "/root/data/AlMgCu/data/sys.2841", - "/root/data/AlMgCu/data/sys.2842", - "/root/data/AlMgCu/data/sys.2843", - "/root/data/AlMgCu/data/sys.2844", - "/root/data/AlMgCu/data/sys.2845", - "/root/data/AlMgCu/data/sys.2846", - "/root/data/AlMgCu/data/sys.2847", - "/root/data/AlMgCu/data/sys.2848", - "/root/data/AlMgCu/data/sys.2849", - "/root/data/AlMgCu/data/sys.285", - "/root/data/AlMgCu/data/sys.2850", - "/root/data/AlMgCu/data/sys.2851", - "/root/data/AlMgCu/data/sys.2852", - "/root/data/AlMgCu/data/sys.2853", - "/root/data/AlMgCu/data/sys.2854", - "/root/data/AlMgCu/data/sys.2855", - "/root/data/AlMgCu/data/sys.2856", - "/root/data/AlMgCu/data/sys.2858", - "/root/data/AlMgCu/data/sys.2859", - "/root/data/AlMgCu/data/sys.286", - "/root/data/AlMgCu/data/sys.2860", - "/root/data/AlMgCu/data/sys.2861", - "/root/data/AlMgCu/data/sys.2862", - "/root/data/AlMgCu/data/sys.2863", - "/root/data/AlMgCu/data/sys.2864", - "/root/data/AlMgCu/data/sys.2865", - "/root/data/AlMgCu/data/sys.2866", - "/root/data/AlMgCu/data/sys.2868", - "/root/data/AlMgCu/data/sys.2869", - "/root/data/AlMgCu/data/sys.287", - "/root/data/AlMgCu/data/sys.2870", - "/root/data/AlMgCu/data/sys.2871", - "/root/data/AlMgCu/data/sys.2872", - "/root/data/AlMgCu/data/sys.2873", - "/root/data/AlMgCu/data/sys.2874", - "/root/data/AlMgCu/data/sys.2875", - "/root/data/AlMgCu/data/sys.2876", - "/root/data/AlMgCu/data/sys.2877", - "/root/data/AlMgCu/data/sys.2878", - "/root/data/AlMgCu/data/sys.2879", - "/root/data/AlMgCu/data/sys.288", - "/root/data/AlMgCu/data/sys.2880", - "/root/data/AlMgCu/data/sys.2881", - "/root/data/AlMgCu/data/sys.2883", - "/root/data/AlMgCu/data/sys.2884", - "/root/data/AlMgCu/data/sys.2885", - "/root/data/AlMgCu/data/sys.2886", - "/root/data/AlMgCu/data/sys.2887", - "/root/data/AlMgCu/data/sys.2888", - "/root/data/AlMgCu/data/sys.2889", - "/root/data/AlMgCu/data/sys.289", - "/root/data/AlMgCu/data/sys.2890", - "/root/data/AlMgCu/data/sys.2891", - "/root/data/AlMgCu/data/sys.2893", - "/root/data/AlMgCu/data/sys.2894", - "/root/data/AlMgCu/data/sys.2895", - "/root/data/AlMgCu/data/sys.2896", - "/root/data/AlMgCu/data/sys.2898", - "/root/data/AlMgCu/data/sys.2899", - "/root/data/AlMgCu/data/sys.2900", - "/root/data/AlMgCu/data/sys.2901", - "/root/data/AlMgCu/data/sys.2902", - "/root/data/AlMgCu/data/sys.2903", - "/root/data/AlMgCu/data/sys.2904", - "/root/data/AlMgCu/data/sys.2905", - "/root/data/AlMgCu/data/sys.2906", - "/root/data/AlMgCu/data/sys.2907", - "/root/data/AlMgCu/data/sys.2908", - "/root/data/AlMgCu/data/sys.2909", - "/root/data/AlMgCu/data/sys.291", - "/root/data/AlMgCu/data/sys.2911", - "/root/data/AlMgCu/data/sys.2912", - "/root/data/AlMgCu/data/sys.2913", - "/root/data/AlMgCu/data/sys.2914", - "/root/data/AlMgCu/data/sys.2915", - "/root/data/AlMgCu/data/sys.2916", - "/root/data/AlMgCu/data/sys.2917", - "/root/data/AlMgCu/data/sys.2918", - "/root/data/AlMgCu/data/sys.2919", - "/root/data/AlMgCu/data/sys.292", - "/root/data/AlMgCu/data/sys.2920", - "/root/data/AlMgCu/data/sys.2922", - "/root/data/AlMgCu/data/sys.2923", - "/root/data/AlMgCu/data/sys.2924", - "/root/data/AlMgCu/data/sys.2925", - "/root/data/AlMgCu/data/sys.2926", - "/root/data/AlMgCu/data/sys.2927", - "/root/data/AlMgCu/data/sys.2928", - "/root/data/AlMgCu/data/sys.2929", - "/root/data/AlMgCu/data/sys.293", - "/root/data/AlMgCu/data/sys.2930", - "/root/data/AlMgCu/data/sys.2931", - "/root/data/AlMgCu/data/sys.2932", - "/root/data/AlMgCu/data/sys.2933", - "/root/data/AlMgCu/data/sys.2934", - "/root/data/AlMgCu/data/sys.2935", - "/root/data/AlMgCu/data/sys.2936", - "/root/data/AlMgCu/data/sys.2937", - "/root/data/AlMgCu/data/sys.2939", - "/root/data/AlMgCu/data/sys.294", - "/root/data/AlMgCu/data/sys.2940", - "/root/data/AlMgCu/data/sys.2942", - "/root/data/AlMgCu/data/sys.2943", - "/root/data/AlMgCu/data/sys.2946", - "/root/data/AlMgCu/data/sys.2947", - "/root/data/AlMgCu/data/sys.2948", - "/root/data/AlMgCu/data/sys.295", - "/root/data/AlMgCu/data/sys.2950", - "/root/data/AlMgCu/data/sys.2951", - "/root/data/AlMgCu/data/sys.2952", - "/root/data/AlMgCu/data/sys.2954", - "/root/data/AlMgCu/data/sys.2956", - "/root/data/AlMgCu/data/sys.2957", - "/root/data/AlMgCu/data/sys.2958", - "/root/data/AlMgCu/data/sys.296", - "/root/data/AlMgCu/data/sys.2960", - "/root/data/AlMgCu/data/sys.2961", - "/root/data/AlMgCu/data/sys.2962", - "/root/data/AlMgCu/data/sys.2963", - "/root/data/AlMgCu/data/sys.2964", - "/root/data/AlMgCu/data/sys.2965", - "/root/data/AlMgCu/data/sys.2967", - "/root/data/AlMgCu/data/sys.2968", - "/root/data/AlMgCu/data/sys.2969", - "/root/data/AlMgCu/data/sys.297", - "/root/data/AlMgCu/data/sys.2970", - "/root/data/AlMgCu/data/sys.2972", - "/root/data/AlMgCu/data/sys.2973", - "/root/data/AlMgCu/data/sys.2974", - "/root/data/AlMgCu/data/sys.2975", - "/root/data/AlMgCu/data/sys.2976", - "/root/data/AlMgCu/data/sys.2977", - "/root/data/AlMgCu/data/sys.2978", - "/root/data/AlMgCu/data/sys.298", - "/root/data/AlMgCu/data/sys.2980", - "/root/data/AlMgCu/data/sys.2982", - "/root/data/AlMgCu/data/sys.2983", - "/root/data/AlMgCu/data/sys.2984", - "/root/data/AlMgCu/data/sys.2986", - "/root/data/AlMgCu/data/sys.2987", - "/root/data/AlMgCu/data/sys.2988", - "/root/data/AlMgCu/data/sys.2989", - "/root/data/AlMgCu/data/sys.299", - "/root/data/AlMgCu/data/sys.2993", - "/root/data/AlMgCu/data/sys.2995", - "/root/data/AlMgCu/data/sys.2996", - "/root/data/AlMgCu/data/sys.2998", - "/root/data/AlMgCu/data/sys.2999", - "/root/data/AlMgCu/data/sys.300", - "/root/data/AlMgCu/data/sys.3000", - "/root/data/AlMgCu/data/sys.3002", - "/root/data/AlMgCu/data/sys.3003", - "/root/data/AlMgCu/data/sys.3004", - "/root/data/AlMgCu/data/sys.3006", - "/root/data/AlMgCu/data/sys.3007", - "/root/data/AlMgCu/data/sys.301", - "/root/data/AlMgCu/data/sys.3010", - "/root/data/AlMgCu/data/sys.3011", - "/root/data/AlMgCu/data/sys.3012", - "/root/data/AlMgCu/data/sys.3013", - "/root/data/AlMgCu/data/sys.3014", - "/root/data/AlMgCu/data/sys.3015", - "/root/data/AlMgCu/data/sys.3016", - "/root/data/AlMgCu/data/sys.3017", - "/root/data/AlMgCu/data/sys.3018", - "/root/data/AlMgCu/data/sys.3019", - "/root/data/AlMgCu/data/sys.302", - "/root/data/AlMgCu/data/sys.3020", - "/root/data/AlMgCu/data/sys.3021", - "/root/data/AlMgCu/data/sys.3022", - "/root/data/AlMgCu/data/sys.3023", - "/root/data/AlMgCu/data/sys.3024", - "/root/data/AlMgCu/data/sys.3025", - "/root/data/AlMgCu/data/sys.3026", - "/root/data/AlMgCu/data/sys.3027", - "/root/data/AlMgCu/data/sys.3028", - "/root/data/AlMgCu/data/sys.303", - "/root/data/AlMgCu/data/sys.3030", - "/root/data/AlMgCu/data/sys.3031", - "/root/data/AlMgCu/data/sys.3032", - "/root/data/AlMgCu/data/sys.3033", - "/root/data/AlMgCu/data/sys.3034", - "/root/data/AlMgCu/data/sys.3035", - "/root/data/AlMgCu/data/sys.3036", - "/root/data/AlMgCu/data/sys.3038", - "/root/data/AlMgCu/data/sys.3039", - "/root/data/AlMgCu/data/sys.304", - "/root/data/AlMgCu/data/sys.3040", - "/root/data/AlMgCu/data/sys.3041", - "/root/data/AlMgCu/data/sys.3042", - "/root/data/AlMgCu/data/sys.3043", - "/root/data/AlMgCu/data/sys.3044", - "/root/data/AlMgCu/data/sys.3045", - "/root/data/AlMgCu/data/sys.3046", - "/root/data/AlMgCu/data/sys.3047", - "/root/data/AlMgCu/data/sys.3048", - "/root/data/AlMgCu/data/sys.3049", - "/root/data/AlMgCu/data/sys.305", - "/root/data/AlMgCu/data/sys.3050", - "/root/data/AlMgCu/data/sys.3051", - "/root/data/AlMgCu/data/sys.3052", - "/root/data/AlMgCu/data/sys.3053", - "/root/data/AlMgCu/data/sys.3054", - "/root/data/AlMgCu/data/sys.3056", - "/root/data/AlMgCu/data/sys.3057", - "/root/data/AlMgCu/data/sys.3058", - "/root/data/AlMgCu/data/sys.3059", - "/root/data/AlMgCu/data/sys.306", - "/root/data/AlMgCu/data/sys.3060", - "/root/data/AlMgCu/data/sys.3061", - "/root/data/AlMgCu/data/sys.3062", - "/root/data/AlMgCu/data/sys.3063", - "/root/data/AlMgCu/data/sys.3064", - "/root/data/AlMgCu/data/sys.3065", - "/root/data/AlMgCu/data/sys.3066", - "/root/data/AlMgCu/data/sys.3067", - "/root/data/AlMgCu/data/sys.3069", - "/root/data/AlMgCu/data/sys.3070", - "/root/data/AlMgCu/data/sys.3071", - "/root/data/AlMgCu/data/sys.3073", - "/root/data/AlMgCu/data/sys.3074", - "/root/data/AlMgCu/data/sys.3075", - "/root/data/AlMgCu/data/sys.3077", - "/root/data/AlMgCu/data/sys.3078", - "/root/data/AlMgCu/data/sys.3079", - "/root/data/AlMgCu/data/sys.308", - "/root/data/AlMgCu/data/sys.3080", - "/root/data/AlMgCu/data/sys.3081", - "/root/data/AlMgCu/data/sys.3082", - "/root/data/AlMgCu/data/sys.3083", - "/root/data/AlMgCu/data/sys.3084", - "/root/data/AlMgCu/data/sys.3085", - "/root/data/AlMgCu/data/sys.3086", - "/root/data/AlMgCu/data/sys.3087", - "/root/data/AlMgCu/data/sys.3088", - "/root/data/AlMgCu/data/sys.309", - "/root/data/AlMgCu/data/sys.3090", - "/root/data/AlMgCu/data/sys.3091", - "/root/data/AlMgCu/data/sys.3092", - "/root/data/AlMgCu/data/sys.3093", - "/root/data/AlMgCu/data/sys.3094", - "/root/data/AlMgCu/data/sys.3095", - "/root/data/AlMgCu/data/sys.3096", - "/root/data/AlMgCu/data/sys.3097", - "/root/data/AlMgCu/data/sys.3098", - "/root/data/AlMgCu/data/sys.3099", - "/root/data/AlMgCu/data/sys.3100", - "/root/data/AlMgCu/data/sys.3101", - "/root/data/AlMgCu/data/sys.3102", - "/root/data/AlMgCu/data/sys.3103", - "/root/data/AlMgCu/data/sys.3104", - "/root/data/AlMgCu/data/sys.3106", - "/root/data/AlMgCu/data/sys.3107", - "/root/data/AlMgCu/data/sys.3108", - "/root/data/AlMgCu/data/sys.3109", - "/root/data/AlMgCu/data/sys.311", - "/root/data/AlMgCu/data/sys.3110", - "/root/data/AlMgCu/data/sys.3111", - "/root/data/AlMgCu/data/sys.3112", - "/root/data/AlMgCu/data/sys.3114", - "/root/data/AlMgCu/data/sys.3115", - "/root/data/AlMgCu/data/sys.3117", - "/root/data/AlMgCu/data/sys.3118", - "/root/data/AlMgCu/data/sys.3119", - "/root/data/AlMgCu/data/sys.312", - "/root/data/AlMgCu/data/sys.3120", - "/root/data/AlMgCu/data/sys.3121", - "/root/data/AlMgCu/data/sys.3123", - "/root/data/AlMgCu/data/sys.3124", - "/root/data/AlMgCu/data/sys.3125", - "/root/data/AlMgCu/data/sys.3126", - "/root/data/AlMgCu/data/sys.3127", - "/root/data/AlMgCu/data/sys.3128", - "/root/data/AlMgCu/data/sys.3129", - "/root/data/AlMgCu/data/sys.313", - "/root/data/AlMgCu/data/sys.3130", - "/root/data/AlMgCu/data/sys.3131", - "/root/data/AlMgCu/data/sys.3132", - "/root/data/AlMgCu/data/sys.3133", - "/root/data/AlMgCu/data/sys.3134", - "/root/data/AlMgCu/data/sys.3135", - "/root/data/AlMgCu/data/sys.3136", - "/root/data/AlMgCu/data/sys.3138", - "/root/data/AlMgCu/data/sys.3139", - "/root/data/AlMgCu/data/sys.314", - "/root/data/AlMgCu/data/sys.3142", - "/root/data/AlMgCu/data/sys.3143", - "/root/data/AlMgCu/data/sys.3144", - "/root/data/AlMgCu/data/sys.3145", - "/root/data/AlMgCu/data/sys.3146", - "/root/data/AlMgCu/data/sys.3147", - "/root/data/AlMgCu/data/sys.3148", - "/root/data/AlMgCu/data/sys.3149", - "/root/data/AlMgCu/data/sys.315", - "/root/data/AlMgCu/data/sys.3150", - "/root/data/AlMgCu/data/sys.3151", - "/root/data/AlMgCu/data/sys.3153", - "/root/data/AlMgCu/data/sys.3154", - "/root/data/AlMgCu/data/sys.3155", - "/root/data/AlMgCu/data/sys.3156", - "/root/data/AlMgCu/data/sys.3157", - "/root/data/AlMgCu/data/sys.3158", - "/root/data/AlMgCu/data/sys.3159", - "/root/data/AlMgCu/data/sys.316", - "/root/data/AlMgCu/data/sys.3160", - "/root/data/AlMgCu/data/sys.3161", - "/root/data/AlMgCu/data/sys.3162", - "/root/data/AlMgCu/data/sys.3163", - "/root/data/AlMgCu/data/sys.3164", - "/root/data/AlMgCu/data/sys.3165", - "/root/data/AlMgCu/data/sys.3166", - "/root/data/AlMgCu/data/sys.3167", - "/root/data/AlMgCu/data/sys.3168", - "/root/data/AlMgCu/data/sys.317", - "/root/data/AlMgCu/data/sys.3170", - "/root/data/AlMgCu/data/sys.3171", - "/root/data/AlMgCu/data/sys.3172", - "/root/data/AlMgCu/data/sys.3174", - "/root/data/AlMgCu/data/sys.3175", - "/root/data/AlMgCu/data/sys.3176", - "/root/data/AlMgCu/data/sys.3177", - "/root/data/AlMgCu/data/sys.3178", - "/root/data/AlMgCu/data/sys.3179", - "/root/data/AlMgCu/data/sys.318", - "/root/data/AlMgCu/data/sys.3180", - "/root/data/AlMgCu/data/sys.3181", - "/root/data/AlMgCu/data/sys.3182", - "/root/data/AlMgCu/data/sys.3183", - "/root/data/AlMgCu/data/sys.3184", - "/root/data/AlMgCu/data/sys.3185", - "/root/data/AlMgCu/data/sys.3186", - "/root/data/AlMgCu/data/sys.3187", - "/root/data/AlMgCu/data/sys.3188", - "/root/data/AlMgCu/data/sys.3189", - "/root/data/AlMgCu/data/sys.3190", - "/root/data/AlMgCu/data/sys.3191", - "/root/data/AlMgCu/data/sys.3192", - "/root/data/AlMgCu/data/sys.3193", - "/root/data/AlMgCu/data/sys.3194", - "/root/data/AlMgCu/data/sys.3195", - "/root/data/AlMgCu/data/sys.3196", - "/root/data/AlMgCu/data/sys.3198", - "/root/data/AlMgCu/data/sys.3199", - "/root/data/AlMgCu/data/sys.3200", - "/root/data/AlMgCu/data/sys.3202", - "/root/data/AlMgCu/data/sys.3203", - "/root/data/AlMgCu/data/sys.3204", - "/root/data/AlMgCu/data/sys.3205", - "/root/data/AlMgCu/data/sys.3206", - "/root/data/AlMgCu/data/sys.3207", - "/root/data/AlMgCu/data/sys.3208", - "/root/data/AlMgCu/data/sys.3209", - "/root/data/AlMgCu/data/sys.321", - "/root/data/AlMgCu/data/sys.3210", - "/root/data/AlMgCu/data/sys.3211", - "/root/data/AlMgCu/data/sys.3212", - "/root/data/AlMgCu/data/sys.3213", - "/root/data/AlMgCu/data/sys.3214", - "/root/data/AlMgCu/data/sys.3215", - "/root/data/AlMgCu/data/sys.3216", - "/root/data/AlMgCu/data/sys.3217", - "/root/data/AlMgCu/data/sys.3218", - "/root/data/AlMgCu/data/sys.322", - "/root/data/AlMgCu/data/sys.3220", - "/root/data/AlMgCu/data/sys.3221", - "/root/data/AlMgCu/data/sys.3222", - "/root/data/AlMgCu/data/sys.3223", - "/root/data/AlMgCu/data/sys.3224", - "/root/data/AlMgCu/data/sys.3225", - "/root/data/AlMgCu/data/sys.3226", - "/root/data/AlMgCu/data/sys.3227", - "/root/data/AlMgCu/data/sys.3228", - "/root/data/AlMgCu/data/sys.3229", - "/root/data/AlMgCu/data/sys.323", - "/root/data/AlMgCu/data/sys.3230", - "/root/data/AlMgCu/data/sys.3231", - "/root/data/AlMgCu/data/sys.3232", - "/root/data/AlMgCu/data/sys.3233", - "/root/data/AlMgCu/data/sys.3235", - "/root/data/AlMgCu/data/sys.3236", - "/root/data/AlMgCu/data/sys.3237", - "/root/data/AlMgCu/data/sys.3238", - "/root/data/AlMgCu/data/sys.3239", - "/root/data/AlMgCu/data/sys.3240", - "/root/data/AlMgCu/data/sys.3241", - "/root/data/AlMgCu/data/sys.3242", - "/root/data/AlMgCu/data/sys.3243", - "/root/data/AlMgCu/data/sys.3244", - "/root/data/AlMgCu/data/sys.3245", - "/root/data/AlMgCu/data/sys.3246", - "/root/data/AlMgCu/data/sys.3247", - "/root/data/AlMgCu/data/sys.3248", - "/root/data/AlMgCu/data/sys.3249", - "/root/data/AlMgCu/data/sys.325", - "/root/data/AlMgCu/data/sys.3250", - "/root/data/AlMgCu/data/sys.3251", - "/root/data/AlMgCu/data/sys.3252", - "/root/data/AlMgCu/data/sys.3253", - "/root/data/AlMgCu/data/sys.3254", - "/root/data/AlMgCu/data/sys.3255", - "/root/data/AlMgCu/data/sys.3256", - "/root/data/AlMgCu/data/sys.3257", - "/root/data/AlMgCu/data/sys.3258", - "/root/data/AlMgCu/data/sys.3259", - "/root/data/AlMgCu/data/sys.326", - "/root/data/AlMgCu/data/sys.3261", - "/root/data/AlMgCu/data/sys.3263", - "/root/data/AlMgCu/data/sys.3264", - "/root/data/AlMgCu/data/sys.3265", - "/root/data/AlMgCu/data/sys.3266", - "/root/data/AlMgCu/data/sys.3267", - "/root/data/AlMgCu/data/sys.3268", - "/root/data/AlMgCu/data/sys.3269", - "/root/data/AlMgCu/data/sys.327", - "/root/data/AlMgCu/data/sys.3270", - "/root/data/AlMgCu/data/sys.3272", - "/root/data/AlMgCu/data/sys.3274", - "/root/data/AlMgCu/data/sys.3275", - "/root/data/AlMgCu/data/sys.3276", - "/root/data/AlMgCu/data/sys.3277", - "/root/data/AlMgCu/data/sys.3278", - "/root/data/AlMgCu/data/sys.3279", - "/root/data/AlMgCu/data/sys.3280", - "/root/data/AlMgCu/data/sys.3282", - "/root/data/AlMgCu/data/sys.3283", - "/root/data/AlMgCu/data/sys.3284", - "/root/data/AlMgCu/data/sys.3286", - "/root/data/AlMgCu/data/sys.3287", - "/root/data/AlMgCu/data/sys.3289", - "/root/data/AlMgCu/data/sys.329", - "/root/data/AlMgCu/data/sys.3290", - "/root/data/AlMgCu/data/sys.3291", - "/root/data/AlMgCu/data/sys.3292", - "/root/data/AlMgCu/data/sys.3293", - "/root/data/AlMgCu/data/sys.3294", - "/root/data/AlMgCu/data/sys.3295", - "/root/data/AlMgCu/data/sys.3296", - "/root/data/AlMgCu/data/sys.3297", - "/root/data/AlMgCu/data/sys.3298", - "/root/data/AlMgCu/data/sys.3299", - "/root/data/AlMgCu/data/sys.330", - "/root/data/AlMgCu/data/sys.3300", - "/root/data/AlMgCu/data/sys.3301", - "/root/data/AlMgCu/data/sys.3302", - "/root/data/AlMgCu/data/sys.3303", - "/root/data/AlMgCu/data/sys.3304", - "/root/data/AlMgCu/data/sys.3305", - "/root/data/AlMgCu/data/sys.3306", - "/root/data/AlMgCu/data/sys.3307", - "/root/data/AlMgCu/data/sys.3308", - "/root/data/AlMgCu/data/sys.3309", - "/root/data/AlMgCu/data/sys.331", - "/root/data/AlMgCu/data/sys.3310", - "/root/data/AlMgCu/data/sys.3311", - "/root/data/AlMgCu/data/sys.3312", - "/root/data/AlMgCu/data/sys.3313", - "/root/data/AlMgCu/data/sys.3314", - "/root/data/AlMgCu/data/sys.3315", - "/root/data/AlMgCu/data/sys.3316", - "/root/data/AlMgCu/data/sys.3317", - "/root/data/AlMgCu/data/sys.3318", - "/root/data/AlMgCu/data/sys.3319", - "/root/data/AlMgCu/data/sys.332", - "/root/data/AlMgCu/data/sys.3320", - "/root/data/AlMgCu/data/sys.3321", - "/root/data/AlMgCu/data/sys.3322", - "/root/data/AlMgCu/data/sys.3323", - "/root/data/AlMgCu/data/sys.3325", - "/root/data/AlMgCu/data/sys.3326", - "/root/data/AlMgCu/data/sys.3327", - "/root/data/AlMgCu/data/sys.3328", - "/root/data/AlMgCu/data/sys.3329", - "/root/data/AlMgCu/data/sys.333", - "/root/data/AlMgCu/data/sys.3330", - "/root/data/AlMgCu/data/sys.3331", - "/root/data/AlMgCu/data/sys.3332", - "/root/data/AlMgCu/data/sys.3333", - "/root/data/AlMgCu/data/sys.3334", - "/root/data/AlMgCu/data/sys.3335", - "/root/data/AlMgCu/data/sys.3336", - "/root/data/AlMgCu/data/sys.3337", - "/root/data/AlMgCu/data/sys.3338", - "/root/data/AlMgCu/data/sys.3339", - "/root/data/AlMgCu/data/sys.334", - "/root/data/AlMgCu/data/sys.3340", - "/root/data/AlMgCu/data/sys.3341", - "/root/data/AlMgCu/data/sys.3342", - "/root/data/AlMgCu/data/sys.3343", - "/root/data/AlMgCu/data/sys.3344", - "/root/data/AlMgCu/data/sys.3345", - "/root/data/AlMgCu/data/sys.3346", - "/root/data/AlMgCu/data/sys.3347", - "/root/data/AlMgCu/data/sys.3348", - "/root/data/AlMgCu/data/sys.3349", - "/root/data/AlMgCu/data/sys.335", - "/root/data/AlMgCu/data/sys.3350", - "/root/data/AlMgCu/data/sys.3351", - "/root/data/AlMgCu/data/sys.3352", - "/root/data/AlMgCu/data/sys.3353", - "/root/data/AlMgCu/data/sys.3356", - "/root/data/AlMgCu/data/sys.3357", - "/root/data/AlMgCu/data/sys.3358", - "/root/data/AlMgCu/data/sys.336", - "/root/data/AlMgCu/data/sys.3360", - "/root/data/AlMgCu/data/sys.3361", - "/root/data/AlMgCu/data/sys.3362", - "/root/data/AlMgCu/data/sys.3363", - "/root/data/AlMgCu/data/sys.3365", - "/root/data/AlMgCu/data/sys.3367", - "/root/data/AlMgCu/data/sys.3368", - "/root/data/AlMgCu/data/sys.3369", - "/root/data/AlMgCu/data/sys.337", - "/root/data/AlMgCu/data/sys.3370", - "/root/data/AlMgCu/data/sys.3372", - "/root/data/AlMgCu/data/sys.3374", - "/root/data/AlMgCu/data/sys.3375", - "/root/data/AlMgCu/data/sys.3376", - "/root/data/AlMgCu/data/sys.3377", - "/root/data/AlMgCu/data/sys.3378", - "/root/data/AlMgCu/data/sys.3379", - "/root/data/AlMgCu/data/sys.338", - "/root/data/AlMgCu/data/sys.3380", - "/root/data/AlMgCu/data/sys.3381", - "/root/data/AlMgCu/data/sys.3382", - "/root/data/AlMgCu/data/sys.3384", - "/root/data/AlMgCu/data/sys.3385", - "/root/data/AlMgCu/data/sys.3386", - "/root/data/AlMgCu/data/sys.3387", - "/root/data/AlMgCu/data/sys.3388", - "/root/data/AlMgCu/data/sys.3389", - "/root/data/AlMgCu/data/sys.339", - "/root/data/AlMgCu/data/sys.3390", - "/root/data/AlMgCu/data/sys.3391", - "/root/data/AlMgCu/data/sys.3392", - "/root/data/AlMgCu/data/sys.3393", - "/root/data/AlMgCu/data/sys.3394", - "/root/data/AlMgCu/data/sys.3395", - "/root/data/AlMgCu/data/sys.3396", - "/root/data/AlMgCu/data/sys.3397", - "/root/data/AlMgCu/data/sys.3398", - "/root/data/AlMgCu/data/sys.3399", - "/root/data/AlMgCu/data/sys.340", - "/root/data/AlMgCu/data/sys.3400", - "/root/data/AlMgCu/data/sys.3401", - "/root/data/AlMgCu/data/sys.3402", - "/root/data/AlMgCu/data/sys.3404", - "/root/data/AlMgCu/data/sys.3405", - "/root/data/AlMgCu/data/sys.3406", - "/root/data/AlMgCu/data/sys.3407", - "/root/data/AlMgCu/data/sys.3408", - "/root/data/AlMgCu/data/sys.3409", - "/root/data/AlMgCu/data/sys.3410", - "/root/data/AlMgCu/data/sys.3412", - "/root/data/AlMgCu/data/sys.3413", - "/root/data/AlMgCu/data/sys.3416", - "/root/data/AlMgCu/data/sys.3417", - "/root/data/AlMgCu/data/sys.3418", - "/root/data/AlMgCu/data/sys.3419", - "/root/data/AlMgCu/data/sys.342", - "/root/data/AlMgCu/data/sys.3420", - "/root/data/AlMgCu/data/sys.3421", - "/root/data/AlMgCu/data/sys.3422", - "/root/data/AlMgCu/data/sys.3423", - "/root/data/AlMgCu/data/sys.3424", - "/root/data/AlMgCu/data/sys.3425", - "/root/data/AlMgCu/data/sys.3426", - "/root/data/AlMgCu/data/sys.3427", - "/root/data/AlMgCu/data/sys.3428", - "/root/data/AlMgCu/data/sys.3429", - "/root/data/AlMgCu/data/sys.343", - "/root/data/AlMgCu/data/sys.3431", - "/root/data/AlMgCu/data/sys.3432", - "/root/data/AlMgCu/data/sys.3433", - "/root/data/AlMgCu/data/sys.3434", - "/root/data/AlMgCu/data/sys.3435", - "/root/data/AlMgCu/data/sys.3436", - "/root/data/AlMgCu/data/sys.3437", - "/root/data/AlMgCu/data/sys.3438", - "/root/data/AlMgCu/data/sys.3439", - "/root/data/AlMgCu/data/sys.344", - "/root/data/AlMgCu/data/sys.3441", - "/root/data/AlMgCu/data/sys.3442", - "/root/data/AlMgCu/data/sys.3443", - "/root/data/AlMgCu/data/sys.3444", - "/root/data/AlMgCu/data/sys.3445", - "/root/data/AlMgCu/data/sys.3446", - "/root/data/AlMgCu/data/sys.3448", - "/root/data/AlMgCu/data/sys.345", - "/root/data/AlMgCu/data/sys.3450", - "/root/data/AlMgCu/data/sys.3451", - "/root/data/AlMgCu/data/sys.3452", - "/root/data/AlMgCu/data/sys.3453", - "/root/data/AlMgCu/data/sys.3454", - "/root/data/AlMgCu/data/sys.3455", - "/root/data/AlMgCu/data/sys.3456", - "/root/data/AlMgCu/data/sys.3457", - "/root/data/AlMgCu/data/sys.3458", - "/root/data/AlMgCu/data/sys.3459", - "/root/data/AlMgCu/data/sys.346", - "/root/data/AlMgCu/data/sys.3460", - "/root/data/AlMgCu/data/sys.3461", - "/root/data/AlMgCu/data/sys.3462", - "/root/data/AlMgCu/data/sys.3463", - "/root/data/AlMgCu/data/sys.3464", - "/root/data/AlMgCu/data/sys.3465", - "/root/data/AlMgCu/data/sys.3466", - "/root/data/AlMgCu/data/sys.3467", - "/root/data/AlMgCu/data/sys.3468", - "/root/data/AlMgCu/data/sys.3469", - "/root/data/AlMgCu/data/sys.3470", - "/root/data/AlMgCu/data/sys.3471", - "/root/data/AlMgCu/data/sys.3472", - "/root/data/AlMgCu/data/sys.3473", - "/root/data/AlMgCu/data/sys.3474", - "/root/data/AlMgCu/data/sys.3475", - "/root/data/AlMgCu/data/sys.3476", - "/root/data/AlMgCu/data/sys.3477", - "/root/data/AlMgCu/data/sys.3478", - "/root/data/AlMgCu/data/sys.3479", - "/root/data/AlMgCu/data/sys.348", - "/root/data/AlMgCu/data/sys.3481", - "/root/data/AlMgCu/data/sys.3482", - "/root/data/AlMgCu/data/sys.3483", - "/root/data/AlMgCu/data/sys.3484", - "/root/data/AlMgCu/data/sys.3485", - "/root/data/AlMgCu/data/sys.3486", - "/root/data/AlMgCu/data/sys.3487", - "/root/data/AlMgCu/data/sys.3488", - "/root/data/AlMgCu/data/sys.3489", - "/root/data/AlMgCu/data/sys.3490", - "/root/data/AlMgCu/data/sys.3491", - "/root/data/AlMgCu/data/sys.3492", - "/root/data/AlMgCu/data/sys.3494", - "/root/data/AlMgCu/data/sys.3496", - "/root/data/AlMgCu/data/sys.3498", - "/root/data/AlMgCu/data/sys.3499", - "/root/data/AlMgCu/data/sys.350", - "/root/data/AlMgCu/data/sys.3500", - "/root/data/AlMgCu/data/sys.3502", - "/root/data/AlMgCu/data/sys.3503", - "/root/data/AlMgCu/data/sys.3504", - "/root/data/AlMgCu/data/sys.3505", - "/root/data/AlMgCu/data/sys.3507", - "/root/data/AlMgCu/data/sys.3509", - "/root/data/AlMgCu/data/sys.351", - "/root/data/AlMgCu/data/sys.3510", - "/root/data/AlMgCu/data/sys.3512", - "/root/data/AlMgCu/data/sys.3513", - "/root/data/AlMgCu/data/sys.3514", - "/root/data/AlMgCu/data/sys.3516", - "/root/data/AlMgCu/data/sys.3517", - "/root/data/AlMgCu/data/sys.3518", - "/root/data/AlMgCu/data/sys.3519", - "/root/data/AlMgCu/data/sys.352", - "/root/data/AlMgCu/data/sys.3520", - "/root/data/AlMgCu/data/sys.3521", - "/root/data/AlMgCu/data/sys.3522", - "/root/data/AlMgCu/data/sys.3524", - "/root/data/AlMgCu/data/sys.3525", - "/root/data/AlMgCu/data/sys.3526", - "/root/data/AlMgCu/data/sys.3528", - "/root/data/AlMgCu/data/sys.3529", - "/root/data/AlMgCu/data/sys.353", - "/root/data/AlMgCu/data/sys.3530", - "/root/data/AlMgCu/data/sys.3532", - "/root/data/AlMgCu/data/sys.3534", - "/root/data/AlMgCu/data/sys.3535", - "/root/data/AlMgCu/data/sys.3536", - "/root/data/AlMgCu/data/sys.3537", - "/root/data/AlMgCu/data/sys.3538", - "/root/data/AlMgCu/data/sys.3539", - "/root/data/AlMgCu/data/sys.3540", - "/root/data/AlMgCu/data/sys.3541", - "/root/data/AlMgCu/data/sys.3542", - "/root/data/AlMgCu/data/sys.3544", - "/root/data/AlMgCu/data/sys.3545", - "/root/data/AlMgCu/data/sys.3546", - "/root/data/AlMgCu/data/sys.3547", - "/root/data/AlMgCu/data/sys.3548", - "/root/data/AlMgCu/data/sys.3549", - "/root/data/AlMgCu/data/sys.355", - "/root/data/AlMgCu/data/sys.3550", - "/root/data/AlMgCu/data/sys.3552", - "/root/data/AlMgCu/data/sys.3554", - "/root/data/AlMgCu/data/sys.3556", - "/root/data/AlMgCu/data/sys.3558", - "/root/data/AlMgCu/data/sys.356", - "/root/data/AlMgCu/data/sys.3560", - "/root/data/AlMgCu/data/sys.3562", - "/root/data/AlMgCu/data/sys.3564", - "/root/data/AlMgCu/data/sys.3566", - "/root/data/AlMgCu/data/sys.3568", - "/root/data/AlMgCu/data/sys.357", - "/root/data/AlMgCu/data/sys.3570", - "/root/data/AlMgCu/data/sys.3572", - "/root/data/AlMgCu/data/sys.3574", - "/root/data/AlMgCu/data/sys.3576", - "/root/data/AlMgCu/data/sys.3578", - "/root/data/AlMgCu/data/sys.358", - "/root/data/AlMgCu/data/sys.3580", - "/root/data/AlMgCu/data/sys.3582", - "/root/data/AlMgCu/data/sys.3583", - "/root/data/AlMgCu/data/sys.3584", - "/root/data/AlMgCu/data/sys.3586", - "/root/data/AlMgCu/data/sys.3587", - "/root/data/AlMgCu/data/sys.3588", - "/root/data/AlMgCu/data/sys.3589", - "/root/data/AlMgCu/data/sys.3590", - "/root/data/AlMgCu/data/sys.3591", - "/root/data/AlMgCu/data/sys.3592", - "/root/data/AlMgCu/data/sys.3593", - "/root/data/AlMgCu/data/sys.3594", - "/root/data/AlMgCu/data/sys.3595", - "/root/data/AlMgCu/data/sys.3596", - "/root/data/AlMgCu/data/sys.3597", - "/root/data/AlMgCu/data/sys.3598", - "/root/data/AlMgCu/data/sys.360", - "/root/data/AlMgCu/data/sys.3600", - "/root/data/AlMgCu/data/sys.3601", - "/root/data/AlMgCu/data/sys.3602", - "/root/data/AlMgCu/data/sys.3603", - "/root/data/AlMgCu/data/sys.3604", - "/root/data/AlMgCu/data/sys.3605", - "/root/data/AlMgCu/data/sys.3606", - "/root/data/AlMgCu/data/sys.3607", - "/root/data/AlMgCu/data/sys.3608", - "/root/data/AlMgCu/data/sys.3609", - "/root/data/AlMgCu/data/sys.361", - "/root/data/AlMgCu/data/sys.3610", - "/root/data/AlMgCu/data/sys.3611", - "/root/data/AlMgCu/data/sys.3612", - "/root/data/AlMgCu/data/sys.3613", - "/root/data/AlMgCu/data/sys.3615", - "/root/data/AlMgCu/data/sys.3616", - "/root/data/AlMgCu/data/sys.3617", - "/root/data/AlMgCu/data/sys.3618", - "/root/data/AlMgCu/data/sys.3619", - "/root/data/AlMgCu/data/sys.362", - "/root/data/AlMgCu/data/sys.3620", - "/root/data/AlMgCu/data/sys.3621", - "/root/data/AlMgCu/data/sys.3622", - "/root/data/AlMgCu/data/sys.3623", - "/root/data/AlMgCu/data/sys.3624", - "/root/data/AlMgCu/data/sys.3626", - "/root/data/AlMgCu/data/sys.3628", - "/root/data/AlMgCu/data/sys.3629", - "/root/data/AlMgCu/data/sys.363", - "/root/data/AlMgCu/data/sys.3630", - "/root/data/AlMgCu/data/sys.3632", - "/root/data/AlMgCu/data/sys.3633", - "/root/data/AlMgCu/data/sys.3636", - "/root/data/AlMgCu/data/sys.3638", - "/root/data/AlMgCu/data/sys.3640", - "/root/data/AlMgCu/data/sys.3641", - "/root/data/AlMgCu/data/sys.3642", - "/root/data/AlMgCu/data/sys.3644", - "/root/data/AlMgCu/data/sys.3646", - "/root/data/AlMgCu/data/sys.3648", - "/root/data/AlMgCu/data/sys.365", - "/root/data/AlMgCu/data/sys.3652", - "/root/data/AlMgCu/data/sys.3653", - "/root/data/AlMgCu/data/sys.3654", - "/root/data/AlMgCu/data/sys.3655", - "/root/data/AlMgCu/data/sys.3656", - "/root/data/AlMgCu/data/sys.3657", - "/root/data/AlMgCu/data/sys.3658", - "/root/data/AlMgCu/data/sys.3659", - "/root/data/AlMgCu/data/sys.366", - "/root/data/AlMgCu/data/sys.3660", - "/root/data/AlMgCu/data/sys.3661", - "/root/data/AlMgCu/data/sys.3662", - "/root/data/AlMgCu/data/sys.3663", - "/root/data/AlMgCu/data/sys.3664", - "/root/data/AlMgCu/data/sys.3665", - "/root/data/AlMgCu/data/sys.3666", - "/root/data/AlMgCu/data/sys.3667", - "/root/data/AlMgCu/data/sys.3668", - "/root/data/AlMgCu/data/sys.3669", - "/root/data/AlMgCu/data/sys.367", - "/root/data/AlMgCu/data/sys.3670", - "/root/data/AlMgCu/data/sys.3671", - "/root/data/AlMgCu/data/sys.3672", - "/root/data/AlMgCu/data/sys.3673", - "/root/data/AlMgCu/data/sys.3675", - "/root/data/AlMgCu/data/sys.3676", - "/root/data/AlMgCu/data/sys.3677", - "/root/data/AlMgCu/data/sys.3678", - "/root/data/AlMgCu/data/sys.368", - "/root/data/AlMgCu/data/sys.3680", - "/root/data/AlMgCu/data/sys.3681", - "/root/data/AlMgCu/data/sys.3682", - "/root/data/AlMgCu/data/sys.3684", - "/root/data/AlMgCu/data/sys.3686", - "/root/data/AlMgCu/data/sys.3688", - "/root/data/AlMgCu/data/sys.369", - "/root/data/AlMgCu/data/sys.3690", - "/root/data/AlMgCu/data/sys.3692", - "/root/data/AlMgCu/data/sys.3694", - "/root/data/AlMgCu/data/sys.3696", - "/root/data/AlMgCu/data/sys.3697", - "/root/data/AlMgCu/data/sys.3698", - "/root/data/AlMgCu/data/sys.3699", - "/root/data/AlMgCu/data/sys.370", - "/root/data/AlMgCu/data/sys.3700", - "/root/data/AlMgCu/data/sys.3701", - "/root/data/AlMgCu/data/sys.3702", - "/root/data/AlMgCu/data/sys.3703", - "/root/data/AlMgCu/data/sys.3704", - "/root/data/AlMgCu/data/sys.3706", - "/root/data/AlMgCu/data/sys.3707", - "/root/data/AlMgCu/data/sys.3709", - "/root/data/AlMgCu/data/sys.371", - "/root/data/AlMgCu/data/sys.3710", - "/root/data/AlMgCu/data/sys.3711", - "/root/data/AlMgCu/data/sys.3712", - "/root/data/AlMgCu/data/sys.3713", - "/root/data/AlMgCu/data/sys.3714", - "/root/data/AlMgCu/data/sys.3715", - "/root/data/AlMgCu/data/sys.3716", - "/root/data/AlMgCu/data/sys.3717", - "/root/data/AlMgCu/data/sys.3718", - "/root/data/AlMgCu/data/sys.3719", - "/root/data/AlMgCu/data/sys.372", - "/root/data/AlMgCu/data/sys.3720", - "/root/data/AlMgCu/data/sys.3721", - "/root/data/AlMgCu/data/sys.3722", - "/root/data/AlMgCu/data/sys.3723", - "/root/data/AlMgCu/data/sys.3724", - "/root/data/AlMgCu/data/sys.3725", - "/root/data/AlMgCu/data/sys.3726", - "/root/data/AlMgCu/data/sys.3728", - "/root/data/AlMgCu/data/sys.3729", - "/root/data/AlMgCu/data/sys.373", - "/root/data/AlMgCu/data/sys.3730", - "/root/data/AlMgCu/data/sys.3731", - "/root/data/AlMgCu/data/sys.3734", - "/root/data/AlMgCu/data/sys.3735", - "/root/data/AlMgCu/data/sys.3736", - "/root/data/AlMgCu/data/sys.3737", - "/root/data/AlMgCu/data/sys.3739", - "/root/data/AlMgCu/data/sys.374", - "/root/data/AlMgCu/data/sys.3740", - "/root/data/AlMgCu/data/sys.3741", - "/root/data/AlMgCu/data/sys.3742", - "/root/data/AlMgCu/data/sys.3743", - "/root/data/AlMgCu/data/sys.3744", - "/root/data/AlMgCu/data/sys.3746", - "/root/data/AlMgCu/data/sys.3747", - "/root/data/AlMgCu/data/sys.3749", - "/root/data/AlMgCu/data/sys.375", - "/root/data/AlMgCu/data/sys.3750", - "/root/data/AlMgCu/data/sys.3751", - "/root/data/AlMgCu/data/sys.3752", - "/root/data/AlMgCu/data/sys.3753", - "/root/data/AlMgCu/data/sys.3754", - "/root/data/AlMgCu/data/sys.3756", - "/root/data/AlMgCu/data/sys.376", - "/root/data/AlMgCu/data/sys.3760", - "/root/data/AlMgCu/data/sys.3761", - "/root/data/AlMgCu/data/sys.3762", - "/root/data/AlMgCu/data/sys.3764", - "/root/data/AlMgCu/data/sys.3765", - "/root/data/AlMgCu/data/sys.3766", - "/root/data/AlMgCu/data/sys.3768", - "/root/data/AlMgCu/data/sys.3769", - "/root/data/AlMgCu/data/sys.377", - "/root/data/AlMgCu/data/sys.3770", - "/root/data/AlMgCu/data/sys.3771", - "/root/data/AlMgCu/data/sys.3772", - "/root/data/AlMgCu/data/sys.3773", - "/root/data/AlMgCu/data/sys.3774", - "/root/data/AlMgCu/data/sys.3776", - "/root/data/AlMgCu/data/sys.3777", - "/root/data/AlMgCu/data/sys.3778", - "/root/data/AlMgCu/data/sys.3779", - "/root/data/AlMgCu/data/sys.378", - "/root/data/AlMgCu/data/sys.3780", - "/root/data/AlMgCu/data/sys.3781", - "/root/data/AlMgCu/data/sys.3782", - "/root/data/AlMgCu/data/sys.3784", - "/root/data/AlMgCu/data/sys.3785", - "/root/data/AlMgCu/data/sys.3786", - "/root/data/AlMgCu/data/sys.3787", - "/root/data/AlMgCu/data/sys.3788", - "/root/data/AlMgCu/data/sys.3789", - "/root/data/AlMgCu/data/sys.379", - "/root/data/AlMgCu/data/sys.3790", - "/root/data/AlMgCu/data/sys.3791", - "/root/data/AlMgCu/data/sys.3792", - "/root/data/AlMgCu/data/sys.3793", - "/root/data/AlMgCu/data/sys.3794", - "/root/data/AlMgCu/data/sys.3795", - "/root/data/AlMgCu/data/sys.3796", - "/root/data/AlMgCu/data/sys.3797", - "/root/data/AlMgCu/data/sys.3798", - "/root/data/AlMgCu/data/sys.3799", - "/root/data/AlMgCu/data/sys.380", - "/root/data/AlMgCu/data/sys.3800", - "/root/data/AlMgCu/data/sys.3801", - "/root/data/AlMgCu/data/sys.3802", - "/root/data/AlMgCu/data/sys.3803", - "/root/data/AlMgCu/data/sys.3804", - "/root/data/AlMgCu/data/sys.3805", - "/root/data/AlMgCu/data/sys.3806", - "/root/data/AlMgCu/data/sys.3808", - "/root/data/AlMgCu/data/sys.3809", - "/root/data/AlMgCu/data/sys.381", - "/root/data/AlMgCu/data/sys.3810", - "/root/data/AlMgCu/data/sys.3811", - "/root/data/AlMgCu/data/sys.3812", - "/root/data/AlMgCu/data/sys.3813", - "/root/data/AlMgCu/data/sys.3814", - "/root/data/AlMgCu/data/sys.3816", - "/root/data/AlMgCu/data/sys.3817", - "/root/data/AlMgCu/data/sys.3818", - "/root/data/AlMgCu/data/sys.3819", - "/root/data/AlMgCu/data/sys.3820", - "/root/data/AlMgCu/data/sys.3821", - "/root/data/AlMgCu/data/sys.3822", - "/root/data/AlMgCu/data/sys.3823", - "/root/data/AlMgCu/data/sys.3824", - "/root/data/AlMgCu/data/sys.3826", - "/root/data/AlMgCu/data/sys.3828", - "/root/data/AlMgCu/data/sys.3829", - "/root/data/AlMgCu/data/sys.383", - "/root/data/AlMgCu/data/sys.3830", - "/root/data/AlMgCu/data/sys.3831", - "/root/data/AlMgCu/data/sys.3832", - "/root/data/AlMgCu/data/sys.3833", - "/root/data/AlMgCu/data/sys.3834", - "/root/data/AlMgCu/data/sys.3835", - "/root/data/AlMgCu/data/sys.3836", - "/root/data/AlMgCu/data/sys.3837", - "/root/data/AlMgCu/data/sys.3838", - "/root/data/AlMgCu/data/sys.3839", - "/root/data/AlMgCu/data/sys.384", - "/root/data/AlMgCu/data/sys.3840", - "/root/data/AlMgCu/data/sys.3841", - "/root/data/AlMgCu/data/sys.3842", - "/root/data/AlMgCu/data/sys.3843", - "/root/data/AlMgCu/data/sys.3844", - "/root/data/AlMgCu/data/sys.3845", - "/root/data/AlMgCu/data/sys.3846", - "/root/data/AlMgCu/data/sys.3847", - "/root/data/AlMgCu/data/sys.3849", - "/root/data/AlMgCu/data/sys.385", - "/root/data/AlMgCu/data/sys.3850", - "/root/data/AlMgCu/data/sys.3851", - "/root/data/AlMgCu/data/sys.3852", - "/root/data/AlMgCu/data/sys.3853", - "/root/data/AlMgCu/data/sys.3854", - "/root/data/AlMgCu/data/sys.3855", - "/root/data/AlMgCu/data/sys.3856", - "/root/data/AlMgCu/data/sys.3857", - "/root/data/AlMgCu/data/sys.3858", - "/root/data/AlMgCu/data/sys.3859", - "/root/data/AlMgCu/data/sys.386", - "/root/data/AlMgCu/data/sys.3860", - "/root/data/AlMgCu/data/sys.3861", - "/root/data/AlMgCu/data/sys.3862", - "/root/data/AlMgCu/data/sys.3863", - "/root/data/AlMgCu/data/sys.3865", - "/root/data/AlMgCu/data/sys.3866", - "/root/data/AlMgCu/data/sys.3868", - "/root/data/AlMgCu/data/sys.3869", - "/root/data/AlMgCu/data/sys.387", - "/root/data/AlMgCu/data/sys.3870", - "/root/data/AlMgCu/data/sys.3872", - "/root/data/AlMgCu/data/sys.3873", - "/root/data/AlMgCu/data/sys.3874", - "/root/data/AlMgCu/data/sys.3875", - "/root/data/AlMgCu/data/sys.3876", - "/root/data/AlMgCu/data/sys.3877", - "/root/data/AlMgCu/data/sys.3879", - "/root/data/AlMgCu/data/sys.388", - "/root/data/AlMgCu/data/sys.3880", - "/root/data/AlMgCu/data/sys.3881", - "/root/data/AlMgCu/data/sys.3882", - "/root/data/AlMgCu/data/sys.3885", - "/root/data/AlMgCu/data/sys.3888", - "/root/data/AlMgCu/data/sys.3889", - "/root/data/AlMgCu/data/sys.389", - "/root/data/AlMgCu/data/sys.3890", - "/root/data/AlMgCu/data/sys.3891", - "/root/data/AlMgCu/data/sys.3892", - "/root/data/AlMgCu/data/sys.3893", - "/root/data/AlMgCu/data/sys.3894", - "/root/data/AlMgCu/data/sys.3895", - "/root/data/AlMgCu/data/sys.3896", - "/root/data/AlMgCu/data/sys.3898", - "/root/data/AlMgCu/data/sys.3899", - "/root/data/AlMgCu/data/sys.390", - "/root/data/AlMgCu/data/sys.3900", - "/root/data/AlMgCu/data/sys.3901", - "/root/data/AlMgCu/data/sys.3902", - "/root/data/AlMgCu/data/sys.3904", - "/root/data/AlMgCu/data/sys.3905", - "/root/data/AlMgCu/data/sys.3908", - "/root/data/AlMgCu/data/sys.3909", - "/root/data/AlMgCu/data/sys.391", - "/root/data/AlMgCu/data/sys.3910", - "/root/data/AlMgCu/data/sys.3912", - "/root/data/AlMgCu/data/sys.3914", - "/root/data/AlMgCu/data/sys.3915", - "/root/data/AlMgCu/data/sys.3916", - "/root/data/AlMgCu/data/sys.3917", - "/root/data/AlMgCu/data/sys.3918", - "/root/data/AlMgCu/data/sys.3920", - "/root/data/AlMgCu/data/sys.3921", - "/root/data/AlMgCu/data/sys.3922", - "/root/data/AlMgCu/data/sys.3924", - "/root/data/AlMgCu/data/sys.3926", - "/root/data/AlMgCu/data/sys.3927", - "/root/data/AlMgCu/data/sys.3929", - "/root/data/AlMgCu/data/sys.393", - "/root/data/AlMgCu/data/sys.3930", - "/root/data/AlMgCu/data/sys.3933", - "/root/data/AlMgCu/data/sys.3934", - "/root/data/AlMgCu/data/sys.3935", - "/root/data/AlMgCu/data/sys.3936", - "/root/data/AlMgCu/data/sys.3937", - "/root/data/AlMgCu/data/sys.3938", - "/root/data/AlMgCu/data/sys.3940", - "/root/data/AlMgCu/data/sys.3941", - "/root/data/AlMgCu/data/sys.3942", - "/root/data/AlMgCu/data/sys.3943", - "/root/data/AlMgCu/data/sys.3944", - "/root/data/AlMgCu/data/sys.3945", - "/root/data/AlMgCu/data/sys.3946", - "/root/data/AlMgCu/data/sys.3947", - "/root/data/AlMgCu/data/sys.3948", - "/root/data/AlMgCu/data/sys.3949", - "/root/data/AlMgCu/data/sys.395", - "/root/data/AlMgCu/data/sys.3950", - "/root/data/AlMgCu/data/sys.3951", - "/root/data/AlMgCu/data/sys.3952", - "/root/data/AlMgCu/data/sys.3953", - "/root/data/AlMgCu/data/sys.3954", - "/root/data/AlMgCu/data/sys.3955", - "/root/data/AlMgCu/data/sys.3956", - "/root/data/AlMgCu/data/sys.3959", - "/root/data/AlMgCu/data/sys.396", - "/root/data/AlMgCu/data/sys.3961", - "/root/data/AlMgCu/data/sys.3962", - "/root/data/AlMgCu/data/sys.3963", - "/root/data/AlMgCu/data/sys.3964", - "/root/data/AlMgCu/data/sys.3965", - "/root/data/AlMgCu/data/sys.3966", - "/root/data/AlMgCu/data/sys.3967", - "/root/data/AlMgCu/data/sys.3968", - "/root/data/AlMgCu/data/sys.3969", - "/root/data/AlMgCu/data/sys.397", - "/root/data/AlMgCu/data/sys.3970", - "/root/data/AlMgCu/data/sys.3971", - "/root/data/AlMgCu/data/sys.3973", - "/root/data/AlMgCu/data/sys.3975", - "/root/data/AlMgCu/data/sys.3977", - "/root/data/AlMgCu/data/sys.3978", - "/root/data/AlMgCu/data/sys.3979", - "/root/data/AlMgCu/data/sys.398", - "/root/data/AlMgCu/data/sys.3980", - "/root/data/AlMgCu/data/sys.3981", - "/root/data/AlMgCu/data/sys.3982", - "/root/data/AlMgCu/data/sys.3983", - "/root/data/AlMgCu/data/sys.3984", - "/root/data/AlMgCu/data/sys.3985", - "/root/data/AlMgCu/data/sys.3986", - "/root/data/AlMgCu/data/sys.3987", - "/root/data/AlMgCu/data/sys.3988", - "/root/data/AlMgCu/data/sys.3989", - "/root/data/AlMgCu/data/sys.399", - "/root/data/AlMgCu/data/sys.3990", - "/root/data/AlMgCu/data/sys.3991", - "/root/data/AlMgCu/data/sys.3992", - "/root/data/AlMgCu/data/sys.3993", - "/root/data/AlMgCu/data/sys.3994", - "/root/data/AlMgCu/data/sys.3997", - "/root/data/AlMgCu/data/sys.3999", - "/root/data/AlMgCu/data/sys.400", - "/root/data/AlMgCu/data/sys.4000", - "/root/data/AlMgCu/data/sys.4001", - "/root/data/AlMgCu/data/sys.4002", - "/root/data/AlMgCu/data/sys.4003", - "/root/data/AlMgCu/data/sys.4004", - "/root/data/AlMgCu/data/sys.4005", - "/root/data/AlMgCu/data/sys.4006", - "/root/data/AlMgCu/data/sys.4007", - "/root/data/AlMgCu/data/sys.4008", - "/root/data/AlMgCu/data/sys.4009", - "/root/data/AlMgCu/data/sys.401", - "/root/data/AlMgCu/data/sys.4010", - "/root/data/AlMgCu/data/sys.4011", - "/root/data/AlMgCu/data/sys.4012", - "/root/data/AlMgCu/data/sys.4013", - "/root/data/AlMgCu/data/sys.4014", - "/root/data/AlMgCu/data/sys.4015", - "/root/data/AlMgCu/data/sys.4016", - "/root/data/AlMgCu/data/sys.4017", - "/root/data/AlMgCu/data/sys.4018", - "/root/data/AlMgCu/data/sys.4019", - "/root/data/AlMgCu/data/sys.402", - "/root/data/AlMgCu/data/sys.4020", - "/root/data/AlMgCu/data/sys.4021", - "/root/data/AlMgCu/data/sys.4022", - "/root/data/AlMgCu/data/sys.4023", - "/root/data/AlMgCu/data/sys.4024", - "/root/data/AlMgCu/data/sys.4026", - "/root/data/AlMgCu/data/sys.4028", - "/root/data/AlMgCu/data/sys.4029", - "/root/data/AlMgCu/data/sys.403", - "/root/data/AlMgCu/data/sys.4030", - "/root/data/AlMgCu/data/sys.4031", - "/root/data/AlMgCu/data/sys.4032", - "/root/data/AlMgCu/data/sys.4033", - "/root/data/AlMgCu/data/sys.4036", - "/root/data/AlMgCu/data/sys.4037", - "/root/data/AlMgCu/data/sys.4038", - "/root/data/AlMgCu/data/sys.4039", - "/root/data/AlMgCu/data/sys.404", - "/root/data/AlMgCu/data/sys.4040", - "/root/data/AlMgCu/data/sys.4041", - "/root/data/AlMgCu/data/sys.4042", - "/root/data/AlMgCu/data/sys.4044", - "/root/data/AlMgCu/data/sys.4045", - "/root/data/AlMgCu/data/sys.4046", - "/root/data/AlMgCu/data/sys.4047", - "/root/data/AlMgCu/data/sys.4048", - "/root/data/AlMgCu/data/sys.4049", - "/root/data/AlMgCu/data/sys.405", - "/root/data/AlMgCu/data/sys.4050", - "/root/data/AlMgCu/data/sys.4052", - "/root/data/AlMgCu/data/sys.4054", - "/root/data/AlMgCu/data/sys.4055", - "/root/data/AlMgCu/data/sys.4056", - "/root/data/AlMgCu/data/sys.4057", - "/root/data/AlMgCu/data/sys.4058", - "/root/data/AlMgCu/data/sys.4059", - "/root/data/AlMgCu/data/sys.406", - "/root/data/AlMgCu/data/sys.4060", - "/root/data/AlMgCu/data/sys.4061", - "/root/data/AlMgCu/data/sys.4062", - "/root/data/AlMgCu/data/sys.4063", - "/root/data/AlMgCu/data/sys.4066", - "/root/data/AlMgCu/data/sys.4067", - "/root/data/AlMgCu/data/sys.4068", - "/root/data/AlMgCu/data/sys.4069", - "/root/data/AlMgCu/data/sys.407", - "/root/data/AlMgCu/data/sys.4070", - "/root/data/AlMgCu/data/sys.4071", - "/root/data/AlMgCu/data/sys.4072", - "/root/data/AlMgCu/data/sys.4073", - "/root/data/AlMgCu/data/sys.4074", - "/root/data/AlMgCu/data/sys.4075", - "/root/data/AlMgCu/data/sys.4076", - "/root/data/AlMgCu/data/sys.4078", - "/root/data/AlMgCu/data/sys.4079", - "/root/data/AlMgCu/data/sys.408", - "/root/data/AlMgCu/data/sys.4080", - "/root/data/AlMgCu/data/sys.4081", - "/root/data/AlMgCu/data/sys.4082", - "/root/data/AlMgCu/data/sys.4083", - "/root/data/AlMgCu/data/sys.4084", - "/root/data/AlMgCu/data/sys.4085", - "/root/data/AlMgCu/data/sys.4086", - "/root/data/AlMgCu/data/sys.4087", - "/root/data/AlMgCu/data/sys.4088", - "/root/data/AlMgCu/data/sys.4089", - "/root/data/AlMgCu/data/sys.409", - "/root/data/AlMgCu/data/sys.4090", - "/root/data/AlMgCu/data/sys.4091", - "/root/data/AlMgCu/data/sys.4092", - "/root/data/AlMgCu/data/sys.4093", - "/root/data/AlMgCu/data/sys.4094", - "/root/data/AlMgCu/data/sys.4095", - "/root/data/AlMgCu/data/sys.4096", - "/root/data/AlMgCu/data/sys.4097", - "/root/data/AlMgCu/data/sys.4098", - "/root/data/AlMgCu/data/sys.4099", - "/root/data/AlMgCu/data/sys.410", - "/root/data/AlMgCu/data/sys.4100", - "/root/data/AlMgCu/data/sys.4101", - "/root/data/AlMgCu/data/sys.4102", - "/root/data/AlMgCu/data/sys.4104", - "/root/data/AlMgCu/data/sys.4105", - "/root/data/AlMgCu/data/sys.4106", - "/root/data/AlMgCu/data/sys.4107", - "/root/data/AlMgCu/data/sys.4108", - "/root/data/AlMgCu/data/sys.411", - "/root/data/AlMgCu/data/sys.4110", - "/root/data/AlMgCu/data/sys.4111", - "/root/data/AlMgCu/data/sys.4112", - "/root/data/AlMgCu/data/sys.4113", - "/root/data/AlMgCu/data/sys.4114", - "/root/data/AlMgCu/data/sys.4115", - "/root/data/AlMgCu/data/sys.4116", - "/root/data/AlMgCu/data/sys.4117", - "/root/data/AlMgCu/data/sys.4118", - "/root/data/AlMgCu/data/sys.4119", - "/root/data/AlMgCu/data/sys.412", - "/root/data/AlMgCu/data/sys.4120", - "/root/data/AlMgCu/data/sys.4121", - "/root/data/AlMgCu/data/sys.4122", - "/root/data/AlMgCu/data/sys.4125", - "/root/data/AlMgCu/data/sys.4126", - "/root/data/AlMgCu/data/sys.4127", - "/root/data/AlMgCu/data/sys.4128", - "/root/data/AlMgCu/data/sys.4129", - "/root/data/AlMgCu/data/sys.413", - "/root/data/AlMgCu/data/sys.4130", - "/root/data/AlMgCu/data/sys.4131", - "/root/data/AlMgCu/data/sys.4132", - "/root/data/AlMgCu/data/sys.4133", - "/root/data/AlMgCu/data/sys.4134", - "/root/data/AlMgCu/data/sys.4135", - "/root/data/AlMgCu/data/sys.4136", - "/root/data/AlMgCu/data/sys.4137", - "/root/data/AlMgCu/data/sys.4138", - "/root/data/AlMgCu/data/sys.414", - "/root/data/AlMgCu/data/sys.4140", - "/root/data/AlMgCu/data/sys.4141", - "/root/data/AlMgCu/data/sys.4142", - "/root/data/AlMgCu/data/sys.4143", - "/root/data/AlMgCu/data/sys.4144", - "/root/data/AlMgCu/data/sys.4145", - "/root/data/AlMgCu/data/sys.4146", - "/root/data/AlMgCu/data/sys.4147", - "/root/data/AlMgCu/data/sys.4148", - "/root/data/AlMgCu/data/sys.4149", - "/root/data/AlMgCu/data/sys.415", - "/root/data/AlMgCu/data/sys.4150", - "/root/data/AlMgCu/data/sys.4151", - "/root/data/AlMgCu/data/sys.4152", - "/root/data/AlMgCu/data/sys.4153", - "/root/data/AlMgCu/data/sys.4154", - "/root/data/AlMgCu/data/sys.4155", - "/root/data/AlMgCu/data/sys.4157", - "/root/data/AlMgCu/data/sys.4158", - "/root/data/AlMgCu/data/sys.4159", - "/root/data/AlMgCu/data/sys.416", - "/root/data/AlMgCu/data/sys.4161", - "/root/data/AlMgCu/data/sys.4162", - "/root/data/AlMgCu/data/sys.4163", - "/root/data/AlMgCu/data/sys.4164", - "/root/data/AlMgCu/data/sys.4165", - "/root/data/AlMgCu/data/sys.4166", - "/root/data/AlMgCu/data/sys.4167", - "/root/data/AlMgCu/data/sys.4168", - "/root/data/AlMgCu/data/sys.4169", - "/root/data/AlMgCu/data/sys.4170", - "/root/data/AlMgCu/data/sys.4171", - "/root/data/AlMgCu/data/sys.4172", - "/root/data/AlMgCu/data/sys.4174", - "/root/data/AlMgCu/data/sys.4175", - "/root/data/AlMgCu/data/sys.4176", - "/root/data/AlMgCu/data/sys.4177", - "/root/data/AlMgCu/data/sys.4178", - "/root/data/AlMgCu/data/sys.4180", - "/root/data/AlMgCu/data/sys.4181", - "/root/data/AlMgCu/data/sys.4182", - "/root/data/AlMgCu/data/sys.4183", - "/root/data/AlMgCu/data/sys.4184", - "/root/data/AlMgCu/data/sys.4185", - "/root/data/AlMgCu/data/sys.4186", - "/root/data/AlMgCu/data/sys.4187", - "/root/data/AlMgCu/data/sys.4188", - "/root/data/AlMgCu/data/sys.419", - "/root/data/AlMgCu/data/sys.4190", - "/root/data/AlMgCu/data/sys.4191", - "/root/data/AlMgCu/data/sys.4192", - "/root/data/AlMgCu/data/sys.4193", - "/root/data/AlMgCu/data/sys.4194", - "/root/data/AlMgCu/data/sys.4195", - "/root/data/AlMgCu/data/sys.4196", - "/root/data/AlMgCu/data/sys.4197", - "/root/data/AlMgCu/data/sys.4198", - "/root/data/AlMgCu/data/sys.4199", - "/root/data/AlMgCu/data/sys.4200", - "/root/data/AlMgCu/data/sys.4201", - "/root/data/AlMgCu/data/sys.4203", - "/root/data/AlMgCu/data/sys.4204", - "/root/data/AlMgCu/data/sys.4205", - "/root/data/AlMgCu/data/sys.4206", - "/root/data/AlMgCu/data/sys.4207", - "/root/data/AlMgCu/data/sys.4208", - "/root/data/AlMgCu/data/sys.4209", - "/root/data/AlMgCu/data/sys.421", - "/root/data/AlMgCu/data/sys.4210", - "/root/data/AlMgCu/data/sys.4211", - "/root/data/AlMgCu/data/sys.4212", - "/root/data/AlMgCu/data/sys.4213", - "/root/data/AlMgCu/data/sys.4214", - "/root/data/AlMgCu/data/sys.4215", - "/root/data/AlMgCu/data/sys.4216", - "/root/data/AlMgCu/data/sys.4217", - "/root/data/AlMgCu/data/sys.4218", - "/root/data/AlMgCu/data/sys.4219", - "/root/data/AlMgCu/data/sys.422", - "/root/data/AlMgCu/data/sys.4220", - "/root/data/AlMgCu/data/sys.4221", - "/root/data/AlMgCu/data/sys.4222", - "/root/data/AlMgCu/data/sys.4223", - "/root/data/AlMgCu/data/sys.4224", - "/root/data/AlMgCu/data/sys.4225", - "/root/data/AlMgCu/data/sys.4226", - "/root/data/AlMgCu/data/sys.4227", - "/root/data/AlMgCu/data/sys.4229", - "/root/data/AlMgCu/data/sys.423", - "/root/data/AlMgCu/data/sys.4230", - "/root/data/AlMgCu/data/sys.4231", - "/root/data/AlMgCu/data/sys.4232", - "/root/data/AlMgCu/data/sys.4233", - "/root/data/AlMgCu/data/sys.4234", - "/root/data/AlMgCu/data/sys.4235", - "/root/data/AlMgCu/data/sys.4236", - "/root/data/AlMgCu/data/sys.4237", - "/root/data/AlMgCu/data/sys.4238", - "/root/data/AlMgCu/data/sys.4239", - "/root/data/AlMgCu/data/sys.424", - "/root/data/AlMgCu/data/sys.4240", - "/root/data/AlMgCu/data/sys.4241", - "/root/data/AlMgCu/data/sys.4242", - "/root/data/AlMgCu/data/sys.4244", - "/root/data/AlMgCu/data/sys.4245", - "/root/data/AlMgCu/data/sys.4246", - "/root/data/AlMgCu/data/sys.4247", - "/root/data/AlMgCu/data/sys.4248", - "/root/data/AlMgCu/data/sys.4249", - "/root/data/AlMgCu/data/sys.425", - "/root/data/AlMgCu/data/sys.4250", - "/root/data/AlMgCu/data/sys.4251", - "/root/data/AlMgCu/data/sys.4252", - "/root/data/AlMgCu/data/sys.4253", - "/root/data/AlMgCu/data/sys.4254", - "/root/data/AlMgCu/data/sys.4255", - "/root/data/AlMgCu/data/sys.4256", - "/root/data/AlMgCu/data/sys.4257", - "/root/data/AlMgCu/data/sys.4258", - "/root/data/AlMgCu/data/sys.4259", - "/root/data/AlMgCu/data/sys.426", - "/root/data/AlMgCu/data/sys.4260", - "/root/data/AlMgCu/data/sys.4261", - "/root/data/AlMgCu/data/sys.4262", - "/root/data/AlMgCu/data/sys.4263", - "/root/data/AlMgCu/data/sys.4264", - "/root/data/AlMgCu/data/sys.4266", - "/root/data/AlMgCu/data/sys.4267", - "/root/data/AlMgCu/data/sys.4268", - "/root/data/AlMgCu/data/sys.4269", - "/root/data/AlMgCu/data/sys.4270", - "/root/data/AlMgCu/data/sys.4271", - "/root/data/AlMgCu/data/sys.4272", - "/root/data/AlMgCu/data/sys.4273", - "/root/data/AlMgCu/data/sys.4274", - "/root/data/AlMgCu/data/sys.4275", - "/root/data/AlMgCu/data/sys.4277", - "/root/data/AlMgCu/data/sys.4278", - "/root/data/AlMgCu/data/sys.4279", - "/root/data/AlMgCu/data/sys.4280", - "/root/data/AlMgCu/data/sys.4282", - "/root/data/AlMgCu/data/sys.4283", - "/root/data/AlMgCu/data/sys.4284", - "/root/data/AlMgCu/data/sys.4286", - "/root/data/AlMgCu/data/sys.4287", - "/root/data/AlMgCu/data/sys.4288", - "/root/data/AlMgCu/data/sys.4289", - "/root/data/AlMgCu/data/sys.429", - "/root/data/AlMgCu/data/sys.4290", - "/root/data/AlMgCu/data/sys.4291", - "/root/data/AlMgCu/data/sys.4292", - "/root/data/AlMgCu/data/sys.4293", - "/root/data/AlMgCu/data/sys.4294", - "/root/data/AlMgCu/data/sys.4295", - "/root/data/AlMgCu/data/sys.4296", - "/root/data/AlMgCu/data/sys.4298", - "/root/data/AlMgCu/data/sys.430", - "/root/data/AlMgCu/data/sys.4300", - "/root/data/AlMgCu/data/sys.4301", - "/root/data/AlMgCu/data/sys.4302", - "/root/data/AlMgCu/data/sys.4303", - "/root/data/AlMgCu/data/sys.4305", - "/root/data/AlMgCu/data/sys.4307", - "/root/data/AlMgCu/data/sys.4308", - "/root/data/AlMgCu/data/sys.4310", - "/root/data/AlMgCu/data/sys.4311", - "/root/data/AlMgCu/data/sys.4312", - "/root/data/AlMgCu/data/sys.4313", - "/root/data/AlMgCu/data/sys.4314", - "/root/data/AlMgCu/data/sys.4315", - "/root/data/AlMgCu/data/sys.4316", - "/root/data/AlMgCu/data/sys.4317", - "/root/data/AlMgCu/data/sys.4318", - "/root/data/AlMgCu/data/sys.4319", - "/root/data/AlMgCu/data/sys.432", - "/root/data/AlMgCu/data/sys.4322", - "/root/data/AlMgCu/data/sys.4323", - "/root/data/AlMgCu/data/sys.4324", - "/root/data/AlMgCu/data/sys.4325", - "/root/data/AlMgCu/data/sys.4326", - "/root/data/AlMgCu/data/sys.4327", - "/root/data/AlMgCu/data/sys.4328", - "/root/data/AlMgCu/data/sys.4329", - "/root/data/AlMgCu/data/sys.433", - "/root/data/AlMgCu/data/sys.4330", - "/root/data/AlMgCu/data/sys.4332", - "/root/data/AlMgCu/data/sys.4333", - "/root/data/AlMgCu/data/sys.4334", - "/root/data/AlMgCu/data/sys.4336", - "/root/data/AlMgCu/data/sys.4337", - "/root/data/AlMgCu/data/sys.4338", - "/root/data/AlMgCu/data/sys.434", - "/root/data/AlMgCu/data/sys.4340", - "/root/data/AlMgCu/data/sys.4341", - "/root/data/AlMgCu/data/sys.4342", - "/root/data/AlMgCu/data/sys.4343", - "/root/data/AlMgCu/data/sys.4344", - "/root/data/AlMgCu/data/sys.4345", - "/root/data/AlMgCu/data/sys.4346", - "/root/data/AlMgCu/data/sys.4348", - "/root/data/AlMgCu/data/sys.4349", - "/root/data/AlMgCu/data/sys.435", - "/root/data/AlMgCu/data/sys.4350", - "/root/data/AlMgCu/data/sys.4352", - "/root/data/AlMgCu/data/sys.4353", - "/root/data/AlMgCu/data/sys.4354", - "/root/data/AlMgCu/data/sys.4355", - "/root/data/AlMgCu/data/sys.4356", - "/root/data/AlMgCu/data/sys.4358", - "/root/data/AlMgCu/data/sys.436", - "/root/data/AlMgCu/data/sys.4360", - "/root/data/AlMgCu/data/sys.4361", - "/root/data/AlMgCu/data/sys.4362", - "/root/data/AlMgCu/data/sys.4364", - "/root/data/AlMgCu/data/sys.4365", - "/root/data/AlMgCu/data/sys.4366", - "/root/data/AlMgCu/data/sys.437", - "/root/data/AlMgCu/data/sys.4370", - "/root/data/AlMgCu/data/sys.4371", - "/root/data/AlMgCu/data/sys.4372", - "/root/data/AlMgCu/data/sys.4373", - "/root/data/AlMgCu/data/sys.4374", - "/root/data/AlMgCu/data/sys.4375", - "/root/data/AlMgCu/data/sys.4376", - "/root/data/AlMgCu/data/sys.4377", - "/root/data/AlMgCu/data/sys.4378", - "/root/data/AlMgCu/data/sys.438", - "/root/data/AlMgCu/data/sys.4381", - "/root/data/AlMgCu/data/sys.4382", - "/root/data/AlMgCu/data/sys.4385", - "/root/data/AlMgCu/data/sys.4386", - "/root/data/AlMgCu/data/sys.4387", - "/root/data/AlMgCu/data/sys.4388", - "/root/data/AlMgCu/data/sys.4389", - "/root/data/AlMgCu/data/sys.439", - "/root/data/AlMgCu/data/sys.4390", - "/root/data/AlMgCu/data/sys.4392", - "/root/data/AlMgCu/data/sys.4393", - "/root/data/AlMgCu/data/sys.4394", - "/root/data/AlMgCu/data/sys.4395", - "/root/data/AlMgCu/data/sys.4396", - "/root/data/AlMgCu/data/sys.4398", - "/root/data/AlMgCu/data/sys.440", - "/root/data/AlMgCu/data/sys.4402", - "/root/data/AlMgCu/data/sys.4404", - "/root/data/AlMgCu/data/sys.4406", - "/root/data/AlMgCu/data/sys.4408", - "/root/data/AlMgCu/data/sys.4409", - "/root/data/AlMgCu/data/sys.441", - "/root/data/AlMgCu/data/sys.4410", - "/root/data/AlMgCu/data/sys.4411", - "/root/data/AlMgCu/data/sys.4412", - "/root/data/AlMgCu/data/sys.4413", - "/root/data/AlMgCu/data/sys.4414", - "/root/data/AlMgCu/data/sys.4415", - "/root/data/AlMgCu/data/sys.4416", - "/root/data/AlMgCu/data/sys.4417", - "/root/data/AlMgCu/data/sys.4419", - "/root/data/AlMgCu/data/sys.442", - "/root/data/AlMgCu/data/sys.4420", - "/root/data/AlMgCu/data/sys.4422", - "/root/data/AlMgCu/data/sys.4423", - "/root/data/AlMgCu/data/sys.4425", - "/root/data/AlMgCu/data/sys.4426", - "/root/data/AlMgCu/data/sys.4427", - "/root/data/AlMgCu/data/sys.4428", - "/root/data/AlMgCu/data/sys.443", - "/root/data/AlMgCu/data/sys.4430", - "/root/data/AlMgCu/data/sys.4431", - "/root/data/AlMgCu/data/sys.4432", - "/root/data/AlMgCu/data/sys.4433", - "/root/data/AlMgCu/data/sys.4436", - "/root/data/AlMgCu/data/sys.4438", - "/root/data/AlMgCu/data/sys.4439", - "/root/data/AlMgCu/data/sys.444", - "/root/data/AlMgCu/data/sys.4440", - "/root/data/AlMgCu/data/sys.4441", - "/root/data/AlMgCu/data/sys.4442", - "/root/data/AlMgCu/data/sys.4443", - "/root/data/AlMgCu/data/sys.4446", - "/root/data/AlMgCu/data/sys.4447", - "/root/data/AlMgCu/data/sys.4448", - "/root/data/AlMgCu/data/sys.445", - "/root/data/AlMgCu/data/sys.4450", - "/root/data/AlMgCu/data/sys.4451", - "/root/data/AlMgCu/data/sys.4452", - "/root/data/AlMgCu/data/sys.4453", - "/root/data/AlMgCu/data/sys.4454", - "/root/data/AlMgCu/data/sys.4455", - "/root/data/AlMgCu/data/sys.4456", - "/root/data/AlMgCu/data/sys.4457", - "/root/data/AlMgCu/data/sys.4458", - "/root/data/AlMgCu/data/sys.4459", - "/root/data/AlMgCu/data/sys.4460", - "/root/data/AlMgCu/data/sys.4462", - "/root/data/AlMgCu/data/sys.4464", - "/root/data/AlMgCu/data/sys.4465", - "/root/data/AlMgCu/data/sys.447", - "/root/data/AlMgCu/data/sys.4470", - "/root/data/AlMgCu/data/sys.4471", - "/root/data/AlMgCu/data/sys.4472", - "/root/data/AlMgCu/data/sys.4474", - "/root/data/AlMgCu/data/sys.4475", - "/root/data/AlMgCu/data/sys.4476", - "/root/data/AlMgCu/data/sys.4479", - "/root/data/AlMgCu/data/sys.448", - "/root/data/AlMgCu/data/sys.4480", - "/root/data/AlMgCu/data/sys.4481", - "/root/data/AlMgCu/data/sys.4482", - "/root/data/AlMgCu/data/sys.4483", - "/root/data/AlMgCu/data/sys.4484", - "/root/data/AlMgCu/data/sys.4485", - "/root/data/AlMgCu/data/sys.4486", - "/root/data/AlMgCu/data/sys.4488", - "/root/data/AlMgCu/data/sys.449", - "/root/data/AlMgCu/data/sys.4490", - "/root/data/AlMgCu/data/sys.4491", - "/root/data/AlMgCu/data/sys.4492", - "/root/data/AlMgCu/data/sys.4493", - "/root/data/AlMgCu/data/sys.4494", - "/root/data/AlMgCu/data/sys.4495", - "/root/data/AlMgCu/data/sys.4496", - "/root/data/AlMgCu/data/sys.4497", - "/root/data/AlMgCu/data/sys.4498", - "/root/data/AlMgCu/data/sys.4499", - "/root/data/AlMgCu/data/sys.450", - "/root/data/AlMgCu/data/sys.4500", - "/root/data/AlMgCu/data/sys.4501", - "/root/data/AlMgCu/data/sys.4502", - "/root/data/AlMgCu/data/sys.4503", - "/root/data/AlMgCu/data/sys.4505", - "/root/data/AlMgCu/data/sys.4506", - "/root/data/AlMgCu/data/sys.4507", - "/root/data/AlMgCu/data/sys.4509", - "/root/data/AlMgCu/data/sys.451", - "/root/data/AlMgCu/data/sys.4510", - "/root/data/AlMgCu/data/sys.4511", - "/root/data/AlMgCu/data/sys.4512", - "/root/data/AlMgCu/data/sys.4513", - "/root/data/AlMgCu/data/sys.4514", - "/root/data/AlMgCu/data/sys.4516", - "/root/data/AlMgCu/data/sys.4517", - "/root/data/AlMgCu/data/sys.4519", - "/root/data/AlMgCu/data/sys.452", - "/root/data/AlMgCu/data/sys.4520", - "/root/data/AlMgCu/data/sys.4521", - "/root/data/AlMgCu/data/sys.4522", - "/root/data/AlMgCu/data/sys.4523", - "/root/data/AlMgCu/data/sys.4524", - "/root/data/AlMgCu/data/sys.4525", - "/root/data/AlMgCu/data/sys.4526", - "/root/data/AlMgCu/data/sys.4528", - "/root/data/AlMgCu/data/sys.4529", - "/root/data/AlMgCu/data/sys.453", - "/root/data/AlMgCu/data/sys.4530", - "/root/data/AlMgCu/data/sys.4531", - "/root/data/AlMgCu/data/sys.4532", - "/root/data/AlMgCu/data/sys.4535", - "/root/data/AlMgCu/data/sys.4536", - "/root/data/AlMgCu/data/sys.4537", - "/root/data/AlMgCu/data/sys.4538", - "/root/data/AlMgCu/data/sys.4539", - "/root/data/AlMgCu/data/sys.454", - "/root/data/AlMgCu/data/sys.4540", - "/root/data/AlMgCu/data/sys.4541", - "/root/data/AlMgCu/data/sys.4542", - "/root/data/AlMgCu/data/sys.4543", - "/root/data/AlMgCu/data/sys.4544", - "/root/data/AlMgCu/data/sys.4545", - "/root/data/AlMgCu/data/sys.4546", - "/root/data/AlMgCu/data/sys.4547", - "/root/data/AlMgCu/data/sys.4549", - "/root/data/AlMgCu/data/sys.455", - "/root/data/AlMgCu/data/sys.4550", - "/root/data/AlMgCu/data/sys.4551", - "/root/data/AlMgCu/data/sys.4553", - "/root/data/AlMgCu/data/sys.4554", - "/root/data/AlMgCu/data/sys.4555", - "/root/data/AlMgCu/data/sys.4556", - "/root/data/AlMgCu/data/sys.4557", - "/root/data/AlMgCu/data/sys.4559", - "/root/data/AlMgCu/data/sys.456", - "/root/data/AlMgCu/data/sys.4560", - "/root/data/AlMgCu/data/sys.4561", - "/root/data/AlMgCu/data/sys.4562", - "/root/data/AlMgCu/data/sys.4563", - "/root/data/AlMgCu/data/sys.4564", - "/root/data/AlMgCu/data/sys.4565", - "/root/data/AlMgCu/data/sys.4566", - "/root/data/AlMgCu/data/sys.4567", - "/root/data/AlMgCu/data/sys.4568", - "/root/data/AlMgCu/data/sys.4569", - "/root/data/AlMgCu/data/sys.457", - "/root/data/AlMgCu/data/sys.4570", - "/root/data/AlMgCu/data/sys.4571", - "/root/data/AlMgCu/data/sys.4572", - "/root/data/AlMgCu/data/sys.4573", - "/root/data/AlMgCu/data/sys.4574", - "/root/data/AlMgCu/data/sys.4575", - "/root/data/AlMgCu/data/sys.4576", - "/root/data/AlMgCu/data/sys.4577", - "/root/data/AlMgCu/data/sys.4578", - "/root/data/AlMgCu/data/sys.4579", - "/root/data/AlMgCu/data/sys.458", - "/root/data/AlMgCu/data/sys.4580", - "/root/data/AlMgCu/data/sys.4581", - "/root/data/AlMgCu/data/sys.4582", - "/root/data/AlMgCu/data/sys.4584", - "/root/data/AlMgCu/data/sys.4585", - "/root/data/AlMgCu/data/sys.4587", - "/root/data/AlMgCu/data/sys.4588", - "/root/data/AlMgCu/data/sys.4589", - "/root/data/AlMgCu/data/sys.459", - "/root/data/AlMgCu/data/sys.4590", - "/root/data/AlMgCu/data/sys.4591", - "/root/data/AlMgCu/data/sys.4593", - "/root/data/AlMgCu/data/sys.4594", - "/root/data/AlMgCu/data/sys.4596", - "/root/data/AlMgCu/data/sys.4598", - "/root/data/AlMgCu/data/sys.460", - "/root/data/AlMgCu/data/sys.4600", - "/root/data/AlMgCu/data/sys.4602", - "/root/data/AlMgCu/data/sys.4604", - "/root/data/AlMgCu/data/sys.4606", - "/root/data/AlMgCu/data/sys.4608", - "/root/data/AlMgCu/data/sys.461", - "/root/data/AlMgCu/data/sys.4610", - "/root/data/AlMgCu/data/sys.4612", - "/root/data/AlMgCu/data/sys.4614", - "/root/data/AlMgCu/data/sys.4616", - "/root/data/AlMgCu/data/sys.4618", - "/root/data/AlMgCu/data/sys.462", - "/root/data/AlMgCu/data/sys.4620", - "/root/data/AlMgCu/data/sys.4622", - "/root/data/AlMgCu/data/sys.4624", - "/root/data/AlMgCu/data/sys.463", - "/root/data/AlMgCu/data/sys.4635", - "/root/data/AlMgCu/data/sys.464", - "/root/data/AlMgCu/data/sys.4642", - "/root/data/AlMgCu/data/sys.4643", - "/root/data/AlMgCu/data/sys.4648", - "/root/data/AlMgCu/data/sys.4649", - "/root/data/AlMgCu/data/sys.4658", - "/root/data/AlMgCu/data/sys.466", - "/root/data/AlMgCu/data/sys.4666", - "/root/data/AlMgCu/data/sys.467", - "/root/data/AlMgCu/data/sys.4670", - "/root/data/AlMgCu/data/sys.4674", - "/root/data/AlMgCu/data/sys.468", - "/root/data/AlMgCu/data/sys.4681", - "/root/data/AlMgCu/data/sys.4686", - "/root/data/AlMgCu/data/sys.4687", - "/root/data/AlMgCu/data/sys.4688", - "/root/data/AlMgCu/data/sys.4689", - "/root/data/AlMgCu/data/sys.469", - "/root/data/AlMgCu/data/sys.4690", - "/root/data/AlMgCu/data/sys.4691", - "/root/data/AlMgCu/data/sys.4692", - "/root/data/AlMgCu/data/sys.4693", - "/root/data/AlMgCu/data/sys.4694", - "/root/data/AlMgCu/data/sys.4695", - "/root/data/AlMgCu/data/sys.4696", - "/root/data/AlMgCu/data/sys.4697", - "/root/data/AlMgCu/data/sys.4698", - "/root/data/AlMgCu/data/sys.4699", - "/root/data/AlMgCu/data/sys.470", - "/root/data/AlMgCu/data/sys.4700", - "/root/data/AlMgCu/data/sys.4701", - "/root/data/AlMgCu/data/sys.4703", - "/root/data/AlMgCu/data/sys.4704", - "/root/data/AlMgCu/data/sys.4705", - "/root/data/AlMgCu/data/sys.4707", - "/root/data/AlMgCu/data/sys.4708", - "/root/data/AlMgCu/data/sys.4709", - "/root/data/AlMgCu/data/sys.471", - "/root/data/AlMgCu/data/sys.4710", - "/root/data/AlMgCu/data/sys.4711", - "/root/data/AlMgCu/data/sys.4712", - "/root/data/AlMgCu/data/sys.4713", - "/root/data/AlMgCu/data/sys.4714", - "/root/data/AlMgCu/data/sys.4715", - "/root/data/AlMgCu/data/sys.4716", - "/root/data/AlMgCu/data/sys.4717", - "/root/data/AlMgCu/data/sys.4718", - "/root/data/AlMgCu/data/sys.4719", - "/root/data/AlMgCu/data/sys.472", - "/root/data/AlMgCu/data/sys.4720", - "/root/data/AlMgCu/data/sys.4721", - "/root/data/AlMgCu/data/sys.4722", - "/root/data/AlMgCu/data/sys.4723", - "/root/data/AlMgCu/data/sys.4725", - "/root/data/AlMgCu/data/sys.4726", - "/root/data/AlMgCu/data/sys.4727", - "/root/data/AlMgCu/data/sys.4728", - "/root/data/AlMgCu/data/sys.473", - "/root/data/AlMgCu/data/sys.4730", - "/root/data/AlMgCu/data/sys.4731", - "/root/data/AlMgCu/data/sys.4732", - "/root/data/AlMgCu/data/sys.4733", - "/root/data/AlMgCu/data/sys.4734", - "/root/data/AlMgCu/data/sys.4735", - "/root/data/AlMgCu/data/sys.4736", - "/root/data/AlMgCu/data/sys.4737", - "/root/data/AlMgCu/data/sys.4738", - "/root/data/AlMgCu/data/sys.4739", - "/root/data/AlMgCu/data/sys.4740", - "/root/data/AlMgCu/data/sys.4741", - "/root/data/AlMgCu/data/sys.4742", - "/root/data/AlMgCu/data/sys.4743", - "/root/data/AlMgCu/data/sys.4744", - "/root/data/AlMgCu/data/sys.4747", - "/root/data/AlMgCu/data/sys.4748", - "/root/data/AlMgCu/data/sys.475", - "/root/data/AlMgCu/data/sys.4752", - "/root/data/AlMgCu/data/sys.4753", - "/root/data/AlMgCu/data/sys.4754", - "/root/data/AlMgCu/data/sys.476", - "/root/data/AlMgCu/data/sys.4762", - "/root/data/AlMgCu/data/sys.4763", - "/root/data/AlMgCu/data/sys.4769", - "/root/data/AlMgCu/data/sys.477", - "/root/data/AlMgCu/data/sys.4771", - "/root/data/AlMgCu/data/sys.4772", - "/root/data/AlMgCu/data/sys.4777", - "/root/data/AlMgCu/data/sys.4778", - "/root/data/AlMgCu/data/sys.4779", - "/root/data/AlMgCu/data/sys.478", - "/root/data/AlMgCu/data/sys.4786", - "/root/data/AlMgCu/data/sys.479", - "/root/data/AlMgCu/data/sys.4790", - "/root/data/AlMgCu/data/sys.4792", - "/root/data/AlMgCu/data/sys.4793", - "/root/data/AlMgCu/data/sys.4794", - "/root/data/AlMgCu/data/sys.4798", - "/root/data/AlMgCu/data/sys.480", - "/root/data/AlMgCu/data/sys.4800", - "/root/data/AlMgCu/data/sys.4802", - "/root/data/AlMgCu/data/sys.4804", - "/root/data/AlMgCu/data/sys.481", - "/root/data/AlMgCu/data/sys.4810", - "/root/data/AlMgCu/data/sys.4818", - "/root/data/AlMgCu/data/sys.482", - "/root/data/AlMgCu/data/sys.4826", - "/root/data/AlMgCu/data/sys.483", - "/root/data/AlMgCu/data/sys.4834", - "/root/data/AlMgCu/data/sys.484", - "/root/data/AlMgCu/data/sys.4843", - "/root/data/AlMgCu/data/sys.4844", - "/root/data/AlMgCu/data/sys.4848", - "/root/data/AlMgCu/data/sys.4849", - "/root/data/AlMgCu/data/sys.485", - "/root/data/AlMgCu/data/sys.4850", - "/root/data/AlMgCu/data/sys.4851", - "/root/data/AlMgCu/data/sys.4857", - "/root/data/AlMgCu/data/sys.4858", - "/root/data/AlMgCu/data/sys.486", - "/root/data/AlMgCu/data/sys.4872", - "/root/data/AlMgCu/data/sys.4874", - "/root/data/AlMgCu/data/sys.4878", - "/root/data/AlMgCu/data/sys.488", - "/root/data/AlMgCu/data/sys.4880", - "/root/data/AlMgCu/data/sys.4882", - "/root/data/AlMgCu/data/sys.4888", - "/root/data/AlMgCu/data/sys.489", - "/root/data/AlMgCu/data/sys.4898", - "/root/data/AlMgCu/data/sys.490", - "/root/data/AlMgCu/data/sys.4904", - "/root/data/AlMgCu/data/sys.4905", - "/root/data/AlMgCu/data/sys.4906", - "/root/data/AlMgCu/data/sys.4907", - "/root/data/AlMgCu/data/sys.4908", - "/root/data/AlMgCu/data/sys.491", - "/root/data/AlMgCu/data/sys.4913", - "/root/data/AlMgCu/data/sys.4914", - "/root/data/AlMgCu/data/sys.492", - "/root/data/AlMgCu/data/sys.4920", - "/root/data/AlMgCu/data/sys.4922", - "/root/data/AlMgCu/data/sys.4924", - "/root/data/AlMgCu/data/sys.493", - "/root/data/AlMgCu/data/sys.4930", - "/root/data/AlMgCu/data/sys.4932", - "/root/data/AlMgCu/data/sys.4938", - "/root/data/AlMgCu/data/sys.494", - "/root/data/AlMgCu/data/sys.4940", - "/root/data/AlMgCu/data/sys.4945", - "/root/data/AlMgCu/data/sys.4946", - "/root/data/AlMgCu/data/sys.495", - "/root/data/AlMgCu/data/sys.4952", - "/root/data/AlMgCu/data/sys.4953", - "/root/data/AlMgCu/data/sys.496", - "/root/data/AlMgCu/data/sys.4960", - "/root/data/AlMgCu/data/sys.4967", - "/root/data/AlMgCu/data/sys.497", - "/root/data/AlMgCu/data/sys.4970", - "/root/data/AlMgCu/data/sys.4971", - "/root/data/AlMgCu/data/sys.4972", - "/root/data/AlMgCu/data/sys.4973", - "/root/data/AlMgCu/data/sys.4974", - "/root/data/AlMgCu/data/sys.4976", - "/root/data/AlMgCu/data/sys.4977", - "/root/data/AlMgCu/data/sys.4978", - "/root/data/AlMgCu/data/sys.4979", - "/root/data/AlMgCu/data/sys.498", - "/root/data/AlMgCu/data/sys.4980", - "/root/data/AlMgCu/data/sys.4981", - "/root/data/AlMgCu/data/sys.4982", - "/root/data/AlMgCu/data/sys.4984", - "/root/data/AlMgCu/data/sys.4985", - "/root/data/AlMgCu/data/sys.4987", - "/root/data/AlMgCu/data/sys.4988", - "/root/data/AlMgCu/data/sys.499", - "/root/data/AlMgCu/data/sys.4990", - "/root/data/AlMgCu/data/sys.4992", - "/root/data/AlMgCu/data/sys.4993", - "/root/data/AlMgCu/data/sys.4994", - "/root/data/AlMgCu/data/sys.4996", - "/root/data/AlMgCu/data/sys.4998", - "/root/data/AlMgCu/data/sys.500", - "/root/data/AlMgCu/data/sys.5000", - "/root/data/AlMgCu/data/sys.5001", - "/root/data/AlMgCu/data/sys.5002", - "/root/data/AlMgCu/data/sys.501", - "/root/data/AlMgCu/data/sys.5010", - "/root/data/AlMgCu/data/sys.5017", - "/root/data/AlMgCu/data/sys.5018", - "/root/data/AlMgCu/data/sys.5019", - "/root/data/AlMgCu/data/sys.502", - "/root/data/AlMgCu/data/sys.5025", - "/root/data/AlMgCu/data/sys.5026", - "/root/data/AlMgCu/data/sys.5027", - "/root/data/AlMgCu/data/sys.5034", - "/root/data/AlMgCu/data/sys.504", - "/root/data/AlMgCu/data/sys.5043", - "/root/data/AlMgCu/data/sys.5044", - "/root/data/AlMgCu/data/sys.505", - "/root/data/AlMgCu/data/sys.5050", - "/root/data/AlMgCu/data/sys.5056", - "/root/data/AlMgCu/data/sys.5058", - "/root/data/AlMgCu/data/sys.506", - "/root/data/AlMgCu/data/sys.5066", - "/root/data/AlMgCu/data/sys.507", - "/root/data/AlMgCu/data/sys.5074", - "/root/data/AlMgCu/data/sys.5075", - "/root/data/AlMgCu/data/sys.508", - "/root/data/AlMgCu/data/sys.5083", - "/root/data/AlMgCu/data/sys.509", - "/root/data/AlMgCu/data/sys.5090", - "/root/data/AlMgCu/data/sys.5091", - "/root/data/AlMgCu/data/sys.5098", - "/root/data/AlMgCu/data/sys.510", - "/root/data/AlMgCu/data/sys.5100", - "/root/data/AlMgCu/data/sys.5104", - "/root/data/AlMgCu/data/sys.5105", - "/root/data/AlMgCu/data/sys.5106", - "/root/data/AlMgCu/data/sys.511", - "/root/data/AlMgCu/data/sys.5112", - "/root/data/AlMgCu/data/sys.5114", - "/root/data/AlMgCu/data/sys.512", - "/root/data/AlMgCu/data/sys.5122", - "/root/data/AlMgCu/data/sys.5124", - "/root/data/AlMgCu/data/sys.513", - "/root/data/AlMgCu/data/sys.5131", - "/root/data/AlMgCu/data/sys.514", - "/root/data/AlMgCu/data/sys.5146", - "/root/data/AlMgCu/data/sys.5147", - "/root/data/AlMgCu/data/sys.515", - "/root/data/AlMgCu/data/sys.5154", - "/root/data/AlMgCu/data/sys.5156", - "/root/data/AlMgCu/data/sys.516", - "/root/data/AlMgCu/data/sys.5164", - "/root/data/AlMgCu/data/sys.5168", - "/root/data/AlMgCu/data/sys.517", - "/root/data/AlMgCu/data/sys.5170", - "/root/data/AlMgCu/data/sys.5177", - "/root/data/AlMgCu/data/sys.5178", - "/root/data/AlMgCu/data/sys.518", - "/root/data/AlMgCu/data/sys.5180", - "/root/data/AlMgCu/data/sys.5186", - "/root/data/AlMgCu/data/sys.5187", - "/root/data/AlMgCu/data/sys.519", - "/root/data/AlMgCu/data/sys.5194", - "/root/data/AlMgCu/data/sys.520", - "/root/data/AlMgCu/data/sys.5208", - "/root/data/AlMgCu/data/sys.521", - "/root/data/AlMgCu/data/sys.5210", - "/root/data/AlMgCu/data/sys.5211", - "/root/data/AlMgCu/data/sys.5212", - "/root/data/AlMgCu/data/sys.522", - "/root/data/AlMgCu/data/sys.5220", - "/root/data/AlMgCu/data/sys.5226", - "/root/data/AlMgCu/data/sys.523", - "/root/data/AlMgCu/data/sys.5233", - "/root/data/AlMgCu/data/sys.5241", - "/root/data/AlMgCu/data/sys.5249", - "/root/data/AlMgCu/data/sys.525", - "/root/data/AlMgCu/data/sys.526", - "/root/data/AlMgCu/data/sys.5268", - "/root/data/AlMgCu/data/sys.528", - "/root/data/AlMgCu/data/sys.5282", - "/root/data/AlMgCu/data/sys.529", - "/root/data/AlMgCu/data/sys.5290", - "/root/data/AlMgCu/data/sys.5293", - "/root/data/AlMgCu/data/sys.5299", - "/root/data/AlMgCu/data/sys.530", - "/root/data/AlMgCu/data/sys.531", - "/root/data/AlMgCu/data/sys.5313", - "/root/data/AlMgCu/data/sys.5316", - "/root/data/AlMgCu/data/sys.532", - "/root/data/AlMgCu/data/sys.533", - "/root/data/AlMgCu/data/sys.534", - "/root/data/AlMgCu/data/sys.535", - "/root/data/AlMgCu/data/sys.536", - "/root/data/AlMgCu/data/sys.537", - "/root/data/AlMgCu/data/sys.538", - "/root/data/AlMgCu/data/sys.5385", - "/root/data/AlMgCu/data/sys.5388", - "/root/data/AlMgCu/data/sys.539", - "/root/data/AlMgCu/data/sys.540", - "/root/data/AlMgCu/data/sys.541", - "/root/data/AlMgCu/data/sys.5410", - "/root/data/AlMgCu/data/sys.5418", - "/root/data/AlMgCu/data/sys.542", - "/root/data/AlMgCu/data/sys.543", - "/root/data/AlMgCu/data/sys.544", - "/root/data/AlMgCu/data/sys.5443", - "/root/data/AlMgCu/data/sys.545", - "/root/data/AlMgCu/data/sys.5450", - "/root/data/AlMgCu/data/sys.546", - "/root/data/AlMgCu/data/sys.547", - "/root/data/AlMgCu/data/sys.548", - "/root/data/AlMgCu/data/sys.549", - "/root/data/AlMgCu/data/sys.550", - "/root/data/AlMgCu/data/sys.5506", - "/root/data/AlMgCu/data/sys.551", - "/root/data/AlMgCu/data/sys.552", - "/root/data/AlMgCu/data/sys.553", - "/root/data/AlMgCu/data/sys.554", - "/root/data/AlMgCu/data/sys.555", - "/root/data/AlMgCu/data/sys.556", - "/root/data/AlMgCu/data/sys.557", - "/root/data/AlMgCu/data/sys.5574", - "/root/data/AlMgCu/data/sys.558", - "/root/data/AlMgCu/data/sys.5580", - "/root/data/AlMgCu/data/sys.559", - "/root/data/AlMgCu/data/sys.560", - "/root/data/AlMgCu/data/sys.561", - "/root/data/AlMgCu/data/sys.562", - "/root/data/AlMgCu/data/sys.563", - "/root/data/AlMgCu/data/sys.565", - "/root/data/AlMgCu/data/sys.566", - "/root/data/AlMgCu/data/sys.567", - "/root/data/AlMgCu/data/sys.569", - "/root/data/AlMgCu/data/sys.570", - "/root/data/AlMgCu/data/sys.571", - "/root/data/AlMgCu/data/sys.572", - "/root/data/AlMgCu/data/sys.573", - "/root/data/AlMgCu/data/sys.574", - "/root/data/AlMgCu/data/sys.575", - "/root/data/AlMgCu/data/sys.576", - "/root/data/AlMgCu/data/sys.577", - "/root/data/AlMgCu/data/sys.578", - "/root/data/AlMgCu/data/sys.579", - "/root/data/AlMgCu/data/sys.580", - "/root/data/AlMgCu/data/sys.581", - "/root/data/AlMgCu/data/sys.582", - "/root/data/AlMgCu/data/sys.583", - "/root/data/AlMgCu/data/sys.584", - "/root/data/AlMgCu/data/sys.5848", - "/root/data/AlMgCu/data/sys.585", - "/root/data/AlMgCu/data/sys.586", - "/root/data/AlMgCu/data/sys.587", - "/root/data/AlMgCu/data/sys.589", - "/root/data/AlMgCu/data/sys.590", - "/root/data/AlMgCu/data/sys.592", - "/root/data/AlMgCu/data/sys.593", - "/root/data/AlMgCu/data/sys.594", - "/root/data/AlMgCu/data/sys.5943", - "/root/data/AlMgCu/data/sys.5944", - "/root/data/AlMgCu/data/sys.5945", - "/root/data/AlMgCu/data/sys.5946", - "/root/data/AlMgCu/data/sys.5947", - "/root/data/AlMgCu/data/sys.5948", - "/root/data/AlMgCu/data/sys.5949", - "/root/data/AlMgCu/data/sys.595", - "/root/data/AlMgCu/data/sys.5950", - "/root/data/AlMgCu/data/sys.5951", - "/root/data/AlMgCu/data/sys.5953", - "/root/data/AlMgCu/data/sys.5954", - "/root/data/AlMgCu/data/sys.5955", - "/root/data/AlMgCu/data/sys.5956", - "/root/data/AlMgCu/data/sys.5957", - "/root/data/AlMgCu/data/sys.5958", - "/root/data/AlMgCu/data/sys.5959", - "/root/data/AlMgCu/data/sys.596", - "/root/data/AlMgCu/data/sys.5960", - "/root/data/AlMgCu/data/sys.5961", - "/root/data/AlMgCu/data/sys.5962", - "/root/data/AlMgCu/data/sys.5963", - "/root/data/AlMgCu/data/sys.5964", - "/root/data/AlMgCu/data/sys.5965", - "/root/data/AlMgCu/data/sys.5967", - "/root/data/AlMgCu/data/sys.5968", - "/root/data/AlMgCu/data/sys.5969", - "/root/data/AlMgCu/data/sys.597", - "/root/data/AlMgCu/data/sys.5970", - "/root/data/AlMgCu/data/sys.5971", - "/root/data/AlMgCu/data/sys.5972", - "/root/data/AlMgCu/data/sys.5973", - "/root/data/AlMgCu/data/sys.5975", - "/root/data/AlMgCu/data/sys.5976", - "/root/data/AlMgCu/data/sys.5977", - "/root/data/AlMgCu/data/sys.5979", - "/root/data/AlMgCu/data/sys.598", - "/root/data/AlMgCu/data/sys.5980", - "/root/data/AlMgCu/data/sys.5981", - "/root/data/AlMgCu/data/sys.5983", - "/root/data/AlMgCu/data/sys.5984", - "/root/data/AlMgCu/data/sys.5985", - "/root/data/AlMgCu/data/sys.5987", - "/root/data/AlMgCu/data/sys.5988", - "/root/data/AlMgCu/data/sys.5989", - "/root/data/AlMgCu/data/sys.599", - "/root/data/AlMgCu/data/sys.5990", - "/root/data/AlMgCu/data/sys.5991", - "/root/data/AlMgCu/data/sys.5992", - "/root/data/AlMgCu/data/sys.5993", - "/root/data/AlMgCu/data/sys.5994", - "/root/data/AlMgCu/data/sys.5995", - "/root/data/AlMgCu/data/sys.5997", - "/root/data/AlMgCu/data/sys.5998", - "/root/data/AlMgCu/data/sys.5999", - "/root/data/AlMgCu/data/sys.600", - "/root/data/AlMgCu/data/sys.6000", - "/root/data/AlMgCu/data/sys.6001", - "/root/data/AlMgCu/data/sys.6004", - "/root/data/AlMgCu/data/sys.6005", - "/root/data/AlMgCu/data/sys.6006", - "/root/data/AlMgCu/data/sys.6007", - "/root/data/AlMgCu/data/sys.6008", - "/root/data/AlMgCu/data/sys.6009", - "/root/data/AlMgCu/data/sys.6010", - "/root/data/AlMgCu/data/sys.6011", - "/root/data/AlMgCu/data/sys.6012", - "/root/data/AlMgCu/data/sys.6013", - "/root/data/AlMgCu/data/sys.6014", - "/root/data/AlMgCu/data/sys.6015", - "/root/data/AlMgCu/data/sys.6016", - "/root/data/AlMgCu/data/sys.6017", - "/root/data/AlMgCu/data/sys.6018", - "/root/data/AlMgCu/data/sys.6019", - "/root/data/AlMgCu/data/sys.602", - "/root/data/AlMgCu/data/sys.6021", - "/root/data/AlMgCu/data/sys.6022", - "/root/data/AlMgCu/data/sys.6023", - "/root/data/AlMgCu/data/sys.6024", - "/root/data/AlMgCu/data/sys.6025", - "/root/data/AlMgCu/data/sys.6026", - "/root/data/AlMgCu/data/sys.6027", - "/root/data/AlMgCu/data/sys.6029", - "/root/data/AlMgCu/data/sys.603", - "/root/data/AlMgCu/data/sys.6030", - "/root/data/AlMgCu/data/sys.6031", - "/root/data/AlMgCu/data/sys.6032", - "/root/data/AlMgCu/data/sys.6033", - "/root/data/AlMgCu/data/sys.6034", - "/root/data/AlMgCu/data/sys.6035", - "/root/data/AlMgCu/data/sys.6036", - "/root/data/AlMgCu/data/sys.6037", - "/root/data/AlMgCu/data/sys.6038", - "/root/data/AlMgCu/data/sys.604", - "/root/data/AlMgCu/data/sys.6040", - "/root/data/AlMgCu/data/sys.6042", - "/root/data/AlMgCu/data/sys.6043", - "/root/data/AlMgCu/data/sys.6044", - "/root/data/AlMgCu/data/sys.6046", - "/root/data/AlMgCu/data/sys.6047", - "/root/data/AlMgCu/data/sys.6049", - "/root/data/AlMgCu/data/sys.605", - "/root/data/AlMgCu/data/sys.6050", - "/root/data/AlMgCu/data/sys.6051", - "/root/data/AlMgCu/data/sys.6052", - "/root/data/AlMgCu/data/sys.6053", - "/root/data/AlMgCu/data/sys.6054", - "/root/data/AlMgCu/data/sys.6055", - "/root/data/AlMgCu/data/sys.6056", - "/root/data/AlMgCu/data/sys.6057", - "/root/data/AlMgCu/data/sys.6058", - "/root/data/AlMgCu/data/sys.6059", - "/root/data/AlMgCu/data/sys.606", - "/root/data/AlMgCu/data/sys.6060", - "/root/data/AlMgCu/data/sys.6061", - "/root/data/AlMgCu/data/sys.6062", - "/root/data/AlMgCu/data/sys.6063", - "/root/data/AlMgCu/data/sys.6064", - "/root/data/AlMgCu/data/sys.6067", - "/root/data/AlMgCu/data/sys.6068", - "/root/data/AlMgCu/data/sys.6069", - "/root/data/AlMgCu/data/sys.607", - "/root/data/AlMgCu/data/sys.6070", - "/root/data/AlMgCu/data/sys.6071", - "/root/data/AlMgCu/data/sys.6072", - "/root/data/AlMgCu/data/sys.6073", - "/root/data/AlMgCu/data/sys.6074", - "/root/data/AlMgCu/data/sys.6075", - "/root/data/AlMgCu/data/sys.6076", - "/root/data/AlMgCu/data/sys.6077", - "/root/data/AlMgCu/data/sys.6078", - "/root/data/AlMgCu/data/sys.6079", - "/root/data/AlMgCu/data/sys.608", - "/root/data/AlMgCu/data/sys.6081", - "/root/data/AlMgCu/data/sys.6082", - "/root/data/AlMgCu/data/sys.6083", - "/root/data/AlMgCu/data/sys.6085", - "/root/data/AlMgCu/data/sys.6087", - "/root/data/AlMgCu/data/sys.6088", - "/root/data/AlMgCu/data/sys.6089", - "/root/data/AlMgCu/data/sys.609", - "/root/data/AlMgCu/data/sys.6090", - "/root/data/AlMgCu/data/sys.6091", - "/root/data/AlMgCu/data/sys.6092", - "/root/data/AlMgCu/data/sys.6093", - "/root/data/AlMgCu/data/sys.6094", - "/root/data/AlMgCu/data/sys.6095", - "/root/data/AlMgCu/data/sys.6096", - "/root/data/AlMgCu/data/sys.6097", - "/root/data/AlMgCu/data/sys.6098", - "/root/data/AlMgCu/data/sys.610", - "/root/data/AlMgCu/data/sys.6100", - "/root/data/AlMgCu/data/sys.6101", - "/root/data/AlMgCu/data/sys.6103", - "/root/data/AlMgCu/data/sys.6104", - "/root/data/AlMgCu/data/sys.6106", - "/root/data/AlMgCu/data/sys.6107", - "/root/data/AlMgCu/data/sys.6108", - "/root/data/AlMgCu/data/sys.6109", - "/root/data/AlMgCu/data/sys.611", - "/root/data/AlMgCu/data/sys.6110", - "/root/data/AlMgCu/data/sys.6111", - "/root/data/AlMgCu/data/sys.6112", - "/root/data/AlMgCu/data/sys.6113", - "/root/data/AlMgCu/data/sys.6114", - "/root/data/AlMgCu/data/sys.6115", - "/root/data/AlMgCu/data/sys.6116", - "/root/data/AlMgCu/data/sys.6117", - "/root/data/AlMgCu/data/sys.6118", - "/root/data/AlMgCu/data/sys.6119", - "/root/data/AlMgCu/data/sys.612", - "/root/data/AlMgCu/data/sys.6120", - "/root/data/AlMgCu/data/sys.6121", - "/root/data/AlMgCu/data/sys.6123", - "/root/data/AlMgCu/data/sys.6124", - "/root/data/AlMgCu/data/sys.6125", - "/root/data/AlMgCu/data/sys.6126", - "/root/data/AlMgCu/data/sys.6127", - "/root/data/AlMgCu/data/sys.6128", - "/root/data/AlMgCu/data/sys.6129", - "/root/data/AlMgCu/data/sys.613", - "/root/data/AlMgCu/data/sys.6130", - "/root/data/AlMgCu/data/sys.6131", - "/root/data/AlMgCu/data/sys.6132", - "/root/data/AlMgCu/data/sys.6133", - "/root/data/AlMgCu/data/sys.6134", - "/root/data/AlMgCu/data/sys.6135", - "/root/data/AlMgCu/data/sys.6136", - "/root/data/AlMgCu/data/sys.6137", - "/root/data/AlMgCu/data/sys.6138", - "/root/data/AlMgCu/data/sys.6139", - "/root/data/AlMgCu/data/sys.614", - "/root/data/AlMgCu/data/sys.6140", - "/root/data/AlMgCu/data/sys.6141", - "/root/data/AlMgCu/data/sys.6142", - "/root/data/AlMgCu/data/sys.6143", - "/root/data/AlMgCu/data/sys.6144", - "/root/data/AlMgCu/data/sys.6145", - "/root/data/AlMgCu/data/sys.6146", - "/root/data/AlMgCu/data/sys.6147", - "/root/data/AlMgCu/data/sys.6148", - "/root/data/AlMgCu/data/sys.6149", - "/root/data/AlMgCu/data/sys.615", - "/root/data/AlMgCu/data/sys.6151", - "/root/data/AlMgCu/data/sys.6154", - "/root/data/AlMgCu/data/sys.6155", - "/root/data/AlMgCu/data/sys.6156", - "/root/data/AlMgCu/data/sys.6157", - "/root/data/AlMgCu/data/sys.6158", - "/root/data/AlMgCu/data/sys.6159", - "/root/data/AlMgCu/data/sys.616", - "/root/data/AlMgCu/data/sys.6160", - "/root/data/AlMgCu/data/sys.6161", - "/root/data/AlMgCu/data/sys.6162", - "/root/data/AlMgCu/data/sys.6163", - "/root/data/AlMgCu/data/sys.6164", - "/root/data/AlMgCu/data/sys.6165", - "/root/data/AlMgCu/data/sys.6166", - "/root/data/AlMgCu/data/sys.6167", - "/root/data/AlMgCu/data/sys.6168", - "/root/data/AlMgCu/data/sys.6169", - "/root/data/AlMgCu/data/sys.617", - "/root/data/AlMgCu/data/sys.6170", - "/root/data/AlMgCu/data/sys.6171", - "/root/data/AlMgCu/data/sys.6172", - "/root/data/AlMgCu/data/sys.6173", - "/root/data/AlMgCu/data/sys.6174", - "/root/data/AlMgCu/data/sys.6175", - "/root/data/AlMgCu/data/sys.6176", - "/root/data/AlMgCu/data/sys.6177", - "/root/data/AlMgCu/data/sys.6178", - "/root/data/AlMgCu/data/sys.6179", - "/root/data/AlMgCu/data/sys.618", - "/root/data/AlMgCu/data/sys.6180", - "/root/data/AlMgCu/data/sys.6181", - "/root/data/AlMgCu/data/sys.6182", - "/root/data/AlMgCu/data/sys.6183", - "/root/data/AlMgCu/data/sys.6185", - "/root/data/AlMgCu/data/sys.6186", - "/root/data/AlMgCu/data/sys.6187", - "/root/data/AlMgCu/data/sys.6188", - "/root/data/AlMgCu/data/sys.6189", - "/root/data/AlMgCu/data/sys.619", - "/root/data/AlMgCu/data/sys.6190", - "/root/data/AlMgCu/data/sys.6191", - "/root/data/AlMgCu/data/sys.6193", - "/root/data/AlMgCu/data/sys.6194", - "/root/data/AlMgCu/data/sys.6195", - "/root/data/AlMgCu/data/sys.6196", - "/root/data/AlMgCu/data/sys.6197", - "/root/data/AlMgCu/data/sys.6198", - "/root/data/AlMgCu/data/sys.6199", - "/root/data/AlMgCu/data/sys.620", - "/root/data/AlMgCu/data/sys.6200", - "/root/data/AlMgCu/data/sys.6201", - "/root/data/AlMgCu/data/sys.6202", - "/root/data/AlMgCu/data/sys.6203", - "/root/data/AlMgCu/data/sys.6204", - "/root/data/AlMgCu/data/sys.6206", - "/root/data/AlMgCu/data/sys.6207", - "/root/data/AlMgCu/data/sys.6208", - "/root/data/AlMgCu/data/sys.621", - "/root/data/AlMgCu/data/sys.6210", - "/root/data/AlMgCu/data/sys.6211", - "/root/data/AlMgCu/data/sys.6212", - "/root/data/AlMgCu/data/sys.6213", - "/root/data/AlMgCu/data/sys.6215", - "/root/data/AlMgCu/data/sys.6216", - "/root/data/AlMgCu/data/sys.6217", - "/root/data/AlMgCu/data/sys.6218", - "/root/data/AlMgCu/data/sys.6219", - "/root/data/AlMgCu/data/sys.622", - "/root/data/AlMgCu/data/sys.6220", - "/root/data/AlMgCu/data/sys.6221", - "/root/data/AlMgCu/data/sys.6222", - "/root/data/AlMgCu/data/sys.6223", - "/root/data/AlMgCu/data/sys.6224", - "/root/data/AlMgCu/data/sys.6225", - "/root/data/AlMgCu/data/sys.6226", - "/root/data/AlMgCu/data/sys.6227", - "/root/data/AlMgCu/data/sys.6229", - "/root/data/AlMgCu/data/sys.623", - "/root/data/AlMgCu/data/sys.6230", - "/root/data/AlMgCu/data/sys.6231", - "/root/data/AlMgCu/data/sys.6232", - "/root/data/AlMgCu/data/sys.6233", - "/root/data/AlMgCu/data/sys.6235", - "/root/data/AlMgCu/data/sys.6236", - "/root/data/AlMgCu/data/sys.6237", - "/root/data/AlMgCu/data/sys.6238", - "/root/data/AlMgCu/data/sys.6239", - "/root/data/AlMgCu/data/sys.624", - "/root/data/AlMgCu/data/sys.6240", - "/root/data/AlMgCu/data/sys.6241", - "/root/data/AlMgCu/data/sys.6242", - "/root/data/AlMgCu/data/sys.6243", - "/root/data/AlMgCu/data/sys.6244", - "/root/data/AlMgCu/data/sys.6245", - "/root/data/AlMgCu/data/sys.6246", - "/root/data/AlMgCu/data/sys.6247", - "/root/data/AlMgCu/data/sys.6249", - "/root/data/AlMgCu/data/sys.6250", - "/root/data/AlMgCu/data/sys.6251", - "/root/data/AlMgCu/data/sys.6252", - "/root/data/AlMgCu/data/sys.6253", - "/root/data/AlMgCu/data/sys.6254", - "/root/data/AlMgCu/data/sys.6256", - "/root/data/AlMgCu/data/sys.6257", - "/root/data/AlMgCu/data/sys.6258", - "/root/data/AlMgCu/data/sys.626", - "/root/data/AlMgCu/data/sys.6260", - "/root/data/AlMgCu/data/sys.6261", - "/root/data/AlMgCu/data/sys.6262", - "/root/data/AlMgCu/data/sys.6263", - "/root/data/AlMgCu/data/sys.6264", - "/root/data/AlMgCu/data/sys.6265", - "/root/data/AlMgCu/data/sys.6266", - "/root/data/AlMgCu/data/sys.6267", - "/root/data/AlMgCu/data/sys.6268", - "/root/data/AlMgCu/data/sys.6269", - "/root/data/AlMgCu/data/sys.627", - "/root/data/AlMgCu/data/sys.6271", - "/root/data/AlMgCu/data/sys.6272", - "/root/data/AlMgCu/data/sys.6273", - "/root/data/AlMgCu/data/sys.6274", - "/root/data/AlMgCu/data/sys.6275", - "/root/data/AlMgCu/data/sys.6276", - "/root/data/AlMgCu/data/sys.6277", - "/root/data/AlMgCu/data/sys.6278", - "/root/data/AlMgCu/data/sys.6279", - "/root/data/AlMgCu/data/sys.628", - "/root/data/AlMgCu/data/sys.6280", - "/root/data/AlMgCu/data/sys.6282", - "/root/data/AlMgCu/data/sys.6283", - "/root/data/AlMgCu/data/sys.6284", - "/root/data/AlMgCu/data/sys.6285", - "/root/data/AlMgCu/data/sys.6286", - "/root/data/AlMgCu/data/sys.6287", - "/root/data/AlMgCu/data/sys.6288", - "/root/data/AlMgCu/data/sys.6289", - "/root/data/AlMgCu/data/sys.629", - "/root/data/AlMgCu/data/sys.6290", - "/root/data/AlMgCu/data/sys.6291", - "/root/data/AlMgCu/data/sys.6292", - "/root/data/AlMgCu/data/sys.6293", - "/root/data/AlMgCu/data/sys.6295", - "/root/data/AlMgCu/data/sys.6296", - "/root/data/AlMgCu/data/sys.6298", - "/root/data/AlMgCu/data/sys.630", - "/root/data/AlMgCu/data/sys.6300", - "/root/data/AlMgCu/data/sys.6301", - "/root/data/AlMgCu/data/sys.6302", - "/root/data/AlMgCu/data/sys.6303", - "/root/data/AlMgCu/data/sys.6304", - "/root/data/AlMgCu/data/sys.6305", - "/root/data/AlMgCu/data/sys.6306", - "/root/data/AlMgCu/data/sys.6308", - "/root/data/AlMgCu/data/sys.6309", - "/root/data/AlMgCu/data/sys.631", - "/root/data/AlMgCu/data/sys.6310", - "/root/data/AlMgCu/data/sys.6311", - "/root/data/AlMgCu/data/sys.6312", - "/root/data/AlMgCu/data/sys.6313", - "/root/data/AlMgCu/data/sys.6314", - "/root/data/AlMgCu/data/sys.6315", - "/root/data/AlMgCu/data/sys.6316", - "/root/data/AlMgCu/data/sys.6317", - "/root/data/AlMgCu/data/sys.6318", - "/root/data/AlMgCu/data/sys.6319", - "/root/data/AlMgCu/data/sys.632", - "/root/data/AlMgCu/data/sys.6320", - "/root/data/AlMgCu/data/sys.6321", - "/root/data/AlMgCu/data/sys.6322", - "/root/data/AlMgCu/data/sys.6323", - "/root/data/AlMgCu/data/sys.6324", - "/root/data/AlMgCu/data/sys.6325", - "/root/data/AlMgCu/data/sys.6326", - "/root/data/AlMgCu/data/sys.6327", - "/root/data/AlMgCu/data/sys.6328", - "/root/data/AlMgCu/data/sys.6329", - "/root/data/AlMgCu/data/sys.6331", - "/root/data/AlMgCu/data/sys.6332", - "/root/data/AlMgCu/data/sys.6333", - "/root/data/AlMgCu/data/sys.6334", - "/root/data/AlMgCu/data/sys.6335", - "/root/data/AlMgCu/data/sys.6336", - "/root/data/AlMgCu/data/sys.6337", - "/root/data/AlMgCu/data/sys.6338", - "/root/data/AlMgCu/data/sys.6339", - "/root/data/AlMgCu/data/sys.634", - "/root/data/AlMgCu/data/sys.6341", - "/root/data/AlMgCu/data/sys.6342", - "/root/data/AlMgCu/data/sys.6344", - "/root/data/AlMgCu/data/sys.6345", - "/root/data/AlMgCu/data/sys.6346", - "/root/data/AlMgCu/data/sys.6347", - "/root/data/AlMgCu/data/sys.6349", - "/root/data/AlMgCu/data/sys.635", - "/root/data/AlMgCu/data/sys.6350", - "/root/data/AlMgCu/data/sys.6351", - "/root/data/AlMgCu/data/sys.6354", - "/root/data/AlMgCu/data/sys.6355", - "/root/data/AlMgCu/data/sys.6356", - "/root/data/AlMgCu/data/sys.6357", - "/root/data/AlMgCu/data/sys.6358", - "/root/data/AlMgCu/data/sys.6359", - "/root/data/AlMgCu/data/sys.636", - "/root/data/AlMgCu/data/sys.6360", - "/root/data/AlMgCu/data/sys.6361", - "/root/data/AlMgCu/data/sys.6362", - "/root/data/AlMgCu/data/sys.6363", - "/root/data/AlMgCu/data/sys.6364", - "/root/data/AlMgCu/data/sys.6366", - "/root/data/AlMgCu/data/sys.6367", - "/root/data/AlMgCu/data/sys.6368", - "/root/data/AlMgCu/data/sys.6369", - "/root/data/AlMgCu/data/sys.637", - "/root/data/AlMgCu/data/sys.6370", - "/root/data/AlMgCu/data/sys.6371", - "/root/data/AlMgCu/data/sys.6372", - "/root/data/AlMgCu/data/sys.6373", - "/root/data/AlMgCu/data/sys.6374", - "/root/data/AlMgCu/data/sys.6375", - "/root/data/AlMgCu/data/sys.6376", - "/root/data/AlMgCu/data/sys.6377", - "/root/data/AlMgCu/data/sys.6378", - "/root/data/AlMgCu/data/sys.6379", - "/root/data/AlMgCu/data/sys.638", - "/root/data/AlMgCu/data/sys.6381", - "/root/data/AlMgCu/data/sys.6382", - "/root/data/AlMgCu/data/sys.6383", - "/root/data/AlMgCu/data/sys.6384", - "/root/data/AlMgCu/data/sys.6385", - "/root/data/AlMgCu/data/sys.6386", - "/root/data/AlMgCu/data/sys.6387", - "/root/data/AlMgCu/data/sys.6388", - "/root/data/AlMgCu/data/sys.6389", - "/root/data/AlMgCu/data/sys.639", - "/root/data/AlMgCu/data/sys.6390", - "/root/data/AlMgCu/data/sys.6391", - "/root/data/AlMgCu/data/sys.6392", - "/root/data/AlMgCu/data/sys.6393", - "/root/data/AlMgCu/data/sys.6394", - "/root/data/AlMgCu/data/sys.6396", - "/root/data/AlMgCu/data/sys.6397", - "/root/data/AlMgCu/data/sys.6398", - "/root/data/AlMgCu/data/sys.6399", - "/root/data/AlMgCu/data/sys.640", - "/root/data/AlMgCu/data/sys.6400", - "/root/data/AlMgCu/data/sys.6401", - "/root/data/AlMgCu/data/sys.6402", - "/root/data/AlMgCu/data/sys.6403", - "/root/data/AlMgCu/data/sys.6404", - "/root/data/AlMgCu/data/sys.6405", - "/root/data/AlMgCu/data/sys.6406", - "/root/data/AlMgCu/data/sys.6408", - "/root/data/AlMgCu/data/sys.6409", - "/root/data/AlMgCu/data/sys.641", - "/root/data/AlMgCu/data/sys.6410", - "/root/data/AlMgCu/data/sys.6411", - "/root/data/AlMgCu/data/sys.6413", - "/root/data/AlMgCu/data/sys.6414", - "/root/data/AlMgCu/data/sys.6416", - "/root/data/AlMgCu/data/sys.6417", - "/root/data/AlMgCu/data/sys.6418", - "/root/data/AlMgCu/data/sys.6419", - "/root/data/AlMgCu/data/sys.642", - "/root/data/AlMgCu/data/sys.6421", - "/root/data/AlMgCu/data/sys.6422", - "/root/data/AlMgCu/data/sys.6423", - "/root/data/AlMgCu/data/sys.6424", - "/root/data/AlMgCu/data/sys.6425", - "/root/data/AlMgCu/data/sys.6426", - "/root/data/AlMgCu/data/sys.6428", - "/root/data/AlMgCu/data/sys.6429", - "/root/data/AlMgCu/data/sys.643", - "/root/data/AlMgCu/data/sys.6430", - "/root/data/AlMgCu/data/sys.6431", - "/root/data/AlMgCu/data/sys.6432", - "/root/data/AlMgCu/data/sys.6433", - "/root/data/AlMgCu/data/sys.6434", - "/root/data/AlMgCu/data/sys.6436", - "/root/data/AlMgCu/data/sys.6437", - "/root/data/AlMgCu/data/sys.6438", - "/root/data/AlMgCu/data/sys.6439", - "/root/data/AlMgCu/data/sys.644", - "/root/data/AlMgCu/data/sys.6440", - "/root/data/AlMgCu/data/sys.6441", - "/root/data/AlMgCu/data/sys.6442", - "/root/data/AlMgCu/data/sys.6443", - "/root/data/AlMgCu/data/sys.6444", - "/root/data/AlMgCu/data/sys.6445", - "/root/data/AlMgCu/data/sys.6446", - "/root/data/AlMgCu/data/sys.6447", - "/root/data/AlMgCu/data/sys.6449", - "/root/data/AlMgCu/data/sys.645", - "/root/data/AlMgCu/data/sys.6450", - "/root/data/AlMgCu/data/sys.6451", - "/root/data/AlMgCu/data/sys.6452", - "/root/data/AlMgCu/data/sys.6453", - "/root/data/AlMgCu/data/sys.6454", - "/root/data/AlMgCu/data/sys.6455", - "/root/data/AlMgCu/data/sys.6456", - "/root/data/AlMgCu/data/sys.6457", - "/root/data/AlMgCu/data/sys.6460", - "/root/data/AlMgCu/data/sys.6461", - "/root/data/AlMgCu/data/sys.6462", - "/root/data/AlMgCu/data/sys.6464", - "/root/data/AlMgCu/data/sys.6465", - "/root/data/AlMgCu/data/sys.6467", - "/root/data/AlMgCu/data/sys.6468", - "/root/data/AlMgCu/data/sys.6469", - "/root/data/AlMgCu/data/sys.647", - "/root/data/AlMgCu/data/sys.6471", - "/root/data/AlMgCu/data/sys.6472", - "/root/data/AlMgCu/data/sys.6474", - "/root/data/AlMgCu/data/sys.6475", - "/root/data/AlMgCu/data/sys.6477", - "/root/data/AlMgCu/data/sys.6478", - "/root/data/AlMgCu/data/sys.6479", - "/root/data/AlMgCu/data/sys.648", - "/root/data/AlMgCu/data/sys.6480", - "/root/data/AlMgCu/data/sys.6481", - "/root/data/AlMgCu/data/sys.6482", - "/root/data/AlMgCu/data/sys.6483", - "/root/data/AlMgCu/data/sys.6485", - "/root/data/AlMgCu/data/sys.6486", - "/root/data/AlMgCu/data/sys.6487", - "/root/data/AlMgCu/data/sys.6488", - "/root/data/AlMgCu/data/sys.6489", - "/root/data/AlMgCu/data/sys.649", - "/root/data/AlMgCu/data/sys.6490", - "/root/data/AlMgCu/data/sys.6491", - "/root/data/AlMgCu/data/sys.6492", - "/root/data/AlMgCu/data/sys.6493", - "/root/data/AlMgCu/data/sys.6494", - "/root/data/AlMgCu/data/sys.6495", - "/root/data/AlMgCu/data/sys.6497", - "/root/data/AlMgCu/data/sys.6498", - "/root/data/AlMgCu/data/sys.6499", - "/root/data/AlMgCu/data/sys.650", - "/root/data/AlMgCu/data/sys.6501", - "/root/data/AlMgCu/data/sys.6502", - "/root/data/AlMgCu/data/sys.6503", - "/root/data/AlMgCu/data/sys.6505", - "/root/data/AlMgCu/data/sys.6506", - "/root/data/AlMgCu/data/sys.6507", - "/root/data/AlMgCu/data/sys.6508", - "/root/data/AlMgCu/data/sys.6509", - "/root/data/AlMgCu/data/sys.651", - "/root/data/AlMgCu/data/sys.6510", - "/root/data/AlMgCu/data/sys.6511", - "/root/data/AlMgCu/data/sys.6512", - "/root/data/AlMgCu/data/sys.6513", - "/root/data/AlMgCu/data/sys.6514", - "/root/data/AlMgCu/data/sys.6515", - "/root/data/AlMgCu/data/sys.6516", - "/root/data/AlMgCu/data/sys.6517", - "/root/data/AlMgCu/data/sys.6519", - "/root/data/AlMgCu/data/sys.652", - "/root/data/AlMgCu/data/sys.6520", - "/root/data/AlMgCu/data/sys.6521", - "/root/data/AlMgCu/data/sys.6522", - "/root/data/AlMgCu/data/sys.6523", - "/root/data/AlMgCu/data/sys.6524", - "/root/data/AlMgCu/data/sys.6525", - "/root/data/AlMgCu/data/sys.6526", - "/root/data/AlMgCu/data/sys.6527", - "/root/data/AlMgCu/data/sys.6528", - "/root/data/AlMgCu/data/sys.6529", - "/root/data/AlMgCu/data/sys.653", - "/root/data/AlMgCu/data/sys.6530", - "/root/data/AlMgCu/data/sys.6531", - "/root/data/AlMgCu/data/sys.6533", - "/root/data/AlMgCu/data/sys.6534", - "/root/data/AlMgCu/data/sys.6535", - "/root/data/AlMgCu/data/sys.6537", - "/root/data/AlMgCu/data/sys.6539", - "/root/data/AlMgCu/data/sys.654", - "/root/data/AlMgCu/data/sys.6540", - "/root/data/AlMgCu/data/sys.6541", - "/root/data/AlMgCu/data/sys.6542", - "/root/data/AlMgCu/data/sys.6544", - "/root/data/AlMgCu/data/sys.6545", - "/root/data/AlMgCu/data/sys.6546", - "/root/data/AlMgCu/data/sys.6547", - "/root/data/AlMgCu/data/sys.6548", - "/root/data/AlMgCu/data/sys.6549", - "/root/data/AlMgCu/data/sys.655", - "/root/data/AlMgCu/data/sys.6550", - "/root/data/AlMgCu/data/sys.6551", - "/root/data/AlMgCu/data/sys.6552", - "/root/data/AlMgCu/data/sys.6553", - "/root/data/AlMgCu/data/sys.6554", - "/root/data/AlMgCu/data/sys.6555", - "/root/data/AlMgCu/data/sys.6556", - "/root/data/AlMgCu/data/sys.6557", - "/root/data/AlMgCu/data/sys.6558", - "/root/data/AlMgCu/data/sys.6559", - "/root/data/AlMgCu/data/sys.656", - "/root/data/AlMgCu/data/sys.6561", - "/root/data/AlMgCu/data/sys.6562", - "/root/data/AlMgCu/data/sys.6563", - "/root/data/AlMgCu/data/sys.6564", - "/root/data/AlMgCu/data/sys.6566", - "/root/data/AlMgCu/data/sys.6567", - "/root/data/AlMgCu/data/sys.6568", - "/root/data/AlMgCu/data/sys.657", - "/root/data/AlMgCu/data/sys.6571", - "/root/data/AlMgCu/data/sys.6572", - "/root/data/AlMgCu/data/sys.6573", - "/root/data/AlMgCu/data/sys.6574", - "/root/data/AlMgCu/data/sys.6575", - "/root/data/AlMgCu/data/sys.6576", - "/root/data/AlMgCu/data/sys.6577", - "/root/data/AlMgCu/data/sys.6578", - "/root/data/AlMgCu/data/sys.6579", - "/root/data/AlMgCu/data/sys.658", - "/root/data/AlMgCu/data/sys.6580", - "/root/data/AlMgCu/data/sys.6581", - "/root/data/AlMgCu/data/sys.6582", - "/root/data/AlMgCu/data/sys.6583", - "/root/data/AlMgCu/data/sys.6584", - "/root/data/AlMgCu/data/sys.6585", - "/root/data/AlMgCu/data/sys.6586", - "/root/data/AlMgCu/data/sys.6587", - "/root/data/AlMgCu/data/sys.6588", - "/root/data/AlMgCu/data/sys.6589", - "/root/data/AlMgCu/data/sys.659", - "/root/data/AlMgCu/data/sys.6590", - "/root/data/AlMgCu/data/sys.6591", - "/root/data/AlMgCu/data/sys.6592", - "/root/data/AlMgCu/data/sys.6593", - "/root/data/AlMgCu/data/sys.6596", - "/root/data/AlMgCu/data/sys.6597", - "/root/data/AlMgCu/data/sys.6598", - "/root/data/AlMgCu/data/sys.660", - "/root/data/AlMgCu/data/sys.6600", - "/root/data/AlMgCu/data/sys.6601", - "/root/data/AlMgCu/data/sys.6602", - "/root/data/AlMgCu/data/sys.6603", - "/root/data/AlMgCu/data/sys.6604", - "/root/data/AlMgCu/data/sys.6605", - "/root/data/AlMgCu/data/sys.6606", - "/root/data/AlMgCu/data/sys.6607", - "/root/data/AlMgCu/data/sys.6608", - "/root/data/AlMgCu/data/sys.6609", - "/root/data/AlMgCu/data/sys.661", - "/root/data/AlMgCu/data/sys.6610", - "/root/data/AlMgCu/data/sys.6611", - "/root/data/AlMgCu/data/sys.6612", - "/root/data/AlMgCu/data/sys.6613", - "/root/data/AlMgCu/data/sys.6614", - "/root/data/AlMgCu/data/sys.6615", - "/root/data/AlMgCu/data/sys.6616", - "/root/data/AlMgCu/data/sys.6617", - "/root/data/AlMgCu/data/sys.6618", - "/root/data/AlMgCu/data/sys.6619", - "/root/data/AlMgCu/data/sys.662", - "/root/data/AlMgCu/data/sys.6620", - "/root/data/AlMgCu/data/sys.6621", - "/root/data/AlMgCu/data/sys.6622", - "/root/data/AlMgCu/data/sys.6623", - "/root/data/AlMgCu/data/sys.6624", - "/root/data/AlMgCu/data/sys.6625", - "/root/data/AlMgCu/data/sys.6626", - "/root/data/AlMgCu/data/sys.6627", - "/root/data/AlMgCu/data/sys.6628", - "/root/data/AlMgCu/data/sys.6629", - "/root/data/AlMgCu/data/sys.663", - "/root/data/AlMgCu/data/sys.6630", - "/root/data/AlMgCu/data/sys.6631", - "/root/data/AlMgCu/data/sys.6632", - "/root/data/AlMgCu/data/sys.6633", - "/root/data/AlMgCu/data/sys.6634", - "/root/data/AlMgCu/data/sys.6637", - "/root/data/AlMgCu/data/sys.6638", - "/root/data/AlMgCu/data/sys.6639", - "/root/data/AlMgCu/data/sys.664", - "/root/data/AlMgCu/data/sys.6640", - "/root/data/AlMgCu/data/sys.6641", - "/root/data/AlMgCu/data/sys.6642", - "/root/data/AlMgCu/data/sys.6644", - "/root/data/AlMgCu/data/sys.6645", - "/root/data/AlMgCu/data/sys.6646", - "/root/data/AlMgCu/data/sys.6647", - "/root/data/AlMgCu/data/sys.6648", - "/root/data/AlMgCu/data/sys.665", - "/root/data/AlMgCu/data/sys.6650", - "/root/data/AlMgCu/data/sys.6651", - "/root/data/AlMgCu/data/sys.6652", - "/root/data/AlMgCu/data/sys.6655", - "/root/data/AlMgCu/data/sys.6656", - "/root/data/AlMgCu/data/sys.6657", - "/root/data/AlMgCu/data/sys.6658", - "/root/data/AlMgCu/data/sys.666", - "/root/data/AlMgCu/data/sys.6660", - "/root/data/AlMgCu/data/sys.6661", - "/root/data/AlMgCu/data/sys.6662", - "/root/data/AlMgCu/data/sys.6663", - "/root/data/AlMgCu/data/sys.6664", - "/root/data/AlMgCu/data/sys.6665", - "/root/data/AlMgCu/data/sys.6666", - "/root/data/AlMgCu/data/sys.6667", - "/root/data/AlMgCu/data/sys.6668", - "/root/data/AlMgCu/data/sys.6669", - "/root/data/AlMgCu/data/sys.6670", - "/root/data/AlMgCu/data/sys.6671", - "/root/data/AlMgCu/data/sys.6673", - "/root/data/AlMgCu/data/sys.6674", - "/root/data/AlMgCu/data/sys.6676", - "/root/data/AlMgCu/data/sys.6677", - "/root/data/AlMgCu/data/sys.6678", - "/root/data/AlMgCu/data/sys.6679", - "/root/data/AlMgCu/data/sys.668", - "/root/data/AlMgCu/data/sys.6680", - "/root/data/AlMgCu/data/sys.6681", - "/root/data/AlMgCu/data/sys.6682", - "/root/data/AlMgCu/data/sys.6683", - "/root/data/AlMgCu/data/sys.6684", - "/root/data/AlMgCu/data/sys.6685", - "/root/data/AlMgCu/data/sys.6686", - "/root/data/AlMgCu/data/sys.6687", - "/root/data/AlMgCu/data/sys.6688", - "/root/data/AlMgCu/data/sys.6689", - "/root/data/AlMgCu/data/sys.6690", - "/root/data/AlMgCu/data/sys.6691", - "/root/data/AlMgCu/data/sys.6692", - "/root/data/AlMgCu/data/sys.6693", - "/root/data/AlMgCu/data/sys.6694", - "/root/data/AlMgCu/data/sys.6695", - "/root/data/AlMgCu/data/sys.6696", - "/root/data/AlMgCu/data/sys.6697", - "/root/data/AlMgCu/data/sys.6698", - "/root/data/AlMgCu/data/sys.6699", - "/root/data/AlMgCu/data/sys.670", - "/root/data/AlMgCu/data/sys.6700", - "/root/data/AlMgCu/data/sys.6701", - "/root/data/AlMgCu/data/sys.6703", - "/root/data/AlMgCu/data/sys.6704", - "/root/data/AlMgCu/data/sys.6705", - "/root/data/AlMgCu/data/sys.6706", - "/root/data/AlMgCu/data/sys.6707", - "/root/data/AlMgCu/data/sys.6708", - "/root/data/AlMgCu/data/sys.6709", - "/root/data/AlMgCu/data/sys.671", - "/root/data/AlMgCu/data/sys.6710", - "/root/data/AlMgCu/data/sys.6711", - "/root/data/AlMgCu/data/sys.6712", - "/root/data/AlMgCu/data/sys.6714", - "/root/data/AlMgCu/data/sys.6715", - "/root/data/AlMgCu/data/sys.6716", - "/root/data/AlMgCu/data/sys.6717", - "/root/data/AlMgCu/data/sys.6718", - "/root/data/AlMgCu/data/sys.6719", - "/root/data/AlMgCu/data/sys.672", - "/root/data/AlMgCu/data/sys.6720", - "/root/data/AlMgCu/data/sys.6721", - "/root/data/AlMgCu/data/sys.6722", - "/root/data/AlMgCu/data/sys.6723", - "/root/data/AlMgCu/data/sys.6724", - "/root/data/AlMgCu/data/sys.6725", - "/root/data/AlMgCu/data/sys.6726", - "/root/data/AlMgCu/data/sys.6727", - "/root/data/AlMgCu/data/sys.6728", - "/root/data/AlMgCu/data/sys.6729", - "/root/data/AlMgCu/data/sys.673", - "/root/data/AlMgCu/data/sys.6730", - "/root/data/AlMgCu/data/sys.6731", - "/root/data/AlMgCu/data/sys.6732", - "/root/data/AlMgCu/data/sys.6733", - "/root/data/AlMgCu/data/sys.6734", - "/root/data/AlMgCu/data/sys.6735", - "/root/data/AlMgCu/data/sys.6736", - "/root/data/AlMgCu/data/sys.6737", - "/root/data/AlMgCu/data/sys.6738", - "/root/data/AlMgCu/data/sys.6739", - "/root/data/AlMgCu/data/sys.674", - "/root/data/AlMgCu/data/sys.6740", - "/root/data/AlMgCu/data/sys.6741", - "/root/data/AlMgCu/data/sys.6742", - "/root/data/AlMgCu/data/sys.6743", - "/root/data/AlMgCu/data/sys.6745", - "/root/data/AlMgCu/data/sys.6746", - "/root/data/AlMgCu/data/sys.675", - "/root/data/AlMgCu/data/sys.6750", - "/root/data/AlMgCu/data/sys.6751", - "/root/data/AlMgCu/data/sys.6752", - "/root/data/AlMgCu/data/sys.6753", - "/root/data/AlMgCu/data/sys.6754", - "/root/data/AlMgCu/data/sys.6755", - "/root/data/AlMgCu/data/sys.6756", - "/root/data/AlMgCu/data/sys.6758", - "/root/data/AlMgCu/data/sys.676", - "/root/data/AlMgCu/data/sys.6760", - "/root/data/AlMgCu/data/sys.6762", - "/root/data/AlMgCu/data/sys.6763", - "/root/data/AlMgCu/data/sys.6764", - "/root/data/AlMgCu/data/sys.6765", - "/root/data/AlMgCu/data/sys.6766", - "/root/data/AlMgCu/data/sys.6767", - "/root/data/AlMgCu/data/sys.6768", - "/root/data/AlMgCu/data/sys.677", - "/root/data/AlMgCu/data/sys.6770", - "/root/data/AlMgCu/data/sys.6771", - "/root/data/AlMgCu/data/sys.6772", - "/root/data/AlMgCu/data/sys.6773", - "/root/data/AlMgCu/data/sys.6774", - "/root/data/AlMgCu/data/sys.6775", - "/root/data/AlMgCu/data/sys.6778", - "/root/data/AlMgCu/data/sys.6779", - "/root/data/AlMgCu/data/sys.678", - "/root/data/AlMgCu/data/sys.6780", - "/root/data/AlMgCu/data/sys.6781", - "/root/data/AlMgCu/data/sys.6782", - "/root/data/AlMgCu/data/sys.6783", - "/root/data/AlMgCu/data/sys.6784", - "/root/data/AlMgCu/data/sys.6785", - "/root/data/AlMgCu/data/sys.6786", - "/root/data/AlMgCu/data/sys.6787", - "/root/data/AlMgCu/data/sys.6788", - "/root/data/AlMgCu/data/sys.6789", - "/root/data/AlMgCu/data/sys.679", - "/root/data/AlMgCu/data/sys.6790", - "/root/data/AlMgCu/data/sys.6791", - "/root/data/AlMgCu/data/sys.6792", - "/root/data/AlMgCu/data/sys.6794", - "/root/data/AlMgCu/data/sys.6795", - "/root/data/AlMgCu/data/sys.6796", - "/root/data/AlMgCu/data/sys.6797", - "/root/data/AlMgCu/data/sys.6798", - "/root/data/AlMgCu/data/sys.6799", - "/root/data/AlMgCu/data/sys.680", - "/root/data/AlMgCu/data/sys.6800", - "/root/data/AlMgCu/data/sys.6801", - "/root/data/AlMgCu/data/sys.6802", - "/root/data/AlMgCu/data/sys.6804", - "/root/data/AlMgCu/data/sys.6805", - "/root/data/AlMgCu/data/sys.6806", - "/root/data/AlMgCu/data/sys.6807", - "/root/data/AlMgCu/data/sys.6808", - "/root/data/AlMgCu/data/sys.6809", - "/root/data/AlMgCu/data/sys.681", - "/root/data/AlMgCu/data/sys.6810", - "/root/data/AlMgCu/data/sys.6811", - "/root/data/AlMgCu/data/sys.6812", - "/root/data/AlMgCu/data/sys.6813", - "/root/data/AlMgCu/data/sys.6814", - "/root/data/AlMgCu/data/sys.6815", - "/root/data/AlMgCu/data/sys.6816", - "/root/data/AlMgCu/data/sys.6817", - "/root/data/AlMgCu/data/sys.6818", - "/root/data/AlMgCu/data/sys.6819", - "/root/data/AlMgCu/data/sys.682", - "/root/data/AlMgCu/data/sys.6820", - "/root/data/AlMgCu/data/sys.6821", - "/root/data/AlMgCu/data/sys.6822", - "/root/data/AlMgCu/data/sys.6823", - "/root/data/AlMgCu/data/sys.6825", - "/root/data/AlMgCu/data/sys.6826", - "/root/data/AlMgCu/data/sys.6827", - "/root/data/AlMgCu/data/sys.6828", - "/root/data/AlMgCu/data/sys.6829", - "/root/data/AlMgCu/data/sys.683", - "/root/data/AlMgCu/data/sys.6830", - "/root/data/AlMgCu/data/sys.6831", - "/root/data/AlMgCu/data/sys.6832", - "/root/data/AlMgCu/data/sys.6833", - "/root/data/AlMgCu/data/sys.6834", - "/root/data/AlMgCu/data/sys.6835", - "/root/data/AlMgCu/data/sys.6836", - "/root/data/AlMgCu/data/sys.6837", - "/root/data/AlMgCu/data/sys.6838", - "/root/data/AlMgCu/data/sys.6839", - "/root/data/AlMgCu/data/sys.684", - "/root/data/AlMgCu/data/sys.6840", - "/root/data/AlMgCu/data/sys.6842", - "/root/data/AlMgCu/data/sys.6843", - "/root/data/AlMgCu/data/sys.6844", - "/root/data/AlMgCu/data/sys.6845", - "/root/data/AlMgCu/data/sys.6847", - "/root/data/AlMgCu/data/sys.6849", - "/root/data/AlMgCu/data/sys.685", - "/root/data/AlMgCu/data/sys.6850", - "/root/data/AlMgCu/data/sys.6851", - "/root/data/AlMgCu/data/sys.6852", - "/root/data/AlMgCu/data/sys.6853", - "/root/data/AlMgCu/data/sys.6854", - "/root/data/AlMgCu/data/sys.6855", - "/root/data/AlMgCu/data/sys.6856", - "/root/data/AlMgCu/data/sys.6858", - "/root/data/AlMgCu/data/sys.6859", - "/root/data/AlMgCu/data/sys.686", - "/root/data/AlMgCu/data/sys.6860", - "/root/data/AlMgCu/data/sys.6861", - "/root/data/AlMgCu/data/sys.6862", - "/root/data/AlMgCu/data/sys.6863", - "/root/data/AlMgCu/data/sys.6864", - "/root/data/AlMgCu/data/sys.6865", - "/root/data/AlMgCu/data/sys.6866", - "/root/data/AlMgCu/data/sys.6867", - "/root/data/AlMgCu/data/sys.6868", - "/root/data/AlMgCu/data/sys.6869", - "/root/data/AlMgCu/data/sys.6870", - "/root/data/AlMgCu/data/sys.6871", - "/root/data/AlMgCu/data/sys.6874", - "/root/data/AlMgCu/data/sys.688", - "/root/data/AlMgCu/data/sys.6880", - "/root/data/AlMgCu/data/sys.6881", - "/root/data/AlMgCu/data/sys.6882", - "/root/data/AlMgCu/data/sys.6883", - "/root/data/AlMgCu/data/sys.6884", - "/root/data/AlMgCu/data/sys.6889", - "/root/data/AlMgCu/data/sys.689", - "/root/data/AlMgCu/data/sys.6890", - "/root/data/AlMgCu/data/sys.6891", - "/root/data/AlMgCu/data/sys.6897", - "/root/data/AlMgCu/data/sys.6898", - "/root/data/AlMgCu/data/sys.6899", - "/root/data/AlMgCu/data/sys.690", - "/root/data/AlMgCu/data/sys.6900", - "/root/data/AlMgCu/data/sys.6904", - "/root/data/AlMgCu/data/sys.6912", - "/root/data/AlMgCu/data/sys.6922", - "/root/data/AlMgCu/data/sys.693", - "/root/data/AlMgCu/data/sys.6930", - "/root/data/AlMgCu/data/sys.6938", - "/root/data/AlMgCu/data/sys.6944", - "/root/data/AlMgCu/data/sys.6946", - "/root/data/AlMgCu/data/sys.695", - "/root/data/AlMgCu/data/sys.6952", - "/root/data/AlMgCu/data/sys.6954", - "/root/data/AlMgCu/data/sys.696", - "/root/data/AlMgCu/data/sys.6962", - "/root/data/AlMgCu/data/sys.697", - "/root/data/AlMgCu/data/sys.6970", - "/root/data/AlMgCu/data/sys.6972", - "/root/data/AlMgCu/data/sys.6978", - "/root/data/AlMgCu/data/sys.6979", - "/root/data/AlMgCu/data/sys.698", - "/root/data/AlMgCu/data/sys.6985", - "/root/data/AlMgCu/data/sys.699", - "/root/data/AlMgCu/data/sys.6992", - "/root/data/AlMgCu/data/sys.6993", - "/root/data/AlMgCu/data/sys.6994", - "/root/data/AlMgCu/data/sys.6996", - "/root/data/AlMgCu/data/sys.6998", - "/root/data/AlMgCu/data/sys.7000", - "/root/data/AlMgCu/data/sys.7002", - "/root/data/AlMgCu/data/sys.7008", - "/root/data/AlMgCu/data/sys.701", - "/root/data/AlMgCu/data/sys.7010", - "/root/data/AlMgCu/data/sys.7012", - "/root/data/AlMgCu/data/sys.7018", - "/root/data/AlMgCu/data/sys.702", - "/root/data/AlMgCu/data/sys.7025", - "/root/data/AlMgCu/data/sys.7026", - "/root/data/AlMgCu/data/sys.7028", - "/root/data/AlMgCu/data/sys.703", - "/root/data/AlMgCu/data/sys.7034", - "/root/data/AlMgCu/data/sys.7036", - "/root/data/AlMgCu/data/sys.704", - "/root/data/AlMgCu/data/sys.7040", - "/root/data/AlMgCu/data/sys.7041", - "/root/data/AlMgCu/data/sys.7042", - "/root/data/AlMgCu/data/sys.705", - "/root/data/AlMgCu/data/sys.7058", - "/root/data/AlMgCu/data/sys.7059", - "/root/data/AlMgCu/data/sys.706", - "/root/data/AlMgCu/data/sys.7060", - "/root/data/AlMgCu/data/sys.7061", - "/root/data/AlMgCu/data/sys.7065", - "/root/data/AlMgCu/data/sys.7066", - "/root/data/AlMgCu/data/sys.7067", - "/root/data/AlMgCu/data/sys.707", - "/root/data/AlMgCu/data/sys.708", - "/root/data/AlMgCu/data/sys.7081", - "/root/data/AlMgCu/data/sys.7083", - "/root/data/AlMgCu/data/sys.7089", - "/root/data/AlMgCu/data/sys.709", - "/root/data/AlMgCu/data/sys.7090", - "/root/data/AlMgCu/data/sys.7091", - "/root/data/AlMgCu/data/sys.7092", - "/root/data/AlMgCu/data/sys.7093", - "/root/data/AlMgCu/data/sys.7096", - "/root/data/AlMgCu/data/sys.7098", - "/root/data/AlMgCu/data/sys.710", - "/root/data/AlMgCu/data/sys.7100", - "/root/data/AlMgCu/data/sys.7106", - "/root/data/AlMgCu/data/sys.7108", - "/root/data/AlMgCu/data/sys.711", - "/root/data/AlMgCu/data/sys.7112", - "/root/data/AlMgCu/data/sys.7114", - "/root/data/AlMgCu/data/sys.712", - "/root/data/AlMgCu/data/sys.713", - "/root/data/AlMgCu/data/sys.7130", - "/root/data/AlMgCu/data/sys.7138", - "/root/data/AlMgCu/data/sys.714", - "/root/data/AlMgCu/data/sys.7140", - "/root/data/AlMgCu/data/sys.7146", - "/root/data/AlMgCu/data/sys.7147", - "/root/data/AlMgCu/data/sys.715", - "/root/data/AlMgCu/data/sys.7154", - "/root/data/AlMgCu/data/sys.7155", - "/root/data/AlMgCu/data/sys.716", - "/root/data/AlMgCu/data/sys.7162", - "/root/data/AlMgCu/data/sys.7164", - "/root/data/AlMgCu/data/sys.717", - "/root/data/AlMgCu/data/sys.7170", - "/root/data/AlMgCu/data/sys.7173", - "/root/data/AlMgCu/data/sys.7177", - "/root/data/AlMgCu/data/sys.7178", - "/root/data/AlMgCu/data/sys.718", - "/root/data/AlMgCu/data/sys.7180", - "/root/data/AlMgCu/data/sys.7184", - "/root/data/AlMgCu/data/sys.7186", - "/root/data/AlMgCu/data/sys.7188", - "/root/data/AlMgCu/data/sys.719", - "/root/data/AlMgCu/data/sys.7194", - "/root/data/AlMgCu/data/sys.7200", - "/root/data/AlMgCu/data/sys.7202", - "/root/data/AlMgCu/data/sys.7208", - "/root/data/AlMgCu/data/sys.721", - "/root/data/AlMgCu/data/sys.7218", - "/root/data/AlMgCu/data/sys.722", - "/root/data/AlMgCu/data/sys.7226", - "/root/data/AlMgCu/data/sys.723", - "/root/data/AlMgCu/data/sys.7234", - "/root/data/AlMgCu/data/sys.724", - "/root/data/AlMgCu/data/sys.7240", - "/root/data/AlMgCu/data/sys.7241", - "/root/data/AlMgCu/data/sys.7243", - "/root/data/AlMgCu/data/sys.725", - "/root/data/AlMgCu/data/sys.7250", - "/root/data/AlMgCu/data/sys.7256", - "/root/data/AlMgCu/data/sys.7258", - "/root/data/AlMgCu/data/sys.726", - "/root/data/AlMgCu/data/sys.7268", - "/root/data/AlMgCu/data/sys.727", - "/root/data/AlMgCu/data/sys.7274", - "/root/data/AlMgCu/data/sys.728", - "/root/data/AlMgCu/data/sys.7282", - "/root/data/AlMgCu/data/sys.7289", - "/root/data/AlMgCu/data/sys.729", - "/root/data/AlMgCu/data/sys.7292", - "/root/data/AlMgCu/data/sys.730", - "/root/data/AlMgCu/data/sys.731", - "/root/data/AlMgCu/data/sys.732", - "/root/data/AlMgCu/data/sys.7322", - "/root/data/AlMgCu/data/sys.7325", - "/root/data/AlMgCu/data/sys.7336", - "/root/data/AlMgCu/data/sys.7338", - "/root/data/AlMgCu/data/sys.734", - "/root/data/AlMgCu/data/sys.7344", - "/root/data/AlMgCu/data/sys.7348", - "/root/data/AlMgCu/data/sys.735", - "/root/data/AlMgCu/data/sys.7352", - "/root/data/AlMgCu/data/sys.7354", - "/root/data/AlMgCu/data/sys.7356", - "/root/data/AlMgCu/data/sys.736", - "/root/data/AlMgCu/data/sys.7360", - "/root/data/AlMgCu/data/sys.7362", - "/root/data/AlMgCu/data/sys.7364", - "/root/data/AlMgCu/data/sys.737", - "/root/data/AlMgCu/data/sys.7378", - "/root/data/AlMgCu/data/sys.7380", - "/root/data/AlMgCu/data/sys.739", - "/root/data/AlMgCu/data/sys.7394", - "/root/data/AlMgCu/data/sys.7401", - "/root/data/AlMgCu/data/sys.7412", - "/root/data/AlMgCu/data/sys.7425", - "/root/data/AlMgCu/data/sys.7426", - "/root/data/AlMgCu/data/sys.7427", - "/root/data/AlMgCu/data/sys.7430", - "/root/data/AlMgCu/data/sys.7434", - "/root/data/AlMgCu/data/sys.744", - "/root/data/AlMgCu/data/sys.7442", - "/root/data/AlMgCu/data/sys.7444", - "/root/data/AlMgCu/data/sys.7450", - "/root/data/AlMgCu/data/sys.7456", - "/root/data/AlMgCu/data/sys.7457", - "/root/data/AlMgCu/data/sys.746", - "/root/data/AlMgCu/data/sys.747", - "/root/data/AlMgCu/data/sys.7474", - "/root/data/AlMgCu/data/sys.748", - "/root/data/AlMgCu/data/sys.749", - "/root/data/AlMgCu/data/sys.7498", - "/root/data/AlMgCu/data/sys.750", - "/root/data/AlMgCu/data/sys.7508", - "/root/data/AlMgCu/data/sys.751", - "/root/data/AlMgCu/data/sys.752", - "/root/data/AlMgCu/data/sys.7522", - "/root/data/AlMgCu/data/sys.753", - "/root/data/AlMgCu/data/sys.754", - "/root/data/AlMgCu/data/sys.7540", - "/root/data/AlMgCu/data/sys.755", - "/root/data/AlMgCu/data/sys.756", - "/root/data/AlMgCu/data/sys.7561", - "/root/data/AlMgCu/data/sys.7569", - "/root/data/AlMgCu/data/sys.757", - "/root/data/AlMgCu/data/sys.7570", - "/root/data/AlMgCu/data/sys.7578", - "/root/data/AlMgCu/data/sys.758", - "/root/data/AlMgCu/data/sys.7580", - "/root/data/AlMgCu/data/sys.7582", - "/root/data/AlMgCu/data/sys.759", - "/root/data/AlMgCu/data/sys.7592", - "/root/data/AlMgCu/data/sys.7594", - "/root/data/AlMgCu/data/sys.760", - "/root/data/AlMgCu/data/sys.7604", - "/root/data/AlMgCu/data/sys.761", - "/root/data/AlMgCu/data/sys.7610", - "/root/data/AlMgCu/data/sys.7618", - "/root/data/AlMgCu/data/sys.762", - "/root/data/AlMgCu/data/sys.763", - "/root/data/AlMgCu/data/sys.764", - "/root/data/AlMgCu/data/sys.7642", - "/root/data/AlMgCu/data/sys.765", - "/root/data/AlMgCu/data/sys.7650", - "/root/data/AlMgCu/data/sys.7657", - "/root/data/AlMgCu/data/sys.7658", - "/root/data/AlMgCu/data/sys.766", - "/root/data/AlMgCu/data/sys.767", - "/root/data/AlMgCu/data/sys.7676", - "/root/data/AlMgCu/data/sys.768", - "/root/data/AlMgCu/data/sys.7680", - "/root/data/AlMgCu/data/sys.7684", - "/root/data/AlMgCu/data/sys.769", - "/root/data/AlMgCu/data/sys.770", - "/root/data/AlMgCu/data/sys.771", - "/root/data/AlMgCu/data/sys.7712", - "/root/data/AlMgCu/data/sys.7716", - "/root/data/AlMgCu/data/sys.772", - "/root/data/AlMgCu/data/sys.7720", - "/root/data/AlMgCu/data/sys.773", - "/root/data/AlMgCu/data/sys.774", - "/root/data/AlMgCu/data/sys.7740", - "/root/data/AlMgCu/data/sys.7748", - "/root/data/AlMgCu/data/sys.775", - "/root/data/AlMgCu/data/sys.776", - "/root/data/AlMgCu/data/sys.777", - "/root/data/AlMgCu/data/sys.7772", - "/root/data/AlMgCu/data/sys.778", - "/root/data/AlMgCu/data/sys.779", - "/root/data/AlMgCu/data/sys.7796", - "/root/data/AlMgCu/data/sys.780", - "/root/data/AlMgCu/data/sys.7802", - "/root/data/AlMgCu/data/sys.7804", - "/root/data/AlMgCu/data/sys.781", - "/root/data/AlMgCu/data/sys.7810", - "/root/data/AlMgCu/data/sys.7812", - "/root/data/AlMgCu/data/sys.782", - "/root/data/AlMgCu/data/sys.783", - "/root/data/AlMgCu/data/sys.784", - "/root/data/AlMgCu/data/sys.7842", - "/root/data/AlMgCu/data/sys.785", - "/root/data/AlMgCu/data/sys.7850", - "/root/data/AlMgCu/data/sys.7858", - "/root/data/AlMgCu/data/sys.786", - "/root/data/AlMgCu/data/sys.7860", - "/root/data/AlMgCu/data/sys.7866", - "/root/data/AlMgCu/data/sys.7868", - "/root/data/AlMgCu/data/sys.787", - "/root/data/AlMgCu/data/sys.788", - "/root/data/AlMgCu/data/sys.789", - "/root/data/AlMgCu/data/sys.790", - "/root/data/AlMgCu/data/sys.791", - "/root/data/AlMgCu/data/sys.792", - "/root/data/AlMgCu/data/sys.793", - "/root/data/AlMgCu/data/sys.7936", - "/root/data/AlMgCu/data/sys.795", - "/root/data/AlMgCu/data/sys.7952", - "/root/data/AlMgCu/data/sys.797", - "/root/data/AlMgCu/data/sys.798", - "/root/data/AlMgCu/data/sys.799", - "/root/data/AlMgCu/data/sys.801", - "/root/data/AlMgCu/data/sys.802", - "/root/data/AlMgCu/data/sys.803", - "/root/data/AlMgCu/data/sys.804", - "/root/data/AlMgCu/data/sys.805", - "/root/data/AlMgCu/data/sys.806", - "/root/data/AlMgCu/data/sys.807", - "/root/data/AlMgCu/data/sys.808", - "/root/data/AlMgCu/data/sys.809", - "/root/data/AlMgCu/data/sys.810", - "/root/data/AlMgCu/data/sys.811", - "/root/data/AlMgCu/data/sys.813", - "/root/data/AlMgCu/data/sys.814", - "/root/data/AlMgCu/data/sys.815", - "/root/data/AlMgCu/data/sys.817", - "/root/data/AlMgCu/data/sys.818", - "/root/data/AlMgCu/data/sys.819", - "/root/data/AlMgCu/data/sys.820", - "/root/data/AlMgCu/data/sys.821", - "/root/data/AlMgCu/data/sys.822", - "/root/data/AlMgCu/data/sys.824", - "/root/data/AlMgCu/data/sys.825", - "/root/data/AlMgCu/data/sys.826", - "/root/data/AlMgCu/data/sys.827", - "/root/data/AlMgCu/data/sys.828", - "/root/data/AlMgCu/data/sys.829", - "/root/data/AlMgCu/data/sys.830", - "/root/data/AlMgCu/data/sys.831", - "/root/data/AlMgCu/data/sys.832", - "/root/data/AlMgCu/data/sys.834", - "/root/data/AlMgCu/data/sys.835", - "/root/data/AlMgCu/data/sys.836", - "/root/data/AlMgCu/data/sys.837", - "/root/data/AlMgCu/data/sys.838", - "/root/data/AlMgCu/data/sys.839", - "/root/data/AlMgCu/data/sys.840", - "/root/data/AlMgCu/data/sys.841", - "/root/data/AlMgCu/data/sys.842", - "/root/data/AlMgCu/data/sys.843", - "/root/data/AlMgCu/data/sys.844", - "/root/data/AlMgCu/data/sys.846", - "/root/data/AlMgCu/data/sys.847", - "/root/data/AlMgCu/data/sys.848", - "/root/data/AlMgCu/data/sys.850", - "/root/data/AlMgCu/data/sys.851", - "/root/data/AlMgCu/data/sys.852", - "/root/data/AlMgCu/data/sys.853", - "/root/data/AlMgCu/data/sys.854", - "/root/data/AlMgCu/data/sys.855", - "/root/data/AlMgCu/data/sys.856", - "/root/data/AlMgCu/data/sys.857", - "/root/data/AlMgCu/data/sys.858", - "/root/data/AlMgCu/data/sys.860", - "/root/data/AlMgCu/data/sys.861", - "/root/data/AlMgCu/data/sys.862", - "/root/data/AlMgCu/data/sys.863", - "/root/data/AlMgCu/data/sys.864", - "/root/data/AlMgCu/data/sys.865", - "/root/data/AlMgCu/data/sys.867", - "/root/data/AlMgCu/data/sys.868", - "/root/data/AlMgCu/data/sys.869", - "/root/data/AlMgCu/data/sys.870", - "/root/data/AlMgCu/data/sys.871", - "/root/data/AlMgCu/data/sys.872", - "/root/data/AlMgCu/data/sys.874", - "/root/data/AlMgCu/data/sys.875", - "/root/data/AlMgCu/data/sys.876", - "/root/data/AlMgCu/data/sys.877", - "/root/data/AlMgCu/data/sys.878", - "/root/data/AlMgCu/data/sys.879", - "/root/data/AlMgCu/data/sys.880", - "/root/data/AlMgCu/data/sys.881", - "/root/data/AlMgCu/data/sys.882", - "/root/data/AlMgCu/data/sys.883", - "/root/data/AlMgCu/data/sys.884", - "/root/data/AlMgCu/data/sys.885", - "/root/data/AlMgCu/data/sys.887", - "/root/data/AlMgCu/data/sys.888", - "/root/data/AlMgCu/data/sys.890", - "/root/data/AlMgCu/data/sys.891", - "/root/data/AlMgCu/data/sys.892", - "/root/data/AlMgCu/data/sys.893", - "/root/data/AlMgCu/data/sys.894", - "/root/data/AlMgCu/data/sys.896", - "/root/data/AlMgCu/data/sys.897", - "/root/data/AlMgCu/data/sys.898", - "/root/data/AlMgCu/data/sys.899", - "/root/data/AlMgCu/data/sys.900", - "/root/data/AlMgCu/data/sys.901", - "/root/data/AlMgCu/data/sys.902", - "/root/data/AlMgCu/data/sys.903", - "/root/data/AlMgCu/data/sys.9034", - "/root/data/AlMgCu/data/sys.9035", - "/root/data/AlMgCu/data/sys.904", - "/root/data/AlMgCu/data/sys.905", - "/root/data/AlMgCu/data/sys.9050", - "/root/data/AlMgCu/data/sys.9058", - "/root/data/AlMgCu/data/sys.9066", - "/root/data/AlMgCu/data/sys.9072", - "/root/data/AlMgCu/data/sys.9074", - "/root/data/AlMgCu/data/sys.908", - "/root/data/AlMgCu/data/sys.9082", - "/root/data/AlMgCu/data/sys.909", - "/root/data/AlMgCu/data/sys.9099", - "/root/data/AlMgCu/data/sys.910", - "/root/data/AlMgCu/data/sys.9105", - "/root/data/AlMgCu/data/sys.911", - "/root/data/AlMgCu/data/sys.9114", - "/root/data/AlMgCu/data/sys.9118", - "/root/data/AlMgCu/data/sys.912", - "/root/data/AlMgCu/data/sys.9121", - "/root/data/AlMgCu/data/sys.9136", - "/root/data/AlMgCu/data/sys.9137", - "/root/data/AlMgCu/data/sys.914", - "/root/data/AlMgCu/data/sys.9146", - "/root/data/AlMgCu/data/sys.915", - "/root/data/AlMgCu/data/sys.9154", - "/root/data/AlMgCu/data/sys.9155", - "/root/data/AlMgCu/data/sys.916", - "/root/data/AlMgCu/data/sys.9162", - "/root/data/AlMgCu/data/sys.917", - "/root/data/AlMgCu/data/sys.918", - "/root/data/AlMgCu/data/sys.9186", - "/root/data/AlMgCu/data/sys.919", - "/root/data/AlMgCu/data/sys.9196", - "/root/data/AlMgCu/data/sys.920", - "/root/data/AlMgCu/data/sys.921", - "/root/data/AlMgCu/data/sys.9210", - "/root/data/AlMgCu/data/sys.9217", - "/root/data/AlMgCu/data/sys.9218", - "/root/data/AlMgCu/data/sys.922", - "/root/data/AlMgCu/data/sys.923", - "/root/data/AlMgCu/data/sys.9232", - "/root/data/AlMgCu/data/sys.9234", - "/root/data/AlMgCu/data/sys.924", - "/root/data/AlMgCu/data/sys.925", - "/root/data/AlMgCu/data/sys.9250", - "/root/data/AlMgCu/data/sys.926", - "/root/data/AlMgCu/data/sys.9267", - "/root/data/AlMgCu/data/sys.927", - "/root/data/AlMgCu/data/sys.9274", - "/root/data/AlMgCu/data/sys.928", - "/root/data/AlMgCu/data/sys.9288", - "/root/data/AlMgCu/data/sys.9296", - "/root/data/AlMgCu/data/sys.9297", - "/root/data/AlMgCu/data/sys.930", - "/root/data/AlMgCu/data/sys.931", - "/root/data/AlMgCu/data/sys.932", - "/root/data/AlMgCu/data/sys.933", - "/root/data/AlMgCu/data/sys.9331", - "/root/data/AlMgCu/data/sys.934", - "/root/data/AlMgCu/data/sys.9342", - "/root/data/AlMgCu/data/sys.935", - "/root/data/AlMgCu/data/sys.9356", - "/root/data/AlMgCu/data/sys.936", - "/root/data/AlMgCu/data/sys.937", - "/root/data/AlMgCu/data/sys.938", - "/root/data/AlMgCu/data/sys.9386", - "/root/data/AlMgCu/data/sys.939", - "/root/data/AlMgCu/data/sys.940", - "/root/data/AlMgCu/data/sys.9409", - "/root/data/AlMgCu/data/sys.9418", - "/root/data/AlMgCu/data/sys.942", - "/root/data/AlMgCu/data/sys.943", - "/root/data/AlMgCu/data/sys.944", - "/root/data/AlMgCu/data/sys.9442", - "/root/data/AlMgCu/data/sys.9444", - "/root/data/AlMgCu/data/sys.945", - "/root/data/AlMgCu/data/sys.946", - "/root/data/AlMgCu/data/sys.9467", - "/root/data/AlMgCu/data/sys.947", - "/root/data/AlMgCu/data/sys.948", - "/root/data/AlMgCu/data/sys.949", - "/root/data/AlMgCu/data/sys.950", - "/root/data/AlMgCu/data/sys.9506", - "/root/data/AlMgCu/data/sys.951", - "/root/data/AlMgCu/data/sys.952", - "/root/data/AlMgCu/data/sys.953", - "/root/data/AlMgCu/data/sys.954", - "/root/data/AlMgCu/data/sys.955", - "/root/data/AlMgCu/data/sys.956", - "/root/data/AlMgCu/data/sys.957", - "/root/data/AlMgCu/data/sys.9572", - "/root/data/AlMgCu/data/sys.958", - "/root/data/AlMgCu/data/sys.959", - "/root/data/AlMgCu/data/sys.960", - "/root/data/AlMgCu/data/sys.9604", - "/root/data/AlMgCu/data/sys.963", - "/root/data/AlMgCu/data/sys.964", - "/root/data/AlMgCu/data/sys.965", - "/root/data/AlMgCu/data/sys.966", - "/root/data/AlMgCu/data/sys.967", - "/root/data/AlMgCu/data/sys.968", - "/root/data/AlMgCu/data/sys.969", - "/root/data/AlMgCu/data/sys.970", - "/root/data/AlMgCu/data/sys.9700", - "/root/data/AlMgCu/data/sys.971", - "/root/data/AlMgCu/data/sys.972", - "/root/data/AlMgCu/data/sys.9728", - "/root/data/AlMgCu/data/sys.973", - "/root/data/AlMgCu/data/sys.974", - "/root/data/AlMgCu/data/sys.975", - "/root/data/AlMgCu/data/sys.976", - "/root/data/AlMgCu/data/sys.978", - "/root/data/AlMgCu/data/sys.979", - "/root/data/AlMgCu/data/sys.980", - "/root/data/AlMgCu/data/sys.982", - "/root/data/AlMgCu/data/sys.983", - "/root/data/AlMgCu/data/sys.984", - "/root/data/AlMgCu/data/sys.986", - "/root/data/AlMgCu/data/sys.988", - "/root/data/AlMgCu/data/sys.9884", - "/root/data/AlMgCu/data/sys.989", - "/root/data/AlMgCu/data/sys.990", - "/root/data/AlMgCu/data/sys.991", - "/root/data/AlMgCu/data/sys.992", - "/root/data/AlMgCu/data/sys.993", - "/root/data/AlMgCu/data/sys.995", - "/root/data/AlMgCu/data/sys.9968", - "/root/data/AlMgCu/data/sys.9969", - "/root/data/AlMgCu/data/sys.997", - "/root/data/AlMgCu/data/sys.9971", - "/root/data/AlMgCu/data/sys.9977", - "/root/data/AlMgCu/data/sys.9978", - "/root/data/AlMgCu/data/sys.998", - "/root/data/AlMgCu/data/sys.9980", - "/root/data/AlMgCu/data/sys.9984", - "/root/data/AlMgCu/data/sys.9986", - "/root/data/AlMgCu/data/sys.999", - "/root/data/AlMgCu/data/sys.9990", - "/root/data/AlMgCu/data/sys.9992", - "/root/data/AlMgCu/data/sys.9997" - ], - "batch_size": 1 + "loss": { + "start_pref_e": 0.02, + "limit_pref_e": 2, + "start_pref_f": 1000, + "limit_pref_f": 1, + "start_pref_v": 0.01, + "limit_pref_v": 1 }, - "validation_data": { - "systems": [ - "/root/data/AlMgCu/data/init.008", - "/root/data/AlMgCu/data/init.013", - "/root/data/AlMgCu/data/init.029", - "/root/data/AlMgCu/data/init.031", - "/root/data/AlMgCu/data/init.052", - "/root/data/AlMgCu/data/init.053", - "/root/data/AlMgCu/data/init.054", - "/root/data/AlMgCu/data/init.055", - "/root/data/AlMgCu/data/init.066", - "/root/data/AlMgCu/data/init.077", - "/root/data/AlMgCu/data/init.081", - "/root/data/AlMgCu/data/init.084", - "/root/data/AlMgCu/data/init.100", - "/root/data/AlMgCu/data/init.1004", - "/root/data/AlMgCu/data/init.1010", - "/root/data/AlMgCu/data/init.1022", - "/root/data/AlMgCu/data/init.1024", - "/root/data/AlMgCu/data/init.1034", - "/root/data/AlMgCu/data/init.1036", - "/root/data/AlMgCu/data/init.1047", - "/root/data/AlMgCu/data/init.1057", - "/root/data/AlMgCu/data/init.1065", - "/root/data/AlMgCu/data/init.1068", - "/root/data/AlMgCu/data/init.1069", - "/root/data/AlMgCu/data/init.1078", - "/root/data/AlMgCu/data/init.1079", - "/root/data/AlMgCu/data/init.108", - "/root/data/AlMgCu/data/init.1081", - "/root/data/AlMgCu/data/init.1091", - "/root/data/AlMgCu/data/init.1092", - "/root/data/AlMgCu/data/init.1100", - "/root/data/AlMgCu/data/init.1130", - "/root/data/AlMgCu/data/init.1139", - "/root/data/AlMgCu/data/init.1141", - "/root/data/AlMgCu/data/init.1142", - "/root/data/AlMgCu/data/init.115", - "/root/data/AlMgCu/data/init.1156", - "/root/data/AlMgCu/data/init.1161", - "/root/data/AlMgCu/data/init.1164", - "/root/data/AlMgCu/data/init.117", - "/root/data/AlMgCu/data/init.1180", - "/root/data/AlMgCu/data/init.1199", - "/root/data/AlMgCu/data/init.1215", - "/root/data/AlMgCu/data/init.1238", - "/root/data/AlMgCu/data/init.1267", - "/root/data/AlMgCu/data/init.1279", - "/root/data/AlMgCu/data/init.130", - "/root/data/AlMgCu/data/init.133", - "/root/data/AlMgCu/data/init.145", - "/root/data/AlMgCu/data/init.151", - "/root/data/AlMgCu/data/init.163", - "/root/data/AlMgCu/data/init.209", - "/root/data/AlMgCu/data/init.215", - "/root/data/AlMgCu/data/init.216", - "/root/data/AlMgCu/data/init.225", - "/root/data/AlMgCu/data/init.249", - "/root/data/AlMgCu/data/init.261", - "/root/data/AlMgCu/data/init.268", - "/root/data/AlMgCu/data/init.272", - "/root/data/AlMgCu/data/init.286", - "/root/data/AlMgCu/data/init.289", - "/root/data/AlMgCu/data/init.300", - "/root/data/AlMgCu/data/init.301", - "/root/data/AlMgCu/data/init.322", - "/root/data/AlMgCu/data/init.323", - "/root/data/AlMgCu/data/init.335", - "/root/data/AlMgCu/data/init.343", - "/root/data/AlMgCu/data/init.354", - "/root/data/AlMgCu/data/init.360", - "/root/data/AlMgCu/data/init.405", - "/root/data/AlMgCu/data/init.424", - "/root/data/AlMgCu/data/init.425", - "/root/data/AlMgCu/data/init.427", - "/root/data/AlMgCu/data/init.437", - "/root/data/AlMgCu/data/init.447", - "/root/data/AlMgCu/data/init.450", - "/root/data/AlMgCu/data/init.452", - "/root/data/AlMgCu/data/init.455", - "/root/data/AlMgCu/data/init.465", - "/root/data/AlMgCu/data/init.477", - "/root/data/AlMgCu/data/init.481", - "/root/data/AlMgCu/data/init.498", - "/root/data/AlMgCu/data/init.500", - "/root/data/AlMgCu/data/init.501", - "/root/data/AlMgCu/data/init.525", - "/root/data/AlMgCu/data/init.526", - "/root/data/AlMgCu/data/init.531", - "/root/data/AlMgCu/data/init.545", - "/root/data/AlMgCu/data/init.550", - "/root/data/AlMgCu/data/init.562", - "/root/data/AlMgCu/data/init.564", - "/root/data/AlMgCu/data/init.568", - "/root/data/AlMgCu/data/init.586", - "/root/data/AlMgCu/data/init.612", - "/root/data/AlMgCu/data/init.623", - "/root/data/AlMgCu/data/init.637", - "/root/data/AlMgCu/data/init.655", - "/root/data/AlMgCu/data/init.660", - "/root/data/AlMgCu/data/init.662", - "/root/data/AlMgCu/data/init.670", - "/root/data/AlMgCu/data/init.688", - "/root/data/AlMgCu/data/init.705", - "/root/data/AlMgCu/data/init.711", - "/root/data/AlMgCu/data/init.716", - "/root/data/AlMgCu/data/init.723", - "/root/data/AlMgCu/data/init.742", - "/root/data/AlMgCu/data/init.748", - "/root/data/AlMgCu/data/init.750", - "/root/data/AlMgCu/data/init.761", - "/root/data/AlMgCu/data/init.763", - "/root/data/AlMgCu/data/init.771", - "/root/data/AlMgCu/data/init.782", - "/root/data/AlMgCu/data/init.798", - "/root/data/AlMgCu/data/init.815", - "/root/data/AlMgCu/data/init.818", - "/root/data/AlMgCu/data/init.823", - "/root/data/AlMgCu/data/init.828", - "/root/data/AlMgCu/data/init.829", - "/root/data/AlMgCu/data/init.831", - "/root/data/AlMgCu/data/init.841", - "/root/data/AlMgCu/data/init.846", - "/root/data/AlMgCu/data/init.861", - "/root/data/AlMgCu/data/init.878", - "/root/data/AlMgCu/data/init.893", - "/root/data/AlMgCu/data/init.904", - "/root/data/AlMgCu/data/init.909", - "/root/data/AlMgCu/data/init.920", - "/root/data/AlMgCu/data/init.921", - "/root/data/AlMgCu/data/init.932", - "/root/data/AlMgCu/data/init.936", - "/root/data/AlMgCu/data/init.954", - "/root/data/AlMgCu/data/init.976", - "/root/data/AlMgCu/data/init.992", - "/root/data/AlMgCu/data/init.998", - "/root/data/AlMgCu/data/sys.003", - "/root/data/AlMgCu/data/sys.005", - "/root/data/AlMgCu/data/sys.009", - "/root/data/AlMgCu/data/sys.013", - "/root/data/AlMgCu/data/sys.014", - "/root/data/AlMgCu/data/sys.024", - "/root/data/AlMgCu/data/sys.025", - "/root/data/AlMgCu/data/sys.035", - "/root/data/AlMgCu/data/sys.047", - "/root/data/AlMgCu/data/sys.068", - "/root/data/AlMgCu/data/sys.069", - "/root/data/AlMgCu/data/sys.091", - "/root/data/AlMgCu/data/sys.096", - "/root/data/AlMgCu/data/sys.10002", - "/root/data/AlMgCu/data/sys.10120", - "/root/data/AlMgCu/data/sys.10139", - "/root/data/AlMgCu/data/sys.102", - "/root/data/AlMgCu/data/sys.1028", - "/root/data/AlMgCu/data/sys.10281", - "/root/data/AlMgCu/data/sys.10346", - "/root/data/AlMgCu/data/sys.10354", - "/root/data/AlMgCu/data/sys.1040", - "/root/data/AlMgCu/data/sys.10434", - "/root/data/AlMgCu/data/sys.1055", - "/root/data/AlMgCu/data/sys.1057", - "/root/data/AlMgCu/data/sys.10570", - "/root/data/AlMgCu/data/sys.1058", - "/root/data/AlMgCu/data/sys.10609", - "/root/data/AlMgCu/data/sys.10748", - "/root/data/AlMgCu/data/sys.1081", - "/root/data/AlMgCu/data/sys.10897", - "/root/data/AlMgCu/data/sys.10908", - "/root/data/AlMgCu/data/sys.1093", - "/root/data/AlMgCu/data/sys.10948", - "/root/data/AlMgCu/data/sys.10954", - "/root/data/AlMgCu/data/sys.1096", - "/root/data/AlMgCu/data/sys.10988", - "/root/data/AlMgCu/data/sys.11005", - "/root/data/AlMgCu/data/sys.11012", - "/root/data/AlMgCu/data/sys.11026", - "/root/data/AlMgCu/data/sys.11061", - "/root/data/AlMgCu/data/sys.11067", - "/root/data/AlMgCu/data/sys.11073", - "/root/data/AlMgCu/data/sys.11084", - "/root/data/AlMgCu/data/sys.1109", - "/root/data/AlMgCu/data/sys.11101", - "/root/data/AlMgCu/data/sys.11113", - "/root/data/AlMgCu/data/sys.11130", - "/root/data/AlMgCu/data/sys.1118", - "/root/data/AlMgCu/data/sys.1119", - "/root/data/AlMgCu/data/sys.11252", - "/root/data/AlMgCu/data/sys.11264", - "/root/data/AlMgCu/data/sys.11305", - "/root/data/AlMgCu/data/sys.11336", - "/root/data/AlMgCu/data/sys.1142", - "/root/data/AlMgCu/data/sys.1153", - "/root/data/AlMgCu/data/sys.1156", - "/root/data/AlMgCu/data/sys.1190", - "/root/data/AlMgCu/data/sys.1192", - "/root/data/AlMgCu/data/sys.1196", - "/root/data/AlMgCu/data/sys.1207", - "/root/data/AlMgCu/data/sys.1231", - "/root/data/AlMgCu/data/sys.1235", - "/root/data/AlMgCu/data/sys.1253", - "/root/data/AlMgCu/data/sys.1267", - "/root/data/AlMgCu/data/sys.1305", - "/root/data/AlMgCu/data/sys.1315", - "/root/data/AlMgCu/data/sys.1320", - "/root/data/AlMgCu/data/sys.133", - "/root/data/AlMgCu/data/sys.134", - "/root/data/AlMgCu/data/sys.1375", - "/root/data/AlMgCu/data/sys.1378", - "/root/data/AlMgCu/data/sys.1380", - "/root/data/AlMgCu/data/sys.1386", - "/root/data/AlMgCu/data/sys.1393", - "/root/data/AlMgCu/data/sys.1402", - "/root/data/AlMgCu/data/sys.1408", - "/root/data/AlMgCu/data/sys.1417", - "/root/data/AlMgCu/data/sys.1426", - "/root/data/AlMgCu/data/sys.146", - "/root/data/AlMgCu/data/sys.1460", - "/root/data/AlMgCu/data/sys.1472", - "/root/data/AlMgCu/data/sys.1481", - "/root/data/AlMgCu/data/sys.1482", - "/root/data/AlMgCu/data/sys.1486", - "/root/data/AlMgCu/data/sys.1493", - "/root/data/AlMgCu/data/sys.150", - "/root/data/AlMgCu/data/sys.1514", - "/root/data/AlMgCu/data/sys.1553", - "/root/data/AlMgCu/data/sys.1584", - "/root/data/AlMgCu/data/sys.1593", - "/root/data/AlMgCu/data/sys.1601", - "/root/data/AlMgCu/data/sys.1603", - "/root/data/AlMgCu/data/sys.1607", - "/root/data/AlMgCu/data/sys.1628", - "/root/data/AlMgCu/data/sys.1631", - "/root/data/AlMgCu/data/sys.1647", - "/root/data/AlMgCu/data/sys.1650", - "/root/data/AlMgCu/data/sys.1651", - "/root/data/AlMgCu/data/sys.1668", - "/root/data/AlMgCu/data/sys.1671", - "/root/data/AlMgCu/data/sys.1679", - "/root/data/AlMgCu/data/sys.1683", - "/root/data/AlMgCu/data/sys.1684", - "/root/data/AlMgCu/data/sys.1687", - "/root/data/AlMgCu/data/sys.1688", - "/root/data/AlMgCu/data/sys.1690", - "/root/data/AlMgCu/data/sys.1702", - "/root/data/AlMgCu/data/sys.1704", - "/root/data/AlMgCu/data/sys.1711", - "/root/data/AlMgCu/data/sys.1719", - "/root/data/AlMgCu/data/sys.1788", - "/root/data/AlMgCu/data/sys.1793", - "/root/data/AlMgCu/data/sys.1803", - "/root/data/AlMgCu/data/sys.1804", - "/root/data/AlMgCu/data/sys.1810", - "/root/data/AlMgCu/data/sys.1825", - "/root/data/AlMgCu/data/sys.1841", - "/root/data/AlMgCu/data/sys.1844", - "/root/data/AlMgCu/data/sys.1851", - "/root/data/AlMgCu/data/sys.1871", - "/root/data/AlMgCu/data/sys.1873", - "/root/data/AlMgCu/data/sys.1881", - "/root/data/AlMgCu/data/sys.1921", - "/root/data/AlMgCu/data/sys.1932", - "/root/data/AlMgCu/data/sys.1934", - "/root/data/AlMgCu/data/sys.1937", - "/root/data/AlMgCu/data/sys.194", - "/root/data/AlMgCu/data/sys.1945", - "/root/data/AlMgCu/data/sys.1950", - "/root/data/AlMgCu/data/sys.1969", - "/root/data/AlMgCu/data/sys.1976", - "/root/data/AlMgCu/data/sys.1978", - "/root/data/AlMgCu/data/sys.2006", - "/root/data/AlMgCu/data/sys.2008", - "/root/data/AlMgCu/data/sys.2010", - "/root/data/AlMgCu/data/sys.2019", - "/root/data/AlMgCu/data/sys.2021", - "/root/data/AlMgCu/data/sys.2026", - "/root/data/AlMgCu/data/sys.2045", - "/root/data/AlMgCu/data/sys.205", - "/root/data/AlMgCu/data/sys.207", - "/root/data/AlMgCu/data/sys.2076", - "/root/data/AlMgCu/data/sys.2077", - "/root/data/AlMgCu/data/sys.2115", - "/root/data/AlMgCu/data/sys.2122", - "/root/data/AlMgCu/data/sys.2128", - "/root/data/AlMgCu/data/sys.2131", - "/root/data/AlMgCu/data/sys.2135", - "/root/data/AlMgCu/data/sys.2155", - "/root/data/AlMgCu/data/sys.2159", - "/root/data/AlMgCu/data/sys.2171", - "/root/data/AlMgCu/data/sys.2172", - "/root/data/AlMgCu/data/sys.2175", - "/root/data/AlMgCu/data/sys.2183", - "/root/data/AlMgCu/data/sys.219", - "/root/data/AlMgCu/data/sys.2192", - "/root/data/AlMgCu/data/sys.2193", - "/root/data/AlMgCu/data/sys.2200", - "/root/data/AlMgCu/data/sys.2206", - "/root/data/AlMgCu/data/sys.2232", - "/root/data/AlMgCu/data/sys.2251", - "/root/data/AlMgCu/data/sys.2262", - "/root/data/AlMgCu/data/sys.2268", - "/root/data/AlMgCu/data/sys.2274", - "/root/data/AlMgCu/data/sys.2283", - "/root/data/AlMgCu/data/sys.2287", - "/root/data/AlMgCu/data/sys.2293", - "/root/data/AlMgCu/data/sys.231", - "/root/data/AlMgCu/data/sys.2315", - "/root/data/AlMgCu/data/sys.2319", - "/root/data/AlMgCu/data/sys.2347", - "/root/data/AlMgCu/data/sys.2355", - "/root/data/AlMgCu/data/sys.2368", - "/root/data/AlMgCu/data/sys.2370", - "/root/data/AlMgCu/data/sys.239", - "/root/data/AlMgCu/data/sys.2404", - "/root/data/AlMgCu/data/sys.2416", - "/root/data/AlMgCu/data/sys.2418", - "/root/data/AlMgCu/data/sys.2442", - "/root/data/AlMgCu/data/sys.2446", - "/root/data/AlMgCu/data/sys.2449", - "/root/data/AlMgCu/data/sys.2472", - "/root/data/AlMgCu/data/sys.2475", - "/root/data/AlMgCu/data/sys.2491", - "/root/data/AlMgCu/data/sys.2500", - "/root/data/AlMgCu/data/sys.2507", - "/root/data/AlMgCu/data/sys.2547", - "/root/data/AlMgCu/data/sys.2552", - "/root/data/AlMgCu/data/sys.2557", - "/root/data/AlMgCu/data/sys.259", - "/root/data/AlMgCu/data/sys.2597", - "/root/data/AlMgCu/data/sys.261", - "/root/data/AlMgCu/data/sys.2612", - "/root/data/AlMgCu/data/sys.2617", - "/root/data/AlMgCu/data/sys.2674", - "/root/data/AlMgCu/data/sys.2678", - "/root/data/AlMgCu/data/sys.2686", - "/root/data/AlMgCu/data/sys.2687", - "/root/data/AlMgCu/data/sys.2688", - "/root/data/AlMgCu/data/sys.2689", - "/root/data/AlMgCu/data/sys.2705", - "/root/data/AlMgCu/data/sys.2714", - "/root/data/AlMgCu/data/sys.2763", - "/root/data/AlMgCu/data/sys.2772", - "/root/data/AlMgCu/data/sys.2775", - "/root/data/AlMgCu/data/sys.2786", - "/root/data/AlMgCu/data/sys.2808", - "/root/data/AlMgCu/data/sys.2821", - "/root/data/AlMgCu/data/sys.2823", - "/root/data/AlMgCu/data/sys.2831", - "/root/data/AlMgCu/data/sys.2867", - "/root/data/AlMgCu/data/sys.2882", - "/root/data/AlMgCu/data/sys.2892", - "/root/data/AlMgCu/data/sys.290", - "/root/data/AlMgCu/data/sys.2910", - "/root/data/AlMgCu/data/sys.2944", - "/root/data/AlMgCu/data/sys.2945", - "/root/data/AlMgCu/data/sys.2966", - "/root/data/AlMgCu/data/sys.2971", - "/root/data/AlMgCu/data/sys.2990", - "/root/data/AlMgCu/data/sys.2992", - "/root/data/AlMgCu/data/sys.2994", - "/root/data/AlMgCu/data/sys.3029", - "/root/data/AlMgCu/data/sys.3037", - "/root/data/AlMgCu/data/sys.3055", - "/root/data/AlMgCu/data/sys.3068", - "/root/data/AlMgCu/data/sys.307", - "/root/data/AlMgCu/data/sys.3072", - "/root/data/AlMgCu/data/sys.3076", - "/root/data/AlMgCu/data/sys.3089", - "/root/data/AlMgCu/data/sys.310", - "/root/data/AlMgCu/data/sys.3105", - "/root/data/AlMgCu/data/sys.3113", - "/root/data/AlMgCu/data/sys.3116", - "/root/data/AlMgCu/data/sys.3122", - "/root/data/AlMgCu/data/sys.3137", - "/root/data/AlMgCu/data/sys.3140", - "/root/data/AlMgCu/data/sys.3141", - "/root/data/AlMgCu/data/sys.3152", - "/root/data/AlMgCu/data/sys.3169", - "/root/data/AlMgCu/data/sys.3173", - "/root/data/AlMgCu/data/sys.319", - "/root/data/AlMgCu/data/sys.3197", - "/root/data/AlMgCu/data/sys.320", - "/root/data/AlMgCu/data/sys.3201", - "/root/data/AlMgCu/data/sys.3219", - "/root/data/AlMgCu/data/sys.3234", - "/root/data/AlMgCu/data/sys.324", - "/root/data/AlMgCu/data/sys.3260", - "/root/data/AlMgCu/data/sys.3262", - "/root/data/AlMgCu/data/sys.3271", - "/root/data/AlMgCu/data/sys.3273", - "/root/data/AlMgCu/data/sys.328", - "/root/data/AlMgCu/data/sys.3281", - "/root/data/AlMgCu/data/sys.3285", - "/root/data/AlMgCu/data/sys.3288", - "/root/data/AlMgCu/data/sys.3324", - "/root/data/AlMgCu/data/sys.3354", - "/root/data/AlMgCu/data/sys.3355", - "/root/data/AlMgCu/data/sys.3359", - "/root/data/AlMgCu/data/sys.3364", - "/root/data/AlMgCu/data/sys.3366", - "/root/data/AlMgCu/data/sys.3371", - "/root/data/AlMgCu/data/sys.3373", - "/root/data/AlMgCu/data/sys.3383", - "/root/data/AlMgCu/data/sys.3403", - "/root/data/AlMgCu/data/sys.341", - "/root/data/AlMgCu/data/sys.3411", - "/root/data/AlMgCu/data/sys.3415", - "/root/data/AlMgCu/data/sys.3430", - "/root/data/AlMgCu/data/sys.3440", - "/root/data/AlMgCu/data/sys.347", - "/root/data/AlMgCu/data/sys.3480", - "/root/data/AlMgCu/data/sys.349", - "/root/data/AlMgCu/data/sys.3501", - "/root/data/AlMgCu/data/sys.3506", - "/root/data/AlMgCu/data/sys.3508", - "/root/data/AlMgCu/data/sys.3515", - "/root/data/AlMgCu/data/sys.3523", - "/root/data/AlMgCu/data/sys.3527", - "/root/data/AlMgCu/data/sys.3531", - "/root/data/AlMgCu/data/sys.3533", - "/root/data/AlMgCu/data/sys.354", - "/root/data/AlMgCu/data/sys.3543", - "/root/data/AlMgCu/data/sys.359", - "/root/data/AlMgCu/data/sys.3599", - "/root/data/AlMgCu/data/sys.3614", - "/root/data/AlMgCu/data/sys.3634", - "/root/data/AlMgCu/data/sys.3650", - "/root/data/AlMgCu/data/sys.3674", - "/root/data/AlMgCu/data/sys.3679", - "/root/data/AlMgCu/data/sys.3705", - "/root/data/AlMgCu/data/sys.3708", - "/root/data/AlMgCu/data/sys.3727", - "/root/data/AlMgCu/data/sys.3732", - "/root/data/AlMgCu/data/sys.3733", - "/root/data/AlMgCu/data/sys.3738", - "/root/data/AlMgCu/data/sys.3745", - "/root/data/AlMgCu/data/sys.3748", - "/root/data/AlMgCu/data/sys.3755", - "/root/data/AlMgCu/data/sys.3758", - "/root/data/AlMgCu/data/sys.3763", - "/root/data/AlMgCu/data/sys.3767", - "/root/data/AlMgCu/data/sys.3775", - "/root/data/AlMgCu/data/sys.3807", - "/root/data/AlMgCu/data/sys.382", - "/root/data/AlMgCu/data/sys.3848", - "/root/data/AlMgCu/data/sys.3864", - "/root/data/AlMgCu/data/sys.3878", - "/root/data/AlMgCu/data/sys.3884", - "/root/data/AlMgCu/data/sys.3886", - "/root/data/AlMgCu/data/sys.3903", - "/root/data/AlMgCu/data/sys.3906", - "/root/data/AlMgCu/data/sys.392", - "/root/data/AlMgCu/data/sys.3925", - "/root/data/AlMgCu/data/sys.3928", - "/root/data/AlMgCu/data/sys.3931", - "/root/data/AlMgCu/data/sys.3932", - "/root/data/AlMgCu/data/sys.3939", - "/root/data/AlMgCu/data/sys.394", - "/root/data/AlMgCu/data/sys.3957", - "/root/data/AlMgCu/data/sys.3958", - "/root/data/AlMgCu/data/sys.3960", - "/root/data/AlMgCu/data/sys.3972", - "/root/data/AlMgCu/data/sys.3974", - "/root/data/AlMgCu/data/sys.3976", - "/root/data/AlMgCu/data/sys.3995", - "/root/data/AlMgCu/data/sys.3996", - "/root/data/AlMgCu/data/sys.3998", - "/root/data/AlMgCu/data/sys.4025", - "/root/data/AlMgCu/data/sys.4027", - "/root/data/AlMgCu/data/sys.4034", - "/root/data/AlMgCu/data/sys.4035", - "/root/data/AlMgCu/data/sys.4043", - "/root/data/AlMgCu/data/sys.4051", - "/root/data/AlMgCu/data/sys.4053", - "/root/data/AlMgCu/data/sys.4064", - "/root/data/AlMgCu/data/sys.4065", - "/root/data/AlMgCu/data/sys.4077", - "/root/data/AlMgCu/data/sys.4103", - "/root/data/AlMgCu/data/sys.4109", - "/root/data/AlMgCu/data/sys.4123", - "/root/data/AlMgCu/data/sys.4124", - "/root/data/AlMgCu/data/sys.4139", - "/root/data/AlMgCu/data/sys.4156", - "/root/data/AlMgCu/data/sys.4160", - "/root/data/AlMgCu/data/sys.417", - "/root/data/AlMgCu/data/sys.4173", - "/root/data/AlMgCu/data/sys.4179", - "/root/data/AlMgCu/data/sys.418", - "/root/data/AlMgCu/data/sys.4189", - "/root/data/AlMgCu/data/sys.4202", - "/root/data/AlMgCu/data/sys.4228", - "/root/data/AlMgCu/data/sys.4243", - "/root/data/AlMgCu/data/sys.4265", - "/root/data/AlMgCu/data/sys.427", - "/root/data/AlMgCu/data/sys.4276", - "/root/data/AlMgCu/data/sys.428", - "/root/data/AlMgCu/data/sys.4285", - "/root/data/AlMgCu/data/sys.4297", - "/root/data/AlMgCu/data/sys.4304", - "/root/data/AlMgCu/data/sys.4306", - "/root/data/AlMgCu/data/sys.4309", - "/root/data/AlMgCu/data/sys.431", - "/root/data/AlMgCu/data/sys.4320", - "/root/data/AlMgCu/data/sys.4321", - "/root/data/AlMgCu/data/sys.4335", - "/root/data/AlMgCu/data/sys.4351", - "/root/data/AlMgCu/data/sys.4368", - "/root/data/AlMgCu/data/sys.4369", - "/root/data/AlMgCu/data/sys.4380", - "/root/data/AlMgCu/data/sys.4384", - "/root/data/AlMgCu/data/sys.4397", - "/root/data/AlMgCu/data/sys.4400", - "/root/data/AlMgCu/data/sys.4418", - "/root/data/AlMgCu/data/sys.4424", - "/root/data/AlMgCu/data/sys.4434", - "/root/data/AlMgCu/data/sys.4444", - "/root/data/AlMgCu/data/sys.446", - "/root/data/AlMgCu/data/sys.4463", - "/root/data/AlMgCu/data/sys.4466", - "/root/data/AlMgCu/data/sys.4468", - "/root/data/AlMgCu/data/sys.4469", - "/root/data/AlMgCu/data/sys.4478", - "/root/data/AlMgCu/data/sys.4487", - "/root/data/AlMgCu/data/sys.4489", - "/root/data/AlMgCu/data/sys.4504", - "/root/data/AlMgCu/data/sys.4508", - "/root/data/AlMgCu/data/sys.4515", - "/root/data/AlMgCu/data/sys.4518", - "/root/data/AlMgCu/data/sys.4527", - "/root/data/AlMgCu/data/sys.4533", - "/root/data/AlMgCu/data/sys.4534", - "/root/data/AlMgCu/data/sys.4548", - "/root/data/AlMgCu/data/sys.4552", - "/root/data/AlMgCu/data/sys.4558", - "/root/data/AlMgCu/data/sys.4586", - "/root/data/AlMgCu/data/sys.4592", - "/root/data/AlMgCu/data/sys.4634", - "/root/data/AlMgCu/data/sys.4637", - "/root/data/AlMgCu/data/sys.465", - "/root/data/AlMgCu/data/sys.4661", - "/root/data/AlMgCu/data/sys.4664", - "/root/data/AlMgCu/data/sys.4673", - "/root/data/AlMgCu/data/sys.4702", - "/root/data/AlMgCu/data/sys.4706", - "/root/data/AlMgCu/data/sys.4724", - "/root/data/AlMgCu/data/sys.4729", - "/root/data/AlMgCu/data/sys.474", - "/root/data/AlMgCu/data/sys.4745", - "/root/data/AlMgCu/data/sys.4746", - "/root/data/AlMgCu/data/sys.4816", - "/root/data/AlMgCu/data/sys.4856", - "/root/data/AlMgCu/data/sys.4866", - "/root/data/AlMgCu/data/sys.487", - "/root/data/AlMgCu/data/sys.4915", - "/root/data/AlMgCu/data/sys.4921", - "/root/data/AlMgCu/data/sys.4923", - "/root/data/AlMgCu/data/sys.4954", - "/root/data/AlMgCu/data/sys.4962", - "/root/data/AlMgCu/data/sys.4969", - "/root/data/AlMgCu/data/sys.4975", - "/root/data/AlMgCu/data/sys.4986", - "/root/data/AlMgCu/data/sys.5006", - "/root/data/AlMgCu/data/sys.503", - "/root/data/AlMgCu/data/sys.5172", - "/root/data/AlMgCu/data/sys.5196", - "/root/data/AlMgCu/data/sys.5200", - "/root/data/AlMgCu/data/sys.524", - "/root/data/AlMgCu/data/sys.5242", - "/root/data/AlMgCu/data/sys.527", - "/root/data/AlMgCu/data/sys.5320", - "/root/data/AlMgCu/data/sys.564", - "/root/data/AlMgCu/data/sys.568", - "/root/data/AlMgCu/data/sys.588", - "/root/data/AlMgCu/data/sys.591", - "/root/data/AlMgCu/data/sys.5942", - "/root/data/AlMgCu/data/sys.5952", - "/root/data/AlMgCu/data/sys.5966", - "/root/data/AlMgCu/data/sys.5974", - "/root/data/AlMgCu/data/sys.5978", - "/root/data/AlMgCu/data/sys.5982", - "/root/data/AlMgCu/data/sys.5986", - "/root/data/AlMgCu/data/sys.5996", - "/root/data/AlMgCu/data/sys.6003", - "/root/data/AlMgCu/data/sys.601", - "/root/data/AlMgCu/data/sys.6020", - "/root/data/AlMgCu/data/sys.6028", - "/root/data/AlMgCu/data/sys.6039", - "/root/data/AlMgCu/data/sys.6041", - "/root/data/AlMgCu/data/sys.6045", - "/root/data/AlMgCu/data/sys.6048", - "/root/data/AlMgCu/data/sys.6065", - "/root/data/AlMgCu/data/sys.6066", - "/root/data/AlMgCu/data/sys.6080", - "/root/data/AlMgCu/data/sys.6084", - "/root/data/AlMgCu/data/sys.6086", - "/root/data/AlMgCu/data/sys.6099", - "/root/data/AlMgCu/data/sys.6102", - "/root/data/AlMgCu/data/sys.6105", - "/root/data/AlMgCu/data/sys.6122", - "/root/data/AlMgCu/data/sys.6150", - "/root/data/AlMgCu/data/sys.6152", - "/root/data/AlMgCu/data/sys.6153", - "/root/data/AlMgCu/data/sys.6184", - "/root/data/AlMgCu/data/sys.6192", - "/root/data/AlMgCu/data/sys.6205", - "/root/data/AlMgCu/data/sys.6209", - "/root/data/AlMgCu/data/sys.6214", - "/root/data/AlMgCu/data/sys.6228", - "/root/data/AlMgCu/data/sys.6234", - "/root/data/AlMgCu/data/sys.6248", - "/root/data/AlMgCu/data/sys.625", - "/root/data/AlMgCu/data/sys.6255", - "/root/data/AlMgCu/data/sys.6259", - "/root/data/AlMgCu/data/sys.6270", - "/root/data/AlMgCu/data/sys.6281", - "/root/data/AlMgCu/data/sys.6294", - "/root/data/AlMgCu/data/sys.6297", - "/root/data/AlMgCu/data/sys.6299", - "/root/data/AlMgCu/data/sys.6307", - "/root/data/AlMgCu/data/sys.633", - "/root/data/AlMgCu/data/sys.6330", - "/root/data/AlMgCu/data/sys.6340", - "/root/data/AlMgCu/data/sys.6343", - "/root/data/AlMgCu/data/sys.6348", - "/root/data/AlMgCu/data/sys.6352", - "/root/data/AlMgCu/data/sys.6353", - "/root/data/AlMgCu/data/sys.6365", - "/root/data/AlMgCu/data/sys.6380", - "/root/data/AlMgCu/data/sys.6395", - "/root/data/AlMgCu/data/sys.6407", - "/root/data/AlMgCu/data/sys.6412", - "/root/data/AlMgCu/data/sys.6415", - "/root/data/AlMgCu/data/sys.6420", - "/root/data/AlMgCu/data/sys.6427", - "/root/data/AlMgCu/data/sys.6435", - "/root/data/AlMgCu/data/sys.6448", - "/root/data/AlMgCu/data/sys.6458", - "/root/data/AlMgCu/data/sys.6459", - "/root/data/AlMgCu/data/sys.646", - "/root/data/AlMgCu/data/sys.6463", - "/root/data/AlMgCu/data/sys.6466", - "/root/data/AlMgCu/data/sys.6470", - "/root/data/AlMgCu/data/sys.6476", - "/root/data/AlMgCu/data/sys.6484", - "/root/data/AlMgCu/data/sys.6496", - "/root/data/AlMgCu/data/sys.6500", - "/root/data/AlMgCu/data/sys.6504", - "/root/data/AlMgCu/data/sys.6518", - "/root/data/AlMgCu/data/sys.6532", - "/root/data/AlMgCu/data/sys.6536", - "/root/data/AlMgCu/data/sys.6538", - "/root/data/AlMgCu/data/sys.6543", - "/root/data/AlMgCu/data/sys.6560", - "/root/data/AlMgCu/data/sys.6565", - "/root/data/AlMgCu/data/sys.6569", - "/root/data/AlMgCu/data/sys.6570", - "/root/data/AlMgCu/data/sys.6594", - "/root/data/AlMgCu/data/sys.6595", - "/root/data/AlMgCu/data/sys.6599", - "/root/data/AlMgCu/data/sys.6635", - "/root/data/AlMgCu/data/sys.6636", - "/root/data/AlMgCu/data/sys.6643", - "/root/data/AlMgCu/data/sys.6653", - "/root/data/AlMgCu/data/sys.6654", - "/root/data/AlMgCu/data/sys.6659", - "/root/data/AlMgCu/data/sys.667", - "/root/data/AlMgCu/data/sys.6672", - "/root/data/AlMgCu/data/sys.6675", - "/root/data/AlMgCu/data/sys.669", - "/root/data/AlMgCu/data/sys.6702", - "/root/data/AlMgCu/data/sys.6713", - "/root/data/AlMgCu/data/sys.6744", - "/root/data/AlMgCu/data/sys.6747", - "/root/data/AlMgCu/data/sys.6748", - "/root/data/AlMgCu/data/sys.6749", - "/root/data/AlMgCu/data/sys.6757", - "/root/data/AlMgCu/data/sys.6759", - "/root/data/AlMgCu/data/sys.6769", - "/root/data/AlMgCu/data/sys.6776", - "/root/data/AlMgCu/data/sys.6793", - "/root/data/AlMgCu/data/sys.6803", - "/root/data/AlMgCu/data/sys.6824", - "/root/data/AlMgCu/data/sys.6846", - "/root/data/AlMgCu/data/sys.6848", - "/root/data/AlMgCu/data/sys.687", - "/root/data/AlMgCu/data/sys.691", - "/root/data/AlMgCu/data/sys.6914", - "/root/data/AlMgCu/data/sys.692", - "/root/data/AlMgCu/data/sys.694", - "/root/data/AlMgCu/data/sys.6971", - "/root/data/AlMgCu/data/sys.6986", - "/root/data/AlMgCu/data/sys.700", - "/root/data/AlMgCu/data/sys.7035", - "/root/data/AlMgCu/data/sys.7117", - "/root/data/AlMgCu/data/sys.7153", - "/root/data/AlMgCu/data/sys.7196", - "/root/data/AlMgCu/data/sys.720", - "/root/data/AlMgCu/data/sys.7220", - "/root/data/AlMgCu/data/sys.7242", - "/root/data/AlMgCu/data/sys.7252", - "/root/data/AlMgCu/data/sys.7316", - "/root/data/AlMgCu/data/sys.7329", - "/root/data/AlMgCu/data/sys.7331", - "/root/data/AlMgCu/data/sys.7369", - "/root/data/AlMgCu/data/sys.738", - "/root/data/AlMgCu/data/sys.740", - "/root/data/AlMgCu/data/sys.7402", - "/root/data/AlMgCu/data/sys.7417", - "/root/data/AlMgCu/data/sys.743", - "/root/data/AlMgCu/data/sys.7475", - "/root/data/AlMgCu/data/sys.7516", - "/root/data/AlMgCu/data/sys.7524", - "/root/data/AlMgCu/data/sys.7666", - "/root/data/AlMgCu/data/sys.7674", - "/root/data/AlMgCu/data/sys.7786", - "/root/data/AlMgCu/data/sys.7856", - "/root/data/AlMgCu/data/sys.794", - "/root/data/AlMgCu/data/sys.796", - "/root/data/AlMgCu/data/sys.800", - "/root/data/AlMgCu/data/sys.812", - "/root/data/AlMgCu/data/sys.816", - "/root/data/AlMgCu/data/sys.823", - "/root/data/AlMgCu/data/sys.833", - "/root/data/AlMgCu/data/sys.859", - "/root/data/AlMgCu/data/sys.866", - "/root/data/AlMgCu/data/sys.886", - "/root/data/AlMgCu/data/sys.889", - "/root/data/AlMgCu/data/sys.895", - "/root/data/AlMgCu/data/sys.9042", - "/root/data/AlMgCu/data/sys.906", - "/root/data/AlMgCu/data/sys.907", - "/root/data/AlMgCu/data/sys.9122", - "/root/data/AlMgCu/data/sys.913", - "/root/data/AlMgCu/data/sys.9163", - "/root/data/AlMgCu/data/sys.9241", - "/root/data/AlMgCu/data/sys.929", - "/root/data/AlMgCu/data/sys.9396", - "/root/data/AlMgCu/data/sys.941", - "/root/data/AlMgCu/data/sys.962", - "/root/data/AlMgCu/data/sys.987", - "/root/data/AlMgCu/data/sys.994", - "/root/data/AlMgCu/data/sys.996", - "/root/data/AlMgCu/data/sys.9970", - "/root/data/AlMgCu/data/sys.9972", - "/root/data/AlMgCu/data/sys.9985", - "/root/data/AlMgCu/data/sys.9994" - ], - "batch_size": 1, - "numb_btch": 4, - "_comment": "that's all" - }, - "numb_steps": 10000000, - "seed": 3982377700, - "_comment": "that's all", - "disp_file": "lcurve.out", - "disp_freq": 2000, - "numb_test": 1, - "save_freq": 2000, - "save_ckpt": "model.ckpt", - "disp_training": true, - "time_training": true, - "profiling": false, - "profiling_file": "timeline.json" - } -} \ No newline at end of file + "training": { + "training_data": { + "systems": [ + "/root/data/AlMgCu/data/init.000", + "/root/data/AlMgCu/data/init.001", + "/root/data/AlMgCu/data/init.002", + "/root/data/AlMgCu/data/init.003", + "/root/data/AlMgCu/data/init.004", + "/root/data/AlMgCu/data/init.005", + "/root/data/AlMgCu/data/init.006", + "/root/data/AlMgCu/data/init.007", + "/root/data/AlMgCu/data/init.009", + "/root/data/AlMgCu/data/init.010", + "/root/data/AlMgCu/data/init.011", + "/root/data/AlMgCu/data/init.012", + "/root/data/AlMgCu/data/init.014", + "/root/data/AlMgCu/data/init.015", + "/root/data/AlMgCu/data/init.016", + "/root/data/AlMgCu/data/init.017", + "/root/data/AlMgCu/data/init.018", + "/root/data/AlMgCu/data/init.019", + "/root/data/AlMgCu/data/init.020", + "/root/data/AlMgCu/data/init.021", + "/root/data/AlMgCu/data/init.022", + "/root/data/AlMgCu/data/init.023", + "/root/data/AlMgCu/data/init.024", + "/root/data/AlMgCu/data/init.025", + "/root/data/AlMgCu/data/init.026", + "/root/data/AlMgCu/data/init.027", + "/root/data/AlMgCu/data/init.028", + "/root/data/AlMgCu/data/init.030", + "/root/data/AlMgCu/data/init.032", + "/root/data/AlMgCu/data/init.033", + "/root/data/AlMgCu/data/init.034", + "/root/data/AlMgCu/data/init.035", + "/root/data/AlMgCu/data/init.036", + "/root/data/AlMgCu/data/init.037", + "/root/data/AlMgCu/data/init.038", + "/root/data/AlMgCu/data/init.039", + "/root/data/AlMgCu/data/init.040", + "/root/data/AlMgCu/data/init.041", + "/root/data/AlMgCu/data/init.042", + "/root/data/AlMgCu/data/init.043", + "/root/data/AlMgCu/data/init.044", + "/root/data/AlMgCu/data/init.045", + "/root/data/AlMgCu/data/init.046", + "/root/data/AlMgCu/data/init.047", + "/root/data/AlMgCu/data/init.048", + "/root/data/AlMgCu/data/init.049", + "/root/data/AlMgCu/data/init.050", + "/root/data/AlMgCu/data/init.051", + "/root/data/AlMgCu/data/init.056", + "/root/data/AlMgCu/data/init.057", + "/root/data/AlMgCu/data/init.058", + "/root/data/AlMgCu/data/init.059", + "/root/data/AlMgCu/data/init.060", + "/root/data/AlMgCu/data/init.061", + "/root/data/AlMgCu/data/init.062", + "/root/data/AlMgCu/data/init.063", + "/root/data/AlMgCu/data/init.064", + "/root/data/AlMgCu/data/init.065", + "/root/data/AlMgCu/data/init.067", + "/root/data/AlMgCu/data/init.068", + "/root/data/AlMgCu/data/init.069", + "/root/data/AlMgCu/data/init.070", + "/root/data/AlMgCu/data/init.071", + "/root/data/AlMgCu/data/init.072", + "/root/data/AlMgCu/data/init.073", + "/root/data/AlMgCu/data/init.074", + "/root/data/AlMgCu/data/init.075", + "/root/data/AlMgCu/data/init.076", + "/root/data/AlMgCu/data/init.078", + "/root/data/AlMgCu/data/init.079", + "/root/data/AlMgCu/data/init.080", + "/root/data/AlMgCu/data/init.082", + "/root/data/AlMgCu/data/init.083", + "/root/data/AlMgCu/data/init.085", + "/root/data/AlMgCu/data/init.086", + "/root/data/AlMgCu/data/init.087", + "/root/data/AlMgCu/data/init.088", + "/root/data/AlMgCu/data/init.089", + "/root/data/AlMgCu/data/init.090", + "/root/data/AlMgCu/data/init.091", + "/root/data/AlMgCu/data/init.092", + "/root/data/AlMgCu/data/init.093", + "/root/data/AlMgCu/data/init.094", + "/root/data/AlMgCu/data/init.095", + "/root/data/AlMgCu/data/init.096", + "/root/data/AlMgCu/data/init.097", + "/root/data/AlMgCu/data/init.098", + "/root/data/AlMgCu/data/init.099", + "/root/data/AlMgCu/data/init.1000", + "/root/data/AlMgCu/data/init.1001", + "/root/data/AlMgCu/data/init.1002", + "/root/data/AlMgCu/data/init.1003", + "/root/data/AlMgCu/data/init.1005", + "/root/data/AlMgCu/data/init.1006", + "/root/data/AlMgCu/data/init.1007", + "/root/data/AlMgCu/data/init.1008", + "/root/data/AlMgCu/data/init.1009", + "/root/data/AlMgCu/data/init.101", + "/root/data/AlMgCu/data/init.1011", + "/root/data/AlMgCu/data/init.1012", + "/root/data/AlMgCu/data/init.1013", + "/root/data/AlMgCu/data/init.1014", + "/root/data/AlMgCu/data/init.1015", + "/root/data/AlMgCu/data/init.1016", + "/root/data/AlMgCu/data/init.1017", + "/root/data/AlMgCu/data/init.1018", + "/root/data/AlMgCu/data/init.1019", + "/root/data/AlMgCu/data/init.102", + "/root/data/AlMgCu/data/init.1020", + "/root/data/AlMgCu/data/init.1021", + "/root/data/AlMgCu/data/init.1023", + "/root/data/AlMgCu/data/init.1025", + "/root/data/AlMgCu/data/init.1026", + "/root/data/AlMgCu/data/init.1027", + "/root/data/AlMgCu/data/init.1028", + "/root/data/AlMgCu/data/init.1029", + "/root/data/AlMgCu/data/init.103", + "/root/data/AlMgCu/data/init.1030", + "/root/data/AlMgCu/data/init.1031", + "/root/data/AlMgCu/data/init.1032", + "/root/data/AlMgCu/data/init.1033", + "/root/data/AlMgCu/data/init.1035", + "/root/data/AlMgCu/data/init.1037", + "/root/data/AlMgCu/data/init.1038", + "/root/data/AlMgCu/data/init.1039", + "/root/data/AlMgCu/data/init.104", + "/root/data/AlMgCu/data/init.1040", + "/root/data/AlMgCu/data/init.1041", + "/root/data/AlMgCu/data/init.1042", + "/root/data/AlMgCu/data/init.1043", + "/root/data/AlMgCu/data/init.1044", + "/root/data/AlMgCu/data/init.1045", + "/root/data/AlMgCu/data/init.1046", + "/root/data/AlMgCu/data/init.1048", + "/root/data/AlMgCu/data/init.1049", + "/root/data/AlMgCu/data/init.105", + "/root/data/AlMgCu/data/init.1050", + "/root/data/AlMgCu/data/init.1051", + "/root/data/AlMgCu/data/init.1052", + "/root/data/AlMgCu/data/init.1053", + "/root/data/AlMgCu/data/init.1054", + "/root/data/AlMgCu/data/init.1055", + "/root/data/AlMgCu/data/init.1056", + "/root/data/AlMgCu/data/init.1058", + "/root/data/AlMgCu/data/init.1059", + "/root/data/AlMgCu/data/init.106", + "/root/data/AlMgCu/data/init.1060", + "/root/data/AlMgCu/data/init.1061", + "/root/data/AlMgCu/data/init.1062", + "/root/data/AlMgCu/data/init.1063", + "/root/data/AlMgCu/data/init.1064", + "/root/data/AlMgCu/data/init.1066", + "/root/data/AlMgCu/data/init.1067", + "/root/data/AlMgCu/data/init.107", + "/root/data/AlMgCu/data/init.1070", + "/root/data/AlMgCu/data/init.1071", + "/root/data/AlMgCu/data/init.1072", + "/root/data/AlMgCu/data/init.1073", + "/root/data/AlMgCu/data/init.1074", + "/root/data/AlMgCu/data/init.1075", + "/root/data/AlMgCu/data/init.1076", + "/root/data/AlMgCu/data/init.1077", + "/root/data/AlMgCu/data/init.1080", + "/root/data/AlMgCu/data/init.1082", + "/root/data/AlMgCu/data/init.1083", + "/root/data/AlMgCu/data/init.1084", + "/root/data/AlMgCu/data/init.1085", + "/root/data/AlMgCu/data/init.1086", + "/root/data/AlMgCu/data/init.1087", + "/root/data/AlMgCu/data/init.1088", + "/root/data/AlMgCu/data/init.1089", + "/root/data/AlMgCu/data/init.109", + "/root/data/AlMgCu/data/init.1090", + "/root/data/AlMgCu/data/init.1093", + "/root/data/AlMgCu/data/init.1094", + "/root/data/AlMgCu/data/init.1095", + "/root/data/AlMgCu/data/init.1096", + "/root/data/AlMgCu/data/init.1097", + "/root/data/AlMgCu/data/init.1098", + "/root/data/AlMgCu/data/init.1099", + "/root/data/AlMgCu/data/init.110", + "/root/data/AlMgCu/data/init.1101", + "/root/data/AlMgCu/data/init.1102", + "/root/data/AlMgCu/data/init.1103", + "/root/data/AlMgCu/data/init.1104", + "/root/data/AlMgCu/data/init.1105", + "/root/data/AlMgCu/data/init.1106", + "/root/data/AlMgCu/data/init.1107", + "/root/data/AlMgCu/data/init.1108", + "/root/data/AlMgCu/data/init.1109", + "/root/data/AlMgCu/data/init.111", + "/root/data/AlMgCu/data/init.1110", + "/root/data/AlMgCu/data/init.1111", + "/root/data/AlMgCu/data/init.1112", + "/root/data/AlMgCu/data/init.1113", + "/root/data/AlMgCu/data/init.1114", + "/root/data/AlMgCu/data/init.1115", + "/root/data/AlMgCu/data/init.1116", + "/root/data/AlMgCu/data/init.1117", + "/root/data/AlMgCu/data/init.1118", + "/root/data/AlMgCu/data/init.1119", + "/root/data/AlMgCu/data/init.112", + "/root/data/AlMgCu/data/init.1120", + "/root/data/AlMgCu/data/init.1121", + "/root/data/AlMgCu/data/init.1122", + "/root/data/AlMgCu/data/init.1123", + "/root/data/AlMgCu/data/init.1124", + "/root/data/AlMgCu/data/init.1125", + "/root/data/AlMgCu/data/init.1126", + "/root/data/AlMgCu/data/init.1127", + "/root/data/AlMgCu/data/init.1128", + "/root/data/AlMgCu/data/init.1129", + "/root/data/AlMgCu/data/init.113", + "/root/data/AlMgCu/data/init.1131", + "/root/data/AlMgCu/data/init.1132", + "/root/data/AlMgCu/data/init.1133", + "/root/data/AlMgCu/data/init.1134", + "/root/data/AlMgCu/data/init.1135", + "/root/data/AlMgCu/data/init.1136", + "/root/data/AlMgCu/data/init.1137", + "/root/data/AlMgCu/data/init.1138", + "/root/data/AlMgCu/data/init.114", + "/root/data/AlMgCu/data/init.1140", + "/root/data/AlMgCu/data/init.1143", + "/root/data/AlMgCu/data/init.1144", + "/root/data/AlMgCu/data/init.1145", + "/root/data/AlMgCu/data/init.1146", + "/root/data/AlMgCu/data/init.1147", + "/root/data/AlMgCu/data/init.1148", + "/root/data/AlMgCu/data/init.1149", + "/root/data/AlMgCu/data/init.1150", + "/root/data/AlMgCu/data/init.1151", + "/root/data/AlMgCu/data/init.1152", + "/root/data/AlMgCu/data/init.1153", + "/root/data/AlMgCu/data/init.1154", + "/root/data/AlMgCu/data/init.1155", + "/root/data/AlMgCu/data/init.1157", + "/root/data/AlMgCu/data/init.1158", + "/root/data/AlMgCu/data/init.1159", + "/root/data/AlMgCu/data/init.116", + "/root/data/AlMgCu/data/init.1160", + "/root/data/AlMgCu/data/init.1162", + "/root/data/AlMgCu/data/init.1163", + "/root/data/AlMgCu/data/init.1165", + "/root/data/AlMgCu/data/init.1166", + "/root/data/AlMgCu/data/init.1167", + "/root/data/AlMgCu/data/init.1168", + "/root/data/AlMgCu/data/init.1169", + "/root/data/AlMgCu/data/init.1170", + "/root/data/AlMgCu/data/init.1171", + "/root/data/AlMgCu/data/init.1172", + "/root/data/AlMgCu/data/init.1173", + "/root/data/AlMgCu/data/init.1174", + "/root/data/AlMgCu/data/init.1175", + "/root/data/AlMgCu/data/init.1176", + "/root/data/AlMgCu/data/init.1177", + "/root/data/AlMgCu/data/init.1178", + "/root/data/AlMgCu/data/init.1179", + "/root/data/AlMgCu/data/init.118", + "/root/data/AlMgCu/data/init.1181", + "/root/data/AlMgCu/data/init.1182", + "/root/data/AlMgCu/data/init.1183", + "/root/data/AlMgCu/data/init.1184", + "/root/data/AlMgCu/data/init.1185", + "/root/data/AlMgCu/data/init.1186", + "/root/data/AlMgCu/data/init.1187", + "/root/data/AlMgCu/data/init.1188", + "/root/data/AlMgCu/data/init.1189", + "/root/data/AlMgCu/data/init.119", + "/root/data/AlMgCu/data/init.1190", + "/root/data/AlMgCu/data/init.1191", + "/root/data/AlMgCu/data/init.1192", + "/root/data/AlMgCu/data/init.1193", + "/root/data/AlMgCu/data/init.1194", + "/root/data/AlMgCu/data/init.1195", + "/root/data/AlMgCu/data/init.1196", + "/root/data/AlMgCu/data/init.1197", + "/root/data/AlMgCu/data/init.1198", + "/root/data/AlMgCu/data/init.120", + "/root/data/AlMgCu/data/init.1200", + "/root/data/AlMgCu/data/init.1201", + "/root/data/AlMgCu/data/init.1202", + "/root/data/AlMgCu/data/init.1203", + "/root/data/AlMgCu/data/init.1204", + "/root/data/AlMgCu/data/init.1205", + "/root/data/AlMgCu/data/init.1206", + "/root/data/AlMgCu/data/init.1207", + "/root/data/AlMgCu/data/init.1208", + "/root/data/AlMgCu/data/init.1209", + "/root/data/AlMgCu/data/init.121", + "/root/data/AlMgCu/data/init.1210", + "/root/data/AlMgCu/data/init.1211", + "/root/data/AlMgCu/data/init.1212", + "/root/data/AlMgCu/data/init.1213", + "/root/data/AlMgCu/data/init.1214", + "/root/data/AlMgCu/data/init.1216", + "/root/data/AlMgCu/data/init.1217", + "/root/data/AlMgCu/data/init.1218", + "/root/data/AlMgCu/data/init.1219", + "/root/data/AlMgCu/data/init.122", + "/root/data/AlMgCu/data/init.1220", + "/root/data/AlMgCu/data/init.1221", + "/root/data/AlMgCu/data/init.1222", + "/root/data/AlMgCu/data/init.1223", + "/root/data/AlMgCu/data/init.1224", + "/root/data/AlMgCu/data/init.1225", + "/root/data/AlMgCu/data/init.1226", + "/root/data/AlMgCu/data/init.1227", + "/root/data/AlMgCu/data/init.1228", + "/root/data/AlMgCu/data/init.1229", + "/root/data/AlMgCu/data/init.123", + "/root/data/AlMgCu/data/init.1230", + "/root/data/AlMgCu/data/init.1231", + "/root/data/AlMgCu/data/init.1232", + "/root/data/AlMgCu/data/init.1233", + "/root/data/AlMgCu/data/init.1234", + "/root/data/AlMgCu/data/init.1235", + "/root/data/AlMgCu/data/init.1236", + "/root/data/AlMgCu/data/init.1237", + "/root/data/AlMgCu/data/init.1239", + "/root/data/AlMgCu/data/init.124", + "/root/data/AlMgCu/data/init.1240", + "/root/data/AlMgCu/data/init.1241", + "/root/data/AlMgCu/data/init.1242", + "/root/data/AlMgCu/data/init.1243", + "/root/data/AlMgCu/data/init.1244", + "/root/data/AlMgCu/data/init.1245", + "/root/data/AlMgCu/data/init.1246", + "/root/data/AlMgCu/data/init.1247", + "/root/data/AlMgCu/data/init.1248", + "/root/data/AlMgCu/data/init.1249", + "/root/data/AlMgCu/data/init.125", + "/root/data/AlMgCu/data/init.1250", + "/root/data/AlMgCu/data/init.1251", + "/root/data/AlMgCu/data/init.1252", + "/root/data/AlMgCu/data/init.1253", + "/root/data/AlMgCu/data/init.1254", + "/root/data/AlMgCu/data/init.1255", + "/root/data/AlMgCu/data/init.1256", + "/root/data/AlMgCu/data/init.1257", + "/root/data/AlMgCu/data/init.1258", + "/root/data/AlMgCu/data/init.1259", + "/root/data/AlMgCu/data/init.126", + "/root/data/AlMgCu/data/init.1260", + "/root/data/AlMgCu/data/init.1261", + "/root/data/AlMgCu/data/init.1262", + "/root/data/AlMgCu/data/init.1263", + "/root/data/AlMgCu/data/init.1264", + "/root/data/AlMgCu/data/init.1265", + "/root/data/AlMgCu/data/init.1266", + "/root/data/AlMgCu/data/init.1268", + "/root/data/AlMgCu/data/init.1269", + "/root/data/AlMgCu/data/init.127", + "/root/data/AlMgCu/data/init.1270", + "/root/data/AlMgCu/data/init.1271", + "/root/data/AlMgCu/data/init.1272", + "/root/data/AlMgCu/data/init.1273", + "/root/data/AlMgCu/data/init.1274", + "/root/data/AlMgCu/data/init.1275", + "/root/data/AlMgCu/data/init.1276", + "/root/data/AlMgCu/data/init.1277", + "/root/data/AlMgCu/data/init.1278", + "/root/data/AlMgCu/data/init.128", + "/root/data/AlMgCu/data/init.1280", + "/root/data/AlMgCu/data/init.1281", + "/root/data/AlMgCu/data/init.1282", + "/root/data/AlMgCu/data/init.1283", + "/root/data/AlMgCu/data/init.1284", + "/root/data/AlMgCu/data/init.1285", + "/root/data/AlMgCu/data/init.1286", + "/root/data/AlMgCu/data/init.1287", + "/root/data/AlMgCu/data/init.1288", + "/root/data/AlMgCu/data/init.129", + "/root/data/AlMgCu/data/init.131", + "/root/data/AlMgCu/data/init.132", + "/root/data/AlMgCu/data/init.134", + "/root/data/AlMgCu/data/init.135", + "/root/data/AlMgCu/data/init.136", + "/root/data/AlMgCu/data/init.137", + "/root/data/AlMgCu/data/init.138", + "/root/data/AlMgCu/data/init.139", + "/root/data/AlMgCu/data/init.140", + "/root/data/AlMgCu/data/init.141", + "/root/data/AlMgCu/data/init.142", + "/root/data/AlMgCu/data/init.143", + "/root/data/AlMgCu/data/init.144", + "/root/data/AlMgCu/data/init.146", + "/root/data/AlMgCu/data/init.147", + "/root/data/AlMgCu/data/init.148", + "/root/data/AlMgCu/data/init.149", + "/root/data/AlMgCu/data/init.150", + "/root/data/AlMgCu/data/init.152", + "/root/data/AlMgCu/data/init.153", + "/root/data/AlMgCu/data/init.154", + "/root/data/AlMgCu/data/init.155", + "/root/data/AlMgCu/data/init.156", + "/root/data/AlMgCu/data/init.157", + "/root/data/AlMgCu/data/init.158", + "/root/data/AlMgCu/data/init.159", + "/root/data/AlMgCu/data/init.160", + "/root/data/AlMgCu/data/init.161", + "/root/data/AlMgCu/data/init.162", + "/root/data/AlMgCu/data/init.164", + "/root/data/AlMgCu/data/init.165", + "/root/data/AlMgCu/data/init.166", + "/root/data/AlMgCu/data/init.167", + "/root/data/AlMgCu/data/init.168", + "/root/data/AlMgCu/data/init.169", + "/root/data/AlMgCu/data/init.170", + "/root/data/AlMgCu/data/init.171", + "/root/data/AlMgCu/data/init.172", + "/root/data/AlMgCu/data/init.173", + "/root/data/AlMgCu/data/init.174", + "/root/data/AlMgCu/data/init.175", + "/root/data/AlMgCu/data/init.176", + "/root/data/AlMgCu/data/init.177", + "/root/data/AlMgCu/data/init.178", + "/root/data/AlMgCu/data/init.179", + "/root/data/AlMgCu/data/init.180", + "/root/data/AlMgCu/data/init.181", + "/root/data/AlMgCu/data/init.182", + "/root/data/AlMgCu/data/init.183", + "/root/data/AlMgCu/data/init.184", + "/root/data/AlMgCu/data/init.185", + "/root/data/AlMgCu/data/init.186", + "/root/data/AlMgCu/data/init.187", + "/root/data/AlMgCu/data/init.188", + "/root/data/AlMgCu/data/init.189", + "/root/data/AlMgCu/data/init.190", + "/root/data/AlMgCu/data/init.191", + "/root/data/AlMgCu/data/init.192", + "/root/data/AlMgCu/data/init.193", + "/root/data/AlMgCu/data/init.194", + "/root/data/AlMgCu/data/init.195", + "/root/data/AlMgCu/data/init.196", + "/root/data/AlMgCu/data/init.197", + "/root/data/AlMgCu/data/init.198", + "/root/data/AlMgCu/data/init.199", + "/root/data/AlMgCu/data/init.200", + "/root/data/AlMgCu/data/init.201", + "/root/data/AlMgCu/data/init.202", + "/root/data/AlMgCu/data/init.203", + "/root/data/AlMgCu/data/init.204", + "/root/data/AlMgCu/data/init.205", + "/root/data/AlMgCu/data/init.206", + "/root/data/AlMgCu/data/init.207", + "/root/data/AlMgCu/data/init.208", + "/root/data/AlMgCu/data/init.210", + "/root/data/AlMgCu/data/init.211", + "/root/data/AlMgCu/data/init.212", + "/root/data/AlMgCu/data/init.213", + "/root/data/AlMgCu/data/init.214", + "/root/data/AlMgCu/data/init.217", + "/root/data/AlMgCu/data/init.218", + "/root/data/AlMgCu/data/init.219", + "/root/data/AlMgCu/data/init.220", + "/root/data/AlMgCu/data/init.221", + "/root/data/AlMgCu/data/init.222", + "/root/data/AlMgCu/data/init.223", + "/root/data/AlMgCu/data/init.224", + "/root/data/AlMgCu/data/init.226", + "/root/data/AlMgCu/data/init.227", + "/root/data/AlMgCu/data/init.228", + "/root/data/AlMgCu/data/init.229", + "/root/data/AlMgCu/data/init.230", + "/root/data/AlMgCu/data/init.231", + "/root/data/AlMgCu/data/init.232", + "/root/data/AlMgCu/data/init.233", + "/root/data/AlMgCu/data/init.234", + "/root/data/AlMgCu/data/init.235", + "/root/data/AlMgCu/data/init.236", + "/root/data/AlMgCu/data/init.237", + "/root/data/AlMgCu/data/init.238", + "/root/data/AlMgCu/data/init.239", + "/root/data/AlMgCu/data/init.240", + "/root/data/AlMgCu/data/init.241", + "/root/data/AlMgCu/data/init.242", + "/root/data/AlMgCu/data/init.243", + "/root/data/AlMgCu/data/init.244", + "/root/data/AlMgCu/data/init.245", + "/root/data/AlMgCu/data/init.246", + "/root/data/AlMgCu/data/init.247", + "/root/data/AlMgCu/data/init.248", + "/root/data/AlMgCu/data/init.250", + "/root/data/AlMgCu/data/init.251", + "/root/data/AlMgCu/data/init.252", + "/root/data/AlMgCu/data/init.253", + "/root/data/AlMgCu/data/init.254", + "/root/data/AlMgCu/data/init.255", + "/root/data/AlMgCu/data/init.256", + "/root/data/AlMgCu/data/init.257", + "/root/data/AlMgCu/data/init.258", + "/root/data/AlMgCu/data/init.259", + "/root/data/AlMgCu/data/init.260", + "/root/data/AlMgCu/data/init.262", + "/root/data/AlMgCu/data/init.263", + "/root/data/AlMgCu/data/init.264", + "/root/data/AlMgCu/data/init.265", + "/root/data/AlMgCu/data/init.266", + "/root/data/AlMgCu/data/init.267", + "/root/data/AlMgCu/data/init.269", + "/root/data/AlMgCu/data/init.270", + "/root/data/AlMgCu/data/init.271", + "/root/data/AlMgCu/data/init.273", + "/root/data/AlMgCu/data/init.274", + "/root/data/AlMgCu/data/init.275", + "/root/data/AlMgCu/data/init.276", + "/root/data/AlMgCu/data/init.277", + "/root/data/AlMgCu/data/init.278", + "/root/data/AlMgCu/data/init.279", + "/root/data/AlMgCu/data/init.280", + "/root/data/AlMgCu/data/init.281", + "/root/data/AlMgCu/data/init.282", + "/root/data/AlMgCu/data/init.283", + "/root/data/AlMgCu/data/init.284", + "/root/data/AlMgCu/data/init.285", + "/root/data/AlMgCu/data/init.287", + "/root/data/AlMgCu/data/init.288", + "/root/data/AlMgCu/data/init.290", + "/root/data/AlMgCu/data/init.291", + "/root/data/AlMgCu/data/init.292", + "/root/data/AlMgCu/data/init.293", + "/root/data/AlMgCu/data/init.294", + "/root/data/AlMgCu/data/init.295", + "/root/data/AlMgCu/data/init.296", + "/root/data/AlMgCu/data/init.297", + "/root/data/AlMgCu/data/init.298", + "/root/data/AlMgCu/data/init.299", + "/root/data/AlMgCu/data/init.302", + "/root/data/AlMgCu/data/init.303", + "/root/data/AlMgCu/data/init.304", + "/root/data/AlMgCu/data/init.305", + "/root/data/AlMgCu/data/init.306", + "/root/data/AlMgCu/data/init.307", + "/root/data/AlMgCu/data/init.308", + "/root/data/AlMgCu/data/init.309", + "/root/data/AlMgCu/data/init.310", + "/root/data/AlMgCu/data/init.311", + "/root/data/AlMgCu/data/init.312", + "/root/data/AlMgCu/data/init.313", + "/root/data/AlMgCu/data/init.314", + "/root/data/AlMgCu/data/init.315", + "/root/data/AlMgCu/data/init.316", + "/root/data/AlMgCu/data/init.317", + "/root/data/AlMgCu/data/init.318", + "/root/data/AlMgCu/data/init.319", + "/root/data/AlMgCu/data/init.320", + "/root/data/AlMgCu/data/init.321", + "/root/data/AlMgCu/data/init.324", + "/root/data/AlMgCu/data/init.325", + "/root/data/AlMgCu/data/init.326", + "/root/data/AlMgCu/data/init.327", + "/root/data/AlMgCu/data/init.328", + "/root/data/AlMgCu/data/init.329", + "/root/data/AlMgCu/data/init.330", + "/root/data/AlMgCu/data/init.331", + "/root/data/AlMgCu/data/init.332", + "/root/data/AlMgCu/data/init.333", + "/root/data/AlMgCu/data/init.334", + "/root/data/AlMgCu/data/init.336", + "/root/data/AlMgCu/data/init.337", + "/root/data/AlMgCu/data/init.338", + "/root/data/AlMgCu/data/init.339", + "/root/data/AlMgCu/data/init.340", + "/root/data/AlMgCu/data/init.341", + "/root/data/AlMgCu/data/init.342", + "/root/data/AlMgCu/data/init.344", + "/root/data/AlMgCu/data/init.345", + "/root/data/AlMgCu/data/init.346", + "/root/data/AlMgCu/data/init.347", + "/root/data/AlMgCu/data/init.348", + "/root/data/AlMgCu/data/init.349", + "/root/data/AlMgCu/data/init.350", + "/root/data/AlMgCu/data/init.351", + "/root/data/AlMgCu/data/init.352", + "/root/data/AlMgCu/data/init.353", + "/root/data/AlMgCu/data/init.355", + "/root/data/AlMgCu/data/init.356", + "/root/data/AlMgCu/data/init.357", + "/root/data/AlMgCu/data/init.358", + "/root/data/AlMgCu/data/init.359", + "/root/data/AlMgCu/data/init.361", + "/root/data/AlMgCu/data/init.362", + "/root/data/AlMgCu/data/init.363", + "/root/data/AlMgCu/data/init.364", + "/root/data/AlMgCu/data/init.365", + "/root/data/AlMgCu/data/init.366", + "/root/data/AlMgCu/data/init.367", + "/root/data/AlMgCu/data/init.368", + "/root/data/AlMgCu/data/init.369", + "/root/data/AlMgCu/data/init.370", + "/root/data/AlMgCu/data/init.371", + "/root/data/AlMgCu/data/init.372", + "/root/data/AlMgCu/data/init.373", + "/root/data/AlMgCu/data/init.374", + "/root/data/AlMgCu/data/init.375", + "/root/data/AlMgCu/data/init.376", + "/root/data/AlMgCu/data/init.377", + "/root/data/AlMgCu/data/init.378", + "/root/data/AlMgCu/data/init.379", + "/root/data/AlMgCu/data/init.380", + "/root/data/AlMgCu/data/init.381", + "/root/data/AlMgCu/data/init.382", + "/root/data/AlMgCu/data/init.383", + "/root/data/AlMgCu/data/init.384", + "/root/data/AlMgCu/data/init.385", + "/root/data/AlMgCu/data/init.386", + "/root/data/AlMgCu/data/init.387", + "/root/data/AlMgCu/data/init.388", + "/root/data/AlMgCu/data/init.389", + "/root/data/AlMgCu/data/init.390", + "/root/data/AlMgCu/data/init.391", + "/root/data/AlMgCu/data/init.392", + "/root/data/AlMgCu/data/init.393", + "/root/data/AlMgCu/data/init.394", + "/root/data/AlMgCu/data/init.395", + "/root/data/AlMgCu/data/init.396", + "/root/data/AlMgCu/data/init.397", + "/root/data/AlMgCu/data/init.398", + "/root/data/AlMgCu/data/init.399", + "/root/data/AlMgCu/data/init.400", + "/root/data/AlMgCu/data/init.401", + "/root/data/AlMgCu/data/init.402", + "/root/data/AlMgCu/data/init.403", + "/root/data/AlMgCu/data/init.404", + "/root/data/AlMgCu/data/init.406", + "/root/data/AlMgCu/data/init.407", + "/root/data/AlMgCu/data/init.408", + "/root/data/AlMgCu/data/init.409", + "/root/data/AlMgCu/data/init.410", + "/root/data/AlMgCu/data/init.411", + "/root/data/AlMgCu/data/init.412", + "/root/data/AlMgCu/data/init.413", + "/root/data/AlMgCu/data/init.414", + "/root/data/AlMgCu/data/init.415", + "/root/data/AlMgCu/data/init.416", + "/root/data/AlMgCu/data/init.417", + "/root/data/AlMgCu/data/init.418", + "/root/data/AlMgCu/data/init.419", + "/root/data/AlMgCu/data/init.420", + "/root/data/AlMgCu/data/init.421", + "/root/data/AlMgCu/data/init.422", + "/root/data/AlMgCu/data/init.423", + "/root/data/AlMgCu/data/init.426", + "/root/data/AlMgCu/data/init.428", + "/root/data/AlMgCu/data/init.429", + "/root/data/AlMgCu/data/init.430", + "/root/data/AlMgCu/data/init.431", + "/root/data/AlMgCu/data/init.432", + "/root/data/AlMgCu/data/init.433", + "/root/data/AlMgCu/data/init.434", + "/root/data/AlMgCu/data/init.435", + "/root/data/AlMgCu/data/init.436", + "/root/data/AlMgCu/data/init.438", + "/root/data/AlMgCu/data/init.439", + "/root/data/AlMgCu/data/init.440", + "/root/data/AlMgCu/data/init.441", + "/root/data/AlMgCu/data/init.442", + "/root/data/AlMgCu/data/init.443", + "/root/data/AlMgCu/data/init.444", + "/root/data/AlMgCu/data/init.445", + "/root/data/AlMgCu/data/init.446", + "/root/data/AlMgCu/data/init.448", + "/root/data/AlMgCu/data/init.449", + "/root/data/AlMgCu/data/init.451", + "/root/data/AlMgCu/data/init.453", + "/root/data/AlMgCu/data/init.454", + "/root/data/AlMgCu/data/init.456", + "/root/data/AlMgCu/data/init.457", + "/root/data/AlMgCu/data/init.458", + "/root/data/AlMgCu/data/init.459", + "/root/data/AlMgCu/data/init.460", + "/root/data/AlMgCu/data/init.461", + "/root/data/AlMgCu/data/init.462", + "/root/data/AlMgCu/data/init.463", + "/root/data/AlMgCu/data/init.464", + "/root/data/AlMgCu/data/init.466", + "/root/data/AlMgCu/data/init.467", + "/root/data/AlMgCu/data/init.468", + "/root/data/AlMgCu/data/init.469", + "/root/data/AlMgCu/data/init.470", + "/root/data/AlMgCu/data/init.471", + "/root/data/AlMgCu/data/init.472", + "/root/data/AlMgCu/data/init.473", + "/root/data/AlMgCu/data/init.474", + "/root/data/AlMgCu/data/init.475", + "/root/data/AlMgCu/data/init.476", + "/root/data/AlMgCu/data/init.478", + "/root/data/AlMgCu/data/init.479", + "/root/data/AlMgCu/data/init.480", + "/root/data/AlMgCu/data/init.482", + "/root/data/AlMgCu/data/init.483", + "/root/data/AlMgCu/data/init.484", + "/root/data/AlMgCu/data/init.485", + "/root/data/AlMgCu/data/init.486", + "/root/data/AlMgCu/data/init.487", + "/root/data/AlMgCu/data/init.488", + "/root/data/AlMgCu/data/init.489", + "/root/data/AlMgCu/data/init.490", + "/root/data/AlMgCu/data/init.491", + "/root/data/AlMgCu/data/init.492", + "/root/data/AlMgCu/data/init.493", + "/root/data/AlMgCu/data/init.494", + "/root/data/AlMgCu/data/init.495", + "/root/data/AlMgCu/data/init.496", + "/root/data/AlMgCu/data/init.497", + "/root/data/AlMgCu/data/init.499", + "/root/data/AlMgCu/data/init.502", + "/root/data/AlMgCu/data/init.503", + "/root/data/AlMgCu/data/init.504", + "/root/data/AlMgCu/data/init.505", + "/root/data/AlMgCu/data/init.506", + "/root/data/AlMgCu/data/init.507", + "/root/data/AlMgCu/data/init.508", + "/root/data/AlMgCu/data/init.509", + "/root/data/AlMgCu/data/init.510", + "/root/data/AlMgCu/data/init.511", + "/root/data/AlMgCu/data/init.512", + "/root/data/AlMgCu/data/init.513", + "/root/data/AlMgCu/data/init.514", + "/root/data/AlMgCu/data/init.515", + "/root/data/AlMgCu/data/init.516", + "/root/data/AlMgCu/data/init.517", + "/root/data/AlMgCu/data/init.518", + "/root/data/AlMgCu/data/init.519", + "/root/data/AlMgCu/data/init.520", + "/root/data/AlMgCu/data/init.521", + "/root/data/AlMgCu/data/init.522", + "/root/data/AlMgCu/data/init.523", + "/root/data/AlMgCu/data/init.524", + "/root/data/AlMgCu/data/init.527", + "/root/data/AlMgCu/data/init.528", + "/root/data/AlMgCu/data/init.529", + "/root/data/AlMgCu/data/init.530", + "/root/data/AlMgCu/data/init.532", + "/root/data/AlMgCu/data/init.533", + "/root/data/AlMgCu/data/init.534", + "/root/data/AlMgCu/data/init.535", + "/root/data/AlMgCu/data/init.536", + "/root/data/AlMgCu/data/init.537", + "/root/data/AlMgCu/data/init.538", + "/root/data/AlMgCu/data/init.539", + "/root/data/AlMgCu/data/init.540", + "/root/data/AlMgCu/data/init.541", + "/root/data/AlMgCu/data/init.542", + "/root/data/AlMgCu/data/init.543", + "/root/data/AlMgCu/data/init.544", + "/root/data/AlMgCu/data/init.546", + "/root/data/AlMgCu/data/init.547", + "/root/data/AlMgCu/data/init.548", + "/root/data/AlMgCu/data/init.549", + "/root/data/AlMgCu/data/init.551", + "/root/data/AlMgCu/data/init.552", + "/root/data/AlMgCu/data/init.553", + "/root/data/AlMgCu/data/init.554", + "/root/data/AlMgCu/data/init.555", + "/root/data/AlMgCu/data/init.556", + "/root/data/AlMgCu/data/init.557", + "/root/data/AlMgCu/data/init.558", + "/root/data/AlMgCu/data/init.559", + "/root/data/AlMgCu/data/init.560", + "/root/data/AlMgCu/data/init.561", + "/root/data/AlMgCu/data/init.563", + "/root/data/AlMgCu/data/init.565", + "/root/data/AlMgCu/data/init.566", + "/root/data/AlMgCu/data/init.567", + "/root/data/AlMgCu/data/init.569", + "/root/data/AlMgCu/data/init.570", + "/root/data/AlMgCu/data/init.571", + "/root/data/AlMgCu/data/init.572", + "/root/data/AlMgCu/data/init.573", + "/root/data/AlMgCu/data/init.574", + "/root/data/AlMgCu/data/init.575", + "/root/data/AlMgCu/data/init.576", + "/root/data/AlMgCu/data/init.577", + "/root/data/AlMgCu/data/init.578", + "/root/data/AlMgCu/data/init.579", + "/root/data/AlMgCu/data/init.580", + "/root/data/AlMgCu/data/init.581", + "/root/data/AlMgCu/data/init.582", + "/root/data/AlMgCu/data/init.583", + "/root/data/AlMgCu/data/init.584", + "/root/data/AlMgCu/data/init.585", + "/root/data/AlMgCu/data/init.587", + "/root/data/AlMgCu/data/init.588", + "/root/data/AlMgCu/data/init.589", + "/root/data/AlMgCu/data/init.590", + "/root/data/AlMgCu/data/init.591", + "/root/data/AlMgCu/data/init.592", + "/root/data/AlMgCu/data/init.593", + "/root/data/AlMgCu/data/init.594", + "/root/data/AlMgCu/data/init.595", + "/root/data/AlMgCu/data/init.596", + "/root/data/AlMgCu/data/init.597", + "/root/data/AlMgCu/data/init.598", + "/root/data/AlMgCu/data/init.599", + "/root/data/AlMgCu/data/init.600", + "/root/data/AlMgCu/data/init.601", + "/root/data/AlMgCu/data/init.602", + "/root/data/AlMgCu/data/init.603", + "/root/data/AlMgCu/data/init.604", + "/root/data/AlMgCu/data/init.605", + "/root/data/AlMgCu/data/init.606", + "/root/data/AlMgCu/data/init.607", + "/root/data/AlMgCu/data/init.608", + "/root/data/AlMgCu/data/init.609", + "/root/data/AlMgCu/data/init.610", + "/root/data/AlMgCu/data/init.611", + "/root/data/AlMgCu/data/init.613", + "/root/data/AlMgCu/data/init.614", + "/root/data/AlMgCu/data/init.615", + "/root/data/AlMgCu/data/init.616", + "/root/data/AlMgCu/data/init.617", + "/root/data/AlMgCu/data/init.618", + "/root/data/AlMgCu/data/init.619", + "/root/data/AlMgCu/data/init.620", + "/root/data/AlMgCu/data/init.621", + "/root/data/AlMgCu/data/init.622", + "/root/data/AlMgCu/data/init.624", + "/root/data/AlMgCu/data/init.625", + "/root/data/AlMgCu/data/init.626", + "/root/data/AlMgCu/data/init.627", + "/root/data/AlMgCu/data/init.628", + "/root/data/AlMgCu/data/init.629", + "/root/data/AlMgCu/data/init.630", + "/root/data/AlMgCu/data/init.631", + "/root/data/AlMgCu/data/init.632", + "/root/data/AlMgCu/data/init.633", + "/root/data/AlMgCu/data/init.634", + "/root/data/AlMgCu/data/init.635", + "/root/data/AlMgCu/data/init.636", + "/root/data/AlMgCu/data/init.638", + "/root/data/AlMgCu/data/init.639", + "/root/data/AlMgCu/data/init.640", + "/root/data/AlMgCu/data/init.641", + "/root/data/AlMgCu/data/init.642", + "/root/data/AlMgCu/data/init.643", + "/root/data/AlMgCu/data/init.644", + "/root/data/AlMgCu/data/init.645", + "/root/data/AlMgCu/data/init.646", + "/root/data/AlMgCu/data/init.647", + "/root/data/AlMgCu/data/init.648", + "/root/data/AlMgCu/data/init.649", + "/root/data/AlMgCu/data/init.650", + "/root/data/AlMgCu/data/init.651", + "/root/data/AlMgCu/data/init.652", + "/root/data/AlMgCu/data/init.653", + "/root/data/AlMgCu/data/init.654", + "/root/data/AlMgCu/data/init.656", + "/root/data/AlMgCu/data/init.657", + "/root/data/AlMgCu/data/init.658", + "/root/data/AlMgCu/data/init.659", + "/root/data/AlMgCu/data/init.661", + "/root/data/AlMgCu/data/init.663", + "/root/data/AlMgCu/data/init.664", + "/root/data/AlMgCu/data/init.665", + "/root/data/AlMgCu/data/init.666", + "/root/data/AlMgCu/data/init.667", + "/root/data/AlMgCu/data/init.668", + "/root/data/AlMgCu/data/init.669", + "/root/data/AlMgCu/data/init.671", + "/root/data/AlMgCu/data/init.672", + "/root/data/AlMgCu/data/init.673", + "/root/data/AlMgCu/data/init.674", + "/root/data/AlMgCu/data/init.675", + "/root/data/AlMgCu/data/init.676", + "/root/data/AlMgCu/data/init.677", + "/root/data/AlMgCu/data/init.678", + "/root/data/AlMgCu/data/init.679", + "/root/data/AlMgCu/data/init.680", + "/root/data/AlMgCu/data/init.681", + "/root/data/AlMgCu/data/init.682", + "/root/data/AlMgCu/data/init.683", + "/root/data/AlMgCu/data/init.684", + "/root/data/AlMgCu/data/init.685", + "/root/data/AlMgCu/data/init.686", + "/root/data/AlMgCu/data/init.687", + "/root/data/AlMgCu/data/init.689", + "/root/data/AlMgCu/data/init.690", + "/root/data/AlMgCu/data/init.691", + "/root/data/AlMgCu/data/init.692", + "/root/data/AlMgCu/data/init.693", + "/root/data/AlMgCu/data/init.694", + "/root/data/AlMgCu/data/init.695", + "/root/data/AlMgCu/data/init.696", + "/root/data/AlMgCu/data/init.697", + "/root/data/AlMgCu/data/init.698", + "/root/data/AlMgCu/data/init.699", + "/root/data/AlMgCu/data/init.700", + "/root/data/AlMgCu/data/init.701", + "/root/data/AlMgCu/data/init.702", + "/root/data/AlMgCu/data/init.703", + "/root/data/AlMgCu/data/init.704", + "/root/data/AlMgCu/data/init.706", + "/root/data/AlMgCu/data/init.707", + "/root/data/AlMgCu/data/init.708", + "/root/data/AlMgCu/data/init.709", + "/root/data/AlMgCu/data/init.710", + "/root/data/AlMgCu/data/init.712", + "/root/data/AlMgCu/data/init.713", + "/root/data/AlMgCu/data/init.714", + "/root/data/AlMgCu/data/init.715", + "/root/data/AlMgCu/data/init.717", + "/root/data/AlMgCu/data/init.718", + "/root/data/AlMgCu/data/init.719", + "/root/data/AlMgCu/data/init.720", + "/root/data/AlMgCu/data/init.721", + "/root/data/AlMgCu/data/init.722", + "/root/data/AlMgCu/data/init.724", + "/root/data/AlMgCu/data/init.725", + "/root/data/AlMgCu/data/init.726", + "/root/data/AlMgCu/data/init.727", + "/root/data/AlMgCu/data/init.728", + "/root/data/AlMgCu/data/init.729", + "/root/data/AlMgCu/data/init.730", + "/root/data/AlMgCu/data/init.731", + "/root/data/AlMgCu/data/init.732", + "/root/data/AlMgCu/data/init.733", + "/root/data/AlMgCu/data/init.734", + "/root/data/AlMgCu/data/init.735", + "/root/data/AlMgCu/data/init.736", + "/root/data/AlMgCu/data/init.737", + "/root/data/AlMgCu/data/init.738", + "/root/data/AlMgCu/data/init.739", + "/root/data/AlMgCu/data/init.740", + "/root/data/AlMgCu/data/init.741", + "/root/data/AlMgCu/data/init.743", + "/root/data/AlMgCu/data/init.744", + "/root/data/AlMgCu/data/init.745", + "/root/data/AlMgCu/data/init.746", + "/root/data/AlMgCu/data/init.747", + "/root/data/AlMgCu/data/init.749", + "/root/data/AlMgCu/data/init.751", + "/root/data/AlMgCu/data/init.752", + "/root/data/AlMgCu/data/init.753", + "/root/data/AlMgCu/data/init.754", + "/root/data/AlMgCu/data/init.755", + "/root/data/AlMgCu/data/init.756", + "/root/data/AlMgCu/data/init.757", + "/root/data/AlMgCu/data/init.758", + "/root/data/AlMgCu/data/init.759", + "/root/data/AlMgCu/data/init.760", + "/root/data/AlMgCu/data/init.762", + "/root/data/AlMgCu/data/init.764", + "/root/data/AlMgCu/data/init.765", + "/root/data/AlMgCu/data/init.766", + "/root/data/AlMgCu/data/init.767", + "/root/data/AlMgCu/data/init.768", + "/root/data/AlMgCu/data/init.769", + "/root/data/AlMgCu/data/init.770", + "/root/data/AlMgCu/data/init.772", + "/root/data/AlMgCu/data/init.773", + "/root/data/AlMgCu/data/init.774", + "/root/data/AlMgCu/data/init.775", + "/root/data/AlMgCu/data/init.776", + "/root/data/AlMgCu/data/init.777", + "/root/data/AlMgCu/data/init.778", + "/root/data/AlMgCu/data/init.779", + "/root/data/AlMgCu/data/init.780", + "/root/data/AlMgCu/data/init.781", + "/root/data/AlMgCu/data/init.783", + "/root/data/AlMgCu/data/init.784", + "/root/data/AlMgCu/data/init.785", + "/root/data/AlMgCu/data/init.786", + "/root/data/AlMgCu/data/init.787", + "/root/data/AlMgCu/data/init.788", + "/root/data/AlMgCu/data/init.789", + "/root/data/AlMgCu/data/init.790", + "/root/data/AlMgCu/data/init.791", + "/root/data/AlMgCu/data/init.792", + "/root/data/AlMgCu/data/init.793", + "/root/data/AlMgCu/data/init.794", + "/root/data/AlMgCu/data/init.795", + "/root/data/AlMgCu/data/init.796", + "/root/data/AlMgCu/data/init.797", + "/root/data/AlMgCu/data/init.799", + "/root/data/AlMgCu/data/init.800", + "/root/data/AlMgCu/data/init.801", + "/root/data/AlMgCu/data/init.802", + "/root/data/AlMgCu/data/init.803", + "/root/data/AlMgCu/data/init.804", + "/root/data/AlMgCu/data/init.805", + "/root/data/AlMgCu/data/init.806", + "/root/data/AlMgCu/data/init.807", + "/root/data/AlMgCu/data/init.808", + "/root/data/AlMgCu/data/init.809", + "/root/data/AlMgCu/data/init.810", + "/root/data/AlMgCu/data/init.811", + "/root/data/AlMgCu/data/init.812", + "/root/data/AlMgCu/data/init.813", + "/root/data/AlMgCu/data/init.814", + "/root/data/AlMgCu/data/init.816", + "/root/data/AlMgCu/data/init.817", + "/root/data/AlMgCu/data/init.819", + "/root/data/AlMgCu/data/init.820", + "/root/data/AlMgCu/data/init.821", + "/root/data/AlMgCu/data/init.822", + "/root/data/AlMgCu/data/init.824", + "/root/data/AlMgCu/data/init.825", + "/root/data/AlMgCu/data/init.826", + "/root/data/AlMgCu/data/init.827", + "/root/data/AlMgCu/data/init.830", + "/root/data/AlMgCu/data/init.832", + "/root/data/AlMgCu/data/init.833", + "/root/data/AlMgCu/data/init.834", + "/root/data/AlMgCu/data/init.835", + "/root/data/AlMgCu/data/init.836", + "/root/data/AlMgCu/data/init.837", + "/root/data/AlMgCu/data/init.838", + "/root/data/AlMgCu/data/init.839", + "/root/data/AlMgCu/data/init.840", + "/root/data/AlMgCu/data/init.842", + "/root/data/AlMgCu/data/init.843", + "/root/data/AlMgCu/data/init.844", + "/root/data/AlMgCu/data/init.845", + "/root/data/AlMgCu/data/init.847", + "/root/data/AlMgCu/data/init.848", + "/root/data/AlMgCu/data/init.849", + "/root/data/AlMgCu/data/init.850", + "/root/data/AlMgCu/data/init.851", + "/root/data/AlMgCu/data/init.852", + "/root/data/AlMgCu/data/init.853", + "/root/data/AlMgCu/data/init.854", + "/root/data/AlMgCu/data/init.855", + "/root/data/AlMgCu/data/init.856", + "/root/data/AlMgCu/data/init.857", + "/root/data/AlMgCu/data/init.858", + "/root/data/AlMgCu/data/init.859", + "/root/data/AlMgCu/data/init.860", + "/root/data/AlMgCu/data/init.862", + "/root/data/AlMgCu/data/init.863", + "/root/data/AlMgCu/data/init.864", + "/root/data/AlMgCu/data/init.865", + "/root/data/AlMgCu/data/init.866", + "/root/data/AlMgCu/data/init.867", + "/root/data/AlMgCu/data/init.868", + "/root/data/AlMgCu/data/init.869", + "/root/data/AlMgCu/data/init.870", + "/root/data/AlMgCu/data/init.871", + "/root/data/AlMgCu/data/init.872", + "/root/data/AlMgCu/data/init.873", + "/root/data/AlMgCu/data/init.874", + "/root/data/AlMgCu/data/init.875", + "/root/data/AlMgCu/data/init.876", + "/root/data/AlMgCu/data/init.877", + "/root/data/AlMgCu/data/init.879", + "/root/data/AlMgCu/data/init.880", + "/root/data/AlMgCu/data/init.881", + "/root/data/AlMgCu/data/init.882", + "/root/data/AlMgCu/data/init.883", + "/root/data/AlMgCu/data/init.884", + "/root/data/AlMgCu/data/init.885", + "/root/data/AlMgCu/data/init.886", + "/root/data/AlMgCu/data/init.887", + "/root/data/AlMgCu/data/init.888", + "/root/data/AlMgCu/data/init.889", + "/root/data/AlMgCu/data/init.890", + "/root/data/AlMgCu/data/init.891", + "/root/data/AlMgCu/data/init.892", + "/root/data/AlMgCu/data/init.894", + "/root/data/AlMgCu/data/init.895", + "/root/data/AlMgCu/data/init.896", + "/root/data/AlMgCu/data/init.897", + "/root/data/AlMgCu/data/init.898", + "/root/data/AlMgCu/data/init.899", + "/root/data/AlMgCu/data/init.900", + "/root/data/AlMgCu/data/init.901", + "/root/data/AlMgCu/data/init.902", + "/root/data/AlMgCu/data/init.903", + "/root/data/AlMgCu/data/init.905", + "/root/data/AlMgCu/data/init.906", + "/root/data/AlMgCu/data/init.907", + "/root/data/AlMgCu/data/init.908", + "/root/data/AlMgCu/data/init.910", + "/root/data/AlMgCu/data/init.911", + "/root/data/AlMgCu/data/init.912", + "/root/data/AlMgCu/data/init.913", + "/root/data/AlMgCu/data/init.914", + "/root/data/AlMgCu/data/init.915", + "/root/data/AlMgCu/data/init.916", + "/root/data/AlMgCu/data/init.917", + "/root/data/AlMgCu/data/init.918", + "/root/data/AlMgCu/data/init.919", + "/root/data/AlMgCu/data/init.922", + "/root/data/AlMgCu/data/init.923", + "/root/data/AlMgCu/data/init.924", + "/root/data/AlMgCu/data/init.925", + "/root/data/AlMgCu/data/init.926", + "/root/data/AlMgCu/data/init.927", + "/root/data/AlMgCu/data/init.928", + "/root/data/AlMgCu/data/init.929", + "/root/data/AlMgCu/data/init.930", + "/root/data/AlMgCu/data/init.931", + "/root/data/AlMgCu/data/init.933", + "/root/data/AlMgCu/data/init.934", + "/root/data/AlMgCu/data/init.935", + "/root/data/AlMgCu/data/init.937", + "/root/data/AlMgCu/data/init.938", + "/root/data/AlMgCu/data/init.939", + "/root/data/AlMgCu/data/init.940", + "/root/data/AlMgCu/data/init.941", + "/root/data/AlMgCu/data/init.942", + "/root/data/AlMgCu/data/init.943", + "/root/data/AlMgCu/data/init.944", + "/root/data/AlMgCu/data/init.945", + "/root/data/AlMgCu/data/init.946", + "/root/data/AlMgCu/data/init.947", + "/root/data/AlMgCu/data/init.948", + "/root/data/AlMgCu/data/init.949", + "/root/data/AlMgCu/data/init.950", + "/root/data/AlMgCu/data/init.951", + "/root/data/AlMgCu/data/init.952", + "/root/data/AlMgCu/data/init.953", + "/root/data/AlMgCu/data/init.955", + "/root/data/AlMgCu/data/init.956", + "/root/data/AlMgCu/data/init.957", + "/root/data/AlMgCu/data/init.958", + "/root/data/AlMgCu/data/init.959", + "/root/data/AlMgCu/data/init.960", + "/root/data/AlMgCu/data/init.961", + "/root/data/AlMgCu/data/init.962", + "/root/data/AlMgCu/data/init.963", + "/root/data/AlMgCu/data/init.964", + "/root/data/AlMgCu/data/init.965", + "/root/data/AlMgCu/data/init.966", + "/root/data/AlMgCu/data/init.967", + "/root/data/AlMgCu/data/init.968", + "/root/data/AlMgCu/data/init.969", + "/root/data/AlMgCu/data/init.970", + "/root/data/AlMgCu/data/init.971", + "/root/data/AlMgCu/data/init.972", + "/root/data/AlMgCu/data/init.973", + "/root/data/AlMgCu/data/init.974", + "/root/data/AlMgCu/data/init.975", + "/root/data/AlMgCu/data/init.977", + "/root/data/AlMgCu/data/init.978", + "/root/data/AlMgCu/data/init.979", + "/root/data/AlMgCu/data/init.980", + "/root/data/AlMgCu/data/init.981", + "/root/data/AlMgCu/data/init.982", + "/root/data/AlMgCu/data/init.983", + "/root/data/AlMgCu/data/init.984", + "/root/data/AlMgCu/data/init.985", + "/root/data/AlMgCu/data/init.986", + "/root/data/AlMgCu/data/init.987", + "/root/data/AlMgCu/data/init.988", + "/root/data/AlMgCu/data/init.989", + "/root/data/AlMgCu/data/init.990", + "/root/data/AlMgCu/data/init.991", + "/root/data/AlMgCu/data/init.993", + "/root/data/AlMgCu/data/init.994", + "/root/data/AlMgCu/data/init.995", + "/root/data/AlMgCu/data/init.996", + "/root/data/AlMgCu/data/init.997", + "/root/data/AlMgCu/data/init.999", + "/root/data/AlMgCu/data/sys.000", + "/root/data/AlMgCu/data/sys.001", + "/root/data/AlMgCu/data/sys.002", + "/root/data/AlMgCu/data/sys.004", + "/root/data/AlMgCu/data/sys.006", + "/root/data/AlMgCu/data/sys.007", + "/root/data/AlMgCu/data/sys.008", + "/root/data/AlMgCu/data/sys.010", + "/root/data/AlMgCu/data/sys.011", + "/root/data/AlMgCu/data/sys.012", + "/root/data/AlMgCu/data/sys.015", + "/root/data/AlMgCu/data/sys.016", + "/root/data/AlMgCu/data/sys.017", + "/root/data/AlMgCu/data/sys.018", + "/root/data/AlMgCu/data/sys.019", + "/root/data/AlMgCu/data/sys.020", + "/root/data/AlMgCu/data/sys.021", + "/root/data/AlMgCu/data/sys.022", + "/root/data/AlMgCu/data/sys.023", + "/root/data/AlMgCu/data/sys.026", + "/root/data/AlMgCu/data/sys.027", + "/root/data/AlMgCu/data/sys.028", + "/root/data/AlMgCu/data/sys.029", + "/root/data/AlMgCu/data/sys.030", + "/root/data/AlMgCu/data/sys.031", + "/root/data/AlMgCu/data/sys.032", + "/root/data/AlMgCu/data/sys.033", + "/root/data/AlMgCu/data/sys.034", + "/root/data/AlMgCu/data/sys.036", + "/root/data/AlMgCu/data/sys.037", + "/root/data/AlMgCu/data/sys.038", + "/root/data/AlMgCu/data/sys.039", + "/root/data/AlMgCu/data/sys.040", + "/root/data/AlMgCu/data/sys.041", + "/root/data/AlMgCu/data/sys.042", + "/root/data/AlMgCu/data/sys.043", + "/root/data/AlMgCu/data/sys.044", + "/root/data/AlMgCu/data/sys.045", + "/root/data/AlMgCu/data/sys.046", + "/root/data/AlMgCu/data/sys.048", + "/root/data/AlMgCu/data/sys.049", + "/root/data/AlMgCu/data/sys.050", + "/root/data/AlMgCu/data/sys.051", + "/root/data/AlMgCu/data/sys.052", + "/root/data/AlMgCu/data/sys.053", + "/root/data/AlMgCu/data/sys.054", + "/root/data/AlMgCu/data/sys.055", + "/root/data/AlMgCu/data/sys.056", + "/root/data/AlMgCu/data/sys.057", + "/root/data/AlMgCu/data/sys.058", + "/root/data/AlMgCu/data/sys.059", + "/root/data/AlMgCu/data/sys.060", + "/root/data/AlMgCu/data/sys.061", + "/root/data/AlMgCu/data/sys.062", + "/root/data/AlMgCu/data/sys.063", + "/root/data/AlMgCu/data/sys.064", + "/root/data/AlMgCu/data/sys.065", + "/root/data/AlMgCu/data/sys.066", + "/root/data/AlMgCu/data/sys.067", + "/root/data/AlMgCu/data/sys.070", + "/root/data/AlMgCu/data/sys.071", + "/root/data/AlMgCu/data/sys.072", + "/root/data/AlMgCu/data/sys.073", + "/root/data/AlMgCu/data/sys.074", + "/root/data/AlMgCu/data/sys.075", + "/root/data/AlMgCu/data/sys.076", + "/root/data/AlMgCu/data/sys.077", + "/root/data/AlMgCu/data/sys.078", + "/root/data/AlMgCu/data/sys.079", + "/root/data/AlMgCu/data/sys.080", + "/root/data/AlMgCu/data/sys.081", + "/root/data/AlMgCu/data/sys.082", + "/root/data/AlMgCu/data/sys.083", + "/root/data/AlMgCu/data/sys.084", + "/root/data/AlMgCu/data/sys.085", + "/root/data/AlMgCu/data/sys.086", + "/root/data/AlMgCu/data/sys.087", + "/root/data/AlMgCu/data/sys.088", + "/root/data/AlMgCu/data/sys.089", + "/root/data/AlMgCu/data/sys.090", + "/root/data/AlMgCu/data/sys.092", + "/root/data/AlMgCu/data/sys.093", + "/root/data/AlMgCu/data/sys.094", + "/root/data/AlMgCu/data/sys.095", + "/root/data/AlMgCu/data/sys.097", + "/root/data/AlMgCu/data/sys.098", + "/root/data/AlMgCu/data/sys.099", + "/root/data/AlMgCu/data/sys.100", + "/root/data/AlMgCu/data/sys.1000", + "/root/data/AlMgCu/data/sys.10004", + "/root/data/AlMgCu/data/sys.10006", + "/root/data/AlMgCu/data/sys.1001", + "/root/data/AlMgCu/data/sys.10010", + "/root/data/AlMgCu/data/sys.10012", + "/root/data/AlMgCu/data/sys.10018", + "/root/data/AlMgCu/data/sys.1002", + "/root/data/AlMgCu/data/sys.10024", + "/root/data/AlMgCu/data/sys.10026", + "/root/data/AlMgCu/data/sys.10027", + "/root/data/AlMgCu/data/sys.10028", + "/root/data/AlMgCu/data/sys.10029", + "/root/data/AlMgCu/data/sys.1003", + "/root/data/AlMgCu/data/sys.10030", + "/root/data/AlMgCu/data/sys.10034", + "/root/data/AlMgCu/data/sys.10035", + "/root/data/AlMgCu/data/sys.10036", + "/root/data/AlMgCu/data/sys.1004", + "/root/data/AlMgCu/data/sys.10042", + "/root/data/AlMgCu/data/sys.10044", + "/root/data/AlMgCu/data/sys.10046", + "/root/data/AlMgCu/data/sys.1005", + "/root/data/AlMgCu/data/sys.10050", + "/root/data/AlMgCu/data/sys.10052", + "/root/data/AlMgCu/data/sys.10056", + "/root/data/AlMgCu/data/sys.10058", + "/root/data/AlMgCu/data/sys.1006", + "/root/data/AlMgCu/data/sys.10060", + "/root/data/AlMgCu/data/sys.10064", + "/root/data/AlMgCu/data/sys.1007", + "/root/data/AlMgCu/data/sys.10073", + "/root/data/AlMgCu/data/sys.1008", + "/root/data/AlMgCu/data/sys.10082", + "/root/data/AlMgCu/data/sys.10083", + "/root/data/AlMgCu/data/sys.10084", + "/root/data/AlMgCu/data/sys.1009", + "/root/data/AlMgCu/data/sys.10090", + "/root/data/AlMgCu/data/sys.10091", + "/root/data/AlMgCu/data/sys.10092", + "/root/data/AlMgCu/data/sys.10098", + "/root/data/AlMgCu/data/sys.101", + "/root/data/AlMgCu/data/sys.1010", + "/root/data/AlMgCu/data/sys.10100", + "/root/data/AlMgCu/data/sys.10105", + "/root/data/AlMgCu/data/sys.10106", + "/root/data/AlMgCu/data/sys.1011", + "/root/data/AlMgCu/data/sys.10112", + "/root/data/AlMgCu/data/sys.10114", + "/root/data/AlMgCu/data/sys.10115", + "/root/data/AlMgCu/data/sys.10116", + "/root/data/AlMgCu/data/sys.1012", + "/root/data/AlMgCu/data/sys.10121", + "/root/data/AlMgCu/data/sys.10122", + "/root/data/AlMgCu/data/sys.10128", + "/root/data/AlMgCu/data/sys.1013", + "/root/data/AlMgCu/data/sys.10138", + "/root/data/AlMgCu/data/sys.1014", + "/root/data/AlMgCu/data/sys.10144", + "/root/data/AlMgCu/data/sys.10145", + "/root/data/AlMgCu/data/sys.10146", + "/root/data/AlMgCu/data/sys.10148", + "/root/data/AlMgCu/data/sys.1015", + "/root/data/AlMgCu/data/sys.10154", + "/root/data/AlMgCu/data/sys.10155", + "/root/data/AlMgCu/data/sys.1016", + "/root/data/AlMgCu/data/sys.10160", + "/root/data/AlMgCu/data/sys.10162", + "/root/data/AlMgCu/data/sys.10163", + "/root/data/AlMgCu/data/sys.1017", + "/root/data/AlMgCu/data/sys.10170", + "/root/data/AlMgCu/data/sys.10174", + "/root/data/AlMgCu/data/sys.10176", + "/root/data/AlMgCu/data/sys.10178", + "/root/data/AlMgCu/data/sys.1018", + "/root/data/AlMgCu/data/sys.1019", + "/root/data/AlMgCu/data/sys.10193", + "/root/data/AlMgCu/data/sys.10194", + "/root/data/AlMgCu/data/sys.10196", + "/root/data/AlMgCu/data/sys.1020", + "/root/data/AlMgCu/data/sys.10202", + "/root/data/AlMgCu/data/sys.1021", + "/root/data/AlMgCu/data/sys.10210", + "/root/data/AlMgCu/data/sys.10211", + "/root/data/AlMgCu/data/sys.10218", + "/root/data/AlMgCu/data/sys.1022", + "/root/data/AlMgCu/data/sys.10226", + "/root/data/AlMgCu/data/sys.1023", + "/root/data/AlMgCu/data/sys.10233", + "/root/data/AlMgCu/data/sys.10236", + "/root/data/AlMgCu/data/sys.1024", + "/root/data/AlMgCu/data/sys.10244", + "/root/data/AlMgCu/data/sys.10248", + "/root/data/AlMgCu/data/sys.1025", + "/root/data/AlMgCu/data/sys.10250", + "/root/data/AlMgCu/data/sys.10253", + "/root/data/AlMgCu/data/sys.10258", + "/root/data/AlMgCu/data/sys.1026", + "/root/data/AlMgCu/data/sys.10260", + "/root/data/AlMgCu/data/sys.10268", + "/root/data/AlMgCu/data/sys.1027", + "/root/data/AlMgCu/data/sys.10274", + "/root/data/AlMgCu/data/sys.10282", + "/root/data/AlMgCu/data/sys.10289", + "/root/data/AlMgCu/data/sys.1029", + "/root/data/AlMgCu/data/sys.10296", + "/root/data/AlMgCu/data/sys.10298", + "/root/data/AlMgCu/data/sys.103", + "/root/data/AlMgCu/data/sys.1030", + "/root/data/AlMgCu/data/sys.10306", + "/root/data/AlMgCu/data/sys.10308", + "/root/data/AlMgCu/data/sys.1031", + "/root/data/AlMgCu/data/sys.10314", + "/root/data/AlMgCu/data/sys.1032", + "/root/data/AlMgCu/data/sys.10322", + "/root/data/AlMgCu/data/sys.10324", + "/root/data/AlMgCu/data/sys.10329", + "/root/data/AlMgCu/data/sys.1033", + "/root/data/AlMgCu/data/sys.10330", + "/root/data/AlMgCu/data/sys.1034", + "/root/data/AlMgCu/data/sys.1035", + "/root/data/AlMgCu/data/sys.10356", + "/root/data/AlMgCu/data/sys.1036", + "/root/data/AlMgCu/data/sys.10368", + "/root/data/AlMgCu/data/sys.1037", + "/root/data/AlMgCu/data/sys.10370", + "/root/data/AlMgCu/data/sys.10372", + "/root/data/AlMgCu/data/sys.1038", + "/root/data/AlMgCu/data/sys.1039", + "/root/data/AlMgCu/data/sys.10394", + "/root/data/AlMgCu/data/sys.10396", + "/root/data/AlMgCu/data/sys.104", + "/root/data/AlMgCu/data/sys.10402", + "/root/data/AlMgCu/data/sys.10404", + "/root/data/AlMgCu/data/sys.10408", + "/root/data/AlMgCu/data/sys.1041", + "/root/data/AlMgCu/data/sys.10410", + "/root/data/AlMgCu/data/sys.1042", + "/root/data/AlMgCu/data/sys.1043", + "/root/data/AlMgCu/data/sys.1044", + "/root/data/AlMgCu/data/sys.1045", + "/root/data/AlMgCu/data/sys.10450", + "/root/data/AlMgCu/data/sys.1046", + "/root/data/AlMgCu/data/sys.1047", + "/root/data/AlMgCu/data/sys.1048", + "/root/data/AlMgCu/data/sys.10483", + "/root/data/AlMgCu/data/sys.10484", + "/root/data/AlMgCu/data/sys.1049", + "/root/data/AlMgCu/data/sys.10490", + "/root/data/AlMgCu/data/sys.105", + "/root/data/AlMgCu/data/sys.1050", + "/root/data/AlMgCu/data/sys.1051", + "/root/data/AlMgCu/data/sys.1052", + "/root/data/AlMgCu/data/sys.1053", + "/root/data/AlMgCu/data/sys.10536", + "/root/data/AlMgCu/data/sys.1054", + "/root/data/AlMgCu/data/sys.10544", + "/root/data/AlMgCu/data/sys.10554", + "/root/data/AlMgCu/data/sys.1056", + "/root/data/AlMgCu/data/sys.10588", + "/root/data/AlMgCu/data/sys.1059", + "/root/data/AlMgCu/data/sys.10592", + "/root/data/AlMgCu/data/sys.106", + "/root/data/AlMgCu/data/sys.1060", + "/root/data/AlMgCu/data/sys.10602", + "/root/data/AlMgCu/data/sys.10604", + "/root/data/AlMgCu/data/sys.1061", + "/root/data/AlMgCu/data/sys.10612", + "/root/data/AlMgCu/data/sys.1062", + "/root/data/AlMgCu/data/sys.10626", + "/root/data/AlMgCu/data/sys.1063", + "/root/data/AlMgCu/data/sys.10636", + "/root/data/AlMgCu/data/sys.1064", + "/root/data/AlMgCu/data/sys.1065", + "/root/data/AlMgCu/data/sys.1066", + "/root/data/AlMgCu/data/sys.1067", + "/root/data/AlMgCu/data/sys.10676", + "/root/data/AlMgCu/data/sys.1068", + "/root/data/AlMgCu/data/sys.1069", + "/root/data/AlMgCu/data/sys.107", + "/root/data/AlMgCu/data/sys.1070", + "/root/data/AlMgCu/data/sys.10702", + "/root/data/AlMgCu/data/sys.1071", + "/root/data/AlMgCu/data/sys.1072", + "/root/data/AlMgCu/data/sys.1073", + "/root/data/AlMgCu/data/sys.1074", + "/root/data/AlMgCu/data/sys.1075", + "/root/data/AlMgCu/data/sys.1076", + "/root/data/AlMgCu/data/sys.1078", + "/root/data/AlMgCu/data/sys.1079", + "/root/data/AlMgCu/data/sys.108", + "/root/data/AlMgCu/data/sys.1080", + "/root/data/AlMgCu/data/sys.1082", + "/root/data/AlMgCu/data/sys.1083", + "/root/data/AlMgCu/data/sys.1084", + "/root/data/AlMgCu/data/sys.1085", + "/root/data/AlMgCu/data/sys.1086", + "/root/data/AlMgCu/data/sys.1087", + "/root/data/AlMgCu/data/sys.1088", + "/root/data/AlMgCu/data/sys.1089", + "/root/data/AlMgCu/data/sys.10895", + "/root/data/AlMgCu/data/sys.10898", + "/root/data/AlMgCu/data/sys.109", + "/root/data/AlMgCu/data/sys.1090", + "/root/data/AlMgCu/data/sys.10900", + "/root/data/AlMgCu/data/sys.10904", + "/root/data/AlMgCu/data/sys.10905", + "/root/data/AlMgCu/data/sys.10906", + "/root/data/AlMgCu/data/sys.10907", + "/root/data/AlMgCu/data/sys.10909", + "/root/data/AlMgCu/data/sys.1091", + "/root/data/AlMgCu/data/sys.10910", + "/root/data/AlMgCu/data/sys.10912", + "/root/data/AlMgCu/data/sys.10914", + "/root/data/AlMgCu/data/sys.10916", + "/root/data/AlMgCu/data/sys.1092", + "/root/data/AlMgCu/data/sys.10920", + "/root/data/AlMgCu/data/sys.10921", + "/root/data/AlMgCu/data/sys.10922", + "/root/data/AlMgCu/data/sys.10924", + "/root/data/AlMgCu/data/sys.10926", + "/root/data/AlMgCu/data/sys.10929", + "/root/data/AlMgCu/data/sys.10930", + "/root/data/AlMgCu/data/sys.10932", + "/root/data/AlMgCu/data/sys.10933", + "/root/data/AlMgCu/data/sys.10936", + "/root/data/AlMgCu/data/sys.10938", + "/root/data/AlMgCu/data/sys.10939", + "/root/data/AlMgCu/data/sys.1094", + "/root/data/AlMgCu/data/sys.10941", + "/root/data/AlMgCu/data/sys.10942", + "/root/data/AlMgCu/data/sys.10944", + "/root/data/AlMgCu/data/sys.10945", + "/root/data/AlMgCu/data/sys.10946", + "/root/data/AlMgCu/data/sys.10947", + "/root/data/AlMgCu/data/sys.1095", + "/root/data/AlMgCu/data/sys.10950", + "/root/data/AlMgCu/data/sys.10952", + "/root/data/AlMgCu/data/sys.10956", + "/root/data/AlMgCu/data/sys.10957", + "/root/data/AlMgCu/data/sys.10960", + "/root/data/AlMgCu/data/sys.10961", + "/root/data/AlMgCu/data/sys.10962", + "/root/data/AlMgCu/data/sys.10964", + "/root/data/AlMgCu/data/sys.10966", + "/root/data/AlMgCu/data/sys.10968", + "/root/data/AlMgCu/data/sys.10969", + "/root/data/AlMgCu/data/sys.1097", + "/root/data/AlMgCu/data/sys.10970", + "/root/data/AlMgCu/data/sys.10972", + "/root/data/AlMgCu/data/sys.10977", + "/root/data/AlMgCu/data/sys.1098", + "/root/data/AlMgCu/data/sys.10980", + "/root/data/AlMgCu/data/sys.10985", + "/root/data/AlMgCu/data/sys.10986", + "/root/data/AlMgCu/data/sys.10989", + "/root/data/AlMgCu/data/sys.1099", + "/root/data/AlMgCu/data/sys.10993", + "/root/data/AlMgCu/data/sys.10994", + "/root/data/AlMgCu/data/sys.10995", + "/root/data/AlMgCu/data/sys.10996", + "/root/data/AlMgCu/data/sys.10998", + "/root/data/AlMgCu/data/sys.110", + "/root/data/AlMgCu/data/sys.1100", + "/root/data/AlMgCu/data/sys.11000", + "/root/data/AlMgCu/data/sys.11001", + "/root/data/AlMgCu/data/sys.11002", + "/root/data/AlMgCu/data/sys.11006", + "/root/data/AlMgCu/data/sys.11008", + "/root/data/AlMgCu/data/sys.11009", + "/root/data/AlMgCu/data/sys.1101", + "/root/data/AlMgCu/data/sys.11010", + "/root/data/AlMgCu/data/sys.11016", + "/root/data/AlMgCu/data/sys.11018", + "/root/data/AlMgCu/data/sys.1102", + "/root/data/AlMgCu/data/sys.11020", + "/root/data/AlMgCu/data/sys.11024", + "/root/data/AlMgCu/data/sys.11028", + "/root/data/AlMgCu/data/sys.11029", + "/root/data/AlMgCu/data/sys.1103", + "/root/data/AlMgCu/data/sys.11033", + "/root/data/AlMgCu/data/sys.11034", + "/root/data/AlMgCu/data/sys.11035", + "/root/data/AlMgCu/data/sys.11036", + "/root/data/AlMgCu/data/sys.11037", + "/root/data/AlMgCu/data/sys.11038", + "/root/data/AlMgCu/data/sys.1104", + "/root/data/AlMgCu/data/sys.11042", + "/root/data/AlMgCu/data/sys.11044", + "/root/data/AlMgCu/data/sys.11048", + "/root/data/AlMgCu/data/sys.11049", + "/root/data/AlMgCu/data/sys.1105", + "/root/data/AlMgCu/data/sys.11056", + "/root/data/AlMgCu/data/sys.11057", + "/root/data/AlMgCu/data/sys.11058", + "/root/data/AlMgCu/data/sys.1106", + "/root/data/AlMgCu/data/sys.11060", + "/root/data/AlMgCu/data/sys.11062", + "/root/data/AlMgCu/data/sys.11064", + "/root/data/AlMgCu/data/sys.11065", + "/root/data/AlMgCu/data/sys.11066", + "/root/data/AlMgCu/data/sys.11068", + "/root/data/AlMgCu/data/sys.11069", + "/root/data/AlMgCu/data/sys.1107", + "/root/data/AlMgCu/data/sys.11076", + "/root/data/AlMgCu/data/sys.11077", + "/root/data/AlMgCu/data/sys.1108", + "/root/data/AlMgCu/data/sys.11080", + "/root/data/AlMgCu/data/sys.11081", + "/root/data/AlMgCu/data/sys.11082", + "/root/data/AlMgCu/data/sys.11088", + "/root/data/AlMgCu/data/sys.11090", + "/root/data/AlMgCu/data/sys.11096", + "/root/data/AlMgCu/data/sys.11097", + "/root/data/AlMgCu/data/sys.11098", + "/root/data/AlMgCu/data/sys.11099", + "/root/data/AlMgCu/data/sys.111", + "/root/data/AlMgCu/data/sys.1110", + "/root/data/AlMgCu/data/sys.11104", + "/root/data/AlMgCu/data/sys.11105", + "/root/data/AlMgCu/data/sys.11106", + "/root/data/AlMgCu/data/sys.11107", + "/root/data/AlMgCu/data/sys.11108", + "/root/data/AlMgCu/data/sys.1111", + "/root/data/AlMgCu/data/sys.11114", + "/root/data/AlMgCu/data/sys.1112", + "/root/data/AlMgCu/data/sys.11121", + "/root/data/AlMgCu/data/sys.11122", + "/root/data/AlMgCu/data/sys.11128", + "/root/data/AlMgCu/data/sys.1113", + "/root/data/AlMgCu/data/sys.11132", + "/root/data/AlMgCu/data/sys.11133", + "/root/data/AlMgCu/data/sys.11134", + "/root/data/AlMgCu/data/sys.11136", + "/root/data/AlMgCu/data/sys.11137", + "/root/data/AlMgCu/data/sys.11139", + "/root/data/AlMgCu/data/sys.1114", + "/root/data/AlMgCu/data/sys.11144", + "/root/data/AlMgCu/data/sys.11146", + "/root/data/AlMgCu/data/sys.1115", + "/root/data/AlMgCu/data/sys.11152", + "/root/data/AlMgCu/data/sys.11154", + "/root/data/AlMgCu/data/sys.1116", + "/root/data/AlMgCu/data/sys.11160", + "/root/data/AlMgCu/data/sys.11162", + "/root/data/AlMgCu/data/sys.1117", + "/root/data/AlMgCu/data/sys.11170", + "/root/data/AlMgCu/data/sys.11176", + "/root/data/AlMgCu/data/sys.11177", + "/root/data/AlMgCu/data/sys.11184", + "/root/data/AlMgCu/data/sys.11192", + "/root/data/AlMgCu/data/sys.11193", + "/root/data/AlMgCu/data/sys.11196", + "/root/data/AlMgCu/data/sys.112", + "/root/data/AlMgCu/data/sys.1120", + "/root/data/AlMgCu/data/sys.11202", + "/root/data/AlMgCu/data/sys.11204", + "/root/data/AlMgCu/data/sys.11208", + "/root/data/AlMgCu/data/sys.1121", + "/root/data/AlMgCu/data/sys.11216", + "/root/data/AlMgCu/data/sys.11218", + "/root/data/AlMgCu/data/sys.11219", + "/root/data/AlMgCu/data/sys.1122", + "/root/data/AlMgCu/data/sys.11222", + "/root/data/AlMgCu/data/sys.11226", + "/root/data/AlMgCu/data/sys.1123", + "/root/data/AlMgCu/data/sys.11232", + "/root/data/AlMgCu/data/sys.1124", + "/root/data/AlMgCu/data/sys.11240", + "/root/data/AlMgCu/data/sys.11242", + "/root/data/AlMgCu/data/sys.11248", + "/root/data/AlMgCu/data/sys.11249", + "/root/data/AlMgCu/data/sys.1125", + "/root/data/AlMgCu/data/sys.11256", + "/root/data/AlMgCu/data/sys.11258", + "/root/data/AlMgCu/data/sys.1126", + "/root/data/AlMgCu/data/sys.11265", + "/root/data/AlMgCu/data/sys.1127", + "/root/data/AlMgCu/data/sys.11273", + "/root/data/AlMgCu/data/sys.1128", + "/root/data/AlMgCu/data/sys.11280", + "/root/data/AlMgCu/data/sys.11288", + "/root/data/AlMgCu/data/sys.11289", + "/root/data/AlMgCu/data/sys.1129", + "/root/data/AlMgCu/data/sys.11292", + "/root/data/AlMgCu/data/sys.11296", + "/root/data/AlMgCu/data/sys.113", + "/root/data/AlMgCu/data/sys.1130", + "/root/data/AlMgCu/data/sys.11304", + "/root/data/AlMgCu/data/sys.11308", + "/root/data/AlMgCu/data/sys.1131", + "/root/data/AlMgCu/data/sys.11312", + "/root/data/AlMgCu/data/sys.11313", + "/root/data/AlMgCu/data/sys.1132", + "/root/data/AlMgCu/data/sys.11320", + "/root/data/AlMgCu/data/sys.11328", + "/root/data/AlMgCu/data/sys.1133", + "/root/data/AlMgCu/data/sys.11332", + "/root/data/AlMgCu/data/sys.11337", + "/root/data/AlMgCu/data/sys.1134", + "/root/data/AlMgCu/data/sys.1135", + "/root/data/AlMgCu/data/sys.11352", + "/root/data/AlMgCu/data/sys.11353", + "/root/data/AlMgCu/data/sys.11354", + "/root/data/AlMgCu/data/sys.1136", + "/root/data/AlMgCu/data/sys.11362", + "/root/data/AlMgCu/data/sys.1137", + "/root/data/AlMgCu/data/sys.11372", + "/root/data/AlMgCu/data/sys.11376", + "/root/data/AlMgCu/data/sys.1138", + "/root/data/AlMgCu/data/sys.11386", + "/root/data/AlMgCu/data/sys.1139", + "/root/data/AlMgCu/data/sys.11392", + "/root/data/AlMgCu/data/sys.114", + "/root/data/AlMgCu/data/sys.1140", + "/root/data/AlMgCu/data/sys.1141", + "/root/data/AlMgCu/data/sys.1143", + "/root/data/AlMgCu/data/sys.1144", + "/root/data/AlMgCu/data/sys.1145", + "/root/data/AlMgCu/data/sys.1146", + "/root/data/AlMgCu/data/sys.1147", + "/root/data/AlMgCu/data/sys.1148", + "/root/data/AlMgCu/data/sys.1149", + "/root/data/AlMgCu/data/sys.115", + "/root/data/AlMgCu/data/sys.1150", + "/root/data/AlMgCu/data/sys.1151", + "/root/data/AlMgCu/data/sys.1152", + "/root/data/AlMgCu/data/sys.1154", + "/root/data/AlMgCu/data/sys.1155", + "/root/data/AlMgCu/data/sys.1157", + "/root/data/AlMgCu/data/sys.1158", + "/root/data/AlMgCu/data/sys.1159", + "/root/data/AlMgCu/data/sys.116", + "/root/data/AlMgCu/data/sys.1160", + "/root/data/AlMgCu/data/sys.1161", + "/root/data/AlMgCu/data/sys.1162", + "/root/data/AlMgCu/data/sys.1163", + "/root/data/AlMgCu/data/sys.1164", + "/root/data/AlMgCu/data/sys.1165", + "/root/data/AlMgCu/data/sys.1166", + "/root/data/AlMgCu/data/sys.1167", + "/root/data/AlMgCu/data/sys.1168", + "/root/data/AlMgCu/data/sys.1169", + "/root/data/AlMgCu/data/sys.117", + "/root/data/AlMgCu/data/sys.1170", + "/root/data/AlMgCu/data/sys.1171", + "/root/data/AlMgCu/data/sys.1172", + "/root/data/AlMgCu/data/sys.1173", + "/root/data/AlMgCu/data/sys.1174", + "/root/data/AlMgCu/data/sys.1175", + "/root/data/AlMgCu/data/sys.1176", + "/root/data/AlMgCu/data/sys.1177", + "/root/data/AlMgCu/data/sys.1178", + "/root/data/AlMgCu/data/sys.1179", + "/root/data/AlMgCu/data/sys.118", + "/root/data/AlMgCu/data/sys.1180", + "/root/data/AlMgCu/data/sys.1183", + "/root/data/AlMgCu/data/sys.1184", + "/root/data/AlMgCu/data/sys.1185", + "/root/data/AlMgCu/data/sys.1186", + "/root/data/AlMgCu/data/sys.1187", + "/root/data/AlMgCu/data/sys.1188", + "/root/data/AlMgCu/data/sys.119", + "/root/data/AlMgCu/data/sys.1191", + "/root/data/AlMgCu/data/sys.1193", + "/root/data/AlMgCu/data/sys.1194", + "/root/data/AlMgCu/data/sys.1195", + "/root/data/AlMgCu/data/sys.1198", + "/root/data/AlMgCu/data/sys.1199", + "/root/data/AlMgCu/data/sys.1200", + "/root/data/AlMgCu/data/sys.1201", + "/root/data/AlMgCu/data/sys.1202", + "/root/data/AlMgCu/data/sys.1203", + "/root/data/AlMgCu/data/sys.1204", + "/root/data/AlMgCu/data/sys.1205", + "/root/data/AlMgCu/data/sys.1206", + "/root/data/AlMgCu/data/sys.1208", + "/root/data/AlMgCu/data/sys.1209", + "/root/data/AlMgCu/data/sys.121", + "/root/data/AlMgCu/data/sys.1210", + "/root/data/AlMgCu/data/sys.1211", + "/root/data/AlMgCu/data/sys.1212", + "/root/data/AlMgCu/data/sys.1213", + "/root/data/AlMgCu/data/sys.1214", + "/root/data/AlMgCu/data/sys.1215", + "/root/data/AlMgCu/data/sys.1216", + "/root/data/AlMgCu/data/sys.1217", + "/root/data/AlMgCu/data/sys.1218", + "/root/data/AlMgCu/data/sys.1219", + "/root/data/AlMgCu/data/sys.122", + "/root/data/AlMgCu/data/sys.1220", + "/root/data/AlMgCu/data/sys.1221", + "/root/data/AlMgCu/data/sys.1222", + "/root/data/AlMgCu/data/sys.1223", + "/root/data/AlMgCu/data/sys.1224", + "/root/data/AlMgCu/data/sys.1225", + "/root/data/AlMgCu/data/sys.1226", + "/root/data/AlMgCu/data/sys.1227", + "/root/data/AlMgCu/data/sys.1228", + "/root/data/AlMgCu/data/sys.1229", + "/root/data/AlMgCu/data/sys.123", + "/root/data/AlMgCu/data/sys.1230", + "/root/data/AlMgCu/data/sys.1232", + "/root/data/AlMgCu/data/sys.1233", + "/root/data/AlMgCu/data/sys.1234", + "/root/data/AlMgCu/data/sys.1236", + "/root/data/AlMgCu/data/sys.1237", + "/root/data/AlMgCu/data/sys.1238", + "/root/data/AlMgCu/data/sys.1239", + "/root/data/AlMgCu/data/sys.124", + "/root/data/AlMgCu/data/sys.1240", + "/root/data/AlMgCu/data/sys.1241", + "/root/data/AlMgCu/data/sys.1242", + "/root/data/AlMgCu/data/sys.1243", + "/root/data/AlMgCu/data/sys.1244", + "/root/data/AlMgCu/data/sys.1245", + "/root/data/AlMgCu/data/sys.1246", + "/root/data/AlMgCu/data/sys.1247", + "/root/data/AlMgCu/data/sys.1248", + "/root/data/AlMgCu/data/sys.1249", + "/root/data/AlMgCu/data/sys.125", + "/root/data/AlMgCu/data/sys.1250", + "/root/data/AlMgCu/data/sys.1251", + "/root/data/AlMgCu/data/sys.1252", + "/root/data/AlMgCu/data/sys.1254", + "/root/data/AlMgCu/data/sys.1255", + "/root/data/AlMgCu/data/sys.1256", + "/root/data/AlMgCu/data/sys.1257", + "/root/data/AlMgCu/data/sys.1258", + "/root/data/AlMgCu/data/sys.1259", + "/root/data/AlMgCu/data/sys.126", + "/root/data/AlMgCu/data/sys.1260", + "/root/data/AlMgCu/data/sys.1261", + "/root/data/AlMgCu/data/sys.1262", + "/root/data/AlMgCu/data/sys.1263", + "/root/data/AlMgCu/data/sys.1264", + "/root/data/AlMgCu/data/sys.1265", + "/root/data/AlMgCu/data/sys.1266", + "/root/data/AlMgCu/data/sys.1268", + "/root/data/AlMgCu/data/sys.1269", + "/root/data/AlMgCu/data/sys.127", + "/root/data/AlMgCu/data/sys.1270", + "/root/data/AlMgCu/data/sys.1271", + "/root/data/AlMgCu/data/sys.1272", + "/root/data/AlMgCu/data/sys.1273", + "/root/data/AlMgCu/data/sys.1274", + "/root/data/AlMgCu/data/sys.1275", + "/root/data/AlMgCu/data/sys.1276", + "/root/data/AlMgCu/data/sys.1277", + "/root/data/AlMgCu/data/sys.1278", + "/root/data/AlMgCu/data/sys.1279", + "/root/data/AlMgCu/data/sys.128", + "/root/data/AlMgCu/data/sys.1280", + "/root/data/AlMgCu/data/sys.1281", + "/root/data/AlMgCu/data/sys.1282", + "/root/data/AlMgCu/data/sys.1283", + "/root/data/AlMgCu/data/sys.1284", + "/root/data/AlMgCu/data/sys.1286", + "/root/data/AlMgCu/data/sys.1287", + "/root/data/AlMgCu/data/sys.1288", + "/root/data/AlMgCu/data/sys.1289", + "/root/data/AlMgCu/data/sys.129", + "/root/data/AlMgCu/data/sys.1290", + "/root/data/AlMgCu/data/sys.1291", + "/root/data/AlMgCu/data/sys.1292", + "/root/data/AlMgCu/data/sys.1294", + "/root/data/AlMgCu/data/sys.1295", + "/root/data/AlMgCu/data/sys.1296", + "/root/data/AlMgCu/data/sys.1298", + "/root/data/AlMgCu/data/sys.1299", + "/root/data/AlMgCu/data/sys.130", + "/root/data/AlMgCu/data/sys.1300", + "/root/data/AlMgCu/data/sys.1301", + "/root/data/AlMgCu/data/sys.1302", + "/root/data/AlMgCu/data/sys.1303", + "/root/data/AlMgCu/data/sys.1304", + "/root/data/AlMgCu/data/sys.1306", + "/root/data/AlMgCu/data/sys.1307", + "/root/data/AlMgCu/data/sys.1308", + "/root/data/AlMgCu/data/sys.1309", + "/root/data/AlMgCu/data/sys.131", + "/root/data/AlMgCu/data/sys.1310", + "/root/data/AlMgCu/data/sys.1311", + "/root/data/AlMgCu/data/sys.1312", + "/root/data/AlMgCu/data/sys.1313", + "/root/data/AlMgCu/data/sys.1314", + "/root/data/AlMgCu/data/sys.1316", + "/root/data/AlMgCu/data/sys.1317", + "/root/data/AlMgCu/data/sys.1318", + "/root/data/AlMgCu/data/sys.1319", + "/root/data/AlMgCu/data/sys.132", + "/root/data/AlMgCu/data/sys.1321", + "/root/data/AlMgCu/data/sys.1322", + "/root/data/AlMgCu/data/sys.1323", + "/root/data/AlMgCu/data/sys.1324", + "/root/data/AlMgCu/data/sys.1325", + "/root/data/AlMgCu/data/sys.1326", + "/root/data/AlMgCu/data/sys.1327", + "/root/data/AlMgCu/data/sys.1328", + "/root/data/AlMgCu/data/sys.1329", + "/root/data/AlMgCu/data/sys.1330", + "/root/data/AlMgCu/data/sys.1331", + "/root/data/AlMgCu/data/sys.1332", + "/root/data/AlMgCu/data/sys.1333", + "/root/data/AlMgCu/data/sys.1334", + "/root/data/AlMgCu/data/sys.1335", + "/root/data/AlMgCu/data/sys.1336", + "/root/data/AlMgCu/data/sys.1337", + "/root/data/AlMgCu/data/sys.1338", + "/root/data/AlMgCu/data/sys.1339", + "/root/data/AlMgCu/data/sys.1340", + "/root/data/AlMgCu/data/sys.1341", + "/root/data/AlMgCu/data/sys.1342", + "/root/data/AlMgCu/data/sys.1343", + "/root/data/AlMgCu/data/sys.1344", + "/root/data/AlMgCu/data/sys.1345", + "/root/data/AlMgCu/data/sys.1346", + "/root/data/AlMgCu/data/sys.1347", + "/root/data/AlMgCu/data/sys.1348", + "/root/data/AlMgCu/data/sys.1349", + "/root/data/AlMgCu/data/sys.135", + "/root/data/AlMgCu/data/sys.1350", + "/root/data/AlMgCu/data/sys.1351", + "/root/data/AlMgCu/data/sys.1352", + "/root/data/AlMgCu/data/sys.1353", + "/root/data/AlMgCu/data/sys.1354", + "/root/data/AlMgCu/data/sys.1355", + "/root/data/AlMgCu/data/sys.1356", + "/root/data/AlMgCu/data/sys.1357", + "/root/data/AlMgCu/data/sys.1358", + "/root/data/AlMgCu/data/sys.1359", + "/root/data/AlMgCu/data/sys.136", + "/root/data/AlMgCu/data/sys.1360", + "/root/data/AlMgCu/data/sys.1361", + "/root/data/AlMgCu/data/sys.1362", + "/root/data/AlMgCu/data/sys.1363", + "/root/data/AlMgCu/data/sys.1364", + "/root/data/AlMgCu/data/sys.1365", + "/root/data/AlMgCu/data/sys.1366", + "/root/data/AlMgCu/data/sys.1367", + "/root/data/AlMgCu/data/sys.1368", + "/root/data/AlMgCu/data/sys.1369", + "/root/data/AlMgCu/data/sys.137", + "/root/data/AlMgCu/data/sys.1370", + "/root/data/AlMgCu/data/sys.1371", + "/root/data/AlMgCu/data/sys.1372", + "/root/data/AlMgCu/data/sys.1373", + "/root/data/AlMgCu/data/sys.1374", + "/root/data/AlMgCu/data/sys.1376", + "/root/data/AlMgCu/data/sys.1377", + "/root/data/AlMgCu/data/sys.1379", + "/root/data/AlMgCu/data/sys.138", + "/root/data/AlMgCu/data/sys.1381", + "/root/data/AlMgCu/data/sys.1382", + "/root/data/AlMgCu/data/sys.1383", + "/root/data/AlMgCu/data/sys.1384", + "/root/data/AlMgCu/data/sys.1385", + "/root/data/AlMgCu/data/sys.1387", + "/root/data/AlMgCu/data/sys.1388", + "/root/data/AlMgCu/data/sys.139", + "/root/data/AlMgCu/data/sys.1390", + "/root/data/AlMgCu/data/sys.1391", + "/root/data/AlMgCu/data/sys.1392", + "/root/data/AlMgCu/data/sys.1394", + "/root/data/AlMgCu/data/sys.1395", + "/root/data/AlMgCu/data/sys.1396", + "/root/data/AlMgCu/data/sys.1398", + "/root/data/AlMgCu/data/sys.1399", + "/root/data/AlMgCu/data/sys.140", + "/root/data/AlMgCu/data/sys.1400", + "/root/data/AlMgCu/data/sys.1401", + "/root/data/AlMgCu/data/sys.1403", + "/root/data/AlMgCu/data/sys.1404", + "/root/data/AlMgCu/data/sys.1405", + "/root/data/AlMgCu/data/sys.1406", + "/root/data/AlMgCu/data/sys.1407", + "/root/data/AlMgCu/data/sys.1409", + "/root/data/AlMgCu/data/sys.141", + "/root/data/AlMgCu/data/sys.1410", + "/root/data/AlMgCu/data/sys.1411", + "/root/data/AlMgCu/data/sys.1412", + "/root/data/AlMgCu/data/sys.1413", + "/root/data/AlMgCu/data/sys.1414", + "/root/data/AlMgCu/data/sys.1415", + "/root/data/AlMgCu/data/sys.1416", + "/root/data/AlMgCu/data/sys.1418", + "/root/data/AlMgCu/data/sys.1419", + "/root/data/AlMgCu/data/sys.142", + "/root/data/AlMgCu/data/sys.1420", + "/root/data/AlMgCu/data/sys.1421", + "/root/data/AlMgCu/data/sys.1422", + "/root/data/AlMgCu/data/sys.1423", + "/root/data/AlMgCu/data/sys.1424", + "/root/data/AlMgCu/data/sys.1425", + "/root/data/AlMgCu/data/sys.1427", + "/root/data/AlMgCu/data/sys.1428", + "/root/data/AlMgCu/data/sys.1429", + "/root/data/AlMgCu/data/sys.143", + "/root/data/AlMgCu/data/sys.1430", + "/root/data/AlMgCu/data/sys.1431", + "/root/data/AlMgCu/data/sys.1432", + "/root/data/AlMgCu/data/sys.1433", + "/root/data/AlMgCu/data/sys.1434", + "/root/data/AlMgCu/data/sys.1435", + "/root/data/AlMgCu/data/sys.1436", + "/root/data/AlMgCu/data/sys.1437", + "/root/data/AlMgCu/data/sys.1438", + "/root/data/AlMgCu/data/sys.1439", + "/root/data/AlMgCu/data/sys.144", + "/root/data/AlMgCu/data/sys.1440", + "/root/data/AlMgCu/data/sys.1441", + "/root/data/AlMgCu/data/sys.1442", + "/root/data/AlMgCu/data/sys.1443", + "/root/data/AlMgCu/data/sys.1444", + "/root/data/AlMgCu/data/sys.1445", + "/root/data/AlMgCu/data/sys.1446", + "/root/data/AlMgCu/data/sys.1447", + "/root/data/AlMgCu/data/sys.1448", + "/root/data/AlMgCu/data/sys.1449", + "/root/data/AlMgCu/data/sys.145", + "/root/data/AlMgCu/data/sys.1450", + "/root/data/AlMgCu/data/sys.1451", + "/root/data/AlMgCu/data/sys.1452", + "/root/data/AlMgCu/data/sys.1453", + "/root/data/AlMgCu/data/sys.1454", + "/root/data/AlMgCu/data/sys.1455", + "/root/data/AlMgCu/data/sys.1456", + "/root/data/AlMgCu/data/sys.1457", + "/root/data/AlMgCu/data/sys.1458", + "/root/data/AlMgCu/data/sys.1459", + "/root/data/AlMgCu/data/sys.1461", + "/root/data/AlMgCu/data/sys.1462", + "/root/data/AlMgCu/data/sys.1463", + "/root/data/AlMgCu/data/sys.1464", + "/root/data/AlMgCu/data/sys.1465", + "/root/data/AlMgCu/data/sys.1466", + "/root/data/AlMgCu/data/sys.1467", + "/root/data/AlMgCu/data/sys.1468", + "/root/data/AlMgCu/data/sys.1469", + "/root/data/AlMgCu/data/sys.147", + "/root/data/AlMgCu/data/sys.1470", + "/root/data/AlMgCu/data/sys.1471", + "/root/data/AlMgCu/data/sys.1473", + "/root/data/AlMgCu/data/sys.1474", + "/root/data/AlMgCu/data/sys.1475", + "/root/data/AlMgCu/data/sys.1476", + "/root/data/AlMgCu/data/sys.1477", + "/root/data/AlMgCu/data/sys.1478", + "/root/data/AlMgCu/data/sys.1479", + "/root/data/AlMgCu/data/sys.148", + "/root/data/AlMgCu/data/sys.1480", + "/root/data/AlMgCu/data/sys.1483", + "/root/data/AlMgCu/data/sys.1484", + "/root/data/AlMgCu/data/sys.1485", + "/root/data/AlMgCu/data/sys.1487", + "/root/data/AlMgCu/data/sys.1488", + "/root/data/AlMgCu/data/sys.1489", + "/root/data/AlMgCu/data/sys.149", + "/root/data/AlMgCu/data/sys.1490", + "/root/data/AlMgCu/data/sys.1491", + "/root/data/AlMgCu/data/sys.1492", + "/root/data/AlMgCu/data/sys.1494", + "/root/data/AlMgCu/data/sys.1495", + "/root/data/AlMgCu/data/sys.1496", + "/root/data/AlMgCu/data/sys.1497", + "/root/data/AlMgCu/data/sys.1498", + "/root/data/AlMgCu/data/sys.1499", + "/root/data/AlMgCu/data/sys.1500", + "/root/data/AlMgCu/data/sys.1501", + "/root/data/AlMgCu/data/sys.1502", + "/root/data/AlMgCu/data/sys.1503", + "/root/data/AlMgCu/data/sys.1504", + "/root/data/AlMgCu/data/sys.1505", + "/root/data/AlMgCu/data/sys.1506", + "/root/data/AlMgCu/data/sys.1507", + "/root/data/AlMgCu/data/sys.1508", + "/root/data/AlMgCu/data/sys.1509", + "/root/data/AlMgCu/data/sys.151", + "/root/data/AlMgCu/data/sys.1510", + "/root/data/AlMgCu/data/sys.1511", + "/root/data/AlMgCu/data/sys.1512", + "/root/data/AlMgCu/data/sys.1513", + "/root/data/AlMgCu/data/sys.1515", + "/root/data/AlMgCu/data/sys.1516", + "/root/data/AlMgCu/data/sys.1517", + "/root/data/AlMgCu/data/sys.1518", + "/root/data/AlMgCu/data/sys.1519", + "/root/data/AlMgCu/data/sys.152", + "/root/data/AlMgCu/data/sys.1520", + "/root/data/AlMgCu/data/sys.1521", + "/root/data/AlMgCu/data/sys.1522", + "/root/data/AlMgCu/data/sys.1523", + "/root/data/AlMgCu/data/sys.1524", + "/root/data/AlMgCu/data/sys.1525", + "/root/data/AlMgCu/data/sys.1526", + "/root/data/AlMgCu/data/sys.1527", + "/root/data/AlMgCu/data/sys.1528", + "/root/data/AlMgCu/data/sys.1529", + "/root/data/AlMgCu/data/sys.153", + "/root/data/AlMgCu/data/sys.1530", + "/root/data/AlMgCu/data/sys.1531", + "/root/data/AlMgCu/data/sys.1532", + "/root/data/AlMgCu/data/sys.1533", + "/root/data/AlMgCu/data/sys.1534", + "/root/data/AlMgCu/data/sys.1535", + "/root/data/AlMgCu/data/sys.1536", + "/root/data/AlMgCu/data/sys.1537", + "/root/data/AlMgCu/data/sys.1538", + "/root/data/AlMgCu/data/sys.1539", + "/root/data/AlMgCu/data/sys.154", + "/root/data/AlMgCu/data/sys.1540", + "/root/data/AlMgCu/data/sys.1541", + "/root/data/AlMgCu/data/sys.1542", + "/root/data/AlMgCu/data/sys.1543", + "/root/data/AlMgCu/data/sys.1544", + "/root/data/AlMgCu/data/sys.1545", + "/root/data/AlMgCu/data/sys.1546", + "/root/data/AlMgCu/data/sys.1547", + "/root/data/AlMgCu/data/sys.1548", + "/root/data/AlMgCu/data/sys.1549", + "/root/data/AlMgCu/data/sys.155", + "/root/data/AlMgCu/data/sys.1550", + "/root/data/AlMgCu/data/sys.1551", + "/root/data/AlMgCu/data/sys.1552", + "/root/data/AlMgCu/data/sys.1554", + "/root/data/AlMgCu/data/sys.1555", + "/root/data/AlMgCu/data/sys.1556", + "/root/data/AlMgCu/data/sys.1557", + "/root/data/AlMgCu/data/sys.1558", + "/root/data/AlMgCu/data/sys.1559", + "/root/data/AlMgCu/data/sys.156", + "/root/data/AlMgCu/data/sys.1560", + "/root/data/AlMgCu/data/sys.1561", + "/root/data/AlMgCu/data/sys.1562", + "/root/data/AlMgCu/data/sys.1563", + "/root/data/AlMgCu/data/sys.1564", + "/root/data/AlMgCu/data/sys.1565", + "/root/data/AlMgCu/data/sys.1566", + "/root/data/AlMgCu/data/sys.1567", + "/root/data/AlMgCu/data/sys.1568", + "/root/data/AlMgCu/data/sys.1569", + "/root/data/AlMgCu/data/sys.157", + "/root/data/AlMgCu/data/sys.1570", + "/root/data/AlMgCu/data/sys.1571", + "/root/data/AlMgCu/data/sys.1572", + "/root/data/AlMgCu/data/sys.1573", + "/root/data/AlMgCu/data/sys.1574", + "/root/data/AlMgCu/data/sys.1575", + "/root/data/AlMgCu/data/sys.1576", + "/root/data/AlMgCu/data/sys.1578", + "/root/data/AlMgCu/data/sys.1579", + "/root/data/AlMgCu/data/sys.158", + "/root/data/AlMgCu/data/sys.1580", + "/root/data/AlMgCu/data/sys.1581", + "/root/data/AlMgCu/data/sys.1582", + "/root/data/AlMgCu/data/sys.1583", + "/root/data/AlMgCu/data/sys.1585", + "/root/data/AlMgCu/data/sys.1586", + "/root/data/AlMgCu/data/sys.1587", + "/root/data/AlMgCu/data/sys.1588", + "/root/data/AlMgCu/data/sys.1589", + "/root/data/AlMgCu/data/sys.159", + "/root/data/AlMgCu/data/sys.1590", + "/root/data/AlMgCu/data/sys.1591", + "/root/data/AlMgCu/data/sys.1592", + "/root/data/AlMgCu/data/sys.1594", + "/root/data/AlMgCu/data/sys.1595", + "/root/data/AlMgCu/data/sys.1596", + "/root/data/AlMgCu/data/sys.1597", + "/root/data/AlMgCu/data/sys.1598", + "/root/data/AlMgCu/data/sys.1599", + "/root/data/AlMgCu/data/sys.160", + "/root/data/AlMgCu/data/sys.1600", + "/root/data/AlMgCu/data/sys.1602", + "/root/data/AlMgCu/data/sys.1604", + "/root/data/AlMgCu/data/sys.1605", + "/root/data/AlMgCu/data/sys.1606", + "/root/data/AlMgCu/data/sys.1608", + "/root/data/AlMgCu/data/sys.1609", + "/root/data/AlMgCu/data/sys.161", + "/root/data/AlMgCu/data/sys.1610", + "/root/data/AlMgCu/data/sys.1611", + "/root/data/AlMgCu/data/sys.1612", + "/root/data/AlMgCu/data/sys.1613", + "/root/data/AlMgCu/data/sys.1614", + "/root/data/AlMgCu/data/sys.1615", + "/root/data/AlMgCu/data/sys.1616", + "/root/data/AlMgCu/data/sys.1617", + "/root/data/AlMgCu/data/sys.1618", + "/root/data/AlMgCu/data/sys.1619", + "/root/data/AlMgCu/data/sys.162", + "/root/data/AlMgCu/data/sys.1620", + "/root/data/AlMgCu/data/sys.1621", + "/root/data/AlMgCu/data/sys.1622", + "/root/data/AlMgCu/data/sys.1623", + "/root/data/AlMgCu/data/sys.1624", + "/root/data/AlMgCu/data/sys.1625", + "/root/data/AlMgCu/data/sys.1626", + "/root/data/AlMgCu/data/sys.1627", + "/root/data/AlMgCu/data/sys.1629", + "/root/data/AlMgCu/data/sys.163", + "/root/data/AlMgCu/data/sys.1630", + "/root/data/AlMgCu/data/sys.1632", + "/root/data/AlMgCu/data/sys.1633", + "/root/data/AlMgCu/data/sys.1634", + "/root/data/AlMgCu/data/sys.1635", + "/root/data/AlMgCu/data/sys.1636", + "/root/data/AlMgCu/data/sys.1637", + "/root/data/AlMgCu/data/sys.1638", + "/root/data/AlMgCu/data/sys.1639", + "/root/data/AlMgCu/data/sys.164", + "/root/data/AlMgCu/data/sys.1640", + "/root/data/AlMgCu/data/sys.1641", + "/root/data/AlMgCu/data/sys.1642", + "/root/data/AlMgCu/data/sys.1643", + "/root/data/AlMgCu/data/sys.1644", + "/root/data/AlMgCu/data/sys.1645", + "/root/data/AlMgCu/data/sys.1646", + "/root/data/AlMgCu/data/sys.1648", + "/root/data/AlMgCu/data/sys.1649", + "/root/data/AlMgCu/data/sys.165", + "/root/data/AlMgCu/data/sys.1652", + "/root/data/AlMgCu/data/sys.1653", + "/root/data/AlMgCu/data/sys.1654", + "/root/data/AlMgCu/data/sys.1655", + "/root/data/AlMgCu/data/sys.1656", + "/root/data/AlMgCu/data/sys.1657", + "/root/data/AlMgCu/data/sys.1658", + "/root/data/AlMgCu/data/sys.1659", + "/root/data/AlMgCu/data/sys.166", + "/root/data/AlMgCu/data/sys.1660", + "/root/data/AlMgCu/data/sys.1662", + "/root/data/AlMgCu/data/sys.1663", + "/root/data/AlMgCu/data/sys.1664", + "/root/data/AlMgCu/data/sys.1665", + "/root/data/AlMgCu/data/sys.1666", + "/root/data/AlMgCu/data/sys.1667", + "/root/data/AlMgCu/data/sys.1669", + "/root/data/AlMgCu/data/sys.167", + "/root/data/AlMgCu/data/sys.1670", + "/root/data/AlMgCu/data/sys.1672", + "/root/data/AlMgCu/data/sys.1673", + "/root/data/AlMgCu/data/sys.1674", + "/root/data/AlMgCu/data/sys.1675", + "/root/data/AlMgCu/data/sys.1676", + "/root/data/AlMgCu/data/sys.1677", + "/root/data/AlMgCu/data/sys.1678", + "/root/data/AlMgCu/data/sys.168", + "/root/data/AlMgCu/data/sys.1680", + "/root/data/AlMgCu/data/sys.1681", + "/root/data/AlMgCu/data/sys.1682", + "/root/data/AlMgCu/data/sys.1685", + "/root/data/AlMgCu/data/sys.1686", + "/root/data/AlMgCu/data/sys.1689", + "/root/data/AlMgCu/data/sys.169", + "/root/data/AlMgCu/data/sys.1691", + "/root/data/AlMgCu/data/sys.1692", + "/root/data/AlMgCu/data/sys.1693", + "/root/data/AlMgCu/data/sys.1694", + "/root/data/AlMgCu/data/sys.1695", + "/root/data/AlMgCu/data/sys.1696", + "/root/data/AlMgCu/data/sys.1697", + "/root/data/AlMgCu/data/sys.1698", + "/root/data/AlMgCu/data/sys.1699", + "/root/data/AlMgCu/data/sys.170", + "/root/data/AlMgCu/data/sys.1700", + "/root/data/AlMgCu/data/sys.1701", + "/root/data/AlMgCu/data/sys.1703", + "/root/data/AlMgCu/data/sys.1705", + "/root/data/AlMgCu/data/sys.1706", + "/root/data/AlMgCu/data/sys.1707", + "/root/data/AlMgCu/data/sys.1708", + "/root/data/AlMgCu/data/sys.1709", + "/root/data/AlMgCu/data/sys.171", + "/root/data/AlMgCu/data/sys.1710", + "/root/data/AlMgCu/data/sys.1712", + "/root/data/AlMgCu/data/sys.1713", + "/root/data/AlMgCu/data/sys.1714", + "/root/data/AlMgCu/data/sys.1715", + "/root/data/AlMgCu/data/sys.1716", + "/root/data/AlMgCu/data/sys.1717", + "/root/data/AlMgCu/data/sys.1718", + "/root/data/AlMgCu/data/sys.1720", + "/root/data/AlMgCu/data/sys.1721", + "/root/data/AlMgCu/data/sys.1722", + "/root/data/AlMgCu/data/sys.1723", + "/root/data/AlMgCu/data/sys.1724", + "/root/data/AlMgCu/data/sys.1725", + "/root/data/AlMgCu/data/sys.1726", + "/root/data/AlMgCu/data/sys.1727", + "/root/data/AlMgCu/data/sys.1728", + "/root/data/AlMgCu/data/sys.1729", + "/root/data/AlMgCu/data/sys.173", + "/root/data/AlMgCu/data/sys.1730", + "/root/data/AlMgCu/data/sys.1731", + "/root/data/AlMgCu/data/sys.1732", + "/root/data/AlMgCu/data/sys.1733", + "/root/data/AlMgCu/data/sys.1734", + "/root/data/AlMgCu/data/sys.1735", + "/root/data/AlMgCu/data/sys.1736", + "/root/data/AlMgCu/data/sys.1737", + "/root/data/AlMgCu/data/sys.1738", + "/root/data/AlMgCu/data/sys.1739", + "/root/data/AlMgCu/data/sys.174", + "/root/data/AlMgCu/data/sys.1740", + "/root/data/AlMgCu/data/sys.1741", + "/root/data/AlMgCu/data/sys.1742", + "/root/data/AlMgCu/data/sys.1743", + "/root/data/AlMgCu/data/sys.1744", + "/root/data/AlMgCu/data/sys.1745", + "/root/data/AlMgCu/data/sys.1746", + "/root/data/AlMgCu/data/sys.1747", + "/root/data/AlMgCu/data/sys.1748", + "/root/data/AlMgCu/data/sys.1749", + "/root/data/AlMgCu/data/sys.175", + "/root/data/AlMgCu/data/sys.1751", + "/root/data/AlMgCu/data/sys.1752", + "/root/data/AlMgCu/data/sys.1754", + "/root/data/AlMgCu/data/sys.1755", + "/root/data/AlMgCu/data/sys.1756", + "/root/data/AlMgCu/data/sys.1757", + "/root/data/AlMgCu/data/sys.1758", + "/root/data/AlMgCu/data/sys.1759", + "/root/data/AlMgCu/data/sys.1760", + "/root/data/AlMgCu/data/sys.1761", + "/root/data/AlMgCu/data/sys.1762", + "/root/data/AlMgCu/data/sys.1763", + "/root/data/AlMgCu/data/sys.1764", + "/root/data/AlMgCu/data/sys.1765", + "/root/data/AlMgCu/data/sys.1766", + "/root/data/AlMgCu/data/sys.1767", + "/root/data/AlMgCu/data/sys.1768", + "/root/data/AlMgCu/data/sys.1769", + "/root/data/AlMgCu/data/sys.177", + "/root/data/AlMgCu/data/sys.1770", + "/root/data/AlMgCu/data/sys.1771", + "/root/data/AlMgCu/data/sys.1772", + "/root/data/AlMgCu/data/sys.1773", + "/root/data/AlMgCu/data/sys.1774", + "/root/data/AlMgCu/data/sys.1775", + "/root/data/AlMgCu/data/sys.1776", + "/root/data/AlMgCu/data/sys.1777", + "/root/data/AlMgCu/data/sys.1778", + "/root/data/AlMgCu/data/sys.1779", + "/root/data/AlMgCu/data/sys.178", + "/root/data/AlMgCu/data/sys.1780", + "/root/data/AlMgCu/data/sys.1781", + "/root/data/AlMgCu/data/sys.1782", + "/root/data/AlMgCu/data/sys.1783", + "/root/data/AlMgCu/data/sys.1784", + "/root/data/AlMgCu/data/sys.1785", + "/root/data/AlMgCu/data/sys.1786", + "/root/data/AlMgCu/data/sys.1787", + "/root/data/AlMgCu/data/sys.1789", + "/root/data/AlMgCu/data/sys.179", + "/root/data/AlMgCu/data/sys.1790", + "/root/data/AlMgCu/data/sys.1791", + "/root/data/AlMgCu/data/sys.1792", + "/root/data/AlMgCu/data/sys.1794", + "/root/data/AlMgCu/data/sys.1795", + "/root/data/AlMgCu/data/sys.1796", + "/root/data/AlMgCu/data/sys.1797", + "/root/data/AlMgCu/data/sys.1798", + "/root/data/AlMgCu/data/sys.1799", + "/root/data/AlMgCu/data/sys.180", + "/root/data/AlMgCu/data/sys.1800", + "/root/data/AlMgCu/data/sys.1801", + "/root/data/AlMgCu/data/sys.1802", + "/root/data/AlMgCu/data/sys.1805", + "/root/data/AlMgCu/data/sys.1806", + "/root/data/AlMgCu/data/sys.1807", + "/root/data/AlMgCu/data/sys.1808", + "/root/data/AlMgCu/data/sys.1809", + "/root/data/AlMgCu/data/sys.181", + "/root/data/AlMgCu/data/sys.1811", + "/root/data/AlMgCu/data/sys.1812", + "/root/data/AlMgCu/data/sys.1813", + "/root/data/AlMgCu/data/sys.1814", + "/root/data/AlMgCu/data/sys.1815", + "/root/data/AlMgCu/data/sys.1816", + "/root/data/AlMgCu/data/sys.1817", + "/root/data/AlMgCu/data/sys.1818", + "/root/data/AlMgCu/data/sys.1819", + "/root/data/AlMgCu/data/sys.182", + "/root/data/AlMgCu/data/sys.1820", + "/root/data/AlMgCu/data/sys.1821", + "/root/data/AlMgCu/data/sys.1822", + "/root/data/AlMgCu/data/sys.1823", + "/root/data/AlMgCu/data/sys.1824", + "/root/data/AlMgCu/data/sys.1826", + "/root/data/AlMgCu/data/sys.1827", + "/root/data/AlMgCu/data/sys.1828", + "/root/data/AlMgCu/data/sys.183", + "/root/data/AlMgCu/data/sys.1831", + "/root/data/AlMgCu/data/sys.1832", + "/root/data/AlMgCu/data/sys.1833", + "/root/data/AlMgCu/data/sys.1834", + "/root/data/AlMgCu/data/sys.1835", + "/root/data/AlMgCu/data/sys.1836", + "/root/data/AlMgCu/data/sys.1837", + "/root/data/AlMgCu/data/sys.1838", + "/root/data/AlMgCu/data/sys.1839", + "/root/data/AlMgCu/data/sys.184", + "/root/data/AlMgCu/data/sys.1840", + "/root/data/AlMgCu/data/sys.1842", + "/root/data/AlMgCu/data/sys.1843", + "/root/data/AlMgCu/data/sys.1845", + "/root/data/AlMgCu/data/sys.1846", + "/root/data/AlMgCu/data/sys.1847", + "/root/data/AlMgCu/data/sys.1848", + "/root/data/AlMgCu/data/sys.1849", + "/root/data/AlMgCu/data/sys.185", + "/root/data/AlMgCu/data/sys.1850", + "/root/data/AlMgCu/data/sys.1852", + "/root/data/AlMgCu/data/sys.1853", + "/root/data/AlMgCu/data/sys.1854", + "/root/data/AlMgCu/data/sys.1855", + "/root/data/AlMgCu/data/sys.1856", + "/root/data/AlMgCu/data/sys.1857", + "/root/data/AlMgCu/data/sys.1858", + "/root/data/AlMgCu/data/sys.1859", + "/root/data/AlMgCu/data/sys.186", + "/root/data/AlMgCu/data/sys.1860", + "/root/data/AlMgCu/data/sys.1861", + "/root/data/AlMgCu/data/sys.1862", + "/root/data/AlMgCu/data/sys.1863", + "/root/data/AlMgCu/data/sys.1864", + "/root/data/AlMgCu/data/sys.1865", + "/root/data/AlMgCu/data/sys.1866", + "/root/data/AlMgCu/data/sys.1867", + "/root/data/AlMgCu/data/sys.1868", + "/root/data/AlMgCu/data/sys.1869", + "/root/data/AlMgCu/data/sys.187", + "/root/data/AlMgCu/data/sys.1870", + "/root/data/AlMgCu/data/sys.1872", + "/root/data/AlMgCu/data/sys.1874", + "/root/data/AlMgCu/data/sys.1875", + "/root/data/AlMgCu/data/sys.1876", + "/root/data/AlMgCu/data/sys.1877", + "/root/data/AlMgCu/data/sys.1878", + "/root/data/AlMgCu/data/sys.1879", + "/root/data/AlMgCu/data/sys.188", + "/root/data/AlMgCu/data/sys.1880", + "/root/data/AlMgCu/data/sys.1882", + "/root/data/AlMgCu/data/sys.1883", + "/root/data/AlMgCu/data/sys.1884", + "/root/data/AlMgCu/data/sys.1885", + "/root/data/AlMgCu/data/sys.1886", + "/root/data/AlMgCu/data/sys.1887", + "/root/data/AlMgCu/data/sys.1888", + "/root/data/AlMgCu/data/sys.1889", + "/root/data/AlMgCu/data/sys.189", + "/root/data/AlMgCu/data/sys.1890", + "/root/data/AlMgCu/data/sys.1891", + "/root/data/AlMgCu/data/sys.1892", + "/root/data/AlMgCu/data/sys.1893", + "/root/data/AlMgCu/data/sys.1894", + "/root/data/AlMgCu/data/sys.1895", + "/root/data/AlMgCu/data/sys.1896", + "/root/data/AlMgCu/data/sys.1897", + "/root/data/AlMgCu/data/sys.1898", + "/root/data/AlMgCu/data/sys.1899", + "/root/data/AlMgCu/data/sys.190", + "/root/data/AlMgCu/data/sys.1900", + "/root/data/AlMgCu/data/sys.1902", + "/root/data/AlMgCu/data/sys.1903", + "/root/data/AlMgCu/data/sys.1904", + "/root/data/AlMgCu/data/sys.1905", + "/root/data/AlMgCu/data/sys.1906", + "/root/data/AlMgCu/data/sys.1907", + "/root/data/AlMgCu/data/sys.1908", + "/root/data/AlMgCu/data/sys.1909", + "/root/data/AlMgCu/data/sys.191", + "/root/data/AlMgCu/data/sys.1910", + "/root/data/AlMgCu/data/sys.1911", + "/root/data/AlMgCu/data/sys.1912", + "/root/data/AlMgCu/data/sys.1913", + "/root/data/AlMgCu/data/sys.1914", + "/root/data/AlMgCu/data/sys.1915", + "/root/data/AlMgCu/data/sys.1916", + "/root/data/AlMgCu/data/sys.1918", + "/root/data/AlMgCu/data/sys.1919", + "/root/data/AlMgCu/data/sys.192", + "/root/data/AlMgCu/data/sys.1920", + "/root/data/AlMgCu/data/sys.1922", + "/root/data/AlMgCu/data/sys.1923", + "/root/data/AlMgCu/data/sys.1924", + "/root/data/AlMgCu/data/sys.1925", + "/root/data/AlMgCu/data/sys.1926", + "/root/data/AlMgCu/data/sys.1927", + "/root/data/AlMgCu/data/sys.1928", + "/root/data/AlMgCu/data/sys.1929", + "/root/data/AlMgCu/data/sys.193", + "/root/data/AlMgCu/data/sys.1930", + "/root/data/AlMgCu/data/sys.1931", + "/root/data/AlMgCu/data/sys.1933", + "/root/data/AlMgCu/data/sys.1935", + "/root/data/AlMgCu/data/sys.1936", + "/root/data/AlMgCu/data/sys.1938", + "/root/data/AlMgCu/data/sys.1939", + "/root/data/AlMgCu/data/sys.1940", + "/root/data/AlMgCu/data/sys.1941", + "/root/data/AlMgCu/data/sys.1942", + "/root/data/AlMgCu/data/sys.1943", + "/root/data/AlMgCu/data/sys.1944", + "/root/data/AlMgCu/data/sys.1946", + "/root/data/AlMgCu/data/sys.1947", + "/root/data/AlMgCu/data/sys.1948", + "/root/data/AlMgCu/data/sys.1949", + "/root/data/AlMgCu/data/sys.195", + "/root/data/AlMgCu/data/sys.1951", + "/root/data/AlMgCu/data/sys.1952", + "/root/data/AlMgCu/data/sys.1953", + "/root/data/AlMgCu/data/sys.1954", + "/root/data/AlMgCu/data/sys.1955", + "/root/data/AlMgCu/data/sys.1956", + "/root/data/AlMgCu/data/sys.1957", + "/root/data/AlMgCu/data/sys.1958", + "/root/data/AlMgCu/data/sys.1959", + "/root/data/AlMgCu/data/sys.196", + "/root/data/AlMgCu/data/sys.1960", + "/root/data/AlMgCu/data/sys.1961", + "/root/data/AlMgCu/data/sys.1962", + "/root/data/AlMgCu/data/sys.1963", + "/root/data/AlMgCu/data/sys.1964", + "/root/data/AlMgCu/data/sys.1965", + "/root/data/AlMgCu/data/sys.1966", + "/root/data/AlMgCu/data/sys.1967", + "/root/data/AlMgCu/data/sys.1968", + "/root/data/AlMgCu/data/sys.197", + "/root/data/AlMgCu/data/sys.1970", + "/root/data/AlMgCu/data/sys.1971", + "/root/data/AlMgCu/data/sys.1972", + "/root/data/AlMgCu/data/sys.1973", + "/root/data/AlMgCu/data/sys.1974", + "/root/data/AlMgCu/data/sys.1975", + "/root/data/AlMgCu/data/sys.1977", + "/root/data/AlMgCu/data/sys.1979", + "/root/data/AlMgCu/data/sys.198", + "/root/data/AlMgCu/data/sys.1980", + "/root/data/AlMgCu/data/sys.1981", + "/root/data/AlMgCu/data/sys.1982", + "/root/data/AlMgCu/data/sys.1983", + "/root/data/AlMgCu/data/sys.1984", + "/root/data/AlMgCu/data/sys.1985", + "/root/data/AlMgCu/data/sys.1986", + "/root/data/AlMgCu/data/sys.1987", + "/root/data/AlMgCu/data/sys.1988", + "/root/data/AlMgCu/data/sys.1989", + "/root/data/AlMgCu/data/sys.199", + "/root/data/AlMgCu/data/sys.1990", + "/root/data/AlMgCu/data/sys.1991", + "/root/data/AlMgCu/data/sys.1992", + "/root/data/AlMgCu/data/sys.1993", + "/root/data/AlMgCu/data/sys.1994", + "/root/data/AlMgCu/data/sys.1995", + "/root/data/AlMgCu/data/sys.1996", + "/root/data/AlMgCu/data/sys.1997", + "/root/data/AlMgCu/data/sys.1998", + "/root/data/AlMgCu/data/sys.1999", + "/root/data/AlMgCu/data/sys.200", + "/root/data/AlMgCu/data/sys.2000", + "/root/data/AlMgCu/data/sys.2001", + "/root/data/AlMgCu/data/sys.2002", + "/root/data/AlMgCu/data/sys.2003", + "/root/data/AlMgCu/data/sys.2004", + "/root/data/AlMgCu/data/sys.2005", + "/root/data/AlMgCu/data/sys.2007", + "/root/data/AlMgCu/data/sys.2009", + "/root/data/AlMgCu/data/sys.201", + "/root/data/AlMgCu/data/sys.2011", + "/root/data/AlMgCu/data/sys.2012", + "/root/data/AlMgCu/data/sys.2013", + "/root/data/AlMgCu/data/sys.2014", + "/root/data/AlMgCu/data/sys.2015", + "/root/data/AlMgCu/data/sys.2016", + "/root/data/AlMgCu/data/sys.2017", + "/root/data/AlMgCu/data/sys.2018", + "/root/data/AlMgCu/data/sys.202", + "/root/data/AlMgCu/data/sys.2020", + "/root/data/AlMgCu/data/sys.2022", + "/root/data/AlMgCu/data/sys.2023", + "/root/data/AlMgCu/data/sys.2024", + "/root/data/AlMgCu/data/sys.2025", + "/root/data/AlMgCu/data/sys.2027", + "/root/data/AlMgCu/data/sys.2028", + "/root/data/AlMgCu/data/sys.2029", + "/root/data/AlMgCu/data/sys.203", + "/root/data/AlMgCu/data/sys.2030", + "/root/data/AlMgCu/data/sys.2031", + "/root/data/AlMgCu/data/sys.2032", + "/root/data/AlMgCu/data/sys.2033", + "/root/data/AlMgCu/data/sys.2034", + "/root/data/AlMgCu/data/sys.2035", + "/root/data/AlMgCu/data/sys.2036", + "/root/data/AlMgCu/data/sys.2037", + "/root/data/AlMgCu/data/sys.2038", + "/root/data/AlMgCu/data/sys.2039", + "/root/data/AlMgCu/data/sys.204", + "/root/data/AlMgCu/data/sys.2040", + "/root/data/AlMgCu/data/sys.2041", + "/root/data/AlMgCu/data/sys.2042", + "/root/data/AlMgCu/data/sys.2043", + "/root/data/AlMgCu/data/sys.2044", + "/root/data/AlMgCu/data/sys.2046", + "/root/data/AlMgCu/data/sys.2047", + "/root/data/AlMgCu/data/sys.2048", + "/root/data/AlMgCu/data/sys.2050", + "/root/data/AlMgCu/data/sys.2051", + "/root/data/AlMgCu/data/sys.2052", + "/root/data/AlMgCu/data/sys.2053", + "/root/data/AlMgCu/data/sys.2054", + "/root/data/AlMgCu/data/sys.2055", + "/root/data/AlMgCu/data/sys.2056", + "/root/data/AlMgCu/data/sys.2057", + "/root/data/AlMgCu/data/sys.2058", + "/root/data/AlMgCu/data/sys.2059", + "/root/data/AlMgCu/data/sys.206", + "/root/data/AlMgCu/data/sys.2060", + "/root/data/AlMgCu/data/sys.2061", + "/root/data/AlMgCu/data/sys.2062", + "/root/data/AlMgCu/data/sys.2063", + "/root/data/AlMgCu/data/sys.2064", + "/root/data/AlMgCu/data/sys.2065", + "/root/data/AlMgCu/data/sys.2066", + "/root/data/AlMgCu/data/sys.2067", + "/root/data/AlMgCu/data/sys.2068", + "/root/data/AlMgCu/data/sys.2069", + "/root/data/AlMgCu/data/sys.2070", + "/root/data/AlMgCu/data/sys.2071", + "/root/data/AlMgCu/data/sys.2072", + "/root/data/AlMgCu/data/sys.2073", + "/root/data/AlMgCu/data/sys.2074", + "/root/data/AlMgCu/data/sys.2075", + "/root/data/AlMgCu/data/sys.2078", + "/root/data/AlMgCu/data/sys.2079", + "/root/data/AlMgCu/data/sys.208", + "/root/data/AlMgCu/data/sys.2080", + "/root/data/AlMgCu/data/sys.2081", + "/root/data/AlMgCu/data/sys.2082", + "/root/data/AlMgCu/data/sys.2083", + "/root/data/AlMgCu/data/sys.2084", + "/root/data/AlMgCu/data/sys.2085", + "/root/data/AlMgCu/data/sys.2086", + "/root/data/AlMgCu/data/sys.2087", + "/root/data/AlMgCu/data/sys.2088", + "/root/data/AlMgCu/data/sys.2089", + "/root/data/AlMgCu/data/sys.209", + "/root/data/AlMgCu/data/sys.2090", + "/root/data/AlMgCu/data/sys.2091", + "/root/data/AlMgCu/data/sys.2092", + "/root/data/AlMgCu/data/sys.2093", + "/root/data/AlMgCu/data/sys.2094", + "/root/data/AlMgCu/data/sys.2095", + "/root/data/AlMgCu/data/sys.2096", + "/root/data/AlMgCu/data/sys.2097", + "/root/data/AlMgCu/data/sys.2098", + "/root/data/AlMgCu/data/sys.2099", + "/root/data/AlMgCu/data/sys.210", + "/root/data/AlMgCu/data/sys.2100", + "/root/data/AlMgCu/data/sys.2101", + "/root/data/AlMgCu/data/sys.2102", + "/root/data/AlMgCu/data/sys.2103", + "/root/data/AlMgCu/data/sys.2104", + "/root/data/AlMgCu/data/sys.2105", + "/root/data/AlMgCu/data/sys.2106", + "/root/data/AlMgCu/data/sys.2107", + "/root/data/AlMgCu/data/sys.2108", + "/root/data/AlMgCu/data/sys.2109", + "/root/data/AlMgCu/data/sys.211", + "/root/data/AlMgCu/data/sys.2110", + "/root/data/AlMgCu/data/sys.2111", + "/root/data/AlMgCu/data/sys.2112", + "/root/data/AlMgCu/data/sys.2113", + "/root/data/AlMgCu/data/sys.2114", + "/root/data/AlMgCu/data/sys.2116", + "/root/data/AlMgCu/data/sys.2117", + "/root/data/AlMgCu/data/sys.2118", + "/root/data/AlMgCu/data/sys.2119", + "/root/data/AlMgCu/data/sys.212", + "/root/data/AlMgCu/data/sys.2120", + "/root/data/AlMgCu/data/sys.2121", + "/root/data/AlMgCu/data/sys.2123", + "/root/data/AlMgCu/data/sys.2124", + "/root/data/AlMgCu/data/sys.2125", + "/root/data/AlMgCu/data/sys.2126", + "/root/data/AlMgCu/data/sys.2127", + "/root/data/AlMgCu/data/sys.2129", + "/root/data/AlMgCu/data/sys.213", + "/root/data/AlMgCu/data/sys.2130", + "/root/data/AlMgCu/data/sys.2132", + "/root/data/AlMgCu/data/sys.2133", + "/root/data/AlMgCu/data/sys.2134", + "/root/data/AlMgCu/data/sys.2136", + "/root/data/AlMgCu/data/sys.2137", + "/root/data/AlMgCu/data/sys.2138", + "/root/data/AlMgCu/data/sys.2139", + "/root/data/AlMgCu/data/sys.214", + "/root/data/AlMgCu/data/sys.2140", + "/root/data/AlMgCu/data/sys.2141", + "/root/data/AlMgCu/data/sys.2142", + "/root/data/AlMgCu/data/sys.2143", + "/root/data/AlMgCu/data/sys.2144", + "/root/data/AlMgCu/data/sys.2145", + "/root/data/AlMgCu/data/sys.2146", + "/root/data/AlMgCu/data/sys.2147", + "/root/data/AlMgCu/data/sys.2148", + "/root/data/AlMgCu/data/sys.215", + "/root/data/AlMgCu/data/sys.2150", + "/root/data/AlMgCu/data/sys.2151", + "/root/data/AlMgCu/data/sys.2152", + "/root/data/AlMgCu/data/sys.2153", + "/root/data/AlMgCu/data/sys.2154", + "/root/data/AlMgCu/data/sys.2156", + "/root/data/AlMgCu/data/sys.2157", + "/root/data/AlMgCu/data/sys.2158", + "/root/data/AlMgCu/data/sys.216", + "/root/data/AlMgCu/data/sys.2160", + "/root/data/AlMgCu/data/sys.2161", + "/root/data/AlMgCu/data/sys.2162", + "/root/data/AlMgCu/data/sys.2163", + "/root/data/AlMgCu/data/sys.2164", + "/root/data/AlMgCu/data/sys.2165", + "/root/data/AlMgCu/data/sys.2166", + "/root/data/AlMgCu/data/sys.2167", + "/root/data/AlMgCu/data/sys.2168", + "/root/data/AlMgCu/data/sys.2169", + "/root/data/AlMgCu/data/sys.217", + "/root/data/AlMgCu/data/sys.2170", + "/root/data/AlMgCu/data/sys.2174", + "/root/data/AlMgCu/data/sys.2176", + "/root/data/AlMgCu/data/sys.2177", + "/root/data/AlMgCu/data/sys.2178", + "/root/data/AlMgCu/data/sys.2179", + "/root/data/AlMgCu/data/sys.218", + "/root/data/AlMgCu/data/sys.2180", + "/root/data/AlMgCu/data/sys.2181", + "/root/data/AlMgCu/data/sys.2182", + "/root/data/AlMgCu/data/sys.2184", + "/root/data/AlMgCu/data/sys.2185", + "/root/data/AlMgCu/data/sys.2186", + "/root/data/AlMgCu/data/sys.2187", + "/root/data/AlMgCu/data/sys.2188", + "/root/data/AlMgCu/data/sys.2189", + "/root/data/AlMgCu/data/sys.2190", + "/root/data/AlMgCu/data/sys.2191", + "/root/data/AlMgCu/data/sys.2194", + "/root/data/AlMgCu/data/sys.2195", + "/root/data/AlMgCu/data/sys.2196", + "/root/data/AlMgCu/data/sys.2197", + "/root/data/AlMgCu/data/sys.2198", + "/root/data/AlMgCu/data/sys.2199", + "/root/data/AlMgCu/data/sys.220", + "/root/data/AlMgCu/data/sys.2201", + "/root/data/AlMgCu/data/sys.2202", + "/root/data/AlMgCu/data/sys.2203", + "/root/data/AlMgCu/data/sys.2204", + "/root/data/AlMgCu/data/sys.2205", + "/root/data/AlMgCu/data/sys.2207", + "/root/data/AlMgCu/data/sys.2208", + "/root/data/AlMgCu/data/sys.2209", + "/root/data/AlMgCu/data/sys.221", + "/root/data/AlMgCu/data/sys.2210", + "/root/data/AlMgCu/data/sys.2211", + "/root/data/AlMgCu/data/sys.2212", + "/root/data/AlMgCu/data/sys.2213", + "/root/data/AlMgCu/data/sys.2214", + "/root/data/AlMgCu/data/sys.2215", + "/root/data/AlMgCu/data/sys.2216", + "/root/data/AlMgCu/data/sys.2217", + "/root/data/AlMgCu/data/sys.2218", + "/root/data/AlMgCu/data/sys.2219", + "/root/data/AlMgCu/data/sys.222", + "/root/data/AlMgCu/data/sys.2220", + "/root/data/AlMgCu/data/sys.2221", + "/root/data/AlMgCu/data/sys.2222", + "/root/data/AlMgCu/data/sys.2223", + "/root/data/AlMgCu/data/sys.2224", + "/root/data/AlMgCu/data/sys.2225", + "/root/data/AlMgCu/data/sys.2226", + "/root/data/AlMgCu/data/sys.2227", + "/root/data/AlMgCu/data/sys.2228", + "/root/data/AlMgCu/data/sys.2229", + "/root/data/AlMgCu/data/sys.223", + "/root/data/AlMgCu/data/sys.2230", + "/root/data/AlMgCu/data/sys.2231", + "/root/data/AlMgCu/data/sys.2233", + "/root/data/AlMgCu/data/sys.2234", + "/root/data/AlMgCu/data/sys.2235", + "/root/data/AlMgCu/data/sys.2236", + "/root/data/AlMgCu/data/sys.2237", + "/root/data/AlMgCu/data/sys.2238", + "/root/data/AlMgCu/data/sys.2239", + "/root/data/AlMgCu/data/sys.224", + "/root/data/AlMgCu/data/sys.2240", + "/root/data/AlMgCu/data/sys.2241", + "/root/data/AlMgCu/data/sys.2242", + "/root/data/AlMgCu/data/sys.2243", + "/root/data/AlMgCu/data/sys.2244", + "/root/data/AlMgCu/data/sys.2245", + "/root/data/AlMgCu/data/sys.2246", + "/root/data/AlMgCu/data/sys.2247", + "/root/data/AlMgCu/data/sys.2248", + "/root/data/AlMgCu/data/sys.2249", + "/root/data/AlMgCu/data/sys.225", + "/root/data/AlMgCu/data/sys.2250", + "/root/data/AlMgCu/data/sys.2252", + "/root/data/AlMgCu/data/sys.2253", + "/root/data/AlMgCu/data/sys.2254", + "/root/data/AlMgCu/data/sys.2255", + "/root/data/AlMgCu/data/sys.2256", + "/root/data/AlMgCu/data/sys.2257", + "/root/data/AlMgCu/data/sys.2258", + "/root/data/AlMgCu/data/sys.2259", + "/root/data/AlMgCu/data/sys.226", + "/root/data/AlMgCu/data/sys.2260", + "/root/data/AlMgCu/data/sys.2261", + "/root/data/AlMgCu/data/sys.2263", + "/root/data/AlMgCu/data/sys.2264", + "/root/data/AlMgCu/data/sys.2266", + "/root/data/AlMgCu/data/sys.2267", + "/root/data/AlMgCu/data/sys.227", + "/root/data/AlMgCu/data/sys.2270", + "/root/data/AlMgCu/data/sys.2271", + "/root/data/AlMgCu/data/sys.2272", + "/root/data/AlMgCu/data/sys.2275", + "/root/data/AlMgCu/data/sys.2276", + "/root/data/AlMgCu/data/sys.2278", + "/root/data/AlMgCu/data/sys.2279", + "/root/data/AlMgCu/data/sys.228", + "/root/data/AlMgCu/data/sys.2280", + "/root/data/AlMgCu/data/sys.2282", + "/root/data/AlMgCu/data/sys.2284", + "/root/data/AlMgCu/data/sys.2286", + "/root/data/AlMgCu/data/sys.2288", + "/root/data/AlMgCu/data/sys.2289", + "/root/data/AlMgCu/data/sys.229", + "/root/data/AlMgCu/data/sys.2290", + "/root/data/AlMgCu/data/sys.2291", + "/root/data/AlMgCu/data/sys.2292", + "/root/data/AlMgCu/data/sys.2294", + "/root/data/AlMgCu/data/sys.2295", + "/root/data/AlMgCu/data/sys.2296", + "/root/data/AlMgCu/data/sys.2297", + "/root/data/AlMgCu/data/sys.2298", + "/root/data/AlMgCu/data/sys.230", + "/root/data/AlMgCu/data/sys.2300", + "/root/data/AlMgCu/data/sys.2301", + "/root/data/AlMgCu/data/sys.2302", + "/root/data/AlMgCu/data/sys.2303", + "/root/data/AlMgCu/data/sys.2304", + "/root/data/AlMgCu/data/sys.2305", + "/root/data/AlMgCu/data/sys.2306", + "/root/data/AlMgCu/data/sys.2307", + "/root/data/AlMgCu/data/sys.2308", + "/root/data/AlMgCu/data/sys.2309", + "/root/data/AlMgCu/data/sys.2310", + "/root/data/AlMgCu/data/sys.2311", + "/root/data/AlMgCu/data/sys.2312", + "/root/data/AlMgCu/data/sys.2314", + "/root/data/AlMgCu/data/sys.2316", + "/root/data/AlMgCu/data/sys.2318", + "/root/data/AlMgCu/data/sys.232", + "/root/data/AlMgCu/data/sys.2320", + "/root/data/AlMgCu/data/sys.2322", + "/root/data/AlMgCu/data/sys.2323", + "/root/data/AlMgCu/data/sys.2324", + "/root/data/AlMgCu/data/sys.2327", + "/root/data/AlMgCu/data/sys.2328", + "/root/data/AlMgCu/data/sys.2329", + "/root/data/AlMgCu/data/sys.233", + "/root/data/AlMgCu/data/sys.2330", + "/root/data/AlMgCu/data/sys.2331", + "/root/data/AlMgCu/data/sys.2332", + "/root/data/AlMgCu/data/sys.2333", + "/root/data/AlMgCu/data/sys.2334", + "/root/data/AlMgCu/data/sys.2335", + "/root/data/AlMgCu/data/sys.2336", + "/root/data/AlMgCu/data/sys.2338", + "/root/data/AlMgCu/data/sys.2339", + "/root/data/AlMgCu/data/sys.234", + "/root/data/AlMgCu/data/sys.2340", + "/root/data/AlMgCu/data/sys.2341", + "/root/data/AlMgCu/data/sys.2342", + "/root/data/AlMgCu/data/sys.2343", + "/root/data/AlMgCu/data/sys.2344", + "/root/data/AlMgCu/data/sys.2345", + "/root/data/AlMgCu/data/sys.2346", + "/root/data/AlMgCu/data/sys.2348", + "/root/data/AlMgCu/data/sys.235", + "/root/data/AlMgCu/data/sys.2350", + "/root/data/AlMgCu/data/sys.2351", + "/root/data/AlMgCu/data/sys.2352", + "/root/data/AlMgCu/data/sys.2353", + "/root/data/AlMgCu/data/sys.2354", + "/root/data/AlMgCu/data/sys.2356", + "/root/data/AlMgCu/data/sys.2357", + "/root/data/AlMgCu/data/sys.2358", + "/root/data/AlMgCu/data/sys.2359", + "/root/data/AlMgCu/data/sys.236", + "/root/data/AlMgCu/data/sys.2360", + "/root/data/AlMgCu/data/sys.2362", + "/root/data/AlMgCu/data/sys.2363", + "/root/data/AlMgCu/data/sys.2364", + "/root/data/AlMgCu/data/sys.2367", + "/root/data/AlMgCu/data/sys.2369", + "/root/data/AlMgCu/data/sys.237", + "/root/data/AlMgCu/data/sys.2371", + "/root/data/AlMgCu/data/sys.2372", + "/root/data/AlMgCu/data/sys.2374", + "/root/data/AlMgCu/data/sys.2375", + "/root/data/AlMgCu/data/sys.2376", + "/root/data/AlMgCu/data/sys.2377", + "/root/data/AlMgCu/data/sys.2378", + "/root/data/AlMgCu/data/sys.2379", + "/root/data/AlMgCu/data/sys.238", + "/root/data/AlMgCu/data/sys.2380", + "/root/data/AlMgCu/data/sys.2382", + "/root/data/AlMgCu/data/sys.2383", + "/root/data/AlMgCu/data/sys.2384", + "/root/data/AlMgCu/data/sys.2386", + "/root/data/AlMgCu/data/sys.2387", + "/root/data/AlMgCu/data/sys.2388", + "/root/data/AlMgCu/data/sys.2390", + "/root/data/AlMgCu/data/sys.2392", + "/root/data/AlMgCu/data/sys.2393", + "/root/data/AlMgCu/data/sys.2394", + "/root/data/AlMgCu/data/sys.2395", + "/root/data/AlMgCu/data/sys.2396", + "/root/data/AlMgCu/data/sys.2397", + "/root/data/AlMgCu/data/sys.2398", + "/root/data/AlMgCu/data/sys.2399", + "/root/data/AlMgCu/data/sys.240", + "/root/data/AlMgCu/data/sys.2400", + "/root/data/AlMgCu/data/sys.2401", + "/root/data/AlMgCu/data/sys.2402", + "/root/data/AlMgCu/data/sys.2403", + "/root/data/AlMgCu/data/sys.2405", + "/root/data/AlMgCu/data/sys.2406", + "/root/data/AlMgCu/data/sys.2407", + "/root/data/AlMgCu/data/sys.2408", + "/root/data/AlMgCu/data/sys.241", + "/root/data/AlMgCu/data/sys.2410", + "/root/data/AlMgCu/data/sys.2411", + "/root/data/AlMgCu/data/sys.2412", + "/root/data/AlMgCu/data/sys.2414", + "/root/data/AlMgCu/data/sys.2415", + "/root/data/AlMgCu/data/sys.2419", + "/root/data/AlMgCu/data/sys.242", + "/root/data/AlMgCu/data/sys.2420", + "/root/data/AlMgCu/data/sys.2422", + "/root/data/AlMgCu/data/sys.2423", + "/root/data/AlMgCu/data/sys.2424", + "/root/data/AlMgCu/data/sys.2426", + "/root/data/AlMgCu/data/sys.2427", + "/root/data/AlMgCu/data/sys.2428", + "/root/data/AlMgCu/data/sys.243", + "/root/data/AlMgCu/data/sys.2430", + "/root/data/AlMgCu/data/sys.2431", + "/root/data/AlMgCu/data/sys.2432", + "/root/data/AlMgCu/data/sys.2433", + "/root/data/AlMgCu/data/sys.2434", + "/root/data/AlMgCu/data/sys.2435", + "/root/data/AlMgCu/data/sys.2436", + "/root/data/AlMgCu/data/sys.2437", + "/root/data/AlMgCu/data/sys.2438", + "/root/data/AlMgCu/data/sys.2439", + "/root/data/AlMgCu/data/sys.244", + "/root/data/AlMgCu/data/sys.2440", + "/root/data/AlMgCu/data/sys.2441", + "/root/data/AlMgCu/data/sys.2444", + "/root/data/AlMgCu/data/sys.2447", + "/root/data/AlMgCu/data/sys.2448", + "/root/data/AlMgCu/data/sys.245", + "/root/data/AlMgCu/data/sys.2450", + "/root/data/AlMgCu/data/sys.2451", + "/root/data/AlMgCu/data/sys.2452", + "/root/data/AlMgCu/data/sys.2454", + "/root/data/AlMgCu/data/sys.2455", + "/root/data/AlMgCu/data/sys.2456", + "/root/data/AlMgCu/data/sys.2458", + "/root/data/AlMgCu/data/sys.2459", + "/root/data/AlMgCu/data/sys.246", + "/root/data/AlMgCu/data/sys.2460", + "/root/data/AlMgCu/data/sys.2461", + "/root/data/AlMgCu/data/sys.2462", + "/root/data/AlMgCu/data/sys.2463", + "/root/data/AlMgCu/data/sys.2464", + "/root/data/AlMgCu/data/sys.2466", + "/root/data/AlMgCu/data/sys.2467", + "/root/data/AlMgCu/data/sys.2468", + "/root/data/AlMgCu/data/sys.247", + "/root/data/AlMgCu/data/sys.2470", + "/root/data/AlMgCu/data/sys.2471", + "/root/data/AlMgCu/data/sys.2474", + "/root/data/AlMgCu/data/sys.2476", + "/root/data/AlMgCu/data/sys.2477", + "/root/data/AlMgCu/data/sys.2478", + "/root/data/AlMgCu/data/sys.2479", + "/root/data/AlMgCu/data/sys.248", + "/root/data/AlMgCu/data/sys.2480", + "/root/data/AlMgCu/data/sys.2482", + "/root/data/AlMgCu/data/sys.2483", + "/root/data/AlMgCu/data/sys.2484", + "/root/data/AlMgCu/data/sys.2485", + "/root/data/AlMgCu/data/sys.2486", + "/root/data/AlMgCu/data/sys.2488", + "/root/data/AlMgCu/data/sys.249", + "/root/data/AlMgCu/data/sys.2490", + "/root/data/AlMgCu/data/sys.2492", + "/root/data/AlMgCu/data/sys.2494", + "/root/data/AlMgCu/data/sys.2495", + "/root/data/AlMgCu/data/sys.2496", + "/root/data/AlMgCu/data/sys.2497", + "/root/data/AlMgCu/data/sys.2498", + "/root/data/AlMgCu/data/sys.2499", + "/root/data/AlMgCu/data/sys.250", + "/root/data/AlMgCu/data/sys.2501", + "/root/data/AlMgCu/data/sys.2503", + "/root/data/AlMgCu/data/sys.2504", + "/root/data/AlMgCu/data/sys.2508", + "/root/data/AlMgCu/data/sys.2509", + "/root/data/AlMgCu/data/sys.251", + "/root/data/AlMgCu/data/sys.2511", + "/root/data/AlMgCu/data/sys.2512", + "/root/data/AlMgCu/data/sys.2514", + "/root/data/AlMgCu/data/sys.2515", + "/root/data/AlMgCu/data/sys.2516", + "/root/data/AlMgCu/data/sys.2517", + "/root/data/AlMgCu/data/sys.2518", + "/root/data/AlMgCu/data/sys.2519", + "/root/data/AlMgCu/data/sys.252", + "/root/data/AlMgCu/data/sys.2520", + "/root/data/AlMgCu/data/sys.2522", + "/root/data/AlMgCu/data/sys.2523", + "/root/data/AlMgCu/data/sys.2524", + "/root/data/AlMgCu/data/sys.2526", + "/root/data/AlMgCu/data/sys.2527", + "/root/data/AlMgCu/data/sys.2528", + "/root/data/AlMgCu/data/sys.2529", + "/root/data/AlMgCu/data/sys.253", + "/root/data/AlMgCu/data/sys.2530", + "/root/data/AlMgCu/data/sys.2531", + "/root/data/AlMgCu/data/sys.2532", + "/root/data/AlMgCu/data/sys.2534", + "/root/data/AlMgCu/data/sys.2535", + "/root/data/AlMgCu/data/sys.2536", + "/root/data/AlMgCu/data/sys.2537", + "/root/data/AlMgCu/data/sys.2538", + "/root/data/AlMgCu/data/sys.2539", + "/root/data/AlMgCu/data/sys.254", + "/root/data/AlMgCu/data/sys.2540", + "/root/data/AlMgCu/data/sys.2542", + "/root/data/AlMgCu/data/sys.2543", + "/root/data/AlMgCu/data/sys.2544", + "/root/data/AlMgCu/data/sys.2545", + "/root/data/AlMgCu/data/sys.2546", + "/root/data/AlMgCu/data/sys.2548", + "/root/data/AlMgCu/data/sys.255", + "/root/data/AlMgCu/data/sys.2550", + "/root/data/AlMgCu/data/sys.2551", + "/root/data/AlMgCu/data/sys.2554", + "/root/data/AlMgCu/data/sys.2556", + "/root/data/AlMgCu/data/sys.2558", + "/root/data/AlMgCu/data/sys.256", + "/root/data/AlMgCu/data/sys.2560", + "/root/data/AlMgCu/data/sys.2561", + "/root/data/AlMgCu/data/sys.2562", + "/root/data/AlMgCu/data/sys.2563", + "/root/data/AlMgCu/data/sys.2564", + "/root/data/AlMgCu/data/sys.2566", + "/root/data/AlMgCu/data/sys.2567", + "/root/data/AlMgCu/data/sys.2568", + "/root/data/AlMgCu/data/sys.2569", + "/root/data/AlMgCu/data/sys.257", + "/root/data/AlMgCu/data/sys.2570", + "/root/data/AlMgCu/data/sys.2571", + "/root/data/AlMgCu/data/sys.2574", + "/root/data/AlMgCu/data/sys.2575", + "/root/data/AlMgCu/data/sys.2577", + "/root/data/AlMgCu/data/sys.2578", + "/root/data/AlMgCu/data/sys.2579", + "/root/data/AlMgCu/data/sys.258", + "/root/data/AlMgCu/data/sys.2580", + "/root/data/AlMgCu/data/sys.2582", + "/root/data/AlMgCu/data/sys.2583", + "/root/data/AlMgCu/data/sys.2586", + "/root/data/AlMgCu/data/sys.2587", + "/root/data/AlMgCu/data/sys.2590", + "/root/data/AlMgCu/data/sys.2591", + "/root/data/AlMgCu/data/sys.2592", + "/root/data/AlMgCu/data/sys.2593", + "/root/data/AlMgCu/data/sys.2594", + "/root/data/AlMgCu/data/sys.2595", + "/root/data/AlMgCu/data/sys.2596", + "/root/data/AlMgCu/data/sys.2598", + "/root/data/AlMgCu/data/sys.2599", + "/root/data/AlMgCu/data/sys.260", + "/root/data/AlMgCu/data/sys.2600", + "/root/data/AlMgCu/data/sys.2601", + "/root/data/AlMgCu/data/sys.2602", + "/root/data/AlMgCu/data/sys.2603", + "/root/data/AlMgCu/data/sys.2604", + "/root/data/AlMgCu/data/sys.2605", + "/root/data/AlMgCu/data/sys.2606", + "/root/data/AlMgCu/data/sys.2607", + "/root/data/AlMgCu/data/sys.2608", + "/root/data/AlMgCu/data/sys.2609", + "/root/data/AlMgCu/data/sys.2610", + "/root/data/AlMgCu/data/sys.2611", + "/root/data/AlMgCu/data/sys.2613", + "/root/data/AlMgCu/data/sys.2614", + "/root/data/AlMgCu/data/sys.2615", + "/root/data/AlMgCu/data/sys.2616", + "/root/data/AlMgCu/data/sys.2618", + "/root/data/AlMgCu/data/sys.2619", + "/root/data/AlMgCu/data/sys.262", + "/root/data/AlMgCu/data/sys.2620", + "/root/data/AlMgCu/data/sys.2621", + "/root/data/AlMgCu/data/sys.2622", + "/root/data/AlMgCu/data/sys.2623", + "/root/data/AlMgCu/data/sys.2624", + "/root/data/AlMgCu/data/sys.2625", + "/root/data/AlMgCu/data/sys.2626", + "/root/data/AlMgCu/data/sys.2627", + "/root/data/AlMgCu/data/sys.2628", + "/root/data/AlMgCu/data/sys.2629", + "/root/data/AlMgCu/data/sys.263", + "/root/data/AlMgCu/data/sys.2630", + "/root/data/AlMgCu/data/sys.2631", + "/root/data/AlMgCu/data/sys.2632", + "/root/data/AlMgCu/data/sys.2633", + "/root/data/AlMgCu/data/sys.2634", + "/root/data/AlMgCu/data/sys.2635", + "/root/data/AlMgCu/data/sys.2636", + "/root/data/AlMgCu/data/sys.2637", + "/root/data/AlMgCu/data/sys.2638", + "/root/data/AlMgCu/data/sys.2639", + "/root/data/AlMgCu/data/sys.264", + "/root/data/AlMgCu/data/sys.2640", + "/root/data/AlMgCu/data/sys.2641", + "/root/data/AlMgCu/data/sys.2642", + "/root/data/AlMgCu/data/sys.2643", + "/root/data/AlMgCu/data/sys.2645", + "/root/data/AlMgCu/data/sys.2646", + "/root/data/AlMgCu/data/sys.2647", + "/root/data/AlMgCu/data/sys.2648", + "/root/data/AlMgCu/data/sys.2649", + "/root/data/AlMgCu/data/sys.265", + "/root/data/AlMgCu/data/sys.2650", + "/root/data/AlMgCu/data/sys.2651", + "/root/data/AlMgCu/data/sys.2652", + "/root/data/AlMgCu/data/sys.2653", + "/root/data/AlMgCu/data/sys.2654", + "/root/data/AlMgCu/data/sys.2655", + "/root/data/AlMgCu/data/sys.2656", + "/root/data/AlMgCu/data/sys.2657", + "/root/data/AlMgCu/data/sys.2658", + "/root/data/AlMgCu/data/sys.2659", + "/root/data/AlMgCu/data/sys.266", + "/root/data/AlMgCu/data/sys.2660", + "/root/data/AlMgCu/data/sys.2661", + "/root/data/AlMgCu/data/sys.2662", + "/root/data/AlMgCu/data/sys.2663", + "/root/data/AlMgCu/data/sys.2664", + "/root/data/AlMgCu/data/sys.2665", + "/root/data/AlMgCu/data/sys.2666", + "/root/data/AlMgCu/data/sys.2667", + "/root/data/AlMgCu/data/sys.2668", + "/root/data/AlMgCu/data/sys.2669", + "/root/data/AlMgCu/data/sys.267", + "/root/data/AlMgCu/data/sys.2670", + "/root/data/AlMgCu/data/sys.2671", + "/root/data/AlMgCu/data/sys.2672", + "/root/data/AlMgCu/data/sys.2673", + "/root/data/AlMgCu/data/sys.2675", + "/root/data/AlMgCu/data/sys.2676", + "/root/data/AlMgCu/data/sys.2677", + "/root/data/AlMgCu/data/sys.2679", + "/root/data/AlMgCu/data/sys.268", + "/root/data/AlMgCu/data/sys.2680", + "/root/data/AlMgCu/data/sys.2681", + "/root/data/AlMgCu/data/sys.2682", + "/root/data/AlMgCu/data/sys.2683", + "/root/data/AlMgCu/data/sys.2684", + "/root/data/AlMgCu/data/sys.2685", + "/root/data/AlMgCu/data/sys.269", + "/root/data/AlMgCu/data/sys.2690", + "/root/data/AlMgCu/data/sys.2691", + "/root/data/AlMgCu/data/sys.2692", + "/root/data/AlMgCu/data/sys.2693", + "/root/data/AlMgCu/data/sys.2694", + "/root/data/AlMgCu/data/sys.2695", + "/root/data/AlMgCu/data/sys.2696", + "/root/data/AlMgCu/data/sys.2697", + "/root/data/AlMgCu/data/sys.2698", + "/root/data/AlMgCu/data/sys.2699", + "/root/data/AlMgCu/data/sys.270", + "/root/data/AlMgCu/data/sys.2700", + "/root/data/AlMgCu/data/sys.2701", + "/root/data/AlMgCu/data/sys.2702", + "/root/data/AlMgCu/data/sys.2703", + "/root/data/AlMgCu/data/sys.2704", + "/root/data/AlMgCu/data/sys.2706", + "/root/data/AlMgCu/data/sys.2707", + "/root/data/AlMgCu/data/sys.2708", + "/root/data/AlMgCu/data/sys.2709", + "/root/data/AlMgCu/data/sys.271", + "/root/data/AlMgCu/data/sys.2710", + "/root/data/AlMgCu/data/sys.2711", + "/root/data/AlMgCu/data/sys.2712", + "/root/data/AlMgCu/data/sys.2713", + "/root/data/AlMgCu/data/sys.2715", + "/root/data/AlMgCu/data/sys.2716", + "/root/data/AlMgCu/data/sys.2717", + "/root/data/AlMgCu/data/sys.2718", + "/root/data/AlMgCu/data/sys.2719", + "/root/data/AlMgCu/data/sys.272", + "/root/data/AlMgCu/data/sys.2720", + "/root/data/AlMgCu/data/sys.2721", + "/root/data/AlMgCu/data/sys.2722", + "/root/data/AlMgCu/data/sys.2723", + "/root/data/AlMgCu/data/sys.2724", + "/root/data/AlMgCu/data/sys.2725", + "/root/data/AlMgCu/data/sys.2726", + "/root/data/AlMgCu/data/sys.2727", + "/root/data/AlMgCu/data/sys.2728", + "/root/data/AlMgCu/data/sys.2729", + "/root/data/AlMgCu/data/sys.273", + "/root/data/AlMgCu/data/sys.2730", + "/root/data/AlMgCu/data/sys.2731", + "/root/data/AlMgCu/data/sys.2732", + "/root/data/AlMgCu/data/sys.2733", + "/root/data/AlMgCu/data/sys.2734", + "/root/data/AlMgCu/data/sys.2735", + "/root/data/AlMgCu/data/sys.2736", + "/root/data/AlMgCu/data/sys.2737", + "/root/data/AlMgCu/data/sys.2738", + "/root/data/AlMgCu/data/sys.2739", + "/root/data/AlMgCu/data/sys.274", + "/root/data/AlMgCu/data/sys.2740", + "/root/data/AlMgCu/data/sys.2741", + "/root/data/AlMgCu/data/sys.2742", + "/root/data/AlMgCu/data/sys.2743", + "/root/data/AlMgCu/data/sys.2744", + "/root/data/AlMgCu/data/sys.2745", + "/root/data/AlMgCu/data/sys.2746", + "/root/data/AlMgCu/data/sys.2747", + "/root/data/AlMgCu/data/sys.2748", + "/root/data/AlMgCu/data/sys.2749", + "/root/data/AlMgCu/data/sys.275", + "/root/data/AlMgCu/data/sys.2750", + "/root/data/AlMgCu/data/sys.2751", + "/root/data/AlMgCu/data/sys.2752", + "/root/data/AlMgCu/data/sys.2753", + "/root/data/AlMgCu/data/sys.2754", + "/root/data/AlMgCu/data/sys.2755", + "/root/data/AlMgCu/data/sys.2756", + "/root/data/AlMgCu/data/sys.2757", + "/root/data/AlMgCu/data/sys.2758", + "/root/data/AlMgCu/data/sys.2759", + "/root/data/AlMgCu/data/sys.276", + "/root/data/AlMgCu/data/sys.2760", + "/root/data/AlMgCu/data/sys.2761", + "/root/data/AlMgCu/data/sys.2762", + "/root/data/AlMgCu/data/sys.2764", + "/root/data/AlMgCu/data/sys.2765", + "/root/data/AlMgCu/data/sys.2766", + "/root/data/AlMgCu/data/sys.2767", + "/root/data/AlMgCu/data/sys.2768", + "/root/data/AlMgCu/data/sys.2769", + "/root/data/AlMgCu/data/sys.277", + "/root/data/AlMgCu/data/sys.2770", + "/root/data/AlMgCu/data/sys.2771", + "/root/data/AlMgCu/data/sys.2773", + "/root/data/AlMgCu/data/sys.2774", + "/root/data/AlMgCu/data/sys.2776", + "/root/data/AlMgCu/data/sys.2777", + "/root/data/AlMgCu/data/sys.2778", + "/root/data/AlMgCu/data/sys.2779", + "/root/data/AlMgCu/data/sys.278", + "/root/data/AlMgCu/data/sys.2780", + "/root/data/AlMgCu/data/sys.2781", + "/root/data/AlMgCu/data/sys.2782", + "/root/data/AlMgCu/data/sys.2783", + "/root/data/AlMgCu/data/sys.2784", + "/root/data/AlMgCu/data/sys.2785", + "/root/data/AlMgCu/data/sys.2787", + "/root/data/AlMgCu/data/sys.2788", + "/root/data/AlMgCu/data/sys.2789", + "/root/data/AlMgCu/data/sys.279", + "/root/data/AlMgCu/data/sys.2790", + "/root/data/AlMgCu/data/sys.2791", + "/root/data/AlMgCu/data/sys.2792", + "/root/data/AlMgCu/data/sys.2793", + "/root/data/AlMgCu/data/sys.2794", + "/root/data/AlMgCu/data/sys.2795", + "/root/data/AlMgCu/data/sys.2796", + "/root/data/AlMgCu/data/sys.2797", + "/root/data/AlMgCu/data/sys.2798", + "/root/data/AlMgCu/data/sys.2799", + "/root/data/AlMgCu/data/sys.280", + "/root/data/AlMgCu/data/sys.2800", + "/root/data/AlMgCu/data/sys.2801", + "/root/data/AlMgCu/data/sys.2802", + "/root/data/AlMgCu/data/sys.2803", + "/root/data/AlMgCu/data/sys.2804", + "/root/data/AlMgCu/data/sys.2805", + "/root/data/AlMgCu/data/sys.2806", + "/root/data/AlMgCu/data/sys.2807", + "/root/data/AlMgCu/data/sys.2809", + "/root/data/AlMgCu/data/sys.281", + "/root/data/AlMgCu/data/sys.2810", + "/root/data/AlMgCu/data/sys.2811", + "/root/data/AlMgCu/data/sys.2812", + "/root/data/AlMgCu/data/sys.2813", + "/root/data/AlMgCu/data/sys.2814", + "/root/data/AlMgCu/data/sys.2815", + "/root/data/AlMgCu/data/sys.2816", + "/root/data/AlMgCu/data/sys.2817", + "/root/data/AlMgCu/data/sys.2818", + "/root/data/AlMgCu/data/sys.2819", + "/root/data/AlMgCu/data/sys.282", + "/root/data/AlMgCu/data/sys.2820", + "/root/data/AlMgCu/data/sys.2822", + "/root/data/AlMgCu/data/sys.2824", + "/root/data/AlMgCu/data/sys.2825", + "/root/data/AlMgCu/data/sys.2826", + "/root/data/AlMgCu/data/sys.2827", + "/root/data/AlMgCu/data/sys.2828", + "/root/data/AlMgCu/data/sys.2829", + "/root/data/AlMgCu/data/sys.283", + "/root/data/AlMgCu/data/sys.2830", + "/root/data/AlMgCu/data/sys.2832", + "/root/data/AlMgCu/data/sys.2833", + "/root/data/AlMgCu/data/sys.2834", + "/root/data/AlMgCu/data/sys.2835", + "/root/data/AlMgCu/data/sys.2836", + "/root/data/AlMgCu/data/sys.2837", + "/root/data/AlMgCu/data/sys.2838", + "/root/data/AlMgCu/data/sys.2839", + "/root/data/AlMgCu/data/sys.284", + "/root/data/AlMgCu/data/sys.2840", + "/root/data/AlMgCu/data/sys.2841", + "/root/data/AlMgCu/data/sys.2842", + "/root/data/AlMgCu/data/sys.2843", + "/root/data/AlMgCu/data/sys.2844", + "/root/data/AlMgCu/data/sys.2845", + "/root/data/AlMgCu/data/sys.2846", + "/root/data/AlMgCu/data/sys.2847", + "/root/data/AlMgCu/data/sys.2848", + "/root/data/AlMgCu/data/sys.2849", + "/root/data/AlMgCu/data/sys.285", + "/root/data/AlMgCu/data/sys.2850", + "/root/data/AlMgCu/data/sys.2851", + "/root/data/AlMgCu/data/sys.2852", + "/root/data/AlMgCu/data/sys.2853", + "/root/data/AlMgCu/data/sys.2854", + "/root/data/AlMgCu/data/sys.2855", + "/root/data/AlMgCu/data/sys.2856", + "/root/data/AlMgCu/data/sys.2858", + "/root/data/AlMgCu/data/sys.2859", + "/root/data/AlMgCu/data/sys.286", + "/root/data/AlMgCu/data/sys.2860", + "/root/data/AlMgCu/data/sys.2861", + "/root/data/AlMgCu/data/sys.2862", + "/root/data/AlMgCu/data/sys.2863", + "/root/data/AlMgCu/data/sys.2864", + "/root/data/AlMgCu/data/sys.2865", + "/root/data/AlMgCu/data/sys.2866", + "/root/data/AlMgCu/data/sys.2868", + "/root/data/AlMgCu/data/sys.2869", + "/root/data/AlMgCu/data/sys.287", + "/root/data/AlMgCu/data/sys.2870", + "/root/data/AlMgCu/data/sys.2871", + "/root/data/AlMgCu/data/sys.2872", + "/root/data/AlMgCu/data/sys.2873", + "/root/data/AlMgCu/data/sys.2874", + "/root/data/AlMgCu/data/sys.2875", + "/root/data/AlMgCu/data/sys.2876", + "/root/data/AlMgCu/data/sys.2877", + "/root/data/AlMgCu/data/sys.2878", + "/root/data/AlMgCu/data/sys.2879", + "/root/data/AlMgCu/data/sys.288", + "/root/data/AlMgCu/data/sys.2880", + "/root/data/AlMgCu/data/sys.2881", + "/root/data/AlMgCu/data/sys.2883", + "/root/data/AlMgCu/data/sys.2884", + "/root/data/AlMgCu/data/sys.2885", + "/root/data/AlMgCu/data/sys.2886", + "/root/data/AlMgCu/data/sys.2887", + "/root/data/AlMgCu/data/sys.2888", + "/root/data/AlMgCu/data/sys.2889", + "/root/data/AlMgCu/data/sys.289", + "/root/data/AlMgCu/data/sys.2890", + "/root/data/AlMgCu/data/sys.2891", + "/root/data/AlMgCu/data/sys.2893", + "/root/data/AlMgCu/data/sys.2894", + "/root/data/AlMgCu/data/sys.2895", + "/root/data/AlMgCu/data/sys.2896", + "/root/data/AlMgCu/data/sys.2898", + "/root/data/AlMgCu/data/sys.2899", + "/root/data/AlMgCu/data/sys.2900", + "/root/data/AlMgCu/data/sys.2901", + "/root/data/AlMgCu/data/sys.2902", + "/root/data/AlMgCu/data/sys.2903", + "/root/data/AlMgCu/data/sys.2904", + "/root/data/AlMgCu/data/sys.2905", + "/root/data/AlMgCu/data/sys.2906", + "/root/data/AlMgCu/data/sys.2907", + "/root/data/AlMgCu/data/sys.2908", + "/root/data/AlMgCu/data/sys.2909", + "/root/data/AlMgCu/data/sys.291", + "/root/data/AlMgCu/data/sys.2911", + "/root/data/AlMgCu/data/sys.2912", + "/root/data/AlMgCu/data/sys.2913", + "/root/data/AlMgCu/data/sys.2914", + "/root/data/AlMgCu/data/sys.2915", + "/root/data/AlMgCu/data/sys.2916", + "/root/data/AlMgCu/data/sys.2917", + "/root/data/AlMgCu/data/sys.2918", + "/root/data/AlMgCu/data/sys.2919", + "/root/data/AlMgCu/data/sys.292", + "/root/data/AlMgCu/data/sys.2920", + "/root/data/AlMgCu/data/sys.2922", + "/root/data/AlMgCu/data/sys.2923", + "/root/data/AlMgCu/data/sys.2924", + "/root/data/AlMgCu/data/sys.2925", + "/root/data/AlMgCu/data/sys.2926", + "/root/data/AlMgCu/data/sys.2927", + "/root/data/AlMgCu/data/sys.2928", + "/root/data/AlMgCu/data/sys.2929", + "/root/data/AlMgCu/data/sys.293", + "/root/data/AlMgCu/data/sys.2930", + "/root/data/AlMgCu/data/sys.2931", + "/root/data/AlMgCu/data/sys.2932", + "/root/data/AlMgCu/data/sys.2933", + "/root/data/AlMgCu/data/sys.2934", + "/root/data/AlMgCu/data/sys.2935", + "/root/data/AlMgCu/data/sys.2936", + "/root/data/AlMgCu/data/sys.2937", + "/root/data/AlMgCu/data/sys.2939", + "/root/data/AlMgCu/data/sys.294", + "/root/data/AlMgCu/data/sys.2940", + "/root/data/AlMgCu/data/sys.2942", + "/root/data/AlMgCu/data/sys.2943", + "/root/data/AlMgCu/data/sys.2946", + "/root/data/AlMgCu/data/sys.2947", + "/root/data/AlMgCu/data/sys.2948", + "/root/data/AlMgCu/data/sys.295", + "/root/data/AlMgCu/data/sys.2950", + "/root/data/AlMgCu/data/sys.2951", + "/root/data/AlMgCu/data/sys.2952", + "/root/data/AlMgCu/data/sys.2954", + "/root/data/AlMgCu/data/sys.2956", + "/root/data/AlMgCu/data/sys.2957", + "/root/data/AlMgCu/data/sys.2958", + "/root/data/AlMgCu/data/sys.296", + "/root/data/AlMgCu/data/sys.2960", + "/root/data/AlMgCu/data/sys.2961", + "/root/data/AlMgCu/data/sys.2962", + "/root/data/AlMgCu/data/sys.2963", + "/root/data/AlMgCu/data/sys.2964", + "/root/data/AlMgCu/data/sys.2965", + "/root/data/AlMgCu/data/sys.2967", + "/root/data/AlMgCu/data/sys.2968", + "/root/data/AlMgCu/data/sys.2969", + "/root/data/AlMgCu/data/sys.297", + "/root/data/AlMgCu/data/sys.2970", + "/root/data/AlMgCu/data/sys.2972", + "/root/data/AlMgCu/data/sys.2973", + "/root/data/AlMgCu/data/sys.2974", + "/root/data/AlMgCu/data/sys.2975", + "/root/data/AlMgCu/data/sys.2976", + "/root/data/AlMgCu/data/sys.2977", + "/root/data/AlMgCu/data/sys.2978", + "/root/data/AlMgCu/data/sys.298", + "/root/data/AlMgCu/data/sys.2980", + "/root/data/AlMgCu/data/sys.2982", + "/root/data/AlMgCu/data/sys.2983", + "/root/data/AlMgCu/data/sys.2984", + "/root/data/AlMgCu/data/sys.2986", + "/root/data/AlMgCu/data/sys.2987", + "/root/data/AlMgCu/data/sys.2988", + "/root/data/AlMgCu/data/sys.2989", + "/root/data/AlMgCu/data/sys.299", + "/root/data/AlMgCu/data/sys.2993", + "/root/data/AlMgCu/data/sys.2995", + "/root/data/AlMgCu/data/sys.2996", + "/root/data/AlMgCu/data/sys.2998", + "/root/data/AlMgCu/data/sys.2999", + "/root/data/AlMgCu/data/sys.300", + "/root/data/AlMgCu/data/sys.3000", + "/root/data/AlMgCu/data/sys.3002", + "/root/data/AlMgCu/data/sys.3003", + "/root/data/AlMgCu/data/sys.3004", + "/root/data/AlMgCu/data/sys.3006", + "/root/data/AlMgCu/data/sys.3007", + "/root/data/AlMgCu/data/sys.301", + "/root/data/AlMgCu/data/sys.3010", + "/root/data/AlMgCu/data/sys.3011", + "/root/data/AlMgCu/data/sys.3012", + "/root/data/AlMgCu/data/sys.3013", + "/root/data/AlMgCu/data/sys.3014", + "/root/data/AlMgCu/data/sys.3015", + "/root/data/AlMgCu/data/sys.3016", + "/root/data/AlMgCu/data/sys.3017", + "/root/data/AlMgCu/data/sys.3018", + "/root/data/AlMgCu/data/sys.3019", + "/root/data/AlMgCu/data/sys.302", + "/root/data/AlMgCu/data/sys.3020", + "/root/data/AlMgCu/data/sys.3021", + "/root/data/AlMgCu/data/sys.3022", + "/root/data/AlMgCu/data/sys.3023", + "/root/data/AlMgCu/data/sys.3024", + "/root/data/AlMgCu/data/sys.3025", + "/root/data/AlMgCu/data/sys.3026", + "/root/data/AlMgCu/data/sys.3027", + "/root/data/AlMgCu/data/sys.3028", + "/root/data/AlMgCu/data/sys.303", + "/root/data/AlMgCu/data/sys.3030", + "/root/data/AlMgCu/data/sys.3031", + "/root/data/AlMgCu/data/sys.3032", + "/root/data/AlMgCu/data/sys.3033", + "/root/data/AlMgCu/data/sys.3034", + "/root/data/AlMgCu/data/sys.3035", + "/root/data/AlMgCu/data/sys.3036", + "/root/data/AlMgCu/data/sys.3038", + "/root/data/AlMgCu/data/sys.3039", + "/root/data/AlMgCu/data/sys.304", + "/root/data/AlMgCu/data/sys.3040", + "/root/data/AlMgCu/data/sys.3041", + "/root/data/AlMgCu/data/sys.3042", + "/root/data/AlMgCu/data/sys.3043", + "/root/data/AlMgCu/data/sys.3044", + "/root/data/AlMgCu/data/sys.3045", + "/root/data/AlMgCu/data/sys.3046", + "/root/data/AlMgCu/data/sys.3047", + "/root/data/AlMgCu/data/sys.3048", + "/root/data/AlMgCu/data/sys.3049", + "/root/data/AlMgCu/data/sys.305", + "/root/data/AlMgCu/data/sys.3050", + "/root/data/AlMgCu/data/sys.3051", + "/root/data/AlMgCu/data/sys.3052", + "/root/data/AlMgCu/data/sys.3053", + "/root/data/AlMgCu/data/sys.3054", + "/root/data/AlMgCu/data/sys.3056", + "/root/data/AlMgCu/data/sys.3057", + "/root/data/AlMgCu/data/sys.3058", + "/root/data/AlMgCu/data/sys.3059", + "/root/data/AlMgCu/data/sys.306", + "/root/data/AlMgCu/data/sys.3060", + "/root/data/AlMgCu/data/sys.3061", + "/root/data/AlMgCu/data/sys.3062", + "/root/data/AlMgCu/data/sys.3063", + "/root/data/AlMgCu/data/sys.3064", + "/root/data/AlMgCu/data/sys.3065", + "/root/data/AlMgCu/data/sys.3066", + "/root/data/AlMgCu/data/sys.3067", + "/root/data/AlMgCu/data/sys.3069", + "/root/data/AlMgCu/data/sys.3070", + "/root/data/AlMgCu/data/sys.3071", + "/root/data/AlMgCu/data/sys.3073", + "/root/data/AlMgCu/data/sys.3074", + "/root/data/AlMgCu/data/sys.3075", + "/root/data/AlMgCu/data/sys.3077", + "/root/data/AlMgCu/data/sys.3078", + "/root/data/AlMgCu/data/sys.3079", + "/root/data/AlMgCu/data/sys.308", + "/root/data/AlMgCu/data/sys.3080", + "/root/data/AlMgCu/data/sys.3081", + "/root/data/AlMgCu/data/sys.3082", + "/root/data/AlMgCu/data/sys.3083", + "/root/data/AlMgCu/data/sys.3084", + "/root/data/AlMgCu/data/sys.3085", + "/root/data/AlMgCu/data/sys.3086", + "/root/data/AlMgCu/data/sys.3087", + "/root/data/AlMgCu/data/sys.3088", + "/root/data/AlMgCu/data/sys.309", + "/root/data/AlMgCu/data/sys.3090", + "/root/data/AlMgCu/data/sys.3091", + "/root/data/AlMgCu/data/sys.3092", + "/root/data/AlMgCu/data/sys.3093", + "/root/data/AlMgCu/data/sys.3094", + "/root/data/AlMgCu/data/sys.3095", + "/root/data/AlMgCu/data/sys.3096", + "/root/data/AlMgCu/data/sys.3097", + "/root/data/AlMgCu/data/sys.3098", + "/root/data/AlMgCu/data/sys.3099", + "/root/data/AlMgCu/data/sys.3100", + "/root/data/AlMgCu/data/sys.3101", + "/root/data/AlMgCu/data/sys.3102", + "/root/data/AlMgCu/data/sys.3103", + "/root/data/AlMgCu/data/sys.3104", + "/root/data/AlMgCu/data/sys.3106", + "/root/data/AlMgCu/data/sys.3107", + "/root/data/AlMgCu/data/sys.3108", + "/root/data/AlMgCu/data/sys.3109", + "/root/data/AlMgCu/data/sys.311", + "/root/data/AlMgCu/data/sys.3110", + "/root/data/AlMgCu/data/sys.3111", + "/root/data/AlMgCu/data/sys.3112", + "/root/data/AlMgCu/data/sys.3114", + "/root/data/AlMgCu/data/sys.3115", + "/root/data/AlMgCu/data/sys.3117", + "/root/data/AlMgCu/data/sys.3118", + "/root/data/AlMgCu/data/sys.3119", + "/root/data/AlMgCu/data/sys.312", + "/root/data/AlMgCu/data/sys.3120", + "/root/data/AlMgCu/data/sys.3121", + "/root/data/AlMgCu/data/sys.3123", + "/root/data/AlMgCu/data/sys.3124", + "/root/data/AlMgCu/data/sys.3125", + "/root/data/AlMgCu/data/sys.3126", + "/root/data/AlMgCu/data/sys.3127", + "/root/data/AlMgCu/data/sys.3128", + "/root/data/AlMgCu/data/sys.3129", + "/root/data/AlMgCu/data/sys.313", + "/root/data/AlMgCu/data/sys.3130", + "/root/data/AlMgCu/data/sys.3131", + "/root/data/AlMgCu/data/sys.3132", + "/root/data/AlMgCu/data/sys.3133", + "/root/data/AlMgCu/data/sys.3134", + "/root/data/AlMgCu/data/sys.3135", + "/root/data/AlMgCu/data/sys.3136", + "/root/data/AlMgCu/data/sys.3138", + "/root/data/AlMgCu/data/sys.3139", + "/root/data/AlMgCu/data/sys.314", + "/root/data/AlMgCu/data/sys.3142", + "/root/data/AlMgCu/data/sys.3143", + "/root/data/AlMgCu/data/sys.3144", + "/root/data/AlMgCu/data/sys.3145", + "/root/data/AlMgCu/data/sys.3146", + "/root/data/AlMgCu/data/sys.3147", + "/root/data/AlMgCu/data/sys.3148", + "/root/data/AlMgCu/data/sys.3149", + "/root/data/AlMgCu/data/sys.315", + "/root/data/AlMgCu/data/sys.3150", + "/root/data/AlMgCu/data/sys.3151", + "/root/data/AlMgCu/data/sys.3153", + "/root/data/AlMgCu/data/sys.3154", + "/root/data/AlMgCu/data/sys.3155", + "/root/data/AlMgCu/data/sys.3156", + "/root/data/AlMgCu/data/sys.3157", + "/root/data/AlMgCu/data/sys.3158", + "/root/data/AlMgCu/data/sys.3159", + "/root/data/AlMgCu/data/sys.316", + "/root/data/AlMgCu/data/sys.3160", + "/root/data/AlMgCu/data/sys.3161", + "/root/data/AlMgCu/data/sys.3162", + "/root/data/AlMgCu/data/sys.3163", + "/root/data/AlMgCu/data/sys.3164", + "/root/data/AlMgCu/data/sys.3165", + "/root/data/AlMgCu/data/sys.3166", + "/root/data/AlMgCu/data/sys.3167", + "/root/data/AlMgCu/data/sys.3168", + "/root/data/AlMgCu/data/sys.317", + "/root/data/AlMgCu/data/sys.3170", + "/root/data/AlMgCu/data/sys.3171", + "/root/data/AlMgCu/data/sys.3172", + "/root/data/AlMgCu/data/sys.3174", + "/root/data/AlMgCu/data/sys.3175", + "/root/data/AlMgCu/data/sys.3176", + "/root/data/AlMgCu/data/sys.3177", + "/root/data/AlMgCu/data/sys.3178", + "/root/data/AlMgCu/data/sys.3179", + "/root/data/AlMgCu/data/sys.318", + "/root/data/AlMgCu/data/sys.3180", + "/root/data/AlMgCu/data/sys.3181", + "/root/data/AlMgCu/data/sys.3182", + "/root/data/AlMgCu/data/sys.3183", + "/root/data/AlMgCu/data/sys.3184", + "/root/data/AlMgCu/data/sys.3185", + "/root/data/AlMgCu/data/sys.3186", + "/root/data/AlMgCu/data/sys.3187", + "/root/data/AlMgCu/data/sys.3188", + "/root/data/AlMgCu/data/sys.3189", + "/root/data/AlMgCu/data/sys.3190", + "/root/data/AlMgCu/data/sys.3191", + "/root/data/AlMgCu/data/sys.3192", + "/root/data/AlMgCu/data/sys.3193", + "/root/data/AlMgCu/data/sys.3194", + "/root/data/AlMgCu/data/sys.3195", + "/root/data/AlMgCu/data/sys.3196", + "/root/data/AlMgCu/data/sys.3198", + "/root/data/AlMgCu/data/sys.3199", + "/root/data/AlMgCu/data/sys.3200", + "/root/data/AlMgCu/data/sys.3202", + "/root/data/AlMgCu/data/sys.3203", + "/root/data/AlMgCu/data/sys.3204", + "/root/data/AlMgCu/data/sys.3205", + "/root/data/AlMgCu/data/sys.3206", + "/root/data/AlMgCu/data/sys.3207", + "/root/data/AlMgCu/data/sys.3208", + "/root/data/AlMgCu/data/sys.3209", + "/root/data/AlMgCu/data/sys.321", + "/root/data/AlMgCu/data/sys.3210", + "/root/data/AlMgCu/data/sys.3211", + "/root/data/AlMgCu/data/sys.3212", + "/root/data/AlMgCu/data/sys.3213", + "/root/data/AlMgCu/data/sys.3214", + "/root/data/AlMgCu/data/sys.3215", + "/root/data/AlMgCu/data/sys.3216", + "/root/data/AlMgCu/data/sys.3217", + "/root/data/AlMgCu/data/sys.3218", + "/root/data/AlMgCu/data/sys.322", + "/root/data/AlMgCu/data/sys.3220", + "/root/data/AlMgCu/data/sys.3221", + "/root/data/AlMgCu/data/sys.3222", + "/root/data/AlMgCu/data/sys.3223", + "/root/data/AlMgCu/data/sys.3224", + "/root/data/AlMgCu/data/sys.3225", + "/root/data/AlMgCu/data/sys.3226", + "/root/data/AlMgCu/data/sys.3227", + "/root/data/AlMgCu/data/sys.3228", + "/root/data/AlMgCu/data/sys.3229", + "/root/data/AlMgCu/data/sys.323", + "/root/data/AlMgCu/data/sys.3230", + "/root/data/AlMgCu/data/sys.3231", + "/root/data/AlMgCu/data/sys.3232", + "/root/data/AlMgCu/data/sys.3233", + "/root/data/AlMgCu/data/sys.3235", + "/root/data/AlMgCu/data/sys.3236", + "/root/data/AlMgCu/data/sys.3237", + "/root/data/AlMgCu/data/sys.3238", + "/root/data/AlMgCu/data/sys.3239", + "/root/data/AlMgCu/data/sys.3240", + "/root/data/AlMgCu/data/sys.3241", + "/root/data/AlMgCu/data/sys.3242", + "/root/data/AlMgCu/data/sys.3243", + "/root/data/AlMgCu/data/sys.3244", + "/root/data/AlMgCu/data/sys.3245", + "/root/data/AlMgCu/data/sys.3246", + "/root/data/AlMgCu/data/sys.3247", + "/root/data/AlMgCu/data/sys.3248", + "/root/data/AlMgCu/data/sys.3249", + "/root/data/AlMgCu/data/sys.325", + "/root/data/AlMgCu/data/sys.3250", + "/root/data/AlMgCu/data/sys.3251", + "/root/data/AlMgCu/data/sys.3252", + "/root/data/AlMgCu/data/sys.3253", + "/root/data/AlMgCu/data/sys.3254", + "/root/data/AlMgCu/data/sys.3255", + "/root/data/AlMgCu/data/sys.3256", + "/root/data/AlMgCu/data/sys.3257", + "/root/data/AlMgCu/data/sys.3258", + "/root/data/AlMgCu/data/sys.3259", + "/root/data/AlMgCu/data/sys.326", + "/root/data/AlMgCu/data/sys.3261", + "/root/data/AlMgCu/data/sys.3263", + "/root/data/AlMgCu/data/sys.3264", + "/root/data/AlMgCu/data/sys.3265", + "/root/data/AlMgCu/data/sys.3266", + "/root/data/AlMgCu/data/sys.3267", + "/root/data/AlMgCu/data/sys.3268", + "/root/data/AlMgCu/data/sys.3269", + "/root/data/AlMgCu/data/sys.327", + "/root/data/AlMgCu/data/sys.3270", + "/root/data/AlMgCu/data/sys.3272", + "/root/data/AlMgCu/data/sys.3274", + "/root/data/AlMgCu/data/sys.3275", + "/root/data/AlMgCu/data/sys.3276", + "/root/data/AlMgCu/data/sys.3277", + "/root/data/AlMgCu/data/sys.3278", + "/root/data/AlMgCu/data/sys.3279", + "/root/data/AlMgCu/data/sys.3280", + "/root/data/AlMgCu/data/sys.3282", + "/root/data/AlMgCu/data/sys.3283", + "/root/data/AlMgCu/data/sys.3284", + "/root/data/AlMgCu/data/sys.3286", + "/root/data/AlMgCu/data/sys.3287", + "/root/data/AlMgCu/data/sys.3289", + "/root/data/AlMgCu/data/sys.329", + "/root/data/AlMgCu/data/sys.3290", + "/root/data/AlMgCu/data/sys.3291", + "/root/data/AlMgCu/data/sys.3292", + "/root/data/AlMgCu/data/sys.3293", + "/root/data/AlMgCu/data/sys.3294", + "/root/data/AlMgCu/data/sys.3295", + "/root/data/AlMgCu/data/sys.3296", + "/root/data/AlMgCu/data/sys.3297", + "/root/data/AlMgCu/data/sys.3298", + "/root/data/AlMgCu/data/sys.3299", + "/root/data/AlMgCu/data/sys.330", + "/root/data/AlMgCu/data/sys.3300", + "/root/data/AlMgCu/data/sys.3301", + "/root/data/AlMgCu/data/sys.3302", + "/root/data/AlMgCu/data/sys.3303", + "/root/data/AlMgCu/data/sys.3304", + "/root/data/AlMgCu/data/sys.3305", + "/root/data/AlMgCu/data/sys.3306", + "/root/data/AlMgCu/data/sys.3307", + "/root/data/AlMgCu/data/sys.3308", + "/root/data/AlMgCu/data/sys.3309", + "/root/data/AlMgCu/data/sys.331", + "/root/data/AlMgCu/data/sys.3310", + "/root/data/AlMgCu/data/sys.3311", + "/root/data/AlMgCu/data/sys.3312", + "/root/data/AlMgCu/data/sys.3313", + "/root/data/AlMgCu/data/sys.3314", + "/root/data/AlMgCu/data/sys.3315", + "/root/data/AlMgCu/data/sys.3316", + "/root/data/AlMgCu/data/sys.3317", + "/root/data/AlMgCu/data/sys.3318", + "/root/data/AlMgCu/data/sys.3319", + "/root/data/AlMgCu/data/sys.332", + "/root/data/AlMgCu/data/sys.3320", + "/root/data/AlMgCu/data/sys.3321", + "/root/data/AlMgCu/data/sys.3322", + "/root/data/AlMgCu/data/sys.3323", + "/root/data/AlMgCu/data/sys.3325", + "/root/data/AlMgCu/data/sys.3326", + "/root/data/AlMgCu/data/sys.3327", + "/root/data/AlMgCu/data/sys.3328", + "/root/data/AlMgCu/data/sys.3329", + "/root/data/AlMgCu/data/sys.333", + "/root/data/AlMgCu/data/sys.3330", + "/root/data/AlMgCu/data/sys.3331", + "/root/data/AlMgCu/data/sys.3332", + "/root/data/AlMgCu/data/sys.3333", + "/root/data/AlMgCu/data/sys.3334", + "/root/data/AlMgCu/data/sys.3335", + "/root/data/AlMgCu/data/sys.3336", + "/root/data/AlMgCu/data/sys.3337", + "/root/data/AlMgCu/data/sys.3338", + "/root/data/AlMgCu/data/sys.3339", + "/root/data/AlMgCu/data/sys.334", + "/root/data/AlMgCu/data/sys.3340", + "/root/data/AlMgCu/data/sys.3341", + "/root/data/AlMgCu/data/sys.3342", + "/root/data/AlMgCu/data/sys.3343", + "/root/data/AlMgCu/data/sys.3344", + "/root/data/AlMgCu/data/sys.3345", + "/root/data/AlMgCu/data/sys.3346", + "/root/data/AlMgCu/data/sys.3347", + "/root/data/AlMgCu/data/sys.3348", + "/root/data/AlMgCu/data/sys.3349", + "/root/data/AlMgCu/data/sys.335", + "/root/data/AlMgCu/data/sys.3350", + "/root/data/AlMgCu/data/sys.3351", + "/root/data/AlMgCu/data/sys.3352", + "/root/data/AlMgCu/data/sys.3353", + "/root/data/AlMgCu/data/sys.3356", + "/root/data/AlMgCu/data/sys.3357", + "/root/data/AlMgCu/data/sys.3358", + "/root/data/AlMgCu/data/sys.336", + "/root/data/AlMgCu/data/sys.3360", + "/root/data/AlMgCu/data/sys.3361", + "/root/data/AlMgCu/data/sys.3362", + "/root/data/AlMgCu/data/sys.3363", + "/root/data/AlMgCu/data/sys.3365", + "/root/data/AlMgCu/data/sys.3367", + "/root/data/AlMgCu/data/sys.3368", + "/root/data/AlMgCu/data/sys.3369", + "/root/data/AlMgCu/data/sys.337", + "/root/data/AlMgCu/data/sys.3370", + "/root/data/AlMgCu/data/sys.3372", + "/root/data/AlMgCu/data/sys.3374", + "/root/data/AlMgCu/data/sys.3375", + "/root/data/AlMgCu/data/sys.3376", + "/root/data/AlMgCu/data/sys.3377", + "/root/data/AlMgCu/data/sys.3378", + "/root/data/AlMgCu/data/sys.3379", + "/root/data/AlMgCu/data/sys.338", + "/root/data/AlMgCu/data/sys.3380", + "/root/data/AlMgCu/data/sys.3381", + "/root/data/AlMgCu/data/sys.3382", + "/root/data/AlMgCu/data/sys.3384", + "/root/data/AlMgCu/data/sys.3385", + "/root/data/AlMgCu/data/sys.3386", + "/root/data/AlMgCu/data/sys.3387", + "/root/data/AlMgCu/data/sys.3388", + "/root/data/AlMgCu/data/sys.3389", + "/root/data/AlMgCu/data/sys.339", + "/root/data/AlMgCu/data/sys.3390", + "/root/data/AlMgCu/data/sys.3391", + "/root/data/AlMgCu/data/sys.3392", + "/root/data/AlMgCu/data/sys.3393", + "/root/data/AlMgCu/data/sys.3394", + "/root/data/AlMgCu/data/sys.3395", + "/root/data/AlMgCu/data/sys.3396", + "/root/data/AlMgCu/data/sys.3397", + "/root/data/AlMgCu/data/sys.3398", + "/root/data/AlMgCu/data/sys.3399", + "/root/data/AlMgCu/data/sys.340", + "/root/data/AlMgCu/data/sys.3400", + "/root/data/AlMgCu/data/sys.3401", + "/root/data/AlMgCu/data/sys.3402", + "/root/data/AlMgCu/data/sys.3404", + "/root/data/AlMgCu/data/sys.3405", + "/root/data/AlMgCu/data/sys.3406", + "/root/data/AlMgCu/data/sys.3407", + "/root/data/AlMgCu/data/sys.3408", + "/root/data/AlMgCu/data/sys.3409", + "/root/data/AlMgCu/data/sys.3410", + "/root/data/AlMgCu/data/sys.3412", + "/root/data/AlMgCu/data/sys.3413", + "/root/data/AlMgCu/data/sys.3416", + "/root/data/AlMgCu/data/sys.3417", + "/root/data/AlMgCu/data/sys.3418", + "/root/data/AlMgCu/data/sys.3419", + "/root/data/AlMgCu/data/sys.342", + "/root/data/AlMgCu/data/sys.3420", + "/root/data/AlMgCu/data/sys.3421", + "/root/data/AlMgCu/data/sys.3422", + "/root/data/AlMgCu/data/sys.3423", + "/root/data/AlMgCu/data/sys.3424", + "/root/data/AlMgCu/data/sys.3425", + "/root/data/AlMgCu/data/sys.3426", + "/root/data/AlMgCu/data/sys.3427", + "/root/data/AlMgCu/data/sys.3428", + "/root/data/AlMgCu/data/sys.3429", + "/root/data/AlMgCu/data/sys.343", + "/root/data/AlMgCu/data/sys.3431", + "/root/data/AlMgCu/data/sys.3432", + "/root/data/AlMgCu/data/sys.3433", + "/root/data/AlMgCu/data/sys.3434", + "/root/data/AlMgCu/data/sys.3435", + "/root/data/AlMgCu/data/sys.3436", + "/root/data/AlMgCu/data/sys.3437", + "/root/data/AlMgCu/data/sys.3438", + "/root/data/AlMgCu/data/sys.3439", + "/root/data/AlMgCu/data/sys.344", + "/root/data/AlMgCu/data/sys.3441", + "/root/data/AlMgCu/data/sys.3442", + "/root/data/AlMgCu/data/sys.3443", + "/root/data/AlMgCu/data/sys.3444", + "/root/data/AlMgCu/data/sys.3445", + "/root/data/AlMgCu/data/sys.3446", + "/root/data/AlMgCu/data/sys.3448", + "/root/data/AlMgCu/data/sys.345", + "/root/data/AlMgCu/data/sys.3450", + "/root/data/AlMgCu/data/sys.3451", + "/root/data/AlMgCu/data/sys.3452", + "/root/data/AlMgCu/data/sys.3453", + "/root/data/AlMgCu/data/sys.3454", + "/root/data/AlMgCu/data/sys.3455", + "/root/data/AlMgCu/data/sys.3456", + "/root/data/AlMgCu/data/sys.3457", + "/root/data/AlMgCu/data/sys.3458", + "/root/data/AlMgCu/data/sys.3459", + "/root/data/AlMgCu/data/sys.346", + "/root/data/AlMgCu/data/sys.3460", + "/root/data/AlMgCu/data/sys.3461", + "/root/data/AlMgCu/data/sys.3462", + "/root/data/AlMgCu/data/sys.3463", + "/root/data/AlMgCu/data/sys.3464", + "/root/data/AlMgCu/data/sys.3465", + "/root/data/AlMgCu/data/sys.3466", + "/root/data/AlMgCu/data/sys.3467", + "/root/data/AlMgCu/data/sys.3468", + "/root/data/AlMgCu/data/sys.3469", + "/root/data/AlMgCu/data/sys.3470", + "/root/data/AlMgCu/data/sys.3471", + "/root/data/AlMgCu/data/sys.3472", + "/root/data/AlMgCu/data/sys.3473", + "/root/data/AlMgCu/data/sys.3474", + "/root/data/AlMgCu/data/sys.3475", + "/root/data/AlMgCu/data/sys.3476", + "/root/data/AlMgCu/data/sys.3477", + "/root/data/AlMgCu/data/sys.3478", + "/root/data/AlMgCu/data/sys.3479", + "/root/data/AlMgCu/data/sys.348", + "/root/data/AlMgCu/data/sys.3481", + "/root/data/AlMgCu/data/sys.3482", + "/root/data/AlMgCu/data/sys.3483", + "/root/data/AlMgCu/data/sys.3484", + "/root/data/AlMgCu/data/sys.3485", + "/root/data/AlMgCu/data/sys.3486", + "/root/data/AlMgCu/data/sys.3487", + "/root/data/AlMgCu/data/sys.3488", + "/root/data/AlMgCu/data/sys.3489", + "/root/data/AlMgCu/data/sys.3490", + "/root/data/AlMgCu/data/sys.3491", + "/root/data/AlMgCu/data/sys.3492", + "/root/data/AlMgCu/data/sys.3494", + "/root/data/AlMgCu/data/sys.3496", + "/root/data/AlMgCu/data/sys.3498", + "/root/data/AlMgCu/data/sys.3499", + "/root/data/AlMgCu/data/sys.350", + "/root/data/AlMgCu/data/sys.3500", + "/root/data/AlMgCu/data/sys.3502", + "/root/data/AlMgCu/data/sys.3503", + "/root/data/AlMgCu/data/sys.3504", + "/root/data/AlMgCu/data/sys.3505", + "/root/data/AlMgCu/data/sys.3507", + "/root/data/AlMgCu/data/sys.3509", + "/root/data/AlMgCu/data/sys.351", + "/root/data/AlMgCu/data/sys.3510", + "/root/data/AlMgCu/data/sys.3512", + "/root/data/AlMgCu/data/sys.3513", + "/root/data/AlMgCu/data/sys.3514", + "/root/data/AlMgCu/data/sys.3516", + "/root/data/AlMgCu/data/sys.3517", + "/root/data/AlMgCu/data/sys.3518", + "/root/data/AlMgCu/data/sys.3519", + "/root/data/AlMgCu/data/sys.352", + "/root/data/AlMgCu/data/sys.3520", + "/root/data/AlMgCu/data/sys.3521", + "/root/data/AlMgCu/data/sys.3522", + "/root/data/AlMgCu/data/sys.3524", + "/root/data/AlMgCu/data/sys.3525", + "/root/data/AlMgCu/data/sys.3526", + "/root/data/AlMgCu/data/sys.3528", + "/root/data/AlMgCu/data/sys.3529", + "/root/data/AlMgCu/data/sys.353", + "/root/data/AlMgCu/data/sys.3530", + "/root/data/AlMgCu/data/sys.3532", + "/root/data/AlMgCu/data/sys.3534", + "/root/data/AlMgCu/data/sys.3535", + "/root/data/AlMgCu/data/sys.3536", + "/root/data/AlMgCu/data/sys.3537", + "/root/data/AlMgCu/data/sys.3538", + "/root/data/AlMgCu/data/sys.3539", + "/root/data/AlMgCu/data/sys.3540", + "/root/data/AlMgCu/data/sys.3541", + "/root/data/AlMgCu/data/sys.3542", + "/root/data/AlMgCu/data/sys.3544", + "/root/data/AlMgCu/data/sys.3545", + "/root/data/AlMgCu/data/sys.3546", + "/root/data/AlMgCu/data/sys.3547", + "/root/data/AlMgCu/data/sys.3548", + "/root/data/AlMgCu/data/sys.3549", + "/root/data/AlMgCu/data/sys.355", + "/root/data/AlMgCu/data/sys.3550", + "/root/data/AlMgCu/data/sys.3552", + "/root/data/AlMgCu/data/sys.3554", + "/root/data/AlMgCu/data/sys.3556", + "/root/data/AlMgCu/data/sys.3558", + "/root/data/AlMgCu/data/sys.356", + "/root/data/AlMgCu/data/sys.3560", + "/root/data/AlMgCu/data/sys.3562", + "/root/data/AlMgCu/data/sys.3564", + "/root/data/AlMgCu/data/sys.3566", + "/root/data/AlMgCu/data/sys.3568", + "/root/data/AlMgCu/data/sys.357", + "/root/data/AlMgCu/data/sys.3570", + "/root/data/AlMgCu/data/sys.3572", + "/root/data/AlMgCu/data/sys.3574", + "/root/data/AlMgCu/data/sys.3576", + "/root/data/AlMgCu/data/sys.3578", + "/root/data/AlMgCu/data/sys.358", + "/root/data/AlMgCu/data/sys.3580", + "/root/data/AlMgCu/data/sys.3582", + "/root/data/AlMgCu/data/sys.3583", + "/root/data/AlMgCu/data/sys.3584", + "/root/data/AlMgCu/data/sys.3586", + "/root/data/AlMgCu/data/sys.3587", + "/root/data/AlMgCu/data/sys.3588", + "/root/data/AlMgCu/data/sys.3589", + "/root/data/AlMgCu/data/sys.3590", + "/root/data/AlMgCu/data/sys.3591", + "/root/data/AlMgCu/data/sys.3592", + "/root/data/AlMgCu/data/sys.3593", + "/root/data/AlMgCu/data/sys.3594", + "/root/data/AlMgCu/data/sys.3595", + "/root/data/AlMgCu/data/sys.3596", + "/root/data/AlMgCu/data/sys.3597", + "/root/data/AlMgCu/data/sys.3598", + "/root/data/AlMgCu/data/sys.360", + "/root/data/AlMgCu/data/sys.3600", + "/root/data/AlMgCu/data/sys.3601", + "/root/data/AlMgCu/data/sys.3602", + "/root/data/AlMgCu/data/sys.3603", + "/root/data/AlMgCu/data/sys.3604", + "/root/data/AlMgCu/data/sys.3605", + "/root/data/AlMgCu/data/sys.3606", + "/root/data/AlMgCu/data/sys.3607", + "/root/data/AlMgCu/data/sys.3608", + "/root/data/AlMgCu/data/sys.3609", + "/root/data/AlMgCu/data/sys.361", + "/root/data/AlMgCu/data/sys.3610", + "/root/data/AlMgCu/data/sys.3611", + "/root/data/AlMgCu/data/sys.3612", + "/root/data/AlMgCu/data/sys.3613", + "/root/data/AlMgCu/data/sys.3615", + "/root/data/AlMgCu/data/sys.3616", + "/root/data/AlMgCu/data/sys.3617", + "/root/data/AlMgCu/data/sys.3618", + "/root/data/AlMgCu/data/sys.3619", + "/root/data/AlMgCu/data/sys.362", + "/root/data/AlMgCu/data/sys.3620", + "/root/data/AlMgCu/data/sys.3621", + "/root/data/AlMgCu/data/sys.3622", + "/root/data/AlMgCu/data/sys.3623", + "/root/data/AlMgCu/data/sys.3624", + "/root/data/AlMgCu/data/sys.3626", + "/root/data/AlMgCu/data/sys.3628", + "/root/data/AlMgCu/data/sys.3629", + "/root/data/AlMgCu/data/sys.363", + "/root/data/AlMgCu/data/sys.3630", + "/root/data/AlMgCu/data/sys.3632", + "/root/data/AlMgCu/data/sys.3633", + "/root/data/AlMgCu/data/sys.3636", + "/root/data/AlMgCu/data/sys.3638", + "/root/data/AlMgCu/data/sys.3640", + "/root/data/AlMgCu/data/sys.3641", + "/root/data/AlMgCu/data/sys.3642", + "/root/data/AlMgCu/data/sys.3644", + "/root/data/AlMgCu/data/sys.3646", + "/root/data/AlMgCu/data/sys.3648", + "/root/data/AlMgCu/data/sys.365", + "/root/data/AlMgCu/data/sys.3652", + "/root/data/AlMgCu/data/sys.3653", + "/root/data/AlMgCu/data/sys.3654", + "/root/data/AlMgCu/data/sys.3655", + "/root/data/AlMgCu/data/sys.3656", + "/root/data/AlMgCu/data/sys.3657", + "/root/data/AlMgCu/data/sys.3658", + "/root/data/AlMgCu/data/sys.3659", + "/root/data/AlMgCu/data/sys.366", + "/root/data/AlMgCu/data/sys.3660", + "/root/data/AlMgCu/data/sys.3661", + "/root/data/AlMgCu/data/sys.3662", + "/root/data/AlMgCu/data/sys.3663", + "/root/data/AlMgCu/data/sys.3664", + "/root/data/AlMgCu/data/sys.3665", + "/root/data/AlMgCu/data/sys.3666", + "/root/data/AlMgCu/data/sys.3667", + "/root/data/AlMgCu/data/sys.3668", + "/root/data/AlMgCu/data/sys.3669", + "/root/data/AlMgCu/data/sys.367", + "/root/data/AlMgCu/data/sys.3670", + "/root/data/AlMgCu/data/sys.3671", + "/root/data/AlMgCu/data/sys.3672", + "/root/data/AlMgCu/data/sys.3673", + "/root/data/AlMgCu/data/sys.3675", + "/root/data/AlMgCu/data/sys.3676", + "/root/data/AlMgCu/data/sys.3677", + "/root/data/AlMgCu/data/sys.3678", + "/root/data/AlMgCu/data/sys.368", + "/root/data/AlMgCu/data/sys.3680", + "/root/data/AlMgCu/data/sys.3681", + "/root/data/AlMgCu/data/sys.3682", + "/root/data/AlMgCu/data/sys.3684", + "/root/data/AlMgCu/data/sys.3686", + "/root/data/AlMgCu/data/sys.3688", + "/root/data/AlMgCu/data/sys.369", + "/root/data/AlMgCu/data/sys.3690", + "/root/data/AlMgCu/data/sys.3692", + "/root/data/AlMgCu/data/sys.3694", + "/root/data/AlMgCu/data/sys.3696", + "/root/data/AlMgCu/data/sys.3697", + "/root/data/AlMgCu/data/sys.3698", + "/root/data/AlMgCu/data/sys.3699", + "/root/data/AlMgCu/data/sys.370", + "/root/data/AlMgCu/data/sys.3700", + "/root/data/AlMgCu/data/sys.3701", + "/root/data/AlMgCu/data/sys.3702", + "/root/data/AlMgCu/data/sys.3703", + "/root/data/AlMgCu/data/sys.3704", + "/root/data/AlMgCu/data/sys.3706", + "/root/data/AlMgCu/data/sys.3707", + "/root/data/AlMgCu/data/sys.3709", + "/root/data/AlMgCu/data/sys.371", + "/root/data/AlMgCu/data/sys.3710", + "/root/data/AlMgCu/data/sys.3711", + "/root/data/AlMgCu/data/sys.3712", + "/root/data/AlMgCu/data/sys.3713", + "/root/data/AlMgCu/data/sys.3714", + "/root/data/AlMgCu/data/sys.3715", + "/root/data/AlMgCu/data/sys.3716", + "/root/data/AlMgCu/data/sys.3717", + "/root/data/AlMgCu/data/sys.3718", + "/root/data/AlMgCu/data/sys.3719", + "/root/data/AlMgCu/data/sys.372", + "/root/data/AlMgCu/data/sys.3720", + "/root/data/AlMgCu/data/sys.3721", + "/root/data/AlMgCu/data/sys.3722", + "/root/data/AlMgCu/data/sys.3723", + "/root/data/AlMgCu/data/sys.3724", + "/root/data/AlMgCu/data/sys.3725", + "/root/data/AlMgCu/data/sys.3726", + "/root/data/AlMgCu/data/sys.3728", + "/root/data/AlMgCu/data/sys.3729", + "/root/data/AlMgCu/data/sys.373", + "/root/data/AlMgCu/data/sys.3730", + "/root/data/AlMgCu/data/sys.3731", + "/root/data/AlMgCu/data/sys.3734", + "/root/data/AlMgCu/data/sys.3735", + "/root/data/AlMgCu/data/sys.3736", + "/root/data/AlMgCu/data/sys.3737", + "/root/data/AlMgCu/data/sys.3739", + "/root/data/AlMgCu/data/sys.374", + "/root/data/AlMgCu/data/sys.3740", + "/root/data/AlMgCu/data/sys.3741", + "/root/data/AlMgCu/data/sys.3742", + "/root/data/AlMgCu/data/sys.3743", + "/root/data/AlMgCu/data/sys.3744", + "/root/data/AlMgCu/data/sys.3746", + "/root/data/AlMgCu/data/sys.3747", + "/root/data/AlMgCu/data/sys.3749", + "/root/data/AlMgCu/data/sys.375", + "/root/data/AlMgCu/data/sys.3750", + "/root/data/AlMgCu/data/sys.3751", + "/root/data/AlMgCu/data/sys.3752", + "/root/data/AlMgCu/data/sys.3753", + "/root/data/AlMgCu/data/sys.3754", + "/root/data/AlMgCu/data/sys.3756", + "/root/data/AlMgCu/data/sys.376", + "/root/data/AlMgCu/data/sys.3760", + "/root/data/AlMgCu/data/sys.3761", + "/root/data/AlMgCu/data/sys.3762", + "/root/data/AlMgCu/data/sys.3764", + "/root/data/AlMgCu/data/sys.3765", + "/root/data/AlMgCu/data/sys.3766", + "/root/data/AlMgCu/data/sys.3768", + "/root/data/AlMgCu/data/sys.3769", + "/root/data/AlMgCu/data/sys.377", + "/root/data/AlMgCu/data/sys.3770", + "/root/data/AlMgCu/data/sys.3771", + "/root/data/AlMgCu/data/sys.3772", + "/root/data/AlMgCu/data/sys.3773", + "/root/data/AlMgCu/data/sys.3774", + "/root/data/AlMgCu/data/sys.3776", + "/root/data/AlMgCu/data/sys.3777", + "/root/data/AlMgCu/data/sys.3778", + "/root/data/AlMgCu/data/sys.3779", + "/root/data/AlMgCu/data/sys.378", + "/root/data/AlMgCu/data/sys.3780", + "/root/data/AlMgCu/data/sys.3781", + "/root/data/AlMgCu/data/sys.3782", + "/root/data/AlMgCu/data/sys.3784", + "/root/data/AlMgCu/data/sys.3785", + "/root/data/AlMgCu/data/sys.3786", + "/root/data/AlMgCu/data/sys.3787", + "/root/data/AlMgCu/data/sys.3788", + "/root/data/AlMgCu/data/sys.3789", + "/root/data/AlMgCu/data/sys.379", + "/root/data/AlMgCu/data/sys.3790", + "/root/data/AlMgCu/data/sys.3791", + "/root/data/AlMgCu/data/sys.3792", + "/root/data/AlMgCu/data/sys.3793", + "/root/data/AlMgCu/data/sys.3794", + "/root/data/AlMgCu/data/sys.3795", + "/root/data/AlMgCu/data/sys.3796", + "/root/data/AlMgCu/data/sys.3797", + "/root/data/AlMgCu/data/sys.3798", + "/root/data/AlMgCu/data/sys.3799", + "/root/data/AlMgCu/data/sys.380", + "/root/data/AlMgCu/data/sys.3800", + "/root/data/AlMgCu/data/sys.3801", + "/root/data/AlMgCu/data/sys.3802", + "/root/data/AlMgCu/data/sys.3803", + "/root/data/AlMgCu/data/sys.3804", + "/root/data/AlMgCu/data/sys.3805", + "/root/data/AlMgCu/data/sys.3806", + "/root/data/AlMgCu/data/sys.3808", + "/root/data/AlMgCu/data/sys.3809", + "/root/data/AlMgCu/data/sys.381", + "/root/data/AlMgCu/data/sys.3810", + "/root/data/AlMgCu/data/sys.3811", + "/root/data/AlMgCu/data/sys.3812", + "/root/data/AlMgCu/data/sys.3813", + "/root/data/AlMgCu/data/sys.3814", + "/root/data/AlMgCu/data/sys.3816", + "/root/data/AlMgCu/data/sys.3817", + "/root/data/AlMgCu/data/sys.3818", + "/root/data/AlMgCu/data/sys.3819", + "/root/data/AlMgCu/data/sys.3820", + "/root/data/AlMgCu/data/sys.3821", + "/root/data/AlMgCu/data/sys.3822", + "/root/data/AlMgCu/data/sys.3823", + "/root/data/AlMgCu/data/sys.3824", + "/root/data/AlMgCu/data/sys.3826", + "/root/data/AlMgCu/data/sys.3828", + "/root/data/AlMgCu/data/sys.3829", + "/root/data/AlMgCu/data/sys.383", + "/root/data/AlMgCu/data/sys.3830", + "/root/data/AlMgCu/data/sys.3831", + "/root/data/AlMgCu/data/sys.3832", + "/root/data/AlMgCu/data/sys.3833", + "/root/data/AlMgCu/data/sys.3834", + "/root/data/AlMgCu/data/sys.3835", + "/root/data/AlMgCu/data/sys.3836", + "/root/data/AlMgCu/data/sys.3837", + "/root/data/AlMgCu/data/sys.3838", + "/root/data/AlMgCu/data/sys.3839", + "/root/data/AlMgCu/data/sys.384", + "/root/data/AlMgCu/data/sys.3840", + "/root/data/AlMgCu/data/sys.3841", + "/root/data/AlMgCu/data/sys.3842", + "/root/data/AlMgCu/data/sys.3843", + "/root/data/AlMgCu/data/sys.3844", + "/root/data/AlMgCu/data/sys.3845", + "/root/data/AlMgCu/data/sys.3846", + "/root/data/AlMgCu/data/sys.3847", + "/root/data/AlMgCu/data/sys.3849", + "/root/data/AlMgCu/data/sys.385", + "/root/data/AlMgCu/data/sys.3850", + "/root/data/AlMgCu/data/sys.3851", + "/root/data/AlMgCu/data/sys.3852", + "/root/data/AlMgCu/data/sys.3853", + "/root/data/AlMgCu/data/sys.3854", + "/root/data/AlMgCu/data/sys.3855", + "/root/data/AlMgCu/data/sys.3856", + "/root/data/AlMgCu/data/sys.3857", + "/root/data/AlMgCu/data/sys.3858", + "/root/data/AlMgCu/data/sys.3859", + "/root/data/AlMgCu/data/sys.386", + "/root/data/AlMgCu/data/sys.3860", + "/root/data/AlMgCu/data/sys.3861", + "/root/data/AlMgCu/data/sys.3862", + "/root/data/AlMgCu/data/sys.3863", + "/root/data/AlMgCu/data/sys.3865", + "/root/data/AlMgCu/data/sys.3866", + "/root/data/AlMgCu/data/sys.3868", + "/root/data/AlMgCu/data/sys.3869", + "/root/data/AlMgCu/data/sys.387", + "/root/data/AlMgCu/data/sys.3870", + "/root/data/AlMgCu/data/sys.3872", + "/root/data/AlMgCu/data/sys.3873", + "/root/data/AlMgCu/data/sys.3874", + "/root/data/AlMgCu/data/sys.3875", + "/root/data/AlMgCu/data/sys.3876", + "/root/data/AlMgCu/data/sys.3877", + "/root/data/AlMgCu/data/sys.3879", + "/root/data/AlMgCu/data/sys.388", + "/root/data/AlMgCu/data/sys.3880", + "/root/data/AlMgCu/data/sys.3881", + "/root/data/AlMgCu/data/sys.3882", + "/root/data/AlMgCu/data/sys.3885", + "/root/data/AlMgCu/data/sys.3888", + "/root/data/AlMgCu/data/sys.3889", + "/root/data/AlMgCu/data/sys.389", + "/root/data/AlMgCu/data/sys.3890", + "/root/data/AlMgCu/data/sys.3891", + "/root/data/AlMgCu/data/sys.3892", + "/root/data/AlMgCu/data/sys.3893", + "/root/data/AlMgCu/data/sys.3894", + "/root/data/AlMgCu/data/sys.3895", + "/root/data/AlMgCu/data/sys.3896", + "/root/data/AlMgCu/data/sys.3898", + "/root/data/AlMgCu/data/sys.3899", + "/root/data/AlMgCu/data/sys.390", + "/root/data/AlMgCu/data/sys.3900", + "/root/data/AlMgCu/data/sys.3901", + "/root/data/AlMgCu/data/sys.3902", + "/root/data/AlMgCu/data/sys.3904", + "/root/data/AlMgCu/data/sys.3905", + "/root/data/AlMgCu/data/sys.3908", + "/root/data/AlMgCu/data/sys.3909", + "/root/data/AlMgCu/data/sys.391", + "/root/data/AlMgCu/data/sys.3910", + "/root/data/AlMgCu/data/sys.3912", + "/root/data/AlMgCu/data/sys.3914", + "/root/data/AlMgCu/data/sys.3915", + "/root/data/AlMgCu/data/sys.3916", + "/root/data/AlMgCu/data/sys.3917", + "/root/data/AlMgCu/data/sys.3918", + "/root/data/AlMgCu/data/sys.3920", + "/root/data/AlMgCu/data/sys.3921", + "/root/data/AlMgCu/data/sys.3922", + "/root/data/AlMgCu/data/sys.3924", + "/root/data/AlMgCu/data/sys.3926", + "/root/data/AlMgCu/data/sys.3927", + "/root/data/AlMgCu/data/sys.3929", + "/root/data/AlMgCu/data/sys.393", + "/root/data/AlMgCu/data/sys.3930", + "/root/data/AlMgCu/data/sys.3933", + "/root/data/AlMgCu/data/sys.3934", + "/root/data/AlMgCu/data/sys.3935", + "/root/data/AlMgCu/data/sys.3936", + "/root/data/AlMgCu/data/sys.3937", + "/root/data/AlMgCu/data/sys.3938", + "/root/data/AlMgCu/data/sys.3940", + "/root/data/AlMgCu/data/sys.3941", + "/root/data/AlMgCu/data/sys.3942", + "/root/data/AlMgCu/data/sys.3943", + "/root/data/AlMgCu/data/sys.3944", + "/root/data/AlMgCu/data/sys.3945", + "/root/data/AlMgCu/data/sys.3946", + "/root/data/AlMgCu/data/sys.3947", + "/root/data/AlMgCu/data/sys.3948", + "/root/data/AlMgCu/data/sys.3949", + "/root/data/AlMgCu/data/sys.395", + "/root/data/AlMgCu/data/sys.3950", + "/root/data/AlMgCu/data/sys.3951", + "/root/data/AlMgCu/data/sys.3952", + "/root/data/AlMgCu/data/sys.3953", + "/root/data/AlMgCu/data/sys.3954", + "/root/data/AlMgCu/data/sys.3955", + "/root/data/AlMgCu/data/sys.3956", + "/root/data/AlMgCu/data/sys.3959", + "/root/data/AlMgCu/data/sys.396", + "/root/data/AlMgCu/data/sys.3961", + "/root/data/AlMgCu/data/sys.3962", + "/root/data/AlMgCu/data/sys.3963", + "/root/data/AlMgCu/data/sys.3964", + "/root/data/AlMgCu/data/sys.3965", + "/root/data/AlMgCu/data/sys.3966", + "/root/data/AlMgCu/data/sys.3967", + "/root/data/AlMgCu/data/sys.3968", + "/root/data/AlMgCu/data/sys.3969", + "/root/data/AlMgCu/data/sys.397", + "/root/data/AlMgCu/data/sys.3970", + "/root/data/AlMgCu/data/sys.3971", + "/root/data/AlMgCu/data/sys.3973", + "/root/data/AlMgCu/data/sys.3975", + "/root/data/AlMgCu/data/sys.3977", + "/root/data/AlMgCu/data/sys.3978", + "/root/data/AlMgCu/data/sys.3979", + "/root/data/AlMgCu/data/sys.398", + "/root/data/AlMgCu/data/sys.3980", + "/root/data/AlMgCu/data/sys.3981", + "/root/data/AlMgCu/data/sys.3982", + "/root/data/AlMgCu/data/sys.3983", + "/root/data/AlMgCu/data/sys.3984", + "/root/data/AlMgCu/data/sys.3985", + "/root/data/AlMgCu/data/sys.3986", + "/root/data/AlMgCu/data/sys.3987", + "/root/data/AlMgCu/data/sys.3988", + "/root/data/AlMgCu/data/sys.3989", + "/root/data/AlMgCu/data/sys.399", + "/root/data/AlMgCu/data/sys.3990", + "/root/data/AlMgCu/data/sys.3991", + "/root/data/AlMgCu/data/sys.3992", + "/root/data/AlMgCu/data/sys.3993", + "/root/data/AlMgCu/data/sys.3994", + "/root/data/AlMgCu/data/sys.3997", + "/root/data/AlMgCu/data/sys.3999", + "/root/data/AlMgCu/data/sys.400", + "/root/data/AlMgCu/data/sys.4000", + "/root/data/AlMgCu/data/sys.4001", + "/root/data/AlMgCu/data/sys.4002", + "/root/data/AlMgCu/data/sys.4003", + "/root/data/AlMgCu/data/sys.4004", + "/root/data/AlMgCu/data/sys.4005", + "/root/data/AlMgCu/data/sys.4006", + "/root/data/AlMgCu/data/sys.4007", + "/root/data/AlMgCu/data/sys.4008", + "/root/data/AlMgCu/data/sys.4009", + "/root/data/AlMgCu/data/sys.401", + "/root/data/AlMgCu/data/sys.4010", + "/root/data/AlMgCu/data/sys.4011", + "/root/data/AlMgCu/data/sys.4012", + "/root/data/AlMgCu/data/sys.4013", + "/root/data/AlMgCu/data/sys.4014", + "/root/data/AlMgCu/data/sys.4015", + "/root/data/AlMgCu/data/sys.4016", + "/root/data/AlMgCu/data/sys.4017", + "/root/data/AlMgCu/data/sys.4018", + "/root/data/AlMgCu/data/sys.4019", + "/root/data/AlMgCu/data/sys.402", + "/root/data/AlMgCu/data/sys.4020", + "/root/data/AlMgCu/data/sys.4021", + "/root/data/AlMgCu/data/sys.4022", + "/root/data/AlMgCu/data/sys.4023", + "/root/data/AlMgCu/data/sys.4024", + "/root/data/AlMgCu/data/sys.4026", + "/root/data/AlMgCu/data/sys.4028", + "/root/data/AlMgCu/data/sys.4029", + "/root/data/AlMgCu/data/sys.403", + "/root/data/AlMgCu/data/sys.4030", + "/root/data/AlMgCu/data/sys.4031", + "/root/data/AlMgCu/data/sys.4032", + "/root/data/AlMgCu/data/sys.4033", + "/root/data/AlMgCu/data/sys.4036", + "/root/data/AlMgCu/data/sys.4037", + "/root/data/AlMgCu/data/sys.4038", + "/root/data/AlMgCu/data/sys.4039", + "/root/data/AlMgCu/data/sys.404", + "/root/data/AlMgCu/data/sys.4040", + "/root/data/AlMgCu/data/sys.4041", + "/root/data/AlMgCu/data/sys.4042", + "/root/data/AlMgCu/data/sys.4044", + "/root/data/AlMgCu/data/sys.4045", + "/root/data/AlMgCu/data/sys.4046", + "/root/data/AlMgCu/data/sys.4047", + "/root/data/AlMgCu/data/sys.4048", + "/root/data/AlMgCu/data/sys.4049", + "/root/data/AlMgCu/data/sys.405", + "/root/data/AlMgCu/data/sys.4050", + "/root/data/AlMgCu/data/sys.4052", + "/root/data/AlMgCu/data/sys.4054", + "/root/data/AlMgCu/data/sys.4055", + "/root/data/AlMgCu/data/sys.4056", + "/root/data/AlMgCu/data/sys.4057", + "/root/data/AlMgCu/data/sys.4058", + "/root/data/AlMgCu/data/sys.4059", + "/root/data/AlMgCu/data/sys.406", + "/root/data/AlMgCu/data/sys.4060", + "/root/data/AlMgCu/data/sys.4061", + "/root/data/AlMgCu/data/sys.4062", + "/root/data/AlMgCu/data/sys.4063", + "/root/data/AlMgCu/data/sys.4066", + "/root/data/AlMgCu/data/sys.4067", + "/root/data/AlMgCu/data/sys.4068", + "/root/data/AlMgCu/data/sys.4069", + "/root/data/AlMgCu/data/sys.407", + "/root/data/AlMgCu/data/sys.4070", + "/root/data/AlMgCu/data/sys.4071", + "/root/data/AlMgCu/data/sys.4072", + "/root/data/AlMgCu/data/sys.4073", + "/root/data/AlMgCu/data/sys.4074", + "/root/data/AlMgCu/data/sys.4075", + "/root/data/AlMgCu/data/sys.4076", + "/root/data/AlMgCu/data/sys.4078", + "/root/data/AlMgCu/data/sys.4079", + "/root/data/AlMgCu/data/sys.408", + "/root/data/AlMgCu/data/sys.4080", + "/root/data/AlMgCu/data/sys.4081", + "/root/data/AlMgCu/data/sys.4082", + "/root/data/AlMgCu/data/sys.4083", + "/root/data/AlMgCu/data/sys.4084", + "/root/data/AlMgCu/data/sys.4085", + "/root/data/AlMgCu/data/sys.4086", + "/root/data/AlMgCu/data/sys.4087", + "/root/data/AlMgCu/data/sys.4088", + "/root/data/AlMgCu/data/sys.4089", + "/root/data/AlMgCu/data/sys.409", + "/root/data/AlMgCu/data/sys.4090", + "/root/data/AlMgCu/data/sys.4091", + "/root/data/AlMgCu/data/sys.4092", + "/root/data/AlMgCu/data/sys.4093", + "/root/data/AlMgCu/data/sys.4094", + "/root/data/AlMgCu/data/sys.4095", + "/root/data/AlMgCu/data/sys.4096", + "/root/data/AlMgCu/data/sys.4097", + "/root/data/AlMgCu/data/sys.4098", + "/root/data/AlMgCu/data/sys.4099", + "/root/data/AlMgCu/data/sys.410", + "/root/data/AlMgCu/data/sys.4100", + "/root/data/AlMgCu/data/sys.4101", + "/root/data/AlMgCu/data/sys.4102", + "/root/data/AlMgCu/data/sys.4104", + "/root/data/AlMgCu/data/sys.4105", + "/root/data/AlMgCu/data/sys.4106", + "/root/data/AlMgCu/data/sys.4107", + "/root/data/AlMgCu/data/sys.4108", + "/root/data/AlMgCu/data/sys.411", + "/root/data/AlMgCu/data/sys.4110", + "/root/data/AlMgCu/data/sys.4111", + "/root/data/AlMgCu/data/sys.4112", + "/root/data/AlMgCu/data/sys.4113", + "/root/data/AlMgCu/data/sys.4114", + "/root/data/AlMgCu/data/sys.4115", + "/root/data/AlMgCu/data/sys.4116", + "/root/data/AlMgCu/data/sys.4117", + "/root/data/AlMgCu/data/sys.4118", + "/root/data/AlMgCu/data/sys.4119", + "/root/data/AlMgCu/data/sys.412", + "/root/data/AlMgCu/data/sys.4120", + "/root/data/AlMgCu/data/sys.4121", + "/root/data/AlMgCu/data/sys.4122", + "/root/data/AlMgCu/data/sys.4125", + "/root/data/AlMgCu/data/sys.4126", + "/root/data/AlMgCu/data/sys.4127", + "/root/data/AlMgCu/data/sys.4128", + "/root/data/AlMgCu/data/sys.4129", + "/root/data/AlMgCu/data/sys.413", + "/root/data/AlMgCu/data/sys.4130", + "/root/data/AlMgCu/data/sys.4131", + "/root/data/AlMgCu/data/sys.4132", + "/root/data/AlMgCu/data/sys.4133", + "/root/data/AlMgCu/data/sys.4134", + "/root/data/AlMgCu/data/sys.4135", + "/root/data/AlMgCu/data/sys.4136", + "/root/data/AlMgCu/data/sys.4137", + "/root/data/AlMgCu/data/sys.4138", + "/root/data/AlMgCu/data/sys.414", + "/root/data/AlMgCu/data/sys.4140", + "/root/data/AlMgCu/data/sys.4141", + "/root/data/AlMgCu/data/sys.4142", + "/root/data/AlMgCu/data/sys.4143", + "/root/data/AlMgCu/data/sys.4144", + "/root/data/AlMgCu/data/sys.4145", + "/root/data/AlMgCu/data/sys.4146", + "/root/data/AlMgCu/data/sys.4147", + "/root/data/AlMgCu/data/sys.4148", + "/root/data/AlMgCu/data/sys.4149", + "/root/data/AlMgCu/data/sys.415", + "/root/data/AlMgCu/data/sys.4150", + "/root/data/AlMgCu/data/sys.4151", + "/root/data/AlMgCu/data/sys.4152", + "/root/data/AlMgCu/data/sys.4153", + "/root/data/AlMgCu/data/sys.4154", + "/root/data/AlMgCu/data/sys.4155", + "/root/data/AlMgCu/data/sys.4157", + "/root/data/AlMgCu/data/sys.4158", + "/root/data/AlMgCu/data/sys.4159", + "/root/data/AlMgCu/data/sys.416", + "/root/data/AlMgCu/data/sys.4161", + "/root/data/AlMgCu/data/sys.4162", + "/root/data/AlMgCu/data/sys.4163", + "/root/data/AlMgCu/data/sys.4164", + "/root/data/AlMgCu/data/sys.4165", + "/root/data/AlMgCu/data/sys.4166", + "/root/data/AlMgCu/data/sys.4167", + "/root/data/AlMgCu/data/sys.4168", + "/root/data/AlMgCu/data/sys.4169", + "/root/data/AlMgCu/data/sys.4170", + "/root/data/AlMgCu/data/sys.4171", + "/root/data/AlMgCu/data/sys.4172", + "/root/data/AlMgCu/data/sys.4174", + "/root/data/AlMgCu/data/sys.4175", + "/root/data/AlMgCu/data/sys.4176", + "/root/data/AlMgCu/data/sys.4177", + "/root/data/AlMgCu/data/sys.4178", + "/root/data/AlMgCu/data/sys.4180", + "/root/data/AlMgCu/data/sys.4181", + "/root/data/AlMgCu/data/sys.4182", + "/root/data/AlMgCu/data/sys.4183", + "/root/data/AlMgCu/data/sys.4184", + "/root/data/AlMgCu/data/sys.4185", + "/root/data/AlMgCu/data/sys.4186", + "/root/data/AlMgCu/data/sys.4187", + "/root/data/AlMgCu/data/sys.4188", + "/root/data/AlMgCu/data/sys.419", + "/root/data/AlMgCu/data/sys.4190", + "/root/data/AlMgCu/data/sys.4191", + "/root/data/AlMgCu/data/sys.4192", + "/root/data/AlMgCu/data/sys.4193", + "/root/data/AlMgCu/data/sys.4194", + "/root/data/AlMgCu/data/sys.4195", + "/root/data/AlMgCu/data/sys.4196", + "/root/data/AlMgCu/data/sys.4197", + "/root/data/AlMgCu/data/sys.4198", + "/root/data/AlMgCu/data/sys.4199", + "/root/data/AlMgCu/data/sys.4200", + "/root/data/AlMgCu/data/sys.4201", + "/root/data/AlMgCu/data/sys.4203", + "/root/data/AlMgCu/data/sys.4204", + "/root/data/AlMgCu/data/sys.4205", + "/root/data/AlMgCu/data/sys.4206", + "/root/data/AlMgCu/data/sys.4207", + "/root/data/AlMgCu/data/sys.4208", + "/root/data/AlMgCu/data/sys.4209", + "/root/data/AlMgCu/data/sys.421", + "/root/data/AlMgCu/data/sys.4210", + "/root/data/AlMgCu/data/sys.4211", + "/root/data/AlMgCu/data/sys.4212", + "/root/data/AlMgCu/data/sys.4213", + "/root/data/AlMgCu/data/sys.4214", + "/root/data/AlMgCu/data/sys.4215", + "/root/data/AlMgCu/data/sys.4216", + "/root/data/AlMgCu/data/sys.4217", + "/root/data/AlMgCu/data/sys.4218", + "/root/data/AlMgCu/data/sys.4219", + "/root/data/AlMgCu/data/sys.422", + "/root/data/AlMgCu/data/sys.4220", + "/root/data/AlMgCu/data/sys.4221", + "/root/data/AlMgCu/data/sys.4222", + "/root/data/AlMgCu/data/sys.4223", + "/root/data/AlMgCu/data/sys.4224", + "/root/data/AlMgCu/data/sys.4225", + "/root/data/AlMgCu/data/sys.4226", + "/root/data/AlMgCu/data/sys.4227", + "/root/data/AlMgCu/data/sys.4229", + "/root/data/AlMgCu/data/sys.423", + "/root/data/AlMgCu/data/sys.4230", + "/root/data/AlMgCu/data/sys.4231", + "/root/data/AlMgCu/data/sys.4232", + "/root/data/AlMgCu/data/sys.4233", + "/root/data/AlMgCu/data/sys.4234", + "/root/data/AlMgCu/data/sys.4235", + "/root/data/AlMgCu/data/sys.4236", + "/root/data/AlMgCu/data/sys.4237", + "/root/data/AlMgCu/data/sys.4238", + "/root/data/AlMgCu/data/sys.4239", + "/root/data/AlMgCu/data/sys.424", + "/root/data/AlMgCu/data/sys.4240", + "/root/data/AlMgCu/data/sys.4241", + "/root/data/AlMgCu/data/sys.4242", + "/root/data/AlMgCu/data/sys.4244", + "/root/data/AlMgCu/data/sys.4245", + "/root/data/AlMgCu/data/sys.4246", + "/root/data/AlMgCu/data/sys.4247", + "/root/data/AlMgCu/data/sys.4248", + "/root/data/AlMgCu/data/sys.4249", + "/root/data/AlMgCu/data/sys.425", + "/root/data/AlMgCu/data/sys.4250", + "/root/data/AlMgCu/data/sys.4251", + "/root/data/AlMgCu/data/sys.4252", + "/root/data/AlMgCu/data/sys.4253", + "/root/data/AlMgCu/data/sys.4254", + "/root/data/AlMgCu/data/sys.4255", + "/root/data/AlMgCu/data/sys.4256", + "/root/data/AlMgCu/data/sys.4257", + "/root/data/AlMgCu/data/sys.4258", + "/root/data/AlMgCu/data/sys.4259", + "/root/data/AlMgCu/data/sys.426", + "/root/data/AlMgCu/data/sys.4260", + "/root/data/AlMgCu/data/sys.4261", + "/root/data/AlMgCu/data/sys.4262", + "/root/data/AlMgCu/data/sys.4263", + "/root/data/AlMgCu/data/sys.4264", + "/root/data/AlMgCu/data/sys.4266", + "/root/data/AlMgCu/data/sys.4267", + "/root/data/AlMgCu/data/sys.4268", + "/root/data/AlMgCu/data/sys.4269", + "/root/data/AlMgCu/data/sys.4270", + "/root/data/AlMgCu/data/sys.4271", + "/root/data/AlMgCu/data/sys.4272", + "/root/data/AlMgCu/data/sys.4273", + "/root/data/AlMgCu/data/sys.4274", + "/root/data/AlMgCu/data/sys.4275", + "/root/data/AlMgCu/data/sys.4277", + "/root/data/AlMgCu/data/sys.4278", + "/root/data/AlMgCu/data/sys.4279", + "/root/data/AlMgCu/data/sys.4280", + "/root/data/AlMgCu/data/sys.4282", + "/root/data/AlMgCu/data/sys.4283", + "/root/data/AlMgCu/data/sys.4284", + "/root/data/AlMgCu/data/sys.4286", + "/root/data/AlMgCu/data/sys.4287", + "/root/data/AlMgCu/data/sys.4288", + "/root/data/AlMgCu/data/sys.4289", + "/root/data/AlMgCu/data/sys.429", + "/root/data/AlMgCu/data/sys.4290", + "/root/data/AlMgCu/data/sys.4291", + "/root/data/AlMgCu/data/sys.4292", + "/root/data/AlMgCu/data/sys.4293", + "/root/data/AlMgCu/data/sys.4294", + "/root/data/AlMgCu/data/sys.4295", + "/root/data/AlMgCu/data/sys.4296", + "/root/data/AlMgCu/data/sys.4298", + "/root/data/AlMgCu/data/sys.430", + "/root/data/AlMgCu/data/sys.4300", + "/root/data/AlMgCu/data/sys.4301", + "/root/data/AlMgCu/data/sys.4302", + "/root/data/AlMgCu/data/sys.4303", + "/root/data/AlMgCu/data/sys.4305", + "/root/data/AlMgCu/data/sys.4307", + "/root/data/AlMgCu/data/sys.4308", + "/root/data/AlMgCu/data/sys.4310", + "/root/data/AlMgCu/data/sys.4311", + "/root/data/AlMgCu/data/sys.4312", + "/root/data/AlMgCu/data/sys.4313", + "/root/data/AlMgCu/data/sys.4314", + "/root/data/AlMgCu/data/sys.4315", + "/root/data/AlMgCu/data/sys.4316", + "/root/data/AlMgCu/data/sys.4317", + "/root/data/AlMgCu/data/sys.4318", + "/root/data/AlMgCu/data/sys.4319", + "/root/data/AlMgCu/data/sys.432", + "/root/data/AlMgCu/data/sys.4322", + "/root/data/AlMgCu/data/sys.4323", + "/root/data/AlMgCu/data/sys.4324", + "/root/data/AlMgCu/data/sys.4325", + "/root/data/AlMgCu/data/sys.4326", + "/root/data/AlMgCu/data/sys.4327", + "/root/data/AlMgCu/data/sys.4328", + "/root/data/AlMgCu/data/sys.4329", + "/root/data/AlMgCu/data/sys.433", + "/root/data/AlMgCu/data/sys.4330", + "/root/data/AlMgCu/data/sys.4332", + "/root/data/AlMgCu/data/sys.4333", + "/root/data/AlMgCu/data/sys.4334", + "/root/data/AlMgCu/data/sys.4336", + "/root/data/AlMgCu/data/sys.4337", + "/root/data/AlMgCu/data/sys.4338", + "/root/data/AlMgCu/data/sys.434", + "/root/data/AlMgCu/data/sys.4340", + "/root/data/AlMgCu/data/sys.4341", + "/root/data/AlMgCu/data/sys.4342", + "/root/data/AlMgCu/data/sys.4343", + "/root/data/AlMgCu/data/sys.4344", + "/root/data/AlMgCu/data/sys.4345", + "/root/data/AlMgCu/data/sys.4346", + "/root/data/AlMgCu/data/sys.4348", + "/root/data/AlMgCu/data/sys.4349", + "/root/data/AlMgCu/data/sys.435", + "/root/data/AlMgCu/data/sys.4350", + "/root/data/AlMgCu/data/sys.4352", + "/root/data/AlMgCu/data/sys.4353", + "/root/data/AlMgCu/data/sys.4354", + "/root/data/AlMgCu/data/sys.4355", + "/root/data/AlMgCu/data/sys.4356", + "/root/data/AlMgCu/data/sys.4358", + "/root/data/AlMgCu/data/sys.436", + "/root/data/AlMgCu/data/sys.4360", + "/root/data/AlMgCu/data/sys.4361", + "/root/data/AlMgCu/data/sys.4362", + "/root/data/AlMgCu/data/sys.4364", + "/root/data/AlMgCu/data/sys.4365", + "/root/data/AlMgCu/data/sys.4366", + "/root/data/AlMgCu/data/sys.437", + "/root/data/AlMgCu/data/sys.4370", + "/root/data/AlMgCu/data/sys.4371", + "/root/data/AlMgCu/data/sys.4372", + "/root/data/AlMgCu/data/sys.4373", + "/root/data/AlMgCu/data/sys.4374", + "/root/data/AlMgCu/data/sys.4375", + "/root/data/AlMgCu/data/sys.4376", + "/root/data/AlMgCu/data/sys.4377", + "/root/data/AlMgCu/data/sys.4378", + "/root/data/AlMgCu/data/sys.438", + "/root/data/AlMgCu/data/sys.4381", + "/root/data/AlMgCu/data/sys.4382", + "/root/data/AlMgCu/data/sys.4385", + "/root/data/AlMgCu/data/sys.4386", + "/root/data/AlMgCu/data/sys.4387", + "/root/data/AlMgCu/data/sys.4388", + "/root/data/AlMgCu/data/sys.4389", + "/root/data/AlMgCu/data/sys.439", + "/root/data/AlMgCu/data/sys.4390", + "/root/data/AlMgCu/data/sys.4392", + "/root/data/AlMgCu/data/sys.4393", + "/root/data/AlMgCu/data/sys.4394", + "/root/data/AlMgCu/data/sys.4395", + "/root/data/AlMgCu/data/sys.4396", + "/root/data/AlMgCu/data/sys.4398", + "/root/data/AlMgCu/data/sys.440", + "/root/data/AlMgCu/data/sys.4402", + "/root/data/AlMgCu/data/sys.4404", + "/root/data/AlMgCu/data/sys.4406", + "/root/data/AlMgCu/data/sys.4408", + "/root/data/AlMgCu/data/sys.4409", + "/root/data/AlMgCu/data/sys.441", + "/root/data/AlMgCu/data/sys.4410", + "/root/data/AlMgCu/data/sys.4411", + "/root/data/AlMgCu/data/sys.4412", + "/root/data/AlMgCu/data/sys.4413", + "/root/data/AlMgCu/data/sys.4414", + "/root/data/AlMgCu/data/sys.4415", + "/root/data/AlMgCu/data/sys.4416", + "/root/data/AlMgCu/data/sys.4417", + "/root/data/AlMgCu/data/sys.4419", + "/root/data/AlMgCu/data/sys.442", + "/root/data/AlMgCu/data/sys.4420", + "/root/data/AlMgCu/data/sys.4422", + "/root/data/AlMgCu/data/sys.4423", + "/root/data/AlMgCu/data/sys.4425", + "/root/data/AlMgCu/data/sys.4426", + "/root/data/AlMgCu/data/sys.4427", + "/root/data/AlMgCu/data/sys.4428", + "/root/data/AlMgCu/data/sys.443", + "/root/data/AlMgCu/data/sys.4430", + "/root/data/AlMgCu/data/sys.4431", + "/root/data/AlMgCu/data/sys.4432", + "/root/data/AlMgCu/data/sys.4433", + "/root/data/AlMgCu/data/sys.4436", + "/root/data/AlMgCu/data/sys.4438", + "/root/data/AlMgCu/data/sys.4439", + "/root/data/AlMgCu/data/sys.444", + "/root/data/AlMgCu/data/sys.4440", + "/root/data/AlMgCu/data/sys.4441", + "/root/data/AlMgCu/data/sys.4442", + "/root/data/AlMgCu/data/sys.4443", + "/root/data/AlMgCu/data/sys.4446", + "/root/data/AlMgCu/data/sys.4447", + "/root/data/AlMgCu/data/sys.4448", + "/root/data/AlMgCu/data/sys.445", + "/root/data/AlMgCu/data/sys.4450", + "/root/data/AlMgCu/data/sys.4451", + "/root/data/AlMgCu/data/sys.4452", + "/root/data/AlMgCu/data/sys.4453", + "/root/data/AlMgCu/data/sys.4454", + "/root/data/AlMgCu/data/sys.4455", + "/root/data/AlMgCu/data/sys.4456", + "/root/data/AlMgCu/data/sys.4457", + "/root/data/AlMgCu/data/sys.4458", + "/root/data/AlMgCu/data/sys.4459", + "/root/data/AlMgCu/data/sys.4460", + "/root/data/AlMgCu/data/sys.4462", + "/root/data/AlMgCu/data/sys.4464", + "/root/data/AlMgCu/data/sys.4465", + "/root/data/AlMgCu/data/sys.447", + "/root/data/AlMgCu/data/sys.4470", + "/root/data/AlMgCu/data/sys.4471", + "/root/data/AlMgCu/data/sys.4472", + "/root/data/AlMgCu/data/sys.4474", + "/root/data/AlMgCu/data/sys.4475", + "/root/data/AlMgCu/data/sys.4476", + "/root/data/AlMgCu/data/sys.4479", + "/root/data/AlMgCu/data/sys.448", + "/root/data/AlMgCu/data/sys.4480", + "/root/data/AlMgCu/data/sys.4481", + "/root/data/AlMgCu/data/sys.4482", + "/root/data/AlMgCu/data/sys.4483", + "/root/data/AlMgCu/data/sys.4484", + "/root/data/AlMgCu/data/sys.4485", + "/root/data/AlMgCu/data/sys.4486", + "/root/data/AlMgCu/data/sys.4488", + "/root/data/AlMgCu/data/sys.449", + "/root/data/AlMgCu/data/sys.4490", + "/root/data/AlMgCu/data/sys.4491", + "/root/data/AlMgCu/data/sys.4492", + "/root/data/AlMgCu/data/sys.4493", + "/root/data/AlMgCu/data/sys.4494", + "/root/data/AlMgCu/data/sys.4495", + "/root/data/AlMgCu/data/sys.4496", + "/root/data/AlMgCu/data/sys.4497", + "/root/data/AlMgCu/data/sys.4498", + "/root/data/AlMgCu/data/sys.4499", + "/root/data/AlMgCu/data/sys.450", + "/root/data/AlMgCu/data/sys.4500", + "/root/data/AlMgCu/data/sys.4501", + "/root/data/AlMgCu/data/sys.4502", + "/root/data/AlMgCu/data/sys.4503", + "/root/data/AlMgCu/data/sys.4505", + "/root/data/AlMgCu/data/sys.4506", + "/root/data/AlMgCu/data/sys.4507", + "/root/data/AlMgCu/data/sys.4509", + "/root/data/AlMgCu/data/sys.451", + "/root/data/AlMgCu/data/sys.4510", + "/root/data/AlMgCu/data/sys.4511", + "/root/data/AlMgCu/data/sys.4512", + "/root/data/AlMgCu/data/sys.4513", + "/root/data/AlMgCu/data/sys.4514", + "/root/data/AlMgCu/data/sys.4516", + "/root/data/AlMgCu/data/sys.4517", + "/root/data/AlMgCu/data/sys.4519", + "/root/data/AlMgCu/data/sys.452", + "/root/data/AlMgCu/data/sys.4520", + "/root/data/AlMgCu/data/sys.4521", + "/root/data/AlMgCu/data/sys.4522", + "/root/data/AlMgCu/data/sys.4523", + "/root/data/AlMgCu/data/sys.4524", + "/root/data/AlMgCu/data/sys.4525", + "/root/data/AlMgCu/data/sys.4526", + "/root/data/AlMgCu/data/sys.4528", + "/root/data/AlMgCu/data/sys.4529", + "/root/data/AlMgCu/data/sys.453", + "/root/data/AlMgCu/data/sys.4530", + "/root/data/AlMgCu/data/sys.4531", + "/root/data/AlMgCu/data/sys.4532", + "/root/data/AlMgCu/data/sys.4535", + "/root/data/AlMgCu/data/sys.4536", + "/root/data/AlMgCu/data/sys.4537", + "/root/data/AlMgCu/data/sys.4538", + "/root/data/AlMgCu/data/sys.4539", + "/root/data/AlMgCu/data/sys.454", + "/root/data/AlMgCu/data/sys.4540", + "/root/data/AlMgCu/data/sys.4541", + "/root/data/AlMgCu/data/sys.4542", + "/root/data/AlMgCu/data/sys.4543", + "/root/data/AlMgCu/data/sys.4544", + "/root/data/AlMgCu/data/sys.4545", + "/root/data/AlMgCu/data/sys.4546", + "/root/data/AlMgCu/data/sys.4547", + "/root/data/AlMgCu/data/sys.4549", + "/root/data/AlMgCu/data/sys.455", + "/root/data/AlMgCu/data/sys.4550", + "/root/data/AlMgCu/data/sys.4551", + "/root/data/AlMgCu/data/sys.4553", + "/root/data/AlMgCu/data/sys.4554", + "/root/data/AlMgCu/data/sys.4555", + "/root/data/AlMgCu/data/sys.4556", + "/root/data/AlMgCu/data/sys.4557", + "/root/data/AlMgCu/data/sys.4559", + "/root/data/AlMgCu/data/sys.456", + "/root/data/AlMgCu/data/sys.4560", + "/root/data/AlMgCu/data/sys.4561", + "/root/data/AlMgCu/data/sys.4562", + "/root/data/AlMgCu/data/sys.4563", + "/root/data/AlMgCu/data/sys.4564", + "/root/data/AlMgCu/data/sys.4565", + "/root/data/AlMgCu/data/sys.4566", + "/root/data/AlMgCu/data/sys.4567", + "/root/data/AlMgCu/data/sys.4568", + "/root/data/AlMgCu/data/sys.4569", + "/root/data/AlMgCu/data/sys.457", + "/root/data/AlMgCu/data/sys.4570", + "/root/data/AlMgCu/data/sys.4571", + "/root/data/AlMgCu/data/sys.4572", + "/root/data/AlMgCu/data/sys.4573", + "/root/data/AlMgCu/data/sys.4574", + "/root/data/AlMgCu/data/sys.4575", + "/root/data/AlMgCu/data/sys.4576", + "/root/data/AlMgCu/data/sys.4577", + "/root/data/AlMgCu/data/sys.4578", + "/root/data/AlMgCu/data/sys.4579", + "/root/data/AlMgCu/data/sys.458", + "/root/data/AlMgCu/data/sys.4580", + "/root/data/AlMgCu/data/sys.4581", + "/root/data/AlMgCu/data/sys.4582", + "/root/data/AlMgCu/data/sys.4584", + "/root/data/AlMgCu/data/sys.4585", + "/root/data/AlMgCu/data/sys.4587", + "/root/data/AlMgCu/data/sys.4588", + "/root/data/AlMgCu/data/sys.4589", + "/root/data/AlMgCu/data/sys.459", + "/root/data/AlMgCu/data/sys.4590", + "/root/data/AlMgCu/data/sys.4591", + "/root/data/AlMgCu/data/sys.4593", + "/root/data/AlMgCu/data/sys.4594", + "/root/data/AlMgCu/data/sys.4596", + "/root/data/AlMgCu/data/sys.4598", + "/root/data/AlMgCu/data/sys.460", + "/root/data/AlMgCu/data/sys.4600", + "/root/data/AlMgCu/data/sys.4602", + "/root/data/AlMgCu/data/sys.4604", + "/root/data/AlMgCu/data/sys.4606", + "/root/data/AlMgCu/data/sys.4608", + "/root/data/AlMgCu/data/sys.461", + "/root/data/AlMgCu/data/sys.4610", + "/root/data/AlMgCu/data/sys.4612", + "/root/data/AlMgCu/data/sys.4614", + "/root/data/AlMgCu/data/sys.4616", + "/root/data/AlMgCu/data/sys.4618", + "/root/data/AlMgCu/data/sys.462", + "/root/data/AlMgCu/data/sys.4620", + "/root/data/AlMgCu/data/sys.4622", + "/root/data/AlMgCu/data/sys.4624", + "/root/data/AlMgCu/data/sys.463", + "/root/data/AlMgCu/data/sys.4635", + "/root/data/AlMgCu/data/sys.464", + "/root/data/AlMgCu/data/sys.4642", + "/root/data/AlMgCu/data/sys.4643", + "/root/data/AlMgCu/data/sys.4648", + "/root/data/AlMgCu/data/sys.4649", + "/root/data/AlMgCu/data/sys.4658", + "/root/data/AlMgCu/data/sys.466", + "/root/data/AlMgCu/data/sys.4666", + "/root/data/AlMgCu/data/sys.467", + "/root/data/AlMgCu/data/sys.4670", + "/root/data/AlMgCu/data/sys.4674", + "/root/data/AlMgCu/data/sys.468", + "/root/data/AlMgCu/data/sys.4681", + "/root/data/AlMgCu/data/sys.4686", + "/root/data/AlMgCu/data/sys.4687", + "/root/data/AlMgCu/data/sys.4688", + "/root/data/AlMgCu/data/sys.4689", + "/root/data/AlMgCu/data/sys.469", + "/root/data/AlMgCu/data/sys.4690", + "/root/data/AlMgCu/data/sys.4691", + "/root/data/AlMgCu/data/sys.4692", + "/root/data/AlMgCu/data/sys.4693", + "/root/data/AlMgCu/data/sys.4694", + "/root/data/AlMgCu/data/sys.4695", + "/root/data/AlMgCu/data/sys.4696", + "/root/data/AlMgCu/data/sys.4697", + "/root/data/AlMgCu/data/sys.4698", + "/root/data/AlMgCu/data/sys.4699", + "/root/data/AlMgCu/data/sys.470", + "/root/data/AlMgCu/data/sys.4700", + "/root/data/AlMgCu/data/sys.4701", + "/root/data/AlMgCu/data/sys.4703", + "/root/data/AlMgCu/data/sys.4704", + "/root/data/AlMgCu/data/sys.4705", + "/root/data/AlMgCu/data/sys.4707", + "/root/data/AlMgCu/data/sys.4708", + "/root/data/AlMgCu/data/sys.4709", + "/root/data/AlMgCu/data/sys.471", + "/root/data/AlMgCu/data/sys.4710", + "/root/data/AlMgCu/data/sys.4711", + "/root/data/AlMgCu/data/sys.4712", + "/root/data/AlMgCu/data/sys.4713", + "/root/data/AlMgCu/data/sys.4714", + "/root/data/AlMgCu/data/sys.4715", + "/root/data/AlMgCu/data/sys.4716", + "/root/data/AlMgCu/data/sys.4717", + "/root/data/AlMgCu/data/sys.4718", + "/root/data/AlMgCu/data/sys.4719", + "/root/data/AlMgCu/data/sys.472", + "/root/data/AlMgCu/data/sys.4720", + "/root/data/AlMgCu/data/sys.4721", + "/root/data/AlMgCu/data/sys.4722", + "/root/data/AlMgCu/data/sys.4723", + "/root/data/AlMgCu/data/sys.4725", + "/root/data/AlMgCu/data/sys.4726", + "/root/data/AlMgCu/data/sys.4727", + "/root/data/AlMgCu/data/sys.4728", + "/root/data/AlMgCu/data/sys.473", + "/root/data/AlMgCu/data/sys.4730", + "/root/data/AlMgCu/data/sys.4731", + "/root/data/AlMgCu/data/sys.4732", + "/root/data/AlMgCu/data/sys.4733", + "/root/data/AlMgCu/data/sys.4734", + "/root/data/AlMgCu/data/sys.4735", + "/root/data/AlMgCu/data/sys.4736", + "/root/data/AlMgCu/data/sys.4737", + "/root/data/AlMgCu/data/sys.4738", + "/root/data/AlMgCu/data/sys.4739", + "/root/data/AlMgCu/data/sys.4740", + "/root/data/AlMgCu/data/sys.4741", + "/root/data/AlMgCu/data/sys.4742", + "/root/data/AlMgCu/data/sys.4743", + "/root/data/AlMgCu/data/sys.4744", + "/root/data/AlMgCu/data/sys.4747", + "/root/data/AlMgCu/data/sys.4748", + "/root/data/AlMgCu/data/sys.475", + "/root/data/AlMgCu/data/sys.4752", + "/root/data/AlMgCu/data/sys.4753", + "/root/data/AlMgCu/data/sys.4754", + "/root/data/AlMgCu/data/sys.476", + "/root/data/AlMgCu/data/sys.4762", + "/root/data/AlMgCu/data/sys.4763", + "/root/data/AlMgCu/data/sys.4769", + "/root/data/AlMgCu/data/sys.477", + "/root/data/AlMgCu/data/sys.4771", + "/root/data/AlMgCu/data/sys.4772", + "/root/data/AlMgCu/data/sys.4777", + "/root/data/AlMgCu/data/sys.4778", + "/root/data/AlMgCu/data/sys.4779", + "/root/data/AlMgCu/data/sys.478", + "/root/data/AlMgCu/data/sys.4786", + "/root/data/AlMgCu/data/sys.479", + "/root/data/AlMgCu/data/sys.4790", + "/root/data/AlMgCu/data/sys.4792", + "/root/data/AlMgCu/data/sys.4793", + "/root/data/AlMgCu/data/sys.4794", + "/root/data/AlMgCu/data/sys.4798", + "/root/data/AlMgCu/data/sys.480", + "/root/data/AlMgCu/data/sys.4800", + "/root/data/AlMgCu/data/sys.4802", + "/root/data/AlMgCu/data/sys.4804", + "/root/data/AlMgCu/data/sys.481", + "/root/data/AlMgCu/data/sys.4810", + "/root/data/AlMgCu/data/sys.4818", + "/root/data/AlMgCu/data/sys.482", + "/root/data/AlMgCu/data/sys.4826", + "/root/data/AlMgCu/data/sys.483", + "/root/data/AlMgCu/data/sys.4834", + "/root/data/AlMgCu/data/sys.484", + "/root/data/AlMgCu/data/sys.4843", + "/root/data/AlMgCu/data/sys.4844", + "/root/data/AlMgCu/data/sys.4848", + "/root/data/AlMgCu/data/sys.4849", + "/root/data/AlMgCu/data/sys.485", + "/root/data/AlMgCu/data/sys.4850", + "/root/data/AlMgCu/data/sys.4851", + "/root/data/AlMgCu/data/sys.4857", + "/root/data/AlMgCu/data/sys.4858", + "/root/data/AlMgCu/data/sys.486", + "/root/data/AlMgCu/data/sys.4872", + "/root/data/AlMgCu/data/sys.4874", + "/root/data/AlMgCu/data/sys.4878", + "/root/data/AlMgCu/data/sys.488", + "/root/data/AlMgCu/data/sys.4880", + "/root/data/AlMgCu/data/sys.4882", + "/root/data/AlMgCu/data/sys.4888", + "/root/data/AlMgCu/data/sys.489", + "/root/data/AlMgCu/data/sys.4898", + "/root/data/AlMgCu/data/sys.490", + "/root/data/AlMgCu/data/sys.4904", + "/root/data/AlMgCu/data/sys.4905", + "/root/data/AlMgCu/data/sys.4906", + "/root/data/AlMgCu/data/sys.4907", + "/root/data/AlMgCu/data/sys.4908", + "/root/data/AlMgCu/data/sys.491", + "/root/data/AlMgCu/data/sys.4913", + "/root/data/AlMgCu/data/sys.4914", + "/root/data/AlMgCu/data/sys.492", + "/root/data/AlMgCu/data/sys.4920", + "/root/data/AlMgCu/data/sys.4922", + "/root/data/AlMgCu/data/sys.4924", + "/root/data/AlMgCu/data/sys.493", + "/root/data/AlMgCu/data/sys.4930", + "/root/data/AlMgCu/data/sys.4932", + "/root/data/AlMgCu/data/sys.4938", + "/root/data/AlMgCu/data/sys.494", + "/root/data/AlMgCu/data/sys.4940", + "/root/data/AlMgCu/data/sys.4945", + "/root/data/AlMgCu/data/sys.4946", + "/root/data/AlMgCu/data/sys.495", + "/root/data/AlMgCu/data/sys.4952", + "/root/data/AlMgCu/data/sys.4953", + "/root/data/AlMgCu/data/sys.496", + "/root/data/AlMgCu/data/sys.4960", + "/root/data/AlMgCu/data/sys.4967", + "/root/data/AlMgCu/data/sys.497", + "/root/data/AlMgCu/data/sys.4970", + "/root/data/AlMgCu/data/sys.4971", + "/root/data/AlMgCu/data/sys.4972", + "/root/data/AlMgCu/data/sys.4973", + "/root/data/AlMgCu/data/sys.4974", + "/root/data/AlMgCu/data/sys.4976", + "/root/data/AlMgCu/data/sys.4977", + "/root/data/AlMgCu/data/sys.4978", + "/root/data/AlMgCu/data/sys.4979", + "/root/data/AlMgCu/data/sys.498", + "/root/data/AlMgCu/data/sys.4980", + "/root/data/AlMgCu/data/sys.4981", + "/root/data/AlMgCu/data/sys.4982", + "/root/data/AlMgCu/data/sys.4984", + "/root/data/AlMgCu/data/sys.4985", + "/root/data/AlMgCu/data/sys.4987", + "/root/data/AlMgCu/data/sys.4988", + "/root/data/AlMgCu/data/sys.499", + "/root/data/AlMgCu/data/sys.4990", + "/root/data/AlMgCu/data/sys.4992", + "/root/data/AlMgCu/data/sys.4993", + "/root/data/AlMgCu/data/sys.4994", + "/root/data/AlMgCu/data/sys.4996", + "/root/data/AlMgCu/data/sys.4998", + "/root/data/AlMgCu/data/sys.500", + "/root/data/AlMgCu/data/sys.5000", + "/root/data/AlMgCu/data/sys.5001", + "/root/data/AlMgCu/data/sys.5002", + "/root/data/AlMgCu/data/sys.501", + "/root/data/AlMgCu/data/sys.5010", + "/root/data/AlMgCu/data/sys.5017", + "/root/data/AlMgCu/data/sys.5018", + "/root/data/AlMgCu/data/sys.5019", + "/root/data/AlMgCu/data/sys.502", + "/root/data/AlMgCu/data/sys.5025", + "/root/data/AlMgCu/data/sys.5026", + "/root/data/AlMgCu/data/sys.5027", + "/root/data/AlMgCu/data/sys.5034", + "/root/data/AlMgCu/data/sys.504", + "/root/data/AlMgCu/data/sys.5043", + "/root/data/AlMgCu/data/sys.5044", + "/root/data/AlMgCu/data/sys.505", + "/root/data/AlMgCu/data/sys.5050", + "/root/data/AlMgCu/data/sys.5056", + "/root/data/AlMgCu/data/sys.5058", + "/root/data/AlMgCu/data/sys.506", + "/root/data/AlMgCu/data/sys.5066", + "/root/data/AlMgCu/data/sys.507", + "/root/data/AlMgCu/data/sys.5074", + "/root/data/AlMgCu/data/sys.5075", + "/root/data/AlMgCu/data/sys.508", + "/root/data/AlMgCu/data/sys.5083", + "/root/data/AlMgCu/data/sys.509", + "/root/data/AlMgCu/data/sys.5090", + "/root/data/AlMgCu/data/sys.5091", + "/root/data/AlMgCu/data/sys.5098", + "/root/data/AlMgCu/data/sys.510", + "/root/data/AlMgCu/data/sys.5100", + "/root/data/AlMgCu/data/sys.5104", + "/root/data/AlMgCu/data/sys.5105", + "/root/data/AlMgCu/data/sys.5106", + "/root/data/AlMgCu/data/sys.511", + "/root/data/AlMgCu/data/sys.5112", + "/root/data/AlMgCu/data/sys.5114", + "/root/data/AlMgCu/data/sys.512", + "/root/data/AlMgCu/data/sys.5122", + "/root/data/AlMgCu/data/sys.5124", + "/root/data/AlMgCu/data/sys.513", + "/root/data/AlMgCu/data/sys.5131", + "/root/data/AlMgCu/data/sys.514", + "/root/data/AlMgCu/data/sys.5146", + "/root/data/AlMgCu/data/sys.5147", + "/root/data/AlMgCu/data/sys.515", + "/root/data/AlMgCu/data/sys.5154", + "/root/data/AlMgCu/data/sys.5156", + "/root/data/AlMgCu/data/sys.516", + "/root/data/AlMgCu/data/sys.5164", + "/root/data/AlMgCu/data/sys.5168", + "/root/data/AlMgCu/data/sys.517", + "/root/data/AlMgCu/data/sys.5170", + "/root/data/AlMgCu/data/sys.5177", + "/root/data/AlMgCu/data/sys.5178", + "/root/data/AlMgCu/data/sys.518", + "/root/data/AlMgCu/data/sys.5180", + "/root/data/AlMgCu/data/sys.5186", + "/root/data/AlMgCu/data/sys.5187", + "/root/data/AlMgCu/data/sys.519", + "/root/data/AlMgCu/data/sys.5194", + "/root/data/AlMgCu/data/sys.520", + "/root/data/AlMgCu/data/sys.5208", + "/root/data/AlMgCu/data/sys.521", + "/root/data/AlMgCu/data/sys.5210", + "/root/data/AlMgCu/data/sys.5211", + "/root/data/AlMgCu/data/sys.5212", + "/root/data/AlMgCu/data/sys.522", + "/root/data/AlMgCu/data/sys.5220", + "/root/data/AlMgCu/data/sys.5226", + "/root/data/AlMgCu/data/sys.523", + "/root/data/AlMgCu/data/sys.5233", + "/root/data/AlMgCu/data/sys.5241", + "/root/data/AlMgCu/data/sys.5249", + "/root/data/AlMgCu/data/sys.525", + "/root/data/AlMgCu/data/sys.526", + "/root/data/AlMgCu/data/sys.5268", + "/root/data/AlMgCu/data/sys.528", + "/root/data/AlMgCu/data/sys.5282", + "/root/data/AlMgCu/data/sys.529", + "/root/data/AlMgCu/data/sys.5290", + "/root/data/AlMgCu/data/sys.5293", + "/root/data/AlMgCu/data/sys.5299", + "/root/data/AlMgCu/data/sys.530", + "/root/data/AlMgCu/data/sys.531", + "/root/data/AlMgCu/data/sys.5313", + "/root/data/AlMgCu/data/sys.5316", + "/root/data/AlMgCu/data/sys.532", + "/root/data/AlMgCu/data/sys.533", + "/root/data/AlMgCu/data/sys.534", + "/root/data/AlMgCu/data/sys.535", + "/root/data/AlMgCu/data/sys.536", + "/root/data/AlMgCu/data/sys.537", + "/root/data/AlMgCu/data/sys.538", + "/root/data/AlMgCu/data/sys.5385", + "/root/data/AlMgCu/data/sys.5388", + "/root/data/AlMgCu/data/sys.539", + "/root/data/AlMgCu/data/sys.540", + "/root/data/AlMgCu/data/sys.541", + "/root/data/AlMgCu/data/sys.5410", + "/root/data/AlMgCu/data/sys.5418", + "/root/data/AlMgCu/data/sys.542", + "/root/data/AlMgCu/data/sys.543", + "/root/data/AlMgCu/data/sys.544", + "/root/data/AlMgCu/data/sys.5443", + "/root/data/AlMgCu/data/sys.545", + "/root/data/AlMgCu/data/sys.5450", + "/root/data/AlMgCu/data/sys.546", + "/root/data/AlMgCu/data/sys.547", + "/root/data/AlMgCu/data/sys.548", + "/root/data/AlMgCu/data/sys.549", + "/root/data/AlMgCu/data/sys.550", + "/root/data/AlMgCu/data/sys.5506", + "/root/data/AlMgCu/data/sys.551", + "/root/data/AlMgCu/data/sys.552", + "/root/data/AlMgCu/data/sys.553", + "/root/data/AlMgCu/data/sys.554", + "/root/data/AlMgCu/data/sys.555", + "/root/data/AlMgCu/data/sys.556", + "/root/data/AlMgCu/data/sys.557", + "/root/data/AlMgCu/data/sys.5574", + "/root/data/AlMgCu/data/sys.558", + "/root/data/AlMgCu/data/sys.5580", + "/root/data/AlMgCu/data/sys.559", + "/root/data/AlMgCu/data/sys.560", + "/root/data/AlMgCu/data/sys.561", + "/root/data/AlMgCu/data/sys.562", + "/root/data/AlMgCu/data/sys.563", + "/root/data/AlMgCu/data/sys.565", + "/root/data/AlMgCu/data/sys.566", + "/root/data/AlMgCu/data/sys.567", + "/root/data/AlMgCu/data/sys.569", + "/root/data/AlMgCu/data/sys.570", + "/root/data/AlMgCu/data/sys.571", + "/root/data/AlMgCu/data/sys.572", + "/root/data/AlMgCu/data/sys.573", + "/root/data/AlMgCu/data/sys.574", + "/root/data/AlMgCu/data/sys.575", + "/root/data/AlMgCu/data/sys.576", + "/root/data/AlMgCu/data/sys.577", + "/root/data/AlMgCu/data/sys.578", + "/root/data/AlMgCu/data/sys.579", + "/root/data/AlMgCu/data/sys.580", + "/root/data/AlMgCu/data/sys.581", + "/root/data/AlMgCu/data/sys.582", + "/root/data/AlMgCu/data/sys.583", + "/root/data/AlMgCu/data/sys.584", + "/root/data/AlMgCu/data/sys.5848", + "/root/data/AlMgCu/data/sys.585", + "/root/data/AlMgCu/data/sys.586", + "/root/data/AlMgCu/data/sys.587", + "/root/data/AlMgCu/data/sys.589", + "/root/data/AlMgCu/data/sys.590", + "/root/data/AlMgCu/data/sys.592", + "/root/data/AlMgCu/data/sys.593", + "/root/data/AlMgCu/data/sys.594", + "/root/data/AlMgCu/data/sys.5943", + "/root/data/AlMgCu/data/sys.5944", + "/root/data/AlMgCu/data/sys.5945", + "/root/data/AlMgCu/data/sys.5946", + "/root/data/AlMgCu/data/sys.5947", + "/root/data/AlMgCu/data/sys.5948", + "/root/data/AlMgCu/data/sys.5949", + "/root/data/AlMgCu/data/sys.595", + "/root/data/AlMgCu/data/sys.5950", + "/root/data/AlMgCu/data/sys.5951", + "/root/data/AlMgCu/data/sys.5953", + "/root/data/AlMgCu/data/sys.5954", + "/root/data/AlMgCu/data/sys.5955", + "/root/data/AlMgCu/data/sys.5956", + "/root/data/AlMgCu/data/sys.5957", + "/root/data/AlMgCu/data/sys.5958", + "/root/data/AlMgCu/data/sys.5959", + "/root/data/AlMgCu/data/sys.596", + "/root/data/AlMgCu/data/sys.5960", + "/root/data/AlMgCu/data/sys.5961", + "/root/data/AlMgCu/data/sys.5962", + "/root/data/AlMgCu/data/sys.5963", + "/root/data/AlMgCu/data/sys.5964", + "/root/data/AlMgCu/data/sys.5965", + "/root/data/AlMgCu/data/sys.5967", + "/root/data/AlMgCu/data/sys.5968", + "/root/data/AlMgCu/data/sys.5969", + "/root/data/AlMgCu/data/sys.597", + "/root/data/AlMgCu/data/sys.5970", + "/root/data/AlMgCu/data/sys.5971", + "/root/data/AlMgCu/data/sys.5972", + "/root/data/AlMgCu/data/sys.5973", + "/root/data/AlMgCu/data/sys.5975", + "/root/data/AlMgCu/data/sys.5976", + "/root/data/AlMgCu/data/sys.5977", + "/root/data/AlMgCu/data/sys.5979", + "/root/data/AlMgCu/data/sys.598", + "/root/data/AlMgCu/data/sys.5980", + "/root/data/AlMgCu/data/sys.5981", + "/root/data/AlMgCu/data/sys.5983", + "/root/data/AlMgCu/data/sys.5984", + "/root/data/AlMgCu/data/sys.5985", + "/root/data/AlMgCu/data/sys.5987", + "/root/data/AlMgCu/data/sys.5988", + "/root/data/AlMgCu/data/sys.5989", + "/root/data/AlMgCu/data/sys.599", + "/root/data/AlMgCu/data/sys.5990", + "/root/data/AlMgCu/data/sys.5991", + "/root/data/AlMgCu/data/sys.5992", + "/root/data/AlMgCu/data/sys.5993", + "/root/data/AlMgCu/data/sys.5994", + "/root/data/AlMgCu/data/sys.5995", + "/root/data/AlMgCu/data/sys.5997", + "/root/data/AlMgCu/data/sys.5998", + "/root/data/AlMgCu/data/sys.5999", + "/root/data/AlMgCu/data/sys.600", + "/root/data/AlMgCu/data/sys.6000", + "/root/data/AlMgCu/data/sys.6001", + "/root/data/AlMgCu/data/sys.6004", + "/root/data/AlMgCu/data/sys.6005", + "/root/data/AlMgCu/data/sys.6006", + "/root/data/AlMgCu/data/sys.6007", + "/root/data/AlMgCu/data/sys.6008", + "/root/data/AlMgCu/data/sys.6009", + "/root/data/AlMgCu/data/sys.6010", + "/root/data/AlMgCu/data/sys.6011", + "/root/data/AlMgCu/data/sys.6012", + "/root/data/AlMgCu/data/sys.6013", + "/root/data/AlMgCu/data/sys.6014", + "/root/data/AlMgCu/data/sys.6015", + "/root/data/AlMgCu/data/sys.6016", + "/root/data/AlMgCu/data/sys.6017", + "/root/data/AlMgCu/data/sys.6018", + "/root/data/AlMgCu/data/sys.6019", + "/root/data/AlMgCu/data/sys.602", + "/root/data/AlMgCu/data/sys.6021", + "/root/data/AlMgCu/data/sys.6022", + "/root/data/AlMgCu/data/sys.6023", + "/root/data/AlMgCu/data/sys.6024", + "/root/data/AlMgCu/data/sys.6025", + "/root/data/AlMgCu/data/sys.6026", + "/root/data/AlMgCu/data/sys.6027", + "/root/data/AlMgCu/data/sys.6029", + "/root/data/AlMgCu/data/sys.603", + "/root/data/AlMgCu/data/sys.6030", + "/root/data/AlMgCu/data/sys.6031", + "/root/data/AlMgCu/data/sys.6032", + "/root/data/AlMgCu/data/sys.6033", + "/root/data/AlMgCu/data/sys.6034", + "/root/data/AlMgCu/data/sys.6035", + "/root/data/AlMgCu/data/sys.6036", + "/root/data/AlMgCu/data/sys.6037", + "/root/data/AlMgCu/data/sys.6038", + "/root/data/AlMgCu/data/sys.604", + "/root/data/AlMgCu/data/sys.6040", + "/root/data/AlMgCu/data/sys.6042", + "/root/data/AlMgCu/data/sys.6043", + "/root/data/AlMgCu/data/sys.6044", + "/root/data/AlMgCu/data/sys.6046", + "/root/data/AlMgCu/data/sys.6047", + "/root/data/AlMgCu/data/sys.6049", + "/root/data/AlMgCu/data/sys.605", + "/root/data/AlMgCu/data/sys.6050", + "/root/data/AlMgCu/data/sys.6051", + "/root/data/AlMgCu/data/sys.6052", + "/root/data/AlMgCu/data/sys.6053", + "/root/data/AlMgCu/data/sys.6054", + "/root/data/AlMgCu/data/sys.6055", + "/root/data/AlMgCu/data/sys.6056", + "/root/data/AlMgCu/data/sys.6057", + "/root/data/AlMgCu/data/sys.6058", + "/root/data/AlMgCu/data/sys.6059", + "/root/data/AlMgCu/data/sys.606", + "/root/data/AlMgCu/data/sys.6060", + "/root/data/AlMgCu/data/sys.6061", + "/root/data/AlMgCu/data/sys.6062", + "/root/data/AlMgCu/data/sys.6063", + "/root/data/AlMgCu/data/sys.6064", + "/root/data/AlMgCu/data/sys.6067", + "/root/data/AlMgCu/data/sys.6068", + "/root/data/AlMgCu/data/sys.6069", + "/root/data/AlMgCu/data/sys.607", + "/root/data/AlMgCu/data/sys.6070", + "/root/data/AlMgCu/data/sys.6071", + "/root/data/AlMgCu/data/sys.6072", + "/root/data/AlMgCu/data/sys.6073", + "/root/data/AlMgCu/data/sys.6074", + "/root/data/AlMgCu/data/sys.6075", + "/root/data/AlMgCu/data/sys.6076", + "/root/data/AlMgCu/data/sys.6077", + "/root/data/AlMgCu/data/sys.6078", + "/root/data/AlMgCu/data/sys.6079", + "/root/data/AlMgCu/data/sys.608", + "/root/data/AlMgCu/data/sys.6081", + "/root/data/AlMgCu/data/sys.6082", + "/root/data/AlMgCu/data/sys.6083", + "/root/data/AlMgCu/data/sys.6085", + "/root/data/AlMgCu/data/sys.6087", + "/root/data/AlMgCu/data/sys.6088", + "/root/data/AlMgCu/data/sys.6089", + "/root/data/AlMgCu/data/sys.609", + "/root/data/AlMgCu/data/sys.6090", + "/root/data/AlMgCu/data/sys.6091", + "/root/data/AlMgCu/data/sys.6092", + "/root/data/AlMgCu/data/sys.6093", + "/root/data/AlMgCu/data/sys.6094", + "/root/data/AlMgCu/data/sys.6095", + "/root/data/AlMgCu/data/sys.6096", + "/root/data/AlMgCu/data/sys.6097", + "/root/data/AlMgCu/data/sys.6098", + "/root/data/AlMgCu/data/sys.610", + "/root/data/AlMgCu/data/sys.6100", + "/root/data/AlMgCu/data/sys.6101", + "/root/data/AlMgCu/data/sys.6103", + "/root/data/AlMgCu/data/sys.6104", + "/root/data/AlMgCu/data/sys.6106", + "/root/data/AlMgCu/data/sys.6107", + "/root/data/AlMgCu/data/sys.6108", + "/root/data/AlMgCu/data/sys.6109", + "/root/data/AlMgCu/data/sys.611", + "/root/data/AlMgCu/data/sys.6110", + "/root/data/AlMgCu/data/sys.6111", + "/root/data/AlMgCu/data/sys.6112", + "/root/data/AlMgCu/data/sys.6113", + "/root/data/AlMgCu/data/sys.6114", + "/root/data/AlMgCu/data/sys.6115", + "/root/data/AlMgCu/data/sys.6116", + "/root/data/AlMgCu/data/sys.6117", + "/root/data/AlMgCu/data/sys.6118", + "/root/data/AlMgCu/data/sys.6119", + "/root/data/AlMgCu/data/sys.612", + "/root/data/AlMgCu/data/sys.6120", + "/root/data/AlMgCu/data/sys.6121", + "/root/data/AlMgCu/data/sys.6123", + "/root/data/AlMgCu/data/sys.6124", + "/root/data/AlMgCu/data/sys.6125", + "/root/data/AlMgCu/data/sys.6126", + "/root/data/AlMgCu/data/sys.6127", + "/root/data/AlMgCu/data/sys.6128", + "/root/data/AlMgCu/data/sys.6129", + "/root/data/AlMgCu/data/sys.613", + "/root/data/AlMgCu/data/sys.6130", + "/root/data/AlMgCu/data/sys.6131", + "/root/data/AlMgCu/data/sys.6132", + "/root/data/AlMgCu/data/sys.6133", + "/root/data/AlMgCu/data/sys.6134", + "/root/data/AlMgCu/data/sys.6135", + "/root/data/AlMgCu/data/sys.6136", + "/root/data/AlMgCu/data/sys.6137", + "/root/data/AlMgCu/data/sys.6138", + "/root/data/AlMgCu/data/sys.6139", + "/root/data/AlMgCu/data/sys.614", + "/root/data/AlMgCu/data/sys.6140", + "/root/data/AlMgCu/data/sys.6141", + "/root/data/AlMgCu/data/sys.6142", + "/root/data/AlMgCu/data/sys.6143", + "/root/data/AlMgCu/data/sys.6144", + "/root/data/AlMgCu/data/sys.6145", + "/root/data/AlMgCu/data/sys.6146", + "/root/data/AlMgCu/data/sys.6147", + "/root/data/AlMgCu/data/sys.6148", + "/root/data/AlMgCu/data/sys.6149", + "/root/data/AlMgCu/data/sys.615", + "/root/data/AlMgCu/data/sys.6151", + "/root/data/AlMgCu/data/sys.6154", + "/root/data/AlMgCu/data/sys.6155", + "/root/data/AlMgCu/data/sys.6156", + "/root/data/AlMgCu/data/sys.6157", + "/root/data/AlMgCu/data/sys.6158", + "/root/data/AlMgCu/data/sys.6159", + "/root/data/AlMgCu/data/sys.616", + "/root/data/AlMgCu/data/sys.6160", + "/root/data/AlMgCu/data/sys.6161", + "/root/data/AlMgCu/data/sys.6162", + "/root/data/AlMgCu/data/sys.6163", + "/root/data/AlMgCu/data/sys.6164", + "/root/data/AlMgCu/data/sys.6165", + "/root/data/AlMgCu/data/sys.6166", + "/root/data/AlMgCu/data/sys.6167", + "/root/data/AlMgCu/data/sys.6168", + "/root/data/AlMgCu/data/sys.6169", + "/root/data/AlMgCu/data/sys.617", + "/root/data/AlMgCu/data/sys.6170", + "/root/data/AlMgCu/data/sys.6171", + "/root/data/AlMgCu/data/sys.6172", + "/root/data/AlMgCu/data/sys.6173", + "/root/data/AlMgCu/data/sys.6174", + "/root/data/AlMgCu/data/sys.6175", + "/root/data/AlMgCu/data/sys.6176", + "/root/data/AlMgCu/data/sys.6177", + "/root/data/AlMgCu/data/sys.6178", + "/root/data/AlMgCu/data/sys.6179", + "/root/data/AlMgCu/data/sys.618", + "/root/data/AlMgCu/data/sys.6180", + "/root/data/AlMgCu/data/sys.6181", + "/root/data/AlMgCu/data/sys.6182", + "/root/data/AlMgCu/data/sys.6183", + "/root/data/AlMgCu/data/sys.6185", + "/root/data/AlMgCu/data/sys.6186", + "/root/data/AlMgCu/data/sys.6187", + "/root/data/AlMgCu/data/sys.6188", + "/root/data/AlMgCu/data/sys.6189", + "/root/data/AlMgCu/data/sys.619", + "/root/data/AlMgCu/data/sys.6190", + "/root/data/AlMgCu/data/sys.6191", + "/root/data/AlMgCu/data/sys.6193", + "/root/data/AlMgCu/data/sys.6194", + "/root/data/AlMgCu/data/sys.6195", + "/root/data/AlMgCu/data/sys.6196", + "/root/data/AlMgCu/data/sys.6197", + "/root/data/AlMgCu/data/sys.6198", + "/root/data/AlMgCu/data/sys.6199", + "/root/data/AlMgCu/data/sys.620", + "/root/data/AlMgCu/data/sys.6200", + "/root/data/AlMgCu/data/sys.6201", + "/root/data/AlMgCu/data/sys.6202", + "/root/data/AlMgCu/data/sys.6203", + "/root/data/AlMgCu/data/sys.6204", + "/root/data/AlMgCu/data/sys.6206", + "/root/data/AlMgCu/data/sys.6207", + "/root/data/AlMgCu/data/sys.6208", + "/root/data/AlMgCu/data/sys.621", + "/root/data/AlMgCu/data/sys.6210", + "/root/data/AlMgCu/data/sys.6211", + "/root/data/AlMgCu/data/sys.6212", + "/root/data/AlMgCu/data/sys.6213", + "/root/data/AlMgCu/data/sys.6215", + "/root/data/AlMgCu/data/sys.6216", + "/root/data/AlMgCu/data/sys.6217", + "/root/data/AlMgCu/data/sys.6218", + "/root/data/AlMgCu/data/sys.6219", + "/root/data/AlMgCu/data/sys.622", + "/root/data/AlMgCu/data/sys.6220", + "/root/data/AlMgCu/data/sys.6221", + "/root/data/AlMgCu/data/sys.6222", + "/root/data/AlMgCu/data/sys.6223", + "/root/data/AlMgCu/data/sys.6224", + "/root/data/AlMgCu/data/sys.6225", + "/root/data/AlMgCu/data/sys.6226", + "/root/data/AlMgCu/data/sys.6227", + "/root/data/AlMgCu/data/sys.6229", + "/root/data/AlMgCu/data/sys.623", + "/root/data/AlMgCu/data/sys.6230", + "/root/data/AlMgCu/data/sys.6231", + "/root/data/AlMgCu/data/sys.6232", + "/root/data/AlMgCu/data/sys.6233", + "/root/data/AlMgCu/data/sys.6235", + "/root/data/AlMgCu/data/sys.6236", + "/root/data/AlMgCu/data/sys.6237", + "/root/data/AlMgCu/data/sys.6238", + "/root/data/AlMgCu/data/sys.6239", + "/root/data/AlMgCu/data/sys.624", + "/root/data/AlMgCu/data/sys.6240", + "/root/data/AlMgCu/data/sys.6241", + "/root/data/AlMgCu/data/sys.6242", + "/root/data/AlMgCu/data/sys.6243", + "/root/data/AlMgCu/data/sys.6244", + "/root/data/AlMgCu/data/sys.6245", + "/root/data/AlMgCu/data/sys.6246", + "/root/data/AlMgCu/data/sys.6247", + "/root/data/AlMgCu/data/sys.6249", + "/root/data/AlMgCu/data/sys.6250", + "/root/data/AlMgCu/data/sys.6251", + "/root/data/AlMgCu/data/sys.6252", + "/root/data/AlMgCu/data/sys.6253", + "/root/data/AlMgCu/data/sys.6254", + "/root/data/AlMgCu/data/sys.6256", + "/root/data/AlMgCu/data/sys.6257", + "/root/data/AlMgCu/data/sys.6258", + "/root/data/AlMgCu/data/sys.626", + "/root/data/AlMgCu/data/sys.6260", + "/root/data/AlMgCu/data/sys.6261", + "/root/data/AlMgCu/data/sys.6262", + "/root/data/AlMgCu/data/sys.6263", + "/root/data/AlMgCu/data/sys.6264", + "/root/data/AlMgCu/data/sys.6265", + "/root/data/AlMgCu/data/sys.6266", + "/root/data/AlMgCu/data/sys.6267", + "/root/data/AlMgCu/data/sys.6268", + "/root/data/AlMgCu/data/sys.6269", + "/root/data/AlMgCu/data/sys.627", + "/root/data/AlMgCu/data/sys.6271", + "/root/data/AlMgCu/data/sys.6272", + "/root/data/AlMgCu/data/sys.6273", + "/root/data/AlMgCu/data/sys.6274", + "/root/data/AlMgCu/data/sys.6275", + "/root/data/AlMgCu/data/sys.6276", + "/root/data/AlMgCu/data/sys.6277", + "/root/data/AlMgCu/data/sys.6278", + "/root/data/AlMgCu/data/sys.6279", + "/root/data/AlMgCu/data/sys.628", + "/root/data/AlMgCu/data/sys.6280", + "/root/data/AlMgCu/data/sys.6282", + "/root/data/AlMgCu/data/sys.6283", + "/root/data/AlMgCu/data/sys.6284", + "/root/data/AlMgCu/data/sys.6285", + "/root/data/AlMgCu/data/sys.6286", + "/root/data/AlMgCu/data/sys.6287", + "/root/data/AlMgCu/data/sys.6288", + "/root/data/AlMgCu/data/sys.6289", + "/root/data/AlMgCu/data/sys.629", + "/root/data/AlMgCu/data/sys.6290", + "/root/data/AlMgCu/data/sys.6291", + "/root/data/AlMgCu/data/sys.6292", + "/root/data/AlMgCu/data/sys.6293", + "/root/data/AlMgCu/data/sys.6295", + "/root/data/AlMgCu/data/sys.6296", + "/root/data/AlMgCu/data/sys.6298", + "/root/data/AlMgCu/data/sys.630", + "/root/data/AlMgCu/data/sys.6300", + "/root/data/AlMgCu/data/sys.6301", + "/root/data/AlMgCu/data/sys.6302", + "/root/data/AlMgCu/data/sys.6303", + "/root/data/AlMgCu/data/sys.6304", + "/root/data/AlMgCu/data/sys.6305", + "/root/data/AlMgCu/data/sys.6306", + "/root/data/AlMgCu/data/sys.6308", + "/root/data/AlMgCu/data/sys.6309", + "/root/data/AlMgCu/data/sys.631", + "/root/data/AlMgCu/data/sys.6310", + "/root/data/AlMgCu/data/sys.6311", + "/root/data/AlMgCu/data/sys.6312", + "/root/data/AlMgCu/data/sys.6313", + "/root/data/AlMgCu/data/sys.6314", + "/root/data/AlMgCu/data/sys.6315", + "/root/data/AlMgCu/data/sys.6316", + "/root/data/AlMgCu/data/sys.6317", + "/root/data/AlMgCu/data/sys.6318", + "/root/data/AlMgCu/data/sys.6319", + "/root/data/AlMgCu/data/sys.632", + "/root/data/AlMgCu/data/sys.6320", + "/root/data/AlMgCu/data/sys.6321", + "/root/data/AlMgCu/data/sys.6322", + "/root/data/AlMgCu/data/sys.6323", + "/root/data/AlMgCu/data/sys.6324", + "/root/data/AlMgCu/data/sys.6325", + "/root/data/AlMgCu/data/sys.6326", + "/root/data/AlMgCu/data/sys.6327", + "/root/data/AlMgCu/data/sys.6328", + "/root/data/AlMgCu/data/sys.6329", + "/root/data/AlMgCu/data/sys.6331", + "/root/data/AlMgCu/data/sys.6332", + "/root/data/AlMgCu/data/sys.6333", + "/root/data/AlMgCu/data/sys.6334", + "/root/data/AlMgCu/data/sys.6335", + "/root/data/AlMgCu/data/sys.6336", + "/root/data/AlMgCu/data/sys.6337", + "/root/data/AlMgCu/data/sys.6338", + "/root/data/AlMgCu/data/sys.6339", + "/root/data/AlMgCu/data/sys.634", + "/root/data/AlMgCu/data/sys.6341", + "/root/data/AlMgCu/data/sys.6342", + "/root/data/AlMgCu/data/sys.6344", + "/root/data/AlMgCu/data/sys.6345", + "/root/data/AlMgCu/data/sys.6346", + "/root/data/AlMgCu/data/sys.6347", + "/root/data/AlMgCu/data/sys.6349", + "/root/data/AlMgCu/data/sys.635", + "/root/data/AlMgCu/data/sys.6350", + "/root/data/AlMgCu/data/sys.6351", + "/root/data/AlMgCu/data/sys.6354", + "/root/data/AlMgCu/data/sys.6355", + "/root/data/AlMgCu/data/sys.6356", + "/root/data/AlMgCu/data/sys.6357", + "/root/data/AlMgCu/data/sys.6358", + "/root/data/AlMgCu/data/sys.6359", + "/root/data/AlMgCu/data/sys.636", + "/root/data/AlMgCu/data/sys.6360", + "/root/data/AlMgCu/data/sys.6361", + "/root/data/AlMgCu/data/sys.6362", + "/root/data/AlMgCu/data/sys.6363", + "/root/data/AlMgCu/data/sys.6364", + "/root/data/AlMgCu/data/sys.6366", + "/root/data/AlMgCu/data/sys.6367", + "/root/data/AlMgCu/data/sys.6368", + "/root/data/AlMgCu/data/sys.6369", + "/root/data/AlMgCu/data/sys.637", + "/root/data/AlMgCu/data/sys.6370", + "/root/data/AlMgCu/data/sys.6371", + "/root/data/AlMgCu/data/sys.6372", + "/root/data/AlMgCu/data/sys.6373", + "/root/data/AlMgCu/data/sys.6374", + "/root/data/AlMgCu/data/sys.6375", + "/root/data/AlMgCu/data/sys.6376", + "/root/data/AlMgCu/data/sys.6377", + "/root/data/AlMgCu/data/sys.6378", + "/root/data/AlMgCu/data/sys.6379", + "/root/data/AlMgCu/data/sys.638", + "/root/data/AlMgCu/data/sys.6381", + "/root/data/AlMgCu/data/sys.6382", + "/root/data/AlMgCu/data/sys.6383", + "/root/data/AlMgCu/data/sys.6384", + "/root/data/AlMgCu/data/sys.6385", + "/root/data/AlMgCu/data/sys.6386", + "/root/data/AlMgCu/data/sys.6387", + "/root/data/AlMgCu/data/sys.6388", + "/root/data/AlMgCu/data/sys.6389", + "/root/data/AlMgCu/data/sys.639", + "/root/data/AlMgCu/data/sys.6390", + "/root/data/AlMgCu/data/sys.6391", + "/root/data/AlMgCu/data/sys.6392", + "/root/data/AlMgCu/data/sys.6393", + "/root/data/AlMgCu/data/sys.6394", + "/root/data/AlMgCu/data/sys.6396", + "/root/data/AlMgCu/data/sys.6397", + "/root/data/AlMgCu/data/sys.6398", + "/root/data/AlMgCu/data/sys.6399", + "/root/data/AlMgCu/data/sys.640", + "/root/data/AlMgCu/data/sys.6400", + "/root/data/AlMgCu/data/sys.6401", + "/root/data/AlMgCu/data/sys.6402", + "/root/data/AlMgCu/data/sys.6403", + "/root/data/AlMgCu/data/sys.6404", + "/root/data/AlMgCu/data/sys.6405", + "/root/data/AlMgCu/data/sys.6406", + "/root/data/AlMgCu/data/sys.6408", + "/root/data/AlMgCu/data/sys.6409", + "/root/data/AlMgCu/data/sys.641", + "/root/data/AlMgCu/data/sys.6410", + "/root/data/AlMgCu/data/sys.6411", + "/root/data/AlMgCu/data/sys.6413", + "/root/data/AlMgCu/data/sys.6414", + "/root/data/AlMgCu/data/sys.6416", + "/root/data/AlMgCu/data/sys.6417", + "/root/data/AlMgCu/data/sys.6418", + "/root/data/AlMgCu/data/sys.6419", + "/root/data/AlMgCu/data/sys.642", + "/root/data/AlMgCu/data/sys.6421", + "/root/data/AlMgCu/data/sys.6422", + "/root/data/AlMgCu/data/sys.6423", + "/root/data/AlMgCu/data/sys.6424", + "/root/data/AlMgCu/data/sys.6425", + "/root/data/AlMgCu/data/sys.6426", + "/root/data/AlMgCu/data/sys.6428", + "/root/data/AlMgCu/data/sys.6429", + "/root/data/AlMgCu/data/sys.643", + "/root/data/AlMgCu/data/sys.6430", + "/root/data/AlMgCu/data/sys.6431", + "/root/data/AlMgCu/data/sys.6432", + "/root/data/AlMgCu/data/sys.6433", + "/root/data/AlMgCu/data/sys.6434", + "/root/data/AlMgCu/data/sys.6436", + "/root/data/AlMgCu/data/sys.6437", + "/root/data/AlMgCu/data/sys.6438", + "/root/data/AlMgCu/data/sys.6439", + "/root/data/AlMgCu/data/sys.644", + "/root/data/AlMgCu/data/sys.6440", + "/root/data/AlMgCu/data/sys.6441", + "/root/data/AlMgCu/data/sys.6442", + "/root/data/AlMgCu/data/sys.6443", + "/root/data/AlMgCu/data/sys.6444", + "/root/data/AlMgCu/data/sys.6445", + "/root/data/AlMgCu/data/sys.6446", + "/root/data/AlMgCu/data/sys.6447", + "/root/data/AlMgCu/data/sys.6449", + "/root/data/AlMgCu/data/sys.645", + "/root/data/AlMgCu/data/sys.6450", + "/root/data/AlMgCu/data/sys.6451", + "/root/data/AlMgCu/data/sys.6452", + "/root/data/AlMgCu/data/sys.6453", + "/root/data/AlMgCu/data/sys.6454", + "/root/data/AlMgCu/data/sys.6455", + "/root/data/AlMgCu/data/sys.6456", + "/root/data/AlMgCu/data/sys.6457", + "/root/data/AlMgCu/data/sys.6460", + "/root/data/AlMgCu/data/sys.6461", + "/root/data/AlMgCu/data/sys.6462", + "/root/data/AlMgCu/data/sys.6464", + "/root/data/AlMgCu/data/sys.6465", + "/root/data/AlMgCu/data/sys.6467", + "/root/data/AlMgCu/data/sys.6468", + "/root/data/AlMgCu/data/sys.6469", + "/root/data/AlMgCu/data/sys.647", + "/root/data/AlMgCu/data/sys.6471", + "/root/data/AlMgCu/data/sys.6472", + "/root/data/AlMgCu/data/sys.6474", + "/root/data/AlMgCu/data/sys.6475", + "/root/data/AlMgCu/data/sys.6477", + "/root/data/AlMgCu/data/sys.6478", + "/root/data/AlMgCu/data/sys.6479", + "/root/data/AlMgCu/data/sys.648", + "/root/data/AlMgCu/data/sys.6480", + "/root/data/AlMgCu/data/sys.6481", + "/root/data/AlMgCu/data/sys.6482", + "/root/data/AlMgCu/data/sys.6483", + "/root/data/AlMgCu/data/sys.6485", + "/root/data/AlMgCu/data/sys.6486", + "/root/data/AlMgCu/data/sys.6487", + "/root/data/AlMgCu/data/sys.6488", + "/root/data/AlMgCu/data/sys.6489", + "/root/data/AlMgCu/data/sys.649", + "/root/data/AlMgCu/data/sys.6490", + "/root/data/AlMgCu/data/sys.6491", + "/root/data/AlMgCu/data/sys.6492", + "/root/data/AlMgCu/data/sys.6493", + "/root/data/AlMgCu/data/sys.6494", + "/root/data/AlMgCu/data/sys.6495", + "/root/data/AlMgCu/data/sys.6497", + "/root/data/AlMgCu/data/sys.6498", + "/root/data/AlMgCu/data/sys.6499", + "/root/data/AlMgCu/data/sys.650", + "/root/data/AlMgCu/data/sys.6501", + "/root/data/AlMgCu/data/sys.6502", + "/root/data/AlMgCu/data/sys.6503", + "/root/data/AlMgCu/data/sys.6505", + "/root/data/AlMgCu/data/sys.6506", + "/root/data/AlMgCu/data/sys.6507", + "/root/data/AlMgCu/data/sys.6508", + "/root/data/AlMgCu/data/sys.6509", + "/root/data/AlMgCu/data/sys.651", + "/root/data/AlMgCu/data/sys.6510", + "/root/data/AlMgCu/data/sys.6511", + "/root/data/AlMgCu/data/sys.6512", + "/root/data/AlMgCu/data/sys.6513", + "/root/data/AlMgCu/data/sys.6514", + "/root/data/AlMgCu/data/sys.6515", + "/root/data/AlMgCu/data/sys.6516", + "/root/data/AlMgCu/data/sys.6517", + "/root/data/AlMgCu/data/sys.6519", + "/root/data/AlMgCu/data/sys.652", + "/root/data/AlMgCu/data/sys.6520", + "/root/data/AlMgCu/data/sys.6521", + "/root/data/AlMgCu/data/sys.6522", + "/root/data/AlMgCu/data/sys.6523", + "/root/data/AlMgCu/data/sys.6524", + "/root/data/AlMgCu/data/sys.6525", + "/root/data/AlMgCu/data/sys.6526", + "/root/data/AlMgCu/data/sys.6527", + "/root/data/AlMgCu/data/sys.6528", + "/root/data/AlMgCu/data/sys.6529", + "/root/data/AlMgCu/data/sys.653", + "/root/data/AlMgCu/data/sys.6530", + "/root/data/AlMgCu/data/sys.6531", + "/root/data/AlMgCu/data/sys.6533", + "/root/data/AlMgCu/data/sys.6534", + "/root/data/AlMgCu/data/sys.6535", + "/root/data/AlMgCu/data/sys.6537", + "/root/data/AlMgCu/data/sys.6539", + "/root/data/AlMgCu/data/sys.654", + "/root/data/AlMgCu/data/sys.6540", + "/root/data/AlMgCu/data/sys.6541", + "/root/data/AlMgCu/data/sys.6542", + "/root/data/AlMgCu/data/sys.6544", + "/root/data/AlMgCu/data/sys.6545", + "/root/data/AlMgCu/data/sys.6546", + "/root/data/AlMgCu/data/sys.6547", + "/root/data/AlMgCu/data/sys.6548", + "/root/data/AlMgCu/data/sys.6549", + "/root/data/AlMgCu/data/sys.655", + "/root/data/AlMgCu/data/sys.6550", + "/root/data/AlMgCu/data/sys.6551", + "/root/data/AlMgCu/data/sys.6552", + "/root/data/AlMgCu/data/sys.6553", + "/root/data/AlMgCu/data/sys.6554", + "/root/data/AlMgCu/data/sys.6555", + "/root/data/AlMgCu/data/sys.6556", + "/root/data/AlMgCu/data/sys.6557", + "/root/data/AlMgCu/data/sys.6558", + "/root/data/AlMgCu/data/sys.6559", + "/root/data/AlMgCu/data/sys.656", + "/root/data/AlMgCu/data/sys.6561", + "/root/data/AlMgCu/data/sys.6562", + "/root/data/AlMgCu/data/sys.6563", + "/root/data/AlMgCu/data/sys.6564", + "/root/data/AlMgCu/data/sys.6566", + "/root/data/AlMgCu/data/sys.6567", + "/root/data/AlMgCu/data/sys.6568", + "/root/data/AlMgCu/data/sys.657", + "/root/data/AlMgCu/data/sys.6571", + "/root/data/AlMgCu/data/sys.6572", + "/root/data/AlMgCu/data/sys.6573", + "/root/data/AlMgCu/data/sys.6574", + "/root/data/AlMgCu/data/sys.6575", + "/root/data/AlMgCu/data/sys.6576", + "/root/data/AlMgCu/data/sys.6577", + "/root/data/AlMgCu/data/sys.6578", + "/root/data/AlMgCu/data/sys.6579", + "/root/data/AlMgCu/data/sys.658", + "/root/data/AlMgCu/data/sys.6580", + "/root/data/AlMgCu/data/sys.6581", + "/root/data/AlMgCu/data/sys.6582", + "/root/data/AlMgCu/data/sys.6583", + "/root/data/AlMgCu/data/sys.6584", + "/root/data/AlMgCu/data/sys.6585", + "/root/data/AlMgCu/data/sys.6586", + "/root/data/AlMgCu/data/sys.6587", + "/root/data/AlMgCu/data/sys.6588", + "/root/data/AlMgCu/data/sys.6589", + "/root/data/AlMgCu/data/sys.659", + "/root/data/AlMgCu/data/sys.6590", + "/root/data/AlMgCu/data/sys.6591", + "/root/data/AlMgCu/data/sys.6592", + "/root/data/AlMgCu/data/sys.6593", + "/root/data/AlMgCu/data/sys.6596", + "/root/data/AlMgCu/data/sys.6597", + "/root/data/AlMgCu/data/sys.6598", + "/root/data/AlMgCu/data/sys.660", + "/root/data/AlMgCu/data/sys.6600", + "/root/data/AlMgCu/data/sys.6601", + "/root/data/AlMgCu/data/sys.6602", + "/root/data/AlMgCu/data/sys.6603", + "/root/data/AlMgCu/data/sys.6604", + "/root/data/AlMgCu/data/sys.6605", + "/root/data/AlMgCu/data/sys.6606", + "/root/data/AlMgCu/data/sys.6607", + "/root/data/AlMgCu/data/sys.6608", + "/root/data/AlMgCu/data/sys.6609", + "/root/data/AlMgCu/data/sys.661", + "/root/data/AlMgCu/data/sys.6610", + "/root/data/AlMgCu/data/sys.6611", + "/root/data/AlMgCu/data/sys.6612", + "/root/data/AlMgCu/data/sys.6613", + "/root/data/AlMgCu/data/sys.6614", + "/root/data/AlMgCu/data/sys.6615", + "/root/data/AlMgCu/data/sys.6616", + "/root/data/AlMgCu/data/sys.6617", + "/root/data/AlMgCu/data/sys.6618", + "/root/data/AlMgCu/data/sys.6619", + "/root/data/AlMgCu/data/sys.662", + "/root/data/AlMgCu/data/sys.6620", + "/root/data/AlMgCu/data/sys.6621", + "/root/data/AlMgCu/data/sys.6622", + "/root/data/AlMgCu/data/sys.6623", + "/root/data/AlMgCu/data/sys.6624", + "/root/data/AlMgCu/data/sys.6625", + "/root/data/AlMgCu/data/sys.6626", + "/root/data/AlMgCu/data/sys.6627", + "/root/data/AlMgCu/data/sys.6628", + "/root/data/AlMgCu/data/sys.6629", + "/root/data/AlMgCu/data/sys.663", + "/root/data/AlMgCu/data/sys.6630", + "/root/data/AlMgCu/data/sys.6631", + "/root/data/AlMgCu/data/sys.6632", + "/root/data/AlMgCu/data/sys.6633", + "/root/data/AlMgCu/data/sys.6634", + "/root/data/AlMgCu/data/sys.6637", + "/root/data/AlMgCu/data/sys.6638", + "/root/data/AlMgCu/data/sys.6639", + "/root/data/AlMgCu/data/sys.664", + "/root/data/AlMgCu/data/sys.6640", + "/root/data/AlMgCu/data/sys.6641", + "/root/data/AlMgCu/data/sys.6642", + "/root/data/AlMgCu/data/sys.6644", + "/root/data/AlMgCu/data/sys.6645", + "/root/data/AlMgCu/data/sys.6646", + "/root/data/AlMgCu/data/sys.6647", + "/root/data/AlMgCu/data/sys.6648", + "/root/data/AlMgCu/data/sys.665", + "/root/data/AlMgCu/data/sys.6650", + "/root/data/AlMgCu/data/sys.6651", + "/root/data/AlMgCu/data/sys.6652", + "/root/data/AlMgCu/data/sys.6655", + "/root/data/AlMgCu/data/sys.6656", + "/root/data/AlMgCu/data/sys.6657", + "/root/data/AlMgCu/data/sys.6658", + "/root/data/AlMgCu/data/sys.666", + "/root/data/AlMgCu/data/sys.6660", + "/root/data/AlMgCu/data/sys.6661", + "/root/data/AlMgCu/data/sys.6662", + "/root/data/AlMgCu/data/sys.6663", + "/root/data/AlMgCu/data/sys.6664", + "/root/data/AlMgCu/data/sys.6665", + "/root/data/AlMgCu/data/sys.6666", + "/root/data/AlMgCu/data/sys.6667", + "/root/data/AlMgCu/data/sys.6668", + "/root/data/AlMgCu/data/sys.6669", + "/root/data/AlMgCu/data/sys.6670", + "/root/data/AlMgCu/data/sys.6671", + "/root/data/AlMgCu/data/sys.6673", + "/root/data/AlMgCu/data/sys.6674", + "/root/data/AlMgCu/data/sys.6676", + "/root/data/AlMgCu/data/sys.6677", + "/root/data/AlMgCu/data/sys.6678", + "/root/data/AlMgCu/data/sys.6679", + "/root/data/AlMgCu/data/sys.668", + "/root/data/AlMgCu/data/sys.6680", + "/root/data/AlMgCu/data/sys.6681", + "/root/data/AlMgCu/data/sys.6682", + "/root/data/AlMgCu/data/sys.6683", + "/root/data/AlMgCu/data/sys.6684", + "/root/data/AlMgCu/data/sys.6685", + "/root/data/AlMgCu/data/sys.6686", + "/root/data/AlMgCu/data/sys.6687", + "/root/data/AlMgCu/data/sys.6688", + "/root/data/AlMgCu/data/sys.6689", + "/root/data/AlMgCu/data/sys.6690", + "/root/data/AlMgCu/data/sys.6691", + "/root/data/AlMgCu/data/sys.6692", + "/root/data/AlMgCu/data/sys.6693", + "/root/data/AlMgCu/data/sys.6694", + "/root/data/AlMgCu/data/sys.6695", + "/root/data/AlMgCu/data/sys.6696", + "/root/data/AlMgCu/data/sys.6697", + "/root/data/AlMgCu/data/sys.6698", + "/root/data/AlMgCu/data/sys.6699", + "/root/data/AlMgCu/data/sys.670", + "/root/data/AlMgCu/data/sys.6700", + "/root/data/AlMgCu/data/sys.6701", + "/root/data/AlMgCu/data/sys.6703", + "/root/data/AlMgCu/data/sys.6704", + "/root/data/AlMgCu/data/sys.6705", + "/root/data/AlMgCu/data/sys.6706", + "/root/data/AlMgCu/data/sys.6707", + "/root/data/AlMgCu/data/sys.6708", + "/root/data/AlMgCu/data/sys.6709", + "/root/data/AlMgCu/data/sys.671", + "/root/data/AlMgCu/data/sys.6710", + "/root/data/AlMgCu/data/sys.6711", + "/root/data/AlMgCu/data/sys.6712", + "/root/data/AlMgCu/data/sys.6714", + "/root/data/AlMgCu/data/sys.6715", + "/root/data/AlMgCu/data/sys.6716", + "/root/data/AlMgCu/data/sys.6717", + "/root/data/AlMgCu/data/sys.6718", + "/root/data/AlMgCu/data/sys.6719", + "/root/data/AlMgCu/data/sys.672", + "/root/data/AlMgCu/data/sys.6720", + "/root/data/AlMgCu/data/sys.6721", + "/root/data/AlMgCu/data/sys.6722", + "/root/data/AlMgCu/data/sys.6723", + "/root/data/AlMgCu/data/sys.6724", + "/root/data/AlMgCu/data/sys.6725", + "/root/data/AlMgCu/data/sys.6726", + "/root/data/AlMgCu/data/sys.6727", + "/root/data/AlMgCu/data/sys.6728", + "/root/data/AlMgCu/data/sys.6729", + "/root/data/AlMgCu/data/sys.673", + "/root/data/AlMgCu/data/sys.6730", + "/root/data/AlMgCu/data/sys.6731", + "/root/data/AlMgCu/data/sys.6732", + "/root/data/AlMgCu/data/sys.6733", + "/root/data/AlMgCu/data/sys.6734", + "/root/data/AlMgCu/data/sys.6735", + "/root/data/AlMgCu/data/sys.6736", + "/root/data/AlMgCu/data/sys.6737", + "/root/data/AlMgCu/data/sys.6738", + "/root/data/AlMgCu/data/sys.6739", + "/root/data/AlMgCu/data/sys.674", + "/root/data/AlMgCu/data/sys.6740", + "/root/data/AlMgCu/data/sys.6741", + "/root/data/AlMgCu/data/sys.6742", + "/root/data/AlMgCu/data/sys.6743", + "/root/data/AlMgCu/data/sys.6745", + "/root/data/AlMgCu/data/sys.6746", + "/root/data/AlMgCu/data/sys.675", + "/root/data/AlMgCu/data/sys.6750", + "/root/data/AlMgCu/data/sys.6751", + "/root/data/AlMgCu/data/sys.6752", + "/root/data/AlMgCu/data/sys.6753", + "/root/data/AlMgCu/data/sys.6754", + "/root/data/AlMgCu/data/sys.6755", + "/root/data/AlMgCu/data/sys.6756", + "/root/data/AlMgCu/data/sys.6758", + "/root/data/AlMgCu/data/sys.676", + "/root/data/AlMgCu/data/sys.6760", + "/root/data/AlMgCu/data/sys.6762", + "/root/data/AlMgCu/data/sys.6763", + "/root/data/AlMgCu/data/sys.6764", + "/root/data/AlMgCu/data/sys.6765", + "/root/data/AlMgCu/data/sys.6766", + "/root/data/AlMgCu/data/sys.6767", + "/root/data/AlMgCu/data/sys.6768", + "/root/data/AlMgCu/data/sys.677", + "/root/data/AlMgCu/data/sys.6770", + "/root/data/AlMgCu/data/sys.6771", + "/root/data/AlMgCu/data/sys.6772", + "/root/data/AlMgCu/data/sys.6773", + "/root/data/AlMgCu/data/sys.6774", + "/root/data/AlMgCu/data/sys.6775", + "/root/data/AlMgCu/data/sys.6778", + "/root/data/AlMgCu/data/sys.6779", + "/root/data/AlMgCu/data/sys.678", + "/root/data/AlMgCu/data/sys.6780", + "/root/data/AlMgCu/data/sys.6781", + "/root/data/AlMgCu/data/sys.6782", + "/root/data/AlMgCu/data/sys.6783", + "/root/data/AlMgCu/data/sys.6784", + "/root/data/AlMgCu/data/sys.6785", + "/root/data/AlMgCu/data/sys.6786", + "/root/data/AlMgCu/data/sys.6787", + "/root/data/AlMgCu/data/sys.6788", + "/root/data/AlMgCu/data/sys.6789", + "/root/data/AlMgCu/data/sys.679", + "/root/data/AlMgCu/data/sys.6790", + "/root/data/AlMgCu/data/sys.6791", + "/root/data/AlMgCu/data/sys.6792", + "/root/data/AlMgCu/data/sys.6794", + "/root/data/AlMgCu/data/sys.6795", + "/root/data/AlMgCu/data/sys.6796", + "/root/data/AlMgCu/data/sys.6797", + "/root/data/AlMgCu/data/sys.6798", + "/root/data/AlMgCu/data/sys.6799", + "/root/data/AlMgCu/data/sys.680", + "/root/data/AlMgCu/data/sys.6800", + "/root/data/AlMgCu/data/sys.6801", + "/root/data/AlMgCu/data/sys.6802", + "/root/data/AlMgCu/data/sys.6804", + "/root/data/AlMgCu/data/sys.6805", + "/root/data/AlMgCu/data/sys.6806", + "/root/data/AlMgCu/data/sys.6807", + "/root/data/AlMgCu/data/sys.6808", + "/root/data/AlMgCu/data/sys.6809", + "/root/data/AlMgCu/data/sys.681", + "/root/data/AlMgCu/data/sys.6810", + "/root/data/AlMgCu/data/sys.6811", + "/root/data/AlMgCu/data/sys.6812", + "/root/data/AlMgCu/data/sys.6813", + "/root/data/AlMgCu/data/sys.6814", + "/root/data/AlMgCu/data/sys.6815", + "/root/data/AlMgCu/data/sys.6816", + "/root/data/AlMgCu/data/sys.6817", + "/root/data/AlMgCu/data/sys.6818", + "/root/data/AlMgCu/data/sys.6819", + "/root/data/AlMgCu/data/sys.682", + "/root/data/AlMgCu/data/sys.6820", + "/root/data/AlMgCu/data/sys.6821", + "/root/data/AlMgCu/data/sys.6822", + "/root/data/AlMgCu/data/sys.6823", + "/root/data/AlMgCu/data/sys.6825", + "/root/data/AlMgCu/data/sys.6826", + "/root/data/AlMgCu/data/sys.6827", + "/root/data/AlMgCu/data/sys.6828", + "/root/data/AlMgCu/data/sys.6829", + "/root/data/AlMgCu/data/sys.683", + "/root/data/AlMgCu/data/sys.6830", + "/root/data/AlMgCu/data/sys.6831", + "/root/data/AlMgCu/data/sys.6832", + "/root/data/AlMgCu/data/sys.6833", + "/root/data/AlMgCu/data/sys.6834", + "/root/data/AlMgCu/data/sys.6835", + "/root/data/AlMgCu/data/sys.6836", + "/root/data/AlMgCu/data/sys.6837", + "/root/data/AlMgCu/data/sys.6838", + "/root/data/AlMgCu/data/sys.6839", + "/root/data/AlMgCu/data/sys.684", + "/root/data/AlMgCu/data/sys.6840", + "/root/data/AlMgCu/data/sys.6842", + "/root/data/AlMgCu/data/sys.6843", + "/root/data/AlMgCu/data/sys.6844", + "/root/data/AlMgCu/data/sys.6845", + "/root/data/AlMgCu/data/sys.6847", + "/root/data/AlMgCu/data/sys.6849", + "/root/data/AlMgCu/data/sys.685", + "/root/data/AlMgCu/data/sys.6850", + "/root/data/AlMgCu/data/sys.6851", + "/root/data/AlMgCu/data/sys.6852", + "/root/data/AlMgCu/data/sys.6853", + "/root/data/AlMgCu/data/sys.6854", + "/root/data/AlMgCu/data/sys.6855", + "/root/data/AlMgCu/data/sys.6856", + "/root/data/AlMgCu/data/sys.6858", + "/root/data/AlMgCu/data/sys.6859", + "/root/data/AlMgCu/data/sys.686", + "/root/data/AlMgCu/data/sys.6860", + "/root/data/AlMgCu/data/sys.6861", + "/root/data/AlMgCu/data/sys.6862", + "/root/data/AlMgCu/data/sys.6863", + "/root/data/AlMgCu/data/sys.6864", + "/root/data/AlMgCu/data/sys.6865", + "/root/data/AlMgCu/data/sys.6866", + "/root/data/AlMgCu/data/sys.6867", + "/root/data/AlMgCu/data/sys.6868", + "/root/data/AlMgCu/data/sys.6869", + "/root/data/AlMgCu/data/sys.6870", + "/root/data/AlMgCu/data/sys.6871", + "/root/data/AlMgCu/data/sys.6874", + "/root/data/AlMgCu/data/sys.688", + "/root/data/AlMgCu/data/sys.6880", + "/root/data/AlMgCu/data/sys.6881", + "/root/data/AlMgCu/data/sys.6882", + "/root/data/AlMgCu/data/sys.6883", + "/root/data/AlMgCu/data/sys.6884", + "/root/data/AlMgCu/data/sys.6889", + "/root/data/AlMgCu/data/sys.689", + "/root/data/AlMgCu/data/sys.6890", + "/root/data/AlMgCu/data/sys.6891", + "/root/data/AlMgCu/data/sys.6897", + "/root/data/AlMgCu/data/sys.6898", + "/root/data/AlMgCu/data/sys.6899", + "/root/data/AlMgCu/data/sys.690", + "/root/data/AlMgCu/data/sys.6900", + "/root/data/AlMgCu/data/sys.6904", + "/root/data/AlMgCu/data/sys.6912", + "/root/data/AlMgCu/data/sys.6922", + "/root/data/AlMgCu/data/sys.693", + "/root/data/AlMgCu/data/sys.6930", + "/root/data/AlMgCu/data/sys.6938", + "/root/data/AlMgCu/data/sys.6944", + "/root/data/AlMgCu/data/sys.6946", + "/root/data/AlMgCu/data/sys.695", + "/root/data/AlMgCu/data/sys.6952", + "/root/data/AlMgCu/data/sys.6954", + "/root/data/AlMgCu/data/sys.696", + "/root/data/AlMgCu/data/sys.6962", + "/root/data/AlMgCu/data/sys.697", + "/root/data/AlMgCu/data/sys.6970", + "/root/data/AlMgCu/data/sys.6972", + "/root/data/AlMgCu/data/sys.6978", + "/root/data/AlMgCu/data/sys.6979", + "/root/data/AlMgCu/data/sys.698", + "/root/data/AlMgCu/data/sys.6985", + "/root/data/AlMgCu/data/sys.699", + "/root/data/AlMgCu/data/sys.6992", + "/root/data/AlMgCu/data/sys.6993", + "/root/data/AlMgCu/data/sys.6994", + "/root/data/AlMgCu/data/sys.6996", + "/root/data/AlMgCu/data/sys.6998", + "/root/data/AlMgCu/data/sys.7000", + "/root/data/AlMgCu/data/sys.7002", + "/root/data/AlMgCu/data/sys.7008", + "/root/data/AlMgCu/data/sys.701", + "/root/data/AlMgCu/data/sys.7010", + "/root/data/AlMgCu/data/sys.7012", + "/root/data/AlMgCu/data/sys.7018", + "/root/data/AlMgCu/data/sys.702", + "/root/data/AlMgCu/data/sys.7025", + "/root/data/AlMgCu/data/sys.7026", + "/root/data/AlMgCu/data/sys.7028", + "/root/data/AlMgCu/data/sys.703", + "/root/data/AlMgCu/data/sys.7034", + "/root/data/AlMgCu/data/sys.7036", + "/root/data/AlMgCu/data/sys.704", + "/root/data/AlMgCu/data/sys.7040", + "/root/data/AlMgCu/data/sys.7041", + "/root/data/AlMgCu/data/sys.7042", + "/root/data/AlMgCu/data/sys.705", + "/root/data/AlMgCu/data/sys.7058", + "/root/data/AlMgCu/data/sys.7059", + "/root/data/AlMgCu/data/sys.706", + "/root/data/AlMgCu/data/sys.7060", + "/root/data/AlMgCu/data/sys.7061", + "/root/data/AlMgCu/data/sys.7065", + "/root/data/AlMgCu/data/sys.7066", + "/root/data/AlMgCu/data/sys.7067", + "/root/data/AlMgCu/data/sys.707", + "/root/data/AlMgCu/data/sys.708", + "/root/data/AlMgCu/data/sys.7081", + "/root/data/AlMgCu/data/sys.7083", + "/root/data/AlMgCu/data/sys.7089", + "/root/data/AlMgCu/data/sys.709", + "/root/data/AlMgCu/data/sys.7090", + "/root/data/AlMgCu/data/sys.7091", + "/root/data/AlMgCu/data/sys.7092", + "/root/data/AlMgCu/data/sys.7093", + "/root/data/AlMgCu/data/sys.7096", + "/root/data/AlMgCu/data/sys.7098", + "/root/data/AlMgCu/data/sys.710", + "/root/data/AlMgCu/data/sys.7100", + "/root/data/AlMgCu/data/sys.7106", + "/root/data/AlMgCu/data/sys.7108", + "/root/data/AlMgCu/data/sys.711", + "/root/data/AlMgCu/data/sys.7112", + "/root/data/AlMgCu/data/sys.7114", + "/root/data/AlMgCu/data/sys.712", + "/root/data/AlMgCu/data/sys.713", + "/root/data/AlMgCu/data/sys.7130", + "/root/data/AlMgCu/data/sys.7138", + "/root/data/AlMgCu/data/sys.714", + "/root/data/AlMgCu/data/sys.7140", + "/root/data/AlMgCu/data/sys.7146", + "/root/data/AlMgCu/data/sys.7147", + "/root/data/AlMgCu/data/sys.715", + "/root/data/AlMgCu/data/sys.7154", + "/root/data/AlMgCu/data/sys.7155", + "/root/data/AlMgCu/data/sys.716", + "/root/data/AlMgCu/data/sys.7162", + "/root/data/AlMgCu/data/sys.7164", + "/root/data/AlMgCu/data/sys.717", + "/root/data/AlMgCu/data/sys.7170", + "/root/data/AlMgCu/data/sys.7173", + "/root/data/AlMgCu/data/sys.7177", + "/root/data/AlMgCu/data/sys.7178", + "/root/data/AlMgCu/data/sys.718", + "/root/data/AlMgCu/data/sys.7180", + "/root/data/AlMgCu/data/sys.7184", + "/root/data/AlMgCu/data/sys.7186", + "/root/data/AlMgCu/data/sys.7188", + "/root/data/AlMgCu/data/sys.719", + "/root/data/AlMgCu/data/sys.7194", + "/root/data/AlMgCu/data/sys.7200", + "/root/data/AlMgCu/data/sys.7202", + "/root/data/AlMgCu/data/sys.7208", + "/root/data/AlMgCu/data/sys.721", + "/root/data/AlMgCu/data/sys.7218", + "/root/data/AlMgCu/data/sys.722", + "/root/data/AlMgCu/data/sys.7226", + "/root/data/AlMgCu/data/sys.723", + "/root/data/AlMgCu/data/sys.7234", + "/root/data/AlMgCu/data/sys.724", + "/root/data/AlMgCu/data/sys.7240", + "/root/data/AlMgCu/data/sys.7241", + "/root/data/AlMgCu/data/sys.7243", + "/root/data/AlMgCu/data/sys.725", + "/root/data/AlMgCu/data/sys.7250", + "/root/data/AlMgCu/data/sys.7256", + "/root/data/AlMgCu/data/sys.7258", + "/root/data/AlMgCu/data/sys.726", + "/root/data/AlMgCu/data/sys.7268", + "/root/data/AlMgCu/data/sys.727", + "/root/data/AlMgCu/data/sys.7274", + "/root/data/AlMgCu/data/sys.728", + "/root/data/AlMgCu/data/sys.7282", + "/root/data/AlMgCu/data/sys.7289", + "/root/data/AlMgCu/data/sys.729", + "/root/data/AlMgCu/data/sys.7292", + "/root/data/AlMgCu/data/sys.730", + "/root/data/AlMgCu/data/sys.731", + "/root/data/AlMgCu/data/sys.732", + "/root/data/AlMgCu/data/sys.7322", + "/root/data/AlMgCu/data/sys.7325", + "/root/data/AlMgCu/data/sys.7336", + "/root/data/AlMgCu/data/sys.7338", + "/root/data/AlMgCu/data/sys.734", + "/root/data/AlMgCu/data/sys.7344", + "/root/data/AlMgCu/data/sys.7348", + "/root/data/AlMgCu/data/sys.735", + "/root/data/AlMgCu/data/sys.7352", + "/root/data/AlMgCu/data/sys.7354", + "/root/data/AlMgCu/data/sys.7356", + "/root/data/AlMgCu/data/sys.736", + "/root/data/AlMgCu/data/sys.7360", + "/root/data/AlMgCu/data/sys.7362", + "/root/data/AlMgCu/data/sys.7364", + "/root/data/AlMgCu/data/sys.737", + "/root/data/AlMgCu/data/sys.7378", + "/root/data/AlMgCu/data/sys.7380", + "/root/data/AlMgCu/data/sys.739", + "/root/data/AlMgCu/data/sys.7394", + "/root/data/AlMgCu/data/sys.7401", + "/root/data/AlMgCu/data/sys.7412", + "/root/data/AlMgCu/data/sys.7425", + "/root/data/AlMgCu/data/sys.7426", + "/root/data/AlMgCu/data/sys.7427", + "/root/data/AlMgCu/data/sys.7430", + "/root/data/AlMgCu/data/sys.7434", + "/root/data/AlMgCu/data/sys.744", + "/root/data/AlMgCu/data/sys.7442", + "/root/data/AlMgCu/data/sys.7444", + "/root/data/AlMgCu/data/sys.7450", + "/root/data/AlMgCu/data/sys.7456", + "/root/data/AlMgCu/data/sys.7457", + "/root/data/AlMgCu/data/sys.746", + "/root/data/AlMgCu/data/sys.747", + "/root/data/AlMgCu/data/sys.7474", + "/root/data/AlMgCu/data/sys.748", + "/root/data/AlMgCu/data/sys.749", + "/root/data/AlMgCu/data/sys.7498", + "/root/data/AlMgCu/data/sys.750", + "/root/data/AlMgCu/data/sys.7508", + "/root/data/AlMgCu/data/sys.751", + "/root/data/AlMgCu/data/sys.752", + "/root/data/AlMgCu/data/sys.7522", + "/root/data/AlMgCu/data/sys.753", + "/root/data/AlMgCu/data/sys.754", + "/root/data/AlMgCu/data/sys.7540", + "/root/data/AlMgCu/data/sys.755", + "/root/data/AlMgCu/data/sys.756", + "/root/data/AlMgCu/data/sys.7561", + "/root/data/AlMgCu/data/sys.7569", + "/root/data/AlMgCu/data/sys.757", + "/root/data/AlMgCu/data/sys.7570", + "/root/data/AlMgCu/data/sys.7578", + "/root/data/AlMgCu/data/sys.758", + "/root/data/AlMgCu/data/sys.7580", + "/root/data/AlMgCu/data/sys.7582", + "/root/data/AlMgCu/data/sys.759", + "/root/data/AlMgCu/data/sys.7592", + "/root/data/AlMgCu/data/sys.7594", + "/root/data/AlMgCu/data/sys.760", + "/root/data/AlMgCu/data/sys.7604", + "/root/data/AlMgCu/data/sys.761", + "/root/data/AlMgCu/data/sys.7610", + "/root/data/AlMgCu/data/sys.7618", + "/root/data/AlMgCu/data/sys.762", + "/root/data/AlMgCu/data/sys.763", + "/root/data/AlMgCu/data/sys.764", + "/root/data/AlMgCu/data/sys.7642", + "/root/data/AlMgCu/data/sys.765", + "/root/data/AlMgCu/data/sys.7650", + "/root/data/AlMgCu/data/sys.7657", + "/root/data/AlMgCu/data/sys.7658", + "/root/data/AlMgCu/data/sys.766", + "/root/data/AlMgCu/data/sys.767", + "/root/data/AlMgCu/data/sys.7676", + "/root/data/AlMgCu/data/sys.768", + "/root/data/AlMgCu/data/sys.7680", + "/root/data/AlMgCu/data/sys.7684", + "/root/data/AlMgCu/data/sys.769", + "/root/data/AlMgCu/data/sys.770", + "/root/data/AlMgCu/data/sys.771", + "/root/data/AlMgCu/data/sys.7712", + "/root/data/AlMgCu/data/sys.7716", + "/root/data/AlMgCu/data/sys.772", + "/root/data/AlMgCu/data/sys.7720", + "/root/data/AlMgCu/data/sys.773", + "/root/data/AlMgCu/data/sys.774", + "/root/data/AlMgCu/data/sys.7740", + "/root/data/AlMgCu/data/sys.7748", + "/root/data/AlMgCu/data/sys.775", + "/root/data/AlMgCu/data/sys.776", + "/root/data/AlMgCu/data/sys.777", + "/root/data/AlMgCu/data/sys.7772", + "/root/data/AlMgCu/data/sys.778", + "/root/data/AlMgCu/data/sys.779", + "/root/data/AlMgCu/data/sys.7796", + "/root/data/AlMgCu/data/sys.780", + "/root/data/AlMgCu/data/sys.7802", + "/root/data/AlMgCu/data/sys.7804", + "/root/data/AlMgCu/data/sys.781", + "/root/data/AlMgCu/data/sys.7810", + "/root/data/AlMgCu/data/sys.7812", + "/root/data/AlMgCu/data/sys.782", + "/root/data/AlMgCu/data/sys.783", + "/root/data/AlMgCu/data/sys.784", + "/root/data/AlMgCu/data/sys.7842", + "/root/data/AlMgCu/data/sys.785", + "/root/data/AlMgCu/data/sys.7850", + "/root/data/AlMgCu/data/sys.7858", + "/root/data/AlMgCu/data/sys.786", + "/root/data/AlMgCu/data/sys.7860", + "/root/data/AlMgCu/data/sys.7866", + "/root/data/AlMgCu/data/sys.7868", + "/root/data/AlMgCu/data/sys.787", + "/root/data/AlMgCu/data/sys.788", + "/root/data/AlMgCu/data/sys.789", + "/root/data/AlMgCu/data/sys.790", + "/root/data/AlMgCu/data/sys.791", + "/root/data/AlMgCu/data/sys.792", + "/root/data/AlMgCu/data/sys.793", + "/root/data/AlMgCu/data/sys.7936", + "/root/data/AlMgCu/data/sys.795", + "/root/data/AlMgCu/data/sys.7952", + "/root/data/AlMgCu/data/sys.797", + "/root/data/AlMgCu/data/sys.798", + "/root/data/AlMgCu/data/sys.799", + "/root/data/AlMgCu/data/sys.801", + "/root/data/AlMgCu/data/sys.802", + "/root/data/AlMgCu/data/sys.803", + "/root/data/AlMgCu/data/sys.804", + "/root/data/AlMgCu/data/sys.805", + "/root/data/AlMgCu/data/sys.806", + "/root/data/AlMgCu/data/sys.807", + "/root/data/AlMgCu/data/sys.808", + "/root/data/AlMgCu/data/sys.809", + "/root/data/AlMgCu/data/sys.810", + "/root/data/AlMgCu/data/sys.811", + "/root/data/AlMgCu/data/sys.813", + "/root/data/AlMgCu/data/sys.814", + "/root/data/AlMgCu/data/sys.815", + "/root/data/AlMgCu/data/sys.817", + "/root/data/AlMgCu/data/sys.818", + "/root/data/AlMgCu/data/sys.819", + "/root/data/AlMgCu/data/sys.820", + "/root/data/AlMgCu/data/sys.821", + "/root/data/AlMgCu/data/sys.822", + "/root/data/AlMgCu/data/sys.824", + "/root/data/AlMgCu/data/sys.825", + "/root/data/AlMgCu/data/sys.826", + "/root/data/AlMgCu/data/sys.827", + "/root/data/AlMgCu/data/sys.828", + "/root/data/AlMgCu/data/sys.829", + "/root/data/AlMgCu/data/sys.830", + "/root/data/AlMgCu/data/sys.831", + "/root/data/AlMgCu/data/sys.832", + "/root/data/AlMgCu/data/sys.834", + "/root/data/AlMgCu/data/sys.835", + "/root/data/AlMgCu/data/sys.836", + "/root/data/AlMgCu/data/sys.837", + "/root/data/AlMgCu/data/sys.838", + "/root/data/AlMgCu/data/sys.839", + "/root/data/AlMgCu/data/sys.840", + "/root/data/AlMgCu/data/sys.841", + "/root/data/AlMgCu/data/sys.842", + "/root/data/AlMgCu/data/sys.843", + "/root/data/AlMgCu/data/sys.844", + "/root/data/AlMgCu/data/sys.846", + "/root/data/AlMgCu/data/sys.847", + "/root/data/AlMgCu/data/sys.848", + "/root/data/AlMgCu/data/sys.850", + "/root/data/AlMgCu/data/sys.851", + "/root/data/AlMgCu/data/sys.852", + "/root/data/AlMgCu/data/sys.853", + "/root/data/AlMgCu/data/sys.854", + "/root/data/AlMgCu/data/sys.855", + "/root/data/AlMgCu/data/sys.856", + "/root/data/AlMgCu/data/sys.857", + "/root/data/AlMgCu/data/sys.858", + "/root/data/AlMgCu/data/sys.860", + "/root/data/AlMgCu/data/sys.861", + "/root/data/AlMgCu/data/sys.862", + "/root/data/AlMgCu/data/sys.863", + "/root/data/AlMgCu/data/sys.864", + "/root/data/AlMgCu/data/sys.865", + "/root/data/AlMgCu/data/sys.867", + "/root/data/AlMgCu/data/sys.868", + "/root/data/AlMgCu/data/sys.869", + "/root/data/AlMgCu/data/sys.870", + "/root/data/AlMgCu/data/sys.871", + "/root/data/AlMgCu/data/sys.872", + "/root/data/AlMgCu/data/sys.874", + "/root/data/AlMgCu/data/sys.875", + "/root/data/AlMgCu/data/sys.876", + "/root/data/AlMgCu/data/sys.877", + "/root/data/AlMgCu/data/sys.878", + "/root/data/AlMgCu/data/sys.879", + "/root/data/AlMgCu/data/sys.880", + "/root/data/AlMgCu/data/sys.881", + "/root/data/AlMgCu/data/sys.882", + "/root/data/AlMgCu/data/sys.883", + "/root/data/AlMgCu/data/sys.884", + "/root/data/AlMgCu/data/sys.885", + "/root/data/AlMgCu/data/sys.887", + "/root/data/AlMgCu/data/sys.888", + "/root/data/AlMgCu/data/sys.890", + "/root/data/AlMgCu/data/sys.891", + "/root/data/AlMgCu/data/sys.892", + "/root/data/AlMgCu/data/sys.893", + "/root/data/AlMgCu/data/sys.894", + "/root/data/AlMgCu/data/sys.896", + "/root/data/AlMgCu/data/sys.897", + "/root/data/AlMgCu/data/sys.898", + "/root/data/AlMgCu/data/sys.899", + "/root/data/AlMgCu/data/sys.900", + "/root/data/AlMgCu/data/sys.901", + "/root/data/AlMgCu/data/sys.902", + "/root/data/AlMgCu/data/sys.903", + "/root/data/AlMgCu/data/sys.9034", + "/root/data/AlMgCu/data/sys.9035", + "/root/data/AlMgCu/data/sys.904", + "/root/data/AlMgCu/data/sys.905", + "/root/data/AlMgCu/data/sys.9050", + "/root/data/AlMgCu/data/sys.9058", + "/root/data/AlMgCu/data/sys.9066", + "/root/data/AlMgCu/data/sys.9072", + "/root/data/AlMgCu/data/sys.9074", + "/root/data/AlMgCu/data/sys.908", + "/root/data/AlMgCu/data/sys.9082", + "/root/data/AlMgCu/data/sys.909", + "/root/data/AlMgCu/data/sys.9099", + "/root/data/AlMgCu/data/sys.910", + "/root/data/AlMgCu/data/sys.9105", + "/root/data/AlMgCu/data/sys.911", + "/root/data/AlMgCu/data/sys.9114", + "/root/data/AlMgCu/data/sys.9118", + "/root/data/AlMgCu/data/sys.912", + "/root/data/AlMgCu/data/sys.9121", + "/root/data/AlMgCu/data/sys.9136", + "/root/data/AlMgCu/data/sys.9137", + "/root/data/AlMgCu/data/sys.914", + "/root/data/AlMgCu/data/sys.9146", + "/root/data/AlMgCu/data/sys.915", + "/root/data/AlMgCu/data/sys.9154", + "/root/data/AlMgCu/data/sys.9155", + "/root/data/AlMgCu/data/sys.916", + "/root/data/AlMgCu/data/sys.9162", + "/root/data/AlMgCu/data/sys.917", + "/root/data/AlMgCu/data/sys.918", + "/root/data/AlMgCu/data/sys.9186", + "/root/data/AlMgCu/data/sys.919", + "/root/data/AlMgCu/data/sys.9196", + "/root/data/AlMgCu/data/sys.920", + "/root/data/AlMgCu/data/sys.921", + "/root/data/AlMgCu/data/sys.9210", + "/root/data/AlMgCu/data/sys.9217", + "/root/data/AlMgCu/data/sys.9218", + "/root/data/AlMgCu/data/sys.922", + "/root/data/AlMgCu/data/sys.923", + "/root/data/AlMgCu/data/sys.9232", + "/root/data/AlMgCu/data/sys.9234", + "/root/data/AlMgCu/data/sys.924", + "/root/data/AlMgCu/data/sys.925", + "/root/data/AlMgCu/data/sys.9250", + "/root/data/AlMgCu/data/sys.926", + "/root/data/AlMgCu/data/sys.9267", + "/root/data/AlMgCu/data/sys.927", + "/root/data/AlMgCu/data/sys.9274", + "/root/data/AlMgCu/data/sys.928", + "/root/data/AlMgCu/data/sys.9288", + "/root/data/AlMgCu/data/sys.9296", + "/root/data/AlMgCu/data/sys.9297", + "/root/data/AlMgCu/data/sys.930", + "/root/data/AlMgCu/data/sys.931", + "/root/data/AlMgCu/data/sys.932", + "/root/data/AlMgCu/data/sys.933", + "/root/data/AlMgCu/data/sys.9331", + "/root/data/AlMgCu/data/sys.934", + "/root/data/AlMgCu/data/sys.9342", + "/root/data/AlMgCu/data/sys.935", + "/root/data/AlMgCu/data/sys.9356", + "/root/data/AlMgCu/data/sys.936", + "/root/data/AlMgCu/data/sys.937", + "/root/data/AlMgCu/data/sys.938", + "/root/data/AlMgCu/data/sys.9386", + "/root/data/AlMgCu/data/sys.939", + "/root/data/AlMgCu/data/sys.940", + "/root/data/AlMgCu/data/sys.9409", + "/root/data/AlMgCu/data/sys.9418", + "/root/data/AlMgCu/data/sys.942", + "/root/data/AlMgCu/data/sys.943", + "/root/data/AlMgCu/data/sys.944", + "/root/data/AlMgCu/data/sys.9442", + "/root/data/AlMgCu/data/sys.9444", + "/root/data/AlMgCu/data/sys.945", + "/root/data/AlMgCu/data/sys.946", + "/root/data/AlMgCu/data/sys.9467", + "/root/data/AlMgCu/data/sys.947", + "/root/data/AlMgCu/data/sys.948", + "/root/data/AlMgCu/data/sys.949", + "/root/data/AlMgCu/data/sys.950", + "/root/data/AlMgCu/data/sys.9506", + "/root/data/AlMgCu/data/sys.951", + "/root/data/AlMgCu/data/sys.952", + "/root/data/AlMgCu/data/sys.953", + "/root/data/AlMgCu/data/sys.954", + "/root/data/AlMgCu/data/sys.955", + "/root/data/AlMgCu/data/sys.956", + "/root/data/AlMgCu/data/sys.957", + "/root/data/AlMgCu/data/sys.9572", + "/root/data/AlMgCu/data/sys.958", + "/root/data/AlMgCu/data/sys.959", + "/root/data/AlMgCu/data/sys.960", + "/root/data/AlMgCu/data/sys.9604", + "/root/data/AlMgCu/data/sys.963", + "/root/data/AlMgCu/data/sys.964", + "/root/data/AlMgCu/data/sys.965", + "/root/data/AlMgCu/data/sys.966", + "/root/data/AlMgCu/data/sys.967", + "/root/data/AlMgCu/data/sys.968", + "/root/data/AlMgCu/data/sys.969", + "/root/data/AlMgCu/data/sys.970", + "/root/data/AlMgCu/data/sys.9700", + "/root/data/AlMgCu/data/sys.971", + "/root/data/AlMgCu/data/sys.972", + "/root/data/AlMgCu/data/sys.9728", + "/root/data/AlMgCu/data/sys.973", + "/root/data/AlMgCu/data/sys.974", + "/root/data/AlMgCu/data/sys.975", + "/root/data/AlMgCu/data/sys.976", + "/root/data/AlMgCu/data/sys.978", + "/root/data/AlMgCu/data/sys.979", + "/root/data/AlMgCu/data/sys.980", + "/root/data/AlMgCu/data/sys.982", + "/root/data/AlMgCu/data/sys.983", + "/root/data/AlMgCu/data/sys.984", + "/root/data/AlMgCu/data/sys.986", + "/root/data/AlMgCu/data/sys.988", + "/root/data/AlMgCu/data/sys.9884", + "/root/data/AlMgCu/data/sys.989", + "/root/data/AlMgCu/data/sys.990", + "/root/data/AlMgCu/data/sys.991", + "/root/data/AlMgCu/data/sys.992", + "/root/data/AlMgCu/data/sys.993", + "/root/data/AlMgCu/data/sys.995", + "/root/data/AlMgCu/data/sys.9968", + "/root/data/AlMgCu/data/sys.9969", + "/root/data/AlMgCu/data/sys.997", + "/root/data/AlMgCu/data/sys.9971", + "/root/data/AlMgCu/data/sys.9977", + "/root/data/AlMgCu/data/sys.9978", + "/root/data/AlMgCu/data/sys.998", + "/root/data/AlMgCu/data/sys.9980", + "/root/data/AlMgCu/data/sys.9984", + "/root/data/AlMgCu/data/sys.9986", + "/root/data/AlMgCu/data/sys.999", + "/root/data/AlMgCu/data/sys.9990", + "/root/data/AlMgCu/data/sys.9992", + "/root/data/AlMgCu/data/sys.9997" + ], + "batch_size": 1 + }, + "validation_data": { + "systems": [ + "/root/data/AlMgCu/data/init.008", + "/root/data/AlMgCu/data/init.013", + "/root/data/AlMgCu/data/init.029", + "/root/data/AlMgCu/data/init.031", + "/root/data/AlMgCu/data/init.052", + "/root/data/AlMgCu/data/init.053", + "/root/data/AlMgCu/data/init.054", + "/root/data/AlMgCu/data/init.055", + "/root/data/AlMgCu/data/init.066", + "/root/data/AlMgCu/data/init.077", + "/root/data/AlMgCu/data/init.081", + "/root/data/AlMgCu/data/init.084", + "/root/data/AlMgCu/data/init.100", + "/root/data/AlMgCu/data/init.1004", + "/root/data/AlMgCu/data/init.1010", + "/root/data/AlMgCu/data/init.1022", + "/root/data/AlMgCu/data/init.1024", + "/root/data/AlMgCu/data/init.1034", + "/root/data/AlMgCu/data/init.1036", + "/root/data/AlMgCu/data/init.1047", + "/root/data/AlMgCu/data/init.1057", + "/root/data/AlMgCu/data/init.1065", + "/root/data/AlMgCu/data/init.1068", + "/root/data/AlMgCu/data/init.1069", + "/root/data/AlMgCu/data/init.1078", + "/root/data/AlMgCu/data/init.1079", + "/root/data/AlMgCu/data/init.108", + "/root/data/AlMgCu/data/init.1081", + "/root/data/AlMgCu/data/init.1091", + "/root/data/AlMgCu/data/init.1092", + "/root/data/AlMgCu/data/init.1100", + "/root/data/AlMgCu/data/init.1130", + "/root/data/AlMgCu/data/init.1139", + "/root/data/AlMgCu/data/init.1141", + "/root/data/AlMgCu/data/init.1142", + "/root/data/AlMgCu/data/init.115", + "/root/data/AlMgCu/data/init.1156", + "/root/data/AlMgCu/data/init.1161", + "/root/data/AlMgCu/data/init.1164", + "/root/data/AlMgCu/data/init.117", + "/root/data/AlMgCu/data/init.1180", + "/root/data/AlMgCu/data/init.1199", + "/root/data/AlMgCu/data/init.1215", + "/root/data/AlMgCu/data/init.1238", + "/root/data/AlMgCu/data/init.1267", + "/root/data/AlMgCu/data/init.1279", + "/root/data/AlMgCu/data/init.130", + "/root/data/AlMgCu/data/init.133", + "/root/data/AlMgCu/data/init.145", + "/root/data/AlMgCu/data/init.151", + "/root/data/AlMgCu/data/init.163", + "/root/data/AlMgCu/data/init.209", + "/root/data/AlMgCu/data/init.215", + "/root/data/AlMgCu/data/init.216", + "/root/data/AlMgCu/data/init.225", + "/root/data/AlMgCu/data/init.249", + "/root/data/AlMgCu/data/init.261", + "/root/data/AlMgCu/data/init.268", + "/root/data/AlMgCu/data/init.272", + "/root/data/AlMgCu/data/init.286", + "/root/data/AlMgCu/data/init.289", + "/root/data/AlMgCu/data/init.300", + "/root/data/AlMgCu/data/init.301", + "/root/data/AlMgCu/data/init.322", + "/root/data/AlMgCu/data/init.323", + "/root/data/AlMgCu/data/init.335", + "/root/data/AlMgCu/data/init.343", + "/root/data/AlMgCu/data/init.354", + "/root/data/AlMgCu/data/init.360", + "/root/data/AlMgCu/data/init.405", + "/root/data/AlMgCu/data/init.424", + "/root/data/AlMgCu/data/init.425", + "/root/data/AlMgCu/data/init.427", + "/root/data/AlMgCu/data/init.437", + "/root/data/AlMgCu/data/init.447", + "/root/data/AlMgCu/data/init.450", + "/root/data/AlMgCu/data/init.452", + "/root/data/AlMgCu/data/init.455", + "/root/data/AlMgCu/data/init.465", + "/root/data/AlMgCu/data/init.477", + "/root/data/AlMgCu/data/init.481", + "/root/data/AlMgCu/data/init.498", + "/root/data/AlMgCu/data/init.500", + "/root/data/AlMgCu/data/init.501", + "/root/data/AlMgCu/data/init.525", + "/root/data/AlMgCu/data/init.526", + "/root/data/AlMgCu/data/init.531", + "/root/data/AlMgCu/data/init.545", + "/root/data/AlMgCu/data/init.550", + "/root/data/AlMgCu/data/init.562", + "/root/data/AlMgCu/data/init.564", + "/root/data/AlMgCu/data/init.568", + "/root/data/AlMgCu/data/init.586", + "/root/data/AlMgCu/data/init.612", + "/root/data/AlMgCu/data/init.623", + "/root/data/AlMgCu/data/init.637", + "/root/data/AlMgCu/data/init.655", + "/root/data/AlMgCu/data/init.660", + "/root/data/AlMgCu/data/init.662", + "/root/data/AlMgCu/data/init.670", + "/root/data/AlMgCu/data/init.688", + "/root/data/AlMgCu/data/init.705", + "/root/data/AlMgCu/data/init.711", + "/root/data/AlMgCu/data/init.716", + "/root/data/AlMgCu/data/init.723", + "/root/data/AlMgCu/data/init.742", + "/root/data/AlMgCu/data/init.748", + "/root/data/AlMgCu/data/init.750", + "/root/data/AlMgCu/data/init.761", + "/root/data/AlMgCu/data/init.763", + "/root/data/AlMgCu/data/init.771", + "/root/data/AlMgCu/data/init.782", + "/root/data/AlMgCu/data/init.798", + "/root/data/AlMgCu/data/init.815", + "/root/data/AlMgCu/data/init.818", + "/root/data/AlMgCu/data/init.823", + "/root/data/AlMgCu/data/init.828", + "/root/data/AlMgCu/data/init.829", + "/root/data/AlMgCu/data/init.831", + "/root/data/AlMgCu/data/init.841", + "/root/data/AlMgCu/data/init.846", + "/root/data/AlMgCu/data/init.861", + "/root/data/AlMgCu/data/init.878", + "/root/data/AlMgCu/data/init.893", + "/root/data/AlMgCu/data/init.904", + "/root/data/AlMgCu/data/init.909", + "/root/data/AlMgCu/data/init.920", + "/root/data/AlMgCu/data/init.921", + "/root/data/AlMgCu/data/init.932", + "/root/data/AlMgCu/data/init.936", + "/root/data/AlMgCu/data/init.954", + "/root/data/AlMgCu/data/init.976", + "/root/data/AlMgCu/data/init.992", + "/root/data/AlMgCu/data/init.998", + "/root/data/AlMgCu/data/sys.003", + "/root/data/AlMgCu/data/sys.005", + "/root/data/AlMgCu/data/sys.009", + "/root/data/AlMgCu/data/sys.013", + "/root/data/AlMgCu/data/sys.014", + "/root/data/AlMgCu/data/sys.024", + "/root/data/AlMgCu/data/sys.025", + "/root/data/AlMgCu/data/sys.035", + "/root/data/AlMgCu/data/sys.047", + "/root/data/AlMgCu/data/sys.068", + "/root/data/AlMgCu/data/sys.069", + "/root/data/AlMgCu/data/sys.091", + "/root/data/AlMgCu/data/sys.096", + "/root/data/AlMgCu/data/sys.10002", + "/root/data/AlMgCu/data/sys.10120", + "/root/data/AlMgCu/data/sys.10139", + "/root/data/AlMgCu/data/sys.102", + "/root/data/AlMgCu/data/sys.1028", + "/root/data/AlMgCu/data/sys.10281", + "/root/data/AlMgCu/data/sys.10346", + "/root/data/AlMgCu/data/sys.10354", + "/root/data/AlMgCu/data/sys.1040", + "/root/data/AlMgCu/data/sys.10434", + "/root/data/AlMgCu/data/sys.1055", + "/root/data/AlMgCu/data/sys.1057", + "/root/data/AlMgCu/data/sys.10570", + "/root/data/AlMgCu/data/sys.1058", + "/root/data/AlMgCu/data/sys.10609", + "/root/data/AlMgCu/data/sys.10748", + "/root/data/AlMgCu/data/sys.1081", + "/root/data/AlMgCu/data/sys.10897", + "/root/data/AlMgCu/data/sys.10908", + "/root/data/AlMgCu/data/sys.1093", + "/root/data/AlMgCu/data/sys.10948", + "/root/data/AlMgCu/data/sys.10954", + "/root/data/AlMgCu/data/sys.1096", + "/root/data/AlMgCu/data/sys.10988", + "/root/data/AlMgCu/data/sys.11005", + "/root/data/AlMgCu/data/sys.11012", + "/root/data/AlMgCu/data/sys.11026", + "/root/data/AlMgCu/data/sys.11061", + "/root/data/AlMgCu/data/sys.11067", + "/root/data/AlMgCu/data/sys.11073", + "/root/data/AlMgCu/data/sys.11084", + "/root/data/AlMgCu/data/sys.1109", + "/root/data/AlMgCu/data/sys.11101", + "/root/data/AlMgCu/data/sys.11113", + "/root/data/AlMgCu/data/sys.11130", + "/root/data/AlMgCu/data/sys.1118", + "/root/data/AlMgCu/data/sys.1119", + "/root/data/AlMgCu/data/sys.11252", + "/root/data/AlMgCu/data/sys.11264", + "/root/data/AlMgCu/data/sys.11305", + "/root/data/AlMgCu/data/sys.11336", + "/root/data/AlMgCu/data/sys.1142", + "/root/data/AlMgCu/data/sys.1153", + "/root/data/AlMgCu/data/sys.1156", + "/root/data/AlMgCu/data/sys.1190", + "/root/data/AlMgCu/data/sys.1192", + "/root/data/AlMgCu/data/sys.1196", + "/root/data/AlMgCu/data/sys.1207", + "/root/data/AlMgCu/data/sys.1231", + "/root/data/AlMgCu/data/sys.1235", + "/root/data/AlMgCu/data/sys.1253", + "/root/data/AlMgCu/data/sys.1267", + "/root/data/AlMgCu/data/sys.1305", + "/root/data/AlMgCu/data/sys.1315", + "/root/data/AlMgCu/data/sys.1320", + "/root/data/AlMgCu/data/sys.133", + "/root/data/AlMgCu/data/sys.134", + "/root/data/AlMgCu/data/sys.1375", + "/root/data/AlMgCu/data/sys.1378", + "/root/data/AlMgCu/data/sys.1380", + "/root/data/AlMgCu/data/sys.1386", + "/root/data/AlMgCu/data/sys.1393", + "/root/data/AlMgCu/data/sys.1402", + "/root/data/AlMgCu/data/sys.1408", + "/root/data/AlMgCu/data/sys.1417", + "/root/data/AlMgCu/data/sys.1426", + "/root/data/AlMgCu/data/sys.146", + "/root/data/AlMgCu/data/sys.1460", + "/root/data/AlMgCu/data/sys.1472", + "/root/data/AlMgCu/data/sys.1481", + "/root/data/AlMgCu/data/sys.1482", + "/root/data/AlMgCu/data/sys.1486", + "/root/data/AlMgCu/data/sys.1493", + "/root/data/AlMgCu/data/sys.150", + "/root/data/AlMgCu/data/sys.1514", + "/root/data/AlMgCu/data/sys.1553", + "/root/data/AlMgCu/data/sys.1584", + "/root/data/AlMgCu/data/sys.1593", + "/root/data/AlMgCu/data/sys.1601", + "/root/data/AlMgCu/data/sys.1603", + "/root/data/AlMgCu/data/sys.1607", + "/root/data/AlMgCu/data/sys.1628", + "/root/data/AlMgCu/data/sys.1631", + "/root/data/AlMgCu/data/sys.1647", + "/root/data/AlMgCu/data/sys.1650", + "/root/data/AlMgCu/data/sys.1651", + "/root/data/AlMgCu/data/sys.1668", + "/root/data/AlMgCu/data/sys.1671", + "/root/data/AlMgCu/data/sys.1679", + "/root/data/AlMgCu/data/sys.1683", + "/root/data/AlMgCu/data/sys.1684", + "/root/data/AlMgCu/data/sys.1687", + "/root/data/AlMgCu/data/sys.1688", + "/root/data/AlMgCu/data/sys.1690", + "/root/data/AlMgCu/data/sys.1702", + "/root/data/AlMgCu/data/sys.1704", + "/root/data/AlMgCu/data/sys.1711", + "/root/data/AlMgCu/data/sys.1719", + "/root/data/AlMgCu/data/sys.1788", + "/root/data/AlMgCu/data/sys.1793", + "/root/data/AlMgCu/data/sys.1803", + "/root/data/AlMgCu/data/sys.1804", + "/root/data/AlMgCu/data/sys.1810", + "/root/data/AlMgCu/data/sys.1825", + "/root/data/AlMgCu/data/sys.1841", + "/root/data/AlMgCu/data/sys.1844", + "/root/data/AlMgCu/data/sys.1851", + "/root/data/AlMgCu/data/sys.1871", + "/root/data/AlMgCu/data/sys.1873", + "/root/data/AlMgCu/data/sys.1881", + "/root/data/AlMgCu/data/sys.1921", + "/root/data/AlMgCu/data/sys.1932", + "/root/data/AlMgCu/data/sys.1934", + "/root/data/AlMgCu/data/sys.1937", + "/root/data/AlMgCu/data/sys.194", + "/root/data/AlMgCu/data/sys.1945", + "/root/data/AlMgCu/data/sys.1950", + "/root/data/AlMgCu/data/sys.1969", + "/root/data/AlMgCu/data/sys.1976", + "/root/data/AlMgCu/data/sys.1978", + "/root/data/AlMgCu/data/sys.2006", + "/root/data/AlMgCu/data/sys.2008", + "/root/data/AlMgCu/data/sys.2010", + "/root/data/AlMgCu/data/sys.2019", + "/root/data/AlMgCu/data/sys.2021", + "/root/data/AlMgCu/data/sys.2026", + "/root/data/AlMgCu/data/sys.2045", + "/root/data/AlMgCu/data/sys.205", + "/root/data/AlMgCu/data/sys.207", + "/root/data/AlMgCu/data/sys.2076", + "/root/data/AlMgCu/data/sys.2077", + "/root/data/AlMgCu/data/sys.2115", + "/root/data/AlMgCu/data/sys.2122", + "/root/data/AlMgCu/data/sys.2128", + "/root/data/AlMgCu/data/sys.2131", + "/root/data/AlMgCu/data/sys.2135", + "/root/data/AlMgCu/data/sys.2155", + "/root/data/AlMgCu/data/sys.2159", + "/root/data/AlMgCu/data/sys.2171", + "/root/data/AlMgCu/data/sys.2172", + "/root/data/AlMgCu/data/sys.2175", + "/root/data/AlMgCu/data/sys.2183", + "/root/data/AlMgCu/data/sys.219", + "/root/data/AlMgCu/data/sys.2192", + "/root/data/AlMgCu/data/sys.2193", + "/root/data/AlMgCu/data/sys.2200", + "/root/data/AlMgCu/data/sys.2206", + "/root/data/AlMgCu/data/sys.2232", + "/root/data/AlMgCu/data/sys.2251", + "/root/data/AlMgCu/data/sys.2262", + "/root/data/AlMgCu/data/sys.2268", + "/root/data/AlMgCu/data/sys.2274", + "/root/data/AlMgCu/data/sys.2283", + "/root/data/AlMgCu/data/sys.2287", + "/root/data/AlMgCu/data/sys.2293", + "/root/data/AlMgCu/data/sys.231", + "/root/data/AlMgCu/data/sys.2315", + "/root/data/AlMgCu/data/sys.2319", + "/root/data/AlMgCu/data/sys.2347", + "/root/data/AlMgCu/data/sys.2355", + "/root/data/AlMgCu/data/sys.2368", + "/root/data/AlMgCu/data/sys.2370", + "/root/data/AlMgCu/data/sys.239", + "/root/data/AlMgCu/data/sys.2404", + "/root/data/AlMgCu/data/sys.2416", + "/root/data/AlMgCu/data/sys.2418", + "/root/data/AlMgCu/data/sys.2442", + "/root/data/AlMgCu/data/sys.2446", + "/root/data/AlMgCu/data/sys.2449", + "/root/data/AlMgCu/data/sys.2472", + "/root/data/AlMgCu/data/sys.2475", + "/root/data/AlMgCu/data/sys.2491", + "/root/data/AlMgCu/data/sys.2500", + "/root/data/AlMgCu/data/sys.2507", + "/root/data/AlMgCu/data/sys.2547", + "/root/data/AlMgCu/data/sys.2552", + "/root/data/AlMgCu/data/sys.2557", + "/root/data/AlMgCu/data/sys.259", + "/root/data/AlMgCu/data/sys.2597", + "/root/data/AlMgCu/data/sys.261", + "/root/data/AlMgCu/data/sys.2612", + "/root/data/AlMgCu/data/sys.2617", + "/root/data/AlMgCu/data/sys.2674", + "/root/data/AlMgCu/data/sys.2678", + "/root/data/AlMgCu/data/sys.2686", + "/root/data/AlMgCu/data/sys.2687", + "/root/data/AlMgCu/data/sys.2688", + "/root/data/AlMgCu/data/sys.2689", + "/root/data/AlMgCu/data/sys.2705", + "/root/data/AlMgCu/data/sys.2714", + "/root/data/AlMgCu/data/sys.2763", + "/root/data/AlMgCu/data/sys.2772", + "/root/data/AlMgCu/data/sys.2775", + "/root/data/AlMgCu/data/sys.2786", + "/root/data/AlMgCu/data/sys.2808", + "/root/data/AlMgCu/data/sys.2821", + "/root/data/AlMgCu/data/sys.2823", + "/root/data/AlMgCu/data/sys.2831", + "/root/data/AlMgCu/data/sys.2867", + "/root/data/AlMgCu/data/sys.2882", + "/root/data/AlMgCu/data/sys.2892", + "/root/data/AlMgCu/data/sys.290", + "/root/data/AlMgCu/data/sys.2910", + "/root/data/AlMgCu/data/sys.2944", + "/root/data/AlMgCu/data/sys.2945", + "/root/data/AlMgCu/data/sys.2966", + "/root/data/AlMgCu/data/sys.2971", + "/root/data/AlMgCu/data/sys.2990", + "/root/data/AlMgCu/data/sys.2992", + "/root/data/AlMgCu/data/sys.2994", + "/root/data/AlMgCu/data/sys.3029", + "/root/data/AlMgCu/data/sys.3037", + "/root/data/AlMgCu/data/sys.3055", + "/root/data/AlMgCu/data/sys.3068", + "/root/data/AlMgCu/data/sys.307", + "/root/data/AlMgCu/data/sys.3072", + "/root/data/AlMgCu/data/sys.3076", + "/root/data/AlMgCu/data/sys.3089", + "/root/data/AlMgCu/data/sys.310", + "/root/data/AlMgCu/data/sys.3105", + "/root/data/AlMgCu/data/sys.3113", + "/root/data/AlMgCu/data/sys.3116", + "/root/data/AlMgCu/data/sys.3122", + "/root/data/AlMgCu/data/sys.3137", + "/root/data/AlMgCu/data/sys.3140", + "/root/data/AlMgCu/data/sys.3141", + "/root/data/AlMgCu/data/sys.3152", + "/root/data/AlMgCu/data/sys.3169", + "/root/data/AlMgCu/data/sys.3173", + "/root/data/AlMgCu/data/sys.319", + "/root/data/AlMgCu/data/sys.3197", + "/root/data/AlMgCu/data/sys.320", + "/root/data/AlMgCu/data/sys.3201", + "/root/data/AlMgCu/data/sys.3219", + "/root/data/AlMgCu/data/sys.3234", + "/root/data/AlMgCu/data/sys.324", + "/root/data/AlMgCu/data/sys.3260", + "/root/data/AlMgCu/data/sys.3262", + "/root/data/AlMgCu/data/sys.3271", + "/root/data/AlMgCu/data/sys.3273", + "/root/data/AlMgCu/data/sys.328", + "/root/data/AlMgCu/data/sys.3281", + "/root/data/AlMgCu/data/sys.3285", + "/root/data/AlMgCu/data/sys.3288", + "/root/data/AlMgCu/data/sys.3324", + "/root/data/AlMgCu/data/sys.3354", + "/root/data/AlMgCu/data/sys.3355", + "/root/data/AlMgCu/data/sys.3359", + "/root/data/AlMgCu/data/sys.3364", + "/root/data/AlMgCu/data/sys.3366", + "/root/data/AlMgCu/data/sys.3371", + "/root/data/AlMgCu/data/sys.3373", + "/root/data/AlMgCu/data/sys.3383", + "/root/data/AlMgCu/data/sys.3403", + "/root/data/AlMgCu/data/sys.341", + "/root/data/AlMgCu/data/sys.3411", + "/root/data/AlMgCu/data/sys.3415", + "/root/data/AlMgCu/data/sys.3430", + "/root/data/AlMgCu/data/sys.3440", + "/root/data/AlMgCu/data/sys.347", + "/root/data/AlMgCu/data/sys.3480", + "/root/data/AlMgCu/data/sys.349", + "/root/data/AlMgCu/data/sys.3501", + "/root/data/AlMgCu/data/sys.3506", + "/root/data/AlMgCu/data/sys.3508", + "/root/data/AlMgCu/data/sys.3515", + "/root/data/AlMgCu/data/sys.3523", + "/root/data/AlMgCu/data/sys.3527", + "/root/data/AlMgCu/data/sys.3531", + "/root/data/AlMgCu/data/sys.3533", + "/root/data/AlMgCu/data/sys.354", + "/root/data/AlMgCu/data/sys.3543", + "/root/data/AlMgCu/data/sys.359", + "/root/data/AlMgCu/data/sys.3599", + "/root/data/AlMgCu/data/sys.3614", + "/root/data/AlMgCu/data/sys.3634", + "/root/data/AlMgCu/data/sys.3650", + "/root/data/AlMgCu/data/sys.3674", + "/root/data/AlMgCu/data/sys.3679", + "/root/data/AlMgCu/data/sys.3705", + "/root/data/AlMgCu/data/sys.3708", + "/root/data/AlMgCu/data/sys.3727", + "/root/data/AlMgCu/data/sys.3732", + "/root/data/AlMgCu/data/sys.3733", + "/root/data/AlMgCu/data/sys.3738", + "/root/data/AlMgCu/data/sys.3745", + "/root/data/AlMgCu/data/sys.3748", + "/root/data/AlMgCu/data/sys.3755", + "/root/data/AlMgCu/data/sys.3758", + "/root/data/AlMgCu/data/sys.3763", + "/root/data/AlMgCu/data/sys.3767", + "/root/data/AlMgCu/data/sys.3775", + "/root/data/AlMgCu/data/sys.3807", + "/root/data/AlMgCu/data/sys.382", + "/root/data/AlMgCu/data/sys.3848", + "/root/data/AlMgCu/data/sys.3864", + "/root/data/AlMgCu/data/sys.3878", + "/root/data/AlMgCu/data/sys.3884", + "/root/data/AlMgCu/data/sys.3886", + "/root/data/AlMgCu/data/sys.3903", + "/root/data/AlMgCu/data/sys.3906", + "/root/data/AlMgCu/data/sys.392", + "/root/data/AlMgCu/data/sys.3925", + "/root/data/AlMgCu/data/sys.3928", + "/root/data/AlMgCu/data/sys.3931", + "/root/data/AlMgCu/data/sys.3932", + "/root/data/AlMgCu/data/sys.3939", + "/root/data/AlMgCu/data/sys.394", + "/root/data/AlMgCu/data/sys.3957", + "/root/data/AlMgCu/data/sys.3958", + "/root/data/AlMgCu/data/sys.3960", + "/root/data/AlMgCu/data/sys.3972", + "/root/data/AlMgCu/data/sys.3974", + "/root/data/AlMgCu/data/sys.3976", + "/root/data/AlMgCu/data/sys.3995", + "/root/data/AlMgCu/data/sys.3996", + "/root/data/AlMgCu/data/sys.3998", + "/root/data/AlMgCu/data/sys.4025", + "/root/data/AlMgCu/data/sys.4027", + "/root/data/AlMgCu/data/sys.4034", + "/root/data/AlMgCu/data/sys.4035", + "/root/data/AlMgCu/data/sys.4043", + "/root/data/AlMgCu/data/sys.4051", + "/root/data/AlMgCu/data/sys.4053", + "/root/data/AlMgCu/data/sys.4064", + "/root/data/AlMgCu/data/sys.4065", + "/root/data/AlMgCu/data/sys.4077", + "/root/data/AlMgCu/data/sys.4103", + "/root/data/AlMgCu/data/sys.4109", + "/root/data/AlMgCu/data/sys.4123", + "/root/data/AlMgCu/data/sys.4124", + "/root/data/AlMgCu/data/sys.4139", + "/root/data/AlMgCu/data/sys.4156", + "/root/data/AlMgCu/data/sys.4160", + "/root/data/AlMgCu/data/sys.417", + "/root/data/AlMgCu/data/sys.4173", + "/root/data/AlMgCu/data/sys.4179", + "/root/data/AlMgCu/data/sys.418", + "/root/data/AlMgCu/data/sys.4189", + "/root/data/AlMgCu/data/sys.4202", + "/root/data/AlMgCu/data/sys.4228", + "/root/data/AlMgCu/data/sys.4243", + "/root/data/AlMgCu/data/sys.4265", + "/root/data/AlMgCu/data/sys.427", + "/root/data/AlMgCu/data/sys.4276", + "/root/data/AlMgCu/data/sys.428", + "/root/data/AlMgCu/data/sys.4285", + "/root/data/AlMgCu/data/sys.4297", + "/root/data/AlMgCu/data/sys.4304", + "/root/data/AlMgCu/data/sys.4306", + "/root/data/AlMgCu/data/sys.4309", + "/root/data/AlMgCu/data/sys.431", + "/root/data/AlMgCu/data/sys.4320", + "/root/data/AlMgCu/data/sys.4321", + "/root/data/AlMgCu/data/sys.4335", + "/root/data/AlMgCu/data/sys.4351", + "/root/data/AlMgCu/data/sys.4368", + "/root/data/AlMgCu/data/sys.4369", + "/root/data/AlMgCu/data/sys.4380", + "/root/data/AlMgCu/data/sys.4384", + "/root/data/AlMgCu/data/sys.4397", + "/root/data/AlMgCu/data/sys.4400", + "/root/data/AlMgCu/data/sys.4418", + "/root/data/AlMgCu/data/sys.4424", + "/root/data/AlMgCu/data/sys.4434", + "/root/data/AlMgCu/data/sys.4444", + "/root/data/AlMgCu/data/sys.446", + "/root/data/AlMgCu/data/sys.4463", + "/root/data/AlMgCu/data/sys.4466", + "/root/data/AlMgCu/data/sys.4468", + "/root/data/AlMgCu/data/sys.4469", + "/root/data/AlMgCu/data/sys.4478", + "/root/data/AlMgCu/data/sys.4487", + "/root/data/AlMgCu/data/sys.4489", + "/root/data/AlMgCu/data/sys.4504", + "/root/data/AlMgCu/data/sys.4508", + "/root/data/AlMgCu/data/sys.4515", + "/root/data/AlMgCu/data/sys.4518", + "/root/data/AlMgCu/data/sys.4527", + "/root/data/AlMgCu/data/sys.4533", + "/root/data/AlMgCu/data/sys.4534", + "/root/data/AlMgCu/data/sys.4548", + "/root/data/AlMgCu/data/sys.4552", + "/root/data/AlMgCu/data/sys.4558", + "/root/data/AlMgCu/data/sys.4586", + "/root/data/AlMgCu/data/sys.4592", + "/root/data/AlMgCu/data/sys.4634", + "/root/data/AlMgCu/data/sys.4637", + "/root/data/AlMgCu/data/sys.465", + "/root/data/AlMgCu/data/sys.4661", + "/root/data/AlMgCu/data/sys.4664", + "/root/data/AlMgCu/data/sys.4673", + "/root/data/AlMgCu/data/sys.4702", + "/root/data/AlMgCu/data/sys.4706", + "/root/data/AlMgCu/data/sys.4724", + "/root/data/AlMgCu/data/sys.4729", + "/root/data/AlMgCu/data/sys.474", + "/root/data/AlMgCu/data/sys.4745", + "/root/data/AlMgCu/data/sys.4746", + "/root/data/AlMgCu/data/sys.4816", + "/root/data/AlMgCu/data/sys.4856", + "/root/data/AlMgCu/data/sys.4866", + "/root/data/AlMgCu/data/sys.487", + "/root/data/AlMgCu/data/sys.4915", + "/root/data/AlMgCu/data/sys.4921", + "/root/data/AlMgCu/data/sys.4923", + "/root/data/AlMgCu/data/sys.4954", + "/root/data/AlMgCu/data/sys.4962", + "/root/data/AlMgCu/data/sys.4969", + "/root/data/AlMgCu/data/sys.4975", + "/root/data/AlMgCu/data/sys.4986", + "/root/data/AlMgCu/data/sys.5006", + "/root/data/AlMgCu/data/sys.503", + "/root/data/AlMgCu/data/sys.5172", + "/root/data/AlMgCu/data/sys.5196", + "/root/data/AlMgCu/data/sys.5200", + "/root/data/AlMgCu/data/sys.524", + "/root/data/AlMgCu/data/sys.5242", + "/root/data/AlMgCu/data/sys.527", + "/root/data/AlMgCu/data/sys.5320", + "/root/data/AlMgCu/data/sys.564", + "/root/data/AlMgCu/data/sys.568", + "/root/data/AlMgCu/data/sys.588", + "/root/data/AlMgCu/data/sys.591", + "/root/data/AlMgCu/data/sys.5942", + "/root/data/AlMgCu/data/sys.5952", + "/root/data/AlMgCu/data/sys.5966", + "/root/data/AlMgCu/data/sys.5974", + "/root/data/AlMgCu/data/sys.5978", + "/root/data/AlMgCu/data/sys.5982", + "/root/data/AlMgCu/data/sys.5986", + "/root/data/AlMgCu/data/sys.5996", + "/root/data/AlMgCu/data/sys.6003", + "/root/data/AlMgCu/data/sys.601", + "/root/data/AlMgCu/data/sys.6020", + "/root/data/AlMgCu/data/sys.6028", + "/root/data/AlMgCu/data/sys.6039", + "/root/data/AlMgCu/data/sys.6041", + "/root/data/AlMgCu/data/sys.6045", + "/root/data/AlMgCu/data/sys.6048", + "/root/data/AlMgCu/data/sys.6065", + "/root/data/AlMgCu/data/sys.6066", + "/root/data/AlMgCu/data/sys.6080", + "/root/data/AlMgCu/data/sys.6084", + "/root/data/AlMgCu/data/sys.6086", + "/root/data/AlMgCu/data/sys.6099", + "/root/data/AlMgCu/data/sys.6102", + "/root/data/AlMgCu/data/sys.6105", + "/root/data/AlMgCu/data/sys.6122", + "/root/data/AlMgCu/data/sys.6150", + "/root/data/AlMgCu/data/sys.6152", + "/root/data/AlMgCu/data/sys.6153", + "/root/data/AlMgCu/data/sys.6184", + "/root/data/AlMgCu/data/sys.6192", + "/root/data/AlMgCu/data/sys.6205", + "/root/data/AlMgCu/data/sys.6209", + "/root/data/AlMgCu/data/sys.6214", + "/root/data/AlMgCu/data/sys.6228", + "/root/data/AlMgCu/data/sys.6234", + "/root/data/AlMgCu/data/sys.6248", + "/root/data/AlMgCu/data/sys.625", + "/root/data/AlMgCu/data/sys.6255", + "/root/data/AlMgCu/data/sys.6259", + "/root/data/AlMgCu/data/sys.6270", + "/root/data/AlMgCu/data/sys.6281", + "/root/data/AlMgCu/data/sys.6294", + "/root/data/AlMgCu/data/sys.6297", + "/root/data/AlMgCu/data/sys.6299", + "/root/data/AlMgCu/data/sys.6307", + "/root/data/AlMgCu/data/sys.633", + "/root/data/AlMgCu/data/sys.6330", + "/root/data/AlMgCu/data/sys.6340", + "/root/data/AlMgCu/data/sys.6343", + "/root/data/AlMgCu/data/sys.6348", + "/root/data/AlMgCu/data/sys.6352", + "/root/data/AlMgCu/data/sys.6353", + "/root/data/AlMgCu/data/sys.6365", + "/root/data/AlMgCu/data/sys.6380", + "/root/data/AlMgCu/data/sys.6395", + "/root/data/AlMgCu/data/sys.6407", + "/root/data/AlMgCu/data/sys.6412", + "/root/data/AlMgCu/data/sys.6415", + "/root/data/AlMgCu/data/sys.6420", + "/root/data/AlMgCu/data/sys.6427", + "/root/data/AlMgCu/data/sys.6435", + "/root/data/AlMgCu/data/sys.6448", + "/root/data/AlMgCu/data/sys.6458", + "/root/data/AlMgCu/data/sys.6459", + "/root/data/AlMgCu/data/sys.646", + "/root/data/AlMgCu/data/sys.6463", + "/root/data/AlMgCu/data/sys.6466", + "/root/data/AlMgCu/data/sys.6470", + "/root/data/AlMgCu/data/sys.6476", + "/root/data/AlMgCu/data/sys.6484", + "/root/data/AlMgCu/data/sys.6496", + "/root/data/AlMgCu/data/sys.6500", + "/root/data/AlMgCu/data/sys.6504", + "/root/data/AlMgCu/data/sys.6518", + "/root/data/AlMgCu/data/sys.6532", + "/root/data/AlMgCu/data/sys.6536", + "/root/data/AlMgCu/data/sys.6538", + "/root/data/AlMgCu/data/sys.6543", + "/root/data/AlMgCu/data/sys.6560", + "/root/data/AlMgCu/data/sys.6565", + "/root/data/AlMgCu/data/sys.6569", + "/root/data/AlMgCu/data/sys.6570", + "/root/data/AlMgCu/data/sys.6594", + "/root/data/AlMgCu/data/sys.6595", + "/root/data/AlMgCu/data/sys.6599", + "/root/data/AlMgCu/data/sys.6635", + "/root/data/AlMgCu/data/sys.6636", + "/root/data/AlMgCu/data/sys.6643", + "/root/data/AlMgCu/data/sys.6653", + "/root/data/AlMgCu/data/sys.6654", + "/root/data/AlMgCu/data/sys.6659", + "/root/data/AlMgCu/data/sys.667", + "/root/data/AlMgCu/data/sys.6672", + "/root/data/AlMgCu/data/sys.6675", + "/root/data/AlMgCu/data/sys.669", + "/root/data/AlMgCu/data/sys.6702", + "/root/data/AlMgCu/data/sys.6713", + "/root/data/AlMgCu/data/sys.6744", + "/root/data/AlMgCu/data/sys.6747", + "/root/data/AlMgCu/data/sys.6748", + "/root/data/AlMgCu/data/sys.6749", + "/root/data/AlMgCu/data/sys.6757", + "/root/data/AlMgCu/data/sys.6759", + "/root/data/AlMgCu/data/sys.6769", + "/root/data/AlMgCu/data/sys.6776", + "/root/data/AlMgCu/data/sys.6793", + "/root/data/AlMgCu/data/sys.6803", + "/root/data/AlMgCu/data/sys.6824", + "/root/data/AlMgCu/data/sys.6846", + "/root/data/AlMgCu/data/sys.6848", + "/root/data/AlMgCu/data/sys.687", + "/root/data/AlMgCu/data/sys.691", + "/root/data/AlMgCu/data/sys.6914", + "/root/data/AlMgCu/data/sys.692", + "/root/data/AlMgCu/data/sys.694", + "/root/data/AlMgCu/data/sys.6971", + "/root/data/AlMgCu/data/sys.6986", + "/root/data/AlMgCu/data/sys.700", + "/root/data/AlMgCu/data/sys.7035", + "/root/data/AlMgCu/data/sys.7117", + "/root/data/AlMgCu/data/sys.7153", + "/root/data/AlMgCu/data/sys.7196", + "/root/data/AlMgCu/data/sys.720", + "/root/data/AlMgCu/data/sys.7220", + "/root/data/AlMgCu/data/sys.7242", + "/root/data/AlMgCu/data/sys.7252", + "/root/data/AlMgCu/data/sys.7316", + "/root/data/AlMgCu/data/sys.7329", + "/root/data/AlMgCu/data/sys.7331", + "/root/data/AlMgCu/data/sys.7369", + "/root/data/AlMgCu/data/sys.738", + "/root/data/AlMgCu/data/sys.740", + "/root/data/AlMgCu/data/sys.7402", + "/root/data/AlMgCu/data/sys.7417", + "/root/data/AlMgCu/data/sys.743", + "/root/data/AlMgCu/data/sys.7475", + "/root/data/AlMgCu/data/sys.7516", + "/root/data/AlMgCu/data/sys.7524", + "/root/data/AlMgCu/data/sys.7666", + "/root/data/AlMgCu/data/sys.7674", + "/root/data/AlMgCu/data/sys.7786", + "/root/data/AlMgCu/data/sys.7856", + "/root/data/AlMgCu/data/sys.794", + "/root/data/AlMgCu/data/sys.796", + "/root/data/AlMgCu/data/sys.800", + "/root/data/AlMgCu/data/sys.812", + "/root/data/AlMgCu/data/sys.816", + "/root/data/AlMgCu/data/sys.823", + "/root/data/AlMgCu/data/sys.833", + "/root/data/AlMgCu/data/sys.859", + "/root/data/AlMgCu/data/sys.866", + "/root/data/AlMgCu/data/sys.886", + "/root/data/AlMgCu/data/sys.889", + "/root/data/AlMgCu/data/sys.895", + "/root/data/AlMgCu/data/sys.9042", + "/root/data/AlMgCu/data/sys.906", + "/root/data/AlMgCu/data/sys.907", + "/root/data/AlMgCu/data/sys.9122", + "/root/data/AlMgCu/data/sys.913", + "/root/data/AlMgCu/data/sys.9163", + "/root/data/AlMgCu/data/sys.9241", + "/root/data/AlMgCu/data/sys.929", + "/root/data/AlMgCu/data/sys.9396", + "/root/data/AlMgCu/data/sys.941", + "/root/data/AlMgCu/data/sys.962", + "/root/data/AlMgCu/data/sys.987", + "/root/data/AlMgCu/data/sys.994", + "/root/data/AlMgCu/data/sys.996", + "/root/data/AlMgCu/data/sys.9970", + "/root/data/AlMgCu/data/sys.9972", + "/root/data/AlMgCu/data/sys.9985", + "/root/data/AlMgCu/data/sys.9994" + ], + "batch_size": 1, + "numb_btch": 4, + "_comment": "that's all" + }, + "numb_steps": 10000000, + "seed": 3982377700, + "_comment": "that's all", + "disp_file": "lcurve.out", + "disp_freq": 2000, + "numb_test": 1, + "save_freq": 2000, + "save_ckpt": "model.ckpt", + "disp_training": true, + "time_training": true, + "profiling": false, + "profiling_file": "timeline.json" + } +} diff --git a/tests/water/job.json b/tests/water/job.json index 5a16d0b1..f6e5b6ac 100644 --- a/tests/water/job.json +++ b/tests/water/job.json @@ -1,11 +1,14 @@ { - "job_name": "torch water", - "command": " source deactivate && conda activate gnn && PYTHONPATH=./ python3 -u deepmd_pt/main.py train tests/water/water_large.json >tmp_log 2>&1", - "log_file": "tmp_log", - "backward_files": ["lcurve.out", "model.ckpt"], - "project_id": 11176, - "platform": "ali", - "machine_type": "c12_m92_1 * NVIDIA V100", - "job_type": "container", - "image_address": "registry.dp.tech/dptech/prod-195/stable:torch2.0_cu116" -} \ No newline at end of file + "job_name": "torch water", + "command": " source deactivate && conda activate gnn && PYTHONPATH=./ python3 -u deepmd_pt/main.py train tests/water/water_large.json >tmp_log 2>&1", + "log_file": "tmp_log", + "backward_files": [ + "lcurve.out", + "model.ckpt" + ], + "project_id": 11176, + "platform": "ali", + "machine_type": "c12_m92_1 * NVIDIA V100", + "job_type": "container", + "image_address": "registry.dp.tech/dptech/prod-195/stable:torch2.0_cu116" +} diff --git a/tests/water/lkf.json b/tests/water/lkf.json index fe86eb92..7d275602 100644 --- a/tests/water/lkf.json +++ b/tests/water/lkf.json @@ -1,81 +1,81 @@ { - "model": { - "type_map": [ - "O", - "H" - ], - "descriptor": { - "type": "se_e2_a", - "sel": [ - 46, - 92 - ], - "rcut_smth": 0.50, - "rcut": 6.00, - "neuron": [ - 25, - 25, - 25 - ], - "resnet_dt": false, - "axis_neuron": 16, - "seed": 1, - "_comment": " that's all" - }, - "fitting_net": { - "neuron": [ - 100, - 100, - 100 - ], - "resnet_dt": true, - "seed": 1, - "_comment": " that's all" - }, - "data_stat_nbatch": 20, - "_comment": " that's all" + "model": { + "type_map": [ + "O", + "H" + ], + "descriptor": { + "type": "se_e2_a", + "sel": [ + 46, + 92 + ], + "rcut_smth": 0.50, + "rcut": 6.00, + "neuron": [ + 25, + 25, + 25 + ], + "resnet_dt": false, + "axis_neuron": 16, + "seed": 1, + "_comment": " that's all" }, - "learning_rate": { - "type": "exp", - "decay_steps": 5000, - "start_lr": 0.001, - "stop_lr": 3.51e-8, - "_comment": "that's all" + "fitting_net": { + "neuron": [ + 100, + 100, + 100 + ], + "resnet_dt": true, + "seed": 1, + "_comment": " that's all" }, - "loss": { - "type": "ener", - "start_pref_e": 0.02, - "limit_pref_e": 1, - "start_pref_f": 1000, - "limit_pref_f": 1, - "_comment": " that's all" + "data_stat_nbatch": 20, + "_comment": " that's all" + }, + "learning_rate": { + "type": "exp", + "decay_steps": 5000, + "start_lr": 0.001, + "stop_lr": 3.51e-8, + "_comment": "that's all" + }, + "loss": { + "type": "ener", + "start_pref_e": 0.02, + "limit_pref_e": 1, + "start_pref_f": 1000, + "limit_pref_f": 1, + "_comment": " that's all" + }, + "training": { + "training_data": { + "systems": [ + "tests/water/data/data_0", + "tests/water/data/data_1", + "tests/water/data/data_2" + ], + "batch_size": 3, + "_comment": "that's all" }, - "training": { - "training_data": { - "systems": [ - "tests/water/data/data_0", - "tests/water/data/data_1", - "tests/water/data/data_2" - ], - "batch_size": 3, - "_comment": "that's all" - }, - "validation_data": { - "systems": [ - "tests/water/data/data_3" - ], - "batch_size": 1, - "numb_btch": 3, - "_comment": "that's all" - }, - "numb_steps": 1, - "seed": 10, - "disp_file": "lcurve.out", - "disp_freq": 1, - "save_freq": 1, - "opt_type": "LKF", - "kf_blocksize": 1024, - "_comment": "that's all" + "validation_data": { + "systems": [ + "tests/water/data/data_3" + ], + "batch_size": 1, + "numb_btch": 3, + "_comment": "that's all" }, + "numb_steps": 1, + "seed": 10, + "disp_file": "lcurve.out", + "disp_freq": 1, + "save_freq": 1, + "opt_type": "LKF", + "kf_blocksize": 1024, "_comment": "that's all" + }, + "_comment": "that's all" } diff --git a/tests/water/se_atten.json b/tests/water/se_atten.json index 4cf280d2..f50135f4 100644 --- a/tests/water/se_atten.json +++ b/tests/water/se_atten.json @@ -1,86 +1,86 @@ { - "_comment": "that's all", - "model": { - "type_map": [ - "O", - "H" - ], - "descriptor": { - "type": "se_atten", - "sel": 40, - "rcut_smth": 0.5, - "rcut": 4.0, - "neuron": [ - 25, - 50, - 100 - ], - "axis_neuron": 16, - "attn": 64, - "attn_layer": 2, - "attn_dotr": true, - "attn_mask": false, - "post_ln": true, - "ffn": false, - "ffn_embed_dim": 512, - "activation": "tanh", - "scaling_factor": 1.0, - "head_num": 1, - "normalize": false, - "temperature": 1.0 - }, - "fitting_net": { - "neuron": [ - 240, - 240, - 240 - ], - "resnet_dt": true, - "seed": 1, - "_comment": " that's all" - }, - "_comment": " that's all" + "_comment": "that's all", + "model": { + "type_map": [ + "O", + "H" + ], + "descriptor": { + "type": "se_atten", + "sel": 40, + "rcut_smth": 0.5, + "rcut": 4.0, + "neuron": [ + 25, + 50, + 100 + ], + "axis_neuron": 16, + "attn": 64, + "attn_layer": 2, + "attn_dotr": true, + "attn_mask": false, + "post_ln": true, + "ffn": false, + "ffn_embed_dim": 512, + "activation": "tanh", + "scaling_factor": 1.0, + "head_num": 1, + "normalize": false, + "temperature": 1.0 }, - "learning_rate": { - "type": "exp", - "decay_steps": 5000, - "start_lr": 0.001, - "stop_lr": 3.51e-08, - "_comment": "that's all" + "fitting_net": { + "neuron": [ + 240, + 240, + 240 + ], + "resnet_dt": true, + "seed": 1, + "_comment": " that's all" }, - "loss": { - "type": "ener", - "start_pref_e": 0.02, - "limit_pref_e": 1, - "start_pref_f": 1000, - "limit_pref_f": 1, - "start_pref_v": 0, - "limit_pref_v": 0, - "_comment": " that's all" + "_comment": " that's all" + }, + "learning_rate": { + "type": "exp", + "decay_steps": 5000, + "start_lr": 0.001, + "stop_lr": 3.51e-08, + "_comment": "that's all" + }, + "loss": { + "type": "ener", + "start_pref_e": 0.02, + "limit_pref_e": 1, + "start_pref_f": 1000, + "limit_pref_f": 1, + "start_pref_v": 0, + "limit_pref_v": 0, + "_comment": " that's all" + }, + "training": { + "training_data": { + "systems": [ + "tests/water/data/data_0", + "tests/water/data/data_1", + "tests/water/data/data_2" + ], + "batch_size": 1, + "_comment": "that's all" }, - "training": { - "training_data": { - "systems": [ - "tests/water/data/data_0", - "tests/water/data/data_1", - "tests/water/data/data_2" - ], - "batch_size": 1, - "_comment": "that's all" - }, - "validation_data": { - "systems": [ - "tests/water/data/data_3" - ], - "batch_size": 1, - "numb_btch": 1, - "_comment": "that's all" - }, - "numb_steps": 1000000, - "seed": 10, - "disp_file": "lcurve.out", - "disp_freq": 100, - "save_freq": 1000, - "_comment": "that's all" - } + "validation_data": { + "systems": [ + "tests/water/data/data_3" + ], + "batch_size": 1, + "numb_btch": 1, + "_comment": "that's all" + }, + "numb_steps": 1000000, + "seed": 10, + "disp_file": "lcurve.out", + "disp_freq": 100, + "save_freq": 1000, + "_comment": "that's all" + } } diff --git a/tests/water/se_e2_a.json b/tests/water/se_e2_a.json index 1abaa6f4..1276deda 100644 --- a/tests/water/se_e2_a.json +++ b/tests/water/se_e2_a.json @@ -1,79 +1,79 @@ { - "model": { - "type_map": [ - "O", - "H" - ], - "descriptor": { - "type": "se_e2_a", - "sel": [ - 46, - 92 - ], - "rcut_smth": 0.50, - "rcut": 6.00, - "neuron": [ - 25, - 50, - 100 - ], - "resnet_dt": false, - "axis_neuron": 16, - "seed": 1, - "_comment": " that's all" - }, - "fitting_net": { - "neuron": [ - 240, - 240, - 240 - ], - "resnet_dt": true, - "seed": 1, - "_comment": " that's all" - }, - "data_stat_nbatch": 20, - "_comment": " that's all" + "model": { + "type_map": [ + "O", + "H" + ], + "descriptor": { + "type": "se_e2_a", + "sel": [ + 46, + 92 + ], + "rcut_smth": 0.50, + "rcut": 6.00, + "neuron": [ + 25, + 50, + 100 + ], + "resnet_dt": false, + "axis_neuron": 16, + "seed": 1, + "_comment": " that's all" }, - "learning_rate": { - "type": "exp", - "decay_steps": 5000, - "start_lr": 0.001, - "stop_lr": 3.51e-8, - "_comment": "that's all" + "fitting_net": { + "neuron": [ + 240, + 240, + 240 + ], + "resnet_dt": true, + "seed": 1, + "_comment": " that's all" }, - "loss": { - "type": "ener", - "start_pref_e": 0.02, - "limit_pref_e": 1, - "start_pref_f": 1000, - "limit_pref_f": 1, - "_comment": " that's all" + "data_stat_nbatch": 20, + "_comment": " that's all" + }, + "learning_rate": { + "type": "exp", + "decay_steps": 5000, + "start_lr": 0.001, + "stop_lr": 3.51e-8, + "_comment": "that's all" + }, + "loss": { + "type": "ener", + "start_pref_e": 0.02, + "limit_pref_e": 1, + "start_pref_f": 1000, + "limit_pref_f": 1, + "_comment": " that's all" + }, + "training": { + "training_data": { + "systems": [ + "tests/water/data/data_0", + "tests/water/data/data_1", + "tests/water/data/data_2" + ], + "batch_size": 1, + "_comment": "that's all" }, - "training": { - "training_data": { - "systems": [ - "tests/water/data/data_0", - "tests/water/data/data_1", - "tests/water/data/data_2" - ], - "batch_size": 1, - "_comment": "that's all" - }, - "validation_data": { - "systems": [ - "tests/water/data/data_3" - ], - "batch_size": 1, - "numb_btch": 3, - "_comment": "that's all" - }, - "numb_steps": 100000, - "seed": 10, - "disp_file": "lcurve.out", - "disp_freq": 100, - "save_freq": 10000, - "_comment": "that's all" + "validation_data": { + "systems": [ + "tests/water/data/data_3" + ], + "batch_size": 1, + "numb_btch": 3, + "_comment": "that's all" }, + "numb_steps": 100000, + "seed": 10, + "disp_file": "lcurve.out", + "disp_freq": 100, + "save_freq": 10000, "_comment": "that's all" + }, + "_comment": "that's all" } diff --git a/tests/water/water_large.json b/tests/water/water_large.json index c5110a13..89cc002c 100644 --- a/tests/water/water_large.json +++ b/tests/water/water_large.json @@ -1,79 +1,79 @@ { - "model": { - "type_map": [ - "O", - "H" - ], - "descriptor": { - "type": "se_e2_a", - "sel": [ - 46, - 92 - ], - "rcut_smth": 0.50, - "rcut": 6.00, - "neuron": [ - 25, - 50, - 100 - ], - "resnet_dt": false, - "axis_neuron": 16, - "seed": 1, - "_comment": " that's all" - }, - "fitting_net": { - "neuron": [ - 240, - 240, - 240 - ], - "resnet_dt": true, - "seed": 1, - "_comment": " that's all" - }, - "data_stat_nbatch": 20, - "_comment": " that's all" + "model": { + "type_map": [ + "O", + "H" + ], + "descriptor": { + "type": "se_e2_a", + "sel": [ + 46, + 92 + ], + "rcut_smth": 0.50, + "rcut": 6.00, + "neuron": [ + 25, + 50, + 100 + ], + "resnet_dt": false, + "axis_neuron": 16, + "seed": 1, + "_comment": " that's all" }, - "learning_rate": { - "type": "exp", - "decay_steps": 5000, - "start_lr": 0.001, - "stop_lr": 3.51e-8, - "_comment": "that's all" + "fitting_net": { + "neuron": [ + 240, + 240, + 240 + ], + "resnet_dt": true, + "seed": 1, + "_comment": " that's all" }, - "loss": { - "type": "ener", - "start_pref_e": 0.02, - "limit_pref_e": 1, - "start_pref_f": 1000, - "limit_pref_f": 1, - "_comment": " that's all" + "data_stat_nbatch": 20, + "_comment": " that's all" + }, + "learning_rate": { + "type": "exp", + "decay_steps": 5000, + "start_lr": 0.001, + "stop_lr": 3.51e-8, + "_comment": "that's all" + }, + "loss": { + "type": "ener", + "start_pref_e": 0.02, + "limit_pref_e": 1, + "start_pref_f": 1000, + "limit_pref_f": 1, + "_comment": " that's all" + }, + "training": { + "training_data": { + "systems": [ + "data/water_train.hdf5/O64H128", + "data/water_train.hdf5/O96H192" + ], + "batch_size": 1, + "_comment": "that's all" }, - "training": { - "training_data": { - "systems": [ - "data/water_train.hdf5/O64H128", - "data/water_train.hdf5/O96H192" - ], - "batch_size": 1, - "_comment": "that's all" - }, - "validation_data": { - "systems": [ - "data/water_test.hdf5/O64H128", - "data/water_test.hdf5/O96H192" - ], - "batch_size": 1, - "numb_btch": 3, - "_comment": "that's all" - }, - "numb_steps": 1000000, - "seed": 10, - "disp_file": "lcurve.out", - "disp_freq": 2, - "save_freq": 10000, - "_comment": "that's all" + "validation_data": { + "systems": [ + "data/water_test.hdf5/O64H128", + "data/water_test.hdf5/O96H192" + ], + "batch_size": 1, + "numb_btch": 3, + "_comment": "that's all" }, + "numb_steps": 1000000, + "seed": 10, + "disp_file": "lcurve.out", + "disp_freq": 2, + "save_freq": 10000, "_comment": "that's all" + }, + "_comment": "that's all" } diff --git a/visualize.py b/visualize.py deleted file mode 100644 index c33738c3..00000000 --- a/visualize.py +++ /dev/null @@ -1,71 +0,0 @@ -import argparse -import os - -from collections import namedtuple -from matplotlib import pyplot -import numpy as np - -CurveRecord = namedtuple('CurveRecord', ['step', 'rmse_e', 'rmse_f']) - - -def load_lcurve_file(path): - with open(path, 'r') as fin: - lines = fin.readlines() - lcurve = [] - for item in lines: - line = item.strip() - if not line or line.startswith('#'): - continue - fields = line.split() - lcurve.append(fields) - return lcurve - -def rolling_window(a, window): - shape = a.shape[:-1] + (a.shape[-1] - window + 1, window) - strides = a.strides + (a.strides[-1],) - return np.lib.stride_tricks.as_strided(a, shape=shape, strides=strides) - -def draw_line_2d(path, step_interval, rolling=1000): - lcurve = load_lcurve_file(path) - steps = [] - rmse_e = [] - rmse_f = [] - for idx in range(0, len(lcurve), step_interval): - item = lcurve[idx] - step = item[0].rstrip(',').split('=')[-1] - e = item[1].rstrip(',').split('=')[-1] - f = item[2].rstrip(',').split('=')[-1] - #e = item[4].rstrip(',').split('=')[-1] - #f = item[6].rstrip(',').split('=')[-1] - #e = item[3].rstrip(',').split('=')[-1] - #f = item[3].rstrip(',').split('=')[-1] - steps.append(int(step)) - rmse_e.append(float(e)) - rmse_f.append(float(f)) - pyplot.yscale("log") - rmse_e = rolling_window(np.array(rmse_e), rolling).mean(axis=-1) - rmse_f = rolling_window(np.array(rmse_f), rolling).mean(axis=-1) - pyplot.plot(steps[rolling-1:], rmse_e, label='Energy') - pyplot.plot(steps[rolling-1:], rmse_f, label='Force') - import pdb - pdb.set_trace() - -def run(FLAGS): - pyplot.figure(figsize=(15,5)) - pyplot.title('RMSE over step') - pyplot.xlabel('Step') - pyplot.ylabel('RMSE') - draw_line_2d('lcurve.out', FLAGS.sample_every_steps) - pyplot.legend() - - if os.path.isfile(FLAGS.output_path): - os.remove(FLAGS.output_path) - pyplot.savefig(FLAGS.output_path) - - -if __name__ == '__main__': - parser = argparse.ArgumentParser(description='Draw lines from a lcurve file.') - parser.add_argument('-n', '--sample_every_steps', type=int, default=1, help='Sample every N steps.') - parser.add_argument('-o', '--output_path', default='rmse_over_step.png', help='Where to write image.') - FLAGS = parser.parse_args() - run(FLAGS)