[英]Retrieve the coding amino-acid when there is certain pattern in a DNA sequence
當DNA序列中存在某些模式時,我想檢索編碼的氨基酸。 例如,模式可以是:ATAGTA。 因此,當具有:
輸入文件:
>sequence1
ATGGCGCATAGTAATGC
>sequence2
ATGATAGTAATGCGCGC
理想的輸出將是一個表格,其中每個氨基酸的次數由模式編碼。 在此,序列1中的模式僅編碼一種氨基酸,而序列2中的模式編碼兩種氨基酸。 我希望這個工具可以擴展到數千個序列。 我一直在考慮如何完成這項工作,但我只想:替換所有不同於模式的核苷酸,翻譯剩下的並獲得編碼氨基酸的摘要。
請讓我知道是否可以使用現有工具執行此任務。
謝謝你的幫助。 一切順利,貝爾納多
編輯(由於我的帖子引起混亂):
請忘記原始帖子以及sequence1和sequence2。
大家好,對於造成的混亂,我們深表歉意。 輸入的fasta文件是使用'FeatureExtract'工具( http://www.cbs.dtu.dk/services/FeatureExtract/download.php )源自GenBank文件的* .ffn文件,因此可以想象它們已經在幀(+1),無需在與+1不同的幀中編碼氨基酸。
我想知道以下序列編碼的氨基酸:
AGAGAG
GAGAGA
CTCTCT
TCTCTC
我想獲得編碼氨基酸的唯一字符串是三個AG,GA,CT或TC的重復,分別是(AG)3,(GA)3,(CT)3和(TC)3。 我不希望該程序檢索四個或四個以上重復序列的編碼氨基酸。
再次感謝,貝爾納多
這是至少應該使您入門的一些代碼。 例如,您可以像這樣運行:
./retrieve_coding_aa.pl file.fa ATAGTA
內容retrieve_coding_aa.pl
:
#!/usr/bin/perl
use strict;
use warnings;
use File::Basename;
use Bio::SeqIO;
use Bio::Tools::CodonTable;
use Data::Dumper;
my $pattern = $ARGV[1];
my $fasta = Bio::SeqIO->new ( -file => $ARGV[0], -format => 'fasta');
while (my $seq = $fasta->next_seq ) {
my $pos = 0;
my %counts;
for (split /($pattern)/ => $seq->seq) {
if ($_ eq $pattern) {
my $dist = $pos % 3;
unless ($dist == 0) {
my $num = 3 - $dist;
s/.{$num}//;
chop until length () % 3 == 0;
}
my $table = Bio::Tools::CodonTable->new();
$counts{$_}++ for split (//, $table->translate($_));
}
$pos += length;
}
print $seq->display_id() . ":\n";
map {
print "$_ => $counts{$_}\n"
}
sort {
$counts{$a} <=> $counts{$b}
}
keys %counts;
print "\n";
}
以下是使用示例輸入的結果:
sequence1:
S => 1
sequence2:
V => 1
I => 1
Bio::Tools::CodonTable
類還支持非標准密碼子使用表。 您可以使用id
指針更改表。 例如:
$table = Bio::Tools::CodonTable->new( -id => 5 );
要么:
$table->id(5);
有關更多信息,包括如何檢查這些表的信息,請參見此處的文檔: http : //metacpan.org/pod/Bio :: Tools :: CodonTable
我會堅持使用您想要的第一個版本,因為附錄只會使我更加困惑。 (幀?)我僅在sequence2中發現一次ATAGTA,但我假設您也想要鏡像/反向序列,在這種情況下為ATGATA。 好吧,我的腳本沒有執行此操作,因此您必須將其在input_sequences文件中寫入兩次,但這應該沒問題。
我使用像您一樣的文件“ dna.txt”和一個輸入序列文件“ input_seq.txt”。 結果文件列出了模式及其在dna.txt文件中的出現(包括重疊結果,但可以將其設置為非重疊,如awk中所述)。
input_seq.txt:
GC
ATA
ATAGTA
ATGATA
dna.txt:
>sequence1
ATGGCGCATAGTAATGC
>sequence2
ATGATAGTAATGCGCGC
RESULTS.TXT:
GC,6
ATA,2
ATAGTA,2
ATGATA,1
代碼是awk調用另一個awk(但是其中一個很簡單)。 您必須運行“ ./match_patterns.awk input_seq.txt”才能生成結果文件。
* match_patterns.awk:*
#! /bin/awk -f
{return_value= system("awk -vsubval="$1" -f test.awk dna.txt")}
test.awk:
#! /bin/awk -f
{string=$0
do
{
where = match(string, subval)
# code is for overlapping matches (i.e ATA matches twice in ATATAC)
# for non-overlapping replace +1 by +RLENGTH in following line
if (RSTART!=0){count++; string=substr(string,RSTART+1)}
}
while (RSTART != 0)
}
END{print subval","count >> "results.txt"}
文件必須全部在同一目錄中。
祝好運!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.