2017-03-16 4 views
0

나는과 같이 표준 SLURM 제출을 사용하여 스크립트를 제출 마스터 스크립트가 : 실행시올바른 이스케이프는

    cat > $jobfile <<EOF 
    #!/bin/bash 
    # auto-generated job file 
    # generated from $PWD/$0 
    # on ${DATE} 
    #SBATCH --job-name=PAINTOR_${UIDN}_${ETH}_JOB 
    #SBATCH --ntasks=1       ##Number of PROCESSES 
    #SBATCH --cpus-per-task=1     ##Number of PROCESSES 
    #SBATCH --mem-per-cpu=5000     ##Memory specified for each core used (in MB) (no cores, use --mem=) 
    #SBATCH -t 2-02:00:00      ##Runtime in D-HH:MM:SS 
    #SBATCH --share 
    #SBATCH --partition=medium     ## express(2h), short(12h), medium(2d2h), long(6d6h), interactive(2h) 
    # 
    #SBATCH --mail-user=${USER}@uab.edu 
    #SBATCH --mail-type=ALL      ## BEGIN, END, ERROR, ALL 
    # 
    #SBATCH --error=${LOG_DIR}/%j.%N.err.txt    ##File to which STDERR will be written 
    #SBATCH --output=${LOG_DIR}/%j.%N.out.txt    ## File to which STDOUT will be written 

, 마스터 스크립트의이 부분을

LNGTH=`awk '{print NF}' ${TARG}/${UIDN}.annotations | tail -1` 
     for NUM in \$(eval "echo {1..\$LNGTH}"); do 
       ANNOT_COL=`head -1 ${TARG}/${UIDN}.annotations | awk -v NUM=\$NUM '{print \$NUM}'` 
       if [ ! -f ${TEMP_DIR}/${UIDN}/Gname.Enrich.\$ANNOT_COL ]; then 
         $PAINTOR -input ${TARG}/input.files \ 
-Zhead ZSCORE.AFR,ZSCORE.EAS,ZSCORE.AFR \ 
-LDname AFR.LD,EAS.LD,EUR.LD \ 
-in ${TARG}/ \ 
-out $TEMP_DIR/${UIDN}/ \ 
-enumerate 2 \ 
-annotations \$ANNOT_COL \ 
-Gname Gname.Enrich.\$ANNOT_COL \ 
-Lname Lname.BF.\$ANNOT_COL 
       fi 
     done 

지문으로 슬레이브 스크립트 :이의

LNGTH=8134 
    for NUM in $(eval "echo {1..$LNGTH}"); do 
      ANNOT_COL=E001_15_coreMarks_mnemonics.bed.10_TssBiv.ES-I3_Cell_Line E001_15_coreMarks_mnemonics.bed.11_BivFlnk.ES-I3_Cell_Line E001_15_coreMarks_mnemonics.bed.12_EnhBiv.ES-I3_$ 
      if [ ! -f /data/scratch/vlaufer/PAINTOR3/temp/CLEAR_Okada_21_43755067_43955067/Gname.Enrich.$ANNOT_COL ]; then 
        /data/scratch/vlaufer/PAINTOR3/PAINTOR_V3.0/PAINTOR -input /data/scratch/vlaufer/PAINTOR3/Prepped_Input_Files/CLEAR_Okada_21_43755067_43955067/input.files -Zhead ZSCOR$ 
      fi 
    done 

대부분이 나타납니다

작동하려면, 나는 리를 믿는다 실패한 행은 ANNOT_COL=을 포함하는 행입니다. 이 행은 $NUM과 같은 값을 갖는 열에 해당하는 주석 만 인쇄해야합니다 (즉, $NUM이 10이면 모든 열이 아닌 ${TARG}/${UIDN}.annotations 파일의 첫 번째 줄의 열 10 번째가 인쇄되어야 함) 특히 혼란스러운 부분 나에게 내가 문제가 문자를 탈출 함께 생각한다. LNGTH= 라인이 작동하는 것 같다, 매우 유사한 구문을 가지고

,하지만 난 모르겠습니다.

+0

전체 스크립트의 간단한 대안으로'GNU 병렬 '도구가 있습니다. https://www.gnu.org/software/parallel/ – damienfrancois

+0

제안 해 주셔서 감사합니다. 그러나 분석을 수행하는 컴퓨터 클러스터는 그러한 해결책을 제공하지 않습니다. –

답변

0

나는 문제의 부분을 재 작업, 지금이다 :

read -a ANNOT < ${TARG}/${UIDN}.annotations 
for ANNOT_COL in "\${ANNOT[@]}"; do 
     if [ ! -f ${TEMP_DIR}/${UIDN}/Gname.Enrich.\$ANNOT_COL ]; then 
       echo "now generating marginal distribution for \$ANNOT_COL" 
       $PAINTOR -input ${TARG}/input.files \\ 

LNGTHNUM 변수가 제거되었으므로 이제 스크립트는 ${TARG}/${UIDN}.annotations 파일의 헤더를 직접 반복합니다.