1
# $Id: grailclnt.pm,v 1.8 2006/07/04 22:23:34 mauricio Exp $
2
# BioPerl module for Bio::Tools::Run::PiseApplication::grailclnt
4
# Cared for by Catherine Letondal <letondal@pasteur.fr>
6
# For copyright and disclaimer see below.
8
# POD documentation - main docs before the code
12
Bio::Tools::Run::PiseApplication::grailclnt
20
Bio::Tools::Run::PiseApplication::grailclnt
24
GRAILCLNT Grail client (Xu, Einstein, Mural, Shah, Uberbacher)
28
Xu, Y., Einstein, J. R., Mural, R.J., Shah, M. and Uberbacher, E.C., (1994) An Improved System for Exon Recognition and Gene Modeling in Human DNA Sequences, Published Presentation: The Second International Conference on Intelligent Systems for Molecular Biology, Stanford University, San Francisco, CA, August 14-17, 1994.
35
http://bioweb.pasteur.fr/seqanal/interfaces/grailclnt.html
36
for available values):
60
Shadowexons (grail 1.a or grail2)
66
grail2exons results file
69
modelexon_translation (Switch)
70
Gene model exons translation
72
genemodel_translation (Switch)
73
Entire gene models translation
78
start_strand (Integer)
84
forward_strand (Switch)
87
reverse_strand (Switch)
91
grail2exons results file
97
rpttv_organism (String)
113
User feedback is an integral part of the evolution of this and other
114
Bioperl modules. Send your comments and suggestions preferably to
115
the Bioperl mailing list. Your participation is much appreciated.
117
bioperl-l@bioperl.org - General discussion
118
http://bioperl.org/wiki/Mailing_lists - About the mailing lists
120
=head2 Reporting Bugs
122
Report bugs to the Bioperl bug tracking system to help us keep track
123
of the bugs and their resolution. Bug reports can be submitted via the
126
http://bugzilla.open-bio.org/
130
Catherine Letondal (letondal@pasteur.fr)
134
Copyright (C) 2003 Institut Pasteur & Catherine Letondal.
137
This module is free software; you can redistribute it and/or modify
138
it under the same terms as Perl itself.
142
This software is provided "as is" without warranty of any kind.
150
http://bioweb.pasteur.fr/seqanal/interfaces/grailclnt.html
154
Bio::Tools::Run::PiseApplication
158
Bio::Tools::Run::AnalysisFactory::Pise
162
Bio::Tools::Run::PiseJob
169
package Bio::Tools::Run::PiseApplication::grailclnt;
173
use Bio::Tools::Run::PiseApplication;
175
@ISA = qw(Bio::Tools::Run::PiseApplication);
180
Usage : my $grailclnt = Bio::Tools::Run::PiseApplication::grailclnt->new($location, $email, @params);
181
Function: Creates a Bio::Tools::Run::PiseApplication::grailclnt object.
182
This method should not be used directly, but rather by
183
a Bio::Tools::Run::AnalysisFactory::Pise instance.
184
my $factory = Bio::Tools::Run::AnalysisFactory::Pise->new();
185
my $grailclnt = $factory->program('grailclnt');
187
Returns : An instance of Bio::Tools::Run::PiseApplication::grailclnt.
192
my ($class, $location, $email, @params) = @_;
193
my $self = $class->SUPER::new($location, $email);
195
# -- begin of definitions extracted from /local/gensoft/lib/Pise/5.a/PerlDef/grailclnt.pm
197
$self->{COMMAND} = "grailclnt";
198
$self->{VERSION} = "5.a";
199
$self->{TITLE} = "GRAILCLNT";
201
$self->{DESCRIPTION} = "Grail client";
203
$self->{OPT_EMAIL} = 0;
205
$self->{AUTHORS} = "Xu, Einstein, Mural, Shah, Uberbacher";
207
$self->{REFERENCE} = [
209
"Xu, Y., Einstein, J. R., Mural, R.J., Shah, M. and Uberbacher, E.C., (1994) An Improved System for Exon Recognition and Gene Modeling in Human DNA Sequences, Published Presentation: The Second International Conference on Intelligent Systems for Molecular Biology, Stanford University, San Francisco, CA, August 14-17, 1994.",
212
$self->{_INTERFACE_STANDOUT} = undef;
213
$self->{_STANDOUT_FILE} = undef;
215
$self->{TOP_PARAMETERS} = [
234
$self->{PARAMETERS_ORDER} = [
237
"feature", # Which feature?
238
"organism", # Organism
240
"exons_options", # Exons options
241
"translation", # Translation
242
"strandscores", # Strandscores (grail1)
243
"shadowexons", # Shadowexons (grail 1.a or grail2)
244
"clusters", # Clusters (grail 2)
245
"gap_options", # Gene modelling options
246
"cluster_file", # grail2exons results file
247
"modelexon_translation", # Gene model exons translation
248
"genemodel_translation", # Entire gene models translation
249
"auto_strand", # AUTO STRAND
250
"start_strand", # AUTO STRAND start
251
"end_strand", # AUTO STRAND end
252
"forward_strand", # FORWARD_STRAND
253
"reverse_strand", # REVERSE_STRAND
254
"polIIprom_options", # Pol II Promoters options
255
"grail2_file", # grail2exons results file
256
"fserr_options", # fserr options
257
"fserr_strand", # Strand
263
"outfile", # Result file
268
"grailclnt" => 'String',
271
"organism" => 'Excl',
272
"header" => 'Switch',
273
"exons_options" => 'Paragraph',
274
"translation" => 'Switch',
275
"strandscores" => 'Switch',
276
"shadowexons" => 'Switch',
277
"clusters" => 'Switch',
278
"gap_options" => 'Paragraph',
279
"cluster_file" => 'InFile',
280
"modelexon_translation" => 'Switch',
281
"genemodel_translation" => 'Switch',
282
"auto_strand" => 'Switch',
283
"start_strand" => 'Integer',
284
"end_strand" => 'Integer',
285
"forward_strand" => 'Switch',
286
"reverse_strand" => 'Switch',
287
"polIIprom_options" => 'Paragraph',
288
"grail2_file" => 'InFile',
289
"fserr_options" => 'Paragraph',
290
"fserr_strand" => 'Excl',
291
"rpttv_organism" => 'String',
292
"start_seq" => 'String',
293
"end_seq" => 'String',
294
"end_request" => 'String',
295
"input_file" => 'Results',
296
"outfile" => 'OutFile',
302
"perl" => '"cat grail_input_* > grail_input; grailclnt -host grailsrv.lsd.ornl.gov -port 2050 < grail_input " ',
305
"perl" => '" ln -s $seq grail_input_a4 ;"',
308
"perl" => '($value eq "cpg" || $value eq "rpttv" || $value eq "smprpt")? "\\n\\[Request\\_$value\\_1.3\\]\\n\\n" : "\\n\\[Request\\_$value\\_$organism\\_1.3\\]\\n\\n" ',
314
"perl" => '($value)? "[Option= header]\\n" : ""',
319
"perl" => '($value)? "[Option= translation]\\n" : ""',
322
"perl" => '($value)? "[Option= strandscores]\\n" : ""',
325
"perl" => '($value)? "[Option= shadowexons]\\n" : ""',
328
"perl" => '($value)? "[Option= clusters]\\n" : ""',
333
"perl" => '($value)? "sed -n \\"/^.Start clusters/,/^.End clusters/p\\" $cluster_file > grail_input_b4 ;" : "" ',
335
"modelexon_translation" => {
336
"perl" => '($value)? "[Option= modelexon_translation]\\n" : ""',
338
"genemodel_translation" => {
339
"perl" => '($value)? "[Option= genemodel_translation]\\n" : ""',
342
"perl" => '($value)? "[Params= AUTO_STRAND $start_strand $end_strand]\\n" : ""',
350
"forward_strand" => {
351
"perl" => '($value)? "[Params= FORWARD_STRAND]\\n" : ""',
353
"reverse_strand" => {
354
"perl" => '($value)? "[Params= REVERSE_STRAND]\\n" : ""',
356
"polIIprom_options" => {
359
"perl" => '($value)? " ln -s $grail2_file grail_input_b2 ;" : "" ',
364
"perl" => '"[Params= $value]\\n" ',
366
"rpttv_organism" => {
367
"perl" => '"\\n\\n[Params= $organism]\\n\\n"',
370
"perl" => '"\\n\\n[Start DNASequence]\\n\\n"',
373
"perl" => '"\\n\\n[End DNASequence]\\n\\n"',
376
"perl" => '"\\n\\n[End_Request]\\n\\n"',
381
"perl" => '($value)? " > $value" : ""',
386
$self->{FILENAMES} = {
387
"input_file" => 'grail_input',
407
"modelexon_translation" => 3,
408
"genemodel_translation" => 3,
410
"forward_strand" => 4,
411
"reverse_strand" => 4,
414
"rpttv_organism" => 4,
419
$self->{BY_GROUP_PARAMETERS} = [
440
"modelexon_translation",
441
"genemodel_translation",
456
$self->{ISHIDDEN} = {
462
"exons_options" => 0,
469
"modelexon_translation" => 0,
470
"genemodel_translation" => 0,
474
"forward_strand" => 0,
475
"reverse_strand" => 0,
476
"polIIprom_options" => 0,
478
"fserr_options" => 0,
480
"rpttv_organism" => 1,
489
$self->{ISCOMMAND} = {
495
"exons_options" => 0,
502
"modelexon_translation" => 0,
503
"genemodel_translation" => 0,
507
"forward_strand" => 0,
508
"reverse_strand" => 0,
509
"polIIprom_options" => 0,
511
"fserr_options" => 0,
513
"rpttv_organism" => 0,
522
$self->{ISMANDATORY} = {
528
"exons_options" => 0,
535
"modelexon_translation" => 0,
536
"genemodel_translation" => 0,
540
"forward_strand" => 0,
541
"reverse_strand" => 0,
542
"polIIprom_options" => 0,
544
"fserr_options" => 0,
546
"rpttv_organism" => 0,
558
"feature" => "Which feature?",
559
"organism" => "Organism",
560
"header" => "Header",
561
"exons_options" => "Exons options",
562
"translation" => "Translation",
563
"strandscores" => "Strandscores (grail1)",
564
"shadowexons" => "Shadowexons (grail 1.a or grail2)",
565
"clusters" => "Clusters (grail 2)",
566
"gap_options" => "Gene modelling options",
567
"cluster_file" => "grail2exons results file",
568
"modelexon_translation" => "Gene model exons translation",
569
"genemodel_translation" => "Entire gene models translation",
570
"auto_strand" => "AUTO STRAND",
571
"start_strand" => "AUTO STRAND start",
572
"end_strand" => "AUTO STRAND end",
573
"forward_strand" => "FORWARD_STRAND",
574
"reverse_strand" => "REVERSE_STRAND",
575
"polIIprom_options" => "Pol II Promoters options",
576
"grail2_file" => "grail2exons results file",
577
"fserr_options" => "fserr options",
578
"fserr_strand" => "Strand",
579
"rpttv_organism" => "",
584
"outfile" => "Result file",
588
$self->{ISSTANDOUT} = {
594
"exons_options" => 0,
601
"modelexon_translation" => 0,
602
"genemodel_translation" => 0,
606
"forward_strand" => 0,
607
"reverse_strand" => 0,
608
"polIIprom_options" => 0,
610
"fserr_options" => 0,
612
"rpttv_organism" => 0,
623
"feature" => ['grail1exons','grail1exons: Protein Coding Regions (grail 1)','grail1aexons','grail1aexons: Protein Coding Regions (grail 1.a)','grail2exons','grail2exons: Protein Coding Regions (grail 2)','gap2','gap2: Gene Modeling','polya','polya: PolyA sites','polIIprom','polIIprom: Pol II Promoters','cpg','cpg: CpG Islands','rpttv','rpttv: repetitive DNA elements','smprpt','smprpt: simple repeats','fserr','fserr: Frame Shift Errors',],
624
"organism" => ['human','Human','mouse','Mouse','arabd','Arabidopsis','droso','Drosophila','ecoli','E. coli',],
625
"exons_options" => ['translation','strandscores','shadowexons','clusters',],
626
"gap_options" => ['cluster_file','modelexon_translation','genemodel_translation','auto_strand','start_strand','end_strand','forward_strand','reverse_strand',],
627
"polIIprom_options" => ['grail2_file',],
628
"fserr_options" => ['fserr_strand',],
629
"fserr_strand" => ['AUTO_STRAND','AUTO_STRAND','FORWARD_STRAND','FORWARD_STRAND','REVERSE_STRAND','REVERSE_STRAND',],
636
$self->{SEPARATOR} = {
641
"feature" => 'grail2exons',
642
"organism" => 'human',
644
"translation" => '0',
645
"strandscores" => '0',
646
"shadowexons" => '1',
648
"modelexon_translation" => '0',
649
"genemodel_translation" => '0',
650
"auto_strand" => '1',
651
"forward_strand" => '0',
652
"reverse_strand" => '0',
653
"fserr_strand" => 'AUTO_STRAND',
654
"outfile" => 'grailclnt.txt',
659
"grailclnt" => { "perl" => '1' },
660
"seq" => { "perl" => '1' },
661
"feature" => { "perl" => '1' },
662
"organism" => { "perl" => '1' },
663
"header" => { "perl" => '1' },
665
"perl" => '$feature =~ /grail/',
668
"perl" => '$feature =~ /grail/',
671
"perl" => '$feature =~ /grail/ && $feature eq "grail1exons" ',
674
"perl" => '$feature =~ /grail/ && $feature ne "grail1exons" ',
677
"perl" => '$feature =~ /grail/ && $feature eq "grail2exons" ',
680
"perl" => '$feature eq "gap2" ',
683
"perl" => '$feature eq "gap2" ',
685
"modelexon_translation" => {
686
"perl" => '$feature eq "gap2" ',
688
"genemodel_translation" => {
689
"perl" => '$feature eq "gap2" ',
692
"perl" => '$feature eq "gap2" ',
695
"perl" => '$feature eq "gap2" && $auto_strand',
698
"perl" => '$feature eq "gap2" && $auto_strand',
700
"forward_strand" => {
701
"perl" => '$feature eq "gap2" && ! $auto_strand',
703
"reverse_strand" => {
704
"perl" => '$feature eq "gap2" && ! $auto_strand',
706
"polIIprom_options" => {
707
"perl" => '$feature eq "polIIprom" ',
710
"perl" => '$feature eq "polIIprom" ',
713
"perl" => '$feature eq "fserr" ',
716
"perl" => '$feature eq "fserr" ',
718
"rpttv_organism" => {
719
"perl" => '$feature eq "rpttv" ',
721
"start_seq" => { "perl" => '1' },
722
"end_seq" => { "perl" => '1' },
723
"end_request" => { "perl" => '1' },
724
"input_file" => { "perl" => '1' },
725
"outfile" => { "perl" => '1' },
732
'$organism eq "ecoli" && (! ($feature eq "grail1" || $feature eq "smprpt")) ' => "E. coli is available only for grail1 or simple repeats",
733
'$feature eq "polIIprom" && (! ($organism eq "human" || $organism eq "mouse"))' => "polIIprom is available only for Human or Mouse",
734
'$feature eq "rpttv" && (! ($organism eq "human" || $organism eq "mouse"))' => "Repetitive DNA is available only for Human or Mouse",
735
'$organism eq "droso" && ($feature =~ /grail1/)' => "Grail 1 or 1.a is not available for drosophila",
736
'$feature eq "fserr" && (! ($organism eq "human" || $organism eq "mouse"))' => "fserr is available only for Human or Mouse",
737
'$feature eq "polya" && (! ($organism eq "human" || $organism eq "mouse"))' => "polya is available only for Human or Mouse",
738
'$organism eq "arabd" && ($feature =~ /grail1/)' => "Grail 1 or 1.a is not available for arabidopsis",
739
'$feature eq "cpg" && (! ($organism eq "human" || $organism eq "mouse"))' => "CpG is available only for Human or Mouse",
747
'$feature eq "grail2exons" ' => "grail_cluster",
752
$self->{WITHPIPEOUT} = {
758
"grail_cluster" => '1',
761
"grail_cluster" => '1',
766
$self->{WITHPIPEIN} = {
776
"exons_options" => 0,
783
"modelexon_translation" => 0,
784
"genemodel_translation" => 0,
788
"forward_strand" => 0,
789
"reverse_strand" => 0,
790
"polIIprom_options" => 0,
792
"fserr_options" => 0,
794
"rpttv_organism" => 0,
803
$self->{ISSIMPLE} = {
809
"exons_options" => 0,
816
"modelexon_translation" => 0,
817
"genemodel_translation" => 0,
821
"forward_strand" => 0,
822
"reverse_strand" => 0,
823
"polIIprom_options" => 0,
825
"fserr_options" => 0,
827
"rpttv_organism" => 0,
836
$self->{PARAMFILE} = {
837
"feature" => "grail_input_a1",
838
"header" => "grail_input_a1",
839
"translation" => "grail_input_a1",
840
"strandscores" => "grail_input_a1",
841
"shadowexons" => "grail_input_a1",
842
"clusters" => "grail_input_a1",
843
"modelexon_translation" => "grail_input_a1",
844
"genemodel_translation" => "grail_input_a1",
845
"auto_strand" => "grail_input_a1",
846
"start_strand" => "grail_input_a1",
847
"end_strand" => "grail_input_a1",
848
"forward_strand" => "grail_input_a1",
849
"reverse_strand" => "grail_input_a1",
850
"fserr_strand" => "grail_input_a1",
851
"rpttv_organism" => "grail_input_a1",
852
"start_seq" => "grail_input_a3",
853
"end_seq" => "grail_input_a5",
854
"end_request" => "grail_input_z9",
860
"The coding recognition portion of the system uses a neural network which combines a series of coding prediction algorithms. There are three basic versions of this neural network, GRAIL 1, GRAIL 1a and GRAIL 2: ",
861
"GRAIL 1 has been in place for about five years. It uses a neural network described in PNAS 88, 11261-11265, which recognizes coding potential within a fixed size (100 base) window. It evaluates coding potential without looking for additional features (information such as splice junctions, etc).",
862
"GRAIL 1a is an updated version of GRAIL 1. It uses a fixed-length window to locate the potential coding regions and then evaluates a number of discrete candidates of different lengths around each potential coding region, using information from the two 60-base regions adjacent to that coding region, to find the \'best\' boundaries for that coding region.",
863
"GRAIL 2 uses variable-length windows tailored to each potential exon candidate, defined as an open reading frame bounded by a pair of start/donor, acceptor/donor or acceptor/stop sites. This scheme facilitates the use of more genomic context information (splice junctions, translation starts, non-coding scores of 60-base regions on either side of a putative exon) in the exon recognition process. GRAIL 2 is therefore not appropriate for sequences without genomic context (when the regions adjacent to an exon are not present).",
866
"This feature is needed for a further polIIpromoters analysis.",
869
"This feature is needed for a further Gene Modelling analysis with GAP2 or polIIpromoters.",
872
"For gap2 (gene assembly) the cluster tables returned by grail2exons must be included.",
873
"So what you have to do here is to put your grail2exons results, the program will extract clusters from this data.",
876
"For Pol II promoters, all the results of grail2 must be included.",
877
"The [Start/end header] lines must be removed.",
882
$self->{SCALEMIN} = {
886
$self->{SCALEMAX} = {
890
$self->{SCALEINC} = {
898
# -- end of definitions extracted from /local/gensoft/lib/Pise/5.a/PerlDef/grailclnt.pm
902
$self->_init_params(@params);
909
1; # Needed to keep compiler happy