Example #1
0
def main(ingname=""):
    """Get the U value from an ingredient.
        Args:
            ingname <str>: Ingredient name, full path
        Returns:
            <string>: "LDAUU, LDAUJ (eV);x x x, x x x", ex:
                "LDAUU, LDAUJ (eV); 0 5 0, 0 1 0"
    """
    trymeta = "%s/metadata.txt" % ingname
    frontstr = "LDAUU, LDAUJ (eV);"
    if os.path.isfile(trymeta):
        mymeta = Metadata(metafile=trymeta)
        myprogram = mymeta.read_data("program")
    else:
        myprogram = "None"
    if myprogram in ['vasp','vasp_neb']:
        if os.path.isdir("%s/01" % ingname):
            tryfile = "%s/01/OUTCAR" % ingname
        else:
            tryfile = "%s/OUTCAR" % ingname
        grepldauu = fileutil.grepme(tryfile, "LDAUU")
        if grepldauu == []:
            return "%s N/A" % frontstr
        ldauuparse = grepldauu[0].split("=")[1].strip()
        grepldauj = fileutil.grepme(tryfile, "LDAUJ")
        ldaujparse = grepldauj[0].split("=")[1].strip()
        return "%s %s, %s" % (frontstr, ldauuparse, ldaujparse)
    else:
        return "%s N/A" % frontstr
Example #2
0
def main(ingname=""):
    """Get the U value from an ingredient.
        Args:
            ingname <str>: Ingredient name, full path
        Returns:
            <string>: "LDAUU, LDAUJ (eV);x x x, x x x", ex:
                "LDAUU, LDAUJ (eV); 0 5 0, 0 1 0"
    """
    trymeta = "%s/metadata.txt" % ingname
    frontstr = "LDAUU, LDAUJ (eV);"
    if os.path.isfile(trymeta):
        mymeta = Metadata(metafile=trymeta)
        myprogram = mymeta.read_data("program")
    else:
        myprogram = "None"
    if myprogram in ['vasp', 'vasp_neb']:
        if os.path.isdir("%s/01" % ingname):
            tryfile = "%s/01/OUTCAR" % ingname
        else:
            tryfile = "%s/OUTCAR" % ingname
        grepldauu = fileutil.grepme(tryfile, "LDAUU")
        if grepldauu == []:
            return "%s N/A" % frontstr
        ldauuparse = grepldauu[0].split("=")[1].strip()
        grepldauj = fileutil.grepme(tryfile, "LDAUJ")
        ldaujparse = grepldauj[0].split("=")[1].strip()
        return "%s %s, %s" % (frontstr, ldauuparse, ldaujparse)
    else:
        return "%s N/A" % frontstr
Example #3
0
def get_citations(recipedir):
    """Use mast_exec lines from the recipe directory in order
        to assign a CITATIONS section to the SUMMARY.txt file.
        Args:
            recipedir <str>: Recipe directory
        Returns:
            linelist <list of str>: Lines to add to SUMMARY.txt
    """
    mylist = list()
    mylist = ['mast', 'pymatgen',
              'spglib']  #need to use; removed python as standard
    myinput = os.path.join(recipedir, "input.inp")
    mastexecs = fileutil.grepme(myinput, "mast_exec")
    for mastexec in mastexecs:
        if 'vasp' in mastexec.lower():
            mylist.append('vasp')
            mastxcs = fileutil.grepme(myinput, "mast_xc")
            if len(mastxcs) >= 1:
                mylist.append('vasp_pps')
                for mastxc in mastxcs:
                    if ("pw" in mastxc.lower()) or ("paw" in mastxc.lower()):
                        mylist.append('vasp_paw')
            mastprogs = fileutil.grepme(myinput, "mast_program")
            if len(mastprogs) >= 1:
                for mastprog in mastprogs:
                    if ("vasp_neb" in mastprog.lower()):
                        mylist.append('vaspneb')
            if "tst" in mastexec.lower():
                mylist.append('vaspneb')
        #if 'phon' in mastexec.lower():
        #    mylist.append('phon')
        if 'structopt' in mastexec.lower():
            mylist.append('structopt')
    mastwrites = fileutil.grepme(myinput, "mast_write_method")
    for mastwrite in mastwrites:
        if 'pathfinder' in mastexec.lower():
            mylist.append('pathfinder')
    citationpath = os.path.join(dirutil.get_mast_install_path(), "summary",
                                "citation_files")
    citationfiles = os.listdir(citationpath)
    linelist = list()
    uniquelist = list()
    for mylistitem in mylist:
        if not mylistitem in uniquelist:
            uniquelist.append(mylistitem)
    #print "UNIQUELIST: ", uniquelist
    for listitem in uniquelist:
        for citationfile in citationfiles:
            if citationfile[:-3] == listitem:  #all except number
                cfpath = os.path.join(citationpath, citationfile)
                cffile = MASTFile(cfpath)
                linelist.extend(cffile.data)
    return linelist
Example #4
0
def get_citations(recipedir):
    """Use mast_exec lines from the recipe directory in order
        to assign a CITATIONS section to the SUMMARY.txt file.
        Args:
            recipedir <str>: Recipe directory
        Returns:
            linelist <list of str>: Lines to add to SUMMARY.txt
    """
    mylist=list()
    mylist=['mast','pymatgen','spglib'] #need to use; removed python as standard
    myinput = os.path.join(recipedir, "input.inp")
    mastexecs = fileutil.grepme(myinput, "mast_exec")
    for mastexec in mastexecs:
        if 'vasp' in mastexec.lower():
            mylist.append('vasp')
            mastxcs = fileutil.grepme(myinput, "mast_xc")
            if len(mastxcs) >= 1:
                mylist.append('vasp_pps')
                for mastxc in mastxcs:
                    if ("pw" in mastxc.lower()) or ("paw" in mastxc.lower()):
                        mylist.append('vasp_paw')
            mastprogs = fileutil.grepme(myinput, "mast_program")
            if len(mastprogs) >= 1:
                for mastprog in mastprogs:
                    if ("vasp_neb" in mastprog.lower()):
                        mylist.append('vaspneb')
            if "tst" in mastexec.lower():
                mylist.append('vaspneb')
        #if 'phon' in mastexec.lower():
        #    mylist.append('phon')
        if 'structopt' in mastexec.lower():
            mylist.append('structopt')
    mastwrites = fileutil.grepme(myinput, "mast_write_method")
    for mastwrite in mastwrites:
        if 'pathfinder' in mastexec.lower():
            mylist.append('pathfinder')
    citationpath = os.path.join(dirutil.get_mast_install_path(),
                    "summary","citation_files")
    citationfiles = os.listdir(citationpath)
    linelist = list()
    uniquelist=list()
    for mylistitem in mylist:
        if not mylistitem in uniquelist:
            uniquelist.append(mylistitem)
    #print "UNIQUELIST: ", uniquelist
    for listitem in uniquelist:
        for citationfile in citationfiles:
            if citationfile[:-3] == listitem: #all except number
                cfpath = os.path.join(citationpath, citationfile)
                cffile = MASTFile(cfpath)
                linelist.extend(cffile.data)
    return linelist
Example #5
0
 def check(self):
     ifile = "%s/INCAR" % self.ingpath
     if os.path.isfile(ifile):
         myincar = pymatgen.io.vaspio.Incar.from_file(ifile)
     else:
         self.logger.warning("No INCAR file found at %s" % ifile)
         return False
     nsw = myincar.get('NSW', 0)
     if nsw == 0:
         self.logger.info("NSW is 0 or not set.")
         return False
     ofile = "%s/OUTCAR" % self.ingpath
     if not (os.path.isfile(ofile)):
         ofile = "%s/01/OUTCAR" % self.ingpath
     if not (os.path.isfile(ofile)):
         self.logger.error("No OUTCAR file at %s or %s/01." %
                           (self.ingpath, self.ingpath))
         return False
     myiters = fileutil.grepme(ofile, "Iter")
     if len(myiters) == 0:
         self.logger.warning("No Iterations in OUTCAR at %s" % ofile)
         return False
     lastentry = myiters[-1]
     ionichalf = lastentry.split('(')[0]
     lastiter = ionichalf.split()[-1]
     lastiter = int(lastiter)
     if lastiter >= nsw:
         self.logger.info("Last ionic step %s is at NSW %s" %
                          (lastiter, nsw))
         return True
     return False
Example #6
0
def main(ingname=""):
    """Get the last volume value from an ingredient.
        Args:
            ingname <str>: Ingredient name, full path
        Returns:
            <string>: "Last volume (Angstroms^3);0.000", ex:
                "Last volume (Angstroms^3); 324.456"
    """
    trymeta = "%s/metadata.txt" % ingname
    frontstr = "Last volume (Angstroms^3);"
    if os.path.isfile(trymeta):
        mymeta = Metadata(metafile=trymeta)
        myprogram = mymeta.read_data("program")
    else:
        myprogram = "None"
    if myprogram in ['vasp', 'vasp_neb']:
        if os.path.isdir("%s/01" % ingname):
            tryfile = "%s/01/OUTCAR" % ingname
        else:
            tryfile = "%s/OUTCAR" % ingname
        grepvol = fileutil.grepme(tryfile, "volume of cell")
        if grepvol == []:
            return "%s N/A" % frontstr
        myvol = grepvol[-1].split(":")[1].strip()
        return "%s %s" % (frontstr, myvol)
    else:
        return "%s N/A" % frontstr
Example #7
0
def main(ingname=""):
    """Get the last pressure value from an ingredient.
        Args:
            ingname <str>: Ingredient name, full path
        Returns:
            <string>: "Last pressure (kbar);0.00", ex:
                "Last pressure (kbar);-23.55"
    """
    trymeta = "%s/metadata.txt" % ingname
    frontstr = "Last pressure (kbar);"
    if os.path.isfile(trymeta):
        mymeta = Metadata(metafile=trymeta)
        myprogram = mymeta.read_data("program")
    else:
        myprogram = "None"
    if myprogram in ['vasp', 'vasp_neb']:
        if os.path.isdir("%s/01" % ingname):
            tryfile = "%s/01/OUTCAR" % ingname
        else:
            tryfile = "%s/OUTCAR" % ingname
        greppress = fileutil.grepme(tryfile, "external pressure")
        #"external pressure = -1.97 kB Pullay stress = 0.00 kB"
        if greppress == []:
            return "%s N/A" % frontstr
        mypress = greppress[-1].strip().split()[3]
        return "%s %s" % (frontstr, mypress)
    else:
        return "%s N/A" % frontstr
Example #8
0
 def check(self):
     ifile = "%s/INCAR" % self.ingpath
     if os.path.isfile(ifile):
         myincar = pymatgen.io.vaspio.Incar.from_file(ifile)
     else:
         self.logger.warning("No INCAR file found at %s" % ifile)
         return False
     nsw = myincar.get('NSW',0)
     if nsw == 0:
         self.logger.info("NSW is 0 or not set.")
         return False
     ofile = "%s/OUTCAR" % self.ingpath
     if not (os.path.isfile(ofile)):
         ofile = "%s/01/OUTCAR" % self.ingpath
     if not (os.path.isfile(ofile)):
         self.logger.error("No OUTCAR file at %s or %s/01." % (self.ingpath, self.ingpath))
         return False
     myiters = fileutil.grepme(ofile, "Iter")
     if len(myiters) == 0:
         self.logger.warning("No Iterations in OUTCAR at %s" % ofile)
         return False
     lastentry = myiters[-1]
     ionichalf = lastentry.split('(')[0]
     lastiter = ionichalf.split()[-1]
     lastiter = int(lastiter)
     if lastiter >= nsw:
         self.logger.info("Last ionic step %s is at NSW %s" % (lastiter, nsw))
         return True
     return False
Example #9
0
def main(ingname=""):
    """Get the last pressure value from an ingredient.
        Args:
            ingname <str>: Ingredient name, full path
        Returns:
            <string>: "Last pressure (kbar);0.00", ex:
                "Last pressure (kbar);-23.55"
    """
    trymeta = "%s/metadata.txt" % ingname
    frontstr = "Last pressure (kbar);"
    if os.path.isfile(trymeta):
        mymeta = Metadata(metafile=trymeta)
        myprogram = mymeta.read_data("program")
    else:
        myprogram = "None"
    if myprogram in ['vasp','vasp_neb']:
        if os.path.isdir("%s/01" % ingname):
            tryfile = "%s/01/OUTCAR" % ingname
        else:
            tryfile = "%s/OUTCAR" % ingname
        greppress = fileutil.grepme(tryfile, "external pressure")
        #"external pressure = -1.97 kB Pullay stress = 0.00 kB"
        if greppress == []:
            return "%s N/A" % frontstr
        mypress = greppress[-1].strip().split()[3]
        return "%s %s" % (frontstr, mypress)
    else:
        return "%s N/A" % frontstr
Example #10
0
def main(ingname=""):
    """Get the last volume value from an ingredient.
        Args:
            ingname <str>: Ingredient name, full path
        Returns:
            <string>: "Last volume (Angstroms^3);0.000", ex:
                "Last volume (Angstroms^3); 324.456"
    """
    trymeta = "%s/metadata.txt" % ingname
    frontstr = "Last volume (Angstroms^3);"
    if os.path.isfile(trymeta):
        mymeta = Metadata(metafile=trymeta)
        myprogram = mymeta.read_data("program")
    else:
        myprogram = "None"
    if myprogram in ['vasp','vasp_neb']:
        if os.path.isdir("%s/01" % ingname):
            tryfile = "%s/01/OUTCAR" % ingname
        else:
            tryfile = "%s/OUTCAR" % ingname
        grepvol = fileutil.grepme(tryfile, "volume of cell")
        if grepvol == []:
            return "%s N/A" % frontstr
        myvol = grepvol[-1].split(":")[1].strip()
        return "%s %s" % (frontstr, myvol)
    else:
        return "%s N/A" % frontstr
Example #11
0
    def get_fermi_energy(self, directory):
        """Returns the Fermi energy from a directory"""
        abspath = '%s/%s/' % (self.recdir, directory)

        if ('OUTCAR' in os.listdir(abspath)):
            grepfermi = fileutil.grepme("%s/OUTCAR" % abspath, "E-fermi")
            lastfermi = grepfermi[-1]
            fermi = float(lastfermi.split()[2])
            print "TTM DEBUG LAST FERMI: ", fermi
            return fermi
            #print "TTM DEBUG: OUTCAR efermi: ", Outcar('%s/OUTCAR' % abspath).efermi
            #return Outcar('%s/OUTCAR' % abspath).efermi
        elif ('vasprun.xml' in os.listdir(abspath)):
            return Vasprun('%s/vasprun.xml' % abspath).efermi
Example #12
0
    def get_fermi_energy(self, directory):
        """Returns the Fermi energy from a directory"""
        abspath = '%s/%s/' % (self.recdir, directory)

        if ('OUTCAR' in os.listdir(abspath)):
            grepfermi = fileutil.grepme("%s/OUTCAR" % abspath, "E-fermi")
            lastfermi=grepfermi[-1]
            fermi = float(lastfermi.split()[2])
            print "TTM DEBUG LAST FERMI: ", fermi
            return fermi
            #print "TTM DEBUG: OUTCAR efermi: ", Outcar('%s/OUTCAR' % abspath).efermi
            #return Outcar('%s/OUTCAR' % abspath).efermi
        elif ('vasprun.xml' in os.listdir(abspath)):
            return Vasprun('%s/vasprun.xml' % abspath).efermi
Example #13
0
    def get_v(self,vdir,vdir_num,vdir_denom):
        """Obtaining the attempt frequencies.
            Args:
                vdir <list of dict>: vdir={'v0':*,'v1':*,...}, * is the list like [<local_min>,<saddle>]
                vdir_num <dict>: vdir_num={'E0':<local_min>,...}
                Edir_denum <dict>: Edir_denom={'E0':<saddle>,...}
        """    
        v = dict()
        v_num = dict()
        v_denom = dict()
        for freq in vdir.keys():
            if len(vdir[freq])==1: v[freq] = vdir[freq][0]
            else:
                if os.path.isfile(vdir_num[freq]+'_FREQ') and os.path.isfile(vdir_num[freq]+'_FREQ'): # Reading data from FREQ files
                    fn=open(vdir_num[freq]+'_FREQ','r')
                    nthzlist=self.getinfo(fn.readline())
                    i=0
                    num_num=0
                    v_num[freq]=1.0
                    while i<len(nthzlist):
                        if abs(float(nthzlist[i]))>0.1: 
                            v_num[freq]=v_num[freq]*float(nthzlist[i])
                            num_num+=1
                        i+=1
                    fd=open(vdir_denom[freq]+'_FREQ','r')
                    dthzlist=self.getinfo(fd.readline())
                    j=0
                    denom_num=0
                    v_denom[freq]=1.0
                    while j<len(dthzlist):           
                        if abs(float(dthzlist[j]))>0.1: 
                            v_denom[freq]=v_denom[freq]*float(dthzlist[j])
                            denom_num+=1
                        j+=1
                    if not num_num==denom_num+1: 
                        print 'WARNING: Numbers of non-zero frequencies at local minimum and at saddle point do not match! Please double-check the FREQ files of %s and %s'%(vdir_num[freq],vdir_denom[freq])

                else: # Reading data from OUTCAR files
                    nthzlist = fileutil.grepme(vdir_num[freq]+'_OUTCAR', "2PiTHz")
                    num_num=len(nthzlist)
                    dthzlist = fileutil.grepme(vdir_denom[freq]+'_OUTCAR', "2PiTHz")
                    denom_num=len(dthzlist)
                    im_num=0
                    im_denom=0
                    if denom_num==num_num:
                        for i in range(num_num):
                            if 'f/i' in dthzlist[i]: im_denom+=1
                            if 'f/i' in nthzlist[i]: im_num+=1
                        if not im_num==0: 
                            print 'WARNING: Imaginary frequency found in the local minimum! Please check the OUTCAR of %s!'%vdir_num[freq]
                        elif im_denom==0:
                            print 'WARNING: No imaginary frequency found in the saddle point! Please check the OUTCAR of %s!'%vdir_denom[freq]
                        elif im_denom>1:
                            print 'WARNING: More than 1 imaginary frequencies found in the saddle point! Please check the OUTCAR of %s!'%vdir_denom[freq]
                    else:
                        print 'WARNING: Numbers of frequencies at local minimum and at saddle point are not equal! Please check the OUTCAR of %s and %s!'%(vdir_num[freq],vdir_denom[freq])
                    v_num[freq]=v_denom[freq]=1.0
                    for i in range(num_num):
                        if not 'f/i' in nthzlist[i]:
                            v_num[freq]*=float(self.getinfo(nthzlist[i])[3])
                    for i in range(denom_num):    
                        if not 'f/i' in dthzlist[i]:
                            v_denom[freq]*=float(self.getinfo(dthzlist[i])[3])
                v[freq]=v_num[freq]/v_denom[freq]
        return v
Example #14
0
                        i+=1
            fd=open(vdir_denom[freq]+'_FREQ','r')
                    dthzlist=self.getinfo(fd.readline())
            j=0
            denom_num=0
                    v_denom[freq]=1.0
                    while j<len(dthzlist):           
                        if abs(float(dthzlist[j]))>0.1: 
                v_denom[freq]=v_denom[freq]*float(dthzlist[j])
                denom_num+=1
                        j+=1
            if not num_num==denom_num+1: 
                        print 'WARNING: Numbers of non-zero frequencies at local minimum and at saddle point do not match! Please double-check the FREQ files of %s and %s'%(vdir_num[freq],vdir_denom[freq])

                else: # Reading data from OUTCAR files
                nthzlist = fileutil.grepme(vdir_num[freq]+'_OUTCAR', "2PiTHz")
                    num_num=len(nthzlist)
            dthzlist = fileutil.grepme(vdir_denom[freq]+'_OUTCAR', "2PiTHz")
                denom_num=len(dthzlist)
                im_num=0
                im_denom=0
                if denom_num==num_num:
                        for i in range(num_num):
                        if 'f/i' in dthzlist[i]: im_denom+=1
                            if 'f/i' in nthzlist[i]: im_num+=1
                        if not im_num==0: 
                            print 'WARNING: Imaginary frequency found in the local minimum! Please check the OUTCAR of %s!'%vdir_num[freq]
                        elif im_denom==0:
                            print 'WARNING: No imaginary frequency found in the saddle point! Please check the OUTCAR of %s!'%vdir_denom[freq]
                        elif im_denom>1:
                            print 'WARNING: More than 1 imaginary frequencies found in the saddle point! Please check the OUTCAR of %s!'%vdir_denom[freq]