Perl 添加一个与蛋白质结构域位置的密码子对应的新列

Perl 添加一个与蛋白质结构域位置的密码子对应的新列,perl,sequence,Perl,Sequence,我有两个包含数千种蛋白质的文件:(1)文件:蛋白质ID+氨基酸序列;(2) 文件:蛋白质ID+核苷酸序列。我的第三个文件是一个关于(这些蛋白质)结构域位置的文件,这些结构域与我的氨基酸序列和核苷酸序列文件有关。我将这三个文件与以下代码关联: acids.txt文件包含: Q9ULW3; 46 142 ENST0000274849 | Q9ULW3 我方认为,本协议适用于风险管理、风险管理、风险管理和风险管理等领域* nucleotides.txt文件包含: Q9ULW3; 46

我有两个包含数千种蛋白质的文件:(1)文件:蛋白质ID+氨基酸序列;(2) 文件:蛋白质ID+核苷酸序列。我的第三个文件是一个关于(这些蛋白质)结构域位置的文件,这些结构域与我的氨基酸序列和核苷酸序列文件有关。我将这三个文件与以下代码关联:

acids.txt文件包含:

 Q9ULW3;    46 142
ENST0000274849 | Q9ULW3 我方认为,本协议适用于风险管理、风险管理、风险管理和风险管理等领域*

nucleotides.txt文件包含:

 Q9ULW3;    46 142
ENST0000274849 | Q9ULW3 ATGGAGGCAGAGAGGATCGGAGAGAGGCAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGTACACCAAGGACTACACACCCGAGGATGGATGGATGGATCCGTGACCAGGCATGCCAAGCCGCGCTACCACACACACGCATGGGTGCCCGCGCAGGCGCAGCCCCTTCCGTTAGTGATCAGTACTTGCACCCGTTTCAGTCAGCTCCCAGCAGCCAGCTCGAGCCAGGCGCGCGCTTAGGCAGGCAGGCGCAGGCGCAGAGGCTCATTCAGTCATTCAGTCATTCAGTCATTCAGTCAGTCAGGTCAGCGCAGGCGCGCGCGCAGGCGCGCGCGCGCAGAGGCGCTCATTCATTCTCAGTCATTCATTCTCAGTCAGTCAGTCATTCTCAGTCAGTCATTCAGTCAGTCAGTCAGTCAGTCATTCGACCCTGCTCGCCCAGATGGCTCCTGGATCATTGCCAGAGCGTCTCTACTGAGCAGCGGACTG AGGCCCAGGCGCGCGGGACGTGAGAGCGAGAGAGCGGCGCGCGCGCGCGCGCGCGGCAAGAGAGAGAGAGAGGCGCGCGCGCGCGCAGATGGAGCCAGGCGCGCGCGCGCAGAGAGGCAGGCGCGCGCGCAGAGAGAGGCGCGCGCGCGCGCAGAGAGAGAGGCGCGCGCGCAGAGAGAGAGAGGCGCGCGCGCGCTCAGAGAGAGAGGCGCGCGCGCGCTGAGAGAGAGGC

domain.txt文件包含:

 Q9ULW3;    46 142
注意:这些数字表示我的序列中的位置域

脚本:

use strict;
use Bio::SeqIO;
####################################################
#MODULE 1: read protein file, and save it in a hash#
####################################################
my %hash1;
my $sequence = "acid.txt";
my $multifasta = Bio::SeqIO ->new (-file => "<$sequence",-format=> "fasta");
while (my $seq= $multifasta->next_seq()) {
my $na= $seq->display_id;   #Saves the ID in $na
my $ss = $seq->seq; 
$hash1{$na} = $ss;  
}
#############################################################
#MODULE 2: read nucleotide file, and save it in another hash#
#############################################################
my %hash2;
my $genes = "nucleotides.txt";
my $multifasta = Bio::SeqIO ->new (-file => "<$genes",-format=> "fasta");
while (my $seq= $multifasta->next_seq()) {
my $na= $seq->display_id;   #Saves the ID in $na
my $des=$seq->description;
my $ss = $seq->seq; 
$hash2{$na} = $ss;  
}
#####################
#MODULE 3: my $name;#
#####################
my $name;               # Read from standard input
chomp $name;
##############################################################################
#MODULE 4: DOMAIN ANNOTATION + RELATED AMINO ACIDS AND NUCLEOTIDES IN COLUMNS#
##############################################################################
foreach my $name (keys %hash1) {
my $ac = (split(/\s*\|/, $name))[1];
#print "$ac\n" ; 
####################################################
#MODULE 4.1: DOMAIN ANNOTATION: POSITION OF DOMAINS#
####################################################
open(FILE, "<" ,"domain.txt");
my @array = (<FILE>);
my @lines = grep (/$ac/, @array);
print for @lines;
close (FILE);
############################################################
#MODULE 4.2: RELATED AMINO ACIDS AND NUCLEOTIDES IN COLUMNS#
############################################################
my @array1 = split(//, $hash1{$name}, $hash2{$name});  #CUT SEQUENCE
my @array2 = unpack("a3" x (length($hash1{$name})),$hash2{$name}); #CUT 
NUCLEOTIDE SEQUENCE
my $number = "$#array1+1";
foreach (my $count = 0; $count <= $number; $count++) {
        print "$count\t@array1[$count]\t@array2[$count]\n";
   }    

}
现在我应该添加一个新的第四列,它将包含“是”或“不是”——这取决于哪些密码子在域中-是,哪些不在域中-不是。这里是从46到142的区域。我想获取此输出文件:

 Q9ULW3;    46    142         
  0    M    ATG    NOT
  1    E    GAG    NOT
  2    A    GCA    NOT
  3    E    GAG    NOT
  4    E    GAA    NOT
  5    S    TCG    NOT
  6    E    GAG    NOT
  7    K    AAG    NOT
  8    A    GCC    NOT
  9    A    GCA    NOT
 10    T    ACG    NOT
 11    E    GAG    NOT
 12    Q    CAA    NOT
 13    E    GAG    NOT
 14    P    CCG    NOT
 15    L    CTG    NOT
 16    E    GAA    NOT
 17    G    GGG    NOT
 18    T    ACA    NOT
 19    E    GAA    NOT
 20    Q    CAG    NOT
 21    T    ACA    NOT
 22    L    CTA    NOT
 23    D    GAT    NOT
 24    A    GCG    NOT
 25    E    GAG    NOT
 26    E    GAG    NOT
 27    E    GAG    NOT
 28    Q    CAG    NOT
 29    E    GAG    NOT
 30    E    GAA    NOT
 31    S    TCC    NOT
 32    E    GAA    NOT
 33    E    GAA    NOT
 34    A    GCG    NOT
 35    A    GCC    NOT
 36    C    TGT    NOT
 37    G    GGC    NOT
 38    S    AGC    NOT
 39    K    AAG    NOT
 40    K    AAA    NOT
 41    R    CGG    NOT
 42    V    GTA    NOT
 43    V    GTG    NOT
 44    P    CCA    NOT
 45    G    GGT    NOT
 46    I    ATT    YES
 47    V    GTG    YES
 48    Y    TAC    YES
 49    L    CTG    YES
 50    G    GGC    YES
 51    H    CAT    YES
 52    I    ATC    YES
 53    P    CCG    YES
 54    P    CCG    YES
 55    R    CGC    YES
 56    F    TTC    YES
 57    R    CGG    YES
 58    P    CCC    YES
 59    L    CTG    YES
 60    H    CAC    YES
 61    V    GTC    YES
 62    R    CGC    YES
 63    N    AAC    YES
 64    L    CTT    YES
 65    L    CTC    YES
 66    S    AGC    YES
 67    A    GCC    YES
 68    Y    TAT    YES
 69    G    GGC    YES
 70    E    GAG    YES
 71    V    GTC    YES
 72    G    GGA    YES
 73    R    CGC    YES
 74    V    GTC    YES
 75    F    TTC    YES
 76    F    TTT    YES
 77    Q    CAG    YES
 78    A    GCT    YES
 79    E    GAG    YES
 80    D    GAC    YES
 81    R    CGG    YES
 82    F    TTC    YES
 83    V    GTG    YES
 84    R    AGA    YES
 85    R    CGC    YES
 86    K    AAG    YES
 87    K    AAG    YES
 88    K    AAG    YES
 89    A    GCA    YES
 90    A    GCA    YES
 91    A    GCA    YES
 92    A    GCT    YES
 93    A    GCC    YES
 94    G    GGA    YES
 95    G    GGA    YES
 96    K    AAA    YES
 97    K    AAG    YES
 98    R    CGG    YES
 99    S    TCC    YES
100    Y    TAC    YES
101    T    ACC    YES
102    K    AAG    YES
103    D    GAC    YES
104    Y    TAC    YES
105    T    ACC    YES
106    E    GAG    YES
107    G    GGA    YES
108    W    TGG    YES
109    V    GTG    YES
110    E    GAG    YES
111    F    TTC    YES
112    R    CGT    YES
113    D    GAC    YES
114    K    AAG    YES
115    R    CGC    YES
116    I    ATA    YES
117    A    GCC    YES
118    K    AAG    YES
119    R    CGC    YES
120    V    GTG    YES
121    A    GCG    YES
122    A    GCC    YES
123    S    AGT    YES
124    L    CTA    YES
125    H    CAC    YES
126    N    AAC    YES
127    T    ACG    YES
128    P    CCT    YES
129    M    ATG    YES
130    G    GGT    YES
131    A    GCC    YES
132    R    CGC    YES
133    R    AGG    YES
134    R    CGC    YES
135    S    AGC    YES
136    P    CCC    YES
137    F    TTC    YES
138    R    CGT    YES  
139    Y    TAT    YES
140    D    GAT    YES
141    L    CTT    YES
142    W    TGG    YES
143    N    AAC    NOT
144    L    CTC    NOT
145    K    AAG    NOT
146    Y    TAC    NOT
147    L    TTG    NOT
148    H    CAC    NOT
149    R    CGT    NOT
150    F    TTC    NOT
151    T    ACC    NOT
152    W    TGG    NOT
153    S    TCC    NOT
154    H    CAC    NOT 
155    *    TGA    NOT
这是一种蛋白质的例子,我必须对数千种蛋白质进行分析。请问,你有什么建议吗


谢谢大家!

交叉张贴到。我的解决方案有什么问题吗?我不知道,你的代码和我的。。。。如果我应该使用这一个或这一个:我使用了两者,但我希望load_fasta部分只是复制了您通过BioPerl已经完成的工作。