ส่วนประกอบของเครื่องมือประกอบลำดับจีโนม
จีโนม, metagenome และ transcriptome esemblers มีตั้งแต่การรวมเข้าด้วยกันไปจนถึงโมดูลาร์อย่างเต็มที่ แอสเซมบลีแบบโมดูลาร์มีประโยชน์มากมาย พื้นที่เก็บข้อมูลนี้ดำเนินการอย่างต่อเนื่องเพื่อกำหนดจุดตรวจสอบที่สำคัญบางอย่างในท่อประกอบแบบแยกส่วนพร้อมกับรูปแบบอินพุต/เอาต์พุตมาตรฐาน สำหรับตอนนี้เรามีอคติต่อข้อมูลการเรียงลำดับประเภทของอิลลูมินา (อ่านเดี่ยว, อ่านคู่, คู่คู่, 10x) แต่เรามุ่งมั่นที่จะทำให้ส่วนประกอบเข้ากันได้กับการอ่านรุ่นที่ 3
อย่าลังเลที่จะมีส่วนร่วมผ่านการร้องขอแบบดึง
FASTA/FASTQ : พบคุณลักษณะเสริมในฟิลด์ความคิดเห็นและจัดรูปแบบใน SAM, XX:x:xxxx ฟิลด์ความคิดเห็นติดตามพื้นที่ในส่วนหัว
FASTQ : การอ่านแบบจับคู่จะถูก interleaved และอาจถูกบีบอัด บาร์โค้ดอ่านที่เชื่อมโยงอาจระบุด้วยแท็ก BX
FASTA : ลำดับไม่ควรถูกห่อด้วยเส้น ไฟล์ Fasta ควรได้รับการจัดทำดัชนี (FAI)
GFA : GFA2 เป็นที่ต้องการมากกว่า GFA1 ฟิลด์ลำดับอาจว่างเปล่า ( * ) ลำดับอาจถูกเก็บไว้ในไฟล์ FASTA ที่อยู่ติดกันชื่อตัวอย่างเช่น assembly.gfa และ assembly.fa
SAM/BAM : ไฟล์ SAM/BAM ถูกจัดเรียงตามตำแหน่งและจัดทำดัชนีเว้นแต่จะระบุไว้เป็นอย่างอื่น ไลบรารีลำดับที่แตกต่างกันอาจถูกระบุด้วยแอตทริบิวต์ RG กลุ่มอ่าน
การชุมนุมมีอยู่ในไดเรกทอรีเดียว ไฟล์มีชื่อตามรูปแบบ [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 (บันทึก [แอตทริบิวต์], …) + …
ขั้นตอนนี้ต้องใช้ไฟล์ Type1 และสร้างไฟล์ของ Type2 ตัวอย่างเช่นประมาณจำนวนสำเนาของ Unitigs ไฟล์ GFA ของเซ็กเมนต์ลำดับและขอบและไฟล์ BAM หรือ PAF ของการอ่านที่แมปสร้างไฟล์ GFA ที่มีหมายเลขสำเนาโดยประมาณของ Unitigs
GFA (SE) + BAM/PAF → GFA (S [CN], E)
ลบสิ่งประดิษฐ์ลำดับที่เฉพาะเจาะจงสำหรับแต่ละเทคโนโลยีการเรียงลำดับ ปรับปรุงคุณภาพของอินพุตอ่านด้วยการสูญเสียข้อมูลน้อยที่สุดเช่นตัวแปร heterozygous
fastq → fastq
ประเมินคุณภาพของการจัดลำดับและประเมินพารามิเตอร์ของจีโนม
FastQ → TSV
แก้ไขข้อผิดพลาดในการเรียงลำดับในการอ่าน
fastq → fastq
ประกอบ UNITIGS โดยชุดประกอบ 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)
โปรดทราบว่าความลึกเฉลี่ยของการครอบคลุมนั้นแข็งแกร่งกว่าความลึกเฉลี่ยของการครอบคลุมไปยังสิ่งประดิษฐ์การจัดตำแหน่งที่เกิดจากการยุบซ้ำการอ่านที่ไม่ถูกต้องและปัญหาอื่น ๆ
ขยายการทำซ้ำและลำดับการสั่งซื้อและทิศทางลำดับเป็น contigs และนั่งร้าน
fasta/gfa (se) + bam/paf → fasta/gfa (SE)
Contigs เป็นลำดับที่ต่อเนื่องกันโดยไม่มีช่องว่าง การสร้าง contigs ต้องการการขยายลำดับซ้ำ ๆ ที่พบระหว่าง contigs ที่ไม่ซ้ำกัน Contigs มาจากเส้นทางที่ต่อเนื่องกันของเซ็กเมนต์ลำดับโดยไม่มีช่องว่างใด ๆ นั่งร้านมาจากเส้นทางที่ไม่ต่อเนื่องของเซ็กเมนต์ลำดับที่มีช่องว่างระหว่างเซ็กเมนต์
เครื่องมืออาจใช้การนั่งร้านเป็นขั้นตอนเดียวของการประกอบ อย่างไรก็ตามการนั่งร้านอาจถูกดูว่าประกอบด้วยสามขั้นตอนที่แตกต่างกัน: Link Unitigs, Order และ Orient Unitigs เพื่อสร้างเส้นทางและเส้นทางสัญญาเพื่อสร้างเซ็กเมนต์ลำดับใหม่
รวบรวมลำดับที่พบในช่องว่างนั่งร้านระหว่าง contigs ที่อยู่ติดกัน
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ข้อมูลมาจาก Unicycler: "สิ่งเหล่านี้เป็นการอ่านสังเคราะห์จากพลาสมิด A, B และ E จากชุดจีโนม Shigella Sonnei 53G" shigella sonnei plasmids (อ่านสังเคราะห์), short_reads_1.fastq.gz, short_reads_2.fastq.gz
ประกอบการอ่านแบบจับคู่โดยใช้ Abyss ไปป์ไลน์ Abyss นี้เป็นชุดย่อยน้อยที่สุดของเครื่องมือที่ดำเนินการโดยท่อ 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 สำหรับ Unitigs จากนั้นใช้ส่วนที่เหลือของไปป์ไลน์ 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