pwact 0.1.7__py3-none-any.whl → 0.1.9__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -116,8 +116,6 @@ class Explore(object):
116
116
  jobname = "md{}".format(g_index)
117
117
  tag_name = "{}-{}".format(g_index, EXPLORE_FILE_STRUCTURE.md_tag)
118
118
  tag = os.path.join(self.md_dir, tag_name)
119
- gpu_per_node = None
120
- cpu_per_node = 1
121
119
 
122
120
  # if self.resource.explore_resource.gpu_per_node > 0:
123
121
  # if self.input_param.strategy.uncertainty.upper() == UNCERTAINTY.committee.upper():
@@ -135,9 +133,9 @@ class Explore(object):
135
133
  run_cmd = self.resource.explore_resource.command
136
134
 
137
135
  group_slurm_script = set_slurm_script_content(
138
- gpu_per_node=gpu_per_node,
136
+ gpu_per_node=self.resource.explore_resource.gpu_per_node,
139
137
  number_node = self.resource.explore_resource.number_node, #1
140
- cpu_per_node = cpu_per_node,
138
+ cpu_per_node = self.resource.explore_resource.cpu_per_node,
141
139
  queue_name = self.resource.explore_resource.queue_name,
142
140
  custom_flags = self.resource.explore_resource.custom_flags,
143
141
  env_script = self.resource.explore_resource.env_script,
@@ -192,11 +190,14 @@ class Explore(object):
192
190
  input_format=md_detail.config_file_format[sys_index],
193
191
  wrap = False,
194
192
  direct = True,
195
- sort = True,
193
+ sort = False,
196
194
  save_format=PWDATA.lammps_lmp,
197
195
  save_path=md_dir,
198
196
  save_name=LAMMPS.lammps_sys_config)
199
-
197
+ # import dpdata
198
+ # _config = dpdata.System(md_detail.config_file_list[sys_index], fmt=md_detail.config_file_format[sys_index])
199
+ # target_config = os.path.join(md_dir, LAMMPS.lammps_sys_config)
200
+ # _config.to("lammps/lmp", target_config, frame_idx=0)
200
201
  #2. set forcefiled file
201
202
  md_model_paths = self.set_forcefiled_file(md_dir)
202
203
 
@@ -36,7 +36,33 @@ def _reciprocal_box(box):
36
36
  rbox = np.linalg.inv(box)
37
37
  rbox = rbox.T
38
38
  return rbox
39
+
40
+ def get_energy_dftb_vasp():
41
+ aimd_dir = "/data/home/wuxingxing/datas/al_dir/HfO2/dftb/init_bulk_hfo2/temp_init_bulk_work/aimd"#/init_config_0/init/0_aimd
42
+ scf_dir = "/data/home/wuxingxing/datas/al_dir/HfO2/dftb/init_bulk_hfo2/temp_init_bulk_work/scf"#init_config_0/init/0_aimd/0-scf
43
+ save_file = "/data/home/wuxingxing/datas/al_dir/HfO2/dftb/init_bulk_hfo2/energy_count_xtb.txt"
44
+ aimd_dir = glob.glob(os.path.join(aimd_dir, "init_config_*"))
45
+ aimd_dir = sorted(aimd_dir, key=lambda x: int(os.path.basename(x).split('_')[-1]))
46
+
47
+ save_text = []
48
+ for aimd in aimd_dir:
49
+ mvm_config = Config(format="pwmat/movement", data_path=os.path.join(aimd, "init/0_aimd/MOVEMENT"))
50
+ scf_list = glob.glob(os.path.join(scf_dir, os.path.basename(aimd), "init/0_aimd/*-scf"))
51
+ scf_list = sorted(scf_list, key=lambda x: int(os.path.basename(x).split('-')[0]))
52
+ for scf in scf_list:
53
+ index = int(os.path.basename(scf).split('-')[0])
54
+ scf_config = Config(format="vasp/outcar", data_path=os.path.join(scf, "OUTCAR"))
55
+ if index == 0:
56
+ base = scf_config.images[0].Ep - mvm_config.images[index].Ep
57
+ save_text.append("aimd {} index {} dftb_energy {} vasp_energy {} vasp_just {}"\
58
+ .format(os.path.basename(aimd), index, \
59
+ mvm_config.images[index].Ep, scf_config.images[0].Ep,\
60
+ scf_config.images[0].Ep - base))
39
61
 
62
+ with open(save_file, 'w') as wf:
63
+ for line in save_text:
64
+ wf.write(line)
65
+ wf.write("\n")
40
66
  if __name__=="__main__":
41
67
  # parser = argparse.ArgumentParser()
42
68
  # parser.add_argument('-i', '--config', help="specify config file path of config", type=str, default='atom.config')
@@ -44,33 +70,6 @@ if __name__=="__main__":
44
70
  # parser.add_argument('-k', '--kspacing', help="specify the kspacing, the default 0.5", type=float, default=0.5)
45
71
  # args = parser.parse_args()
46
72
  # make_kspacing_kpoints(config=args.config, format=args.format, kspacing=args.kspacing)
47
- make_kspacing_kpoints(config="/data/home/wuxingxing/datas/al_dir/HfO2/dftb/init_bulk_hfo2/temp_init_bulk_work/scf/init_config_0/init/0_aimd/0-scf/POSCAR",
48
- format="vasp/poscar", kspacing=0.5)
49
-
50
- # work_dir = "/data/home/wuxingxing/datas/PWMLFF_library_data/HfO2/hfo2_dpgen/HfO2_liutheory"
51
- # data_list = [
52
- # "/data/home/wuxingxing/datas/PWMLFF_library_data/HfO2/hfo2_dpgen/HfO2_liutheory/mvms/sys_000_2650",
53
- # "/data/home/wuxingxing/datas/PWMLFF_library_data/HfO2/hfo2_dpgen/HfO2_liutheory/mvms/sys_001_2650",
54
- # "/data/home/wuxingxing/datas/PWMLFF_library_data/HfO2/hfo2_dpgen/HfO2_liutheory/mvms/sys_002_2650",
55
- # "/data/home/wuxingxing/datas/PWMLFF_library_data/HfO2/hfo2_dpgen/HfO2_liutheory/mvms/sys_003_2650",
56
- # "/data/home/wuxingxing/datas/PWMLFF_library_data/HfO2/hfo2_dpgen/HfO2_liutheory/mvms/sys_004_3858",
57
- # "/data/home/wuxingxing/datas/PWMLFF_library_data/HfO2/hfo2_dpgen/HfO2_liutheory/mvms/sys_005_3860",
58
- # "/data/home/wuxingxing/datas/PWMLFF_library_data/HfO2/hfo2_dpgen/HfO2_liutheory/mvms/sys_006_3860",
59
- # "/data/home/wuxingxing/datas/PWMLFF_library_data/HfO2/hfo2_dpgen/HfO2_liutheory/mvms/sys_007_3859",
60
- # "/data/home/wuxingxing/datas/PWMLFF_library_data/HfO2/hfo2_dpgen/HfO2_liutheory/mvms/sys_008_700",
61
- # "/data/home/wuxingxing/datas/PWMLFF_library_data/HfO2/hfo2_dpgen/HfO2_liutheory/mvms/sys_009_700"]
62
- # work_dir = "/data/home/wuxingxing/datas/al_dir/HfO2/baseline_model"
63
-
64
- # train_job = os.path.join(work_dir, "init_model/train.job")
65
- # train_json = os.path.join(work_dir, "init_model/train.json")
66
-
67
- # json_dict = json.load(open(train_json))
68
- # for data in data_list:
69
- # data_dir = os.path.join(work_dir, os.path.basename(data))
70
- # if os.path.exists(data_dir):
71
- # shutil.rmtree(data_dir)
72
- # os.makedirs(data_dir)
73
- # shutil.copyfile(train_job, os.path.join(data_dir, "train.job"))
74
- # json_dict["datasets_path"].append(data)
75
- # json.dump(json_dict, open(os.path.join(data_dir, "train.json"), "w"), indent=4)
76
-
73
+ # make_kspacing_kpoints(config="/data/home/wuxingxing/datas/al_dir/HfO2/dftb/init_bulk_hfo2/temp_init_bulk_work/scf/init_config_0/init/0_aimd/0-scf/POSCAR",
74
+ # format="vasp/poscar", kspacing=0.5)
75
+ get_energy_dftb_vasp()
@@ -104,4 +104,16 @@ class ResourceDetail(object):
104
104
  self.env_script = env_script
105
105
 
106
106
  if self.gpu_per_node is None and self.cpu_per_node is None:
107
- raise Exception("ERROR! Both CPU and GPU resources are not specified!")
107
+ raise Exception("ERROR! Both CPU and GPU resources are not specified!")
108
+ # check param
109
+ if "$SLURM_NTASKS".lower() in command.lower():
110
+ pass
111
+ else:
112
+ if "mpirun -np" in command:
113
+ np_num = command.split()[2]
114
+ try:
115
+ np_num = int(np_num)
116
+ if np_num > cpu_per_node:
117
+ raise Exception("the 'command' in resource.json {} set error! The nums of np can not be bigger than 'cpu_per_node'!".format(command))
118
+ except Exception:
119
+ raise Exception("the 'command' in resource.json {} set error! The nums of np can not be parsed!".format(command))
@@ -197,11 +197,11 @@ def extract_pwdata(data_list:list[str],
197
197
  )
198
198
 
199
199
  if __name__ == "__main__":
200
- in_config = "/data/home/wuxingxing/datas/al_dir/si_exp/init_bulk/collection/init_config_1/0.9_scale_pertub/0_pertub.config"
201
- save_path = "/data/home/wuxingxing/datas/al_dir/si_exp/init_bulk/collection/init_config_1/0.9_scale_pertub"
202
- image = Config.read(format="pwmat", data_path=in_config)
203
- save_config(image, wrap=False, direct=True, sort=True,\
204
- save_format="vasp", save_path=save_path, save_name="temp_poscar")
200
+ # in_config = "/data/home/wuxingxing/datas/al_dir/si_exp/init_bulk/collection/init_config_1/0.9_scale_pertub/0_pertub.config"
201
+ # save_path = "/data/home/wuxingxing/datas/al_dir/si_exp/init_bulk/collection/init_config_1/0.9_scale_pertub"
202
+ # image = Config.read(format="pwmat", data_path=in_config)
203
+ # save_config(image, wrap=False, direct=True, sort=True,\
204
+ # save_format="vasp", save_path=save_path, save_name="temp_poscar")
205
205
  # save_config(image, wrap=False, direct=True, sort=True,\
206
206
  # save_format="vasp", save_path=save_path, save_name="temp_poscar")
207
207
 
@@ -271,4 +271,22 @@ if __name__ == "__main__":
271
271
  # save_name = "{}.config".format(os.path.basename(traj).split('.')[0])
272
272
  # save_config(traj, input_format="dump", wrap=False, direct=True, sort=True,\
273
273
  # save_format="pwmat", save_path=save_dir, save_name=save_name)
274
- # print("{} to {} done!".format(traj, save_name))
274
+ # print("{} to {} done!".format(traj, save_name))
275
+ import glob
276
+ data_dir1 = glob.glob(os.path.join("/data/home/wuxingxing/datas/al_dir/HfO2/dftb/init_bulk_hfo2/temp_init_bulk_work/scf/init_config_*")) #
277
+ data_dir2 = glob.glob(os.path.join("/data/home/wuxingxing/datas/al_dir/HfO2/dftb/init_bulk_hfo2_600k/temp_init_bulk_work/scf/init_config_*"))
278
+ data_dir1.extend(data_dir2)
279
+ select_list = ["0-scf", "200-scf", "400-scf", "600-scf", "800-scf", "1000-scf"]
280
+ data_list = []
281
+ for dir in data_dir1:
282
+ _outcars = glob.glob(os.path.join(dir, "*/*/*/OUTCAR"))
283
+ for outcar in _outcars:
284
+ if os.path.basename(os.path.dirname(outcar)) in select_list:
285
+ data_list.append(outcar)
286
+
287
+ datasets_path = "/data/home/wuxingxing/datas/al_dir/HfO2/dftb/init_data_200"
288
+ extract_pwdata(data_list=data_list,
289
+ data_format="vasp/outcar",
290
+ datasets_path=datasets_path,
291
+ merge_data=True
292
+ )
pwact/main.py CHANGED
@@ -35,7 +35,7 @@ def run_iter():
35
35
  resource = Resource(machine_info, dft_style=input_param.dft_style)
36
36
  os.chdir(input_param.root_dir)
37
37
  print("The work dir change to {}".format(os.getcwd()))
38
- record = input_param.record_file
38
+ record = os.path.abspath(input_param.record_file)
39
39
  iter_rec = [0, -1]
40
40
  if os.path.isfile(record):
41
41
  with open (record) as frec :
@@ -155,12 +155,16 @@ def init_bulk():
155
155
 
156
156
  def to_pwdata(input_cmds:list):
157
157
  parser = argparse.ArgumentParser()
158
+ parser.add_argument('-t', '--worktype', help="specify work type, default is 'to_pwdata'", type=str, default='to_pwdata')
158
159
  parser.add_argument('-i', '--input', help='specify input outcars or movement files', nargs='+', type=str, default=None)
159
160
  parser.add_argument('-f', '--format', help="specify input file format, 'vasp/outcar' or 'pwmat/movement', default is 'pwmat/movement'", type=str, default="pwmat/movement")
160
161
  parser.add_argument('-s', '--savepath', help="specify stored directory, default is 'PWdata'", type=str, default='PWdata')
161
162
  parser.add_argument('-o', '--train_valid_ratio', help='specify stored directory, default=0.8', type=float, default=0.8)
162
- parser.add_argument('-r', '--data_shuffle', help='specify stored directory, default is True', type=bool, required=False, default=True)
163
- parser.add_argument('-m', '--merge', help='merge inputs to one, default is False', type=bool, required=False, default=False)
163
+ # parser.add_argument('-r', '--data_shuffle', help='specify stored directory, default is True', type=bool, required=False, default=True)
164
+ # parser.add_argument('-d', '--do_shuffle', help='if -d exits, doing the data shuffling', action='store_false')
165
+ parser.add_argument('-r', '--data_shuffle', help='Specify whether to do data shuffle operation, -r is True', action='store_true')
166
+ parser.add_argument('-m', '--merge', help='Specify whether to merge inputs to one, -m is True', action='store_true')
167
+ # parser.add_argument('-m', '--merge', help='merge inputs to one, default is False', type=bool, required=False, default=False)
164
168
  parser.add_argument('-g', '--gap', help='Trail point interval before and after, default is 1', type=int, default=1)
165
169
 
166
170
  parser.add_argument('-w', '--work_dir', help='specify work dir, default is current dir', type=str, default='./')
@@ -4,7 +4,7 @@ import os
4
4
  import numpy as np
5
5
 
6
6
  from pwact.utils.constant import FORCEFILED
7
-
7
+ from pwdata.calculators.const import ELEMENTMASSTABLE
8
8
  def _sample_sphere():
9
9
  while True:
10
10
  vv = np.array([np.random.normal(), np.random.normal(), np.random.normal()])
@@ -29,16 +29,27 @@ def make_pair_style(md_type, forcefiled, atom_type:list[int], dump_info:str):
29
29
  pair_style += "pair_coeff * * {}\n".format(atom_names)
30
30
  return pair_style
31
31
 
32
- def make_mass(mass):
33
- if mass is None:
34
- return ""
32
+ # def make_mass(mass):
33
+ # if mass is None:
34
+ # return ""
35
35
 
36
+ # mass_str = "\n"
37
+ # if isinstance(mass, str):
38
+ # mass_str += "mass {}\n".format(mass)
39
+ # else:
40
+ # for m in mass:
41
+ # mass_str += "mass {}\n".format(m)
42
+ # return mass_str
43
+
44
+ def make_mass(atom_type:list):
45
+ if isinstance(atom_type, str):
46
+ atom_type = [atom_type]
47
+ if atom_type is None:
48
+ return ""
36
49
  mass_str = "\n"
37
- if isinstance(mass, str):
38
- mass_str += "mass {}\n".format(mass)
39
- else:
40
- for m in mass:
41
- mass_str += "mass {}\n".format(m)
50
+
51
+ for i, atom in enumerate(atom_type):
52
+ mass_str += "mass {} {}\n".format(i+1, ELEMENTMASSTABLE[atom])
42
53
  return mass_str
43
54
 
44
55
  def set_ensemble(ensemble):
@@ -104,7 +115,7 @@ def make_lammps_input(
104
115
  )
105
116
  md_script += "change_box all triclinic\n"
106
117
 
107
- md_script += make_mass(mass)
118
+ md_script += make_mass(atom_type)
108
119
  dump_info = "out_freq ${{DUMP_FREQ}} out_file {} ".format(model_deviation_file)
109
120
  md_script += make_pair_style(md_type, forcefiled, atom_type, dump_info)
110
121
  #put_freq ${freq} out_file error
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pwact
3
- Version: 0.1.7
3
+ Version: 0.1.9
4
4
  Summary: PWACT is an open-source automated active learning platform based on PWMLFF for efficient data sampling.
5
5
  Home-page: https://github.com/LonxunQuantum/PWact
6
6
  Author: LonxunQuantum
@@ -1,10 +1,10 @@
1
1
  pwact/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- pwact/main.py,sha256=LcYrAeck17DjR6KfhVjNUdNCjdEyRLpmbLruB5LOr-A,12110
2
+ pwact/main.py,sha256=gSh39PCdbAodiAc0vlwNWnf-ZTsjZ6KaH0F9awPN5dQ,12627
3
3
  pwact/active_learning/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  pwact/active_learning/environment.py,sha256=7jqZcYw5jNtMuW0TYlCIDCD4mUt6a7WdXq3PyXjLuG0,104
5
5
  pwact/active_learning/slurm.py,sha256=XVeVIRRQUXWixxbUqR-tJQS4CNhEJV8pvp74O4e5InM,13108
6
6
  pwact/active_learning/explore/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
- pwact/active_learning/explore/run_model_md.py,sha256=aJKxYZgdOEaEpXhpHlTr7-37-dfUx5a9IPx2MJdVIoE,18833
7
+ pwact/active_learning/explore/run_model_md.py,sha256=GfdaT3W70VU0Ke12R0f2wcn92-nvi5yre5pU4lhyCYA,19112
8
8
  pwact/active_learning/explore/select_image.py,sha256=QAoD1CxaC5Xn3W5rQHxTNWMN53K2wABLsw03XCJEFPg,10527
9
9
  pwact/active_learning/init_bulk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
10
  pwact/active_learning/init_bulk/aimd.py,sha256=J-L83Bj4oJYaJvmd_W76oKamFMJhoImjM5B9FC1Uobw,10437
@@ -15,7 +15,7 @@ pwact/active_learning/init_bulk/relax.py,sha256=4T7VI1sBmUWDwLbSn3JvPivHTLNcdSil
15
15
  pwact/active_learning/label/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
16
  pwact/active_learning/label/labeling.py,sha256=Qh_f27OxQytVaCtcqLj2eKs4usqSpQlnFPtLApM7adQ,14886
17
17
  pwact/active_learning/test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
- pwact/active_learning/test/test.py,sha256=ukm_Y4BcrdqDay-aStY-JPJ8ZkP4itLuPhq5A3D561g,3875
18
+ pwact/active_learning/test/test.py,sha256=ZoA4W3VG9-XLQ6onUvCIPq9PkfttEPKdz8GZX46cwIg,3582
19
19
  pwact/active_learning/train/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
20
  pwact/active_learning/train/dp_kpu.py,sha256=cdQzzoigwulRfrHP5AfuEVQn6Rw3RVflHHTvgWs1CQM,9197
21
21
  pwact/active_learning/train/train_model.py,sha256=n0m-DS2GBelaMHGKRFUy_JACbyjJ8Q3Nw_6FkHIDeo8,9730
@@ -23,7 +23,7 @@ pwact/active_learning/user_input/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRk
23
23
  pwact/active_learning/user_input/cmd_infos.py,sha256=zWONvAXlpYsRgCxG2q43M7fmWLjVG0mbmeL6JKcJCtk,1468
24
24
  pwact/active_learning/user_input/init_bulk_input.py,sha256=NCUAB1xpa67MXHRRWAkmWZjkQbTibE4EjmtlOmr0HdQ,6762
25
25
  pwact/active_learning/user_input/iter_input.py,sha256=TLlilMx7oUvXlK-6lbedMXU-FS-IEVnyDsmB14kFd2Y,10657
26
- pwact/active_learning/user_input/resource.py,sha256=4ONdp_V3myzKXAs2aNcP5-kCvkK2uDe-ayDYxKLSFog,5643
26
+ pwact/active_learning/user_input/resource.py,sha256=jVahpvdYHXYaeKWxNSLy1YkoZ-QtcUnW-MwJOVbRyD8,6269
27
27
  pwact/active_learning/user_input/scf_param.py,sha256=xXS-8bhXF_KdE0Jc9P8UZcbhWb0qKRWRhfBI9t5Rz6M,8883
28
28
  pwact/active_learning/user_input/workdir.py,sha256=64J3wBbYzy6ztYHs513YHfEIF5d8zwv_WpF-U9HOEkA,8245
29
29
  pwact/active_learning/user_input/train_param/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -35,7 +35,7 @@ pwact/active_learning/user_input/train_param/train_param.py,sha256=wt_PHDrfk5eOy
35
35
  pwact/active_learning/user_input/train_param/work_file_param.py,sha256=tvvxWto8oH7CZPowLjhbvkUn5kQJLE33b2UBfmK_Kxs,11219
36
36
  pwact/bin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
37
  pwact/data_format/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
- pwact/data_format/configop.py,sha256=5RdVKaRzWDJd0sRr0gO7kl-CS68cYg6XmtFizt2ZHrg,11592
38
+ pwact/data_format/configop.py,sha256=VN_F7Ckmdty-kUClfvhzTSnNvl7w9iwsBHMY2CHwo8Q,12525
39
39
  pwact/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
40
  pwact/utils/constant.py,sha256=Lt3KYgtzPxccsTk_qT8RdVWP4xS1awgBAEPJ9Oq16Ug,17455
41
41
  pwact/utils/file_operation.py,sha256=3IPXqOxOmh1MfqL_YDKMurw5oyY072y8WTplbLW4rXw,8400
@@ -46,11 +46,11 @@ pwact/utils/slurm_script.py,sha256=GISYPiMezVg5HiJs9MfcVDyycCh9fLbTQ3lLzAQGOIU,8
46
46
  pwact/utils/app_lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
47
  pwact/utils/app_lib/common.py,sha256=KiKZHrk_SDwP9b8ZORor8rXzZbU-vSSjliqlYvjyvPQ,5552
48
48
  pwact/utils/app_lib/cp2k.py,sha256=vPTofDEz8Qd1A3gjMkMxXF8qWQLVz3XDc6-hSjRG7j0,10499
49
- pwact/utils/app_lib/lammps.py,sha256=I3_kIzJzmVaPMHerHa421BR9Sw3YjzbWkZXLjV6M39s,7654
49
+ pwact/utils/app_lib/lammps.py,sha256=2oxHJHdDxfDDWWmnjo0gMNwgGvxABwuDgDlb8kbhgfk,8037
50
50
  pwact/utils/app_lib/pwmat.py,sha256=l3O_AXExy0Sgkz0RQolrvRg0ZfHLLySFteQZ2dhqfhs,16543
51
- pwact-0.1.7.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
52
- pwact-0.1.7.dist-info/METADATA,sha256=fzlnENGEI-Oa2L-pwPyWcusSYV6KpNCArDk9PmJeMq0,3658
53
- pwact-0.1.7.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
54
- pwact-0.1.7.dist-info/entry_points.txt,sha256=p61auAnpbn8E2WjvHNBA7rb9_NRAOCew4zdcCj33cGc,42
55
- pwact-0.1.7.dist-info/top_level.txt,sha256=fY1_7sH5Lke4dC9L8MbYM4fT5aat5eCkAmpkIzY1SlM,6
56
- pwact-0.1.7.dist-info/RECORD,,
51
+ pwact-0.1.9.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
52
+ pwact-0.1.9.dist-info/METADATA,sha256=BGo8wMHO5dDXKeLrjk6NdvCRFjiyl7opgrai1PMZhcE,3658
53
+ pwact-0.1.9.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
54
+ pwact-0.1.9.dist-info/entry_points.txt,sha256=p61auAnpbn8E2WjvHNBA7rb9_NRAOCew4zdcCj33cGc,42
55
+ pwact-0.1.9.dist-info/top_level.txt,sha256=fY1_7sH5Lke4dC9L8MbYM4fT5aat5eCkAmpkIzY1SlM,6
56
+ pwact-0.1.9.dist-info/RECORD,,
File without changes
File without changes