#!/usr/bin/perl # Description: Standalone test script - all prerequisites embedded # Author: Peter Fischer Hallin # Email: pfh@cbs.dtu.dk # Version: 1.0a # Date: 2009-05-04 use Data::Dumper; use strict; use XML::Compile; use XML::Compile::WSDL11; use XML::Compile::Transport::SOAPHTTP; use MIME::Base64; use URI::WithBase; my $proxy = WSDLclient ( 'http://www.cbs.dtu.dk/ws/SIDDbase/SIDDbase_1_0a_ws0.wsdl' ); # input parameters for retrieving the sequence information print STDERR "submitting getSIDD request...\n"; my $response = $proxy->{getSIDD}->( parameters => { parameters => { accession => 'AL111168' , energetics => 'c' , sigma => '-0.045' , weight => '10' , from => '100' , to => '120' , Gformat => '%0.2f' , Pformat => '%0.10f' , format => 'element' , } } ); die "unexpected response\n" unless scalar ( @{$response->{parameters}->{output}->{element}->{pos}}) > 0; printf STDERR "getSIDD parsed (%d entries obtained)\n", scalar ( @{$response->{parameters}->{output}->{element}->{pos}}); # read fasta from stdin print STDERR "reading fasta from stdin...\n"; my @fasta = read_fasta(); my $ENERGETICS = "c"; my $GEOMETRY = "c"; my $SIGMA = "-0.045"; my $WEIGHT = '10'; for ( my $i = 0 ; $i < scalar ( @fasta ) ; $i++ ) { runSIDD ( $proxy, $fasta[$i]->{id}, $fasta[$i]->{comment}, $fasta[$i]->{seq}, $ENERGETICS, $GEOMETRY, $SIGMA, $WEIGHT ); } printf "runSIDD parsed (%d entries obtained)\n", scalar ( @{$response->{parameters}->{output}->{element}->{pos}}); exit 0; sub runSIDD { my ($proxy,$id,$comment,$seq,$energetics,$geometry,$sigma,$weight,$format) = @_; print STDERR "submitting runService request (id $id)...\n"; my $response = $proxy->{runService}->( parameters => { parameters => { sequencedata => { sequence => [ { id => $id , comment => $comment , seq => $seq , } ] } , energetics => $energetics , geometry => $geometry , sigma => $sigma , weight => $weight , format => 'element' , } } ); my ($jobid,$status,$expires); die "error obtaining jobid\n" unless defined ( $response->{parameters}->{queueentry}); $jobid = $response->{parameters}->{queueentry}->{jobid}; wait_job($proxy->{pollQueue},$jobid); $response = $proxy->{fetchResult}->( job => { jobid => $jobid }) ; die "unexpected response\n" unless scalar ( @{$response->{parameters}->{output}->{element}->{pos}}) > 0; printf STDERR "obtained r...\n"; printf STDERR "fetchResult parsed (%d entries obtained)\n", scalar ( @{$response->{parameters}->{output}->{element}->{pos}}); } sub read_fasta { my $filename = $_[0]; my @LINES; if ( defined ( $filename ) ) { open FASTA, $filename or die("Unable to open FASTA.\n"); while () { push @LINES , $_; } close FASTA; } else { while () { push @LINES , $_; } } my @fasta; my $seqentry = -1; foreach my $line ( @LINES ) { chomp $line; if ($line=~ m/^>(.*)/) { $seqentry++; my $id = $1 if $line =~ /^>(\S+)/; my $comment = $1 if $line =~ /^>\S+\s+(.*)/; $fasta[$seqentry]{comment} = $comment if defined $comment; $fasta[$seqentry]{seqentry} = $seqentry; $fasta[$seqentry]{id} = $id; } elsif ($line =~ m/^([A-Za-z\-]+)/) { $fasta[$seqentry]{seq} .= uc ( $1 ); } } return @fasta; } sub wait_job { my ($op_handle,$jobid) = @_; my $sleep = 0; my $status = "UNKNOWN"; my $response; while ( $status !~ /FINISHED|FAILED/ ) { $response = $op_handle->( job => { job => { jobid => $jobid } }) ; my $new_status = $response->{queueentry}->{queueentry}->{status}; if ( $new_status ne $status and $new_status ne "") { print STDERR "# job $jobid $new_status ($response->{queueentry}->{queueentry}->{datetime})\n"; $status = $new_status; } $sleep = 5 if $status eq "ACTIVE"; sleep $sleep; } die "# ERROR: job $jobid FAILED\n" if $status ne "FINISHED"; } # with time, this is to replace the above functions! sub WSDLclient { # by hhs 2008 my ($wsdlurl, @ops)=@_; my %imports=(); my $importcnt; my %ops; my $wsdl = XML::LibXML->new->parse_file($wsdlurl); my $proxy = XML::Compile::WSDL11->new($wsdl); while (1) { foreach my $ns (keys %{$proxy->{schemas}->{namespaces} }) { foreach my $uri (keys %{$proxy->{schemas}->{namespaces}->{$ns}}) { foreach my $e (@{$proxy->{schemas}->{namespaces}->{$ns}->{$uri}}) { my $base = $wsdlurl; $base = $e->{filename} if defined $e->{filename}; foreach my $ns2 (keys %{$e->{import}} ) { foreach my $fn ( @{$e->{import}->{$ns2}} ) { $uri = URI::WithBase->new($fn, $base); $imports{$uri->abs}=0 unless (defined $imports{$uri->abs}); } } } } } $importcnt=0; foreach my $url (keys %imports) { next if $imports{$url} == 1; # added by pfh my $f = XML::LibXML->new->parse_file($url); $proxy->schemas->importDefinitions ($f); $importcnt++; $imports{$url}=1; } last unless($importcnt); } my %inc; if ( $#ops >= 0) { foreach (@ops) { $inc{$_} = 1; } } foreach my $op ($proxy->operations) { next if $#ops >= 0 and ! defined $inc{$op->{operation}}; $ops{$op->{operation}} = $proxy->compileClient($op->{operation}); } return \%ops; } __DATA__ >FM180570 GATATATTTATTTCCAAAATGCTACAGATACATCATCATGAAACGGATCACCGCAAACAG GTTACTCGCCTGGGGATTCCCTTTCGACCCGAGCATCCGTATGAGACTCATGCTCGATTA TTATTATTATAGAAGCCCCCATGAATAAATCGCTCATCATTTTCGGCATCGTCAACATAA CCTCGGACAGTTTCTCCGATGGAGGCCGGTATCTGGCGCCAGACGCAGCCATTGCGCAGG CGCGTAAGCTGATGGCCGAGGGGGCAGATGTGATCGACCTCGGTCCGGCATCCAGCAATC CCGACGCCGCGCCTGTTTCGTCCGACACAGAAATCGCGCGTATCGCGCCGGTGCTGGACG CGCTCAAGGCAGATGGCATTCCCGTCTCGCTCGACAGTTATCAACCCGCGACGCAAGCCT ATGCCTTGTCGCGTGGTGTGGCCTATCTCAATGATATTCGCGGTTTTCCAGACGCTGCGT TCTATCCGCAATTGGCGAAATCATCTGCCAAACTCGTCGTTATGCATTCGGTGCAAGACG GGCAGGCAGATCGGCGCGAGGCACCCGCTGGCGACATCATGGATCACATTGCGGCGTTCT TTGACGCGCGCATCGCGGCGCTGACGGGTGCCGGTATCAAACGCAACCGCCTTGTCCTTG ATCCCGGCATGGGGTTTTTTCTGGGGGCTGCTCCCGAAACCTCGCTCTCGGTGCTGGCGC GGTTCGATGAATTGCGGCTGCGCTTCGATTTGCCGGTGCTTCTGTCTGTTTCGCGCAAAT CCTTTCTGCGCGCGCTCACAGGCCGTGGTCCGGGGGATGTCGGGGCCGCGACACTCGCTG CAGAGCTTGCCGCCGCCGCAGGTGGAGCTGACTTCATCCGCACACACGAGCCGCGCCCCT TGCGCGACGGGCTGGCGGTATTGGCGGCGCTGAAAGAAACCGCAAGAATTCGTTAACTGC ACATTCGGGATATTTCTCTATATTCGCGCTTCATCAGAAAACTGAAGGAACCTCCATTGA ATCGAACTAATATTTTTTTTGGTGAATCGCATTCTGACTGGTTGCCTGTCAGAGGCGGAG AATCTGGTGATTTTGTTTTTCGACGTGGTGACGGGCATGCCTTCGCGAAAATCGCACCTG CTTCCCGCCGCGGTGAGCTCGCTGGAGAGCGTGACCGCCTCATTTGGCTCAAAGGTCGAG GTGTGGCTTGCCCCGAGGTCATCAACTGGCAGGAGGAACAGGAGGGTGCATGCTTGGTGA TAACGGCAATTCCGGGAGTACCGGCGGCTGATCTGTCTGGAGCGGATTTGCTCAAAGCGT GGCCGTCAATGGGGCAGCAACTTGGCGCTGTTCACAGCCTATCGGTTGATCAATGTCCGT TTGAGCGCAGGCTGTCGCGAATGTTCGGACGCGCCGTTGATGTGGTGTCCCGCAATGCCG TCAATCCCGACTTCTTACCGGACGAGGACAAGAGTACGCCGCAGCTCGATCTTTTGGCTC GTGTCGAACGAGAGCTACCGGTGCGGCTCGACCAAGAGCGCACCGATATGGTTGTTTGCC ATGGTGATCCCTGCATGCCGAACTTCATGGTGGACCCTAAAACTCTTCAATGCACGGGTC TGATCGACCTTGGGCGGCTCGGAACAGCAGATCGCTATGCCGATTTGGCACTCATGATTG CTAACGCCGAAGAGAACTGGGCAGCGCCAGATGAAGCAGAGCGCGCCTTCGCTGTCCTAT TCAATGTATTGGGGATCGAAGCCCCCGACCGCGAACGCCTTGCCTTCTATCTGCGATTGG ACCCTCTGACTTGGGGTTGATGTTCATGCCGCCTGTTTTTCCTGCTCATTGGCACGTTTC GCAACCTGTTCTCATTGCGGACACCTTTTCCAGCCTCGTTTGGAAAGTTTCATTGCCAGA CGGGACTCCTGCAATCGTCAAGGGATTGAAACCTATAGAAGACATTGCTGATGAACTGCG CGGGGCCGACTATCTGGTATGGCGCAATGGGAGGGGAGCAGTCCGGTTGCTCGGTCGTGA GAACAATCTGATGTTGCTCGAATATGCCGGGGAGCGAATGCTCTCTCACATCGTTGCCGA GCACGGCGACTACCAGGCGACCGAAATTGCAGCGGAACTAATGGCGAAGCTGTATGCCGC ATCTGAGGAACCCCTGCCTTCTGCCCTTCTCCCGATCCGGGATCGCTTTGCAGCTTTGTT TCAGCGGGCGCGCGATGATCAAAACGCAGGTTGTCAAACTGACTACGTCCACGCGGCGAT TATAGCCGATCAAATGATGAGCAATGCCTCGGAACTGCGTGGGCTACATGGCGATCTGCA TCATGAAAACATCATGTTCTCCAGTCGCGGCTGGCTGGTGATAGATCCCGTCGGTCTGGT CGGTGAAGTGGGCTTTGGCGCCGCCAATATGTTCTACGATCCGGCTGACAGAGACGACCT TTGTCTCGATCCTAGACGCATTGCACAGATGGCGGACGCATTCTCTCGTGCGCTGGACGT CGATCCGCGTCGCCTGCTCGACCAGGCGTACGCTTATGGGTGCCTTTCCGCAGCTTGGAA CGCGGATGGAGAAGAGGAGCAACGCGATCTAGCTATCGCGGCCGCGATCAAGCAGGTGCG ACAGACGTCATACTAGATATCAAGCGACTTCTCCTATCCCCTGGGAACACATCAATCTCA CCGGAGAATATCGCTGGCCAAAGCCTTAGCGTAGGATTCCGCCCCTTCCCGCAAACGACC CCAAACAGGAAACGCAGCTGAAACGGGAAGCTCAACACCCACTGACGCATGGGTTGTTCA GGCAGTACTTCATCAACCAGCAAGGCGGCACTTTCGGCCATCCGCCGCGCCCCACAGCTC GGGCAGAAACCGCGACGCTTACAGCTGAAAGCGACCAGGTGCTCGGCGTGGCAAGACTCG CAGCGAACCCGTAGAAAGCCATGCTCCAGCCGCCCGCATTGGAGAAATTCTTCAAATTCC CGTTGCACATAGCCCGGCAATTCCTTTCCCTGCTCTGCCATAAGCGCAGCGAATGCCGGG TAATACTCGTCAACGATCTGATAGAGAAGGGTTTGCTCGGGTCGGTGGCTCTGGTAACGA CCAGTATCCCGATCCCGGCTGGCCGTCCTGGCCGCCACATGAGGCATGTTCCGCGTCCTT GCAATACTGTGTTTACATACAGTCTATCGCTTAGCGGAAAGTTCTTTTACCCTCAGCCGA AATGCCTGCCGTTGCTAGACATTGCCAGCCAGTGCCCGTCACTCCCACTCTTACATTGTT CGCAGTATCTAGGTACATGTTATTGCGTGCACCTTCATGATGTATAATGTTATTAATGAC AGCAGAAAGATCGACAGAATTAATATTCTTCGTACCTGGGACAGTTATCGGGTGTCGGCC AGTGATGAGACCAAAGGATGCAGTATAAGATGAACCACTACTATTATCATGGCCACCATT ACCACCACCGTTAAAACTACCTCCCGAACTTCCAGAGCCGCTATGACCATCATTGTAGGG GTCATTTGGTCCCATGTGACCAAAACCACCGACAGTACCGCTATTTAACTCTGTACTCAT AAAATTATCCTCTTTGACTTTTAAAAACAGCAAAAACTGTATTTATAACAATGTGTTTAT ATACAGTATTCGAAATACTACGCCCGTCAAAACCACACCGTCAACAGGTTTTTTGTGTAT TTTTCACGCCTCACGGGCAGCCTCAGACCTTTTGTGTTAAAACAGTAATATGTTCTGCTG TTACAATACGGTACACACAGGAGACACTGTCACTTTTATGGCATGGCACACAGTTCAAGA GACACTGAAATTAACAGGAAAGTCGCGCTCGCAATTATATCGTGACATGGCTAAAGGCCT TGTCAGCTATCGCACAGGAAAAAATGATCGCCGGGAGTTCGAGACCAGTGAACTGATTCG GGCCTATGGCGAGCTGCGCACTTCTGAGACACCAAAAAGGCACAAGGAGGGACACTCCAA ATCTGTCGTTAGCCAGGCGGAAAATGCTCAGCTAGACGTCATTCAGCAGAAACTGGACGC TCTGCAGCAGACTGTTACCCTAATGCTTGAAGACAAGATGGCGCGGGAAGCAGAAAACCG CCTGCGAAATGAGGAGAGGGAACAACTACAGGCCGAAATTAGCCGTCTGGCTGACGCGCT GGCACAGGAAAAAAAGCGGGGATTCTGGTCGCGGCTGTTTCGCTCCGGTTCAGAGTAACA GTGCAGGTGACTCTGATTTACCATAACATCTGTTATCAGCACCGCCTGAGAGGCCCTCAG GGCGTTTCTGACGGGAAACCGGTAAAACAGGCAACAAACCACCCGAAAACCCGCCAGAAA CGCGCAGGCTCTGTTTTTACGGCATGCATGAGTATGCGCACAAGTGCATAGCGCGGAAAT TCACACCATTCAGCCGGGGTAAGTCCTGTTTCCGGCGTTCTTCCCATCCGAAAACGGTGA ACGGGGACGCAATTTATTGCGTGGCCGTGAAGCGTTGCCGGCGCAGCCGGAAAACCCGCT GTCAGCACGTTCAGGAAGGGGGTGATGTACAAATGGCACAGAGGATGAAAGTGACGTATG AGCTGAAGGAGCGATGTAATTCTGTAGTCAGGAAGAATAACCCGTTCATGCAGGCATGAA CGATACAGTGAGGAACGCTTTTTTTGTCACGATCTCCCCTTAACCTGCGTAAATCACCCG CCATGGTTGATTATTTTTCAACCTCAAAATGGTCATACACCTAACGCAGCCGCGATTTTC ATCGCAACTGCATGAATTAAAAGAAAAAAAAGGAATATTTCGTTTTCACGAGTAATACCC GGGTATTAAAAATCCACTGTAATTACATGAAAATAAAGAAATAAAAGGTAATACCGGAGT ATTACCACGTACGCGGGCAAGCGAAAAAGCTATAACGCTTCCCGGCCGACAGGCGACCCA AAATCCACAGGGGCATGCAGGTTCTCTTCAGTAACCTGCGCCATTAAATCAAAAAGGTCA TATTCGCCGGGAAGCTGCGTATCAGTCGAATCCAGTTGTTCATCATATTCAGATGGCATG GGGTGATATCCAGTAGCTGAGAGGTTGTTAGCGGGTTTCGGGGCGCAGCCCTGAACCAGT CATGTAGCGCTAGCGGAGTGTATACTGGCTTACTATGTTGCCACGATTGCGAAAATCAGT GAAGTGCTTCATGTGGCAGGAGAAAAAAGGCAGCACCGGCGCGTCAGCAGAATATGCGAT ACAGGAGATATTCCGCTTCCTCGCTCACTGACTCGCTACGCTCGGTCGTTCGGCTGCGGC GAGCGGTACCGGCTTACGGACGGGGACGGAAATTTCCTGGAAGATACCAGGAAGACACTT AGCAAAGAAGAGATAAGGCCACGGCGAAGCCGTTTTTCCATAGGCTCCGCCCCCCTGACA AGCATCGCAAAATCTGACGCTCAAATCAGTGGTGGCGAAACCCGACAGGACTATAAAGAT CCCAGGCGTTTCCCCCTGGTAGCTCCCTCGTGCGCTCTCCTGTTCCTGCCTTTCGGTTTA CCGGTGTCATTCCGCTGTTATGGCCGCGGTTTCTCATTCCACGCCTGACACTCAGTTCCG TGAAGGCAGTTCGCTCCAAGCTGGACTGTATGCACGAACCCCCCGTTCAGTCCGACCGCT GCGCCTTGTCCGGTAACTATCAACTTGAGTCCAACCCGGAAAGACACGACAAAACGCCAC TGGCAGCAGCCATTAGTAACAGGAGTGCACGAGAAGATAGATTAAGAGGTCTTGAAGTAG AGGCCTGACTGCGGCTACACTGAAAGAACAGTTTTGGTAATGGCGGTCTCGTGAACCCTG TTACCGGGTTAAGCAGTTCCCCAACTGACTTAACCTTCGAACAAACCGCCTCCCCAGGCG GTTTTTTCGTTTACAGAGCAAGAGATTACGATTCATTGAAAAGGATCTCAAGAAGATCCT TTGTAGATTACTATCAATTAATCTTCCGAACATGACACCAGTCACTGTTGATTACGGTTA AACCGCTCCGTAACAGGTTTCCCTCGTATTGGTGACTTGCAGCACCAAAGAAGCAAAAAA GATAAATATATCTACTTATTGAGAGAT