Perl 使用.fasta文件计算序列的相对内容
因此,我作为“noob”,最近才被介绍通过Perl编程,我仍然习惯于所有这些。我有一个.fasta文件,我必须使用它,尽管我不确定我是否能够打开它,或者说我是否必须“盲目地”使用它 总之,我的文件包含了三个基因的DNA序列,是用这个.fasta格式写的 显然是这样的:Perl 使用.fasta文件计算序列的相对内容,perl,sequence,frequency,fasta,Perl,Sequence,Frequency,Fasta,因此,我作为“noob”,最近才被介绍通过Perl编程,我仍然习惯于所有这些。我有一个.fasta文件,我必须使用它,尽管我不确定我是否能够打开它,或者说我是否必须“盲目地”使用它 总之,我的文件包含了三个基因的DNA序列,是用这个.fasta格式写的 显然是这样的: >label sequence >label sequence >label sequence 我的目标是写一个脚本来打开和读取这个文件,我现在已经掌握了窍门,但是我必须读取每个序列,计算每个序列中“G”和“C
>label
sequence
>label
sequence
>label
sequence
我的目标是写一个脚本来打开和读取这个文件,我现在已经掌握了窍门,但是我必须读取每个序列,计算每个序列中“G”和“C”的相对数量,然后我要将它写入一个以制表符分隔的文件——基因的名称,以及它们各自的“G”和“C”内容
有人能提供一些指导吗?我不确定什么是制表符分隔的文件,我仍在试图找出如何打开.fasta文件以实际查看内容。到目前为止,我使用的是.txt文件,可以轻松打开,但不能打开.fasta
我为听起来完全困惑而道歉。我很感激你的耐心。我可不像你们这些职业选手 我明白这很让人困惑,但你真的应该试着把你的问题限制在一个具体的问题上,明白吗 我不知道“.fasta”文件或“G”和“C”是什么。。但这可能并不重要 一般来说:
- 打开输入文件
- 读取和解析数据。如果它的格式很奇怪,您无法解析,那么可以继续寻找一个模块来读取它。如果你幸运的话,有人已经帮你完成了困难的部分
- 计算你想计算的东西
- 打印到屏幕(标准输出)或其他文件
“制表符分隔符”文件是一个包含列的文件(想想Excel),其中每列由制表符(“\t”)字符分隔。正如谷歌或stackoverflow搜索所告诉你的那样 这里是一种使用“awk”实用程序的方法,可以从命令行使用。通过指定其路径并使用
awk-f
#NR>1 means only look at lines above 1 because you said the sequence starts on line 2
NR>1{
#this for-loop goes through all bases in the line and then performs operations below:
for (i=1;i<=length;i++)
#for each position encountered, the variable "total" is increased by 1 for total bases
total++
}
{
for (i=1;i<=length;i++)
#if the "substring" i.e. position in a line == c or g upper or lower (some bases are
#lowercase in some fasta files), it will carry out the following instructions:
if(substr($0,i,1)=="c" || substr($0,i,1)=="C")
#this increments the c count by one for every c or C encountered, the next if statement does
#the same thing for g and G:
c++; else
if(substr($0,i,1)=="g" || substr($0,i,1)=="G")
g++
}
END{
#this "END-block" prints the gene name and C, G content in percentage, separated by tabs
print "Gene name\tG content:\t"(100*g/total)"%\tC content:\t"(100*c/total)"%"
}
#NR>1表示只查看1以上的行,因为您说过序列从第2行开始
NR>1{
#该for循环通过线路中的所有基座,然后执行以下操作:
对于(i=1;ifasta文件包含DNA(通常)序列。DNA序列使用4个字母A、C、T和G进行编码。在Perl中,用于处理生物数据的go-to库称为BioPerl: