import argparse, plotter
from pymatgen.io.cifio import CifParser
out_file = '/Users/dejacor/Documents/screening'
parser = argparse.ArgumentParser(
    description='convert zeolite unit cell from cif to xyz format')
parser.add_argument('-c', '--cifFile', help='zeolite pdb file name')
args = parser.parse_args()
cif_file = args.cifFile
cif = CifParser(cif_file)
struc = cif.get_structures(primitive=False)[0]

DATA = {}
for atom in range(len(struc)):
    xyz = struc[atom].as_dict()['xyz']
    element = struc[atom].as_dict()['label']
    if not element in DATA.keys():
        DATA[element] = [xyz]
    else:
        DATA[element].append(xyz)

# gotta correct data, for some reason they pull in my Si's as S's
corData = {}
for element in DATA.keys():
    if element == 'S':
        corData['Si'] = DATA['S']
    else:
        corData[element] = DATA[element]
name_of_zeo = list(cif.as_dict().keys())[0]
xyz_file = cif_file[:cif_file.rfind('/')] + '/%s.xyz' % name_of_zeo
plotter.xyz(xyz_file, corData)
from pymatgen.io.cifio import CifParser
import sys

if len(sys.argv) < 3:
  print "Usage:"
  print "{fn} <list-of-cifs>".format(fn=sys.argv[0])
  exit()

cifnames = sys.argv[1:]
outfn    = raw_input("Output datafile (default=struct.dat):")
if outfn == "": outfn = "struct.dat"
outlines = [' '.join(('cif','prop','val'))]
for cifname in cifnames:
  print cifname
  parser = CifParser(cifname)
  awkcif = parser.as_dict()
  if len(awkcif.keys()) > 1:
    print "More than one structure in this cif. Not implemented."
    exit()
  cifd   = awkcif[awkcif.keys()[0]]

  for latc in ['a','b','c']:
    key = '_cell_length_'+latc
    outlines += [' '.join((cifname,latc,cifd[key]))]

  for si,site in enumerate(cifd['_atom_site_label']):
    outlines+=[' '.join((cifname,
                         site.replace('1',''),
                         cifd['_atom_site_fract_z'][si]))]
  outlines+=[' '.join((cifname,'author',
    cifd['_publ_author_name'][0].split()[0].replace(',','')))]
Exemple #3
0
from pymatgen.io.cifio import CifParser
import sys

if len(sys.argv) < 3:
    print "Usage:"
    print "{fn} <list-of-cifs>".format(fn=sys.argv[0])
    exit()

cifnames = sys.argv[1:]
outfn = raw_input("Output datafile (default=struct.dat):")
if outfn == "": outfn = "struct.dat"
outlines = [' '.join(('cif', 'prop', 'val'))]
for cifname in cifnames:
    print cifname
    parser = CifParser(cifname)
    awkcif = parser.as_dict()
    if len(awkcif.keys()) > 1:
        print "More than one structure in this cif. Not implemented."
        exit()
    cifd = awkcif[awkcif.keys()[0]]

    for latc in ['a', 'b', 'c']:
        key = '_cell_length_' + latc
        outlines += [' '.join((cifname, latc, cifd[key]))]

    for si, site in enumerate(cifd['_atom_site_label']):
        outlines += [
            ' '.join(
                (cifname, site.replace('1',
                                       ''), cifd['_atom_site_fract_z'][si]))
        ]