Запуск массива на нескольких файлах с разными файлами вывода linux

Я хотел бы разбить 8 файлов (каждый из которых представляет собой хромосому), каждый из которых содержит примерно 2e9 строк, примерно на 5 фрагментов по 4e8 строк. Это файлы VCF (https://en.wikipedia.org/wiki/Variant_Call_Format), которые есть заголовок, а затем генетические варианты, поэтому мне нужно сохранить заголовки для каждого и повторно прикрепить их к конкретному заголовку хромосомы. Я делаю это в Linux на HPC.

Я сделал это с одним файлом перед использованием:

#grab the header
head -n 10000 my.vcf | grep "^#" >header
#grab the non header lines
grep -v "^#" my.vcf >variants
#split into chunks with 40000000 lines
split -l 40000000 variants
#reattach the header to each and clean up
for i in x*;do cat header $i >$i.vcf && rm -f $i;done
rm -f header variants

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

Я пытался:

#filelist is a list of the 8 chromosome files i.e. chr001.vcf, chr002.vcf...chr0008.vcf 
for f in 'cat filelist.txt'; head -n 10000 my.vcf | grep "^#" >header; done

Это помещает все в один заголовок. Как мне поместить выходные данные в уникальные заголовки для каждой хромосомы? Точно так же, как это будет работать с разделением вариантов и повторным присоединением заголовков к каждому фрагменту каждой хромосомы?

Желаемый результат будет:

chr001_chunk1.vcf
chr001_chunk2.vcf
chr001_chunk3.vcf
chr001_chunk4.vcf
chr001_chunk5.vcf
...
chr008_chunk5.vcf 

с каждым фрагментом vcf, имеющим заголовок от соответствующего хромосомного родителя.

Большое спасибо


person tacrolimus    schedule 18.08.2020    source источник
comment
Исходный цикл перезаписывает header каждый раз, потребуется переменная, управляющая хотя бы частью выходного имени файла. Подтвердите или исправьте: для каждого файла .vfc: извлеките информацию заголовка конфиденциально, извлеките данные, не являющиеся заголовком, из того же файла .vcf и разделите на несколько частичных файлов на 40 м строках; затем объедините частный заголовок и каждый частичный файл, присвоив имя фрагменту #. И какая у вас оболочка? После ответов я мог опубликовать сценарий.   -  person Milag    schedule 18.08.2020
comment
@Milag большое спасибо, что нашли время ответить. Ваш рабочий процесс правильный, да. Оболочка - CentOS 7   -  person tacrolimus    schedule 18.08.2020
comment
OK. CentOS - это дистрибутив Linux; вы используете bash для интерпретации скриптов?   -  person Milag    schedule 18.08.2020
comment
Правильно, да. Использование bash для запуска скрипта через HPC.   -  person tacrolimus    schedule 18.08.2020
comment
Отправлен исходный сценарий. Сообщите мне свои результаты.   -  person Milag    schedule 18.08.2020