def genfile_molden(self, filename): try: write_molden(filename, self._xcc, self._symbols, self._ccfreqs, self._ccFevecs) except: return 0 return 1
def gts_data_and_molden(gtsfile): # read gts and prepare Molecule molecule = Molecule() molecule.set_from_gts(gtsfile) molecule.setup() # type of PES stationary point? nimag = numimag(molecule._ccfreqs) mformu = molecule._mform # Get ctc and itc ctc, itc, ext = gtsfile.split("/")[-1].split(".") # tuple gts_tuple = (itc, molecule._ch, molecule._mtp, molecule._V0, nimag, mformu, molecule._pgroup) # molden file if not os.path.exists(PN.DIR5): os.mkdir(PN.DIR5) if is_string_valid(ctc, extra="_"): molden = PN.get_gtsmolden(ctc, itc) if not os.path.exists(molden): print " creating %s" % molden bmolden = True write_molden(molden,molecule._xcc,molecule._symbols,\ molecule._ccfreqs,molecule._ccFevecs) else: bmolden = False else: molden = None bmolden = False return ctc, gts_tuple, molden, bmolden
def molecule2molden(molecule, ctc, itc): # gn t name for molden file molden = PN.get_gtsmolden(ctc, itc) ## does molden file exist? #if os.path.exists(molden): return # create molden file idata = (molden, molecule._xcc, molecule._symbols, molecule._ccfreqs, molecule._ccFevecs) write_molden(*idata)
def generate_gts_file(esfile, gtsfile, read_method): ''' Generate gts file (and molden & frozen files) from given electronic structure (ES) file; The ES file is read using read_method ''' # Extra files that (maybe) will be generated file_frozen = gtsfile + ".frozen" # only if any frozen atom file_molden = gtsfile + ".molden" # molden file # read file xcc, atonums, ch, mtp, E, gcc, Fcc, masses, clevel = read_method( PN.UFOLDER + esfile)[0:9] # clevel is not really clevel when using read_gtsfile as read_method if read_method == read_gtsfile: clevel = "" # symbols and atonums symbols, atonums = fncs.symbols_and_atonums(atonums) # is masses available? if masses is None or len(masses) == 0 or sum(masses) == 0.0: masses = atonums2masses(atonums) # is Fcc available? if len(atonums) != 1 and (Fcc is None or len(Fcc) == 0): status = -1 cache = None molec = None else: # Generate Molecule instance molec = Molecule() molec.setvar(xcc=xcc, gcc=gcc, Fcc=Fcc) molec.setvar(atonums=atonums, masses=masses) molec.setvar(ch=ch, mtp=mtp, V0=E) molec.prepare() # Deal with frozen atoms [atom i is frozen if Fij=0 forall j) frozen_xcc, frozen_symbols = molec.remove_frozen() # Calculate point group (must be done after remove frozen) molec.calc_pgroup(force=True) # Deal with Hessian molec.setup() # write gts file molec.genfile_gts(PN.DIR1 + gtsfile, level=clevel) status = 1 # write frozen (if there are frozen atoms) RW.write_frozen(PN.DIR1 + file_frozen, frozen_xcc, frozen_symbols) # write molden file idata = (PN.DIR1 + file_molden, molec._xcc, molec._symbols, molec._ccfreqs, molec._ccFevecs) write_molden(*idata) # save to cache nimag = int(fncs.numimag(molec._ccfreqs)) pgroup = str(molec._pgroup) mform = str(molec._mform) cache = [esfile, gtsfile, E, ch, mtp, nimag, mform, pgroup] # delete variable, just in case del xcc, gcc, Fcc del symbols, atonums, masses del molec # return return status, cache