Bash
Version 3 (Andrey Golovin, 12.08.2014 10:29)
1 | 1 | Andrey Golovin | h1. Использование GNU parallel |
---|---|---|---|
2 | 1 | Andrey Golovin | |
3 | 1 | Andrey Golovin | Итак, есть задача по запуску счёта для некоторого количества задач. |
4 | 1 | Andrey Golovin | Чаще всего используется скрипт с циклом: |
5 | 1 | Andrey Golovin | <pre> |
6 | 1 | Andrey Golovin | for i in $(seq 0 6);do |
7 | 1 | Andrey Golovin | # mkdir model_${i} |
8 | 1 | Andrey Golovin | ## remove OXT and H1-H2, rename H3 to H in original autodock pdb |
9 | 1 | Andrey Golovin | echo "save model_${i}/pep.pdb, all, $i" |
10 | 1 | Andrey Golovin | cat flex_short.pdb model_${i}/pep.pdb > model_${i}/compl.pdb |
11 | 1 | Andrey Golovin | cd model_${i} |
12 | 1 | Andrey Golovin | FlexPepDocking.linuxgccrelease -s compl.pdb -flexpep_prepack -ex1 -ex2aro \ |
13 | 1 | Andrey Golovin | -peptide_chain A -receptor_chain H >& log.prepack |
14 | 1 | Andrey Golovin | FlexPepDocking.linuxgccrelease -s compl_0001.pdb -receptor_chain H -peptide_chain A \ |
15 | 1 | Andrey Golovin | -out:file:silent decoys.silent -out:file:silent_struct_type binary \ |
16 | 1 | Andrey Golovin | -pep_refine -ex1 -ex2aro -use_input_sc -nstruct 300 >& log.run & |
17 | 1 | Andrey Golovin | cd .. |
18 | 1 | Andrey Golovin | done |
19 | 1 | Andrey Golovin | </pre> |
20 | 1 | Andrey Golovin | |
21 | 1 | Andrey Golovin | Часто, в ходе работы надо коментировать некторые строки, так как эти задачи уже выполнены. Так же не плохо бы было реализовать эффективное использование всех вычмслительных ядер компьютера. |
22 | 1 | Andrey Golovin | |
23 | 1 | Andrey Golovin | Давайте я предложу несколько примеров как эти шаги можно эффективно реализовать с GNU parallel: |
24 | 1 | Andrey Golovin | |
25 | 1 | Andrey Golovin | |
26 | 1 | Andrey Golovin | h5. Сделать N директорий: |
27 | 2 | Andrey Golovin | |
28 | 1 | Andrey Golovin | <pre> |
29 | 1 | Andrey Golovin | parallel --gnu mkdir model_{1} ::: {1..6} |
30 | 1 | Andrey Golovin | or |
31 | 1 | Andrey Golovin | export n=6 |
32 | 1 | Andrey Golovin | parallel --gnu mkdir model_{1} ::: $(seq 1 $n) |
33 | 2 | Andrey Golovin | </pre> |
34 | 2 | Andrey Golovin | |
35 | 2 | Andrey Golovin | h5. Генерация скрипта для Pymol |
36 | 2 | Andrey Golovin | |
37 | 2 | Andrey Golovin | <pre> |
38 | 2 | Andrey Golovin | parallel --gnu echo "save model_{1}/pep.pdb, all, {1}" ::: $(seq 1 $n) > run.pml |
39 | 2 | Andrey Golovin | </pre> |
40 | 2 | Andrey Golovin | |
41 | 2 | Andrey Golovin | h5. Склеить файлы: |
42 | 2 | Andrey Golovin | |
43 | 2 | Andrey Golovin | <pre> |
44 | 2 | Andrey Golovin | parallel --gnu cat flex_short.pdb model_${1}/pep.pdb > model_${1}/compl.pdb ::: $(seq 1 $n) |
45 | 2 | Andrey Golovin | </pre> |
46 | 2 | Andrey Golovin | |
47 | 2 | Andrey Golovin | h5. Запуск задач по prepacking на восьми ядрах: |
48 | 2 | Andrey Golovin | |
49 | 2 | Andrey Golovin | <pre> |
50 | 2 | Andrey Golovin | parallel --gnu -j8 "cd model_{1} ; FlexPepDocking.linuxgccrelease @../flags.prepack -overwrite >& log.prepack" ::: $(seq 1 $n) |
51 | 2 | Andrey Golovin | </pre> |
52 | 2 | Andrey Golovin | |
53 | 2 | Andrey Golovin | h5. Можно подавать функции bash на исполнение: |
54 | 2 | Andrey Golovin | |
55 | 2 | Andrey Golovin | <pre> |
56 | 2 | Andrey Golovin | export SHELL=$(type -p bash) |
57 | 2 | Andrey Golovin | |
58 | 2 | Andrey Golovin | prepack() { |
59 | 2 | Andrey Golovin | cd model_${1} |
60 | 2 | Andrey Golovin | FlexPepDocking.linuxgccrelease @../flags.prepack -overwrite >& log.prepack |
61 | 2 | Andrey Golovin | } |
62 | 2 | Andrey Golovin | |
63 | 2 | Andrey Golovin | n=9 |
64 | 2 | Andrey Golovin | |
65 | 3 | Andrey Golovin | export -f prepack |
66 | 2 | Andrey Golovin | |
67 | 2 | Andrey Golovin | parallel -j6 prepack ::: {1..9} |
68 | 1 | Andrey Golovin | </pre> |