当前位置:首页|资讯|ChatGPT

从重测序到批量Indel引物设计,R与python结合--自动屏蔽SNP区域

作者:城宇城宇发布时间:2023-02-14

自从来到实验室,得到师兄流传下来的引物批量设计脚本后,就一直挂记于心。无奈当时python水平不好,实在看不太懂,故而一直念叨到了现在。其实我现在python水平也不咋地,因为相比于我熟悉的R来说,python实在太不顺手了。无论是从语言风格还是IDE风格上来说,我始终更喜欢R。其实如果R调用linux程序方便好用一点的话,我自己写的脚本恐怕早就出来了,但是无论我怎么调用system,system2,我还是调用不了primer3_core……

幸好,ChatGPT救我狗命。R的部分基本都是我写的,我只让ChatGPT给了一些优化改进。而python部分则基本都是ChatGPT给出的,当然,其中有很多互动和排错,可以说是我和ChatGPT的结晶。嘿嘿嘿,结晶,嘿嘿嘿,我们的结晶~

本文件还有一个优势便是可以结合检测到的SNP与小indel区域的位置,自动向primer传递设计引物时应该屏蔽的区域,增加引物结合准确性。

言归正传,重测序后检测snp和indel,会得到variation文件,格式如下:

现在,让我们开始吧!

设计思路的草稿:

#生成csv文件,包含chr,目标区域开始pos,目标长度,gap的cM位置,序列


#首先接受csv文件

#读取序列,

#根据gap得到目标区域,生成input_file。根据gap长度小于10,10到30,以及大于30,分别确定PRIMER_PRODUCT_SIZE_RANGE

#有没有办法得到exclude_region?

#得到结果,提取PRIMER_LEFT_0_SEQUENCE,PRIMER_RIGHT_0_SEQUENCE

#PRIMER_LEFT_0_TM,PRIMER_RIGHT_0_TM,

#PRIMER_PAIR_0_PRODUCT_SIZE

#生成新的csv文件,以单一序列得到的结果举例:

#第一行:chr,pos,产物长度,chr-cM的名字,Primer-F,DNA序列

#第二行:null,null,null,null,Primer-R,null

现在,对得到的variation进一步筛选

上面的代码对variation进行了筛选,得到了长度在一定范围内的Indel,并对其长度进行了度量。

上面的代码获得primer3_core的运行所需要的一些参数。当提取的seq中gap左右的序列长度小于25时,会在seq前面加上长度不够的字样,并且会提供ref_length(帮助判断gap是不是同一条DNA链的),方便后续自己判断是否需要合并gap来设计引物。

现在,让我们开始吧!

设计思路的草稿:

#生成csv文件,包含chr,目标区域开始pos,目标长度,gap的cM位置,序列


#首先接受csv文件

#读取序列,

#根据gap得到目标区域,生成input_file。根据gap长度小于10,10到30,以及大于30,分别确定PRIMER_PRODUCT_SIZE_RANGE

#有没有办法得到exclude_region?

#得到结果,提取PRIMER_LEFT_0_SEQUENCE,PRIMER_RIGHT_0_SEQUENCE

#PRIMER_LEFT_0_TM,PRIMER_RIGHT_0_TM,

#PRIMER_PAIR_0_PRODUCT_SIZE

#生成新的csv文件,以单一序列得到的结果举例:

#第一行:chr,pos,产物长度,chr-cM的名字,Primer-F,DNA序列

#第二行:null,null,null,null,Primer-R,null

现在,对得到的variation进一步筛选

上面的代码对variation进行了筛选,得到了长度在一定范围内的Indel,并对其长度进行了度量。

上面的代码获得primer3_core的运行所需要的一些参数。当提取的seq中gap左右的序列长度小于25时,会在seq前面加上长度不够的字样,并且会提供ref_length(帮助判断gap是不是同一条DNA链的),方便后续自己判断是否需要合并gap来设计引物。

上面的代码则检索给出的sequence中,存在variation的区域,并给出设计引物时应该屏蔽的区间

然后,编写一个函数将以上部分封装起来


以上,R语言的部分结束,下面是python的部分。

该部分我计划在linux环境中执行。命令格式为:python3 ./get_primer.py ../输入文件名.xlsx 输出文件名

primer3输入文件格式可以去官网查看,有相应需求的也可以自己更改。我这里设置只用返回一对引物即可。并对产物长度根据indel的长度进行了调整。

上面这个函数extract_primer_info会提取primer3输出文件中的信息。

最后,再加上:

这个python文件便完成了,然后便可以快乐地批量设计引物了。感谢ChatGPT,虽然还有很多可以改进之初,但确实帮助非常大。

最后再说一遍,命令格式为:python3 ./get_primer.py ../输入文件名.xlsx 输出文件名,是在linux环境中执行的。

把这段代码发出来也是因为有python部分ChatGPT有大量的参与,算是取之于民,用之于民吧~

大家觉得有用的话就投个币吧~


#2023.2.26更改了一些bug并重新上传


Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1