Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def bcc (ele_name = 'ele', a = 3.2144871302356037) :
latt = Lattice.cubic(a)
return Structure(latt,
[ele_name, ele_name],
[[0, 0, 0],
[0.5, 0.5, 0.5],
]
def create_random_reader(num_atoms):
lattice = pmg.Lattice.from_parameters(1, 1, 1, 90, 90, 90)
positions = np.array([(_, _, _) for _ in np.linspace(0, 1, num_atoms)])
symbols = ['H'] * num_atoms
return MDReader(
energy=random.random(),
stress=np.random.random((3, 3)),
forces=np.random.random((num_atoms, 3)),
structure=pmg.Structure(lattice, symbols, positions))
def test_make_confs_0(self):
if not os.path.exists(os.path.join(self.equi_path, 'CONTCAR')):
with self.assertRaises(RuntimeError):
self.elastic.make_confs(self.target_path, self.equi_path)
shutil.copy(os.path.join(self.source_path, 'CONTCAR'), os.path.join(self.equi_path, 'CONTCAR'))
task_list = self.elastic.make_confs(self.target_path, self.equi_path)
dfm_dirs = glob.glob(os.path.join(self.target_path, 'task.*'))
incar0 = Incar.from_file(os.path.join('vasp_input', 'INCAR.rlx'))
incar0['ISIF'] = 4
self.assertEqual(os.path.realpath(os.path.join(self.equi_path, 'CONTCAR')),
os.path.realpath(os.path.join(self.target_path, 'POSCAR')))
ref_st = Structure.from_file(os.path.join(self.target_path, 'POSCAR'))
dfm_dirs.sort()
for ii in dfm_dirs:
st_file = os.path.join(ii, 'POSCAR')
self.assertTrue(os.path.isfile(st_file))
strain_json_file = os.path.join(ii, 'strain.json')
self.assertTrue(os.path.isfile(strain_json_file))
strain_json = loadfn(strain_json_file)
task_path = re.sub('confs', global_task_name, conf_path)
task_path = os.path.join(task_path, vasp_str)
os.makedirs(task_path, exist_ok=True)
cwd = os.getcwd()
os.chdir(task_path)
if os.path.isfile('POSCAR') :
os.remove('POSCAR')
os.symlink(os.path.relpath(equi_contcar), 'POSCAR')
os.chdir(cwd)
task_poscar = os.path.join(task_path, 'POSCAR')
# stress
equi_outcar = os.path.join(equi_path, 'OUTCAR')
stress = vasp.get_stress(equi_outcar)
np.savetxt(os.path.join(task_path, 'equi.stress.out'), stress)
# gen strcture
ss = Structure.from_file(task_poscar)
# gen defomations
norm_strains = [-norm_def, -0.5*norm_def, 0.5*norm_def, norm_def]
shear_strains = [-shear_def, -0.5*shear_def, 0.5*shear_def, shear_def]
dfm_ss = DeformedStructureSet(ss,
symmetry = False,
norm_strains = norm_strains,
shear_strains = shear_strains)
n_dfm = len(dfm_ss)
# gen incar
if 'relax_incar' in jdata.keys():
relax_incar_path = jdata['relax_incar']
assert(os.path.exists(relax_incar_path))
relax_incar_path = os.path.abspath(relax_incar_path)
fc = open(relax_incar_path).read()
kspacing =float(re.findall((r"KSPACING(.+?)\n"),fc)[0].replace('=',''))
kgamma =('T' in re.findall((r"KGAMMA(.+?)\n"),fc)[0])
equi_path = os.path.join(equi_path, vasp_str)
equi_contcar = os.path.join(equi_path, 'CONTCAR')
assert os.path.exists(equi_contcar),"Please compute the equilibrium state using vasp first"
task_path = re.sub('confs', global_task_name, conf_path)
task_path = os.path.join(task_path, vasp_str)
os.makedirs(task_path, exist_ok=True)
cwd = os.getcwd()
os.chdir(task_path)
if os.path.isfile('POSCAR') :
os.remove('POSCAR')
os.symlink(os.path.relpath(equi_contcar), 'POSCAR')
os.chdir(cwd)
task_poscar = os.path.join(task_path, 'POSCAR')
# gen strcture
print("task poscar: ", task_poscar)
ss = Structure.from_file(task_poscar)
# gen defects
vds = InterstitialGenerator(ss, insert_ele)
dss = []
for jj in vds :
dss.append(jj.generate_defect_structure(supercell))
# gen incar
if 'relax_incar' in jdata.keys():
relax_incar_path = jdata['relax_incar']
assert(os.path.exists(relax_incar_path))
relax_incar_path = os.path.abspath(relax_incar_path)
fc = open(relax_incar_path).read()
else :
fp_params = jdata['vasp_params']
ecut = fp_params['ecut']
ediff = fp_params['ediff']
npar = fp_params['npar']
def test_interpolation(self):
ep1 = pymatgen.io.vaspio.Poscar.from_file("POSCAR_ep1").structure
ep2 = pymatgen.io.vaspio.Poscar.from_file("POSCAR_ep2").structure
compare_im1 = pymatgen.io.vaspio.Poscar.from_file("POSCAR_im1").structure
compare_im2 = pymatgen.io.vaspio.Poscar.from_file("POSCAR_im2").structure
compare_im3 = pymatgen.io.vaspio.Poscar.from_file("POSCAR_im3").structure
sxtend = StructureExtensions(struc_work1 = ep1, struc_work2 = ep2)
slist = sxtend.do_interpolation(3)
self.assertEqual(slist[0],ep1)
self.assertEqual(slist[1],compare_im1)
self.assertEqual(slist[2],compare_im2)
self.assertEqual(slist[3],compare_im3)
self.assertEqual(slist[4],ep2)
def test_get_sd_array(self):
kdict['mast_neb_settings']['lines']=neblines
ingdir = "writedir/neb_labelinit-labelfin"
topmetad = MASTFile("files/top_metadata_neb")
topmetad.to_file("writedir/metadata.txt")
metad = MASTFile("files/metadata_neb")
metad.to_file("%s/metadata.txt" % ingdir)
unsorted_init = MASTFile("unsorted/parent_structure_labelinit")
#unsorted_init = MASTFile("unsorted/parent_structure_labelinit_scrambled")
unsorted_init.to_file("%s/parent_structure_labelinit" % ingdir)
unsorted_fin = MASTFile("unsorted/parent_structure_labelfin")
unsorted_fin.to_file("%s/parent_structure_labelfin" % ingdir)
my_structure=pymatgen.io.vaspio.Poscar.from_file("files/perfect_structure").structure
mywi = ChopIngredient(name=ingdir,program_keys=kdict,structure=my_structure)
[sinit, sfin] = mywi.get_parent_structures()
init_compare = pymatgen.io.vaspio.Poscar.from_file("files/parent_structure_labelinit").structure
fin_compare = pymatgen.io.vaspio.Poscar.from_file("files/parent_structure_labelfin").structure
#print sinit
#print init_compare
#print sfin
#print fin_compare
self.assertEqual(sinit.sites, init_compare.sites)
self.assertEqual(sinit.lattice, init_compare.lattice)
self.assertEqual(sfin.sites, fin_compare.sites)
self.assertEqual(sfin.lattice, fin_compare.lattice)
#self.testclass.get_parent_structures()
def test_complete_subfolders(self):
#raise SkipTest
ingdir="%s/writedir/single_label1" % testdir
recipedir="%s/writedir" % testdir
topmetad = MASTFile("files/top_metadata_single")
topmetad.data.append("origin_dir = %s/files\n" % testdir) #give origin directory
topmetad.to_file("writedir/metadata.txt")
metad = MASTFile("files/metadata_single")
metad.to_file("%s/metadata.txt" % ingdir)
kdict=dict()
kdict['mast_program'] = 'vasp'
kdict['mast_kpoints'] = [2,2,2,"M"]
kdict['mast_xc'] = 'pw91'
my_structure = pymatgen.io.vaspio.Poscar.from_file("files/perfect_structure").structure
mywr = ChopIngredient(name=ingdir, program_keys = kdict, structure=my_structure)
myoutcar = MASTFile("files/OUTCAR_completed")
myoszicar = MASTFile("files/OSZICAR_completed")
for subdir in ['00','01','02','03','04']:
subname = "%s/%s" % (ingdir, subdir)
os.mkdir(subname)
mywr.keywords['name'] = subname
mywr.checker.keywords['name'] = subname
mywr.write_singlerun()
mywr.write_submit_script()
myoutcar.to_file("%s/OUTCAR" % subname)
myoszicar.to_file("%s/OSZICAR" % subname)
myci = ChopIngredient(name=ingdir,program_keys=kdict, structure=my_structure)
self.assertTrue(myci.complete_subfolders())
os.remove("%s/04/OUTCAR" % ingdir)
self.assertFalse(myci.complete_subfolders())
def test_vasp_poscar_setup_has_poscar(self):
compare_pos = pymatgen.io.vaspio.Poscar.from_file(os.path.join(testdir, "structure","POSCAR_perfect"))
compare_pos.write_file(os.path.join(testdir,"childdir","POSCAR"))
myvc = VaspChecker(name="childdir")
mypos = myvc._vasp_poscar_setup()
self.assertEqual(mypos.structure, compare_pos.structure)
import pymatgen
import numpy as np
from MAST.ingredients.pmgextend.vasp_extensions import *
from MAST.ingredients.frozenphonons import *
mypos = pymatgen.io.vaspio.Poscar.from_file("//home/tam/bin/git/MAST4pymatgen/test/nebtest/ep1/CONTCAR")
mypos.write_file("//home/tam/bin/git/MAST4pymatgen/test/nebtest/POSCAR_no_frozen")
mypos2 = make_one_unfrozen_atom_poscar(mypos, 3)
mypos.write_file("//home/tam/bin/git/MAST4pymatgen/test/nebtest/POSCAR_no_frozen_maybe")
mypos2.write_file("//home/tam/bin/git/MAST4pymatgen/test/nebtest/POSCAR_frozen_3")
myph = FrozenPhonons(parent_path="//home/tam/bin/git/MAST4pymatgen/test/nebtest/ep1",dir_name="//home/tam/bin/git/MAST4pymatgen/test/phtest/frozen",program="vasp")
myph.generate_files()