User Tools

Site Tools


gnu_parallel

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
gnu_parallel [2017/08/18 11:20]
hyjeong
gnu_parallel [2019/09/04 10:43] (current)
hyjeong [GNU Parallel 활용 가이드]
Line 13: Line 13:
  
   $ find . -name "​*.fastq"​ | parallel gzip   $ find . -name "​*.fastq"​ | parallel gzip
-  $ parallel -a fasta_files_fof gzip (파일 목록이 있는 경우)+  $ parallel -a fasta_files_fof gzip (압축할 파일 목록이 있는 경우) 
 +  $ parallel -a gzipped_fasta_files_fof gzip -d (압축을 해제할 ​파일 목록이 있는 경우)
  
 결과 파일을 구조적으로 잘 저장한다든가,​ 실행 순서를 지정한다든가,​ command line을 정교하게 짜려면 매뉴얼을 보고 좀 더 공부를 해야 한다. GNU Parallel은 SSH로 연결된 remote server를 사용하게 만들 수도 있다. ​ 결과 파일을 구조적으로 잘 저장한다든가,​ 실행 순서를 지정한다든가,​ command line을 정교하게 짜려면 매뉴얼을 보고 좀 더 공부를 해야 한다. GNU Parallel은 SSH로 연결된 remote server를 사용하게 만들 수도 있다. ​
Line 19: Line 20:
 아주 초급 수준을 벗어난 활용 사례를 설명해 보겠다. 수십개의 염기서열 파일에 대해서 [[http://​emboss.sourceforge.net/​|EMBOSS]]의 restrict(report restriction enzyme cleavage sites in a nucleotide sequence)를 실행하고자 한다. 입력물로 택할 염기서열 파일명과 결과를 출력파일명은 각각 sourcelist와 destlist에 수록되었다고 가정하자. 동시에 8개의 job을 수행하려면 다음과 같이 명령하면 된다. {1}과 {2}의 순서만 잘 지킨다면 -sequence나 -outfile은 생략해도 된다. ​ 아주 초급 수준을 벗어난 활용 사례를 설명해 보겠다. 수십개의 염기서열 파일에 대해서 [[http://​emboss.sourceforge.net/​|EMBOSS]]의 restrict(report restriction enzyme cleavage sites in a nucleotide sequence)를 실행하고자 한다. 입력물로 택할 염기서열 파일명과 결과를 출력파일명은 각각 sourcelist와 destlist에 수록되었다고 가정하자. 동시에 8개의 job을 수행하려면 다음과 같이 명령하면 된다. {1}과 {2}의 순서만 잘 지킨다면 -sequence나 -outfile은 생략해도 된다. ​
  
-  $ parallel -a sourcelist -a destlist -j8 restrict -sitelen 4 -enzyme ​EcoRI,​BamHI,​HindIII -sequence {1} -outfile {2}+  $ parallel -a sourcelist -a destlist -j8 restrict -sitelen 4 -enzymes ​EcoRI,​BamHI,​HindIII -sequence {1} -outfile {2}
  
-만약 어떤 파일에 완벽한 상태의 command가 여러 줄 들어있고,​ 이를 병렬 실행하려면 어떻게 하면 좋을까? 다시말해서 parallel 명령어에 인수를 전달하는 것이 아니라 명령행 자체를 제공하려면?​ 아주 간단하다.+**만약 어떤 파일에 완벽한 상태의 command가 여러 줄 들어있고,​ 이를 병렬 실행하려면 어떻게 하면 좋을까?** 다시말해서 parallel 명령어에 인수를 전달하는 것이 아니라 명령행 자체를 제공하려면?​ 아주 간단하다.
  
   $ parallel -a sourcefile {}   $ parallel -a sourcefile {}
   ​   ​
-{.}, {/}, {//}, 등은 sourcefile에서 넘어오는 라인에 대하여 다양한 조작을 할 수 있게 만들어 준다. 상세한 설명은 man parallel을 해 보라.+{.}, {/} 등은 sourcefile에서 넘어오는 라인에 대하여 다양한 조작을 할 수 있게 만들어 준다. ​SRR_Acc_List.txt에 SRA Run accession이 한 줄에 하나씩 들어있다고 가정하자. 이를 일괄적으로 다운로드하여 fastq로 전환하는 방법을 알아보자.  
 + 
 +  $ parallel -j 1 prefetch {} ::: $(cat SRR_Acc_List.txt) 
 +  $ parallel -j 1 fastq-dump --skip-technical -F --split-files -O fastq {} ::: $(cat SRR_Acc_List.txt) 
 + 
 +상세한 설명은 man parallel을 해 보라.
  
 ===== 외부 자료 ===== ===== 외부 자료 =====
gnu_parallel.1503022803.txt.gz · Last modified: 2017/08/18 11:20 by hyjeong