type file; (file phr, file pin, file psq) formatdb(file input) { app { formatdb "-i" @input; } } (file output) blast(file input1, file phr1, file pin1, file psq1, file input2, file phr2, file pin2, file psq2) { app{ blastall "-p" "blastp" "-d" @input1 "-i" @input2 "-m" "9" "-o" @output; } } (file output) reciprocal(file reciprocalScript, file input1, file input2) { app { perl @reciprocalScript "-i1" @input1 "-i2" @input2 "-o" @output; } } file reciprocalScript <"simple_reciprocal_best_hits.01b.pl">; file input1 <"Ban.faa">; file phr1 <"Ban.faa.phr">; file pin1 <"Ban.faa.pin">; file psq1 <"Ban.faa.psq">; file input2 <"Bce.faa">; file phr2 <"Bce.faa.phr">; file pin2 <"Bce.faa.pin">; file psq2 <"Bce.faa.psq">; #file formatted1 <"Ban-db.faa">; #file formatted2 <"Bce-db.faa">; file output1 <"out.Bce2Ban.txt">; file output2 <"out.Ban2Bce.txt">; file output <"ortholog.pairs.txt">; (phr1, pin1, psq1) = formatdb(input1); (phr2, pin2, psq2) = formatdb(input2); output1 = blast(input1, phr1, pin1, psq1, input2, phr2, pin2, psq2); output2 = blast(input2, phr2, pin2, psq2, input1, phr1, pin1, psq1); output = reciprocal(reciprocalScript, output1, output2);