Mercurial > repos > fubar > tacrev
changeset 1:c5d770f2afea draft
Uploaded
author | fubar |
---|---|
date | Tue, 24 Nov 2020 22:04:10 +0000 |
parents | bf92b6bd8b20 |
children | d71d20536d3b |
files | pyrevpos/.shed.yml pyrevpos/output pyrevpos/pyrevpos.xml pyrevpos/test-data/input1_sample pyrevpos/test-data/output_sample pyrevpos/test-data/test1_log.txt pyrevpos/test1_log_outfiletxt tacrev/outfile tacrev/tacrev.xml tacrev/test-data/input1_sample tacrev/test-data/outfile_sample |
diffstat | 11 files changed, 535 insertions(+), 2278 deletions(-) [+] |
line wrap: on
line diff
--- a/pyrevpos/.shed.yml Tue Nov 24 21:59:01 2020 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ -description: pyrevpos -name: pyrevpos -owner: fubar -type: unrestricted
--- a/pyrevpos/output Tue Nov 24 21:59:01 2020 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,741 +0,0 @@ -nohtyp vne/nib/rsu/!# -yp.yrotcaFlooTgr # -yrotcafloot/2rabuf/moc.buhtig//:sptth ees # -# -2102 yaM )moc pots liamg ta surazal pots ssor( surazal ssor thgirypoc # -# -devreser sthgir lla # -LPGL eht rednu desneciL # -yrotcafloot/2rabuf/moc.buhtig//:sptth ta emoclew sexif gub dna tnemevorpmi rof snoitseggus # -# -.sraey 5 retfa elkniw nav pir ekil leef I dna nuf saw CCB :0202 yluJ # -ot dediceD # -esac tselpmis rof enod - skrow ti os yrotcafloot eht xiF .1 # -skrow noitcnuf yrotcafloot eht os omenalp xiF .2 # -enod - esnes sekam taht erehw snoitcnuf lmxyxalag gnisu stib etirweR .3 # -# -tpircs emas siht esu loot wen eht gnikam gnidulcni snoitacilpmoc dlo eht lla devomer # -lmxyxalag/anelyxeh/moc.buhtig//:sptth lmx loot eht setareneg won lmxyxalag # -stuptuo yrartibra morf noitaerc elif LMTH citamotua rof troppus oN # -kooh noitucexe tsop a sa edoc taht nur ot noitpo dda :ODOT # -eno ylno yltnerruc - sretemarap tupni yrotsih lanoitidda dda :ODOT # - - -esrapgra tropmi -gniggol tropmi -so tropmi -er tropmi -lituhs tropmi -ssecorpbus tropmi -sys tropmi -elifrat tropmi -elifpmet tropmi -emit tropmi - -txg sa loot.lmxyxalag tropmi -ptxg sa sretemarap.loot.lmxyxalag tropmi - -lmxl tropmi - -"0202 yluJ 1.2V" = noisrevym -eurT = esobrev -eurT = gubed -"yrotcafloot/2rabuf/moc.buhtig//:sptth" = LRUyrotcaFloot -"~~~" = miledruo - -lebal_tupni$~~~stamrof_tupni$~~~LC$~~~selif_tupni$"=selif_tupni-- # -"pleh_tupni$~~~ # -0 = SOPHTAPI -1 = SOPLCI -2 = SOPTMFI -3 = SOPBALI -4 = SOPLEHI -5 = SOPLCOI - -LC.bato$~~~tamrof_yrotsih.bato$~~~eman_yrotsih.bato$" selif_tuptuo-- # -0 = SOPEMANO -1 = SOPTMFO -2 = SOPLCO -3 = SOPLCOO - -~~~eulav_marap.i$~~~eman_marap.i$"=sretemarap_lanoitidda-- # -"edirrevoLC_marap.$i~~~LC.i$~~~epyt_marap.i$~~~pleh_marap.i$~~~lebal_marap.i$ # -0 = SOPEMANA -1 = SOPLAVA -2 = SOPBALA -3 = SOPPLEHA -4 = SOPEPYTA -5 = SOPLCA -6 = SOPREVOA -7 = SOPLCOA - - -)__noisrev__.lmxl(nel = oof -!eman ym yaS .8ekalf ,uoy guf # - -:)(wonemit fed -gnirts a sa emit tnerruc nruter""" -""" -)))(emit.emit(emitlacol.emit ,"S%:M%:H% Y%/m%/d%"(emitfrts.emit nruter - - -:)s(ciremun_non_etouq fed -sciremun-non rof gnirts detouqerp a nruter""" -?gnissap retemarap tpircsR dna lrep rof lufesu -""" -:yrt -)s(taolf = _ -s nruter -:rorrEeulaV tpecxe -s % '"s%"' nruter - - -}"$\"r :"$" ,";tl&" :"<" ,";tg&" :">" ,";pma&" :"&"{ = elbat_epacse_lmth - - -:)txet(epacse_lmth fed -""".txet nihtiw seititne ecudorP""" -)txet ni c rof )c ,c(teg.elbat_epacse_lmth(nioj."" nruter - - -:)txet(epacsenu_lmth fed -"""ecalper esu os stegrat retcarahc elpitluM .txet nihtiw seititne treveR""" -)"&" ,";pma&"(ecalper.txet = t -)">" ,";tg&"(ecalper.t = t -)"<" ,";tl&"(ecalper.t = t -)"$" ,"$\\"(ecalper.t = t -t nruter - - -:)txet_snoitatic(snoitatic_esrap fed -""" -""" -])(pirts.c fi )"**YRTNE**"(tilps.txet_snoitatic ni c rof c[ = snoitatic -][ = selput_noitatic -:snoitatic ni noitatic rof -:)"iod"(htiwstrats.noitatic fi -)))(pirts.]: )"iod"(nel[noitatic ,"iod"((dneppa.selput_noitatic -:esle -(dneppa.selput_noitatic -))(pirts.]: )"xetbib"(nel[noitatic ,"xetbib"( -) -selput_noitatic nruter - - -:rennuRtpircS ssalc -tpircs yrartibra na rof repparW""" -lmxyxalag sesu - -""" - -:)enoN=sgra ,fles(__tini__ fed -""" -ereh loot eht gninnur rof lc enil dnammoc eraperp -noitareneg loot lmxyxalag rof dedeen stnemele eraperp dna -""" - -]selif_tupni.sgra ni x rof )miledruo(tilps.x[ = selifni.fles -]selif_tuptuo.sgra ni x rof )miledruo(tilps.x[ = seliftuo.fles -]sretemarap_lanoitidda.sgra ni x rof )miledruo(tilps.x[ = rapdda.fles -sgra = sgra.fles -)(rappunaelc.fles -enoN = tceriderlctsal.fles -enoN = tceriderlcxtsal.fles -][ = lc.fles -][ = lclmx.fles -"lanoitisop" == ssapmarap.sgra.fles = lanoitisop_si.fles -dneppa.lc.fles = LCa -[ ni ssapmarap.sgra tressa -,"0" -,"esrapgra" -,"lanoitisop" -'"esrapgra" ro "lanoitisop","0" eb tsum ssapmarap.sgra ni gnissap retemaraP' ,] -)eman_loot.sgra ,"" ,"+]_9-0Z-Az-a^["(bus.er = eman_loot.fles -eman_loot.fles = di_loot.fles -:eman_reterpretni.sgra.fles fi -"eMnur$" = exe -:esle -egakcap_exe.sgra.fles = exe -( tressa -enoN ton si exe -"dliub tonnac os nur ot gnihton - ni dessap elbatucexe ro retepretni oN" ,) -(looT.txg = loot.fles -,eman_loot.sgra.fles -,di_loot.fles -,noisrev_loot.sgra.fles -,csed_loot.sgra.fles -,exe -) -)(stupnI.ptxg = stupnit.fles -)(stuptuO.ptxg = stuptuot.fles -][ = maraptset.fles -( fi -"metsys" == edomnur.sgra.fles ro "elbatucexE" == edomnur.sgra.fles -deen on - yranib # :) -nur tsuj lliw LC elttil siht # )egakcap_exe.sgra.fles(LCa -:esle -)(tpircSperp.fles -eman_loot.fles % "txt.gol_rorre_s%" = gole.fles -eman_loot.fles % "txt.gol_rennur_s%" = golt.fles - -:"0" == ssapmarap.sgra.fles fi -)(elpmislc.fles -:esle -][ = xiffuslc -][ = xiffuslcx -:)selifni.fles(etaremune ni p ,i rof -:"NIDTS" == ]SOPLCOI[p fi -[ = emdneppa -,]SOPLCOI[p -,]SOPLCI[p -,]SOPHTAPI[p -,]SOPHTAPI[p % "s% <" -] -[ = emdneppax -,]SOPLCOI[p -,]SOPLCI[p -,]SOPHTAPI[p -,]SOPLCI[p % "s%$ <" -] -:esle -]"" ,]SOPHTAPI[p ,]SOPLCI[p ,]SOPLCOI[p[ = emdneppa -]"" ,]SOPLCI[p % "s%$" ,]SOPLCI[p ,]SOPLCOI[p[ = emdneppax -)emdneppa(dneppa.xiffuslc -)emdneppax(dneppa.xiffuslcx -))emdneppa,i( % 's%=emdneppa ,d%=i elifni##'(tnirp # -:)seliftuo.fles(etaremune ni p ,i rof -:"TUODTS" == ]SOPLCOO[p fi -]]SOPEMANO[p ,">"[ = tceriderlctsal.fles -]]SOPLCO[p % "s%$" ,">"[ = tceriderlcxtsal.fles -:esle -)]"" ,]SOPEMANO[p ,]SOPLCO[p ,]SOPLCOO[p[(dneppa.xiffuslc -(dneppa.xiffuslcx -]"" ,]SOPEMANO[p % "s%$" ,]SOPLCO[p ,]SOPLCOO[p[ -) -:rapdda.fles ni p rof -(dneppa.xiffuslc -]]SOPREVOA[p ,]SOPLAVA[p ,]SOPLCA[p ,]SOPLCOA[p[ -) -(dneppa.xiffuslcx -]]SOPREVOA[p ,]SOPEMANA[p % '"s%$"' ,]SOPLCA[p ,]SOPLCOA[p[ -) -)(tros.xiffuslc -)(tros.xiffuslcx -xiffuslcx = xiffuslcx.fles -xiffuslc = xiffuslc.fles -:"lanoitisop" == ssapmarap.sgra.fles fi -)(lanoitisoplc.fles -:esle -)(esrapgralc.fles - -:)fles(tpircSperp fed -dneppa.lc.fles = LCa -)(senildaer.)"r" ,htap_tpircs.sgra.fles(nepo = xr -]xr ni x rof )(pirtsr.x[ = xr -]"" > )(pirts.x fi xr ni x rof )(pirts.x[ = kcehcxr -"nur tonnaC .ytpme si tpircs deilppuS" ,0 > )kcehcxr(nel tressa -)xr(nioj."n\" = tpircs.fles -(pmetskm.elifpmet = elifs.fles ,eldnahf -)eman_reterpretni.sgra.fles( % "s%_"=xiffus ,eman_loot.fles=xiferp -) -)"w" ,elifs.fles(nepo = tpircst -)tpircs.fles(etirw.tpircst -)(esolc.tpircst -(nioj."n\" % "s% " = tpircSdetnedni.fles -]xr ni x rof )x(epacse_lmth % "s% "[ -) -(nioj."n\" % "s%" = tpircSdepacse.fles -]xr ni x rof )x(epacse_lmth % "s% "[ -) -)eman_reterpretni.sgra.fles ,eman_loot.fles( % "s%.s%" = tra -)"bw" ,tra(nepo = tcafitra -))"8ftu" ,tpircs.fles(setyb(etirw.tcafitra -)(esolc.tcafitra -)eman_reterpretni.sgra.fles(LCa -)elifs.fles(LCa - -:)fles(rappunaelc fed -"""lanidro ciremun rieht yb detacilpmoc era sretemarap lanoitisop """ -:)selifni.fles(etaremune ni p ,i rof -:"lanoitisop" == ssapmarap.sgra.fles fi -( ,)(tigidsi.]SOPLCI[p tressa -"s% rof s% tog - sregetni lanidro eb tsum sretemarap lanoitisoP" -)]SOPBALI[p ,]SOPLCI[p( % -) -)]SOPLCI[p(dneppa.p -:"0" == ssapmarap.sgra.fles ro )(tigidsi.]SOPLCI[p fi -)1 + i( % "d%tupni" = lcs -lcs = ]SOPLCI[p -p = ]i[selifni.fles -(etaremune ni p ,i rof -seliftuo.fles -snoisnetxe gnisu rehtag yllacigamotua ot gniyrt # :) -:"TUODTS" =! ]SOPLCO[p dna "lanoitisop" == ssapmarap.sgra.fles fi -( ,)(tigidsi.]SOPLCO[p tressa -"s% rof s% tog - sregetni lanidro eb tsum sretemarap lanoitisoP" -)]SOPEMANO[p ,]SOPLCO[p( % -) -)]SOPLCO[p(dneppa.p -:"TUODTS" == ]SOPLCO[p ro )(tigidsi.]SOPLCO[p fi -]SOPEMANO[p = lcs -lcs = ]SOPLCO[p -p = ]i[seliftuo.fles -:)rapdda.fles(etaremune ni p ,i rof -:"lanoitisop" == ssapmarap.sgra.fles fi -( ,)(tigidsi.]SOPLCA[p tressa -"s% rof s% tog - sregetni lanidro eb tsum sretemarap lanoitisoP" -)]SOPEMANA[p ,]SOPLCA[p( % -) -)]SOPLCA[p(dneppa.p -:)(tigidsi.]SOPLCA[p fi -]SOPLCA[p % "s%tupni" = lcs -lcs = ]SOPLCA[p -p = ]i[rapdda.fles - -:)fles(elpmislc fed -o/i rof > dna < sesu - sretemarap on """ -""" -dneppa.lc.fles = LCa -)"<"(LCa -)]SOPHTAPI[]0[selifni.fles(LCa -)">"(LCa -)]SOPLCO[]0[seliftuo.fles(LCa -dneppa.lclmx.fles = LCXa -)"<"(LCXa -)]SOPLCI[]0[selifni.fles % "s%$"(LCXa -)">"(LCXa -)]SOPEMANO[]0[seliftuo.fles % "s%$"(LCXa - -:)fles(lanoitisoplc fed -smarap neht redro ni stupni # -dneppa.lc.fles = LCa -:xiffuslc.fles ni )edirrevok ,v ,k ,v_o( rof -:v ni " " fi -)v % "s%"(LCa -:esle -)v(LCa -dneppa.lclmx.fles = LCXa -:xiffuslcx.fles ni )edirrevok ,v ,k ,v_o( rof -)v(LCXa -:tceriderlcxtsal.fles fi -)]0[tceriderlcxtsal.fles(LCXa -)]1[tceriderlcxtsal.fles(LCXa - -:)fles(esrapgralc fed -elyts esrapgra """ -""" -dneppa.lc.fles = LCa -dneppa.lclmx.fles = LCXa -mrof deman esrapgra ni smarap neht stupni # -:xiffuslcx.fles ni )edirrevok ,v ,k ,v_o( rof -:"" > edirrevok fi -edirrevok = k -:1 == ))(pirts.k(nel file -k % "s%-" = k -:esle -k % "s%--" = k -)k(LCXa -)v(LCXa -:xiffuslc.fles ni )edirrevok ,v ,k ,v_o( rof -:"" > edirrevok fi -edirrevok = k -:1 == ))(pirts.k(nel file -k % "s%-" = k -:esle -k % "s%--" = k -)k(LCa -)v(LCa - -:)emanwen ,fles(hsadNteg fed -:lanoitisop_si.fles fi -0 = hsadn -:esle -2 = hsadn -:2 < )emanwen(nel fi -1 = hsadn -hsadn nruter - -:)fles(marapLMXod fed -"""...siht od em edam 8ekalf""" -:seliftuo.fles ni p rof -p = lcdlo ,lcwen ,tmfwen ,emanwen -)lcwen(hsadNteg.fles = hsadn -)hsadn=sehsad_mun ,tmfwen=tamrof ,lcwen(ataDtuptuO.ptxg = mrapa -lanoitisop_si.fles = lanoitisop.mrapa -:lanoitisop_si.fles fi -:"TUODTS" == lcdlo fi -9999999 = lanoitisop.mrapa -lcwen % "s%$ >" = edirrevo_enil_dnammoc.mrapa -:esle -)lcdlo(tni = lanoitisop.mrapa -lcwen % "s%$" = edirrevo_enil_dnammoc.mrapa -)mrapa(dneppa.stuptuot.fles -(tuptuOtseT.ptxg = pt -tmfwen=tamrof ,lcwen % "elpmas_s%"=eulav ,lcwen=eman -) -)pt(dneppa.maraptset.fles -:selifni.fles ni p rof -]SOPLCI[p = emanwen -]SOPTMFI[p = tmfwen -)emanwen(hsadNteg.fles = hsadn -:0 > )]SOPBALI[p(nel ton fi -]SOPLCI[p = bala -:esle -]SOPBALI[p = bala -(maraPataD.ptxg = tupnina -,emanwen -,eslaF=lanoitpo -,bala=lebal -,]SOPLEHI[p=pleh -,tmfwen=tamrof -,eslaF=elpitlum -,hsadn=sehsad_mun -) -lanoitisop_si.fles = lanoitisop.tupnina -)tupnina(dneppa.stupnit.fles -)emanwen % "elpmas_s%"=eulav ,emanwen=eman(maraPtseT.ptxg = mrapt -)mrapt(dneppa.maraptset.fles -:rapdda.fles ni p rof -p = lcdlo ,edirrevo ,lcwen ,epytwen ,plehwen ,lebalwen ,lavwen ,emanwen -:0 > )lebalwen(nel ton fi -emanwen = lebalwen -)emanwen(hsadNteg.fles = hsadn -:"txet" == epytwen fi -(maraPtxeT.ptxg = mrapa -,emanwen -,lebalwen=lebal -,plehwen=pleh -,lavwen=eulav -,hsadn=sehsad_mun -) -:"regetni" == epytwen file -(maraPregetnI.ptxg = mrapa -,emanwen -,emanwen=lebal -,plehwen=pleh -,lavwen=eulav -,hsadn=sehsad_mun -) -:"taolf" == epytwen file -(maraPtaolF.ptxg = mrapa -,emanwen -,emanwen=lebal -,plehwen=pleh -,lavwen=eulav -,hsadn=sehsad_mun -) -:esle -(rorrEeulaV esiar -\rof "s%" epyt retemarap desingocernU' -'LMXekam ni s% retemarap lanoitidda -)emanwen ,epytwen( % -) -lanoitisop_si.fles = lanoitisop.mrapa -:lanoitisop_si.fles fi -)lcdlo(tni = lanoitisop.tupnina -)mrapa(dneppa.stupnit.fles -)lavwen=eulav ,emanwen(maraPtseT.ptxg = mrapt.fles -)mrapt(dneppa.maraptset.fles - -:)fles(marapLMXoNod fed -]SOPBALI[]0[selifni.fles = bala -:0 == )bala(nel fi -]SOPLCI[]0[selifni.fles = bala -( = s1xam -"s% - deilppus selif tupni eno naht erom - 0 si ssapmarap fi tupni eno mumixaM" -)selifni.fles(rts % -) -s1xam ,1 == )selifni.fles(nel tressa -]SOPLCI[]0[selifni.fles = emanwen -(maraPataD.ptxg = tupnina -,emanwen -,eslaF=lanoitpo -,bala=lebal -,]SOPLEHI[]0[selifni.fles=pleh -,]SOPTMFI[]0[selifni.fles=tamrof -,eslaF=elpitlum -,0=sehsad_mun -) -emanwen % "s%$ <" = edirrevo_enil_dnammoc.tupnina -lanoitisop_si.fles = lanoitisop.tupnina -)tupnina(dneppa.stupnit.fles -)emanwen % "elpmas_s%"=eulav ,emanwen=eman(maraPtseT.ptxg = pt -)pt(dneppa.maraptset.fles -]SOPLCO[]0[seliftuo.fles = emanwen -]SOPTMFO[]0[seliftuo.fles = tmfwen -)0=sehsad_mun ,tmfwen=tamrof ,emanwen(ataDtuptuO.ptxg = tuona -emanwen % "s%$ >" = edirrevo_enil_dnammoc.tuona -lanoitisop_si.fles = lanoitisop.tuona -)tuona(dneppa.stuptuot.fles -(tuptuOtseT.ptxg = pt -tmfwen=tamrof ,emanwen % "elpmas_s%"=eulav ,emanwen=eman -) -)pt(dneppa.maraptset.fles - -:)fles(LMXekam fed -""" -tpircs wen eht rof repparw loot lmx yxalaG a etaerC -lmthyxalag sesU -...redro tcerroc otni enil dnammoc eht teg ot woH .mmmH -""" -lclmx.fles = edirrevo_enil_dnammoc.loot.fles -:eman_reterpretni.sgra.fles fi -eman_reterpretni.sgra.fles = reterpretni.loot.fles -:txet_pleh.sgra.fles fi -)(senildaer.)"r" ,txet_pleh.sgra.fles(nepo = txetpleh -]txetpleh ni x rof )x(epacse_lmth[ = txetpleh -)]txetpleh ni x rof x[(nioj."" = pleh.loot.fles -:esle -( = pleh.loot.fles -\ pleh rof )s%( rohtua loot eht ksa esaelP" -"n\noitareneg loot ta deilppus saw enon sa -)liame_resu.sgra.fles( % -) -tnaw ton od # enoN = dnammoc_noisrev.loot.fles -)(stnemeriuqeR.ptxg = stnemeriuqer - -:eman_reterpretni.sgra.fles fi -:"nohtyp" == eman_reterpretni.sgra.fles fi -(dneppa.stnemeriuqer -(tnemeriuqeR.ptxg -noisrev_reterpretni.sgra.fles ,"nohtyp" ,"egakcap" -) -) -:]"hs" ,"hsab"[ ni ton eman_reterpretni.sgra.fles file -(dneppa.stnemeriuqer -(tnemeriuqeR.ptxg -,"egakcap" -,eman_reterpretni.sgra.fles -,noisrev_reterpretni.sgra.fles -) -) -:esle -:"metsys" =! ssapmarap.sgra.fles dna egakcap_exe.sgra.fles fi -(dneppa.stnemeriuqer -(tnemeriuqeR.ptxg -,"egakcap" -,egakcap_exe.sgra.fles -,noisrev_egakcap_exe.sgra.fles -) -) -stnemeriuqer = stnemeriuqer.loot.fles -:"0" == ssapmarap.sgra.fles fi -)(marapLMXoNod.fles -:esle -)(marapLMXod.fles -stuptuot.fles = stuptuo.loot.fles -stupnit.fles = stupni.loot.fles -:]"metsys" ,"elbatucexE"[ ni ton edomnur.sgra.fles fi -)(selifgifnoC.ptxg = selifgifnoc -))tpircs.fles=txet ,"eMnur"=eman(elifgifnoC.ptxg(dneppa.selifgifnoc -selifgifnoc = selifgifnoc.loot.fles -)(stseT.ptxg = stset -)(tseT.ptxg = a_tset -:maraptset.fles ni pt rof -)pt(dneppa.a_tset -)a_tset(dneppa.stset -stset = stset.loot.fles -(tnemmoc_dda.loot.fles -".yrotcaF looT yxalaG eht gnisu s% ta s% yb detaerC" -))(wonemit ,liame_resu.sgra.fles( % -) -))LRUyrotcaFloot( % "s% :ta tig ni ecruoS"(tnemmoc_dda.loot.fles -(tnemmoc_dda.loot.fles -"375stb/scitamrofnioib/3901.01 :iod stpircs morf sloot elbasu-er gnitaerC :etiC" -) -)(tropxe.loot.fles = lmxe -)"w" ,eman_loot.fles % 'lmx.s%'(nepo = fx -)lmxe(etirw.fx -)"n\"(etirw.fx -)(esolc.fx -llabrat eht rof ydaer # - -:)fles(ratlooTekam fed -""" -ge htiw llabrat zg a si loot a -... oof.ni_1tset/atad-tset/emanloot/ yp.loot/emanloot/ lmx.loot/emanloot/ -tsum os ereh degnum era stuptuo dna stupni tset rof seman ETON -lc detareneg eht no desu seman tuptuo dna tupni lautca ot dnopserroc -""" -)(nur.fles = lavter -:lavter fi -(etirw.rredts.sys -"yrter dna xif esaelP .tey dliub tonnaC .deliaf nuR ##" -) -)1(tixe.sys -"tuoft" = ridt -:)ridt(stsixe.htap.so ton fi -)ridt(ridkm.so -)(LMXekam.fles -)"atad-tset" ,ridt(nioj.htap.so = ridtset -:)ridtset(stsixe.htap.so ton fi -yrotcerid stset ekam # )ridtset(ridkm.so -:selifni.fles ni p rof -]SOPHTAPI[p = htp -)]SOPLCI[p % "elpmas_s%" ,ridtset(nioj.htap.so = tsed -)tsed ,htp(elifypoc.lituhs -:seliftuo.fles ni p rof -]SOPLCO[p = htp -:"0" == ssapmarap.sgra.fles ro "TUODTS" == ]SOPLCOO[p fi -]SOPEMANO[p = htp -)]SOPEMANO[p % "elpmas_s%" ,ridtset(nioj.htap.so = tsed -)tsed ,htp(elifypoc.lituhs -)]SOPEMANO[p ,ridt(nioj.htap.so = tsed -)tsed ,htp(elifypoc.lituhs -:esle -]SOPLCO[p = htp -)]SOPLCO[p % "elpmas_s%" ,ridtset(nioj.htap.so = tsed -)tsed ,htp(elifypoc.lituhs -)]SOPLCO[p ,ridt(nioj.htap.so = tsed -)tsed ,htp(elifypoc.lituhs - -:0 > ezis_ts.)golt.fles(tats.so dna )golt.fles(stsixe.htap.so fi -))"txteliftuo_gol_1tset" ,ridtset(nioj.htap.so ,golt.fles(elifypoc.lituhs -:]"metsys" ,"elbatucexE"[ ni ton edomnur.sgra.fles fi -))elifs.fles( % "s%" ,ridt(nioj.htap.so = emants -:)emants(stsixe.htap.so ton fi -)emants ,elifs.fles(elifypoc.lituhs -eman_loot.fles % 'lmx.s%' = laerx -)laerx,ridt(nioj.htap.so = tuox -)tuox ,laerx(elifypoc.lituhs -eman_loot.fles % "zgt.s%_yrotcafloot" = htaprat -)"zg:w" ,htaprat(nepo.elifrat = ft -)eman_loot.fles=emancra ,ridt=eman(dda.ft -)(esolc.ft -)loot_wen.sgra.fles ,htaprat(elifypoc.lituhs -)"txt.lmx_loot",laerx(elifypoc.lituhs -"ridpmet_troper_nur_FT" = ridper -:)ridper(stsixe.htap.so ton fi -)ridper(ridkm.so -]seliftuo.fles ni x rof ]SOPLCO[x[ = semantuoper -:stuo sa )'.'(ridnacs.so htiw -:stuo ni yrtne rof -:)(elif_si.yrtne ton ro )'zgt.'(htiwsdne.eman.yrtne fi -eunitnoc -:semantuoper ni eman.yrtne fi -))eman.yrtne,ridper(nioj.htap.so,eman.yrtne(elifypoc.lituhs -:eman_loot.fles % "lmx.s%" == eman.yrtne file -))"lmx_loot_wen",ridper(nioj.htap.so,eman.yrtne(elifypoc.lituhs -lavter nruter - -:)fles(nur fed -""" -htiaf eht htiw gnipeek m'I os daer rredts evisnefed siht evah sloot maetved emoS -.etadpu ot eerf leeF -""" -)lc.fles(rts % "s%=lc nur" = s - -)s(gubed.gniggol -)lc.fles(nioj." " = lcs -enoN = rre -:"0" =! ssapmarap.sgra.fles fi -)"bw" ,gole.fles(nepo = ets -:tceriderlctsal.fles fi -(nepo = ots -"bw" ,]1[tceriderlctsal.fles -elif tuptuo na fo eman si # ) -:esle -)"bw" ,golt.fles(nepo = ots -(etirw.ots -(setyb -"n\s% = enil dnammoc detareneg yrotcaflooT gnitucexE ##" -,lcs % -,"8ftu" -) -) -)(hsulf.ots -)ets=rredts ,ots=tuodts ,eslaF=llehs ,lc.fles(nur.ssecorpbus = p -)(esolc.ots -)(esolc.ets -)"br" ,gole.fles(nepo = rredts_pmt -"" = rre -6758401 = ezisffub -:yrt -:eurT elihw -))ezisffub(daer.rredts_pmt(rts =+ rre -:0 =! ezisffub % )rre(nel ro rre ton fi -kaerb -:rorrEwolfrevO tpecxe -ssap -)(esolc.rredts_pmt -edocnruter.p = lavter -tuodts ot etirw dna nidts ekat taht stpircs elpmis fo esac laiceps dnuora krow # :esle -)"br" ,]SOPHTAPI[]0[selifni.fles(nepo = its -)"bw" ,]SOPEMANO[]0[seliftuo.fles(nepo = ots -tcerider ot llehs esu tsum # -)its=nidts ,ots=tuodts ,eslaF=llehs ,lc.fles(nur.ssecorpbus = p -edocnruter.p = lavter -)(esolc.ots -)(esolc.its -:0 == ezis_ts.)golt.fles(tats.so dna )golt.fles(elifsi.htap.so fi -)golt.fles(knilnu.so -:0 == ezis_ts.)gole.fles(tats.so dna )gole.fles(elifsi.htap.so fi -)gole.fles(knilnu.so -melborp # :rre dna 0 =! edocnruter.p fi -)rre(etirw.rredts.sys -)"enod nur"(gubed.gniggol -lavter nruter - - -:)(niam fed -""" -:sa lmx.loot esoprup laiceps a yb dellac eb ot stcepxe tI .repparw yxalaG a si sihT -"tpircsR" reterpretni-- "oof" eman_loot-- "htaPtpircs$" htap_tpircs-- yp.repparWtpircSesaBgr>"nohtyp"=reterpretni dnammoc< ->dnammoc/< -""" -)(resraPtnemugrA.esrapgra = resrap -tnemugra_dda.resrap = a -)""=tluafed ,"htap_tpircs--"(a -)enoN=tluafed ,"eman_loot--"(a -)enoN=tluafed ,"eman_reterpretni--"(a -)enoN=tluafed ,"noisrev_reterpretni--"(a -)enoN=tluafed ,"egakcap_exe--"(a -)enoN=tluafed ,"noisrev_egakcap_exe--"(a -)"dneppa"=noitca ,][=tluafed ,"selif_tupni--"(a -)"dneppa"=noitca ,][=tluafed ,"selif_tuptuo--"(a -)"nwonknU"=tluafed ,"liame_resu--"(a -)enoN=tluafed ,"resu_dab--"(a -)enoN=tluafed ,"looT_ekam--"(a -)enoN=tluafed ,"txet_pleh--"(a -)enoN=tluafed ,"csed_loot--"(a -)enoN=tluafed ,"noisrev_loot--"(a -)enoN=tluafed ,"snoitatic--"(a -)][=tluafed ,"dneppa"=noitca ,"sretemarap_lanoitidda--"(a -)eslaF=tluafed ,"eurt_erots"=noitca ,"sretemarap_lanoitidda_tide--"(a -)"lanoitisop"=tluafed ,"ssapmarap--"(a -)"tuoft/."=tluafed ,"tuoft--"(a -)"loot_wen"=tluafed ,"loot_wen--"(a -)enoN=tluafed ,"edomnur--"(a -)(sgra_esrap.resrap = sgra -( ,resu_dab.sgra ton tressa -'elif noitarugifnoc yxalaG eht ni "sresu_nimda" ot s% sdda nimda yxalaG litnu loot siht esu ot dezirohtua TON si s% :DESIROHTUANU' -)resu_dab.sgra ,resu_dab.sgra( % -) -( tressa -eman_loot.sgra -"qeSED=eman_loot-- ge - eman loot a stcepxe yrotcaF looT ##" ,) -( tressa -egakcap_exe.sgra ro eman_reterpretni.sgra -"egakcap elbatucexe na ro reterpretni na stcepxe repparw yrotcaF looT ##" ,) -( ro egakcap_exe.sgra tressa -)htap_tpircs.sgra(elifsi.htap.so dna 0 > )htap_tpircs.sgra(nel -"elbatucexe on fi R.oof=htap_tpircs-- ge - htap tpircs a stcepxe repparw yrotcaF looT ##" ,) -[ = selif_tupni.sgra -selif_tupni.sgra ni x rof )"" ,"'"(ecalper.)"" ,'"'(ecalper.x -] -smarap LC ni secaps htiw laed ot deen ew setouq evomer # -:)sretemarap_lanoitidda.sgra(etaremune ni x ,i rof -(ecalper.]i[sretemarap_lanoitidda.sgra = ]i[sretemarap_lanoitidda.sgra -"" ,'"' -) -)sgra(rennuRtpircS = r -:looT_ekam.sgra fi -)(ratlooTekam.r = edocter -:esle -)(nur.r = edocter -:edocter fi -rennur boj ot eruliaf etacidni # )edocter(tixe.sys - - -:"__niam__" == __eman__ fi -)(niam
--- a/pyrevpos/pyrevpos.xml Tue Nov 24 21:59:01 2020 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -<tool name="pyrevpos" id="pyrevpos" version="0.01"> - <!--Cite: Creating re-usable tools from scripts doi: 10.1093/bioinformatics/bts573--> - <!--Source in git at: https://github.com/fubar2/toolfactory--> - <!--Created by ross.lazarus@gmail.com at 22/08/2020 22:44:22 using the Galaxy Tool Factory.--> - <description>pyrevpos</description> - <requirements> - <requirement version="" type="package">python</requirement> - </requirements> - <configfiles> - <configfile name="runMe"><![CDATA[ - -# reverse order of text by row -import sys -inp = sys.argv[1] -outp = sys.argv[2] -i = open(inp,'r').readlines() -o = open(outp,'w') -for row in i: - rs = row.rstrip() - rs = list(rs) - rs.reverse() - o.write(''.join(rs)) - o.write('\n') -o.close() -]]></configfile> - </configfiles> - <stdio> - <exit_code range="1:" level="fatal"/> - </stdio> - <version_command/> - <command interpreter="python"><![CDATA[$runMe $input1 -$output]]></command> - <inputs> - <param help="parameter_help" label="inputfile" optional="false" multiple="false" format="txt" type="data" name="input1" argument="input1"/> - </inputs> - <outputs> - <data hidden="false" format="txt" name="output"/> - </outputs> - <tests> - <test> - <output value="output_sample" name="output" format="txt"/> - <param value="input1_sample" name="input1"/> - </test> - </tests> - <help><![CDATA[ -**What it Does** - ]]></help> -</tool> -
--- a/pyrevpos/test-data/input1_sample Tue Nov 24 21:59:01 2020 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,741 +0,0 @@ -#!/usr/bin/env python -# rgToolFactory.py -# see https://github.com/fubar2/toolfactory -# -# copyright ross lazarus (ross stop lazarus at gmail stop com) May 2012 -# -# all rights reserved -# Licensed under the LGPL -# suggestions for improvement and bug fixes welcome at https://github.com/fubar2/toolfactory -# -# July 2020: BCC was fun and I feel like rip van winkle after 5 years. -# Decided to -# 1. Fix the toolfactory so it works - done for simplest case -# 2. Fix planemo so the toolfactory function works -# 3. Rewrite bits using galaxyxml functions where that makes sense - done -# -# removed all the old complications including making the new tool use this same script -# galaxyxml now generates the tool xml https://github.com/hexylena/galaxyxml -# No support for automatic HTML file creation from arbitrary outputs -# TODO: add option to run that code as a post execution hook -# TODO: add additional history input parameters - currently only one - - -import argparse -import logging -import os -import re -import shutil -import subprocess -import sys -import tarfile -import tempfile -import time - -import galaxyxml.tool as gxt -import galaxyxml.tool.parameters as gxtp - -import lxml - -myversion = "V2.1 July 2020" -verbose = True -debug = True -toolFactoryURL = "https://github.com/fubar2/toolfactory" -ourdelim = "~~~" - -# --input_files="$input_files~~~$CL~~~$input_formats~~~$input_label -# ~~~$input_help" -IPATHPOS = 0 -ICLPOS = 1 -IFMTPOS = 2 -ILABPOS = 3 -IHELPOS = 4 -IOCLPOS = 5 - -# --output_files "$otab.history_name~~~$otab.history_format~~~$otab.CL -ONAMEPOS = 0 -OFMTPOS = 1 -OCLPOS = 2 -OOCLPOS = 3 - -# --additional_parameters="$i.param_name~~~$i.param_value~~~ -# $i.param_label~~~$i.param_help~~~$i.param_type~~~$i.CL~~~i$.param_CLoverride" -ANAMEPOS = 0 -AVALPOS = 1 -ALABPOS = 2 -AHELPPOS = 3 -ATYPEPOS = 4 -ACLPOS = 5 -AOVERPOS = 6 -AOCLPOS = 7 - - -foo = len(lxml.__version__) -# fug you, flake8. Say my name! - -def timenow(): - """return current time as a string - """ - return time.strftime("%d/%m/%Y %H:%M:%S", time.localtime(time.time())) - - -def quote_non_numeric(s): - """return a prequoted string for non-numerics - useful for perl and Rscript parameter passing? - """ - try: - _ = float(s) - return s - except ValueError: - return '"%s"' % s - - -html_escape_table = {"&": "&", ">": ">", "<": "<", "$": r"\$"} - - -def html_escape(text): - """Produce entities within text.""" - return "".join(html_escape_table.get(c, c) for c in text) - - -def html_unescape(text): - """Revert entities within text. Multiple character targets so use replace""" - t = text.replace("&", "&") - t = t.replace(">", ">") - t = t.replace("<", "<") - t = t.replace("\\$", "$") - return t - - -def parse_citations(citations_text): - """ - """ - citations = [c for c in citations_text.split("**ENTRY**") if c.strip()] - citation_tuples = [] - for citation in citations: - if citation.startswith("doi"): - citation_tuples.append(("doi", citation[len("doi") :].strip())) - else: - citation_tuples.append( - ("bibtex", citation[len("bibtex") :].strip()) - ) - return citation_tuples - - -class ScriptRunner: - """Wrapper for an arbitrary script - uses galaxyxml - - """ - - def __init__(self, args=None): - """ - prepare command line cl for running the tool here - and prepare elements needed for galaxyxml tool generation - """ - - self.infiles = [x.split(ourdelim) for x in args.input_files] - self.outfiles = [x.split(ourdelim) for x in args.output_files] - self.addpar = [x.split(ourdelim) for x in args.additional_parameters] - self.args = args - self.cleanuppar() - self.lastclredirect = None - self.lastxclredirect = None - self.cl = [] - self.xmlcl = [] - self.is_positional = self.args.parampass == "positional" - aCL = self.cl.append - assert args.parampass in [ - "0", - "argparse", - "positional", - ], 'Parameter passing in args.parampass must be "0","positional" or "argparse"' - self.tool_name = re.sub("[^a-zA-Z0-9_]+", "", args.tool_name) - self.tool_id = self.tool_name - if self.args.interpreter_name: - exe = "$runMe" - else: - exe = self.args.exe_package - assert ( - exe is not None - ), "No interpeter or executable passed in - nothing to run so cannot build" - self.tool = gxt.Tool( - self.args.tool_name, - self.tool_id, - self.args.tool_version, - self.args.tool_desc, - exe, - ) - self.tinputs = gxtp.Inputs() - self.toutputs = gxtp.Outputs() - self.testparam = [] - if ( - self.args.runmode == "Executable" or self.args.runmode == "system" - ): # binary - no need - aCL(self.args.exe_package) # this little CL will just run - else: - self.prepScript() - self.elog = "%s_error_log.txt" % self.tool_name - self.tlog = "%s_runner_log.txt" % self.tool_name - - if self.args.parampass == "0": - self.clsimple() - else: - clsuffix = [] - xclsuffix = [] - for i, p in enumerate(self.infiles): - if p[IOCLPOS] == "STDIN": - appendme = [ - p[IOCLPOS], - p[ICLPOS], - p[IPATHPOS], - "< %s" % p[IPATHPOS], - ] - xappendme = [ - p[IOCLPOS], - p[ICLPOS], - p[IPATHPOS], - "< $%s" % p[ICLPOS], - ] - else: - appendme = [p[IOCLPOS], p[ICLPOS], p[IPATHPOS], ""] - xappendme = [p[IOCLPOS], p[ICLPOS], "$%s" % p[ICLPOS], ""] - clsuffix.append(appendme) - xclsuffix.append(xappendme) - # print('##infile i=%d, appendme=%s' % (i,appendme)) - for i, p in enumerate(self.outfiles): - if p[OOCLPOS] == "STDOUT": - self.lastclredirect = [">", p[ONAMEPOS]] - self.lastxclredirect = [">", "$%s" % p[OCLPOS]] - else: - clsuffix.append([p[OOCLPOS], p[OCLPOS], p[ONAMEPOS], ""]) - xclsuffix.append( - [p[OOCLPOS], p[OCLPOS], "$%s" % p[ONAMEPOS], ""] - ) - for p in self.addpar: - clsuffix.append( - [p[AOCLPOS], p[ACLPOS], p[AVALPOS], p[AOVERPOS]] - ) - xclsuffix.append( - [p[AOCLPOS], p[ACLPOS], '"$%s"' % p[ANAMEPOS], p[AOVERPOS]] - ) - clsuffix.sort() - xclsuffix.sort() - self.xclsuffix = xclsuffix - self.clsuffix = clsuffix - if self.args.parampass == "positional": - self.clpositional() - else: - self.clargparse() - - def prepScript(self): - aCL = self.cl.append - rx = open(self.args.script_path, "r").readlines() - rx = [x.rstrip() for x in rx] - rxcheck = [x.strip() for x in rx if x.strip() > ""] - assert len(rxcheck) > 0, "Supplied script is empty. Cannot run" - self.script = "\n".join(rx) - fhandle, self.sfile = tempfile.mkstemp( - prefix=self.tool_name, suffix="_%s" % (self.args.interpreter_name) - ) - tscript = open(self.sfile, "w") - tscript.write(self.script) - tscript.close() - self.indentedScript = " %s" % "\n".join( - [" %s" % html_escape(x) for x in rx] - ) - self.escapedScript = "%s" % "\n".join( - [" %s" % html_escape(x) for x in rx] - ) - art = "%s.%s" % (self.tool_name, self.args.interpreter_name) - artifact = open(art, "wb") - artifact.write(bytes(self.script, "utf8")) - artifact.close() - aCL(self.args.interpreter_name) - aCL(self.sfile) - - def cleanuppar(self): - """ positional parameters are complicated by their numeric ordinal""" - for i, p in enumerate(self.infiles): - if self.args.parampass == "positional": - assert p[ICLPOS].isdigit(), ( - "Positional parameters must be ordinal integers - got %s for %s" - % (p[ICLPOS], p[ILABPOS]) - ) - p.append(p[ICLPOS]) - if p[ICLPOS].isdigit() or self.args.parampass == "0": - scl = "input%d" % (i + 1) - p[ICLPOS] = scl - self.infiles[i] = p - for i, p in enumerate( - self.outfiles - ): # trying to automagically gather using extensions - if self.args.parampass == "positional" and p[OCLPOS] != "STDOUT": - assert p[OCLPOS].isdigit(), ( - "Positional parameters must be ordinal integers - got %s for %s" - % (p[OCLPOS], p[ONAMEPOS]) - ) - p.append(p[OCLPOS]) - if p[OCLPOS].isdigit() or p[OCLPOS] == "STDOUT": - scl = p[ONAMEPOS] - p[OCLPOS] = scl - self.outfiles[i] = p - for i, p in enumerate(self.addpar): - if self.args.parampass == "positional": - assert p[ACLPOS].isdigit(), ( - "Positional parameters must be ordinal integers - got %s for %s" - % (p[ACLPOS], p[ANAMEPOS]) - ) - p.append(p[ACLPOS]) - if p[ACLPOS].isdigit(): - scl = "input%s" % p[ACLPOS] - p[ACLPOS] = scl - self.addpar[i] = p - - def clsimple(self): - """ no parameters - uses < and > for i/o - """ - aCL = self.cl.append - aCL("<") - aCL(self.infiles[0][IPATHPOS]) - aCL(">") - aCL(self.outfiles[0][OCLPOS]) - aXCL = self.xmlcl.append - aXCL("<") - aXCL("$%s" % self.infiles[0][ICLPOS]) - aXCL(">") - aXCL("$%s" % self.outfiles[0][ONAMEPOS]) - - def clpositional(self): - # inputs in order then params - aCL = self.cl.append - for (o_v, k, v, koverride) in self.clsuffix: - if " " in v: - aCL("%s" % v) - else: - aCL(v) - aXCL = self.xmlcl.append - for (o_v, k, v, koverride) in self.xclsuffix: - aXCL(v) - if self.lastxclredirect: - aXCL(self.lastxclredirect[0]) - aXCL(self.lastxclredirect[1]) - - def clargparse(self): - """ argparse style - """ - aCL = self.cl.append - aXCL = self.xmlcl.append - # inputs then params in argparse named form - for (o_v, k, v, koverride) in self.xclsuffix: - if koverride > "": - k = koverride - elif len(k.strip()) == 1: - k = "-%s" % k - else: - k = "--%s" % k - aXCL(k) - aXCL(v) - for (o_v, k, v, koverride) in self.clsuffix: - if koverride > "": - k = koverride - elif len(k.strip()) == 1: - k = "-%s" % k - else: - k = "--%s" % k - aCL(k) - aCL(v) - - def getNdash(self, newname): - if self.is_positional: - ndash = 0 - else: - ndash = 2 - if len(newname) < 2: - ndash = 1 - return ndash - - def doXMLparam(self): - """flake8 made me do this...""" - for p in self.outfiles: - newname, newfmt, newcl, oldcl = p - ndash = self.getNdash(newcl) - aparm = gxtp.OutputData(newcl, format=newfmt, num_dashes=ndash) - aparm.positional = self.is_positional - if self.is_positional: - if oldcl == "STDOUT": - aparm.positional = 9999999 - aparm.command_line_override = "> $%s" % newcl - else: - aparm.positional = int(oldcl) - aparm.command_line_override = "$%s" % newcl - self.toutputs.append(aparm) - tp = gxtp.TestOutput( - name=newcl, value="%s_sample" % newcl, format=newfmt - ) - self.testparam.append(tp) - for p in self.infiles: - newname = p[ICLPOS] - newfmt = p[IFMTPOS] - ndash = self.getNdash(newname) - if not len(p[ILABPOS]) > 0: - alab = p[ICLPOS] - else: - alab = p[ILABPOS] - aninput = gxtp.DataParam( - newname, - optional=False, - label=alab, - help=p[IHELPOS], - format=newfmt, - multiple=False, - num_dashes=ndash, - ) - aninput.positional = self.is_positional - self.tinputs.append(aninput) - tparm = gxtp.TestParam(name=newname, value="%s_sample" % newname) - self.testparam.append(tparm) - for p in self.addpar: - newname, newval, newlabel, newhelp, newtype, newcl, override, oldcl = p - if not len(newlabel) > 0: - newlabel = newname - ndash = self.getNdash(newname) - if newtype == "text": - aparm = gxtp.TextParam( - newname, - label=newlabel, - help=newhelp, - value=newval, - num_dashes=ndash, - ) - elif newtype == "integer": - aparm = gxtp.IntegerParam( - newname, - label=newname, - help=newhelp, - value=newval, - num_dashes=ndash, - ) - elif newtype == "float": - aparm = gxtp.FloatParam( - newname, - label=newname, - help=newhelp, - value=newval, - num_dashes=ndash, - ) - else: - raise ValueError( - 'Unrecognised parameter type "%s" for\ - additional parameter %s in makeXML' - % (newtype, newname) - ) - aparm.positional = self.is_positional - if self.is_positional: - aninput.positional = int(oldcl) - self.tinputs.append(aparm) - self.tparm = gxtp.TestParam(newname, value=newval) - self.testparam.append(tparm) - - def doNoXMLparam(self): - alab = self.infiles[0][ILABPOS] - if len(alab) == 0: - alab = self.infiles[0][ICLPOS] - max1s = ( - "Maximum one input if parampass is 0 - more than one input files supplied - %s" - % str(self.infiles) - ) - assert len(self.infiles) == 1, max1s - newname = self.infiles[0][ICLPOS] - aninput = gxtp.DataParam( - newname, - optional=False, - label=alab, - help=self.infiles[0][IHELPOS], - format=self.infiles[0][IFMTPOS], - multiple=False, - num_dashes=0, - ) - aninput.command_line_override = "< $%s" % newname - aninput.positional = self.is_positional - self.tinputs.append(aninput) - tp = gxtp.TestParam(name=newname, value="%s_sample" % newname) - self.testparam.append(tp) - newname = self.outfiles[0][OCLPOS] - newfmt = self.outfiles[0][OFMTPOS] - anout = gxtp.OutputData(newname, format=newfmt, num_dashes=0) - anout.command_line_override = "> $%s" % newname - anout.positional = self.is_positional - self.toutputs.append(anout) - tp = gxtp.TestOutput( - name=newname, value="%s_sample" % newname, format=newfmt - ) - self.testparam.append(tp) - - def makeXML(self): - """ - Create a Galaxy xml tool wrapper for the new script - Uses galaxyhtml - Hmmm. How to get the command line into correct order... - """ - self.tool.command_line_override = self.xmlcl - if self.args.interpreter_name: - self.tool.interpreter = self.args.interpreter_name - if self.args.help_text: - helptext = open(self.args.help_text, "r").readlines() - helptext = [html_escape(x) for x in helptext] - self.tool.help = "".join([x for x in helptext]) - else: - self.tool.help = ( - "Please ask the tool author (%s) for help \ - as none was supplied at tool generation\n" - % (self.args.user_email) - ) - self.tool.version_command = None # do not want - requirements = gxtp.Requirements() - - if self.args.interpreter_name: - if self.args.interpreter_name == "python": - requirements.append( - gxtp.Requirement( - "package", "python", self.args.interpreter_version - ) - ) - elif self.args.interpreter_name not in ["bash", "sh"]: - requirements.append( - gxtp.Requirement( - "package", - self.args.interpreter_name, - self.args.interpreter_version, - ) - ) - else: - if self.args.exe_package and self.args.parampass != "system": - requirements.append( - gxtp.Requirement( - "package", - self.args.exe_package, - self.args.exe_package_version, - ) - ) - self.tool.requirements = requirements - if self.args.parampass == "0": - self.doNoXMLparam() - else: - self.doXMLparam() - self.tool.outputs = self.toutputs - self.tool.inputs = self.tinputs - if self.args.runmode not in ["Executable", "system"]: - configfiles = gxtp.Configfiles() - configfiles.append(gxtp.Configfile(name="runMe", text=self.script)) - self.tool.configfiles = configfiles - tests = gxtp.Tests() - test_a = gxtp.Test() - for tp in self.testparam: - test_a.append(tp) - tests.append(test_a) - self.tool.tests = tests - self.tool.add_comment( - "Created by %s at %s using the Galaxy Tool Factory." - % (self.args.user_email, timenow()) - ) - self.tool.add_comment("Source in git at: %s" % (toolFactoryURL)) - self.tool.add_comment( - "Cite: Creating re-usable tools from scripts doi: 10.1093/bioinformatics/bts573" - ) - exml = self.tool.export() - xf = open('%s.xml' % self.tool_name, "w") - xf.write(exml) - xf.write("\n") - xf.close() - # ready for the tarball - - def makeTooltar(self): - """ - a tool is a gz tarball with eg - /toolname/tool.xml /toolname/tool.py /toolname/test-data/test1_in.foo ... - NOTE names for test inputs and outputs are munged here so must - correspond to actual input and output names used on the generated cl - """ - retval = self.run() - if retval: - sys.stderr.write( - "## Run failed. Cannot build yet. Please fix and retry" - ) - sys.exit(1) - tdir = "tfout" - if not os.path.exists(tdir): - os.mkdir(tdir) - self.makeXML() - testdir = os.path.join(tdir, "test-data") - if not os.path.exists(testdir): - os.mkdir(testdir) # make tests directory - for p in self.infiles: - pth = p[IPATHPOS] - dest = os.path.join(testdir, "%s_sample" % p[ICLPOS]) - shutil.copyfile(pth, dest) - for p in self.outfiles: - pth = p[OCLPOS] - if p[OOCLPOS] == "STDOUT" or self.args.parampass == "0": - pth = p[ONAMEPOS] - dest = os.path.join(testdir, "%s_sample" % p[ONAMEPOS]) - shutil.copyfile(pth, dest) - dest = os.path.join(tdir, p[ONAMEPOS]) - shutil.copyfile(pth, dest) - else: - pth = p[OCLPOS] - dest = os.path.join(testdir, "%s_sample" % p[OCLPOS]) - shutil.copyfile(pth, dest) - dest = os.path.join(tdir, p[OCLPOS]) - shutil.copyfile(pth, dest) - - if os.path.exists(self.tlog) and os.stat(self.tlog).st_size > 0: - shutil.copyfile(self.tlog, os.path.join(testdir, "test1_log_outfiletxt")) - if self.args.runmode not in ["Executable", "system"]: - stname = os.path.join(tdir, "%s" % (self.sfile)) - if not os.path.exists(stname): - shutil.copyfile(self.sfile, stname) - xreal = '%s.xml' % self.tool_name - xout = os.path.join(tdir,xreal) - shutil.copyfile(xreal, xout) - tarpath = "toolfactory_%s.tgz" % self.tool_name - tf = tarfile.open(tarpath, "w:gz") - tf.add(name=tdir, arcname=self.tool_name) - tf.close() - shutil.copyfile(tarpath, self.args.new_tool) - shutil.copyfile(xreal,"tool_xml.txt") - repdir = "TF_run_report_tempdir" - if not os.path.exists(repdir): - os.mkdir(repdir) - repoutnames = [x[OCLPOS] for x in self.outfiles] - with os.scandir('.') as outs: - for entry in outs: - if entry.name.endswith('.tgz') or not entry.is_file(): - continue - if entry.name in repoutnames: - shutil.copyfile(entry.name,os.path.join(repdir,entry.name)) - elif entry.name == "%s.xml" % self.tool_name: - shutil.copyfile(entry.name,os.path.join(repdir,"new_tool_xml")) - return retval - - def run(self): - """ - Some devteam tools have this defensive stderr read so I'm keeping with the faith - Feel free to update. - """ - s = "run cl=%s" % str(self.cl) - - logging.debug(s) - scl = " ".join(self.cl) - err = None - if self.args.parampass != "0": - ste = open(self.elog, "wb") - if self.lastclredirect: - sto = open( - self.lastclredirect[1], "wb" - ) # is name of an output file - else: - sto = open(self.tlog, "wb") - sto.write( - bytes( - "## Executing Toolfactory generated command line = %s\n" - % scl, - "utf8", - ) - ) - sto.flush() - p = subprocess.run(self.cl, shell=False, stdout=sto, stderr=ste) - sto.close() - ste.close() - tmp_stderr = open(self.elog, "rb") - err = "" - buffsize = 1048576 - try: - while True: - err += str(tmp_stderr.read(buffsize)) - if not err or len(err) % buffsize != 0: - break - except OverflowError: - pass - tmp_stderr.close() - retval = p.returncode - else: # work around special case of simple scripts that take stdin and write to stdout - sti = open(self.infiles[0][IPATHPOS], "rb") - sto = open(self.outfiles[0][ONAMEPOS], "wb") - # must use shell to redirect - p = subprocess.run(self.cl, shell=False, stdout=sto, stdin=sti) - retval = p.returncode - sto.close() - sti.close() - if os.path.isfile(self.tlog) and os.stat(self.tlog).st_size == 0: - os.unlink(self.tlog) - if os.path.isfile(self.elog) and os.stat(self.elog).st_size == 0: - os.unlink(self.elog) - if p.returncode != 0 and err: # problem - sys.stderr.write(err) - logging.debug("run done") - return retval - - -def main(): - """ - This is a Galaxy wrapper. It expects to be called by a special purpose tool.xml as: - <command interpreter="python">rgBaseScriptWrapper.py --script_path "$scriptPath" --tool_name "foo" --interpreter "Rscript" - </command> - """ - parser = argparse.ArgumentParser() - a = parser.add_argument - a("--script_path", default="") - a("--tool_name", default=None) - a("--interpreter_name", default=None) - a("--interpreter_version", default=None) - a("--exe_package", default=None) - a("--exe_package_version", default=None) - a("--input_files", default=[], action="append") - a("--output_files", default=[], action="append") - a("--user_email", default="Unknown") - a("--bad_user", default=None) - a("--make_Tool", default=None) - a("--help_text", default=None) - a("--tool_desc", default=None) - a("--tool_version", default=None) - a("--citations", default=None) - a("--additional_parameters", action="append", default=[]) - a("--edit_additional_parameters", action="store_true", default=False) - a("--parampass", default="positional") - a("--tfout", default="./tfout") - a("--new_tool", default="new_tool") - a("--runmode", default=None) - args = parser.parse_args() - assert not args.bad_user, ( - 'UNAUTHORISED: %s is NOT authorized to use this tool until Galaxy admin adds %s to "admin_users" in the Galaxy configuration file' - % (args.bad_user, args.bad_user) - ) - assert ( - args.tool_name - ), "## Tool Factory expects a tool name - eg --tool_name=DESeq" - assert ( - args.interpreter_name or args.exe_package - ), "## Tool Factory wrapper expects an interpreter or an executable package" - assert args.exe_package or ( - len(args.script_path) > 0 and os.path.isfile(args.script_path) - ), "## Tool Factory wrapper expects a script path - eg --script_path=foo.R if no executable" - args.input_files = [ - x.replace('"', "").replace("'", "") for x in args.input_files - ] - # remove quotes we need to deal with spaces in CL params - for i, x in enumerate(args.additional_parameters): - args.additional_parameters[i] = args.additional_parameters[i].replace( - '"', "" - ) - r = ScriptRunner(args) - if args.make_Tool: - retcode = r.makeTooltar() - else: - retcode = r.run() - if retcode: - sys.exit(retcode) # indicate failure to job runner - - -if __name__ == "__main__": - main()
--- a/pyrevpos/test-data/output_sample Tue Nov 24 21:59:01 2020 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,741 +0,0 @@ -nohtyp vne/nib/rsu/!# -yp.yrotcaFlooTgr # -yrotcafloot/2rabuf/moc.buhtig//:sptth ees # -# -2102 yaM )moc pots liamg ta surazal pots ssor( surazal ssor thgirypoc # -# -devreser sthgir lla # -LPGL eht rednu desneciL # -yrotcafloot/2rabuf/moc.buhtig//:sptth ta emoclew sexif gub dna tnemevorpmi rof snoitseggus # -# -.sraey 5 retfa elkniw nav pir ekil leef I dna nuf saw CCB :0202 yluJ # -ot dediceD # -esac tselpmis rof enod - skrow ti os yrotcafloot eht xiF .1 # -skrow noitcnuf yrotcafloot eht os omenalp xiF .2 # -enod - esnes sekam taht erehw snoitcnuf lmxyxalag gnisu stib etirweR .3 # -# -tpircs emas siht esu loot wen eht gnikam gnidulcni snoitacilpmoc dlo eht lla devomer # -lmxyxalag/anelyxeh/moc.buhtig//:sptth lmx loot eht setareneg won lmxyxalag # -stuptuo yrartibra morf noitaerc elif LMTH citamotua rof troppus oN # -kooh noitucexe tsop a sa edoc taht nur ot noitpo dda :ODOT # -eno ylno yltnerruc - sretemarap tupni yrotsih lanoitidda dda :ODOT # - - -esrapgra tropmi -gniggol tropmi -so tropmi -er tropmi -lituhs tropmi -ssecorpbus tropmi -sys tropmi -elifrat tropmi -elifpmet tropmi -emit tropmi - -txg sa loot.lmxyxalag tropmi -ptxg sa sretemarap.loot.lmxyxalag tropmi - -lmxl tropmi - -"0202 yluJ 1.2V" = noisrevym -eurT = esobrev -eurT = gubed -"yrotcafloot/2rabuf/moc.buhtig//:sptth" = LRUyrotcaFloot -"~~~" = miledruo - -lebal_tupni$~~~stamrof_tupni$~~~LC$~~~selif_tupni$"=selif_tupni-- # -"pleh_tupni$~~~ # -0 = SOPHTAPI -1 = SOPLCI -2 = SOPTMFI -3 = SOPBALI -4 = SOPLEHI -5 = SOPLCOI - -LC.bato$~~~tamrof_yrotsih.bato$~~~eman_yrotsih.bato$" selif_tuptuo-- # -0 = SOPEMANO -1 = SOPTMFO -2 = SOPLCO -3 = SOPLCOO - -~~~eulav_marap.i$~~~eman_marap.i$"=sretemarap_lanoitidda-- # -"edirrevoLC_marap.$i~~~LC.i$~~~epyt_marap.i$~~~pleh_marap.i$~~~lebal_marap.i$ # -0 = SOPEMANA -1 = SOPLAVA -2 = SOPBALA -3 = SOPPLEHA -4 = SOPEPYTA -5 = SOPLCA -6 = SOPREVOA -7 = SOPLCOA - - -)__noisrev__.lmxl(nel = oof -!eman ym yaS .8ekalf ,uoy guf # - -:)(wonemit fed -gnirts a sa emit tnerruc nruter""" -""" -)))(emit.emit(emitlacol.emit ,"S%:M%:H% Y%/m%/d%"(emitfrts.emit nruter - - -:)s(ciremun_non_etouq fed -sciremun-non rof gnirts detouqerp a nruter""" -?gnissap retemarap tpircsR dna lrep rof lufesu -""" -:yrt -)s(taolf = _ -s nruter -:rorrEeulaV tpecxe -s % '"s%"' nruter - - -}"$\"r :"$" ,";tl&" :"<" ,";tg&" :">" ,";pma&" :"&"{ = elbat_epacse_lmth - - -:)txet(epacse_lmth fed -""".txet nihtiw seititne ecudorP""" -)txet ni c rof )c ,c(teg.elbat_epacse_lmth(nioj."" nruter - - -:)txet(epacsenu_lmth fed -"""ecalper esu os stegrat retcarahc elpitluM .txet nihtiw seititne treveR""" -)"&" ,";pma&"(ecalper.txet = t -)">" ,";tg&"(ecalper.t = t -)"<" ,";tl&"(ecalper.t = t -)"$" ,"$\\"(ecalper.t = t -t nruter - - -:)txet_snoitatic(snoitatic_esrap fed -""" -""" -])(pirts.c fi )"**YRTNE**"(tilps.txet_snoitatic ni c rof c[ = snoitatic -][ = selput_noitatic -:snoitatic ni noitatic rof -:)"iod"(htiwstrats.noitatic fi -)))(pirts.]: )"iod"(nel[noitatic ,"iod"((dneppa.selput_noitatic -:esle -(dneppa.selput_noitatic -))(pirts.]: )"xetbib"(nel[noitatic ,"xetbib"( -) -selput_noitatic nruter - - -:rennuRtpircS ssalc -tpircs yrartibra na rof repparW""" -lmxyxalag sesu - -""" - -:)enoN=sgra ,fles(__tini__ fed -""" -ereh loot eht gninnur rof lc enil dnammoc eraperp -noitareneg loot lmxyxalag rof dedeen stnemele eraperp dna -""" - -]selif_tupni.sgra ni x rof )miledruo(tilps.x[ = selifni.fles -]selif_tuptuo.sgra ni x rof )miledruo(tilps.x[ = seliftuo.fles -]sretemarap_lanoitidda.sgra ni x rof )miledruo(tilps.x[ = rapdda.fles -sgra = sgra.fles -)(rappunaelc.fles -enoN = tceriderlctsal.fles -enoN = tceriderlcxtsal.fles -][ = lc.fles -][ = lclmx.fles -"lanoitisop" == ssapmarap.sgra.fles = lanoitisop_si.fles -dneppa.lc.fles = LCa -[ ni ssapmarap.sgra tressa -,"0" -,"esrapgra" -,"lanoitisop" -'"esrapgra" ro "lanoitisop","0" eb tsum ssapmarap.sgra ni gnissap retemaraP' ,] -)eman_loot.sgra ,"" ,"+]_9-0Z-Az-a^["(bus.er = eman_loot.fles -eman_loot.fles = di_loot.fles -:eman_reterpretni.sgra.fles fi -"eMnur$" = exe -:esle -egakcap_exe.sgra.fles = exe -( tressa -enoN ton si exe -"dliub tonnac os nur ot gnihton - ni dessap elbatucexe ro retepretni oN" ,) -(looT.txg = loot.fles -,eman_loot.sgra.fles -,di_loot.fles -,noisrev_loot.sgra.fles -,csed_loot.sgra.fles -,exe -) -)(stupnI.ptxg = stupnit.fles -)(stuptuO.ptxg = stuptuot.fles -][ = maraptset.fles -( fi -"metsys" == edomnur.sgra.fles ro "elbatucexE" == edomnur.sgra.fles -deen on - yranib # :) -nur tsuj lliw LC elttil siht # )egakcap_exe.sgra.fles(LCa -:esle -)(tpircSperp.fles -eman_loot.fles % "txt.gol_rorre_s%" = gole.fles -eman_loot.fles % "txt.gol_rennur_s%" = golt.fles - -:"0" == ssapmarap.sgra.fles fi -)(elpmislc.fles -:esle -][ = xiffuslc -][ = xiffuslcx -:)selifni.fles(etaremune ni p ,i rof -:"NIDTS" == ]SOPLCOI[p fi -[ = emdneppa -,]SOPLCOI[p -,]SOPLCI[p -,]SOPHTAPI[p -,]SOPHTAPI[p % "s% <" -] -[ = emdneppax -,]SOPLCOI[p -,]SOPLCI[p -,]SOPHTAPI[p -,]SOPLCI[p % "s%$ <" -] -:esle -]"" ,]SOPHTAPI[p ,]SOPLCI[p ,]SOPLCOI[p[ = emdneppa -]"" ,]SOPLCI[p % "s%$" ,]SOPLCI[p ,]SOPLCOI[p[ = emdneppax -)emdneppa(dneppa.xiffuslc -)emdneppax(dneppa.xiffuslcx -))emdneppa,i( % 's%=emdneppa ,d%=i elifni##'(tnirp # -:)seliftuo.fles(etaremune ni p ,i rof -:"TUODTS" == ]SOPLCOO[p fi -]]SOPEMANO[p ,">"[ = tceriderlctsal.fles -]]SOPLCO[p % "s%$" ,">"[ = tceriderlcxtsal.fles -:esle -)]"" ,]SOPEMANO[p ,]SOPLCO[p ,]SOPLCOO[p[(dneppa.xiffuslc -(dneppa.xiffuslcx -]"" ,]SOPEMANO[p % "s%$" ,]SOPLCO[p ,]SOPLCOO[p[ -) -:rapdda.fles ni p rof -(dneppa.xiffuslc -]]SOPREVOA[p ,]SOPLAVA[p ,]SOPLCA[p ,]SOPLCOA[p[ -) -(dneppa.xiffuslcx -]]SOPREVOA[p ,]SOPEMANA[p % '"s%$"' ,]SOPLCA[p ,]SOPLCOA[p[ -) -)(tros.xiffuslc -)(tros.xiffuslcx -xiffuslcx = xiffuslcx.fles -xiffuslc = xiffuslc.fles -:"lanoitisop" == ssapmarap.sgra.fles fi -)(lanoitisoplc.fles -:esle -)(esrapgralc.fles - -:)fles(tpircSperp fed -dneppa.lc.fles = LCa -)(senildaer.)"r" ,htap_tpircs.sgra.fles(nepo = xr -]xr ni x rof )(pirtsr.x[ = xr -]"" > )(pirts.x fi xr ni x rof )(pirts.x[ = kcehcxr -"nur tonnaC .ytpme si tpircs deilppuS" ,0 > )kcehcxr(nel tressa -)xr(nioj."n\" = tpircs.fles -(pmetskm.elifpmet = elifs.fles ,eldnahf -)eman_reterpretni.sgra.fles( % "s%_"=xiffus ,eman_loot.fles=xiferp -) -)"w" ,elifs.fles(nepo = tpircst -)tpircs.fles(etirw.tpircst -)(esolc.tpircst -(nioj."n\" % "s% " = tpircSdetnedni.fles -]xr ni x rof )x(epacse_lmth % "s% "[ -) -(nioj."n\" % "s%" = tpircSdepacse.fles -]xr ni x rof )x(epacse_lmth % "s% "[ -) -)eman_reterpretni.sgra.fles ,eman_loot.fles( % "s%.s%" = tra -)"bw" ,tra(nepo = tcafitra -))"8ftu" ,tpircs.fles(setyb(etirw.tcafitra -)(esolc.tcafitra -)eman_reterpretni.sgra.fles(LCa -)elifs.fles(LCa - -:)fles(rappunaelc fed -"""lanidro ciremun rieht yb detacilpmoc era sretemarap lanoitisop """ -:)selifni.fles(etaremune ni p ,i rof -:"lanoitisop" == ssapmarap.sgra.fles fi -( ,)(tigidsi.]SOPLCI[p tressa -"s% rof s% tog - sregetni lanidro eb tsum sretemarap lanoitisoP" -)]SOPBALI[p ,]SOPLCI[p( % -) -)]SOPLCI[p(dneppa.p -:"0" == ssapmarap.sgra.fles ro )(tigidsi.]SOPLCI[p fi -)1 + i( % "d%tupni" = lcs -lcs = ]SOPLCI[p -p = ]i[selifni.fles -(etaremune ni p ,i rof -seliftuo.fles -snoisnetxe gnisu rehtag yllacigamotua ot gniyrt # :) -:"TUODTS" =! ]SOPLCO[p dna "lanoitisop" == ssapmarap.sgra.fles fi -( ,)(tigidsi.]SOPLCO[p tressa -"s% rof s% tog - sregetni lanidro eb tsum sretemarap lanoitisoP" -)]SOPEMANO[p ,]SOPLCO[p( % -) -)]SOPLCO[p(dneppa.p -:"TUODTS" == ]SOPLCO[p ro )(tigidsi.]SOPLCO[p fi -]SOPEMANO[p = lcs -lcs = ]SOPLCO[p -p = ]i[seliftuo.fles -:)rapdda.fles(etaremune ni p ,i rof -:"lanoitisop" == ssapmarap.sgra.fles fi -( ,)(tigidsi.]SOPLCA[p tressa -"s% rof s% tog - sregetni lanidro eb tsum sretemarap lanoitisoP" -)]SOPEMANA[p ,]SOPLCA[p( % -) -)]SOPLCA[p(dneppa.p -:)(tigidsi.]SOPLCA[p fi -]SOPLCA[p % "s%tupni" = lcs -lcs = ]SOPLCA[p -p = ]i[rapdda.fles - -:)fles(elpmislc fed -o/i rof > dna < sesu - sretemarap on """ -""" -dneppa.lc.fles = LCa -)"<"(LCa -)]SOPHTAPI[]0[selifni.fles(LCa -)">"(LCa -)]SOPLCO[]0[seliftuo.fles(LCa -dneppa.lclmx.fles = LCXa -)"<"(LCXa -)]SOPLCI[]0[selifni.fles % "s%$"(LCXa -)">"(LCXa -)]SOPEMANO[]0[seliftuo.fles % "s%$"(LCXa - -:)fles(lanoitisoplc fed -smarap neht redro ni stupni # -dneppa.lc.fles = LCa -:xiffuslc.fles ni )edirrevok ,v ,k ,v_o( rof -:v ni " " fi -)v % "s%"(LCa -:esle -)v(LCa -dneppa.lclmx.fles = LCXa -:xiffuslcx.fles ni )edirrevok ,v ,k ,v_o( rof -)v(LCXa -:tceriderlcxtsal.fles fi -)]0[tceriderlcxtsal.fles(LCXa -)]1[tceriderlcxtsal.fles(LCXa - -:)fles(esrapgralc fed -elyts esrapgra """ -""" -dneppa.lc.fles = LCa -dneppa.lclmx.fles = LCXa -mrof deman esrapgra ni smarap neht stupni # -:xiffuslcx.fles ni )edirrevok ,v ,k ,v_o( rof -:"" > edirrevok fi -edirrevok = k -:1 == ))(pirts.k(nel file -k % "s%-" = k -:esle -k % "s%--" = k -)k(LCXa -)v(LCXa -:xiffuslc.fles ni )edirrevok ,v ,k ,v_o( rof -:"" > edirrevok fi -edirrevok = k -:1 == ))(pirts.k(nel file -k % "s%-" = k -:esle -k % "s%--" = k -)k(LCa -)v(LCa - -:)emanwen ,fles(hsadNteg fed -:lanoitisop_si.fles fi -0 = hsadn -:esle -2 = hsadn -:2 < )emanwen(nel fi -1 = hsadn -hsadn nruter - -:)fles(marapLMXod fed -"""...siht od em edam 8ekalf""" -:seliftuo.fles ni p rof -p = lcdlo ,lcwen ,tmfwen ,emanwen -)lcwen(hsadNteg.fles = hsadn -)hsadn=sehsad_mun ,tmfwen=tamrof ,lcwen(ataDtuptuO.ptxg = mrapa -lanoitisop_si.fles = lanoitisop.mrapa -:lanoitisop_si.fles fi -:"TUODTS" == lcdlo fi -9999999 = lanoitisop.mrapa -lcwen % "s%$ >" = edirrevo_enil_dnammoc.mrapa -:esle -)lcdlo(tni = lanoitisop.mrapa -lcwen % "s%$" = edirrevo_enil_dnammoc.mrapa -)mrapa(dneppa.stuptuot.fles -(tuptuOtseT.ptxg = pt -tmfwen=tamrof ,lcwen % "elpmas_s%"=eulav ,lcwen=eman -) -)pt(dneppa.maraptset.fles -:selifni.fles ni p rof -]SOPLCI[p = emanwen -]SOPTMFI[p = tmfwen -)emanwen(hsadNteg.fles = hsadn -:0 > )]SOPBALI[p(nel ton fi -]SOPLCI[p = bala -:esle -]SOPBALI[p = bala -(maraPataD.ptxg = tupnina -,emanwen -,eslaF=lanoitpo -,bala=lebal -,]SOPLEHI[p=pleh -,tmfwen=tamrof -,eslaF=elpitlum -,hsadn=sehsad_mun -) -lanoitisop_si.fles = lanoitisop.tupnina -)tupnina(dneppa.stupnit.fles -)emanwen % "elpmas_s%"=eulav ,emanwen=eman(maraPtseT.ptxg = mrapt -)mrapt(dneppa.maraptset.fles -:rapdda.fles ni p rof -p = lcdlo ,edirrevo ,lcwen ,epytwen ,plehwen ,lebalwen ,lavwen ,emanwen -:0 > )lebalwen(nel ton fi -emanwen = lebalwen -)emanwen(hsadNteg.fles = hsadn -:"txet" == epytwen fi -(maraPtxeT.ptxg = mrapa -,emanwen -,lebalwen=lebal -,plehwen=pleh -,lavwen=eulav -,hsadn=sehsad_mun -) -:"regetni" == epytwen file -(maraPregetnI.ptxg = mrapa -,emanwen -,emanwen=lebal -,plehwen=pleh -,lavwen=eulav -,hsadn=sehsad_mun -) -:"taolf" == epytwen file -(maraPtaolF.ptxg = mrapa -,emanwen -,emanwen=lebal -,plehwen=pleh -,lavwen=eulav -,hsadn=sehsad_mun -) -:esle -(rorrEeulaV esiar -\rof "s%" epyt retemarap desingocernU' -'LMXekam ni s% retemarap lanoitidda -)emanwen ,epytwen( % -) -lanoitisop_si.fles = lanoitisop.mrapa -:lanoitisop_si.fles fi -)lcdlo(tni = lanoitisop.tupnina -)mrapa(dneppa.stupnit.fles -)lavwen=eulav ,emanwen(maraPtseT.ptxg = mrapt.fles -)mrapt(dneppa.maraptset.fles - -:)fles(marapLMXoNod fed -]SOPBALI[]0[selifni.fles = bala -:0 == )bala(nel fi -]SOPLCI[]0[selifni.fles = bala -( = s1xam -"s% - deilppus selif tupni eno naht erom - 0 si ssapmarap fi tupni eno mumixaM" -)selifni.fles(rts % -) -s1xam ,1 == )selifni.fles(nel tressa -]SOPLCI[]0[selifni.fles = emanwen -(maraPataD.ptxg = tupnina -,emanwen -,eslaF=lanoitpo -,bala=lebal -,]SOPLEHI[]0[selifni.fles=pleh -,]SOPTMFI[]0[selifni.fles=tamrof -,eslaF=elpitlum -,0=sehsad_mun -) -emanwen % "s%$ <" = edirrevo_enil_dnammoc.tupnina -lanoitisop_si.fles = lanoitisop.tupnina -)tupnina(dneppa.stupnit.fles -)emanwen % "elpmas_s%"=eulav ,emanwen=eman(maraPtseT.ptxg = pt -)pt(dneppa.maraptset.fles -]SOPLCO[]0[seliftuo.fles = emanwen -]SOPTMFO[]0[seliftuo.fles = tmfwen -)0=sehsad_mun ,tmfwen=tamrof ,emanwen(ataDtuptuO.ptxg = tuona -emanwen % "s%$ >" = edirrevo_enil_dnammoc.tuona -lanoitisop_si.fles = lanoitisop.tuona -)tuona(dneppa.stuptuot.fles -(tuptuOtseT.ptxg = pt -tmfwen=tamrof ,emanwen % "elpmas_s%"=eulav ,emanwen=eman -) -)pt(dneppa.maraptset.fles - -:)fles(LMXekam fed -""" -tpircs wen eht rof repparw loot lmx yxalaG a etaerC -lmthyxalag sesU -...redro tcerroc otni enil dnammoc eht teg ot woH .mmmH -""" -lclmx.fles = edirrevo_enil_dnammoc.loot.fles -:eman_reterpretni.sgra.fles fi -eman_reterpretni.sgra.fles = reterpretni.loot.fles -:txet_pleh.sgra.fles fi -)(senildaer.)"r" ,txet_pleh.sgra.fles(nepo = txetpleh -]txetpleh ni x rof )x(epacse_lmth[ = txetpleh -)]txetpleh ni x rof x[(nioj."" = pleh.loot.fles -:esle -( = pleh.loot.fles -\ pleh rof )s%( rohtua loot eht ksa esaelP" -"n\noitareneg loot ta deilppus saw enon sa -)liame_resu.sgra.fles( % -) -tnaw ton od # enoN = dnammoc_noisrev.loot.fles -)(stnemeriuqeR.ptxg = stnemeriuqer - -:eman_reterpretni.sgra.fles fi -:"nohtyp" == eman_reterpretni.sgra.fles fi -(dneppa.stnemeriuqer -(tnemeriuqeR.ptxg -noisrev_reterpretni.sgra.fles ,"nohtyp" ,"egakcap" -) -) -:]"hs" ,"hsab"[ ni ton eman_reterpretni.sgra.fles file -(dneppa.stnemeriuqer -(tnemeriuqeR.ptxg -,"egakcap" -,eman_reterpretni.sgra.fles -,noisrev_reterpretni.sgra.fles -) -) -:esle -:"metsys" =! ssapmarap.sgra.fles dna egakcap_exe.sgra.fles fi -(dneppa.stnemeriuqer -(tnemeriuqeR.ptxg -,"egakcap" -,egakcap_exe.sgra.fles -,noisrev_egakcap_exe.sgra.fles -) -) -stnemeriuqer = stnemeriuqer.loot.fles -:"0" == ssapmarap.sgra.fles fi -)(marapLMXoNod.fles -:esle -)(marapLMXod.fles -stuptuot.fles = stuptuo.loot.fles -stupnit.fles = stupni.loot.fles -:]"metsys" ,"elbatucexE"[ ni ton edomnur.sgra.fles fi -)(selifgifnoC.ptxg = selifgifnoc -))tpircs.fles=txet ,"eMnur"=eman(elifgifnoC.ptxg(dneppa.selifgifnoc -selifgifnoc = selifgifnoc.loot.fles -)(stseT.ptxg = stset -)(tseT.ptxg = a_tset -:maraptset.fles ni pt rof -)pt(dneppa.a_tset -)a_tset(dneppa.stset -stset = stset.loot.fles -(tnemmoc_dda.loot.fles -".yrotcaF looT yxalaG eht gnisu s% ta s% yb detaerC" -))(wonemit ,liame_resu.sgra.fles( % -) -))LRUyrotcaFloot( % "s% :ta tig ni ecruoS"(tnemmoc_dda.loot.fles -(tnemmoc_dda.loot.fles -"375stb/scitamrofnioib/3901.01 :iod stpircs morf sloot elbasu-er gnitaerC :etiC" -) -)(tropxe.loot.fles = lmxe -)"w" ,eman_loot.fles % 'lmx.s%'(nepo = fx -)lmxe(etirw.fx -)"n\"(etirw.fx -)(esolc.fx -llabrat eht rof ydaer # - -:)fles(ratlooTekam fed -""" -ge htiw llabrat zg a si loot a -... oof.ni_1tset/atad-tset/emanloot/ yp.loot/emanloot/ lmx.loot/emanloot/ -tsum os ereh degnum era stuptuo dna stupni tset rof seman ETON -lc detareneg eht no desu seman tuptuo dna tupni lautca ot dnopserroc -""" -)(nur.fles = lavter -:lavter fi -(etirw.rredts.sys -"yrter dna xif esaelP .tey dliub tonnaC .deliaf nuR ##" -) -)1(tixe.sys -"tuoft" = ridt -:)ridt(stsixe.htap.so ton fi -)ridt(ridkm.so -)(LMXekam.fles -)"atad-tset" ,ridt(nioj.htap.so = ridtset -:)ridtset(stsixe.htap.so ton fi -yrotcerid stset ekam # )ridtset(ridkm.so -:selifni.fles ni p rof -]SOPHTAPI[p = htp -)]SOPLCI[p % "elpmas_s%" ,ridtset(nioj.htap.so = tsed -)tsed ,htp(elifypoc.lituhs -:seliftuo.fles ni p rof -]SOPLCO[p = htp -:"0" == ssapmarap.sgra.fles ro "TUODTS" == ]SOPLCOO[p fi -]SOPEMANO[p = htp -)]SOPEMANO[p % "elpmas_s%" ,ridtset(nioj.htap.so = tsed -)tsed ,htp(elifypoc.lituhs -)]SOPEMANO[p ,ridt(nioj.htap.so = tsed -)tsed ,htp(elifypoc.lituhs -:esle -]SOPLCO[p = htp -)]SOPLCO[p % "elpmas_s%" ,ridtset(nioj.htap.so = tsed -)tsed ,htp(elifypoc.lituhs -)]SOPLCO[p ,ridt(nioj.htap.so = tsed -)tsed ,htp(elifypoc.lituhs - -:0 > ezis_ts.)golt.fles(tats.so dna )golt.fles(stsixe.htap.so fi -))"txteliftuo_gol_1tset" ,ridtset(nioj.htap.so ,golt.fles(elifypoc.lituhs -:]"metsys" ,"elbatucexE"[ ni ton edomnur.sgra.fles fi -))elifs.fles( % "s%" ,ridt(nioj.htap.so = emants -:)emants(stsixe.htap.so ton fi -)emants ,elifs.fles(elifypoc.lituhs -eman_loot.fles % 'lmx.s%' = laerx -)laerx,ridt(nioj.htap.so = tuox -)tuox ,laerx(elifypoc.lituhs -eman_loot.fles % "zgt.s%_yrotcafloot" = htaprat -)"zg:w" ,htaprat(nepo.elifrat = ft -)eman_loot.fles=emancra ,ridt=eman(dda.ft -)(esolc.ft -)loot_wen.sgra.fles ,htaprat(elifypoc.lituhs -)"txt.lmx_loot",laerx(elifypoc.lituhs -"ridpmet_troper_nur_FT" = ridper -:)ridper(stsixe.htap.so ton fi -)ridper(ridkm.so -]seliftuo.fles ni x rof ]SOPLCO[x[ = semantuoper -:stuo sa )'.'(ridnacs.so htiw -:stuo ni yrtne rof -:)(elif_si.yrtne ton ro )'zgt.'(htiwsdne.eman.yrtne fi -eunitnoc -:semantuoper ni eman.yrtne fi -))eman.yrtne,ridper(nioj.htap.so,eman.yrtne(elifypoc.lituhs -:eman_loot.fles % "lmx.s%" == eman.yrtne file -))"lmx_loot_wen",ridper(nioj.htap.so,eman.yrtne(elifypoc.lituhs -lavter nruter - -:)fles(nur fed -""" -htiaf eht htiw gnipeek m'I os daer rredts evisnefed siht evah sloot maetved emoS -.etadpu ot eerf leeF -""" -)lc.fles(rts % "s%=lc nur" = s - -)s(gubed.gniggol -)lc.fles(nioj." " = lcs -enoN = rre -:"0" =! ssapmarap.sgra.fles fi -)"bw" ,gole.fles(nepo = ets -:tceriderlctsal.fles fi -(nepo = ots -"bw" ,]1[tceriderlctsal.fles -elif tuptuo na fo eman si # ) -:esle -)"bw" ,golt.fles(nepo = ots -(etirw.ots -(setyb -"n\s% = enil dnammoc detareneg yrotcaflooT gnitucexE ##" -,lcs % -,"8ftu" -) -) -)(hsulf.ots -)ets=rredts ,ots=tuodts ,eslaF=llehs ,lc.fles(nur.ssecorpbus = p -)(esolc.ots -)(esolc.ets -)"br" ,gole.fles(nepo = rredts_pmt -"" = rre -6758401 = ezisffub -:yrt -:eurT elihw -))ezisffub(daer.rredts_pmt(rts =+ rre -:0 =! ezisffub % )rre(nel ro rre ton fi -kaerb -:rorrEwolfrevO tpecxe -ssap -)(esolc.rredts_pmt -edocnruter.p = lavter -tuodts ot etirw dna nidts ekat taht stpircs elpmis fo esac laiceps dnuora krow # :esle -)"br" ,]SOPHTAPI[]0[selifni.fles(nepo = its -)"bw" ,]SOPEMANO[]0[seliftuo.fles(nepo = ots -tcerider ot llehs esu tsum # -)its=nidts ,ots=tuodts ,eslaF=llehs ,lc.fles(nur.ssecorpbus = p -edocnruter.p = lavter -)(esolc.ots -)(esolc.its -:0 == ezis_ts.)golt.fles(tats.so dna )golt.fles(elifsi.htap.so fi -)golt.fles(knilnu.so -:0 == ezis_ts.)gole.fles(tats.so dna )gole.fles(elifsi.htap.so fi -)gole.fles(knilnu.so -melborp # :rre dna 0 =! edocnruter.p fi -)rre(etirw.rredts.sys -)"enod nur"(gubed.gniggol -lavter nruter - - -:)(niam fed -""" -:sa lmx.loot esoprup laiceps a yb dellac eb ot stcepxe tI .repparw yxalaG a si sihT -"tpircsR" reterpretni-- "oof" eman_loot-- "htaPtpircs$" htap_tpircs-- yp.repparWtpircSesaBgr>"nohtyp"=reterpretni dnammoc< ->dnammoc/< -""" -)(resraPtnemugrA.esrapgra = resrap -tnemugra_dda.resrap = a -)""=tluafed ,"htap_tpircs--"(a -)enoN=tluafed ,"eman_loot--"(a -)enoN=tluafed ,"eman_reterpretni--"(a -)enoN=tluafed ,"noisrev_reterpretni--"(a -)enoN=tluafed ,"egakcap_exe--"(a -)enoN=tluafed ,"noisrev_egakcap_exe--"(a -)"dneppa"=noitca ,][=tluafed ,"selif_tupni--"(a -)"dneppa"=noitca ,][=tluafed ,"selif_tuptuo--"(a -)"nwonknU"=tluafed ,"liame_resu--"(a -)enoN=tluafed ,"resu_dab--"(a -)enoN=tluafed ,"looT_ekam--"(a -)enoN=tluafed ,"txet_pleh--"(a -)enoN=tluafed ,"csed_loot--"(a -)enoN=tluafed ,"noisrev_loot--"(a -)enoN=tluafed ,"snoitatic--"(a -)][=tluafed ,"dneppa"=noitca ,"sretemarap_lanoitidda--"(a -)eslaF=tluafed ,"eurt_erots"=noitca ,"sretemarap_lanoitidda_tide--"(a -)"lanoitisop"=tluafed ,"ssapmarap--"(a -)"tuoft/."=tluafed ,"tuoft--"(a -)"loot_wen"=tluafed ,"loot_wen--"(a -)enoN=tluafed ,"edomnur--"(a -)(sgra_esrap.resrap = sgra -( ,resu_dab.sgra ton tressa -'elif noitarugifnoc yxalaG eht ni "sresu_nimda" ot s% sdda nimda yxalaG litnu loot siht esu ot dezirohtua TON si s% :DESIROHTUANU' -)resu_dab.sgra ,resu_dab.sgra( % -) -( tressa -eman_loot.sgra -"qeSED=eman_loot-- ge - eman loot a stcepxe yrotcaF looT ##" ,) -( tressa -egakcap_exe.sgra ro eman_reterpretni.sgra -"egakcap elbatucexe na ro reterpretni na stcepxe repparw yrotcaF looT ##" ,) -( ro egakcap_exe.sgra tressa -)htap_tpircs.sgra(elifsi.htap.so dna 0 > )htap_tpircs.sgra(nel -"elbatucexe on fi R.oof=htap_tpircs-- ge - htap tpircs a stcepxe repparw yrotcaF looT ##" ,) -[ = selif_tupni.sgra -selif_tupni.sgra ni x rof )"" ,"'"(ecalper.)"" ,'"'(ecalper.x -] -smarap LC ni secaps htiw laed ot deen ew setouq evomer # -:)sretemarap_lanoitidda.sgra(etaremune ni x ,i rof -(ecalper.]i[sretemarap_lanoitidda.sgra = ]i[sretemarap_lanoitidda.sgra -"" ,'"' -) -)sgra(rennuRtpircS = r -:looT_ekam.sgra fi -)(ratlooTekam.r = edocter -:esle -)(nur.r = edocter -:edocter fi -rennur boj ot eruliaf etacidni # )edocter(tixe.sys - - -:"__niam__" == __eman__ fi -)(niam
--- a/pyrevpos/test-data/test1_log.txt Tue Nov 24 21:59:01 2020 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -## Executing Toolfactory generated command line = python /home/ross/galaxy/database/tmp/pyrevposz9rx5n8f.python /home/ross/galaxy/database/objects/9/8/a/dataset_98a46be8-3a8f-4152-90ba-4a9e913f4eb4.dat output
--- a/pyrevpos/test1_log_outfiletxt Tue Nov 24 21:59:01 2020 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -## Executing Toolfactory generated command line = python /home/ross/galaxy/database/tmp/pyrevposygle0d43_python /home/ross/galaxy/database/objects/f/a/6/dataset_fa66be33-3c07-465d-be42-f2b0950b293d.dat output
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tacrev/outfile Tue Nov 24 22:04:10 2020 +0000 @@ -0,0 +1,166 @@ + +gnp.looTtpircScimanyd/segami/989ef2308adf/crs/rekamlootyxalag/rabuf/gro.tekcubtib//:ptth + +**tohsneercs yrotagilbO** + +LPGL eht rednu desneciL + +.devreser sthgir llA + +moc doirep liam g ta surazal ssor +0102 surazaL ssoR thgirypoC + +**gnisneciL** + +fer=epytyek&JWYdwMrWs1hQzcl=yekji?375stb/tnirper/igc/gro.slanruojdrofxo.scitamrofnioib//:ptth + +375stb/scitamrofnioib/3901.01 :iod ;2102 scitamrofnioiB +maeT yxalaG ehT ;nnameiZ kraM ;ipsaK ynotnA ;surazaL ssoR +yrotcaF looT yxalaG ehT :stpircs morf sloot elbasu-er gnitaerC + +**noitubirttA** + +?esaelp seussi tekcubtib sa emoclew snoitseggus dna sehctaP + +**edoC dneS** + +.yracs yllaer si ti - eno siht yllaicepsE .loot yna llatsni uoy erofeb edoc eht daeR +.dehsloot efas ecitcarp ,esaelp tub erucesni yllausunu gnihtyna od tonnac resu +rieht dna yllamron nur tsuj yehT .efas si tpircs eht gnimussa - loot rehtona +tsuj s'ti ,loot detareneg a llatsni uoy ecnO + +**ytiruceS loot detareneG** + +.dehsloot ruoy esu ot derugifnoc yxalaG noitcudorp yna ni noitallatsni +detamotua ylegral dna efas snaem tahT .dehsloot lacol ruoy no yrotisoper a +ni loot yxalaG yranidro na sa nur ot ydaer tpircs ruoy gniniatnoc elif pizg +elbitapmoc dehsloot a etareneg nac uoy ,atad tset emos no skrow tpircs eht ecnO + +.llew ytterp skrow ti - gubed uoy sa ti nurer ot gniyrt +erofeb tpircs eht tide dna nottub oder eht esu nac uoY .snur ti yllautneve +dna srorre xatnys eht xif uoy ,tpircs ruoy nur dna etsap uoY + +**od uoy tahW** + +.eno xelpmoc erom +a ot pu gel suoires a uoy steg tpircs detareneg a ecnis pu dliub dna llams +trats os ,loot yxalaG yna ekil decnahne dna detide eb nac sloot detareneG + +.elbaliava eb ot deen kigamegami +dna taht os tpircstsohg htiw knurhs era s'fdp detaolb s'R dna slianbmuht sa +nwohs era stuptuo fdp - selif tuptuo dna segami setirw tpircs eht fi lufesu +- etagivan ot resu eht rof egap xedni LMTH detarenegotua na no sknil otni +stuptuo fo rebmun yna tcelloc yllanoitpo dna ,tesatad yrotsih wen eno etirw +nac yllanoitpO .yrotsih eht morf tupni eno daer taht stpircs elpmis ot DETIMIL + +.taht si looc woH .detareneg yllacitamotua era stset lanoitcnuF .yltnerruc lrep +dna R ,nohtyp ni stpircs elpmis rof yrotcaf loot a si sihT + + **seod ti tahW** + +.slliks lacinhcet etairporppa fo kcal eb +ylbaborp dluow atad yxalaG ruoy lla gniyortsed no tneb tnaercsim a edepmi +dluow taht gniht ylno eht ,revres yxalaG ruoy no tpircs yrartibra yna nur +ot dewolla fI .tnemom a rof ti tuoba knihT **loot siht nur nac sresu_nimda +YLNO .thgir s'taht ,seY** ini.igsw_esrevinu ni sresu_nimda ni sDI htiw elpoep +- sresu nimda yb YLNO elbasu eb neht lliw flesti loot yrotcaf loot ehT + +**noitucexe detcirtseR** + + +.lmx.fnoc_sepyt_atad lacol ruoy ot +>/ "eurT"=ssalcbus "pizg-x/trapitlum"=epytemim +"yraniB:yranib.sepytatad.yxalag"=epyt "zg.dehsloot"=noisnetxe epytatad< +:dda esaelp +,ereht ydaerla ton fI + +>noitces/< +>/"lmx.yrotcaFlooTgr/yrotcafloot"=elif loot< +>"sredliubloot"=di "sloot gnidliub looT"=eman noitces< + +::ekil gnihtemos - elif +lmx eht ot gnitniop +yrtne wen a sdeen lmx.fnoc_loot ruoY yrotcafloot/sloot sa hcus yrotceridbus +sloot wen a otni deipoc +eb ot deen ereh selif yp dna lmx eht ,yaw taht loot eht teg t'nac uoy fI + +.ti llatsni ot noitpo eht tceles dna edoc eht weiver dna ti nepO .yrotisoper +yrotcafloot eht rof hcraes dna /ude.usp.xb.2g.dehsloot//:sptth ta dehsloot +niaM yxalaG eht dniF .knil "sdehs loot esworb dna hcraeS" evitartsinimda +eht gnisu yltneinevnoc tsom ti llatsni nac uoY .loot yxalaG a si sihT +**noitallatsnI** + +emoH/ikiw/yrotcaflootyxalag/rabuf/gro.tekcubtib//:sptth +ees seceip eht lla peek ot teg uoy ,ti kaerb uoy fi ,nehT .resu_nimda +na era uoy erehw ecnatsni lacol hctarcs/lanosrep/etavirp a no loot +siht gnillatsni repoleved a eb dluohs uoy ,dehSlooT eht dna yxalaG +,loot siht fo *rewop emosewa eht tiolpxe ylefas dna ylluf oT* + +.selbairav on +,tuptuo eno ,tupni enO .stnenopmoc wolfkrow rof tcefrep era sloot yrotcaf looT + +.emit yreve tpircs ruoy nur tub,loot yxalaG rehto yna ekil tsuj nur yrotcaFlooT +eht htiw etareneg uoy sloot eht ,sdrow rehto nI .yrotsih s'resu eht morf +nesohc tupni eht htiw detucexe eb lliw tliub saw ti nehw deilppus saw taht +tpircs eht ,emit hcae - ti nur nac sresu lacol ,dellatsni si loot wen eht ecnO + +.ecafretni evitartsinimda revres eht morf +revres yxalaG lacol yna otni dellatsni eb nac ti ,dehSlooT a ni s'ti ecnO + +.yrotisoper loot wen a sa dehSlooT yxalaG +a ot daolpu ot ydaer evihcra na s'ti ,stseggus eman eht sa - *zg.dehsloot* +epytatad yxalaG wen a fo mrof eht ni detareneg eb lliw loot wen ehT .seman +dna txet pleh emos ylppus dna noitpo "etareneg" eht tceleS .detareneg eb nac +tpircs ruoy snur taht loot yxalaG wen a ,yllufssecus snur tpircs eht ecnO + +.taeper ,hsaw ,esniR .niaga etucexe dna +gub eht xiF .tpircs nekorb htiw etelpmoc mrof eht etaercer ot yrotsih ruoy +ni tuptuo loot eht no nottub "oder" eht esu ,wohemos sliaf tpircs eht fI + +.loot atad wen dda yrotsih yxalaG eht +gnisu tes atad tset llams a etaerc ot deen osla ll'uoY .esaelp reterpretni +thgir eht tceles ot rebmemer - tuo ti yrt ot eseht etsap dna tuc tsuj nac +uoY .mrof yrotcaF looT eht no egaugnal gnitpircs hcae ni elpmaxe na si erehT + +em rof skrow ```atad-tset/yrotcafloot/srekam_loot/sloot/yxalag/~ atad_tset-- yxalag/~ toor_yxalag-- lmx.2yrotcaFlooTgr tset omenalp``` + +.tpircs wen ruoy tset ot +yrotsih ruoy morf tceles ot ydaer elpmaxe tupni tset llams a dna dnim ni egakcap a evah ro ,xob txet +a otni etsap ot tpircs a deraperp evah dluohs uoy ,yrotcaFlooT eht esu oT + +**liateD eroM** + +.sresu ruoy rof sloot yxalaG rehto lla ekil yltcaxe krow dna +rotartsinimda na yb dehs loot a aiv dellatsni era sloot detareneG +.xob eht fo tuo elbitapmoc wolfkrow ylluf ,loot yxalaG yranidro ,wen a otni +tnemeriuqer a sa dekab si elbatucexe ro tpircs deilppus ehT .loot yxalaG wen +a dliub ot desu eb nac yeht ,decudorp neeb evah stuptuo esac tset eht ecnO +.ylppus uoy sgnittes retemarap dna stupni atad tset elpmas llams gnisu detareneg si tset A + +**yxalaG yna otni noitallatsni rof sloot yxalaG wen fo noitareneg detamotuA** + + +.loot yxalaG a gnisu ,setunim ni loot yxalaG yranidro na otni denrut eb nac tI + +*sretemarap elyts esrapgra ro lanoitisop htiw elbatucexe yna ro tpircs hsab/lrep/nohtyp/r gnikrow a evah uoY* + +.tuptuo sa tes atad wen elgnis a gnitirw +,stes atad tupni detceles elpitlum revo lrep dna hs ,nohtyp ,R ni stpircs nur +ot meht gniwolla ,revres yxalaG tsoh eht fo srotartsinimda detangised lla ot +gnitpircs suoregnad ylemertxe erofereht dna *detcirtsernu* gnisopxe yb skrow tI +.sloot yxalaG wen gnitareneg fo elbapac loot yxalaG lausunu na si sihT + +**yrotS trohS** + +.krow dehsilbup ruoy ni loot siht esu uoy fi +fer=epytyek&JWYdwMrWs1hQzcl=yekji?375stb/tnirper/igc/gro.slanruojdrofxo.scitamrofnioib//:ptth +ta ecruoser eht etic esaelP + +keeB ned nav suiraM yb detroper sgub xif ot 4102 8 tsugua detadpU + +troppus noitatic gnidda notlihC nhoJ yb 4102 tsugua detadpU + +ecnatsni noitcudorp ro cilbup a no REVEN esaelP +YLNO yxalaG etavirp a no loot siht llatsnI + +*trats uoy erofeb GNINRAW*
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tacrev/tacrev.xml Tue Nov 24 22:04:10 2020 +0000 @@ -0,0 +1,37 @@ +<tool name="tacrev" id="tacrev" version="0.01"> + <!--Cite: Creating re-usable tools from scripts doi: 10.1093/bioinformatics/bts573--> + <!--Source in git at: https://github.com/fubar2/toolfactory--> + <!--Created by ross.lazarus@gmail.com at 08/08/2020 16:19:38 using the Galaxy Tool Factory.--> + <description>tacrev</description> + <requirements/> + <configfiles> + <configfile name="runMe"><![CDATA[ + +rev | tac +]]></configfile> + </configfiles> + <stdio> + <exit_code range="1:" level="fatal"/> + </stdio> + <version_command/> + <command interpreter="bash"><![CDATA[$runMe < +$input1 +> +$outfile]]></command> + <inputs> + <param help="parameter_help" label="input file" optional="false" multiple="false" format="txt" type="data" name="input1" argument="input1"/> + </inputs> + <outputs> + <data hidden="false" format="txt" name="outfile"/> + </outputs> + <tests> + <test> + <param value="input1_sample" name="input1"/> + <output value="outfile_sample" name="outfile" format="txt"/> + </test> + </tests> + <help><![CDATA[ +**What it Does** + ]]></help> +</tool> +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tacrev/test-data/input1_sample Tue Nov 24 22:04:10 2020 +0000 @@ -0,0 +1,166 @@ +*WARNING before you start* + + Install this tool on a private Galaxy ONLY + Please NEVER on a public or production instance + +Updated august 2014 by John Chilton adding citation support + +Updated august 8 2014 to fix bugs reported by Marius van den Beek + +Please cite the resource at +http://bioinformatics.oxfordjournals.org/cgi/reprint/bts573?ijkey=lczQh1sWrMwdYWJ&keytype=ref +if you use this tool in your published work. + +**Short Story** + +This is an unusual Galaxy tool capable of generating new Galaxy tools. +It works by exposing *unrestricted* and therefore extremely dangerous scripting +to all designated administrators of the host Galaxy server, allowing them to +run scripts in R, python, sh and perl over multiple selected input data sets, +writing a single new data set as output. + +*You have a working r/python/perl/bash script or any executable with positional or argparse style parameters* + +It can be turned into an ordinary Galaxy tool in minutes, using a Galaxy tool. + + +**Automated generation of new Galaxy tools for installation into any Galaxy** + +A test is generated using small sample test data inputs and parameter settings you supply. +Once the test case outputs have been produced, they can be used to build a +new Galaxy tool. The supplied script or executable is baked as a requirement +into a new, ordinary Galaxy tool, fully workflow compatible out of the box. +Generated tools are installed via a tool shed by an administrator +and work exactly like all other Galaxy tools for your users. + +**More Detail** + +To use the ToolFactory, you should have prepared a script to paste into a +text box, or have a package in mind and a small test input example ready to select from your history +to test your new script. + +```planemo test rgToolFactory2.xml --galaxy_root ~/galaxy --test_data ~/galaxy/tools/tool_makers/toolfactory/test-data``` works for me + +There is an example in each scripting language on the Tool Factory form. You +can just cut and paste these to try it out - remember to select the right +interpreter please. You'll also need to create a small test data set using +the Galaxy history add new data tool. + +If the script fails somehow, use the "redo" button on the tool output in +your history to recreate the form complete with broken script. Fix the bug +and execute again. Rinse, wash, repeat. + +Once the script runs sucessfully, a new Galaxy tool that runs your script +can be generated. Select the "generate" option and supply some help text and +names. The new tool will be generated in the form of a new Galaxy datatype +*toolshed.gz* - as the name suggests, it's an archive ready to upload to a +Galaxy ToolShed as a new tool repository. + +Once it's in a ToolShed, it can be installed into any local Galaxy server +from the server administrative interface. + +Once the new tool is installed, local users can run it - each time, the script +that was supplied when it was built will be executed with the input chosen +from the user's history. In other words, the tools you generate with the +ToolFactory run just like any other Galaxy tool,but run your script every time. + +Tool factory tools are perfect for workflow components. One input, one output, +no variables. + +*To fully and safely exploit the awesome power* of this tool, +Galaxy and the ToolShed, you should be a developer installing this +tool on a private/personal/scratch local instance where you are an +admin_user. Then, if you break it, you get to keep all the pieces see +https://bitbucket.org/fubar/galaxytoolfactory/wiki/Home + +**Installation** +This is a Galaxy tool. You can install it most conveniently using the +administrative "Search and browse tool sheds" link. Find the Galaxy Main +toolshed at https://toolshed.g2.bx.psu.edu/ and search for the toolfactory +repository. Open it and review the code and select the option to install it. + +If you can't get the tool that way, the xml and py files here need to be +copied into a new tools +subdirectory such as tools/toolfactory Your tool_conf.xml needs a new entry +pointing to the xml +file - something like:: + + <section name="Tool building tools" id="toolbuilders"> + <tool file="toolfactory/rgToolFactory.xml"/> + </section> + +If not already there, +please add: +<datatype extension="toolshed.gz" type="galaxy.datatypes.binary:Binary" +mimetype="multipart/x-gzip" subclass="True" /> +to your local data_types_conf.xml. + + +**Restricted execution** + +The tool factory tool itself will then be usable ONLY by admin users - +people with IDs in admin_users in universe_wsgi.ini **Yes, that's right. ONLY +admin_users can run this tool** Think about it for a moment. If allowed to +run any arbitrary script on your Galaxy server, the only thing that would +impede a miscreant bent on destroying all your Galaxy data would probably +be lack of appropriate technical skills. + +**What it does** + +This is a tool factory for simple scripts in python, R and +perl currently. Functional tests are automatically generated. How cool is that. + +LIMITED to simple scripts that read one input from the history. Optionally can +write one new history dataset, and optionally collect any number of outputs +into links on an autogenerated HTML index page for the user to navigate - +useful if the script writes images and output files - pdf outputs are shown +as thumbnails and R's bloated pdf's are shrunk with ghostscript so that and +imagemagik need to be available. + +Generated tools can be edited and enhanced like any Galaxy tool, so start +small and build up since a generated script gets you a serious leg up to a +more complex one. + +**What you do** + +You paste and run your script, you fix the syntax errors and +eventually it runs. You can use the redo button and edit the script before +trying to rerun it as you debug - it works pretty well. + +Once the script works on some test data, you can generate a toolshed compatible +gzip file containing your script ready to run as an ordinary Galaxy tool in +a repository on your local toolshed. That means safe and largely automated +installation in any production Galaxy configured to use your toolshed. + +**Generated tool Security** + +Once you install a generated tool, it's just +another tool - assuming the script is safe. They just run normally and their +user cannot do anything unusually insecure but please, practice safe toolshed. +Read the code before you install any tool. Especially this one - it is really scary. + +**Send Code** + +Patches and suggestions welcome as bitbucket issues please? + +**Attribution** + +Creating re-usable tools from scripts: The Galaxy Tool Factory +Ross Lazarus; Antony Kaspi; Mark Ziemann; The Galaxy Team +Bioinformatics 2012; doi: 10.1093/bioinformatics/bts573 + +http://bioinformatics.oxfordjournals.org/cgi/reprint/bts573?ijkey=lczQh1sWrMwdYWJ&keytype=ref + +**Licensing** + +Copyright Ross Lazarus 2010 +ross lazarus at g mail period com + +All rights reserved. + +Licensed under the LGPL + +**Obligatory screenshot** + +http://bitbucket.org/fubar/galaxytoolmaker/src/fda8032fe989/images/dynamicScriptTool.png +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tacrev/test-data/outfile_sample Tue Nov 24 22:04:10 2020 +0000 @@ -0,0 +1,166 @@ + +gnp.looTtpircScimanyd/segami/989ef2308adf/crs/rekamlootyxalag/rabuf/gro.tekcubtib//:ptth + +**tohsneercs yrotagilbO** + +LPGL eht rednu desneciL + +.devreser sthgir llA + +moc doirep liam g ta surazal ssor +0102 surazaL ssoR thgirypoC + +**gnisneciL** + +fer=epytyek&JWYdwMrWs1hQzcl=yekji?375stb/tnirper/igc/gro.slanruojdrofxo.scitamrofnioib//:ptth + +375stb/scitamrofnioib/3901.01 :iod ;2102 scitamrofnioiB +maeT yxalaG ehT ;nnameiZ kraM ;ipsaK ynotnA ;surazaL ssoR +yrotcaF looT yxalaG ehT :stpircs morf sloot elbasu-er gnitaerC + +**noitubirttA** + +?esaelp seussi tekcubtib sa emoclew snoitseggus dna sehctaP + +**edoC dneS** + +.yracs yllaer si ti - eno siht yllaicepsE .loot yna llatsni uoy erofeb edoc eht daeR +.dehsloot efas ecitcarp ,esaelp tub erucesni yllausunu gnihtyna od tonnac resu +rieht dna yllamron nur tsuj yehT .efas si tpircs eht gnimussa - loot rehtona +tsuj s'ti ,loot detareneg a llatsni uoy ecnO + +**ytiruceS loot detareneG** + +.dehsloot ruoy esu ot derugifnoc yxalaG noitcudorp yna ni noitallatsni +detamotua ylegral dna efas snaem tahT .dehsloot lacol ruoy no yrotisoper a +ni loot yxalaG yranidro na sa nur ot ydaer tpircs ruoy gniniatnoc elif pizg +elbitapmoc dehsloot a etareneg nac uoy ,atad tset emos no skrow tpircs eht ecnO + +.llew ytterp skrow ti - gubed uoy sa ti nurer ot gniyrt +erofeb tpircs eht tide dna nottub oder eht esu nac uoY .snur ti yllautneve +dna srorre xatnys eht xif uoy ,tpircs ruoy nur dna etsap uoY + +**od uoy tahW** + +.eno xelpmoc erom +a ot pu gel suoires a uoy steg tpircs detareneg a ecnis pu dliub dna llams +trats os ,loot yxalaG yna ekil decnahne dna detide eb nac sloot detareneG + +.elbaliava eb ot deen kigamegami +dna taht os tpircstsohg htiw knurhs era s'fdp detaolb s'R dna slianbmuht sa +nwohs era stuptuo fdp - selif tuptuo dna segami setirw tpircs eht fi lufesu +- etagivan ot resu eht rof egap xedni LMTH detarenegotua na no sknil otni +stuptuo fo rebmun yna tcelloc yllanoitpo dna ,tesatad yrotsih wen eno etirw +nac yllanoitpO .yrotsih eht morf tupni eno daer taht stpircs elpmis ot DETIMIL + +.taht si looc woH .detareneg yllacitamotua era stset lanoitcnuF .yltnerruc lrep +dna R ,nohtyp ni stpircs elpmis rof yrotcaf loot a si sihT + + **seod ti tahW** + +.slliks lacinhcet etairporppa fo kcal eb +ylbaborp dluow atad yxalaG ruoy lla gniyortsed no tneb tnaercsim a edepmi +dluow taht gniht ylno eht ,revres yxalaG ruoy no tpircs yrartibra yna nur +ot dewolla fI .tnemom a rof ti tuoba knihT **loot siht nur nac sresu_nimda +YLNO .thgir s'taht ,seY** ini.igsw_esrevinu ni sresu_nimda ni sDI htiw elpoep +- sresu nimda yb YLNO elbasu eb neht lliw flesti loot yrotcaf loot ehT + +**noitucexe detcirtseR** + + +.lmx.fnoc_sepyt_atad lacol ruoy ot +>/ "eurT"=ssalcbus "pizg-x/trapitlum"=epytemim +"yraniB:yranib.sepytatad.yxalag"=epyt "zg.dehsloot"=noisnetxe epytatad< +:dda esaelp +,ereht ydaerla ton fI + +>noitces/< +>/"lmx.yrotcaFlooTgr/yrotcafloot"=elif loot< +>"sredliubloot"=di "sloot gnidliub looT"=eman noitces< + +::ekil gnihtemos - elif +lmx eht ot gnitniop +yrtne wen a sdeen lmx.fnoc_loot ruoY yrotcafloot/sloot sa hcus yrotceridbus +sloot wen a otni deipoc +eb ot deen ereh selif yp dna lmx eht ,yaw taht loot eht teg t'nac uoy fI + +.ti llatsni ot noitpo eht tceles dna edoc eht weiver dna ti nepO .yrotisoper +yrotcafloot eht rof hcraes dna /ude.usp.xb.2g.dehsloot//:sptth ta dehsloot +niaM yxalaG eht dniF .knil "sdehs loot esworb dna hcraeS" evitartsinimda +eht gnisu yltneinevnoc tsom ti llatsni nac uoY .loot yxalaG a si sihT +**noitallatsnI** + +emoH/ikiw/yrotcaflootyxalag/rabuf/gro.tekcubtib//:sptth +ees seceip eht lla peek ot teg uoy ,ti kaerb uoy fi ,nehT .resu_nimda +na era uoy erehw ecnatsni lacol hctarcs/lanosrep/etavirp a no loot +siht gnillatsni repoleved a eb dluohs uoy ,dehSlooT eht dna yxalaG +,loot siht fo *rewop emosewa eht tiolpxe ylefas dna ylluf oT* + +.selbairav on +,tuptuo eno ,tupni enO .stnenopmoc wolfkrow rof tcefrep era sloot yrotcaf looT + +.emit yreve tpircs ruoy nur tub,loot yxalaG rehto yna ekil tsuj nur yrotcaFlooT +eht htiw etareneg uoy sloot eht ,sdrow rehto nI .yrotsih s'resu eht morf +nesohc tupni eht htiw detucexe eb lliw tliub saw ti nehw deilppus saw taht +tpircs eht ,emit hcae - ti nur nac sresu lacol ,dellatsni si loot wen eht ecnO + +.ecafretni evitartsinimda revres eht morf +revres yxalaG lacol yna otni dellatsni eb nac ti ,dehSlooT a ni s'ti ecnO + +.yrotisoper loot wen a sa dehSlooT yxalaG +a ot daolpu ot ydaer evihcra na s'ti ,stseggus eman eht sa - *zg.dehsloot* +epytatad yxalaG wen a fo mrof eht ni detareneg eb lliw loot wen ehT .seman +dna txet pleh emos ylppus dna noitpo "etareneg" eht tceleS .detareneg eb nac +tpircs ruoy snur taht loot yxalaG wen a ,yllufssecus snur tpircs eht ecnO + +.taeper ,hsaw ,esniR .niaga etucexe dna +gub eht xiF .tpircs nekorb htiw etelpmoc mrof eht etaercer ot yrotsih ruoy +ni tuptuo loot eht no nottub "oder" eht esu ,wohemos sliaf tpircs eht fI + +.loot atad wen dda yrotsih yxalaG eht +gnisu tes atad tset llams a etaerc ot deen osla ll'uoY .esaelp reterpretni +thgir eht tceles ot rebmemer - tuo ti yrt ot eseht etsap dna tuc tsuj nac +uoY .mrof yrotcaF looT eht no egaugnal gnitpircs hcae ni elpmaxe na si erehT + +em rof skrow ```atad-tset/yrotcafloot/srekam_loot/sloot/yxalag/~ atad_tset-- yxalag/~ toor_yxalag-- lmx.2yrotcaFlooTgr tset omenalp``` + +.tpircs wen ruoy tset ot +yrotsih ruoy morf tceles ot ydaer elpmaxe tupni tset llams a dna dnim ni egakcap a evah ro ,xob txet +a otni etsap ot tpircs a deraperp evah dluohs uoy ,yrotcaFlooT eht esu oT + +**liateD eroM** + +.sresu ruoy rof sloot yxalaG rehto lla ekil yltcaxe krow dna +rotartsinimda na yb dehs loot a aiv dellatsni era sloot detareneG +.xob eht fo tuo elbitapmoc wolfkrow ylluf ,loot yxalaG yranidro ,wen a otni +tnemeriuqer a sa dekab si elbatucexe ro tpircs deilppus ehT .loot yxalaG wen +a dliub ot desu eb nac yeht ,decudorp neeb evah stuptuo esac tset eht ecnO +.ylppus uoy sgnittes retemarap dna stupni atad tset elpmas llams gnisu detareneg si tset A + +**yxalaG yna otni noitallatsni rof sloot yxalaG wen fo noitareneg detamotuA** + + +.loot yxalaG a gnisu ,setunim ni loot yxalaG yranidro na otni denrut eb nac tI + +*sretemarap elyts esrapgra ro lanoitisop htiw elbatucexe yna ro tpircs hsab/lrep/nohtyp/r gnikrow a evah uoY* + +.tuptuo sa tes atad wen elgnis a gnitirw +,stes atad tupni detceles elpitlum revo lrep dna hs ,nohtyp ,R ni stpircs nur +ot meht gniwolla ,revres yxalaG tsoh eht fo srotartsinimda detangised lla ot +gnitpircs suoregnad ylemertxe erofereht dna *detcirtsernu* gnisopxe yb skrow tI +.sloot yxalaG wen gnitareneg fo elbapac loot yxalaG lausunu na si sihT + +**yrotS trohS** + +.krow dehsilbup ruoy ni loot siht esu uoy fi +fer=epytyek&JWYdwMrWs1hQzcl=yekji?375stb/tnirper/igc/gro.slanruojdrofxo.scitamrofnioib//:ptth +ta ecruoser eht etic esaelP + +keeB ned nav suiraM yb detroper sgub xif ot 4102 8 tsugua detadpU + +troppus noitatic gnidda notlihC nhoJ yb 4102 tsugua detadpU + +ecnatsni noitcudorp ro cilbup a no REVEN esaelP +YLNO yxalaG etavirp a no loot siht llatsnI + +*trats uoy erofeb GNINRAW*