Задание Linux bash qsub с передачей нескольких переменных - PullRequest
0 голосов
/ 02 ноября 2019

У меня есть скрипт, который я хочу запустить несколько раз с разными параметрами. Для этого у меня есть текстовый файл (так называемый контраст.txt), который выглядит следующим образом:

LCL     CO1     T14C1   Nicotine        LCL_T14C1_vs_CO1
LCL     CO1     T15C1   Copper          LCL_T15C1_vs_CO1
LCL     CO1     T27C1   Cadmium         LCL_T27C1_vs_CO1
LCL     CO2     T6C1    VitaminA        LCL_T6C1_vs_CO2
LCL     CO1     T19C1   Selenium        LCL_T19C1_vs_CO1

и несколько других строк в том же формате.

Мой скрипт - script.sh,который должен быть представлен как задание для каждой строки, передавая каждый раз 3 переменные:

  1. Столбец 1 (LCL)
  2. Столбец 5
  3. Столбец 5 с последующим.txt (в основном другие файлы, которые я использую в качестве контраста для скрипта)

Для этого я запускаю в командной строке следующее:

cat contrasts.txt | while read c1 c2 c3 c4 c5; do qsub -q erprq script.sh -v (META=$c5.txt, CELL=$c1, SUB=$c5); done

Если я добавлю echo перед qsubчтобы проверить, в порядке ли мои переменные, я получаю ожидаемый результат:

qsub -q erprq intron_excision_analysis.sh -v META=LCL_T14C1_vs_CO1.txt -v CELL=LCL -v SUB=LCL_T14C1_vs_CO1
qsub -q erprq intron_excision_analysis.sh -v META=LCL_T15C1_vs_CO1.txt -v CELL=LCL -v SUB=LCL_T15C1_vs_CO1
qsub -q erprq intron_excision_analysis.sh -v META=LCL_T27C1_vs_CO1.txt -v CELL=LCL -v SUB=LCL_T27C1_vs_CO1
qsub -q erprq intron_excision_analysis.sh -v META=LCL_T6C1_vs_CO2.txt -v CELL=LCL -v SUB=LCL_T6C1_vs_CO2
qsub -q erprq intron_excision_analysis.sh -v META=LCL_T19C1_vs_CO1.txt -v CELL=LCL -v SUB=LCL_T19C1_vs_CO1

Внутри script.sh у меня есть следующее:

mkdir -p ${CELL}/${SUB}
cd ${CELL}/${SUB}


EXON=/wsu/home/groups/piquelab/Alan/splicing/genomes/leafcutter/hg38_exon.txt.gz
CLUSTER=/wsu/home/groups/piquelab/Alan/splicing/leafcutter/CM/LCL_IPSC_CM_together_perind_numers.counts.gz
CONTRAST=/wsu/home/groups/piquelab/Alan/splicing/leafcutter/bam/meta/${META}


module load R/3.6.1
/wsu/home/groups/piquelab/Alan/splicing/leafcutter/scripts/leafcutter_ds.R --num_threads 10 --exon_file=${EXON} ${CLUSTER} ${CONTRAST}

Но он не создает папки, ине удается найти файл / wsu / home / groups / piquelab / Alan / splicing / leafcutter / bam / meta / $ {META} (хотя расположение правильное). Если я запускаю этот скрипт для одного файла по отдельности, он работает, но кажется, что я не могу передать эти 3 переменные (объяснил бы, почему он даже не создает папки).

Есть идеи, как это сделать? Большое спасибо заранее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...