【发布时间】:2020-12-10 17:13:24
【问题描述】:
嗨,
这里是python的新手。
我有超过 10,000 个表示肽序列的字符串。字符串中的每个字母都是一个氨基酸,我想在用预定义的浮点值(范围从 -1 到 -2)替换每个字母后计算字符串的“净总和”。
我被困在从哪里开始循环以使其工作?我有清理字符串的代码,以便删除非字母字符并替换为字典中定义的浮点值(即 W:2.10,G:-1.0)
我想代码是这样的。
我有 6 个数据框可以重复这个过程。
任何帮助将不胜感激!
更新的代码(感谢 SARAH MESSER)
def hydrophobicity_score(peptide):
hydro = {
'A': -0.5,
'C': -1.0,
'D': 3.0,
'E': 3.0,
'F': -2.5,
'G': 0.0,
'H': -0.5,
'I': -1.8,
'K': 3.0,
'L': -1.8,
'M': -1.3,
'N': 0.2,
'P': 0.0,
'Q': 0.2,
'R': 3.0,
'S': 0.3,
'T': -0.4,
'V': -1.5,
'W': -3.4,
'Y': -2.3,
}
hydro_score = [hydro.get(aa,0.0)for aa in peptide]
return sum(hydro_score)
og_pep['Hydro'] = og_pep['Peptide'].apply(hydrophobicity_score)
og_pep
【问题讨论】:
-
当您转换为浮点值时,这些值是否在列表中?它们是
float类型的吗? -
您能否提供输入的 sn-p(3-5 个元素)以及相应的所需输出是什么?也许还有你的数据框列的名称和 dtypes - 或者至少是这个转换中涉及的那些?
-
为什么你的循环不使用
peptide变量?但是,通常不需要编写循环来处理 Pandas 系列中的所有行。 -
你有字母与浮点数相关性的字典吗?
-
您应该有一个函数,该函数采用单个截断的肽序列并在对所有行执行此操作之前对该单个序列求和。你有吗?