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 revisionPrevious revision
Next revision
Previous revision
gnu_parallel [2017/08/18 11:19] – [GNU Parallel 활용 가이드] hyjeonggnu_parallel [2021/03/17 13:09] (current) – external edit 127.0.0.1
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을 해 보라. 
 ===== 외부 자료 ===== ===== 외부 자료 =====
   * [[https://www.gnu.org/software/parallel/|GNU Parallel 공식 사이트]] [[https://www.gnu.org/software/parallel/parallel_tutorial.html|튜토리얼]]   * [[https://www.gnu.org/software/parallel/|GNU Parallel 공식 사이트]] [[https://www.gnu.org/software/parallel/parallel_tutorial.html|튜토리얼]]
Line 41: Line 48:
   $ parallel --number-of-cores   $ parallel --number-of-cores
   32   32
 +이런 바보! 그냥 명령행에서 nproc라고만 치면 된다!
 ==== BLAST 실행하기 ==== ==== BLAST 실행하기 ====
  
gnu_parallel.1503022760.txt.gz · Last modified: (external edit)