#!/usr/bin/perl # Description: This script runs the MaxAlign 1.1.ws0 Web Service. It requires no input; to be used for testing in the EMBRACE WS Registry. # Author: Edita Bartaseviciute # Email: edita@cbs.dtu.dk # Version: 1.1 ws0 # Date: 2009-07-10 # usage: perl test_maxalign.pl # include standard XML::Compile helper functions (used to initiate WSDL proxys) use strict; require "xml-compile.pl"; # create proxy to maxalign my $maxalign = WSDLclient ( 'http://www.cbs.dtu.dk/ws/MaxAlign/MaxAlign_1_1_ws0.wsdl' ); my @fasta; my $entry = -1; while () { chomp; if (/^>(.*)/) { my ($id , $comment) = split (" ",$1); $entry++; $fasta[$entry]->{id} = $id; $fasta[$entry]->{comment} = $comment if defined $comment; } else { $fasta[$entry]->{seq} .= $_; } } # Create request my @sequence; for ( my $i = 0 ; $i < scalar ( @fasta ) ; $i ++ ) { push @sequence , { id => $fasta[$i]->{id} , comment => $fasta[$i]->{comment} , seq => $fasta[$i]->{seq} }; } # Do the request my $response = $maxalign->{maxalign}->( parameters => { parameters => { alignment => {sequence => [@sequence]} } }); # Print the response print "# Original number of sequences: $response->{parameters}->{output}->{originalsequencenumber}\n"; print "# Original total number of columns: $response->{parameters}->{output}->{originalcolumnnumber}\n"; print "# Original ungapped columns: $response->{parameters}->{output}->{originalungapcolumnnumber}\n"; print "# Original alignment area: $response->{parameters}->{output}->{originalalignmentarea}\n\n"; if (exists $response->{parameters}->{output}->{resultsequencenumber} and $response->{parameters}->{output}->{resultungapcolumnnumber} and $response->{parameters}->{output}->{resultalignmentarea} ) { print "# Number of sequences in result: $response->{parameters}->{output}->{resultsequencenumber}\n"; print "# Ungapped columns in result: $response->{parameters}->{output}->{resultungapcolumnnumber}\n"; print "# Resulting alignment area: $response->{parameters}->{output}->{resultalignmentarea}\n\n"; print "#New alignment in fasta format:\n\n"; foreach my $seqref (@{$response->{parameters}->{output}->{resultalignment}->{sequence}}) { print ">$seqref->{id}"; print exists $seqref->{comment} ? " $seqref->{comment}\n" : "\n"; for (my $i = 0; $i < length $seqref->{seq}; $i += 60) { print substr($seqref->{seq}, $i, 60), "\n"; } } } else { print "This alignment can't be improved by removing sequences\n"; } __DATA__ >Q9F0G5_STRMU/12-64 TKTFDVQEDLFEFNITDTI-V--lQASDSPDThsKVGSFSICPP--R--KT-SvSFNSYCC >Q9ETI4_STRMU/12-65 TETFDVQEDLFAFDTTDTT-I--vASNDDPDT--RFSSLSLCSLGCTgvKN-P-SFNSYCC >Q9FDN2_STRMU/12-64 TKTFDVQEDLFEFNITDTI-VlqvSDSPGTHS--KVGSFSICPP--R--KT-SvSFNSYCC >Q76HP8_9LACT/17-37 --------------------------DSGAST--RITSISLCTPGC---KT-G-------- >Q2L5U7_CLOPE/4-33 -----------DFDLNLKMET---GSSDDKEP--RITSVAYCTPGC--------------- >SPAS_BACSU/6-35 -----------DFDLDVVKVS---KQDSKITP--QWKSESLCTPGC--------------- >Q5L3A9_GEOKA/22-34 -------------------------------P--NITSKSLCTPGC--------------- >LANE_STAEP/1-52 MEAVKEKNDLFNLDVKVNA-K--eSNDSGAEP--RIASKFICTPGCA--KT-G-SFNSYCC >Q9RPL9_STRMU/12-64 TKTFDVQEDLFEFNITDTI-V--lQASDSPDThsKVGSFNICPPRKI--SV---SFNSYCC >Q2FXB2_STAAU/1-47 MEKV------LDLDVQVKANN--nSNDSAGDE--RITSHSLCTPGCA--KT-G-SFNSFCC >Q8VT57_STRMU/12-63 TETFDVQENLFTFDTTDTI-V--aESNDDPDT--RFKSWSFCTPGCA--KT-G-SFNSYCC >Q8NVW4_STAAW/1-47 MEKV------LDLDVQVKGNN--nTNDSAGDE--RITSHLFCSFGCE--KT-G-SFNSFCC >Q8VT56_STRMU/12-64 SDTLDVREDLFDLNITDTA-V--iQSNDSPDTrsRVGSHSICPP--R--KTsA-SFNSYCC >Q7B8R0_9LACT/17-37 --------------------------DSGASP--RITSISLCTPGC---KT-G-------- >Q6G8B1_STAAS/1-47 MEKV------LDLDVQVKANN--nSNDSAGDE--RITSHSLCTPGCA--KT-G-SFNSFCC >O68587_STRMU/25-53 TKTFDVQEDLFEFNITDTIVL---QASDSPDT----------------------------- >Q45RP0_LACLA/17-37 --------------------------DSGASP--RITSISLCTPGC---KT-G-------- >LANZ_LACLA/17-37 --------------------------DSGASP--RITSISLCTPGC---KT-G-------- >Q2YTQ7_STAAB/1-47 MENV------LDLDVQVKA-Kn-dTSDSAGDE--RITSFIGCTPGCG--KT-G-SFNSFCC >Q2QBT0_STRUB/1-43 -----MNNEDFNLDLIKIS-K--e-NNSGASP--RITSKSLCTPGC---KT-G-ILMT--C >Q93GH5_BACSU/9-38 -----------DFDLDVVKVS---KQDSKITP--QVLSKSLCTPGC--------------- >Q6G8B0_STAAS/1-47 MEKV------LDLDVQVKGNN--nTNDSAGDE--RITSHLFCSFGCE--KT-G-SFNSFCC >LANM_STRMU/1-22 -----------------------------------FKSWSFCTPGCA--KT-G-SFNSYCC >LANN_STRMU/12-63 TETFDVQEDLFAFDTTDTT-I--vASNDDPDT--RFKSWSLCTPGCA--RT-G-SFNSYCC >Q7BB86_9LACT/17-37 --------------------------DSGASP--RITSISLCTPGC---KT-G-------- >Q7DH25_LACLA/17-37 --------------------------DSGASP--RITSISLCTPGC---KT-G-------- >Q2YTQ5_STAAB/1-47 MEKV------LDLDVQVKGNN--nTNDSAGDE--RITSHFLCSFGCG--KT-G-SFNSFCC >LANG_STAGA/1-52 MEAVKEKNELFDLDVKVNA-K--eSNDSGAEP--RIASKFLCTPGCA--KT-G-SFNSYCC >LANN_LACLA/17-37 --------------------------DSGASP--RITSISLCTPGC---KT-G-------- >Q8NVW5_STAAW/1-47 MEKV------LDLDVQVKANN--nSNDSAGDE--RITSHSLCTPGCA--KT-G-SFNSFCC >Q5HEV2_STAAC/1-47 MEKV------LDLDVQVKANN--nSNDSAGDE--RITSHSLCTPGCA--KT-G-SFNSFCC >Q1W155_BACSU/6-35 -----------DFDLDVVKVS---KQDSKITP--QWKSESLCTPGC--------------- >Q2FFS0_STAA3/1-47 MEKV------LDLDVQVKANN--nSNDSAGDE--RITSHSLCTPGCA--KT-G-SFNSFCC