مكونات أدوات تجميع تسلسل الجينوم
تتراوح مجموعات الجينوم والميتاجينوم والنسخة من المدمجة بالكامل إلى وحدات تمامًا. التجميع المعياري بالكامل لديه عدد من الفوائد. هذا المستودع هو العمل المستمر لتحديد بعض نقاط التفتيش المهمة في خط أنابيب التجميع المعياري ، إلى جانب تنسيقات الإدخال/الإخراج القياسية. في الوقت الحالي ، لدينا تحيز تجاه بيانات التسلسل من نوع Illumina (القراءات المفردة ، القراءات المقترنة ، الأزواج ، 10x) ، لكننا نهدف إلى جعل المكونات متوافقة أيضًا مع القراءات من الجيل الثالث.
لا تتردد في المساهمة عبر مستحضرات السحب.
fasta/fastq : تم العثور على سمات اختيارية في حقل التعليق ، وتنسيق كما في SAM ، XX:x:xxxx . يتبع حقل التعليق مساحة في الرأس.
FastQ : القراءات المقترنة متشابكة وقد تكون مضغوطة. يمكن الإشارة إلى الرموز الباركدية المترابطة مع علامة BX .
FASTA : لا ينبغي أن يكون التسلسل ملفوفًا. يجب فهرسة ملف fasta (FAI).
GFA : يفضل GFA2 على GFA1. قد تكون حقول التسلسل فارغة ( * ). يمكن تخزين التسلسلات في ملف FARTA المجاور ، المسمى على سبيل المثال 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. على سبيل المثال ، تقدير عدد النسخ من الوحدات. ينتج ملف GFA من شرائح التسلسل والحواف وملف BAM أو PAF من القراءات المعينة ملف GFA مع أرقام نسخ مقدرة من unitigs.
GFA (SE) + BAM/PAF → GFA (S [CN] ، E)
قم بإزالة القطع الأثرية التسلسلية الخاصة بكل تقنية تسلسل. تحسين جودة القراءة من المدخلات مع الحد الأدنى من فقدان المعلومات ، على سبيل المثال المتغيرات غير المتجانسة.
FastQ → FastQ
تقييم جودة التسلسل ، وتقدير المعلمات من الجينوم.
FastQ → TSV
أخطاء التسلسل الصحيحة في القراءة.
FastQ → FastQ
قم بتجميع الوحدات بواسطة تجميع De Bruijn Graph (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 من مسارات متجاورة لقطاعات التسلسل دون أي فجوات. يتم اشتقاق السقالات من مسارات متقطعة لقطاعات التسلسل مع فجوات بين القطاعات.
قد تنفذ الأداة السقالات كمرحلة واحدة من التجميع. ومع ذلك ، قد يُنظر إلى السقالات على أنها مكونة من المراحل الثلاث المتميزة: ربط الوحدات ، والترتيب وتوجيه الوحدات لإنشاء مسارات ، ومسارات التعاقد لإنشاء شرائح تسلسل جديدة.
قم بتجميع التسلسل الموجود في الفجوات في السقالات بين 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 من مجموعة الجينوم Sonnei 53G Shigella". shigella sonnei plasmids (القراءات الاصطناعية) ، Short_reads_1.fastq.gz ، Short_reads_2.fastq.gz
تجميع القراءات المقترنة باستخدام الهاوية. خط أنابيب 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 ، ثم يستخدم بقية خط أنابيب الهاوية من المثال السابق.
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