大家看看这个去除一个数组中的冗余信息的代码那里有问题?

Tuexy 2010-01-02 10:53:41
@result_ID = sort @result_id; # obtain the unique gene items ??
for ($m=0; $m < $#result_ID;)
{
$n = 0;
next if($result_ID[m] eq $result_ID[++$m]);
push(@result, $result[$m]);
}
...全文
66 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
msdn4zillion 2010-12-31
  • 打赏
  • 举报
回复
拜托 你的代码写得不准确啊,$result_ID[m]
还有你的比较算法 似乎 不对啊 临近的两两比较 并不能保证 数组元素值唯一,是不是?
Tuexy 2010-01-03
  • 打赏
  • 举报
回复
大家帮帮忙看看吧
Tuexy 2010-01-02
  • 打赏
  • 举报
回复
整个程序代码为:
#!/usr/bin/perl -w

@cat_enzyme = ('SMARCA4', 'SMARCA2');
@core_sub=('ARID1A', 'ARID1B', 'SMARCC1', 'SMARCC2', 'SMARCB1', 'SMARCE1');
@interactor=('AR', 'ESR1', 'ESR2');
$i = 0; $j = 0; $k = 0, $l = 0, $p = 1;
while($p)
{
@file = ("the file contains the genes you want to match", "the target file", "the the path for the four files", "search level: ");
print("please input : $file[0] \n : \$file[1] \n $file[2]: \n $file[3]: \n each item should write in a line (end by ctrl+z)");
@input = <stdin>;
for($a=0; $a< 3;)
{
print("Are you sure for $file[$a]: $file[$a]? \n (1 for YES, else for NO)");
}
$p = <stdin>;
}
sub search()
{
open(FILE, "$file[0]" || die "cannot open the file:$!");
while (<FILE>) #match the primary ID of genes and retrieve the pair of interaction
{
chomp ;
@line=split(/\t/,$_);
foreach $enzyme(@cat_enzyme)
{
if (($line[0] eq $enzyme)||($line[3] eq $enzyme))
{
$result_ce[$i++] = join(' ', $line[0], $line[2]);
$result_id[$l++] = $line[3]; $result_id[$l++] = $line[5];
last;
}
last if(($line[0] eq $enzyme)||($line[3] eq $enzyme));
}
foreach $subunit(@core_sub)
{
if (($line[0] eq $subunit) || ($line[3] eq $subunit))
{
$result_cs[$j++] = join(' ', $line[0], $line[2]);
$result_id[$l++] = $line[3]; $result_id[$l++] = $line[5];
last;
}
last if(($line[0] eq $subunit) || ($line[3] eq $subunit));
}
foreach $inter(@interactor)
{
if (($line[0] eq $inter) ||($line[3] eq $inter))
{
$result_int[$k++] = join(' ', $line[0], $line[2]);
$result_id[$l++] = $line[3]; $result_id[$l++] = $line[5];
last;
}
last if(($line[0] eq $inter) ||($line[3] eq $inter));
}
}
close(FILE);
@result_ID = sort @result_id; # obtain the unique gene items ??
for ($m=0; $m < $#result_ID;)
{
$n = 0;
next if($result_ID[m] eq $result_ID[++$m]);
push(@result, $result[$m]);
}
sub print()
{
open(FILE1, ">$file[2].search1.txt");
print FILE1 "catalytic enzyme matches\n\n"; #store the data in a file
foreach $R_C (@result_ce)
{
print FILE1 $R_C, "\n";
}
print FILE1 "\ncore subunits matches_enzyme\n\n";
foreach $R_C (@result_cs)
{
print FILE1 $R_C, "\n";
}
print FILE1 "\ninteractor matches \n";
foreach $R_C (@result_int)
{
print FILE1 $R_C, "\n";
}
print FILE1 "\nSUMMARY:\n\n";
print FILE1 "catalytic enzyme matches: $#result_ce \n";
print FILE1 "core subunits matches: $#result_cs \n";
print FILE1 "interactor matches: $#result_int \n";
close(FILE1);
}

sub protein_sequence () #retrieve the protein sequence information
{
open(FILE1, "$file[1]" or die "cannot open file: $!");
while(@line1 = <FILE>)
{
chomp(@line1);
$o=0;
@line = split(/'|'/, @line1);
foreach(@result){
if($line[3] eq $_)
{
$protein[$o++] = (@line1, '\n', <FILE>, '\n');
last;
}
}
}
close(FILE1);
open(FILE2, ">$file[2].search2.txt" or die "cannot open file: $!");
print FILE2 @protein;
close(FILE2);
}
search();
protein_sequence();

37,744

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧