I am attempting to run rosettadock in 8 parallel processes on an 8-core machine. After building using the extras=mpi flag in scons, I am able to successfully execute 8 processes using mpirun -np 8 dockingexecutable @flags. Unfortunately, when the process goes to write the output files, it returns errors because it is trying to write to "outdir_1", "outdir_2"..."outdir_8".
Because I would like to be able to retrieve the structure of the lowest scoring docking complex I have my flags set to write the fullatom pdb of the results. Adjusting the output file name, prefix, or path does not solve the error. If I create the directories "outdir_1"...etc in my working directory, the problem is solved and the output pdb files are distributed among the directories.
While this solution suffices for the small parallel task I am doing now, I would soon like to upgrade to a larger cluster. If I am using say 300 processors, will I have to create 300 directories (outdir_1....outdir_300) to collect my results? Please let me know if I am doing something wrong or missing something. Thank you.
Flags:
-database /home/mahajanr/Rosetta/rosetta_database
-s model.1.pdb
-nstruct 300
-dock_pert 3 8
-fake_native
-ex1
-unboundrot
-mute core.util.prof
-out:file:fullatom
-out:file:o modtest
-out:prefix modecoy
-out:path:pdb /home/username/test/
Thank you very much for the prompt response. A quick followup:
Am I correct in my approach to getting coordinates of the lowest energy structure by having the program write all the pdb files (using -out:file:fullatom flag)? I then look at the score file and find which of the written structures has the lowest energy.
Or is there a way to not write each pdb structure and instead only write pdb files for the structures you are interested in afterwards?
Hi mahajan, would it be possible to share the response to your first question please. and the second one as well when you get a response.
cheers.
> I am attempting to run rosettadock in 8 parallel processes on an 8-core machine. After building using the extras=mpi flag in scons, I am able to successfully execute 8 processes using mpirun -np 8 dockingexecutable @flags. Unfortunately, when the process goes to write the output files, it returns errors because it is trying to write to "outdir_1", "outdir_2"..."outdir_8".
>
> Because I would like to be able to retrieve the structure of the lowest scoring docking complex I have my flags set to write the fullatom pdb of the results. Adjusting the output file name, prefix, or path does not solve the error. If I create the directories "outdir_1"...etc in my working directory, the problem is solved and the output pdb files are distributed among the directories.
>
> While this solution suffices for the small parallel task I am doing now, I would soon like to upgrade to a larger cluster. If I am using say 300 processors, will I have to create 300 directories (outdir_1....outdir_300) to collect my results? Please let me know if I am doing something wrong or missing something. Thank you.
>
> Flags:
>
> -database /home/mahajanr/Rosetta/rosetta_database
> -s model.1.pdb
> -nstruct 300
> -dock_pert 3 8
> -fake_native
> -ex1
> -unboundrot
> -mute core.util.prof
> -out:file:fullatom
> -out:file:o modtest
> -out:prefix modecoy
> -out:path:pdb /home/username/test/
>
>
>
Something has eaten my original response - the first posting from "smlewis" above is not from me, this appears to be a response from mahajanr.
Anyway:
The response to the original question, which got overwritten: Yes, you have to make N directories to run on N processors. The docking executeable in Rosetta3 predates the more recent job distributor, and the maintainers have not ported it to the unified job distributor/MPI system.
I am not aware of a filtering option in the main docking executeable. I believe you can get filtering using the parser version instead (I believe the documentation calls it "dock-design" or something similar).