gpt4 book ai didi

python - 如何使用 Python 创建化学计量矩阵

转载 作者:行者123 更新时间:2023-12-01 09:31:48 34 4
gpt4 key购买 nike

我是 Python 和 Pandas 的新手,所以如果有人能在这件事上帮助我,我会非常高兴。我的问题如下:

如果我有一个 .txt 文件,其中包含一组 react 字符串(R1、R2...)。每个 react 都有化合物(A、B、C、D...)及其各自的化学计量系数(1、2、3...),例如:

R1: A + 2B + C <=> D

R2: A + B <=> C

如何在Python中以化学计量矩阵的格式创建数据框(化合物作为行X react 作为列),如下所示:

  R1 R2
A -1 -1
B -2 -1
C -1 1
D 1 0

观察结果:方程左侧的化合物应具有负化学计量值,而右侧的化合物应具有正化学计量值

谢谢=D

最佳答案

试试这个:

import pandas as pd
import re # regular expressions

def coeff_comp(s):
# Separate stoichiometric coefficient and compound
result = re.search('(?P<coeff>\d*)(?P<comp>.*)', s)
coeff = result.group('coeff')
comp = result.group('comp')
if not coeff:
coeff = '1' # coefficient=1 if it is missing
return comp, int(coeff)

equations = ['R1: A + 2B + C <=> D', 'R2: A + B <=> C'] # some test data
reactions_dict = {} # results dictionary

for equation in equations:
compounds = {} # dict -> compound: coeff
eq = equation.replace(' ', '')
r_id, reaction = eq.split(':') # separate id from chem reaction
lhs, rhs = reaction.split('<=>') # split left and right hand side
reagents = lhs.split('+') # get list of reagents
products = rhs.split('+') # get list of products
for reagent in reagents:
comp, coeff = coeff_comp(reagent)
compounds[comp] = - coeff # negative on lhs
for product in products:
comp, coeff = coeff_comp(product)
compounds[comp] = coeff # positive on rhs
reactions_dict[r_id] = compounds

# insert dict into DataFrame, replace NaN with 0, let values be int
df = pd.DataFrame(reactions_dict).fillna(value=0).astype(int)

输出看起来像

   R1  R2
A -1 -1
B -2 -1
C -1 1
D 1 0

关于python - 如何使用 Python 创建化学计量矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49896768/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com