Komponen Alat Perakitan Urutan Genome
Genome, metagenome dan perakit transkriptome berkisar dari terintegrasi penuh hingga sepenuhnya modular. Perakitan modular sepenuhnya memiliki sejumlah manfaat. Repositori ini adalah pekerjaan yang sedang berlangsung untuk menentukan beberapa pos pemeriksaan penting dalam pipa rakitan modular, bersama dengan format input/output standar. Untuk saat ini kami memiliki bias terhadap data sekuensing tipe Illumina (bacaan tunggal, bacaan berpasangan, pasangan pasangan, 10x), tetapi kami bertujuan untuk membuat komponen juga kompatibel dengan pembacaan generasi ke-3.
Jangan ragu untuk berkontribusi melalui permintaan pull.
FASTA/FASTQ : Atribut opsional ditemukan di bidang komentar, dan diformat seperti pada SAM, XX:x:xxxx . Bidang komentar mengikuti ruang di header.
FastQ : Bacaan berpasangan disertai dan dapat dikompresi. Barcode baca tertaut dapat ditunjukkan dengan tag BX .
FASTA : Urutan tidak boleh dibungkus garis. File FASTA harus diindeks (FAI).
GFA : GFA2 lebih disukai daripada GFA1. Bidang urutan mungkin kosong ( * ). Urutan dapat disimpan dalam file FASTA yang berdekatan, dinamai misalnya assembly.gfa dan assembly.fa .
SAM/BAM : File SAM/BAM diurutkan berdasarkan posisi dan diindeks, kecuali dinyatakan lain. Perpustakaan sekuensing yang berbeda dapat ditunjukkan dengan atribut RG grup baca.
Majelis terkandung dalam satu direktori. File dinamai sesuai dengan pola [0-9]+_[az]+.[az.]+ . Awalan numerik panjangnya nol-berlapis dan identik, dan mereka menunjukkan tahap perakitan. Nama deskriptif dan ekstensi jenis file Ikuti. File dapat dikompresi.
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 (rekam [atribut], ...) + ... → type2 (rekam [atribut], ...) + ...
Tahap ini membutuhkan file Type1 dan menghasilkan file Type2. Misalnya, perkirakan jumlah salinan unitig. File GFA dari segmen dan tepi urutan dan file BAM atau PAF dari bacaan yang dipetakan menghasilkan file GFA dengan perkiraan jumlah salinan unitig.
GFA (SE) + BAM/PAF → GFA (S [CN], E)
Hapus artefak sekuensing khusus untuk setiap teknologi sekuensing. Tingkatkan kualitas input yang dibaca dengan kehilangan informasi yang minim, misalnya varian heterozigot.
FastQ → FastQ
Nilai kualitas sekuensing, dan perkiraan parameter genom.
FastQ → TSV
Kesalahan sekuensing yang benar dalam baca.
FastQ → FastQ
Perakitan Unitigs oleh de Bruijn Graph (DBG) Assembly atau Overlap, Tata Letak, Konsensus (OLC) Perakitan.
FastQ → GFA (SE)
Hapus kesalahan pengurutan dari grafik perakitan. Mempertahankan varian.
GFA (SE) → GFA (SE)
Identifikasi dan/atau hapus varian dari grafik.
GFA (SE) → GFA (SE)
Urutan atau jalur tunggal melalui tonjolan dapat dipilih, atau tonjolan dapat digantikan oleh urutan konsensus, mungkin menggunakan kode ambiguitas IUPAC untuk mewakili konsensus.
Peta dibaca ke urutan perakitan.
FastQ + GFA (S)/FASTA → BAM
Perkirakan jumlah salinan dari setiap segmen urutan.
GFA (SE) + BAM/PAF → GFA (S [CN], E)
Perhatikan bahwa kedalaman median cakupan lebih kuat daripada kedalaman rata -rata cakupan untuk artefak penyelarasan yang disebabkan oleh pengulangan yang runtuh, bacaan yang tidak selaras, dan masalah lainnya.
Perluas pengulangan, dan urutan dan orientasi segmen urutan ke dalam contigs dan scaffolds.
FASTA/GFA (SE) + BAM/PAF → FASTA/GFA (SE)
Contigs adalah urutan yang berdekatan tanpa celah. Membuat contigs membutuhkan memperluas urutan berulang yang ditemukan di antara contig unik. Contigs berasal dari jalur yang berdekatan dari segmen urutan tanpa celah. Perancah berasal dari jalur yang tidak patuh dari segmen urutan dengan celah antara segmen.
Alat dapat menerapkan perancah sebagai satu tahap perakitan. Namun perancah dapat dilihat sebagai terdiri dari tiga tahap yang berbeda: tautan unitig, pesanan dan orient unitigs untuk membangun jalur, dan jalur kontrak untuk membuat segmen urutan baru.
Rakitkan urutan yang ditemukan dalam celah perancah antara contig yang berdekatan.
FastQ + FASTA/GFA (S) → FASTA/GFA (S)
Peta bacaan ke perakitan dan kesalahan rakitan yang benar.
FastQ + FASTA/GFA (SE) + BAM/PAF → FASTA/GFA (SE)
GFA (SE) → PNG/SVG
Nilai kedekatan dan kebenaran perakitan.
FASTA/GFA (S) → TSV
Alat dapat menggabungkan beberapa tahap perakitan dalam satu alat.
ema preprocesslongranger basicsga preqc bfcBcool.pysga index | sga correct ABYSS atau ABYSS-P atau abyss-bloom-dbg kemudian AdjList atau abyss-overlapbcalm | convertToGFA.pysga index | sga filter | sga overlap | sga assemble abyss-filtergraphgfaview -t PopBubbles | MergeContigsgfaview -b abyss-mapbgreatbwa memema align untuk bacaan tertautlongranger align untuk Baca Tertautminimap2unicycler_align sga-astat.py abyss-fixmate | DistanceEst for Paired-end dan pasangan-pasangan membacaabyss-longseqdist untuk waktu yang lama dibacaarcs busur untuk bacaan tertaut abyss-scaffold atau SimpleGraph | MergePathssga scaffold MergeContigssga scaffold2fasta abyss-sealer abyss-fac dan abyss-samtobreakData dari Unicycler: "Ini adalah bacaan sintetis dari plasmid A, B dan E dari perakitan genom Shigella sonnei 53G". Shigella sonnei plasmids (sintetis baca), short_reads_1.fastq.gz, short_reads_2.fastq.gz
Assemble Paired-end membaca menggunakan Abyss. Pipa Abyss ini adalah subset minimal dari alat yang dijalankan oleh pipa abyss-pe lengkap.
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 & Perakitan ini berbunyi menggunakan BCALM untuk unitig, kemudian menggunakan sisa pipa Abyss dari contoh sebelumnya.
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