Привет, у меня был вопрос о связывании ввода и вывода с подпроцессами в python. Я пытаюсь упростить программу, пропуская вывод одного шага, передавая его другому подпроцессу, а не выводя его в файл. Затем откройте другой процесс для запуска этого файла.
например. Первый процесс использует SAMTOOLS для вывода определенной хромосомы из большого файла BAM.
Так...
bigfile.bam считывается и выводит chromosome22.bam
Следующий подпроцесс использует BEDTOOLS для преобразования этой хромосомы22.bam в хромосому22.bed
Так...
chromosome22.bam считывается и выводит chromosome22.bed
Я хочу передать стандартный вывод первого процесса во второй, чтобы промежуточный файл не требовался.
Пока у меня есть это ...
for x in 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,'X','Y':
subprocess.call("%s view -bh %s %s > %s/%s/%s.bam" % (samtools,bam,x,bampath,out,x), shell=True)
Это создает файлы хромосом [1-22, X, Y] .bam. Но можно ли этого избежать и поместить в тот же цикл еще одну команду подпроцесса, чтобы преобразовать их в файлы постели?
Команда для преобразования кровати:
bedpath/bedtools bamtobed -i [bamfile] > [bedfile]