「view this page in B3 βῆτα server」

Revisions №59050

branch: master 「№59050」
Commited by: Andrew Leaver-Fay
GitHub commit link: 「0af587fd74d9d730」 「№1747」
Difference from previous tested commit:  code diff
Commit date: 2016-10-31 08:00:29

Merge pull request #1747 from RosettaCommons/aleaverfay/jd3_job_geneologist Protocols in JD3 are responsible for keeping track of indices for jobs that they have created, and it is a tedious task. The class being created in this pull request, the JobGeneologist, will keep track of the parent(s) for each batch of jobs for each node in the JobDAG. It helps by assigning ranges of jobs to different nodes so that job-index-ranges do not overlap, and the JobQueen never makes the mistake of assigning the same index to two separate jobs. The JobGeneologist also is capable of deducing which ancestral jobs no longer have any living descendants. Imagine this scenario. There's a multi stage protocol where, at the final stage when you're outputting the top structures generated by the protocol, you want to be able to output the intermediate structures from early stages that led to the final structures. Say Job 10 from stage 1 is promising, and serves as the "parent" (i.e. its output is the input to another job) to jobs 100-200 in stage 2. Of those jobs, only job 199 was not discarded, the others failed to pass some threshold. Then Job 199 is parent to jobs 1000-1100 in round 3, and of these jobs none were fruitful - they are all discarded. If the job queen for this protocol is going to avoid having unneeded results piling up, then she needs an algorithm to figure out that jobs 10 and 199 can now be discarded. This algorithm is actually really tedious! It would be a shame to force it on every JD3-protocol writer. The JobGeneologist manages the data and the logic needed for this task.