def homolumoenergy(f):
    f = path.splitext(f)[0]+".err";
    with open(f,'r') as file:
        lines  = file.readlines();
        try:
            eline = [i for i in range(len(lines)) if lines[i].startswith("Energies")][-1];
        except IndexError:
            return (0,0,0);
        
        energies = split(lines[eline+1],' ');
        tup = lines[eline-1].split('= ')[1];
#        print >> stderr, tup;
        (T,degeneracy,numberElectrons) = sscanf(tup,"(%f,%d,%f)");

        N = int(ceil(numberElectrons)-1)/degeneracy;
        return (float(energies[N])*Hartrees,
                float(energies[N+1])*Hartrees,
                numberElectrons);
def ATK_energy(l):
    [energy] = sscanf(l,"| Total energy = %f eV");
    return energy;
def gaussian_unconverged_energy(l):
    [iteration,energy] = sscanf(l,"Matrix for removal %d Erem= %f");
    return energy;
def qscf_energy(l):
    [energy] = sscanf(l,"Total potential energy  = %f eV");
    return energy;
    except OSError: 
        pass;

inputfiles = [];
jobids     = [];

with open(log,'r') as f:
    lines = f.readlines();
    splitpoints = [i for i in range(len(lines))
                   if lines[i].startswith("Calculating ")];
    splitpoints.append(len(lines));
    
    for k in range(len(splitpoints)-1):
        [i,j] = splitpoints[k:k+2];
        
        (jobid) = sscanf(lines[i],"Calculating %s")[0];
        (jobid,inputfile) = jobid.split("/");
        inputfiles.append(inputfile);
        jobids.append(jobid);
        
        mkdir_p(prefix+"/"+jobid);

        outputs = lines[i:j+1];
        print (jobid,inputfile);

        with open(prefix+"/"+jobid+"/"+inputfile+".out",'w') as g:
            g.writelines(outputs);

with open(os.path.splitext(log)[0]+".err",'r') as f:
    lines = f.readlines();
    splitpoints = [i for i in range(len(lines))