Графики вариации обеспечивают краткое кодирование последовательностей многих геномов. График вариации (в частности, как реализовано в VG) состоит из:
Эта модель похожа на графики последовательности, которые использовались в сборке и множественном выравнивании последовательностей.
Пути предоставляют системы координат по сравнению с геномами, кодируемыми в графике, что позволяет создавать стабильные отображения, даже если структура графика изменилась. Модель графика изменения делает это встраивание явным и важным. Инструменты в VG поддерживают пути как неизменные при преобразовании графика. Они используют пути для данных, связанных с графическим графиком, в референтные координаты. Пути предоставляют стабильные координаты для графиков, встроенных по -разному от одних и тех же входных последовательностей.
Пожалуйста, цитируйте:
vg
vg giraffe
vg call
vg deconstruct
vg snarls
vg haplotypes
и/или vg giraffe --haplotype-name
Мы поддерживаем форум поддержки на Biostars: https://www.biostars.org/tag/vg/
Самый простой способ получить VG - скачать одну из наших релиз для Linux. У нас есть 6-недельный каденция релиза, поэтому наши сборки никогда не стоят столь устаревших.
Загрузите последний релиз VG для Linux
Для macOS см. Здание на MacOS.
Если вы не хотите или не можете использовать предварительно созданный выпуск VG, или если вы хотите стать разработчиком VG, вы можете вместо этого построить его из источника.
Во -первых, получить репо и его подмодули:
git clone --recursive https://github.com/vgteam/vg.git
cd vg
Затем установите зависимости VG. Вам понадобится установленные библиотеки Development Protobuf и Jansson, и для проведения тестов, которые вам понадобятся:
jq
, bc
, rs
и parallel
hexdump
и column
от bsdmainutils
npm
для тестирования примеров документации).На Ubuntu вы должны быть в состоянии сделать:
make get-deps
Если вы получите жалобы на то, что sudo
не найден, установите его:
apt update
apt install sudo
Если у вас есть куча ошибок, таких как E: Unable to locate package build-essential
, убедитесь, что ваши файлы индекса пакетов обновлены, запустив:
sudo apt update
На других дистрибуциях, или если у вас нет доступа к корнеу, вам нужно будет выполнить эквивалент:
sudo apt-get install build-essential git cmake pkg-config libncurses-dev libbz2-dev
protobuf-compiler libprotoc-dev libprotobuf-dev libjansson-dev
automake gettext autopoint libtool jq bsdmainutils bc rs parallel
npm curl unzip redland-utils librdf-dev bison flex gawk lzma-dev
liblzma-dev liblz4-dev libffi-dev libcairo-dev libboost-all-dev
libzstd-dev pybind11-dev python3-pybind11
Обратите внимание, что Ubuntu 16.04 не отправляет достаточно нового протобуфа; VG требует Protobuf 3 , который должен быть установлен вручную.
В настоящее время вам понадобится GCC версия 4.9 или более, при поддержке C ++ 14, для компиляции VG. (Проверьте свою версию с помощью gcc --version
.) Поддерживается GCC до 11.2.0.
Другие библиотеки могут потребоваться. Пожалуйста, сообщите о любых трудностях на сборке.
Обратите внимание, что требуется 64-битная ОС. Ubuntu 20.04 должен работать.
Когда вы будете готовы, постройте с помощью make
. Вы можете использовать make -j16
для запуска 16 потоков сборки за раз, что значительно ускоряет процесс. Если у вас больше сердечников процессора, вы можете использовать более высокие числа.
Обратите внимание, что VG может занять от 10 минут до часа для компиляции в зависимости от вашей машины и количества используемых потоков.
Вы также можете создать статический двоичный файл с make static
, предполагая, что у вас есть статические версии всех зависимостей, установленных в вашей системе.
После того, как VG будет построен, двоичный файл будет в bin/vg
в каталоге репозитория VG. Вы можете запустить это с:
./bin/vg
Вы также можете добавить его каталог в свою переменную PATH
, чтобы вы могли вызвать vg
из любого каталога. Чтобы сделать это на Bash, используйте эту команду из каталога репозитория VG:
echo 'export PATH="${PATH}:'"$(pwd)"'/bin"' >>~/.bashrc
Затем закройте свой терминал и откройте новый. Запустить vg
, чтобы убедиться, что это сработало.
Если это не сработало, убедитесь, что у вас есть файл .bash_profile
в вашем домашнем каталоге, который запустит ваш .bashrc
:
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
Первый шаг - клонировать репозиторий VG:
git clone --recursive https://github.com/vgteam/vg.git
cd vg
VG зависит от ряда пакетов, установленных в системе, где она строится. Зависимости могут быть установлены с использованием Macports или Homebrew.
Вы можете использовать Macports для установки зависимостей VG:
sudo port install libtool protobuf3-cpp jansson jq cmake pkgconfig autoconf automake libtool coreutils samtools redland bison gperftools md5sha1sum rasqal gmake autogen cairo libomp boost zstd pybind11
Homebrew предоставляет еще одно решение для управления пакетами для OSX и может быть предпочтительным для некоторых пользователей по сравнению с MacPorts. VG отправляет Brewfile
описывающий свои зависимости домашнего завода, поэтому из корневого каталога VG вы можете установить зависимости и подвергать их VG, как это:
# Install all the dependencies in the Brewfile
brew bundle
С установленными зависимостями VG теперь можно построить:
make
Как и в случае с Linux, вы можете добавить -j16
или другие цифры в конце, чтобы выполнить несколько задач сборки одновременно, если ваш компьютер может справиться с ними.
Обратите внимание, что статические двоичные файлы еще не могут быть построены для Mac.
VG Mac Build Targets, какую бы текущая версия Apple Clang была, и любая версия Apple Clang, предоставляется нашей системой GitHub Actions Mac CI. Если ваш кланг обновлен, а VG не создает для вас, пожалуйста, откройте проблему.
После того, как VG будет построен, двоичный файл будет в bin/vg
в каталоге репозитория VG. Вы можете запустить это с:
./bin/vg
Вы также можете добавить его каталог в свою переменную PATH
, чтобы вы могли вызвать vg
из любого каталога. Чтобы сделать это на оболочке zsh
Mac по умолчанию, используйте эту команду из каталога репозитория VG:
echo 'export PATH="${PATH}:'"$(pwd)"'/bin"' >>~/.zshrc
Затем закройте свой терминал и откройте новый. Запустить vg
, чтобы убедиться, что это сработало.
Платформа MAC перемещается на руку, с Apple M1, M1 Pro, M1 Max и последующими конструкциями чипов. Кодовая база VG поддерживает ARM на Mac, а также на Linux. Нормальные инструкции по установке работают на заводском заводском макете .
Тем не менее, легко столкнуться с проблемами при миграции рабочей среды VG Build или миграции Macports или Homebrew от x86_64 на ARM. Машина ARM может успешно запускать инструменты x86_64, установленные через Macports или Homebrew на старой машине, но VG может правильно строить на руке только в том случае, если вы используете версии ARM инструментов сборки, такие как make
и Cmake.
Итак, после перехода на Mac с использованием инструментов миграции Apple Apple:
make clean
. Это должно удалить все сборки артефактов.make
. Если вы все еще испытываете проблемы с сборкой после этого, удалите всю проверку и снова проверьте код; make clean
не находится под тестом CI и не всегда в курсе остальной части системы сборки.
Независимо от того, помогает ли это, пожалуйста, откройте проблему, чтобы мы могли помочь исправить сборку или исправить, make clean
.
Примечание См. Примеры
vg autoindex
ниже для того, как использовать этот инструмент вместоvg construct
для создания и индексных графиков за один шаг.
Один из способов создать график с vg
- это construct
его из вызовов варианта с использованием эталонного файла FASTA и файла VCF. Если вы работаете в test/
каталоге VG:
vg construct -r small/x.fa -v small/x.vcf.gz > x.vg
Обратите внимание, что для создания графика требуется индекс файла VCF. Файл индекса VCF может быть сгенерирован с использованием команды tabix
предоставленной Samtools (например, tabix -p vcf x.vcf.gz
в командной строке).
Вы также можете построить график (и индексы для картирования с VG) из набора сборок генома (FASTA), в отличие от вызовов вариантов, как описано выше, с использованием миниграфа-ката.
vg
поддерживает многие форматы, три наиболее важных::
PackedGraph (.vg)
: это родной формат vg's
. Он поддерживает изменения всех видов (к топологии и путям), но может быть неэффективным в больших масштабах, особенно во многих путях.GFA (.gfa)
: GFA является стандартным текстовым форматом, и, как правило, лучший способ обмена графиками между vg
и другими инструментами Pangenome. vg
также может работать на ( несомненных ) файлах GFA напрямую, используя представление PackedGraph
в памяти (и, следовательно, делят проблемы масштабирования этого формата и способность к редактированию).GBZ (.gbz)
: GBZ-это высокопроизводимый формат, который использует гораздо меньше места для хранения путей, чем вышеуказанные форматы, но по цене не допускают общих изменений на график. Вы можете запросить формат любого графика, используя vg stats -F
.
В целом, вы будете создавать и индекс vg
графики с использованием vg autoindex
(от GFA или VCF) или Minigraph-Cactus
(FASTAS). Вы также можете импортировать файлы GFA
из других инструментов, таких как ODGI и PGGB, используя vg convert -g
.
Вы можете преобразовать любой график в GFA
используя vg convert -f
. По умолчанию vg
использует GFA V1.1, где пути представлены в виде W-линий. Чтобы вместо этого использовать P -линии (GFA V1.0), используйте vg convert -fW
.
Формат GBZ
делает различие между REFERENCE
и HAPLOTYPE
путей. REFERENCE
пути могут быть использованы в качестве систем координат, но хранить более дорогие. Пути HAPLOTYPE
очень сжаты, но не могут быть использованы для поиска позиций. Например, на графиках HPRC контиги от GRCh38
и CHM13(T2T)
являются REFERENCE
путями и всеми другими образцами гаплотипов HAPLOTYPE
.
Различие между REFERENCE
и HAPLOTYPE
путями переносится в другие форматы, такие как .vg
и .gfa
для облегчения конверсии и межоперации. В .gfa
REFERENCE
пути-P-линии или W-линии, имена образцов которых помечаются в заголовке. W-линии, чьи имена не помечены в заголовке, являются HAPLOTYPE
. В .vg
они обозначены с использованием соглашения об именах.
Посмотрите на метаданные вики для более подробной информации.
Предупреждение
GBZ
- единственный формат, который поддерживает эффективную загрузку большого количества путейHAPLOTYPE
вvg
. Вы можете столкнуться с проблемами, пытаясь загрузить графики всего генома тысячамиHAPLOTYPE
из файлов.vg
или.gfa
.vg convert -H
может использоваться для сброса путейHAPLOTYPE
, что позволяет более легко загружать график в других форматах.
Примечание лучше всего использовать новый инструмент
vg convert
(описанный выше) для преобразования GFA
vg view
предоставляет способ преобразовать график в различные форматы:
# GFA output
vg view x.vg > x.gfa
# dot output suitable for graphviz
vg view -d x.vg > x.dot
# And if you have a GAM file
cp small/x-s1337-n1.gam x.gam
# json version of binary alignments
vg view -a x.gam > x.json
Если у вас есть более одной последовательности, или вы работаете над большим графиком, вы захотите отображать, а не просто выравниваться.
В vg
есть несколько карт чтения:
vg giraffe
предназначен для быстрых для высоких коротких коротких чтений, против графиков с информацией о гаплотипе.vg map
-это карта для чтения общего назначения.vg mpmap
выполняет «многоплановое» отображение, что позволяет описать неопределенность локального выравнивания. Это полезно для транскриптомики. vg giraffe
Чтобы использовать vg giraffe
для карты чтения, вам сначала нужно будет подготовить индексы. Лучше всего это сделать с помощью vg autoindex
. Чтобы vg autoindex
использовал информацию о гаплотипе из файла VCF, вы можете напрямую дать ему VCF и связанную линейную ссылку.
# construct the graph and indexes (paths below assume running from `vg/test` directory)
vg autoindex --workflow giraffe -r small/x.fa -v small/x.vcf.gz -p x
# simulate a bunch of 150bp reads from the graph, into a GAM file of reads aligned to a graph
vg sim -n 1000 -l 150 -x x.giraffe.gbz -a > x.sim.gam
# now re-map these reads against the graph, and get BAM output in linear space
# FASTQ input uses -f instead of -G.
vg giraffe -Z x.giraffe.gbz -G x.sim.gam -o BAM > aln.bam
Более подробную информацию об использовании vg girafe
можно найти на vg
Wiki.
vg map
Если ваш график большой, вы хотите использовать vg index
для хранения vg map
для выравнивания чтения. vg map
реализует семена на основе KMER и расширяет модель выравнивания, которая аналогична той, которая используется в таких выравнивателях, как NovoAlign или Mosaik. Сначала индекс на диске построен с vg index
, который включает сам график и Kmers определенного размера. При картировании можно использовать любой размер KMER короче, чем используется в индексе, и по умолчанию Mapper уменьшит размер KMER, чтобы повысить чувствительность при выравнивании при определенном k .
# construct the graph (paths below assume running from `vg/test` directory)
vg construct -r small/x.fa -v small/x.vcf.gz > x.vg
# store the graph in the xg/gcsa index pair
vg index -x x.xg -g x.gcsa -k 16 x.vg
# align a read to the indexed version of the graph
# note that the graph file is not opened, but x.vg.index is assumed
vg map -s CTACTGACAGCAGAAGTTTGCTGTGAAGATTAAATTAGGTGATGCTTG -x x.xg -g x.gcsa > read.gam
# simulate a bunch of 150bp reads from the graph, one per line
vg sim -n 1000 -l 150 -x x.xg > x.sim.txt
# now map these reads against the graph to get a GAM
vg map -T x.sim.txt -x x.xg -g x.gcsa > aln.gam
# surject the alignments back into the reference space of sequence "x", yielding a BAM file
vg surject -x x.xg -b aln.gam > aln.bam
# or alternatively, surject them to BAM in the call to map
vg sim -n 1000 -l 150 -x x.xg > x.sim.txt
vg map -T x.sim.txt -x x.xg -g x.gcsa --surject-to bam > aln.bam
Изменения от выравниваний могут быть включены обратно в график. Этот процесс называется увеличением и может использоваться для вызова варианта de novo , например (см. Ниже).
Предупреждение с использованием
vg augment
для вариантов вызова остается очень экспериментальным. Это совсем не рекомендуется для конструктивного варианта вызова, и даже для небольших вариантов вы часто получаете гораздо более точные результаты (по крайней мере, на человеке), проецируя ваше выравниваниеBAM
и запустив линейный вариант -вызывающий, такой как DeepVariant.
# augment the graph with all variation from the GAM except that implied by soft clips, saving to aug.vg. aug.gam contains the same reads as aln.gam but mapped to aug.vg
vg augment x.vg aln.gam -A aug.gam > aug.vg
# augment the graph with all variation from the GAM, saving each mapping as a path in the graph.
# softclips of alignment paths are preserved (`-S`).
# Note, this can be much less efficient than the above example if there are many alignments in the GAM
vg augment x.vg aln.gam -i -S > aug_with_paths.vg
Примечание больше информации можно найти в вики.
Следующие примеры показывают, как генерировать VCF с VG с использованием поддержки чтения. Они зависят от вывода из примеров картирования и увеличения выше. Небольшие варианты и SV могут быть названы с использованием того же подхода. В настоящее время это более точно для SVS .
Вызовы только варианты, которые присутствуют на графике:
# Compute the read support from the gam
# -Q 5: ignore mapping and base qualitiy < 5
vg pack -x x.xg -g aln.gam -Q 5 -o aln.pack
# Generate a VCF from the support.
vg call x.xg -k aln.pack > graph_calls.vcf
По умолчанию vg call
не имеет различных вариантов 0/0
и пытается нормализовать аллели, чтобы сделать VCF более компактным. Оба эти шага могут затруднить сравнение выходов из разных образцов, поскольку VCF будут иметь разные координаты, даже если они были созданы с использованием одного и того же графика. Вариант -a
обращается к этому, вызывая каждый rnarl, используя одни и те же координаты и включив эталонные вызовы. Выходы для разных выборок могут быть объединены с bcftools merge -m all
.
vg call x.xg -k aln.pack -a > snarl_genotypes.vcf
Чтобы также рассмотреть новые варианты из чтения, используйте дополненный график и GAM (как создано в примере «увеличение» с использованием vg augment -A
):
Предупреждение с использованием
vg augment
для вариантов вызова остается очень экспериментальным. Это совсем не рекомендуется для конструктивного варианта вызова, и даже для небольших вариантов вы часто получаете гораздо более точные результаты (по крайней мере, на человеке), проецируя ваше выравниваниеBAM
и запустив линейный вариант -вызывающий, такой как DeepVariant.
# Index our augmented graph
vg index aug.vg -x aug.xg
# Compute the read support from the augmented gam (ignoring qualitiy < 5, and 1st and last 5bp of each read)
vg pack -x aug.xg -g aug.gam -Q 5 -s 5 -o aln_aug.pack
# Generate a VCF from the support
vg call aug.xg -k aln_aug.pack > calls.vcf
Аналогичный процесс может использовать для генотипа известных вариантов из VCF. Для этого график должен быть построен из VCF с vg construct -a
(Графики из других источников, таких как vg autoindex
и Minigraph-Cactus
не могут быть использованы):
# Re-construct the same graph as before but with `-a`
vg construct -r small/x.fa -v small/x.vcf.gz -a > xa.vg
# Index the graph with `-L' to preserve alt paths in the xg
vg index xa.vg -x xa.xg -L
# Compute the support (we could also reuse aln.pack from above)
vg pack -x xa.xg -g aln.gam -o aln.pack
# Genotype the VCF (use -v)
vg call xa.xg -k aln.pack -v small/x.vcf.gz > genotypes.vcf
Предварительная фильтрация GAM перед вычислительной поддержкой может повысить точность вызова SNP:
# filter secondary and ambiguous read mappings out of the gam
vg filter aln.gam -r 0.90 -fu -m 1 -q 15 -D 999 -x x.xg > aln.filtered.gam
# then compute the support from aln.filtered.gam instead of aln.gam in above etc.
vg pack -x xa.xg -g aln.filtered.gam -o aln.pack
vg call xa.xg -k aln.pack -v small/x.vcf.gz > genotypes.vcf
Для более крупных графиков рекомендуется вычислять рычаги отдельно:
vg snarls x.xg > x.snarls
# load snarls from a file instead of computing on the fly
vg call x.xg -k aln.pack -r x.snarls > calls.vcf
Примечание: vg augment
, vg pack
, vg call
и vg snarls
теперь могут работать непосредственно в любом формате графика (ex '.gbz', ' vg convert
', .vg
, .xg
(кроме augment
vg convert
). Работа на .vg
или '.gfa' использует наибольшую память и не рекомендуется для больших графиков. Вывод vg pack
может быть считан только в сочетании с тем же графом, который использовался для его создания, поэтому vg pack x.vg -g aln.gam -o x.pack
Затем vg call x.xg -k x.pack
не будет работать Полем
Вывода варианты из выравниваний, подразумеваемых путями на графике. Например, это можно использовать для вызова SV непосредственно с графика изменения, который был построен из множественного выравнивания различных сборок:
# create a graph from a multiple alignment of HLA haplotypes (from vg/test directory)
vg msga -f GRCh38_alts/FASTA/HLA/V-352962.fa -t 1 -k 16 | vg mod -U 10 - | vg mod -c - > hla.vg
# index it
vg index hla.vg -x hla.xg
# generate a VCF using gi|568815592:29791752-29792749 as the reference contig. The other paths will be considered as haploid samples
vg deconstruct hla.xg -e -p " gi|568815592:29791752-29792749 " > hla_variants.vcf
Путь гаплотипа из индексов .gbz
или .gbwt
вход может рассматриваться для использования -z
и `-g ', соответственно.
Как и в случае с vg call
, лучше всего вычислить рычаги отдельно и передавать их с -r
при работе с большими графами.
vg
имеет ряд инструментов для поддержки транскриптомных анализов с помощью сплайсированных графиков (т.е. графики, которые аннотировали соединения сплайсинга, добавленные в виде ребра в график). Эти края могут быть добавлены в существующий график с использованием vg rna
. Затем мы можем выполнить отображение сплайсинга с этими графиками с помощью vg mpmap
. Разработчики vg
также создали инструмент для количественной оценки транскрипта с гаплотипом, основанным на этих инструментах в rpvg
. Самый простой способ начать этот трубопровод - использовать подкоманду vg autoindex
для создания индексов для vg mpmap
. vg autoindex
создает индексы для картирования из общих форматов обмена, таких как FASTA, VCF и GTF.
Более подробная информация доступна на странице вики на Transcriptomics.
Работа из test/
каталога В следующем примере показано, как создать сплайсированный график пангенома и индексы с использованием vg autoindex
с 4 потоками:
# Create spliced pangenome graph and indexes for vg mpmap
vg autoindex --workflow mpmap -t 4 --prefix vg_rna --ref-fasta small/x.fa --vcf small/x.vcf.gz --tx-gff small/x.gtf
РНК-seq считывания могут быть отображены с сплайсированным графом пангенома с использованием vg mpmap
с 4 потоками:
# Map simulated RNA-seq reads using vg mpmap
vg mpmap -n rna -t 4 -x vg_rna.spliced.xg -g vg_rna.spliced.gcsa -d vg_rna.spliced.dist -f small/x_rna_1.fq -f small/x_rna_2.fq > mpmap.gamp
Это будет производить выравнивания в формате многолучевоготра. Для получения дополнительной информации о формате выравнивания Multipath и vg mpmap
см. Страницу Wiki на MPMAP. Запуск двух команд на небольших примере данных с использованием 4 потоков на большинстве машин занимает менее минуты.
Если у вас есть небольшой график, вы можете выровнять последовательность на весь график, используя полноразмерное выравнивание частичного порядка:
vg align -s CTACTGACAGCAGAAGTTTGCTGTGAAGATTAAATTAGGTGATGCTTG x.vg
Обратите внимание, что вам вообще не нужно хранить график на диске, вы можете просто поднять его в локальный выравниватель:
vg construct -r small/x.fa -v small/x.vcf.gz | vg align -s CTACTGACAGCAGAAGTTTGCTGTGAAGATTAAATTAGGTGATGCTTG -
Большинство команд разрешают потоковую передачу графиков в vg
.
Доступны различные команды:
vg
представляет собой набор инструментов, основанных на общей модели данных (график вариации), которая описывается схемой Protobuf (VG.Proto). Объекты данных, определенные в VG.Proto, могут быть сериализованы с помощью потокового шаблона, определенного в Stream.hpp. Нет необходимости писать код в VG, чтобы взаимодействовать с алгоритмами, определенными здесь. Скорее, иногда проще писать внешний алгоритм, который читает и записывает те же форматы данных.
Грань