Мне нужна помощь в исправлении моего скрипта для автоматизации нескольких преобразований файлов.
Я работаю на сервере и пытаюсь найти способ автоматически конвертировать файлы.
Преобразование должно быть выполнено в четырех форматах: 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
В основном мне нужно написать скрипт, который будет автоматизировать многократное преобразование файлов
Хорошо синтаксис команды может помочь Вам
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
.
Я не обеспокоился бы счетчиком постепенного увеличения, Вам не нужен он, и он просто усложняет вещи. Попробуйте это вместо этого:
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
спасибо за всех парней справки. Я усовершенствовал свой сценарий, чтобы продолжить работать с многопоточностью. Я ценю всю справку.