python - 如何为每个字符分配值并使用 python 或 awk 找到平均值?

标签 python awk bioinformatics biopython

我有一个包含蛋白质序列(200 个序列)的文本文件,如下所示。

>ptn1
AAGHM
>ptn2
MGLKKRR

我需要为序列的每个字符赋予以下值,并且必须找到每个序列的平均值。

A= 0.2, G= 0.5, L=0.14, M= 0.70, R= 0.55, C=0.48, H= 1.00 , K=0.4

期望的输出

ptn1  - 0.52
ptn2  - 0.462

如何使用 awk 或 python 执行此操作?

您的建议将不胜感激

最佳答案

def avg(sequence):
    v= {'A': 0.2, 'C': 0.48, 'R': 0.55, 'G': 0.5, 'H': 1.0,
        'K': 0.4, 'M': 0.7, 'L': 0.14}
    return sum(v[x] for x in sequence) / len(sequence)

avg("AAGHM")  # => 0.5199999999999999
avg("MGLKKRR" # => 0.46285714285714274

关于python - 如何为每个字符分配值并使用 python 或 awk 找到平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11607594/

相关文章:

python - 使用python请求登录网站

python - 如何从 pdb 文件中分别获取 X、Y 或 Z 坐标

perl - 为什么 Perl 在生物学研究中被如此广泛地使用?

php - 使用 Javascript 和 PHP 将数据从 NCBI 数据库传输到另一个站点

awk - 了解 AWK 命令中使用的 SUB

bioinformatics - 如何处理实现 Needleman-Wunsche 算法的多个最佳编辑路径?

python - 递归地从字符串中删除最后一个字符 - 最好的方法是什么?

python从文件读取写入到其他文件

linux - 使用 awk 的输出来运行命令

linux - 如何根据文件 2 中的某些数字范围使 awk 将文件 1 中的行与文件 2 中的行匹配