
그래서 RNA 염기서열 데이터 분석을 위해 '턱시도'라는 프로토콜을 사용하고 있습니다. 쉘 스크립팅과 관련된 일종의 기술적 질문입니다. 명령줄에서 그렇게 할 수 있으며 그런 문제는 없습니다. 클러스터에서 수행하고 있으므로 작업을 자동화할 수 있는 스크립트를 사용하고 싶습니다.
따라서 프로토콜 명령은 다음과 같습니다.
모자
커프스 링크
커프 병합
커프디프
첫 번째 명령은 다음 명령에 사용해야 하는 일부 파일을 생성하는 모든 정렬을 수행
cufflinks
하고cuffmerge
마지막으로 수행 합니다cuffdiff
.
누구든지 이러한 각 명령을 호출하고 작업을 수행할 수 있는 간단한 쉘 스크립트를 작성하도록 도와줄 수 있습니까?
어떤 도움이라도 주시면 감사하겠습니다.
인수
tophat -p 8 -G genes.gtf -o C1_R1_thout genome C1_R1_1.fq C1_R1_2.fq
cufflinks -p 8 -o C1_R1_clout C1_R1_thout/accepted_hits.bam
cuffmerge -g genes.gtf -s genome.fa -p 8 assemblies.txt
cuffdiff -o diff_out -b genome.fa -p 8 –L C1,C2 -u merged_asm/merged.gtf \
./C1_R1_thout/accepted_hits.bam,./C1_R2_thout/accepted_hits.bam,./C1_R3_thout/accepted_hits.bam \
./C2_R1_thout/accepted_hits.bam,./C2_R3_thout/accepted_hits.bam,./C2_R2_thout/accepted_hits.bam
여기서 'p'는 프로세서 수에 해당하고 '-o'는 출력 디렉터리에 해당하고 나머지 '-g'는 정렬될 RAW 읽기에 주석을 달기 위해 사용하는 주석 파일에 해당합니다.
답변1
간단하고 취약한 솔루션
hailmary.sh라는 간단한 스크립트를 작성해 보겠습니다.
#!/bin/bash
#The first line should always be just as it is above
#This script is called hailmary.sh
#because we run this script and we need to pray
#that all four commands will run correctly
#If one of them fail, you may not get the results
tophat -p 8 -G genes.gtf -o C1_R1_thout genome C1_R1_1.fq C1_R1_2.fq
cufflinks -p 8 -o C1_R1_clout C1_R1_thout/accepted_hits.bam
cuffmerge -g genes.gtf -s genome.fa -p 8 assemblies.txt
cuffdiff -o diff_out -b genome.fa -p 8 –L C1,C2 -u merged_asm/merged.gtf ./C1_R1_thout/accepted_hits.bam,./C1_R2_thout/accepted_hits.bam,./C1_R3_thout/accepted_hits.bam ./C2_R1_thout/accepted_hits.bam,./C2_R3_thout/accepted_hits.bam,./C2_R2_thout/accepted_hits.bam
"#"으로 시작하는 줄을 포함하여 위의 모든 줄을 gedit에 복사하여 붙여넣고 hailmary.sh로 저장합니다.
노틸러스에서 방금 생성한 파일을 마우스 오른쪽 버튼으로 클릭하고 를 선택합니다
Properties
. 탭 으로 이동하여Permissions
옆에 확인 표시를 하세요. 파일을 프로그램으로 실행 허용.또는 터미널에 다음을 입력합니다.
chmod +x hailmary.sh
터미널에서 스크립트를 실행하려면 다음을 입력하십시오.
./hailmary.sh
./
이름 앞에 가 필요하며 파일이 현재 디렉터리 위치에 있다고 가정합니다 . /home/<userid>/bin
와 같은 경로에 있는 폴더에 파일을 넣으면 ./
. 다른 곳에 놓는 경우 다음과 같이 전체 경로를 작성해야 합니다.
/home/<userid>/myspecialfolder/hailmary.sh
네 개의 명령과 해당 인수는 네 개의 별도 줄에 있습니다. 한 줄에 넣으려면 &&
또는 로 구분해야 합니다 ;
. ;
별도의 줄에 있으면 필요하지 않습니다 .
어떤 경우든 두 번째 명령은 첫 번째 명령이 완료될 때까지(또는 충돌할 때까지) 시작되지 않습니다.
이 접근 방식의 문제점은 두 번째 명령 등을 실행하기 전에 첫 번째 명령이 성공적으로 실행되었는지 확인하지 않는다는 것입니다. 따라서 tophat
어떤 이유로 실패하면 스크립트는 커프스 단추, 커프 병합 및 커프 디프 순서로 계속됩니다. 이것이 내가 이것을 scrip이라고 부르는 이유이다 hailmary.sh
.
tophat의 출력을 확인하는 스크립트
#!/bin/bash
#The first line should always be just as it is above
#This script is called hailmary2.sh
#This script runs tophat
#then checks for the existance of the output file
#If the output is found, it runs the rest
tophat -p 8 -G genes.gtf -o C1_R1_thout genome C1_R1_1.fq C1_R1_2.fq
if [[ -f "./C1_R1_thout/accepted_hits.bam" ]]; then
echo "tophat finished. Proceeding with the rest"
cufflinks -p 8 -o C1_R1_clout C1_R1_thout/accepted_hits.bam
cuffmerge -g genes.gtf -s genome.fa -p 8 assemblies.txt
cuffdiff -o diff_out -b genome.fa -p 8 –L C1,C2 -u merged_asm/merged.gtf ./C1_R1_thout/accepted_hits.bam,./C1_R2_thout/accepted_hits.bam,./#C1_R3_thout/accepted_hits.bam ./C2_R1_thout/accepted_hits.bam,./C2_R3_thout/accepted_hits.bam,./C2_R2_thout/accepted_hits.bamfi
else echo "tophat did not complete"
fi
다른 사람이 더 우아한 답변을 제공할 때까지 이것이 도움이 되기를 바랍니다.