生命科学

Perl语言统计核酸GC含量程序开发①

在生命科学领域中无论是设计引物还是分析高通量测序数据质量都非常关注核酸的GC含量[1]。这是因为在DNA双链中G碱基与C碱基是互补配对的,而且两个配对碱基之间有3个氢键连接(A碱基与T碱基之间是2个氢键连接)。所以GC含量的多少对于核酸稳定性来说是十分重要的一个因素,GC含量越高核酸的退火温度越高,核酸也越相对更稳定。在高通量数据质控中,GC含量也是非常重要的因素。通过检测GC含量可以判断测序仪测序是否测序足够随机,是否有其他DNA污染。但是,目前没有一个能够独立统计核酸GC含量的程序。虽然在Primer软件中有统计GC含量的插件,但是不可能把所有的序列都放入Primer中进行逐一统一序列的GC含量,高通量分析软件fastqc也有统计GC含量插件,但是该软件仅仅识别fq文件,对于fa文件则不识别。绝大多数时候我们所用的文件是fa(FASTA)文件。

Perl是一种稳定的跨平台编程语言,是报表提取和报告语言(Practical Extraction and Report Language)的缩写[2]。它适合用于处理字符串类型的数据。Perl语言是一种开源软件,根据GUN通用公共许可证(GPL)获得许可[3]。根据Perl语言的特点,可以设计相关程序完成对核酸序列的GC含量统计。由于DNA序列是由ATCG四种字符组成的字符串,RNA是由AUCG四种字符组成的字符串,所以它们也是一种字符串的数据。利用Perl语言设计程序统计GC含量是可行的。

1 分析方法

Perl语言中有专门的叫BioPerl的子程序可以进行核酸文件的读取。Bioperl可以安装在普通Windows系统上。统计GC含量的基本原则是C碱基和G碱基总共的数量占整条核酸序列碱基数量的百分比。对于核酸的GC含量分析首先需要对核酸字符串进行分割,拆分成一个一个碱基。拆分后的顺序也需要与原序列保持一致。然后使用遍历算法,逐一进行正则表达式匹配,如果匹配上C或者G就记录[4],否则不记录继续进行分析。具体代码为:

use Bio::SeqIO;#加载BioPerl子程序

my $input_mutiseq_file=$ARGV[0];#读取输入的核酸序列文件

my $Muti_seq=Bio::SeqIO->new(#利用BioPerl中的函数打开核酸序列文件

-file=>$input_mutiseq_file,

图1 不同核酸序列GC含量统计

-format=>'fasta',);

my @GC_count;#先定义GC含量的变量,数据格式为数组格式,可储存多条核酸GC含量

my$j=1;

while (my$seq=$Muti_seq->next_seq()){#使用遍历算法拆分读取碱基

my $id=$seq->id;

my $seq_seq=$seq->seq;

my $seq_length=length$seq_seq;

my @split_seq = split//,$seq_seq;

my $GC_count;

for (my$i=0;$i<@split_seq;$i=$i+1,){

if(@split_seq[$i]=~"G|C"){$GC_count=$GC_count+1}#使用正则表达式匹配C或G

else{$GC_count = $GC_count}};

$GC_count = $GC_count/$seq_length;

@GC_count[$j]=$id."\t"."GCcount=".$GC_count."\n";

$j=$j+1;};

print @GC_count;#输出结果

以不同HN分析的流感病毒的4号核酸片段为例,运行该程序得到不同流感病毒4号核酸片段的GC含量结果(见图1)。

2 结语

利用Perl语言开发统计核酸序列的GC含量,对于研究核酸稳定性、测序的随机性和判断测序是否有污染具有指导意义。缺陷,由于该脚本的正确运行需要计算机同时拥有Perl语言和BioPerl环境,而整个Perl语言及其环境配置相对繁琐。

[1]陈永孜.基因表达谱芯片及核酸测序技术在癌症研究中的应用现状[EB/OL].[2019-04-04].

[2]刘磊,朱敏.Perl&R在语料库语言学中的应用[J].软件导刊,2018,17(1):53-55.

[3]顾武雄.Linux代理程序安装[J].网络安全和信息化,2018(11):87.

[4]武明,孙垒,高磊,等.Perl脚本在试验数据解析中的应用[J].遥测遥控,2016,37(3):54-56.

在生命科学领域中无论是设计引物还是分析高通量测序数据质量都非常关注核酸的GC含量[1]。这是因为在DNA双链中G碱基与C碱基是互补配对的,而且两个配对碱基之间有3个氢键连接(A碱基与T碱基之间是2个氢键连接)。所以GC含量的多少对于核酸稳定性来说是十分重要的一个因素,GC含量越高核酸的退火温度越高,核酸也越相对更稳定。在高通量数据质控中,GC含量也是非常重要的因素。通过检测GC含量可以判断测序仪测序是否测序足够随机,是否有其他DNA污染。但是,目前没有一个能够独立统计核酸GC含量的程序。虽然在Primer软件中有统计GC含量的插件,但是不可能把所有的序列都放入Primer中进行逐一统一序列的GC含量,高通量分析软件fastqc也有统计GC含量插件,但是该软件仅仅识别fq文件,对于fa文件则不识别。绝大多数时候我们所用的文件是fa(FASTA)文件。Perl是一种稳定的跨平台编程语言,是报表提取和报告语言(Practical Extraction and Report Language)的缩写[2]。它适合用于处理字符串类型的数据。Perl语言是一种开源软件,根据GUN通用公共许可证(GPL)获得许可[3]。根据Perl语言的特点,可以设计相关程序完成对核酸序列的GC含量统计。由于DNA序列是由ATCG四种字符组成的字符串,RNA是由AUCG四种字符组成的字符串,所以它们也是一种字符串的数据。利用Perl语言设计程序统计GC含量是可行的。1 分析方法Perl语言中有专门的叫BioPerl的子程序可以进行核酸文件的读取。Bioperl可以安装在普通Windows系统上。统计GC含量的基本原则是C碱基和G碱基总共的数量占整条核酸序列碱基数量的百分比。对于核酸的GC含量分析首先需要对核酸字符串进行分割,拆分成一个一个碱基。拆分后的顺序也需要与原序列保持一致。然后使用遍历算法,逐一进行正则表达式匹配,如果匹配上C或者G就记录[4],否则不记录继续进行分析。具体代码为:use Bio::SeqIO;#加载BioPerl子程序my $input_mutiseq_file=$ARGV[0];#读取输入的核酸序列文件my $Muti_seq=Bio::SeqIO->new(#利用BioPerl中的函数打开核酸序列文件-file=>$input_mutiseq_file,图1 不同核酸序列GC含量统计-format=>'fasta',);my @GC_count;#先定义GC含量的变量,数据格式为数组格式,可储存多条核酸GC含量my$j=1;while (my$seq=$Muti_seq->next_seq()){#使用遍历算法拆分读取碱基my $id=$seq->id;my $seq_seq=$seq->seq;my $seq_length=length$seq_seq;my @split_seq = split//,$seq_seq;my $GC_count;for (my$i=0;$i<@split_seq;$i=$i+1,){if(@split_seq[$i]=~"G|C"){$GC_count=$GC_count+1}#使用正则表达式匹配C或Gelse{$GC_count = $GC_count}};$GC_count = $GC_count/$seq_length;@GC_count[$j]=$id."\t"."GCcount=".$GC_count."\n";$j=$j+1;};print @GC_count;#输出结果以不同HN分析的流感病毒的4号核酸片段为例,运行该程序得到不同流感病毒4号核酸片段的GC含量结果(见图1)。2 结语利用Perl语言开发统计核酸序列的GC含量,对于研究核酸稳定性、测序的随机性和判断测序是否有污染具有指导意义。缺陷,由于该脚本的正确运行需要计算机同时拥有Perl语言和BioPerl环境,而整个Perl语言及其环境配置相对繁琐。参考文献[1]陈永孜.基因表达谱芯片及核酸测序技术在癌症研究中的应用现状[EB/OL].[2019-04-04].[2]刘磊,朱敏.Perl&R在语料库语言学中的应用[J].软件导刊,2018,17(1):53-55.[3]顾武雄.Linux代理程序安装[J].网络安全和信息化,2018(11):87.[4]武明,孙垒,高磊,等.Perl脚本在试验数据解析中的应用[J].遥测遥控,2016,37(3):54-56.

上一篇:同济大学发现cGAS酶有致癌风险
下一篇:没有了