我正在處理.fasta文件的頭文件(這是一個普遍用於遺傳學/生物信息學以存儲DNA/RNA序列數據)。 Fasta文件的頭部以>符號開頭(給出特定的信息),後面跟着頭部描述的下一行的實際序列數據。序列數據無限期延伸,直到下一個標題及其相應序列之後的下一個\ n。例如:簡化列表/數組的元素,然後向它們添加增量標識符a,b,c,d ....等
>scaffold1.1_size947603
ACGCTCGATCGTACCAGACTCAGCATGCATGACTGCATGCATGCATGCATCATCTGACTGATG....
>scaffold2.1_size747567.2.603063_605944
AGCTCTGATCGTCGAAATGCGCGCTCGCTAGCTCGATCGATCGATCGATCGACTCAGACCTCA....
等等...
所以,我與基因組與我一起工作的有機體的FASTA頭一個問題。不幸的是,解決這個問題所需的perl專業知識似乎超出了我目前的技能水平:S所以我希望有人能在這裏向我展示如何做到這一點。
我的基因組由大約25000個fasta頭文件和它們各自的序列組成,它們當前狀態下的頭文件給我帶來很多麻煩,我嘗試使用序列校準器,所以我必須將它們顯着簡化。這是我的第幾個頭的一個例子:
>scaffold1.1_size947603
>scaffold10.1_size550551
>scaffold100.1_size305125:1-38034
>scaffold100.1_size305125:38147-38987
>scaffold100.1_size305125:38995-44965
>scaffold100.1_size305125:76102-78738
>scaffold100.1_size305125:84171-87568
>scaffold100.1_size305125:87574-89457
>scaffold100.1_size305125:90495-305068
>scaffold1000.1_size94939
基本上我想提煉這些看起來像這樣:
>scaffold1.1a
>scaffold10.1a
>scaffold100.1a
>scaffold100.1b
>scaffold100.1c
>scaffold100.1d
>scaffold100.1e
>scaffold100.1f
>scaffold100.1g
>scaffold1000.1a
或者甚至這個(不過這似乎將是更加複雜):
>scaffold1.1
>scaffold10.1
>scaffold100.1a
>scaffold100.1b
>scaffold100.1c
>scaffold100.1d
>scaffold100.1e
>scaffold100.1f
>scaffold100.1g
>scaffold1000.1
我在這裏做的是擺脫基因組的每個腳手架的所有大小數據。對於偶發碎片的支架,我想用a,b,c,d等表示它們。有幾個支架有26個以上的碎片,所以我可以用x,y,z,A, B,C,d ....等。
我在想這樣做一個簡單的替換與此類似foreach循環:
#!/usr/bin/perl -w
### Open the files
$gen = './Hc_genome/haemonchus_V1.fa';
open(FASTAFILE, $gen);
@lines = <FASTAFILE>;
#print @lines;
###Add an @ symbol to the start of the label
my @refined;
foreach my $lines (@lines){
chomp $lines;
$lines =~ s/match everything after .1/replace it with a, b, c.. etc/g;
push @refined, $lines;
}
#print @refined;
###Push the array on to a new fasta file
open FILE3, "> ./Hc_genome/modded_haemonchus_V1.fa" or die "Cannot open output.txt: $!";
foreach (@refined)
{
print FILE3 "$_\n"; # Print each entry in our array to the file
}
close FILE3;
但我不知道要建在在匹配和替換運算符中添加$ 1和\ n之間的字母標籤添加。基本上,因爲我不知道如何依次通過字母表爲每個特定腳手架的片段(我可以管理的是在每個腳手架的開始處添加一個...)
請如果您不要不介意,讓我知道我可以做到這一點!
非常感謝!
安德魯
http://bioperl.org/wiki/Main_Page – toolic