다음과 같은 이름의 폴더에 파일 세트가 있습니다.
AM11_BW415_R1.fastq.gz NAM13_BW968_R2.fastq.gz NAM17_AC_Barrie_R1.fastq.gz NAM3_PI648600_R2.fastq.gz NAM7_Glenlea_R1.fastq.gz PI648598_R2.fastq.gz
NAM11_BW415_R2.fastq.gz NAM13_Frontana_R1.fastq.gz NAM17_AC_Barrie_R2.fastq.gz NAM3_PI648842_R1.fastq.gz NAM7_Glenlea_R2.fastq.gz PI648611_R1.fastq.gz
NAM11_Reeder_R1.fastq.gz NAM13_Frontana_R2.fastq.gz NAM17_BW388_R1.fastq.gz NAM3_PI648842_R2.fastq.gz NAM7_Laura_R1.fastq.gz PI648611_R2.fastq.gz
NAM11_Reeder_R2.fastq.gz NAM14_BW874_R1.fastq.gz NAM17_BW388_R2.fastq.gz NAM4_PI613279_R1.fastq.gz NAM7_Laura_R2.fastq.gz PI648672_R1.fastq.gz
NAM11_Webill_R1.fastq.gz NAM14_BW874_R2.fastq.gz NAM17_RedFife_R1.fastq.gz NAM4_PI613279_R2.fastq.gz NAM7_Marquis_R1.fastq.gz PI648672_R2.fastq.gz
NAM11_Webill_R2.fastq.gz NAM14_Glenn_R1.fastq.gz NAM17_RedFife_R2.fastq.gz NAM4_PI613280_R1.fastq.gz NAM7_Marquis_R2.fastq.gz PI648724_R1.fastq.gz
NAM12_BW431_L002_R1.fastq.gz NAM14_Glenn_R2.fastq.gz NAM1_PI648517_R1.fastq.gz NAM4_PI613280_R2.fastq.gz NAM8_FL62R1_R1.fastq.gz PI648724_R2.fastq.gz
NAM12_BW431_L002_R2.fastq.gz NAM14_Unity_R1.fastq.gz NAM1_PI648517_R2.fastq.gz NAM4_PI648524_R1.fastq.gz NAM8_FL62R1_R2.fastq.gz PI648768_R1.fastq.gz
NAM12_BW431_L008_R1.fastq.gz NAM14_Unity_R2.fastq.gz NAM1_PI648519_R1.fastq.gz NAM4_PI648524_R2.fastq.gz NAM8_Muchmore_R1.fastq.gz PI648768_R2.fastq.gz
NAM12_BW431_L008_R2.fastq.gz NAM15_BW881_R1.fastq.gz NAM1_PI648519_R2.fastq.gz NAM5_PI648523_R1.fastq.gz NAM8_Muchmore_R2.fastq.gz PI648860_R1.fastq.gz
NAM12_Penhold_L002_R1.fastq.gz NAM15_BW881_R2.fastq.gz NAM1_PI648541_R1.fastq.gz NAM5_PI648523_R2.fastq.gz NAM8_Stettler_R1.fastq.gz PI648860_R2.fastq.gz
NAM12_Penhold_L002_R2.fastq.gz NAM15_Lillian_R1.fastq.gz NAM1_PI648541_R2.fastq.gz NAM5_PI648585_R1.fastq.gz NAM8_Stettler_R2.fastq.gz PI648862_R1.fastq.gz
NAM12_Penhold_L008_R1.fastq.gz NAM15_Lillian_R2.fastq.gz NAM2_PI648493_R1.fastq.gz NAM5_PI648585_R2.fastq.gz PI277012_R1.fastq.gz PI648862_R2.fastq.gz
NAM12_Penhold_L008_R2.fastq.gz NAM15_PT245_R1.fastq.gz NAM2_PI648493_R2.fastq.gz NAM5_PI648622_R1.fastq.gz PI277012_R2.fastq.gz PI648864_R1.fastq.gz
NAM12_Sumai3_L002_R1.fastq.gz NAM15_PT245_R2.fastq.gz NAM2_PI648602_R1.fastq.gz NAM5_PI648622_R2.fastq.gz PI648478_R1.fastq.gz PI648864_R2.fastq.gz
NAM12_Sumai3_L002_R2.fastq.gz NAM16_BA51B92_R1.fastq.gz NAM2_PI648602_R2.fastq.gz NAM6_Neepawa_R1.fastq.gz PI648478_R2.fastq.gz run_701_150904_7001410_0194_BC79VNANXX_NAM.list
NAM12_Sumai3_L008_R1.fastq.gz NAM16_BA51B92_R2.fastq.gz NAM2_PI648609_R1.fastq.gz NAM6_Neepawa_R2.fastq.gz PI648487_R1.fastq.gz run_760_160912_7001343F_0065_AC9EV0ANXX_NAM.list
NAM12_Sumai3_L008_R2.fastq.gz NAM16_BW928_R1.fastq.gz NAM2_PI648609_R2.fastq.gz NAM6_PI648532_R1.fastq.gz PI648487_R2.fastq.gz
NAM13_BW462_R1.fastq.gz NAM16_BW928_R2.fastq.gz NAM3_PI648511_R1.fastq.gz NAM6_PI648532_R2.fastq.gz PI648566_R1.fastq.gz
NAM13_BW462_R2.fastq.gz NAM16_BW963_R1.fastq.gz NAM3_PI648511_R2.fastq.gz NAM6_Thatcher_R1.fastq.gz PI648566_R2.fastq.gz
NAM13_BW968_R1.fastq.gz NAM16_BW963_R2.fastq.gz NAM3_PI648600_R1.fastq.gz NAM6_Thatcher_R2.fastq.gz PI648598_R1.fastq.gz
따라서 비슷한 이름의 두 파일(예: NAM11_Reeder_R1.fastq.gz)을 사용할 수 있는 for 루프 또는 단일 for 루프를 수행한 다음 다음과 같이 해당 폴더 외부의 스크립트에 인수로 제출하려고 합니다.
scripts/PipelineHaplo.sh raw/NAM13_BW968_R1.fastq.gz raw/NAM13_BW968_R2.fastq.gz 2 &
2는 읽을 깊이를 지정하지만 단순화를 위해 이것이 상수이고 다양한 매개변수라고 가정하겠습니다. 거의 하드코딩할 수 있습니다.
그런 다음 다음 두 매개변수(원본 파일) R1과 R2를 사용하여 동일한 작업을 수행하기를 원합니다. 그러면 스크립트가 잘못된 폴더에 매개변수를 적용하지 않는 경우 어떻게 해야 합니까? 기본적으로 모든 것이 하나의 기본 폴더에 있으며 그 안에 있는 폴더는 다음과 같습니다. 원시 파일 스크립트 하위 디렉토리를 포함하는 케이스{001...008}라고 하는 대부분 비어 있는 디렉토리의 대규모 세트
여기가 스크립트가 작동하기를 원하는 곳이므로 기본적으로 R1과 R2를 raw라는 폴더로 이동하는 것으로 스크립트가 시작되고, raw에서는 다음 스크립트가 해당 폴더를 제어하고 해당 작업을 수행합니다.
두 파일의 이름이 비슷한 경우 이 루프는 어떻게 보일까요?
답변1
GNU Parallel을 사용하면 다음과 같습니다:
parallel scripts/PipelineHaplo.sh {} '{=s/_R1/_R2/=}' 2 ::: raw/*R1.fastq.gz