欢迎光临散文网 会员登陆 & 注册

二代测序数据根据barcode分组

2023-08-23 19:00 作者:尔云间  | 我要投稿

当我们拿到的二代测序数据的数据量非常庞大时,我们怎么对其进行分组呢,今天小云来带你探索其中的奥妙。

二代测序数据经过fastp软件筛选之后我们就得到了成千上万条如图所示的序列,每组序列我们都在它的前端添加相同的barcode如图中红色标记所示,这样我们就可以用遍历的方式将相同组的序列放在一起。

因为双端测序存在反向互补的问题,所以首先我们先定义一个反向互补的函数。

#互补函数

def complement(sequence):

    sequence = sequence.upper()

    sequence = sequence.replace('A', 't')

    sequence = sequence.replace('T', 'a')

    sequence = sequence.replace('C', 'g')

    sequence = sequence.replace('G', 'c')

    return sequence.upper()

#反向函数

def reverse(sequence):

    sequence = sequence.upper()

    return sequence[::-1]

#反向互补函数

def complement_reverse(sequence):

return complement(reverse(sequence))

 

函数编写完成后,我们就可以将barcode放入函数中,就可以输出反向互补的序列啦。

print(complement_reverse('CCATCAATGCC') ,complement_reverse('CGATGGCGATA'),complement_reverse('ACACAAGCACC'),complement_reverse('CCGTTTCGACG'),complement_reverse('GGAAGTAGACC'))

 

接下来就是分组根据barcode分组啦。

rf = open("./输出文件.fq") #改成自己二代测序的fq文件

A1= open("./1_A1.txt",'w')#创建txt文件写入不同组数据

A2= open("./1_A2.txt",'w')

A3= open("./1_A3.txt",'w')

A4= open("./1_A4.txt",'w')

A5= open("./1_A5.txt",'w')

i=0

for line in rf:  #遍历二代测序数据

    line = line.strip()

    if ('CCATCAATGCC' in line):#若序列存在CCATCAATGCC,则写入A1文件中

        A1.write(line)

        A1.write('\n')

    elif ('GGCATTGATGG'in line):

        A1.write(complement_reverse(line))

        A1.write('\n')

 

    elif ('CGATGGCGATA' in  line):

        A2.write(line)

        A2.write('\n')

    elif ('TATCGCCATCG' in line):

        A2.write(complement_reverse(line))

        A2.write('\n')

 

    elif ('ACACAAGCACC' in  line):

        A3.write(line)

        A3.write('\n')

    elif ('GGTGCTTGTGT' in  line):

        A3.write(complement_reverse(line))

        A3.write('\n')

 

    elif ('CCGTTTCGACG' in  line):

        A4.write(line)

        A4.write('\n')

    elif ('CGTCGAAACGG' in  line):

        A4.write(complement_reverse(line))

        A4.write('\n')

        

    elif ('GGAAGTAGACC' in  line):

        A5.write(line)

        A5.write('\n')

    elif ('GGTCTACTTCC' in  line):

        A5.write(complement_reverse(line))

        A5.write('\n')

 

    i+=1

#     if i >10000:

#         break

    if (i%10000000 ==0): #查看代码进度

        print(i)

rf.close() #关闭文件

 

最后我们就得到不同的txt文件,分组也就完成啦。

好了,今天小云的分享就到这里啦,小伙伴们有什么问题欢迎来讨论分享


二代测序数据根据barcode分组的评论 (共 条)

分享到微博请遵守国家法律