".pyc" in formula or \
         ".txt" in formula or \
         "tmp" in formula or \
         "pickle" in formula:
     continue
 allcifs = os.listdir('%s/%s' % (jobdir, formula))
 for cif in allcifs:
     if ".cif" in cif: continue
     icsdno = cif[-6:]
     if not os.path.exists('%s/%s/icsd_%s' % (jobdir, formula, icsdno)):
         continue
     subdirs = os.listdir('%s/%s/icsd_%s' % (jobdir, formula, icsdno))
     E = []
     dirs = []
     for subdir in subdirs:
         a = vasp.Extract('%s/%s/icsd_%s/%s' %
                          (jobdir, formula, icsdno, subdir))
         if a.success:
             E.append(a.total_energy.magnitude)
             dirs.append(subdir)
             #print "%s/%s"%(icsdno,subdir), a.total_energy
 #    if len(E) > 0: print icsdno, min(E)
     if len(E) > 1:
         minidx = np.argsort(E)[0]
         minE = min(E)
         minEdir = dirs[minidx]
         E.pop(minidx)
         dirs.pop(minidx)
         if minEdir == "non-magnetic":
             if np.mean(
                     E
             ) - minE < 1:  # print the ones with energy difference smaller than 1 eV
from pylada.crystal import read

jobdir = os.getcwd()

allcifs = commands.getoutput("ls %s/cifs/*.cif" % (jobdir)).split('\n')
print "number of cif files", len(allcifs)

for cif in allcifs:
    icsdno = "icsd_" + cif[-10:-4]
    if not os.path.exists('%s/%s' % (jobdir, icsdno)):
        continue
    subdirs = os.listdir('%s/%s' % (jobdir, icsdno))
    E = []
    dirs = []
    for subdir in subdirs:
        a = vasp.Extract('%s/%s/%s' % (jobdir, icsdno, subdir))
        if a.success:
            E.append(a.total_energy.magnitude)
            dirs.append(subdir)
    if "non-magnetic" not in dirs: continue
    #            print "%6s/%20s"%(icsdno,subdir), a.total_energy
    #    print icsdno, len(E)
    if len(E) > 1:
        minidx = np.argsort(E)[0]
        minE = min(E)
        minEdir = dirs[minidx]
        E.pop(minidx)
        dirs.pop(minidx)
        if minEdir == "non-magnetic":
            if np.mean(E) - minE < 1 and np.std(
                    E
                    elif band_type == "conduction":
                        if np.all(eig[ix, iy, iz, iband] <= E_nghs):
                            Nb += 1
                            bminidx.append([ix, iy, iz, iband])
                            #print eig[ix,iy,iz,iband], min(E_nghs), max(E_nghs)
                    else:
                        XX
    return Nb, bminidx


#def get_effective_mass()

if __name__ == "__main__":

    dirname = sys.argv[1]
    calc = vasp.Extract(dirname)

    eigenvalues = calc.eigenvalues.magnitude
    fermi = calc.fermi_energy.magnitude
    nspin = calc.ispin
    nk = read_nk(dirname)
    fraction = 0.5
    n_neighbors = np.array([int(np.ceil(nk0 * fraction)) for nk0 in nk])

    # get vbm and cbm
    vbm = max([x for x in eigenvalues.flatten() if float(x) <= fermi])
    cbm = min([x for x in eigenvalues.flatten() if float(x) > fermi])
    gap = cbm - vbm
    print "fermi", fermi, vbm, cbm, gap
    print "nspin", nspin
    print "nk, number of neighbors", nk, n_neighbors