From 212bbd43c19f645cccef34a608dc001fb694833c Mon Sep 17 00:00:00 2001 From: pvtroshin Date: Thu, 2 Dec 2010 16:56:31 +0000 Subject: [PATCH 1/1] AAConWS is working git-svn-id: link to svn.lifesci.dundee.ac.uk/svn/barton/ptroshin/JABA2@3416 e3abac25-378b-4346-85de-24260fe3988d --- .classpath | 2 +- IDEAS.txt | 5 + TODO.txt | 3 +- WEB-INF/lib/aaconservation.jar | Bin 0 -> 135965 bytes binaries/aaconservation.jar | Bin 135965 -> 135965 bytes datamodel/compbio/data/sequence/Score.java | 77 +++++ datamodel/compbio/data/sequence/SequenceUtil.java | 10 +- runner/compbio/runner/conservation/AACon.java | 13 +- .../compbio/data/sequence/SequenceUtilTester.java | 26 +- testsrc/compbio/ws/client/TestWSClient.java | 37 ++- testsrc/testdata/aacon_result_single.out | 2 + webservices/compbio/data/msa/Annotation.java | 10 +- webservices/compbio/data/msa/jaxws/Align.java | 7 +- webservices/compbio/data/msa/jaxws/Analize.java | 38 +++ ...tProgressResponse.java => AnalizeResponse.java} | 14 +- .../compbio/data/msa/jaxws/CustomAlign.java | 14 +- .../compbio/data/msa/jaxws/CustomAnalize.java | 62 ++++ ...ileResponse.java => CustomAnalizeResponse.java} | 14 +- .../{GetProgress.java => GetConservation.java} | 6 +- .../data/msa/jaxws/GetConservationResponse.java | 37 +++ .../data/msa/jaxws/GetJobStatusResponse.java | 7 +- .../compbio/data/msa/jaxws/GetLimitResponse.java | 7 +- .../compbio/data/msa/jaxws/GetLimitsResponse.java | 7 +- .../compbio/data/msa/jaxws/GetPresetsResponse.java | 7 +- .../compbio/data/msa/jaxws/GetResultResponse.java | 7 +- .../data/msa/jaxws/GetRunnerOptionsResponse.java | 7 +- .../data/msa/jaxws/JobExecutionExceptionBean.java | 41 --- .../compbio/data/msa/jaxws/PresetAlign.java | 14 +- .../compbio/data/msa/jaxws/PresetAnalize.java | 62 ++++ .../data/msa/jaxws/PresetAnalizeResponse.java | 36 +++ .../data/msa/jaxws/PullExecStatisticsResponse.java | 7 +- webservices/compbio/data/msa/jaxws/PullFile.java | 59 ---- webservices/compbio/ws/server/AAConWS.java | 15 +- .../compbio/ws/server/resource/AAConWS.wsdl | 292 +++++++++++++++++ .../compbio/ws/server/resource/AAConWS_schema1.xsd | 339 ++++++++++++++++++++ .../compbio/ws/server/resource/ClustalWS.wsdl | 174 +++++----- .../ws/server/resource/ClustalWS_schema1.xsd | 141 +++----- .../compbio/ws/server/resource/MafftWS.wsdl | 174 +++++----- .../compbio/ws/server/resource/MafftWS_schema1.xsd | 141 +++----- .../compbio/ws/server/resource/MuscleWS.wsdl | 174 +++++----- .../ws/server/resource/MuscleWS_schema1.xsd | 145 +++------ .../compbio/ws/server/resource/TcoffeeWS.wsdl | 174 +++++----- .../ws/server/resource/TcoffeeWS_schema1.xsd | 145 +++------ 43 files changed, 1628 insertions(+), 924 deletions(-) create mode 100644 WEB-INF/lib/aaconservation.jar create mode 100644 datamodel/compbio/data/sequence/Score.java create mode 100644 testsrc/testdata/aacon_result_single.out create mode 100644 webservices/compbio/data/msa/jaxws/Analize.java rename webservices/compbio/data/msa/jaxws/{GetProgressResponse.java => AnalizeResponse.java} (59%) create mode 100644 webservices/compbio/data/msa/jaxws/CustomAnalize.java rename webservices/compbio/data/msa/jaxws/{PullFileResponse.java => CustomAnalizeResponse.java} (55%) rename webservices/compbio/data/msa/jaxws/{GetProgress.java => GetConservation.java} (73%) create mode 100644 webservices/compbio/data/msa/jaxws/GetConservationResponse.java delete mode 100644 webservices/compbio/data/msa/jaxws/JobExecutionExceptionBean.java create mode 100644 webservices/compbio/data/msa/jaxws/PresetAnalize.java create mode 100644 webservices/compbio/data/msa/jaxws/PresetAnalizeResponse.java delete mode 100644 webservices/compbio/data/msa/jaxws/PullFile.java create mode 100644 webservices/compbio/ws/server/resource/AAConWS.wsdl create mode 100644 webservices/compbio/ws/server/resource/AAConWS_schema1.xsd diff --git a/.classpath b/.classpath index 7833d32..ab5b4be 100644 --- a/.classpath +++ b/.classpath @@ -10,8 +10,8 @@ - + diff --git a/IDEAS.txt b/IDEAS.txt index e2f9f7d..f9f65fd 100644 --- a/IDEAS.txt +++ b/IDEAS.txt @@ -41,4 +41,9 @@ and if it is so, then use the family) /homes/ws-dev1/servers/Test/webapps/JalviewWS/WEB-INF/classes/vamsas/pl/bin/jpred3_submit_concise /homes/ws-dev1/servers/Test/webapps/TestJWS/WEB-INF/classes/vamsas/pl/bin/jpred3_submit_concise /homes/ws-dev1/servers/Test/webapps/JalviewWS-back/WEB-INF/classes/vamsas/pl/bin/jpred3_submit_concise + + +JAXB - cannot serialize Maps and instance variables in Enums! +Best replacement for Maps is a custom object for key->value pair and a HashSet for storing the pairs. +JaxB cannot serialize instances of generic classes(?) \ No newline at end of file diff --git a/TODO.txt b/TODO.txt index b6d15ed..66b5984 100644 --- a/TODO.txt +++ b/TODO.txt @@ -1,6 +1,7 @@ TODO: -Publish jabaws-discuss contact information +Replace conservation.Method with server.ws.Method +and try building WS. If this does not work - get rid of Method Output file parsing for stat reporting cluster engine stat of www-jws2 user diff --git a/WEB-INF/lib/aaconservation.jar b/WEB-INF/lib/aaconservation.jar new file mode 100644 index 0000000000000000000000000000000000000000..c41612e4f35a604d2bac7cf6b05bc2406d101c2a GIT binary patch literal 135965 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

1lKgc^YLQ!QJd|g(7^o;3C9J{F``Bd9Q}3 z3+NfD3bVqtXtcyjf8<(z5J``Qgs>IXdmNgg-D%)3XJ>=r0R<53mDVW{>D|=-R_}FYry_6QICq@11Gg)dnHVeDg?+m zwHYcX|GOsocZeb>(7AAk;xm~o+yExgEEUsf&y~tX;X8O))BB-)bP3EJDTZxa3mFW% zjFH$`lm(L@Iz627uLNeOU<<2gior+|k@6aJaGpiHl}r|XG~1|f5qPPkmku)2G$?0# zQ7K?0IBHB=2*|BfQCPRqLd5576hpi7MwzNK#c*cXwKbYy?{2R{!H}L2m)f?Sd!Uf~ zkmI4NHOh=M9{H3}b1PZ-Gp#id7R#NIk2iVFj(e%rsV*%*<4%6=qk6{mPf8V!QLYpX z#R6$Ra7BuiWij7!V&zIDv1siF0@k!;=N||;M%d93vK>Y z5Ph@D_ac}3jN^kHFDkU8?9|c*`mKc_qb6bN^3;+Mw%l4VNHVu%#jE=R4Jn`|Kr=cJ zZ^w2{M)-~>xKF+g$A@XB>>dTNH=h{Q?26-5Y29Y7&7x@r1@8lu-||N9i-h1==Flqm z*|BZl{Y;8{@Qau2lke^=zA9^gmshGAKY z(7!E{F#(Y%`lFR`j^MjDoCKt8rSw3q$h@Egpqm8kk1UkZ6eT5&j|O%6BYOGeSHcAW zOJFPTo6$U$b|VaNqA|#O82>!czKFQ4{>I3=)~&Ukx7|c|H>64RTrIv|^AN4jsTugWm(RMT ziXR#bW$+%@Qh3}71XtY*%k~bz_>B_?1&o&3B?N{U%+99?Vqh^|w{SCwQ(Ufw2mF{D6+x;A+Hm|t7M3$VLL;$3C=%Ggz*jTMD)@Qc>@Lt6oBSrcb39F%x`92!Atin8H7TNo|c67adY!A zcRU$G%iL2iQ2vGv^d0KsegOC@?!UqGN!Hkh_z*wY!TaFz z>yf`sRe+S0AR6mIvPgTG-;00Z8yKw8OIa%X@{A&i7p%iuSXTk}{3Ke~ z@AiuAh0`ZkoxU%mg2ZaiMP}sEFIc@Dg#X6F?lDkI3q-gzgE^Ph|WqI>eoDvB`z|Bl<=uikNozsoxW#?Mh^O>4-dj| z$TV|u^1&xEM&hB_w7wE$u20+W;}yO_E{8rR$VS54)j4ssVqv7tVwip z5_j?`vAu7}6SfL)ydbN&)jQj~VEu6mSM*Jy(&k@Zlz|f(*u^bqgvDY39GJyi@>NfS z*`tOF;UMJ&iHH=~)q~obq*zBuiDl>ep}jcMn!S{HXnCcA=f4F7>v$f5c+)Er>1hs) zr3@(v^1pnCODP@mlU%44NrFFMANY_vr}sq3iR@Zs3OY@w*D?ztQwm~5O%!UERs)<$ zhDWuNgH(DH5l|OL5PG40rt~9-0}W>N!*;m5W7~Garz#DKRUUh_V#B2$WmA%wj&MhZ zZr+h~qmx&`-vV-8dl-i!4*)3Z;5DIqI}lHjvg^vlwCpOOlJvOQ>xt%OdWv^o)xuL(+?Hb@J#tw7QxYs z#1$fK2|cqNlf6?!o|Cl}h+F7Uy@40>(LohK@u~+x&kWlsl0fqIVaWql zU2z+a?6pJ8_R+U9{%zUo`{f7l9ZBLlxwnYxQhmDUOXeDS)3N}!g=d3ch%FdNob6TF+{$x3d|n+3?kMtB>z@=13|; zBE5`}MxD5#&?{R#e2pEW$qre}8Kp6yiN%6yAyvk{s%#%syS}b$ z81+-3{Kc{|o8_|i9Ga#(9)DSpC&gaS;KBV%PS?wlQvTRz(%vjsn%$kcry<*`KzvO2 z%4<)!@0(oK(LML7iV0Cs(CDX1hV~M0$R~4)9l!-PzNwE)?H&S<8vtdCtKo)QsDO5U z%Y)*%X<24WE=X(kj(|1Bez(H-7I9S%E(N+b!LBSXd$KjDF@ zS|49JL}=v+x9lvCJLYF~RJimD+JyysK@|{Fd$QMzbae+6U#x#)(LROKKC1BsiM`l& zI0P4O$|b)qq%-4}H#Ovm(B?>CzkAl5X@1k@$-WbidZ{zrc1OQG!ZC3}B;@oPrmYu+ z)Je z0f-LQAUks8*8{f_X}W!tE?f7lSmt}zquQ=BuqVre$s;&EE)g%XS2U>n8i!R@IZ~(r zagqu*FC3SxgjL><;(wLeN>`wILKsf;G2~rl^ylwr_ySfPr-599(0fd$v4%kRE477DlZxo$FvlFTdpY3D0uvH4I>0!43S_#zb zD0hzh5^?~v^-)47xdK(JD5)O?33@6g=8p(F=rE%@GL0-6_cRLpc%NSl++X-=sA(3d z&R%EWSp+)lUk;&*ihFk*yQM1Z+b3B{dyJ{%Tt`@U+@;rrF^t$aK4lL0(8}8mwDfpo zbh1Nw52(2?);~W{RXO8!PlZX zWo5n>t2;$^o+#buNUll3pvm#KFN4|}Ab*Qjc=H-EkS+1+vJ(f&UP#z=OG|}eJcQ7) zvh%{89pYi4#V;nOVN9^31)Q?npY3_u#%)am8AW{?+BAk;D7&~vzfI$4%lWzY5ZWWx zb-5@{7MNK!S-qI#my7bi*WIydnC|iK3tTbkp>Zlk#oiTiF!# zxuM?C_g?rli)`Hi!>U+H^jG&P;aqr@=myi>XBjr)g}U8l%EXEcOvgWihC-hHME2LI z#V+_AaUpi3{`2B0_9V1Q+o|fP7o`<#kGHhu_79YQe-;e*_%or2aYm9xhfwa+Goax+ zO003dkP9`Kx)-(^X# zeN?WZEQ=UYvu&|u*Ek{et z_gi0^^2Ba*Az~y@0%cyu!ebl4(gBrC?7HieQ3Cp0S(#3I`fKDQCh18p1^l+5#dbzTa;jH;$RiEbYdrVnz%CtYsu8TDnm z4D$oL<~aV8^ozrGFaFHxE5vSZXW{dA6N)#=ZP^3dUq$$9SvWJ&kSEk0NaKy5fEUId z*zh|t(@Rxw7W^~zWoyC~$iG5f`mVV!O4~wRt7sthRmP@OH)`|uezj5af?%(VJb<7K zmIi`mMAD5-sn`Jusg`moHOQ_*Bc)uBLC9hzxH;zgkJ|6$c_b4gs+~KwM7J;eD^6X4 zRvm@3prtx(BYnn}-6&gj{~Z1nLA+k$B4)zIS%oGV*O(+JrX|BVgP&pi6KnUc9Nq%< z>342!@mhEa^yq&fQ99*UFOmYwFtft5S`gRE zJu74;i|N>d?UozQBGP2ytvnwxI3wb$1-fESg;6n}Ju7g5x8Vv}Fw=!~^Ah9Aya?~) zT5<6uenR3bsz;)=@54&V-`|jaAT2L}ztvRgBPjg*M5f9ae{iQx?M#5PE8H<&u2JzS zjeSPxw>ElT8f_gJeUiZ6$hWacU;FJ=o^~*6K|XcUj!$P{Ue4OZdE|RD95Aa{pA3Tu z`>nI$dy7CG>}gJ^))8zSN&-;ZXyinl_dfS|gTyeSy%p;R5MO9*orYZ!UkU`CZe?5{ zOxHSzkDbw}sL4LQ-mpPWOW~F;?q4!{Q`;~01tYotymRT%yB&3695gsG^d_KX8Rk^a z50}>2_(P*UUyVVPq}zYK1V~z^hCD;L=+G@;UA9iL8BkUt{DQ+5q8~?;A`cfyH=W>7 z8}KPy#EJg>1aV@?tOPzX>qB>Bkm?z2AiwU4q;KpL(5zNPxJa=0ZTdY&_f#htA&$)( zTEf3x;UQ?W;#SV-pj4Xa8q+56h@nB62B40ehJD1BUYX%qEHiZ9OJt~`fYl$G0%9oA zv1P%uk}22V%PzH$N&I_m!MWSi45L-b0IMvsiyLj(;}+MsfLO09J#?lo9Xh!SUYZ2K zt_@8Kixl*{RXzc$Gu!FK$g$9u>H+yc{04|sP|p_D{kLojYeN;Xe=IrR6(S(C3Xp$d zb|WQtH5uxQn?A>-TN6G=O zOOM|eb*Hul3s8z2O2!oT9zB7vG0%Slt^*2C1}f&SgZ!K6Q!}Mr^Rn$o>LBR&b@d87 z)THA-mz0iFYpV1m@_F&_S*cX`|GA((^p*=mK$(>zEu&o) z7;fg8Tdhz-Q8s;x={;6TerAhG%h$bgN281Rx@T%gojdSRp099Q0<*=X(rpj<`Tj}Q zoP=wgsq5@G+TC|U904-zf2mL1uRtq)x|LYLAou=U#sKIM%kmW|vX*b()wxJ&^+cV) zndTV7pml{~*Gn)~ILTVw=FKiyhgW3I@GcQLrMi;btkviF*Owm>o*0JL>AsuSm7FyH zIc2!?dQ<5N{Ho9$t9EUywKcA5&GlWM1`u4&uOl-q+8xo_Qq2x|7rNoET6U%Qc7uo4 zio#Y_AUh#`U90x&&@P!7wdi$*`&t%xG-Wo+~!WjRjBfoMA%AK8j;1=K_C`rScH3r_S;`8ifFURJa6f? z&~OWWvza@h+Q}%jVmB4+EW4MI^$j5+&_L;1y`MRv!^bxI!h@LRL z=@4whYl?xIbO||Gf)7I38_M#7I@Kb6!O}y1)lV8JL%)Py4!F+3Cx|2xuwIol2GP9g zM}$!5HSbb-US{^5H?7kjdOrC;%NV5P?O&CaIi#@6oZ6ciet=!CJzQ0%n17s; z$JSlHTzN%!mx^S-(I>w+c?1ZlUw2V#XZu)bzMuSDMXFmpKo7x z$Qm(b4xdOHTlaJ+tR#z|JW?#m=Cq;O>VPHut4Di3{=Ad}{}?-yW8e#-qf*#8ozYa> zDL;v++mV4JR;d7;+@G81?6HkEXfTdY{Du6l$3>mj3y}AyU|`|oU||2Q{}bqCZ2zCa zEJSQg6bzmIMQQynP`5kHTCuMoOKvDs5;mPYA$nlM(*PmVP=gf2d z?xg(aS=r0iqT?HG?_Zl7KSrUS^2E`LOv7gfj&CE}pGrA?JmP&x1^Ok}`wx*&mu31J zLVa?51CV-$lT^kJ|C-r^!cUKIKGlMViqp{_HXbVM&P(LSPE(->4axgN`tU(J(Tmqq zr_|3r9OC{3^Kp?=`-clEeukV)<@5XC? z+u!EynqCYZ9Osw5`*Jc*wzqO1xmLuZFjm^4_`m9f@3{$r5d4!C!#-E;wq@@Dl>H;=n(Gu?f_HyPuxA6 z9j4{pirF1ouaMHz^}dsf4UwO`wM+HtAe>a28-JT?@k_+4UO@3xkY=k(-Ic-33unE* zcVt(>Oq^Z}&e?VinLPoc_|uQeiP&1(54UvPO=9*FvFYp^b z2k-7P^5+}_XVD>40>!J^4e#Q_Ndo~P6OJFY>~lgZjnjX4;_4h#A8J%JkTx9mh?jQ zgHDow{OkY)@NlH50Qd#_hj_KmRz8&pSrR`pOq?i>5{Zw#P6X#Tb| z!U{9EDK(1zPwJ03RHp^Y3_VaojB>4d$x&pMaa~pzd&m_+NEUUGyP{Vdv#w$bAx$^t z7FsLCGB$;TicM9H*?V{V3ld~REDn4T&ZlkCSKOC?)TaxJ0w@1#fFd z=NQ4PMJ;i91i891E`MNcO=t*}jSaMXULGCbb903lA7Sgo-}jM1?{$$*tG}ci$waAd z)9YY{l=5n1;m!C!&Wg)I^qpR<mE6(|a0ox4@`pKe}FqG%9t&Yq{B`5F0pzS-PBDzCxD=|0ssDodEe{NZfIjC%S?@ z!CT1?CXX;gpISUbWRrM-wa1p8Ybn`wnlX8Ean~tGVQ?CkB`LIQ9k8P(LwxXjioE{*eOPt+vxVO+t&8S(yx_r8kgu2LPTJYb96EH_yE2 z;akIC^59ju)>dG{;0fUmMBdjYyha#htO?iex#jou5SHfX2H{iccovwKCspK)Y}|BW zGFvTQIZ&&{y>id~$h?20)tK2^93!;pRjnbm_jysES>&6z%FX108i2PGgU%Vbi@{4)<{>`2y* zbjTy63#U=qWRGrE_D3N;sW`TB=AaSfOFwT~!s7&6r{yc7_}soP&Pc7skiry#U0|KY zuty2AH(mwDhqrh1SQdfMtCuQX~g0X?ZxQt$U*V7m2gtgdb&8RtLa$Af8Z*U z;zX?ujgTC}eZW1Q*m`%@)PSW@M15vjVLfRugEmsWH{Z1NS$Wj zNkifRFVJ++_&Hs}1q!q8gY`0S+lB4(Tdg+<}TTo-dRlVNpuL7a^W3&^Br9jdeH`B&ic$ z3u}hrJWK6(CuAlXF$X9bV%(}p&ovt63N62@`~_Gpjq<~Lia?-bb25jK6^8HeX=4w3 z(LH!d@idL5ge0-~=!)cyM3G?)!t*q==iSmwqWn}LHFz^%al_O#NX4EK7qhHi{iuzV z@{C{_WD0~%Ke3Y+zL`B-p1Sa{b5aouo8=Wa3;95EnOya`l40?v77iqLQ^s+dC|Xb@ zD7dh^E82%B9q52aF{7JMBFs%$5E3rGG#baQm#o|)=h*z>93r#KKzpL>&vs&0sG?96 zv9HZUC3rv)z2C;EDjcX=99$iZ9^8{lTMul=9XnwP{B*?hBdVy3c+aY>u6}M<>ZDuz zUiC!YIi#ZKGxP*WR9|TAJW)-0;UN>$C_SyZ98DJi87gKO#CJXdjDQG&8{#-5U0k=R z6NF<^WQ!CgRa(NVU$o#RG&)qWb3BuFb2Ot#o|K!NmYZR)dy7!DxGw`bVi?xcz=#Qt zw{>jbK^W@1XLj+NlVxs_2Pr785WiMzVxE;#in=q7*K>0$K@T)5tbmy_H+g2Ra+^@7 zcT@9x;=oD77LOo=y?hO0En1`M3)a8vJ7;Apjp{G1Ue~*~p>bsAYS6}zaj>|q=^zmh zq+*R)eN*QQGq1H{0Tk%?>99=F<#hK_*K%T#g(>&5=D~%sjA@&yH#F6q8e6s?g8FGm zogNwy*E|EzTa3uyCaG^dsR~ZrB-f@!ij)koxgk8`9(`Ysm7HetWjR#j15d9bKn{WM z)cLXQovxDXVliC~5m!w^coS)qxa^TzaP9ifK%_X7LnjQ@v90eLBwfWB0a-yW8s9|P zg&(S*L3)R`iaAHrGbly(z*PC*se19I6G4`^L9}t*wmeDLeKWf{e3gw~c-Z%O$S+mPNDf12IVmNA*?ca*e#I{Wv;TzQ& zl(=w+)3DVq$@v?O-$iP(+_q{2xiF=y-Yded&MGUaUx+`{*U+VL(~j4dk3-6_fA42g zPLs->k6`Lel8o1#Zn_R@VnR05HGX8pmxx8NK~t3o8bBV@RTRj3j`ieE36Hc~7) zED z3H!CgvhFA$R%&BN_HnV;nbAsTcB^T#<@t#o9d}t&D;Wt-7#YLB$vO4a>ZQe+`<`u` zQX&*km*tSBaofFqy1To+uEoo3E`{$pnZR0uz4%zB`jB!Sw~oU3G$xI>pbYYjg&grY z?6!P9cIFo7a+|6Y=L7JC=Qxc93WA`5)^9iID2bJbexKXibc(ak8{LWbK7jK#;<?%8u!b!sj)1Ryt>JMbuD!s+hwi%G*s$;V&5_Qv=Rn+#G;hUA^xmltCvc_ zf{t|8O|z9!JJL`&_J9smn&h!y-mUiU|A|kKfMW0I<<%x)5$mNDSIuE1kq03mre(_M z<;{d&ADy0n*z4BsbwF%zI*CWP_GZEfNa+dD49NJ)Q;2Mxy|V4H-#y~__*L`u7uuv` zmjv)+mqTOsn2&^4q<2nMM7}i!o9NLQuf#5hS8}^4u4{oJzAj>cBC*alM-4Iq}J}nMrh=Sopn*^b+xM*fnPK)(pa)Xh?Ucr|B=H zWnC3xayz91)f7x|+e4UA)b8$ER!ICfOY>k$!HNoeoYb!nu5R6x zf*;oJRoQ~w;EMSpCi##NNM2x<;b+ru5&X@l0UqVx`xcO*fmo2Jb%pL!SJ>;bE%`sE znB|^`iEf3akS;D2TX_J?bIsEhV*_z*74HUP4C|g(ubc(m*9z!cEa#(-lNLRYf4gPg z&-e@85rS^2;F{`4Y_^4{yXzA2`lrUe+oT6HL-NPZnF3l4USkHQwtG+w?1sweq~p1D zORT});-UNq5oCX3bL=sO`noUG^~&@)hRgK9SNw&l`edtqWs=OZCq@0sZ!|sR!e4Jz zX*gXN#*zPzyDsp|DIv@^%@I6-1{x>dW|TLe`6H#))5FQUJ(y( zb~_j2t8ul(pMADNnccoTSc3$32bvS#T)^h>_d8#=-qPE~V?TZV^$_yLDIfwb2Z6c9 zz|8r{{;}Q*{o}qDN+mUh9k760#6^|Z5&yJP1ljR}DPK@;1_|o-mE!NwBF~C?N2fS9 zqKj_d%BoM53&9J))k&8ZgOkAD;}#z;11}7n&%n;Q*jfN_Fv8!`#%JX*%|y2n$)8SX z&FC15atn-?7?+E3i{CF1bC<+v>T*k{99C~@s(mGCo(#dJMOsX$v0yKsmA+rfnOqK; z2#zo+bo_`c!%+b$!t3){5U2E(v-aROd^hXF%^-!bG}Q|9oC;X{ ze7QkS7#9GP9lh<8E`GN4&EaNM>npAe#HCw2-wt`$?G(H-^$7FZ&lg&IqwEyJ_LkG% zJRShmX}=amD}dPrjJ8Q`7RvR5?ED4O3Vl!9xq{v*lU$qYko>|(Gl_%_%hb!KxFf2_ z9j7DQ>OmSCpIH1JNZ;1n594-7S+cFP{Hgp`|5+UGBsZ(cSRUpuz?4Wo7Kpb-n3XBP z+68iTPWmg`RVRNW8@c)Ec6p^DY;SW?3{@Ge4;hi*&dQth@u687&dIF z+F%B;4Sl~vFiZXBytQ}yR*nwO^>2#5cRHRg0T`Gc4;UEL z|I=w=Z{uofr)+HRWa|9C{3e%L-aaai4f#A>YbR@4-B@nmnEDwv?BMEXL}-IUKfuWW z!x8o5GL2?U_--~< z---K7p3M&-@1M`Jbi^}XGatuXeXrB*W`1lEdGD(S@@R_C&t4WB*zIRVZXUmXF;aEu zUfd?+_T1HauZ{Up!2;M*zV#d)lX_zCbqtFLFk?ZFe;B0xkG!pVb1p>IB<&(%v95Yg2g5U^1u zzReCDcm{>f9wLk(P9)A8N*BtzOu^xjkHthgJIm#f$2S28_L@w~AgJWsoKnLnom&85 z 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 BC@KH| literal 0 HcmV?d00001 diff --git a/binaries/aaconservation.jar b/binaries/aaconservation.jar index db61ab7f219009b86a656b21d0aa855afd384f40..c41612e4f35a604d2bac7cf6b05bc2406d101c2a 100644 GIT binary patch delta 760 zcmXxhOK1~O6b9fqXJ%+qo!Ww;ja4d2C)h@6eJ~WoDvC<%!#=cX1qmoE(nW-BgcRwb z-3Sr}jiT`h5s3?HkjX}}5(KHG)Qvl>4^Svpq{8HB?tjN@&Nu%#_s$uTNLDA3)kbef z)oK*+dp9K1=@>OrAm*ifV%!_q6efj+-2D<0_B%Umoa*Nro%`*A>{h`F2AFJd& zPnUno&=!jY?mM(qlN_^22 z<)Y87Gd4O60b*Pj-yEcXI2Au0q@6%CNUcDn)!@7d($#l(Jmiuk{)~9kr2|N^F6{zV zT;B$cn0INvnf!jr|wN#{Y zNJ1sAl`46OuS{prx>Tl9K(6CXMChwFMM>by_D`BrHe{{YpKE$9FM delta 760 zcmXxhT}TvB6bJA*_s*bejVTo6W?>Z0l5UuNFi4R_QL$;JSyLIrLZO5Y8^}Vi(nIA- z5X(?o)bI%zf#uRhu#+Kd{Zt*DQvL)6SH4PYQ+@WT=j^^C-{wyOp+n%?dQ zb{d_Hz=)Y^2HFOna$v?vOT>mAu13-v`MnaTAK%0ptMA&IHEy>YsZo@`Dn;qAC+Gb3 z;zXU@J?_hlUbEz@-c2mXy|UR?YjFDVhffUXo$Z%+K4-`+roXkyM2AXlLgfjez%81*hYf%=Qdtqu|kWAY_2xePIO3`yTI9y2z8 wWQln*J)Dgqnc_@-sTP&V&Bs*l<{7m*EPi1_V scores; + + private Score() { + // JaXB default constructor + } + + public Score(Method method, List scores) { + this.method = method; + this.scores = scores; + } + + public Method getMethod() { + return method; + } + + public List getScores() { + return scores; + } + + @Override + public String toString() { + return "Score [method=" + method + ", scores=" + scores + "]"; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((method == null) ? 0 : method.hashCode()); + result = prime * result + ((scores == null) ? 0 : scores.hashCode()); + return result; + } + + /* + * TODO test ! (non-Javadoc) + * + * @see java.lang.Object#equals(java.lang.Object) + */ + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + Score other = (Score) obj; + if (method != other.method) + return false; + if (scores == other.scores) { + return true; + } + if (scores == null) { + return false; + } + if (!Arrays.deepEquals(scores.toArray(), other.scores.toArray())) + return false; + return true; + } +} diff --git a/datamodel/compbio/data/sequence/SequenceUtil.java b/datamodel/compbio/data/sequence/SequenceUtil.java index 5946e78..c995585 100644 --- a/datamodel/compbio/data/sequence/SequenceUtil.java +++ b/datamodel/compbio/data/sequence/SequenceUtil.java @@ -25,6 +25,7 @@ import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Scanner; import java.util.logging.Level; @@ -458,15 +459,14 @@ public final class SequenceUtil { * * @param results * output file of AAConservation - * @return {@link MultiAnnotatedSequence} + * @return Map with keys {@link Method} -> float[] */ - public static MultiAnnotatedSequence readResults(InputStream results) { + public static HashSet readAAConResults(InputStream results) { if (results == null) { throw new NullPointerException( "InputStream with results must be provided"); } - MultiAnnotatedSequence annotations = new MultiAnnotatedSequence( - Method.class); + HashSet annotations = new HashSet(); Scanner sc = new Scanner(results); sc.useDelimiter("#"); while (sc.hasNext()) { @@ -484,7 +484,7 @@ public final class SequenceUtil { Double value = valuesScanner.nextDouble(); values.add(value.floatValue()); } - annotations.addAnnotation(method, values); + annotations.add(new Score(method, values)); } return annotations; } diff --git a/runner/compbio/runner/conservation/AACon.java b/runner/compbio/runner/conservation/AACon.java index 5a1d752..ce4d293 100644 --- a/runner/compbio/runner/conservation/AACon.java +++ b/runner/compbio/runner/conservation/AACon.java @@ -20,12 +20,13 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.Arrays; -import java.util.HashMap; +import java.util.HashSet; import java.util.List; import org.apache.log4j.Logger; -import compbio.conservation.Method; +import compbio.data.sequence.Score; +import compbio.data.sequence.SequenceUtil; import compbio.engine.client.CommandBuilder; import compbio.engine.client.Executable; import compbio.engine.client.SkeletalExecutable; @@ -66,13 +67,13 @@ public class AACon extends SkeletalExecutable { } // HashMap @Override - public HashMap getResults(String workDirectory) + public HashSet getResults(String workDirectory) throws ResultNotAvailableException { - // MultiAnnotatedSequence annotations = null; + HashSet annotations = null; try { InputStream inStream = new FileInputStream(new File(workDirectory, getOutput())); - // annotations = SequenceUtil.readResults(inStream); + annotations = SequenceUtil.readAAConResults(inStream); inStream.close(); } catch (FileNotFoundException e) { log.error(e.getMessage(), e.getCause()); @@ -84,7 +85,7 @@ public class AACon extends SkeletalExecutable { log.error(e.getMessage(), e.getCause()); throw new ResultNotAvailableException(e); } - return null; + return annotations; } private static String getLibPath() { diff --git a/testsrc/compbio/data/sequence/SequenceUtilTester.java b/testsrc/compbio/data/sequence/SequenceUtilTester.java index 742fa24..f526578 100644 --- a/testsrc/compbio/data/sequence/SequenceUtilTester.java +++ b/testsrc/compbio/data/sequence/SequenceUtilTester.java @@ -24,6 +24,7 @@ import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; +import java.util.HashSet; import java.util.List; import org.testng.annotations.Test; @@ -160,7 +161,6 @@ public class SequenceUtilTester { assertNotNull(aseqs); /* - * MultiAnnotatedSequence ma = new MultiAnnotatedSequence(); * Map> val = ma.getInstance(Trial.class); * List list = new ArrayList(); list.add(new * Float(1.2)); list.add(new Double(5.662)); val.put(Trial.one, @@ -181,9 +181,25 @@ public class SequenceUtilTester { } @Test - public void testReadResults() throws FileNotFoundException { - InputStream inStream = new FileInputStream(AllTestSuit.TEST_DATA_PATH - + "aacon_results.txt"); -// /System.out.println(SequenceUtil.readResults(inStream)); + public void testReadAAConResults() { + try { + InputStream inStream = new FileInputStream( + AllTestSuit.TEST_DATA_PATH + "aacon_results.txt"); + HashSet result = SequenceUtil.readAAConResults(inStream); + inStream.close(); + assertNotNull(result); + assertEquals(result.size(), 18); + + inStream = new FileInputStream(AllTestSuit.TEST_DATA_PATH + + "aacon_result_single.out"); + result = SequenceUtil.readAAConResults(inStream); + inStream.close(); + assertNotNull(result); + assertEquals(result.size(), 1); + assertEquals(result.iterator().next().getScores().size(), 568); + } catch (IOException e) { + e.printStackTrace(); + fail(e.getMessage()); + } } } diff --git a/testsrc/compbio/ws/client/TestWSClient.java b/testsrc/compbio/ws/client/TestWSClient.java index 3928549..3eda42b 100644 --- a/testsrc/compbio/ws/client/TestWSClient.java +++ b/testsrc/compbio/ws/client/TestWSClient.java @@ -1,5 +1,6 @@ package compbio.ws.client; +import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; import static org.testng.Assert.fail; @@ -8,6 +9,7 @@ import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.net.URL; +import java.util.HashSet; import java.util.List; import javax.xml.namespace.QName; @@ -15,25 +17,26 @@ import javax.xml.ws.Service; import org.testng.annotations.Test; -import compbio.data.msa.MsaWS; -import compbio.data.sequence.Alignment; +import compbio.conservation.Method; +import compbio.data.msa.Annotation; import compbio.data.sequence.FastaSequence; +import compbio.data.sequence.Score; import compbio.data.sequence.SequenceUtil; import compbio.metadata.JobSubmissionException; import compbio.metadata.LimitExceededException; import compbio.metadata.ResultNotAvailableException; import compbio.metadata.UnsupportedRuntimeException; import compbio.util.SysPrefs; -import compbio.ws.server.ClustalWS; +import compbio.ws.server.AAConWS; public class TestWSClient { @Test public void test() throws FileNotFoundException, IOException { - URL url = new URL("http://localhost:8080/jaba/ClustalWS?wsdl"); - String namespace = "http://msa.data.compbio/01/01/2010/"; - QName qname = new QName(namespace, "ClustalWS"); + URL url = new URL("http://localhost:8080/jabaws/AAConWS?wsdl"); + String namespace = "http://msa.data.compbio/01/12/2010/"; + QName qname = new QName(namespace, "AAConWS"); Service serv = Service.create(url, qname); /* * MsaWS msaws = serv.getPort(new QName( @@ -43,8 +46,8 @@ public class TestWSClient { // Annotation msaws = serv.getPort(new QName(namespace, // "ClustalWSPort"), Annotation.class); - MsaWS msaws = serv.getPort(new QName(namespace, - "ClustalWSPort"), MsaWS.class); + Annotation msaws = serv.getPort(new QName(namespace, + "AAConWSPort"), Annotation.class); // List fsl = SequenceUtil.readFasta(new FileInputStream( // AAConTester.test_alignment_input)); @@ -54,13 +57,21 @@ public class TestWSClient { List fsl = SequenceUtil.readFasta(new FileInputStream( CURRENT_DIRECTORY + "testsrc" + File.separator + "testdata" - + File.separator + "testlimit.in")); + + File.separator + "TO1381.fasta.aln")); try { - String jobId = msaws.align(fsl); - Alignment result = msaws.getResult(jobId); + System.out.println("Pres: " + + msaws.getPresets().getPresets().get(0)); + String jobId = msaws.analize(fsl); + System.out.println("J: " + jobId); + HashSet result = msaws.getConservation(jobId); assertNotNull(result); - System.out.println(result); + assertEquals(result.size(), 1); + assertEquals(result.iterator().next().getMethod(), Method.SHENKIN); + List scores = result.iterator().next().getScores(); + assertNotNull(scores); + assertEquals(scores.size(), 568); + } catch (UnsupportedRuntimeException e) { e.printStackTrace(); fail(e.getMessage()); @@ -74,6 +85,6 @@ public class TestWSClient { e.printStackTrace(); fail(e.getMessage()); } - System.out.println("Pres: " + msaws.getPresets()); + } } diff --git a/testsrc/testdata/aacon_result_single.out b/testsrc/testdata/aacon_result_single.out new file mode 100644 index 0000000..80a32a1 --- /dev/null +++ b/testsrc/testdata/aacon_result_single.out @@ -0,0 +1,2 @@ +#SHENKIN 8.653 12.481 12.481 12.481 12.481 12.481 12.481 12.481 12.481 7.862 12.481 12.481 12.481 12.481 7.862 12.481 12.481 12.481 12.481 12.481 12.481 12.481 12.481 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7.862 6 6 6 6 6 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 8.653 7.862 7.862 7.862 7.862 6 6 6 6 6 6 6 6 6 6 6 6 6 6 11.339 11.339 12.481 12.481 12.481 12.481 12.481 12.481 8.653 8.653 8.653 8.653 8.653 8.653 8.653 8.653 8.653 8.653 8.653 8.653 8.653 7.862 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 11.339 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 7.862 + diff --git a/webservices/compbio/data/msa/Annotation.java b/webservices/compbio/data/msa/Annotation.java index 45c1a68..fb8436d 100644 --- a/webservices/compbio/data/msa/Annotation.java +++ b/webservices/compbio/data/msa/Annotation.java @@ -1,12 +1,15 @@ package compbio.data.msa; import java.security.InvalidParameterException; +import java.util.HashSet; import java.util.List; +import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebService; import compbio.data.sequence.FastaSequence; +import compbio.data.sequence.Score; import compbio.metadata.JobSubmissionException; import compbio.metadata.LimitExceededException; import compbio.metadata.Option; @@ -59,6 +62,7 @@ public interface Annotation extends JManagement, Metadata { * is throw if the input sequences number or average length * exceeds what is defined by the limit */ + @WebMethod String analize( @WebParam(name = "fastaSequences") List sequences) throws UnsupportedRuntimeException, LimitExceededException, @@ -102,6 +106,7 @@ public interface Annotation extends JManagement, Metadata { * is throw if the input sequences number or average length * exceeds what is defined by the limit */ + @WebMethod String customAnalize( @WebParam(name = "fastaSequences") List sequences, @WebParam(name = "options") List> options) @@ -146,6 +151,7 @@ public interface Annotation extends JManagement, Metadata { * is throw if the input sequences number or average length * exceeds what is defined by the limit */ + @WebMethod String presetAnalize( @WebParam(name = "fastaSequences") List sequences, @WebParam(name = "preset") Preset preset) @@ -169,6 +175,8 @@ public interface Annotation extends JManagement, Metadata { * thrown if jobId is empty or cannot be recognised e.g. in * invalid format */ - String getResult(@WebParam(name = "jobId") String jobId) + @WebMethod + HashSet getConservation(@WebParam(name = "jobId") String jobId) throws ResultNotAvailableException; + } diff --git a/webservices/compbio/data/msa/jaxws/Align.java b/webservices/compbio/data/msa/jaxws/Align.java index e380bab..7f021d3 100644 --- a/webservices/compbio/data/msa/jaxws/Align.java +++ b/webservices/compbio/data/msa/jaxws/Align.java @@ -7,6 +7,7 @@ import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; +import compbio.data.sequence.FastaSequence; @XmlRootElement(name = "align", namespace = "http://msa.data.compbio/01/01/2010/") @XmlAccessorType(XmlAccessType.FIELD) @@ -14,14 +15,14 @@ import javax.xml.bind.annotation.XmlType; public class Align { @XmlElement(name = "fastaSequences", namespace = "") - private List fastaSequences; + private List fastaSequences; /** * * @return * returns List */ - public List getFastaSequences() { + public List getFastaSequences() { return this.fastaSequences; } @@ -30,7 +31,7 @@ public class Align { * @param fastaSequences * the value for the fastaSequences property */ - public void setFastaSequences(List fastaSequences) { + public void setFastaSequences(List fastaSequences) { this.fastaSequences = fastaSequences; } diff --git a/webservices/compbio/data/msa/jaxws/Analize.java b/webservices/compbio/data/msa/jaxws/Analize.java new file mode 100644 index 0000000..7ce56ac --- /dev/null +++ b/webservices/compbio/data/msa/jaxws/Analize.java @@ -0,0 +1,38 @@ + +package compbio.data.msa.jaxws; + +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; +import compbio.data.sequence.FastaSequence; + +@XmlRootElement(name = "analize", namespace = "http://msa.data.compbio/01/12/2010/") +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "analize", namespace = "http://msa.data.compbio/01/12/2010/") +public class Analize { + + @XmlElement(name = "fastaSequences", namespace = "") + private List fastaSequences; + + /** + * + * @return + * returns List + */ + public List getFastaSequences() { + return this.fastaSequences; + } + + /** + * + * @param fastaSequences + * the value for the fastaSequences property + */ + public void setFastaSequences(List fastaSequences) { + this.fastaSequences = fastaSequences; + } + +} diff --git a/webservices/compbio/data/msa/jaxws/GetProgressResponse.java b/webservices/compbio/data/msa/jaxws/AnalizeResponse.java similarity index 59% rename from webservices/compbio/data/msa/jaxws/GetProgressResponse.java rename to webservices/compbio/data/msa/jaxws/AnalizeResponse.java index 029a39e..f422adf 100644 --- a/webservices/compbio/data/msa/jaxws/GetProgressResponse.java +++ b/webservices/compbio/data/msa/jaxws/AnalizeResponse.java @@ -7,20 +7,20 @@ import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; -@XmlRootElement(name = "getProgressResponse", namespace = "http://msa.data.compbio/01/01/2010/") +@XmlRootElement(name = "analizeResponse", namespace = "http://msa.data.compbio/01/12/2010/") @XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "getProgressResponse", namespace = "http://msa.data.compbio/01/01/2010/") -public class GetProgressResponse { +@XmlType(name = "analizeResponse", namespace = "http://msa.data.compbio/01/12/2010/") +public class AnalizeResponse { @XmlElement(name = "return", namespace = "") - private byte _return; + private String _return; /** * * @return - * returns byte + * returns String */ - public byte getReturn() { + public String getReturn() { return this._return; } @@ -29,7 +29,7 @@ public class GetProgressResponse { * @param _return * the value for the _return property */ - public void setReturn(byte _return) { + public void setReturn(String _return) { this._return = _return; } diff --git a/webservices/compbio/data/msa/jaxws/CustomAlign.java b/webservices/compbio/data/msa/jaxws/CustomAlign.java index d258864..92c9bab 100644 --- a/webservices/compbio/data/msa/jaxws/CustomAlign.java +++ b/webservices/compbio/data/msa/jaxws/CustomAlign.java @@ -7,6 +7,8 @@ import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; +import compbio.data.sequence.FastaSequence; +import compbio.metadata.Option; @XmlRootElement(name = "customAlign", namespace = "http://msa.data.compbio/01/01/2010/") @XmlAccessorType(XmlAccessType.FIELD) @@ -17,16 +19,16 @@ import javax.xml.bind.annotation.XmlType; public class CustomAlign { @XmlElement(name = "fastaSequences", namespace = "") - private List fastaSequences; + private List fastaSequences; @XmlElement(name = "options", namespace = "") - private List options; + private List