当前位置: 首页>>代码示例>>Python>>正文


Python Species.generateResonanceIsomers方法代码示例

本文整理汇总了Python中species.Species.generateResonanceIsomers方法的典型用法代码示例。如果您正苦于以下问题:Python Species.generateResonanceIsomers方法的具体用法?Python Species.generateResonanceIsomers怎么用?Python Species.generateResonanceIsomers使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在species.Species的用法示例。


在下文中一共展示了Species.generateResonanceIsomers方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: loadChemkinFile

# 需要导入模块: from species import Species [as 别名]
# 或者: from species.Species import generateResonanceIsomers [as 别名]
def loadChemkinFile(path, dictionaryPath=None):
    """
    Load a Chemkin input file to `path` on disk, returning lists of the species
    and reactions in the Chemkin file.
    """
    
    speciesList = []; speciesDict = {}
    reactionList = []

    # If the dictionary path is given, the read it and generate Molecule objects
    # You need to append an additional adjacency list for nonreactive species, such
    # as N2, or else the species objects will not store any structures for the final
    # HTML output.
    if dictionaryPath:
        with open(dictionaryPath, 'r') as f:
            adjlist = ''
            for line in f:
                if line.strip() == '' and adjlist.strip() != '':
                    # Finish this adjacency list
                    species = Species().fromAdjacencyList(adjlist)
                    species.generateResonanceIsomers()
                    speciesDict[species.label] = species
                    adjlist = ''
                else:
                    if "InChI" in line:
                        line = line.split()[0] + '\n'
                    if '//' in line:
                        index = line.index('//')
                        line = line[0:index]
                    adjlist += line
    
    def removeCommentFromLine(line):
        if '!' in line:
            index = line.index('!')
            comment = line[index+1:-1]
            line = line[0:index] + '\n'
            return line, comment
        else:
            comment = ''
            return line, comment

    def checkDuplicateKinetics(reaction, kinetics,comments,dupReactionList,reactionList):
        if 'DUP' in kinetics:
            kinetics = kinetics.replace('\nDUP','')
            reaction = readKineticsEntry(kinetics,speciesDict,energyUnits,moleculeUnits)
            reaction.kinetics.comment = comments
            if dupReactionList:
                if not reaction.hasTemplate(dupReactionList[-1].reactants,dupReactionList[-1].products):
                    # It's not the same kind of duplicate reaction
                    oldReactionKinetics = MultiKinetics()
                    for item in dupReactionList:
                        oldReactionKinetics.kineticsList.append(item.kinetics)
                    oldReaction = dupReactionList[0]
                    oldReaction.kinetics = oldReactionKinetics
                    reactionList.append(oldReaction)
                    dupReactionList = []
            dupReactionList.append(reaction)
            kinetics = ''
            comments = ''
            return reaction, kinetics, comments, dupReactionList, reactionList

        else:
            # No more duplicate reactions
            if dupReactionList:
                # add previous reaction if they were duplicate reactions
                oldReactionKinetics = MultiKinetics()
                for item in dupReactionList:
                    oldReactionKinetics.kineticsList.append(item.kinetics)
                oldReaction = dupReactionList[0]
                oldReaction.kinetics = oldReactionKinetics
                reactionList.append(oldReaction)
                dupReactionList = []
            # add this new, nonduplicate reaction
            reaction = readKineticsEntry(kinetics,speciesDict,energyUnits,moleculeUnits)
            reaction.kinetics.comment = comments
            reactionList.append(reaction)
            kinetics = ''
            comments = ''
            return reaction, kinetics, comments, dupReactionList, reactionList

    with open(path, 'r') as f:
    
        line = f.readline()
        while line != '':        
            line = removeCommentFromLine(line)[0]
            line = line.strip()
            tokens = line.split()
            
            if 'SPECIES' in line:
                # List of species identifiers
                index = tokens.index('SPECIES')
                tokens = tokens[index+1:]
                while 'END' not in tokens:
                    line = f.readline()
                    line = removeCommentFromLine(line)[0]
                    line = line.strip()
                    tokens.extend(line.split())
                
                for token in tokens:
                    if token == 'END':
#.........这里部分代码省略.........
开发者ID:sean-v8,项目名称:RMG-Py,代码行数:103,代码来源:chemkin.py


注:本文中的species.Species.generateResonanceIsomers方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。