type file {}; global string blastdb=@arg("blastdb"); global string curdir=@arg("curdir"); global int njobs=@toint(@arg("njobs")); global string infile=@arg("infile"); # Application functions: split(), blast(), merge(), parse() app (file flist) split (file seqs, int nfiles) { split @seqs nfiles @strcat(curdir,"/split") stdout=@flist; } app (file o) blast (file i) { blastall "-i" @i "-d" blastdb "-o" @o "-m8" "-p" "blastp"; } app (file o) merge (file i[]) { cat @filenames(i) stdout=@o; } app (file o) parse (file i) { parse "--file" @i stdout=@o; } # Main script #file inputseqs <"input/tiny.fasta">; file inputseqs ; file fastalist <"split/flist">; fastalist = split(inputseqs,njobs); string fastanames[] = readData(fastalist); file splitseqs[] ; file output[] ; foreach f, i in splitseqs { output[i] = blast(f); } file blastout<"output/blast.all.out">; blastout = merge(output); file parseout<"output/parse.out">; parseout = parse(blastout); /* Notes: split_fasta.pl input/unknown.fasta 100 input > list_of_files.txt blastall -i input/fasta_chunk_1 -d $BLASTDB/nr/nr -o output/blast_chunk_1.out -m8 -p blastp echo "output/blast_chunk_1.out" >> output/blast_output_files.txt concatenate_files.pl output/blast_output_files.txt output/blast_out.blast parse_tabbed_blast.pl --file output/blast_out.blast > output/jobResults.txt */