Компоненты инструментов сборки последовательности генома
Геном, метагеномом и транскриптомные сборщики варьируются от полностью интегрированных до полностью модульных. Полностью модульная сборка имеет ряд преимуществ. Этот репозиторий является постоянной работой по определению некоторых важных контрольных точек в модульном конвейере сборки, а также стандартные форматы ввода/вывода. На данный момент у нас есть смещение в сторону данных секвенирования типа Illumina (отдельные чтения, парные чтения, парни, 10 раз), но мы стремимся сделать компоненты также совместимы с чтениями 3-го поколения.
Не стесняйтесь вносить свой вклад в раствор.
FASTA/FASTQ : необязательные атрибуты встречаются в поле комментариев и отформатированы как в SAM, XX:x:xxxx . Поле комментариев следует за пространством в заголовке.
FASTQ : парные чтения следовали и могут быть сжаты. Связанные штрих -коды чтения могут быть указаны с помощью тега BX .
FASTA : Последовательность не должна быть обернутой линейкой. Файл FASTA должен быть проиндексирован (FAI).
GFA : GFA2 предпочтительнее GFA1. Поля последовательности могут быть пустыми ( * ). Последовательности могут храниться в соседнем файле FASTA, названном, например, assembly.gfa и assembly.fa .
SAM/BAM : Файлы SAM/BAM отсортируются по позиции и индексируются, если не указано иное. Различные библиотеки секвенирования могут быть указаны с помощью атрибута RG Read.
Сборка содержится в одном каталоге. Файлы названы в соответствии с шаблоном [0-9]+_[az]+.[az.]+ . Числовые префиксы имеют нулевую и одинаковую по длине, и они указывают на стадию сборки. Описательное имя и расширение типа файла следуют. Файлы могут быть сжаты.
0_pe.fq.gz
1_unitig.gfa
2_denoise.gfa
3_debulge.gfa 3_debulge.bam 3_debulge.bam.bai
4_link.gfa
5_scaffold.gfa
6_assembly.gfa 6_assembly.fa 6_assembly.fa.fai 6_assembly.bam 6_assembly.bam.bai
type1 (запись [атрибуты],…) +… → type2 (запись [атрибуты],…) +…
На этом этапе требуется файл типа1 и создает файл типа2. Например, оценка копии количества единиц. Файл GFA сегментов последовательностей и ребра, а также файл BAM или PAF с отображенными чтениями создают файл GFA с оцененным номером копий единиц.
GFA (SE) + BAM/PAF → GFA (S [CN], E)
Удалить артефакты секвенирования, специфичные для каждой технологии секвенирования. Улучшить качество входных чтения с минимальной потерей информации, например, гетерозиготных вариантов.
FASTQ → FASTQ
Оценить качество секвенирования и оценить параметры генома.
FASTQ → TSV
Правильные ошибки секвенирования в чтениях.
FASTQ → FASTQ
Сборка единиц с помощью сборки графика de bruijn (DBG) или перекрытия, компоновка, консенсусная (OLC) сборка.
FASTQ → GFA (SE)
Удалить ошибки секвенирования с графика сборки. Сохранить варианты.
GFA (SE) → GFA (SE)
Определите и/или удалите варианты с графика.
GFA (SE) → GFA (SE)
Можно выбрать одну последовательность или путь через выпуклость, или выпуклость может быть заменена консенсусной последовательности, возможно, с использованием кодов неоднозначности IUPAC для представления консенсуса.
Карта считывается в последовательности сборки.
FASTQ + GFA (S)/FASTA → BAM
Оцените номер копии каждого сегмента последовательности.
GFA (SE) + BAM/PAF → GFA (S [CN], E)
Обратите внимание, что медианная глубина охвата более надежна, чем средняя глубина охвата артефактами выравнивания, вызванных разрушенными повторами, смещенными чтениями и другими проблемами.
Расширить повторения, а также порядок и ориентацию сегментов последовательностей на контиги и каркасы.
FASTA/GFA (SE) + BAM/PAF → FASTA/GFA (SE)
Контиги являются смежными последовательностями без пробелов. Создание контигов требует расширения повторяющейся последовательности, найденной между уникальными контигами. Контиги получены из смежных путей сегментов последовательностей без каких -либо пробелов. Строительные леса получены из прерывистых путей сегментов последовательностей с пробелами между сегментами.
Инструмент может реализовать леса в качестве единого этапа сборки. Тем не менее, строительные леса можно рассматривать как состоит из трех отдельных этапов: единиц связывания, порядка и Orient Unitigs для построения путей, и путей контракта для создания новых сегментов последовательности.
Соберите последовательность, обнаруженную в разрывах каркасов между соседними контигами.
FASTQ + FASTA/GFA (S) → FASTA/GFA (S)
Сопоставьте чтения с сборкой и правильные ошибки сборки.
FASTQ + FASTA/GFA (SE) + BAM/PAF → FASTA/GFA (SE)
GFA (SE) → PNG/SVG
Оценить смелость и правильность сборки.
FASTA/GFA (S) → TSV
Инструмент может объединить несколько этапов сборки в одном инструменте.
ema preprocesslongranger basicsga preqc bfcBcool.pysga index | sga correct ABYSS или ABYSS-P или abyss-bloom-dbg а затем AdjList или abyss-overlapbcalm | convertToGFA.pysga index | sga filter | sga overlap | sga assemble abyss-filtergraphgfaview -t PopBubbles | MergeContigsgfaview -b abyss-mapbgreatbwa memema align для связанных чтенийlongranger align для связанных чтенийminimap2unicycler_align sga-astat.py abyss-fixmate | DistanceEst для парных и приятелей-пары чтенийabyss-longseqdist для долгого чтенияarcs для связанных чтений abyss-scaffold или SimpleGraph | MergePathssga scaffold MergeContigssga scaffold2fasta abyss-sealer abyss-fac и abyss-samtobreakДанные от одностороннего велосипеда: «Это синтетические чтения из плазмид A, B и E из сборки генома Shigella Sonnei 53G». Shigella Sonnei Plasmids (синтетические чтения), short_reads_1.fastq.gz, short_reads_2.fastq.gz
Соберите парные чтения с использованием бездны. Этот трубопровод без пропасти представляет собой минимальное подмножество инструментов, управляемых полным трубопроводом abyss-pe .
cd components
k=99
./download_test_data.sh
./abyss_unitigs.sh 0_pe.fq.gz $k
./abyss_contigs_from_unitigs.sh 1_unitig.gfa2 1_unitig.fa $k
./abyss_scaffolding.sh 6_contigs.fa 6_contigs.gfa $k
# Visualize the assembly graph
Bandage load 9_assembly.gfa1 & Это сборка считывает с использованием BCalm для единиц, а затем использует остальную часть трубопровода Abyss из предыдущего примера.
cd components
k=99
./download_test_data.sh
./bcalm.sh 0_pe.fq.gz $k
./abyss_contigs_from_unitigs.sh 1_unitig.gfa2 1_unitig.fa $k
./abyss_scaffolding.sh 6_contigs.fa 6_contigs.gfa $k
# Visualize the assembly graph
Bandage load 9_assembly.gfa1 & # Download Unicycler test data
# input: nothing
# output: 0_pe.fq.gz
# install dependencies
brew install seqtk curl
seqtk mergepe <( curl -Ls https://github.com/rrwick/Unicycler/raw/master/sample_data/short_reads_1.fastq.gz ) <( curl -Ls https://github.com/rrwick/Unicycler/raw/master/sample_data/short_reads_2.fastq.gz ) | gzip > 0_pe.fq.gz-
# input: [reads] [k]
# e.g. 0_pe.fq.gz 99
#
# output: 1_unitig.gfa2
# contains unitigs created by BCALM
# make sure bcalm and convertToGFA.py are in your path (will later be automatically done by 'conda install bcalm' when someone makes bcalm availaon conda)
reads= $1
k= $2
# Install the dependencies
pip install gfapy
# Unitig with BCALM
bcalm -in $1 -out 1_bcalm -kmer-size $k -abundance-min 1 -verbose 0
mv 1_bcalm.unitigs.fa 1_unitig.fa
convertToGFA.py 1_unitig.fa 1_unitig.gfa $k
# convert bcalm output to gfa2
(printf " HtVN:Z:1.0n " ; tail -n +2 1_unitig.gfa) > 1_unitig.gfa1
gfapy-convert 1_unitig.gfa1 > 1_unitig.gfa2
# cleanup
rm -f 1_bcalm * glue * 1_bcalm.h5-
# input: [reads] [k]
# e.g. 0_pe.fq.gz 99
#
# output: 1_unitig.gfa2 1_unitig.fa
# contains unitigs created by abyss
reads= $1
k= $2
# setting up
brew install abyss
# Unitig
gunzip -c $reads | ABYSS -k $k -t0 -c0 -b0 -o 1_unitig.fa -
AdjList --gfa2 -k $k 1_unitig.fa > 1_unitig.gfa
mv 1_unitig.gfa 1_unitig.gfa2-
# input: [unitigs.gfa2] [unitigs.fa] [k]
# e.g. 1_unitig.gfa2 1_unitigs.fa 100
#
# output: 6_contigs.gfa2 and 6_contigs.fa
# contigs produced by ABySS
unitigs_gfa2= $1
unitigs_fa= $2
k= $3
# install dependencies
brew install abyss pigz samtools
# Denoise
abyss-filtergraph --gfa2 -k $k -t200 -c3 -g 2_denoise.gfa $unitigs_gfa2
# Collapse variants
PopBubbles --gfa2 -k $k -p0.99 -g 3_debulge.gfa $unitigs_fa 2_denoise.gfa > 3_debulge.path
MergeContigs --gfa2 -k $k -g 3_debulge.gfa -o 3_debulge.fa $unitigs_fa 2_denoise.gfa 3_debulge.path
# Map reads
gunzip -c 0_pe.fq.gz | abyss-map - 3_debulge.fa | pigz > 3_debulge.sam.gz
# Link unitigs
gunzip -c 3_debulge.sam.gz | abyss-fixmate -h 4_link.tsv | samtools sort -Osam | DistanceEst --dist -k $k -s500 -n1 4_link.tsv > 4_link.dist
# Resolve repeats
samtools faidx 3_debulge.fa
SimpleGraph -k $k -s500 -n5 -o 5_resolverepeats-1.path 3_debulge.gfa 4_link.dist
MergePaths -k $k -o 5_resolverepeats.path 3_debulge.fa.fai 5_resolverepeats-1.path
# Contract paths
MergeContigs --gfa2 -k $k -g 6_contigs.gfa2 -o 6_contigs.fa 3_debulge.fa 3_debulge.gfa 5_resolverepeats.path
# cleanup (comment to keep files)
rm -f 5_resolverepeats.path 3_debulge.gfa 3_debulge.fa 3_debulge.fa.fai 3_debulge.path 5_resolverepeats-1.path 4_link.dist 4_link.tsv 2_denoise.gfa 3_debulge.sam.gz -
# input: [unitigs_gfa1] [unitigs_gfa2] [unitigs_fa] [k]
# e.g. 1_unitig.gfa1
# output: 6_contigs.gfa 6_contigs.fa
# 'contigs' generated by popping bubbles and removing tips using gfa1 tool
# https://github.com/lh3/gfa1
unitigs_gfa1= $1
unitigs_gfa2= $2
unitigs_fa= $3
k= $4
# remove tips (2 rounds), misc trimming, pop bubbles,
# but then cannot use -u to build unitigs of simplified graph (i.e. contigs), because it doesn't output sequences
gfaview -t -m -t -b $unitigs_gfa1 > 2_denoised.gfa1
# make the output of gfaview properly gfa1 and gfa2
sed -i ' s/L1/l1/g ' 2_denoised.gfa1 # gfapy wants lower case flags
sed -i ' s/L2/l2/g ' 2_denoised.gfa1
sort -n -k 2 2_denoised.gfa1 > 2_denoised.gfa1.sorted # because ABySS GFA parser wants S lines in same order as in FASTA file
head -n 1 $unitigs_gfa2 > 2_denoised.gfa2 # copy header as gfaview doesnt
gfapy-convert 2_denoised.gfa1.sorted >> 2_denoised.gfa2
# would like to use use rgfa to do compaction but itdoesnt work on the Singella example
# ./rgfa-mergelinear 2_denoised.gfa1 > 6_contigs.gfa
# convert gfa to fasta
awk ' $1 ~/S/ {print ">"$2"n"$3} ' 2_denoised.gfa1.sorted > 2_denoised.fa
# just contract paths in the 2_denoised.gfa2, using ABySS as wasn't able to do it with neither gfaview nor rgfa-mergelinear
abyss-filtergraph --gfa2 -k $k --assemble 2_denoised.gfa2 2_denoised.fa -g 3_denoised.gfa2 > 3_denoised.paths
MergeContigs --gfa2 -k $k 2_denoised.fa 3_denoised.gfa2 3_denoised.paths -o 6_contigs.fa -g 6_contigs.gfa2
# cleanup (comment to keep files)
rm -f 2_denoised.gfa1.sorted 2_denoise.gfa1 2_denoised.gfa1 3_denoised.paths 3_denoised.gfa2 # input: [contigs.fa] [contigs.gfa] [k]
# e.g. 6_contigs.fa 6_contigs.gfa 99
#
# output: 9_assembly.gfa and 9_assembly.gfa1
# scaffolds assembly using abyss scaffolder in GFA2 and GFA1 format
contigs_fa= $1
contigs_gfa= $2
k= $3
# Map reads
gunzip -c 0_pe.fq.gz | abyss-map - $contigs_fa | pigz > 6_contigs.sam.gz
# Link unitigs
gunzip -c 6_contigs.sam.gz | abyss-fixmate -h 7_link.tsv | samtools sort -Osam | DistanceEst --dot -k $k -s500 -n1 7_link.tsv > 7_link.gv
# Order and orient
abyss-scaffold -k $k -s500-1000 -n5-10 $contigs_gfa 7_link.gv > 8_scaffold.path
# Contract paths
MergeContigs --gfa2 -k $k -g 9_assembly.gfa -o 9_assembly.fa $contigs_fa $contigs_gfa 8_scaffold.path
# Compute assembly metrics
abyss-fac 9_assembly.fa
# Convert GFA2 to GFA1
abyss-todot --gfa1 9_assembly.gfa > 9_assembly.gfa1
# cleanup (comment to remove)
rm -f 6_contigs.sam.gz 7_link.gv 7_link.tsv 8_scaffold.path 8_scaffold.path