автоматизировать несколько преобразований файлов

Мне нужна помощь в исправлении моего скрипта для автоматизации нескольких преобразований файлов.
Я работаю на сервере и пытаюсь найти способ автоматически конвертировать файлы.

Преобразование должно быть выполнено в четырех форматах: sam, bwa и bcf и vcf
Файлы увеличиваются в двух местах, как это. Каждый шаг имеет два формата файлов: .sai и .fastq

004_001
004_002
004_003
004_004

Затем

005_001
005_002
005_003
005_004

Я попробовал:

Код:

for i in {1..4}
do 
    $bwa samse $hg19 $csai $cfas > *.sam
done 

Но он работал только с файлом _001 четыре раза.
Я попытался установить конечное приращение на i, так что вместо _001 это _00$((i)), чтобы пойти 1,2,3,4, но оно остается на 1.

Пример преобразования sam:

for i in {1..4}
do 
./bwa samse  /hg19.fa  *_00$((i)).sai *_00$((i)).fastq  > *_00$((i)).sam
done

Я написал его для запуска входных файлов с этим именем и вывода данных в файл sam. Он работает, но он конвертирует _001 четыре раза вместо _001 в _004

В основном мне нужно написать скрипт, который будет автоматизировать многократное преобразование файлов

  • 3 файловых ввода > выходной файл 1 .sam
  • входной файл .sam> выходной файл .bam
  • входной файл .bam> выходной файл .bcf
  • входной файл .bcf> выходной файл .vcf файл
2
задан 27 June 2014 в 19:41

3 ответа

Хорошо синтаксис команды может помочь Вам

bwa samse [-n max_occ] [-f out.sam] [-r RG_line] <prefix> <in.sai> <in.fq>

Теперь, давайте посмотрим на Ваш удар:

for j in {004,005}; do
    for i in {001..004}; do
        bwa samse -f $j_$i.sam $hg19 $j_$i.sai $j_$i.fastq

        # Do the other conversions from $j_$i.sam
        samtools view -bS $j_$i.sam > $j_$i.bam
        samtools mpileup -uf genome.fa $j_$i.bam | bcftools view -bvcg - > $j_$i.bcf 
    done
done

я понятия не имею, какой $hg19.
Это ожидает "префикс" там поэтому, если Вы будете знать то, что это означает, замените им в.

Так или иначе, который должен генерировать 8Г — .sam файлы. Можно или изменить цикл выше так, чтобы после генерации .sam с bwa, Вы выполнили свои другие преобразования, как так:

for j in {004,005}; do
    for i in {001..004}; do
        bwa samse -f $j_$i.sam $hg19 $j_$i.sai $j_$i.fastq

        # Do the other conversions from $j_$i.sam
        samtools view -bS $j_$i.sam > $j_$i.bam
        samtools mpileup -uf genome.fa $j_$i.bam | bcftools view -bvcg - > $j_$i.bcf
        # ... whatever is needed to convert bcf to vcf  ...
    done
done

Или можно сделать отдельный цикл (циклы): for f in *.sam; do command $f ...; done.

3
ответ дан 27 June 2014 в 19:41

Я не обеспокоился бы счетчиком постепенного увеличения, Вам не нужен он, и он просто усложняет вещи. Попробуйте это вместо этого:

for file in 0*.sai; do 
    bwa samse hg19.fa $file ${file%.sai}.fastq  > ${file%.sai}.sam
done

Объяснение

  • for file in 0*.sai;: выполните итерации через весь 0*.sai файлы в текущем каталоге.
  • ${file%.sai}: удалите .sai из конца $file. Это означает это, если file=001_001.sai, ${file%.sai}.fastq будет 001_001.fastq.

Таким образом, Вы выполните итерации через все файлы и выполните преобразование правильно, не будучи должен играть со счетчиками. Я не знаю то, что управляет, чтобы Вы использовали бы для преобразования в другие форматы, так как я никогда не работал с данными NGS, но можно добавить, что необходимо к циклу:

for file in 0*.sai; do 
    bwa samse hg19.fa $file ${file%.sai}.fastq  > ${file%.sai}.sam
    command2 $file ${file%.sai}.fastq  > ${file%.sai}.bwa, 
    command2 $file ${file%.sai}.fastq  > ${file%.sai}.bcf 
    command2 $file ${file%.sai}.fastq  > ${file%.sai}.vcf 
done
1
ответ дан 27 June 2014 в 19:41

спасибо за всех парней справки. Я усовершенствовал свой сценарий, чтобы продолжить работать с многопоточностью. Я ценю всю справку.

0
ответ дан 27 June 2014 в 19:41

Другие вопросы по тегам:

Похожие вопросы: