Best practices for completing a workflow


I have been using atomate/fireworks for a few days now and I appreciate its usefulness and the lots of workflows implemented in it. I have completed MagneticOrderingsWF worklow in atomate for a simple system. I am using atomate github clone as of last week. With that, I have some basic questions which might be useful for new users as well:

  1. After completing the workflow, is there an option to organize directories? I know that you can direct the final output to the server, but I think there is also some utility in keeping the directories in an organized way to make further analysis of a specific calculation later. In MagneticOrderingsWF for example it would be nice to have double relaxation always under the same folder. The workflow I use creates a block and several launcher directories (after using qlaunch rapidfire -m N). Maybe organizing the directories like I want was never intended for a good reason and maybe I am simply not using the right tools to make my life easier. lpad get_launchdir fw_id for example shows the directory of each fw, but what I think would be more useful is like a tree representation where for a given node, I would like to be able to see directories of all its parent nodes.

  2. Lets say I have a fizzled job that ran a number of geometry optimizations but then failed for some reason. Is there an option to rerun it using the CONTCAR of the fizzled job? I think “lpad rerun_fws -s FIZZLED --task-level” is the option to rerun the job here, but I am not sure about what “task-level” actually means here or if it will do what I intended to do.

  3. I think it must be possible to run multiple workflows on multiple computers, but is there an option to tell which computer can run a specific workflow but not the other? This can be useful if you would like to run an easy workflow on a local computer but the hard one on a supercomputer. I guess this was mentioned here back in August, but I couldnt find how to do this using qlaunch.


Re: Q3, a straightforward way to run different workflows on different computers is to put them into different MongoDB launchpad databases, each with its own launchpad yaml file.

Remember to run lpad -l launchpad2.yaml reset to initialize the new DB then use this yaml file for the other steps. If you’re running your own MongoDB server (you can even run one on your desktop for local use), that will create and initialize the new DB.

If instead you’re using Atlas servers, you’ll need to create the new DB on their website before initializing it via lpad.