python - 将单个字母代码连同链编号一起转换为 3 个字母代码

标签 python function dictionary return biopython

我有一个包含单字母 AA 代码的字符串 ('GPHMAQGTLI')。我想转换成其各自的 3 字母代码,并以相同的顺序给出范围 (300-309) 中的编号。

我已经写了下面的但是因为'return'函数它只转换字符串的第一个字母

d = {'CYS': 'C', 'ASP': 'D', 'SER': 'S', 'GLN': 'Q', 'LYS': 'K',
    'ILE': 'I', 'PRO': 'P', 'THR': 'T', 'PHE': 'F', 'ASN': 'N', 
     'GLY': 'G', 'HIS': 'H', 'LEU': 'L', 'ARG': 'R', 'TRP': 'W', 
     'ALA': 'A', 'VAL':'V', 'GLU': 'E', 'TYR': 'Y', 'MET': 'M'}

def triple_aa(val, num):
    for key, value in d.items():
         if val == value:
             print(key, num)
     
    
def single_aa(x):
    for i in x:
        #print(i)
        return i
        
        

def chain_no(a,b):
    for i in range(a,b+1,1):
        #print(i)
        return i
        
    
    
A= single_aa('GPHMA')
B= chain_no(250,254)
triple_aa(A,B) 

预期输出如下,但我只得到“GLY250”

print((triple_aa(A,B)) 
GLY250
PRO251
HIS252
MET253

最佳答案

这是您可以执行的操作。首先翻转键,字典的值更容易搜索,然后循环遍历你的字母 AA 代码。

编辑

作为具有输入参数的函数:

def triple_aa(seq, dic, rng_start):   
    d_flip = {v:k for k,v in dic.items()}
    res = []
    for idx, char in enumerate(seq, rng_start):
        tmp = f"{d_flip.get(char, 'XXX')}{idx}"
        #print(tmp)
        res.append(tmp)
    return res

res = triple_aa('GPHMAQGTLI', d, 300)
print(res)

无功能:

d = {'CYS': 'C', 'ASP': 'D', 'SER': 'S', 'GLN': 'Q', 'LYS': 'K',
    'ILE': 'I', 'PRO': 'P', 'THR': 'T', 'PHE': 'F', 'ASN': 'N', 
     'GLY': 'G', 'HIS': 'H', 'LEU': 'L', 'ARG': 'R', 'TRP': 'W', 
     'ALA': 'A', 'VAL':'V', 'GLU': 'E', 'TYR': 'Y', 'MET': 'M'}
d_flip = {v:k for k,v in d.items()}

s = 'GPHMAQGTLI'

#res = [] # res if you want to access the combinations later
for idx, char in enumerate(s, 300):
    tmp = f"{d_flip.get(char, 'XXX')}{idx}" #if key can't be found 'XXX' as default value
    print(tmp)
    #res.append(tmp)
    
#print(res)

GLY300
PRO301
HIS302
MET303
ALA304
GLN305
GLY306
THR307
LEU308
ILE309

让我知道这是否适合你

关于python - 将单个字母代码连同链编号一起转换为 3 个字母代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72598009/

相关文章:

Python WebSocket 解码消息

python - 如何使用 selenium python 读取表数据?

python - 以编程方式创建函数

python - 添加到 dict 这是一个类的属性

python - 计算 Pandas 中每个 DataFrame 列中的部分匹配

python - 尝试使用 Pyinstaller 从 .py 脚本创建 .exe 时出现运行时错误

php - 将在自动加载的命名空间类文件中声明的函数创建为全局函数

r - 在 R 中手动构建函数

Python从具有重复键的列表创建嵌套字典

dictionary - KDB+如何更新嵌套字典?