type info{ string proteinId; int jobnum; } // Input types type Fasta; type SecSeq; type PDB; // OOPS Output types type OOPSSecStr; type OOPSLog; type OOPSEnergy; type OOPSpdt; type OOPSrmsd; type OOPSLibrary; app ( OOPSpdt pdt, OOPSEnergy e, OOPSLibrary lib, OOPSSecStr secstr, OOPSrmsd rmsd, OOPSLog log ) runoops ( Fasta fasta, SecSeq secseq, PDB pdb, int jobnum, string cfgParams[] ) { runoops @fasta @secseq @pdb @pdt @rmsd jobnum cfgParams[*] stdout=@log; } /* Desired: string config [] = [ "TEMP UPDATE INTERVAL", "10", "SMOOTH DEVIATION COEFFICIENT", "0.80001" ]; */ // trying this: string config []; config[0] = "TEMP UPDATE INTERVAL"; config[1]="10"; config[2] = "SMOOTH DEVIATION COEFFICIENT"; config[3]="0.80001"; int iter[]=[1:1]; foreach j in iter { // map inputs Fasta fasta <"input/fasta/T1af7.fasta">; SecSeq secseq <"input/secseq/T1af7.secseq">; PDB native <"input/native/T1af7.pdb">; // map outputs OOPSpdt pdt <"output/out.pdt">; OOPSEnergy e <"output/out.Energy">; OOPSLibrary lib <"output/out.Library">; OOPSSecStr secstr <"output/out.SecStr">; OOPSrmsd rmsd <"output/out.rmsd">; OOPSLog log <"output/out.log">; ( pdt, e, lib, secstr, rmsd, log) = runoops( fasta, secseq, native, j, config ); } /* TO DO: info tparams[]; tparams[0].proteinId="T1af7"; tparams[0].jobnum = 0; Args are passed to app by relative path, rel to workdir. Then do mappings how to compose unique outfile names? Pass rel or abs infile names? Experiment with: - passing of strings for params with a single name (will it expand the array?) - passing of structs as args to an app: how will these be handled? How will they be expanded with @filename? - how *should* these cases be handled? Do they afford a compact notation for mapping? - how to treat ooopsout{} as a struct, with some optional files? Ditto oopsin? */ /* fossils app (messagefile t) greeting(string s) { echo s stdout=@filename(t); } app (messagefile outfile) printinfo(info input,int jobnum) { echo input.wd input.prot input.round jobnum input.kill stdout=@outfile; } app (messagefile outfile) printout(info input,int jobnum) { printoops input.wd input.prot input.round jobnum input.kill stdout=@outfile; } */