#!/usr/bin/env perl use lib qw(/vol/bibitest/www/vol/biodomws/lib /vol/bibiserv/www/vol/bibi/lib /vol/pi/lib/perl-5.8.0 /vol/pi/lib/perl-5.8.0/sparc-sun-solaris2.8); # declare imports use CGI::Carp qw(fatalsToBrowser); use CGI qw(:all); use SOAP::Lite; use BiBiServ::XMLData; use XML::Simple; use Getopt::Long; use SOAP::Lite; use Data::Dumper; use XML::LibXML; use XML::DOM; use XML::LibXSLT; my $wsdl = "http://bibitest.techfak.uni-bielefeld.de/wsdl/DCA.wsdl"; #my $wsdl = "http://bibiserv.techfak.uni-bielefeld.de/wsdl/DCA.wsdl"; #my $wsdl="http://bibiserv.techfak.uni-bielefeld.de/wsdl/DIALIGN.wsdl"; #my $wsdl = "file:///vol/bibidev/dca/cmd/perl/DCA.wsdl"; #my $wsdl = "file:///vol/bibidev/dca/cmd/perl/DIALIGN.wsdl"; my $F = undef; #filename containing sequences in FASTA format my $g = undef; my $a = undef; my $b = undef; my $c = undef; my $l = undef; my $w = undef; my $statuscode = undef; my $description = undef; my $result = GetOptions ("F=s" => \$F, #string "g" => \$g, #boolean "a" => \$a, #boolean "b=f" => \$b, #float "c=s" => \$c, #string "l=i" => \$l, #numeric "w=i" => \$w); #numeric if ( $result == 0 || !defined(F)) { print STDERR "DCAWSC -F \n". "\t[-c (dna|rna|dnarna|blosum30|blosum45|blosum62|pam160|pam250|unitcost)]\n". "\t[-g ] [-a ] [-b 0.0 <= double <= 1.0] [-l 0 <= int <= 100]\n". "\t[-w 0 <= int] \n". "See http://bibiserv.techfak.uni-bielefeld.de/dca/webservice.html for a detailed \n". "explanation of parameter meaning.\n"; exit(1); } my $sequence = ""; # read sequence from File open(FILE,$F) or die "can't open $F for reading : $!\n"; while() { $sequence .= $_; } close(FILE); my $sdb = BiBiServ::XMLData->new($sequence)->get_soap_data_builder(); # create parameter array; my @params; if (defined($g)) { push(@params,"g"); push(@params,1); } if (defined($a)) { push(@params,"a"); push(@params,1); } if (defined($b)) { push (@params,"b"); push(@params,$b); } if (defined($c)) { push (@params,"c"); push (@params,$c); } if (defined($l)) { push (@params,"l"); push (@params,$l); } if (defined($w)) { push (@params,"w"); push (@params,$w); } # call request_orig my $id = SOAP::Lite->service($wsdl) ->on_fault(sub {faultHandler(@_);exit(1)}) ->request($sdb->to_soap_data(),\@params); print "ID - ".$id."\n\n"; $statuscode = 699; # call response_orig until result is available sleep(2); while ($statuscode > 600 && $statuscode < 700) { $statuscode = 600; $result = SOAP::Lite->service($wsdl) ->on_fault(sub{faultHandler(@_)}) ->response($id); if ($statuscode > 600 && $statuscode < 700){ sleep(2); } } if ($statuscode == 600) { print Dumper \$result."\n\n"; } sub faultHandler{ my ($soap, $res) = @_; ($statuscode,$description) = split(':',$res->faultstring); print "($statuscode) :: $description\n"; }