我有数以百万计的fasta格式的序列,希望提取CDR2 ( CDR1,CDR2和CDR3),.I只选择一个序列作为例子,尝试提取CDR1,但不能提取CDR1。
sequence:-'FYSHSAVTLDESGGGLQTPGGGLSLVCKASGFTFSSYGMMWVRQAPGKGLEYVAGIRNDA‘.
cdr1从:- 'VCKASGFTFS‘开始,最多有三个替换,但C必须排在第二位。cdr1的结尾是:-‘WVRQAP’,最多有两个替代者,但R必须排在第三位。
提取的cdr1应该是SYGMM
def cdr1_in(cdr_in): #VCKASGFTFS
pin=0
max_pin=3
if cdr[1]!='C':
pin+=1
if cdr[0]!='V':
pin+=1
if cdr[2]!='K':
pin+=1
if cdr[3]!='A':
pin+=1
if cdr[4]!='S':
pin+=1
if cdr[5]!='G':
pin+=1
if cdr[6]!='F':
pin+=1
if cdr[7]!='T':
pin+=1
if cdr[8]!='F':
pin+=1
if cdr[9]!='S':
pin+=1
if pin<max_pin:
print('CDR_in pattern', cdr_in)
# print('CDR_starts from', arr.index(cdr_in)+9)
return (arr.index(cdr_in)+9)
def cdr1_out(cdr_out):#WVRQAP
pin=0
max_pin=2
if cdr[1]!='V':
pin+=1
if cdr[0]!='W':
pin+=1
if cdr[2]!='R':
pin+=1
if cdr[3]!='Q':
pin+=1
if cdr[4]!='A':
pin+=1
if cdr[5]!='P':
pin+=1
if pin<max_pin:
# print('CDR_in pattern', cdr_out)
# print('CDR_ends at', arr.index(cdr_out))
return (arr.index(cdr_out))
K=10
arr=sequence
for i in range(len(arr)-k+1):
slider=arr[i:k+i]
print("CDR_1 is:", arr[cdr1_in(slider): cdr1_out(slider)]) 发布于 2022-04-23 17:51:55
我认为你是在分析免疫序列数据,而CDR指的是B或T细胞受体的互补决定区域,这是正确的吗?数据是人类的还是老鼠的?如果是这样的话,您可能想看看现有的工具,而不是重新发明轮子。我用过混和。另一个流行的工具是IMGT/HighV-任务,但AFAIK只能作为web应用程序使用,不能用于大型数据集。如果它们不符合您的目的,您至少可以得到关于如何进行的提示。
https://stackoverflow.com/questions/71850888
复制相似问题