2017-04-05 136 views
0

我想FASTA格式峰会多种蛋白序列上使用this server提交多个FASTA序列以下perl脚本使用WWW ::机械化

use WWW::Mechanize; 

# get the webpage with the form 

my $mech = WWW::Mechanize->new(); 
$mech->show_progress(1); 

my $url = "http://harrier.nagahama-i-bio.ac.jp/sosui/sosu/sosuigsubmit.html"; 
$mech->get($url); 

# just checks to see if scripts call properly 

sub validateInput{ 
    my $file = shift; 
    my $inFh = IO::File->new($file) || die "can't open input file\n"; 
    close($inFh); 
    return 1; 
} 

validateInput($ARGV[0]); 

# fill the fields with the appropriate data and submit 

my $fields = { 
    'in' => $ARGV[0], 
    'value' => 'Exec' 
}; 

$mech->submit_form(
    fields => $fields, 
); 

# print results 

print $mech->content(); 

但每次我越来越喜欢这个

<HTML> 
<bR><bR><bR> 
<TABLE> 
<TR><TD ALIGN=left WIDTH=300>TOTAL PROTEINS</TD><TH>0</TH></TR> 
<TR><TD ALIGN=left WIDTH=300>TOTAL MEMBRANE PROTEINS</TD><TH>0</TH></TR> 
<TR><TD ALIGN=left WIDTH=300>PERCENTAGE</TD><TH> 0.0 %</TH></TR> 
</TABLE> 
</HTML> 
结果时间

当您提交没有输入的表单时,这是一个结果页面。所以我怀疑我的序列提交有问题。我的输入文件看起来像这样

>ATCG00420 
MQGTLSVWLAKRGLVHRSLGFDYQGIETLQIKPEDWHSIAVILYVYGYNYLRSQCAYDVAPGGLLASVYHLTRIEYGV NQAEEVCIKVFTHRSNPRIPSVFWVWKSTDFQERESYDMLGITYDSHPRLKRILMPESWIGWPLRKDYIAPNFYEIQDAY 
>ATCG00360 
MSAQSEGNYAEALQNYYEAMRLEIDPYDRSYILYNIGLIHTSNGEHTKALEYYFRALERNPFLPQAFNNMAVICHYRGEQAIQQGDSEMAEAWFAQAAEYWKQAITLTPGNYIEAQNWLTITRRFE 

,我打电话给我这样的脚本

perl my_script input.seq >output 

谢谢你帮我。

+0

原始代码中'sosuiG/sosuigsubmit'中是否有空格? – Kev

+1

如果这是你的真实代码,那么URL是错误的。网址中不允许使用空格。你应该检查'$ mech-> success'来确保你的调用get'和'submit_form'成功,'$ mech-> status'找出失败的错误,'$ mech-> text'看看这个表单实际上是什么样子。 – Borodin

+0

另外,打开一个文件来检查它是否有效是非常浪费的。你可以使用'-e'来确保它存在,'-f'确保它是一个文件而不是一个目录,'-s'确保它不是空的,'-r'确保它可以是阅读,所有这些都不需要经过漫长的打开过程。 – Borodin

回答

1

对于初学者来说,这条线:

'in' => $ARGV[0], 

,你向他们发送的文件名,而不是文件的内容手段。您需要先获取内容,然后发送这些内容。像File::Slurper这样的库对此很方便。

+1

请注意[File :: Slurp有一个讨厌的错误](https://rt.cpan.org/Public/Bug/Display.html?id=83126)(仍未定义)。 [File :: Slurper](https://metacpan.org/pod/File::Slurper)似乎更好。 – melpomene

+1

谢谢你指导我走向正确的方向。我终于解决了它。 :) – pali

+0

@pali没问题,随时接受我的答案,如果这是你的问题的关键。 – Kev