2013-07-12 2 views
0

원시 파일을 바이너리로 처리하는 데이터 파이프 라인을 구축 중입니다. 파일은 크고 여러 단계가 있으므로 가능한 경우 디스크에 쓰지 않는 것이 좋습니다. 하나의 서브 프로세스의 출력을 받아서 다른 서브 프로세스의 입력으로 만드는 것은 쉽지만, 다중 입력 파일을 필요로하는 서브 프로세스를 처리하는 방법은 무엇입니까? 특히 :파이썬에서 파이프 세그먼트에 여러 입력을 전달하는 방법은 무엇입니까?

두 개의 파일 A와 B를 처리하는 두 개의 프로세스가 있으며 파일 A '와 B'가 출력됩니다. 다음 명령은 다음 쉘 구문을 사용합니다.

bwa sampe referencefile A' B' A B 

다섯 개의 파일이 필요합니다. 이것은 A와 B '가 디스크에 쓰여지면 shell=True으로 쉽게 할 수 있습니다. 그러나 이것은 피하고 싶습니다. 디스크에 쓰지 않고 정확한 순서를 유지하는 stdout -> stdin 관계를 어떻게 구현할 수 있습니까?

+0

당신이 쌍 끝을 정렬하는 경우 사용자의 입력이 합의 FASTA 있으며, BWA를 사용하여 읽고, 두 개의 인덱스 파일, 두 FASTA 파일 및 출력이 하나 여야합니다 당신은 또한 biostars.org 질문을 할 수 .sam 파일. 왜 .sam 파일을 원하지 않는거야? 그것을 .bam으로 직접 변환 하시겠습니까? 디스크에 쓰지 않고도 .sam -> .bam -> sorted.bam에서 읽으려고하십니까? – wflynny

+0

편집 : A ', B'를 생성하는 fasta 파일 (A, B)의 색인을 생성하는 두 개의 프로세스가 있습니다. 그런 다음 BWA와 정렬하여 .sam 파일을 생성하려고합니다. 인덱스를 파일로 저장하지 않으시겠습니까? 'tempfile.NamedTemporaryFile'에 항상 저장할 수 있으며, 스크립트 종료시에 정리됩니다. .sam 파일을 디스크에 저장 하시겠습니까? 또한,'bwa mem ref.fa in1.fa in2.fa> aln-pe.sam'을 사용하지 않으시겠습니까? 인덱싱 단계를 제거하여 메모리에 작성합니다. 실제로 수행중인 작업이 실제로 수행됩니다. BWA를 업데이트해야 할 수도 있습니다. – wflynny

+0

감사합니다. 나는 tempfile과 mem 해결 방법을 모르고있었습니다. 나는 둘 다 시도하고 그들은 일한다. – user2577129

답변

0

'named pipe': bash 명령이 파이썬에서 작동합니까?

bwa sampe referencefile <(bwa aln ref fastq1) <(bwa aln ref fastq2) fastq1 fastq2 

관련 문제