bash 명령을 사용하여 여러 파일을 반복합니다.

bash 명령을 사용하여 여러 파일을 반복합니다.

샘플 이름이 나열된 파일이 있습니다.

head sample_id.txt
PD26405a--PD26405b
PD26414a--PD26414d
PD26417a--PD26417b
...

또한 실행 중인 프로그램의 전처리 단계의 출력이 포함된 디렉터리도 있습니다.

cd ./preprocessing_out
ls
PD26405a--PD26405b_allDirichletProcessInfo.txt
PD26405a--PD26405b_alleleFrequencies.txt
PD26405a--PD26405b_loci.txt
PD26405a--PD26405b_master.txt
PD26414a--PD26414d_allDirichletProcessInfo.txt
PD26414a--PD26414d_alleleFrequencies.txt
PD26414a--PD26414d_loci.txt
PD26414a--PD26414d_master.txt
PD26417a--PD26417b_allDirichletProcessInfo.txt
PD26417a--PD26417b_alleleFrequencies.txt
PD26417a--PD26417b_loci.txt
PD26417a--PD26417b_master.txt

Sample_id.txt 파일의 샘플 이름은 preprocessing_out 디렉터리의 파일 이름과 일치합니다.

*_master.txt 파일만 필요한 기본 단계 스크립트를 실행하고 싶습니다. 기본 파일은 다음과 같습니다.

cat PD26405a--PD26405b_master.txt
sample  subsample   datafile    cellularity sex cnadatafile indeldatafiles
PD26405a--PD26405b  PD26405a--PD26405b  PD26405a--PD26405b_allDirichletProcessInfo.txt  0.83    female  NA  NA

첫 번째 샘플에 대해서만 실행하고 싶다면

이것은 단지

Rscript --vanilla --slave /projects/dpclust_pipeline.R  -r 1 -d /projects/preprocessing_out -o /projectsdp_out -i /projects/preprocessing_out/PD26405a--PD26405b_master.txt


--r is ("run_sample"), type="integer", default=NULL, help="Sample to run".
--d is the directory that preprocessing results stored
--o is the directory that final output directory
--I is the path to master.txt 

총 150개가 넘는 샘플이 있고 for 루프가 있는 bash 스크립트에서 이 Rscript를 실행하고 싶습니다. r=1은 첫 번째 샘플(PD26405a-PD26405b)을 참조하고, r =2는 (PD26414a-PD26414d)를 참조하는 방식입니다.

코드를 어떻게 조정할 수 있나요?

답변1

다른 파일을 가져오는 동안 r로 계산하려면 다음을 수행할 수 있습니다.

r=1
while read sample
do
  Rscript --vanilla --slave /projects/dpclust_pipeline.R  -r ${r} -d /projects/preprocessing_out -o /projectsdp_out -i /projects/preprocessing_out/${sample}_master.txt
  r=$(( r + 1 ))
done < path/to/sample_id.txt

관련 정보