From cf1f4af7c645337ea9130cfb8f03318242f5d30c Mon Sep 17 00:00:00 2001 From: Tharos Date: Thu, 1 Feb 2024 11:23:14 +0100 Subject: [PATCH] Quartz sync: Feb 1, 2024, 11:23 AM --- content/Building a graph/minigraph.md | 4 +- .../GfaGraphs/gfagraphs.md | 5 +- content/Publications/Generalities.canvas | 7 - content/Useful commands/sequences.md | 8 +- content/Working with graphs/Tools/odgi.md | 24 +++- content/Working with graphs/Tools/vg.md | 16 +++ content/Working with graphs/visualize.md | 3 +- content/_imgs/Pasted image 20240115144532.png | Bin 0 -> 115281 bytes content/_notes/feedback_pangenomes.md | 49 +++++++ .../A draft human pangenome reference.md | 3 + .../Building pangenome graphs.md | 3 + ... for genome multiple sequence alignment.md | 3 + .../Cactus Graphs for Genome Comparisons.md | 8 ++ ...epresentation of human pangenome graphs.md | 3 + ... and seed clustering in sequence graphs.md | 12 ++ .../GBZ file format for pangenome graphs.md | 4 + ...Algorithms for Acyclic Pangenome Graphs.md | 3 + ...che-efficient full-text pangenome index.md | 3 + ...genome alignments with Minigraph-Cactus.md | 3 + ...ome aligner for the thousand-genome era.md | 3 + .../Publications.canvas | 120 ++++++++++-------- .../Superbubbles, ultrabubbles and cacti.md | 3 + ...ference pangenome graphs with minigraph.md | 3 + .../Unbiased pangenome graphs.md | 4 + 24 files changed, 227 insertions(+), 67 deletions(-) delete mode 100644 content/Publications/Generalities.canvas create mode 100644 content/Working with graphs/Tools/vg.md create mode 100644 content/_imgs/Pasted image 20240115144532.png create mode 100644 content/_notes/feedback_pangenomes.md create mode 100644 content/_publications/A draft human pangenome reference.md create mode 100644 content/_publications/Building pangenome graphs.md create mode 100644 content/_publications/Cactus - Algorithms for genome multiple sequence alignment.md create mode 100644 content/_publications/Cactus Graphs for Genome Comparisons.md create mode 100644 content/_publications/Construction and representation of human pangenome graphs.md create mode 100644 content/_publications/Distance indexing and seed clustering in sequence graphs.md create mode 100644 content/_publications/GBZ file format for pangenome graphs.md create mode 100644 content/_publications/Gap-Sensitive Colinear Chaining Algorithms for Acyclic Pangenome Graphs.md create mode 100644 content/_publications/Movi - a fast and cache-efficient full-text pangenome index.md create mode 100644 content/_publications/Pangenome graph construction from genome alignments with Minigraph-Cactus.md create mode 100644 content/_publications/Progressive Cactus is a multiple-genome aligner for the thousand-genome era.md rename content/{Publications => _publications}/Publications.canvas (70%) create mode 100644 content/_publications/Superbubbles, ultrabubbles and cacti.md create mode 100644 content/_publications/The design and construction of reference pangenome graphs with minigraph.md create mode 100644 content/_publications/Unbiased pangenome graphs.md diff --git a/content/Building a graph/minigraph.md b/content/Building a graph/minigraph.md index ca018f6ff2a2e..3654892ee1bef 100644 --- a/content/Building a graph/minigraph.md +++ b/content/Building a graph/minigraph.md @@ -23,4 +23,6 @@ It's a [development choice](https://github.com/lh3/minigraph/issues/27) that was A pull request was made in 2022, adding [P-lines support to minigraph](https://github.com/lh3/minigraph/pull/77) but was never accepted. However, one can get this version by getting the associated commit ID. > [!WARNING] Warning -> minigraph outputs nodes prefixed with `s` ; with some tools (such as odgi) it may cause crashes. To convert those rGFA's to standard GFA files, [you can use gfautil](https://github.com/vgteam/vg/issues/3129) \ No newline at end of file +> minigraph outputs nodes prefixed with `s` ; with some tools (such as odgi) it may cause crashes. To convert those rGFA's to standard GFA files, [you can use gfautil](https://github.com/vgteam/vg/issues/3129) + +It may be possible to get some kind of paths in a rGFA using `vg convert` according to [this answer](https://github.com/pangenome/odgi/issues/546#issuecomment-1893382366) \ No newline at end of file diff --git a/content/Pancat and GfaGraphs/GfaGraphs/gfagraphs.md b/content/Pancat and GfaGraphs/GfaGraphs/gfagraphs.md index 0302de3325901..c78189a6df929 100644 --- a/content/Pancat and GfaGraphs/GfaGraphs/gfagraphs.md +++ b/content/Pancat and GfaGraphs/GfaGraphs/gfagraphs.md @@ -1,4 +1,7 @@ --- title: "GfaGraphs: Python abstraction layer for GFA graph format" --- -![[library_flowchart.png]] \ No newline at end of file +![[library_flowchart.png]] +Known limitations: ++ As of now, not scaling well in terms of memory for huge graphs (like full HPRC) as 256G of RAM is not sufficient to load PGGB and MGC graphs in memory at the same time ++ Takes a long time to load huge graphs (many hours for HPRC aswell) \ No newline at end of file diff --git a/content/Publications/Generalities.canvas b/content/Publications/Generalities.canvas deleted file mode 100644 index 78a171aff1989..0000000000000 --- a/content/Publications/Generalities.canvas +++ /dev/null @@ -1,7 +0,0 @@ -{ - "nodes":[ - {"id":"8057802cee776f46","x":-80,"y":-380,"width":305,"height":90,"type":"text","text":"Alignement sur pangénome de référence pour identification rapide et efficace de souches"}, - {"id":"7199ad6e27a9f6b8","x":-80,"y":-260,"width":305,"height":100,"type":"text","text":""} - ], - "edges":[] -} \ No newline at end of file diff --git a/content/Useful commands/sequences.md b/content/Useful commands/sequences.md index 9d2dbb5c8812b..c63ea711cbb75 100644 --- a/content/Useful commands/sequences.md +++ b/content/Useful commands/sequences.md @@ -4,4 +4,10 @@ title: Interact with sequences Get statistics on sequences: + awk command to get the size of all lectures in a file : `awk '/^>/{if (l!="") print l; print; l=0; next}{l+=length($0)}END{print l}' unique.fasta |paste - -` + samtools command to index a file (useful for pggb): `samtools faidx myfile.fasta` -+ Replace string in file: `"s/thing_to_replace/thing_replacing/g" file > out` \ No newline at end of file ++ Replace string in file: `"s/thing_to_replace/thing_replacing/g" file > out` + +Get fast stats on a GFA file: ++ Print all number of lines types: ` $OUTPUT +# INPUT is a .og file +# OUTPUT is a new .gfa file +# -g stands for "convert to gfa" +``` +# Python bindings + +> [!WARNING] Warning +> It exists an older implementation of bindings, which is the one referenced in the readsthedocs.io, HOWEVER it is not [the one which should be used](https://github.com/pangenome/odgi/blob/master/test/python/odgi_ffi.md) for [performance reasons](https://github.com/pangenome/odgi/blob/master/test/python/odgi_performance.md) as well as stability issues... + +According to the documentation, `odgi_ffi` is meant to be used more as a tool to build a Python library than being the actual Python library. + +> Note that odgi also has an older high-level Python API `import odgi` that is somewhat obsolete. Instead you should probably use below `import odgi_ffi` lower level API to construct your own library. + +In order to fix segfaults, set `LD_PRELOAD=libjemalloc.so.2` before running Python scripts. However, I could not get it to work in any way, as if I can as the time I'm writing those lines import the bindings, I could not load a graph, giving an error when I try to (`RuntimeError: Error rewinding to load non-magic-prefixed SerializableHandleGraph`) . Given the maintainers are not implying that the [library is not fully stable](https://github.com/pangenome/odgi/issues/425#issuecomment-1305566300) I won't settle on it for the future. \ No newline at end of file diff --git a/content/Working with graphs/Tools/vg.md b/content/Working with graphs/Tools/vg.md new file mode 100644 index 0000000000000..114354288b1f3 --- /dev/null +++ b/content/Working with graphs/Tools/vg.md @@ -0,0 +1,16 @@ +--- +title: VG toolkit +--- +> [!WARNING] Warning +> vg commands on graphs that are compressed **does not work**. It will raise a 'invalid graph type' error. +## Convert from GFA1.1 to GFA1 + +`vg convert in.gfa -W -f > out.gfa` ++ `-W` stands for suppress W-lines ++ `-f` is to output to file +## Convert from vg, json to GFA +`vg view [-J|-V|-F] input_graph -g > out.gfa` + +## Call bubbles on graph to get variants +`vg deconstruct -p ref graph.gfa > variants.vcf` ++ `-p [STR]` stands for the path to use as reference to call variants \ No newline at end of file diff --git a/content/Working with graphs/visualize.md b/content/Working with graphs/visualize.md index a8f4b0b1665b2..d9e388fb05339 100644 --- a/content/Working with graphs/visualize.md +++ b/content/Working with graphs/visualize.md @@ -4,8 +4,9 @@ title: How to visualize a pangenome ## Dynamic representations + [gfaviz](https://github.com/ggonnella/gfaviz) by ggonnella. Supports GFA1 and GFA2 formats -+ [pancat](https://github.com/Tharos-ux/pancat) *own work*. Supports theorically all GFA types, feel free to open issues! ++ [pancat](https://github.com/Tharos-ux/pancat) (*own work*). Supports theorically all GFA types, feel free to open issues! + [bandage](https://rrwick.github.io/Bandage/) by R. Wick. ++ [gfaestus](https://github.com/chfi/gfaestus) by C. Fischer. ## Static representations diff --git a/content/_imgs/Pasted image 20240115144532.png b/content/_imgs/Pasted image 20240115144532.png new file mode 100644 index 0000000000000000000000000000000000000000..13700a4edbfc55ddbec58e0565db6891c81807ff GIT binary patch literal 115281 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

fCalV30FH_%lXKp=e8V&(a~ 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%0DwPA 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 -c ` + + The graph is relative to reference: if we can't align on it, we don't put it in graph + + L parameter lowered makes minigraph much slower and yield issues + + Higher L parameters can help align more diverging sequences ++ Minigraph-Cactus (MGC) + + It is possible to give a guide tree + + High level SV graph from MG + + This graph is used as backbone + + Put something as 'reference': this sequence won't be clipped nor cycled ++ PanGenome Graph Builder (PGGB) + + Curate data before to disassemble chromosomes (tutorials available, where?) + + Huge possibilities: how to cluster chromosomes that are close together? + + Use of `wfmash` for pairwise all-vs-all alignment + + For graph induction: `seqwish` + + Smoothing with `smoothxg` + + May add paths that are not even describing a genome? + + Notion of consensus path elaborated [here](https://github.com/pangenome/smoothxg/issues/37) + + Keeps a consensus and destroys some paths that does not follow + + From the author: + + Many things should be removed + + As of now, they don't even use it internally + + Output of seqwish: should be default output but very large file + + Problem: algorithms like stochastic gradient descent on multi-thread implies that 'seeds' are not fixed: we can have different graphs from the same data + ![[Pasted image 20240115144532.png]] + + Post process with `gfaffix` and `odgi` + +Cycles are a problem for future usage of graphs. Implement a tool to 'linearize' a graph? \ No newline at end of file diff --git a/content/_publications/A draft human pangenome reference.md b/content/_publications/A draft human pangenome reference.md new file mode 100644 index 0000000000000..a20aca16f538e --- /dev/null +++ b/content/_publications/A draft human pangenome reference.md @@ -0,0 +1,3 @@ +URL: https://www.nature.com/articles/s41586-023-05896-x + +Here the Human Pangenome Reference Consortium presents a first draft of the human pangenome reference. The pangenome contains 47 phased, diploid assemblies from a cohort of genetically diverse individuals1 . These assemblies cover more than 99% of the expected sequence in each genome and are more than 99% accurate at the structural and base pair levels. Based on alignments of the assemblies, we generate a draft pangenome that captures known variants and haplotypes and reveals new alleles at structurally complex loci. We also add 119 million base pairs of euchromatic polymorphic sequences and 1,115 gene duplications relative to the existing reference GRCh38. Roughly 90 million of the additional base pairs are derived from structural variation. Using our draft pangenome to analyse short-read data reduced small variant discovery errors by 34% and increased the number of structural variants detected per haplotype by 104% compared with GRCh38-based workflows, which enabled the typing of the vast majority of structural variant alleles per sample. \ No newline at end of file diff --git a/content/_publications/Building pangenome graphs.md b/content/_publications/Building pangenome graphs.md new file mode 100644 index 0000000000000..13b4f1f8c6135 --- /dev/null +++ b/content/_publications/Building pangenome graphs.md @@ -0,0 +1,3 @@ +URL: https://www.biorxiv.org/content/10.1101/2023.04.05.535718v1 + +Pangenome graphs can represent all variation between multiple genomes, but existing methods for constructing them are biased due to reference-guided approaches. In response, we have developed PanGenome Graph Builder (PGGB), a reference-free pipeline for constructing unbi-ased pangenome graphs. PGGB uses all-to-all whole-genome alignments and learned graph embeddings to build and iteratively refine a model in which we can identify variation, measure conservation, detect recombination events, and infer phylogenetic relationships. \ No newline at end of file diff --git a/content/_publications/Cactus - Algorithms for genome multiple sequence alignment.md b/content/_publications/Cactus - Algorithms for genome multiple sequence alignment.md new file mode 100644 index 0000000000000..a449f24fe1193 --- /dev/null +++ b/content/_publications/Cactus - Algorithms for genome multiple sequence alignment.md @@ -0,0 +1,3 @@ +DOI : https://doi.org/10.1101%2Fgr.123356.111 + +Much attention has been given to the problem of creating reliable multiple sequence alignments in a model incorporating substitutions, insertions, and deletions. Far less attention has been paid to the problem of optimizing alignments in the presence of more general rearrangement and copy number variation. Using Cactus graphs, recently introduced for representing sequence alignments, we describe two complementary algorithms for creating genomic alignments. We have implemented these algorithms in the new “Cactus” alignment program. We test Cactus using the Evolver genome evolution simulator, a comprehensive new tool for simulation, and show using these and existing simulations that Cactus significantly outperforms all of its peers. Finally, we make an empirical assessment of Cactus's ability to properly align genes and find interesting cases of intra-gene duplication within the primates. \ No newline at end of file diff --git a/content/_publications/Cactus Graphs for Genome Comparisons.md b/content/_publications/Cactus Graphs for Genome Comparisons.md new file mode 100644 index 0000000000000..bf6305f114411 --- /dev/null +++ b/content/_publications/Cactus Graphs for Genome Comparisons.md @@ -0,0 +1,8 @@ +DOI: 10.1089/cmb.2010.0252 + +We introduce a data structure, analysis, and visualization scheme called a cactus graph for +comparing sets of related genomes. In common with multi-break point graphs and A-Bruijn +graphs, cactus graphs can represent duplications and general genomic rearrangements, but +additionally, they naturally decompose the common substructures in a set of related genomes +into a hierarchy of chains that can be visualized as two-dimensional multiple alignments and +nets that can be visualized in circular genome plots. \ No newline at end of file diff --git a/content/_publications/Construction and representation of human pangenome graphs.md b/content/_publications/Construction and representation of human pangenome graphs.md new file mode 100644 index 0000000000000..61948a4bd6b2c --- /dev/null +++ b/content/_publications/Construction and representation of human pangenome graphs.md @@ -0,0 +1,3 @@ +URL: https://pasteur.hal.science/pasteur-04126278/ + +As a single reference genome cannot possibly represent all the variation present across human individuals, pangenome graphs have been introduced to incorporate population diversity within a wide range of genomic analyses. Several data structures have been proposed for representing collections of genomes as pangenomes, in particular graphs. In this work we collect all publicly available high-quality human haplotypes and constructed the largest human pangenome graphs to date, incorporating 52 individuals in addition to two synthetic references (CHM13 and GRCh38). We build variation graphs and de Bruijn graphs of this collection using five of the state-of-the-art tools: Bifrost , mdbg , Minigraph , Minigraph-Cactus and pggb . We examine differences in the way each of these tools represents variations between input sequences, both in terms of overall graph structure and representation of specific genetic loci. This work sheds light on key differences between pangenome graph representations, informing end-users on how to select the most appropriate graph type for their application. \ No newline at end of file diff --git a/content/_publications/Distance indexing and seed clustering in sequence graphs.md b/content/_publications/Distance indexing and seed clustering in sequence graphs.md new file mode 100644 index 0000000000000..7298b55a22b01 --- /dev/null +++ b/content/_publications/Distance indexing and seed clustering in sequence graphs.md @@ -0,0 +1,12 @@ +URL: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7355256/pdf/btaa446.pdf + +Motivation: Graph representations of genomes are capable of expressing more genetic variation and can therefore +better represent a population than standard linear genomes. However, due to the greater complexity of genome +graphs relative to linear genomes, some functions that are trivial on linear genomes become much more difficult in +genome graphs. Calculating distance is one such function that is simple in a linear genome but complicated in a +graph context. In read mapping algorithms such distance calculations are fundamental to determining if seed align- +ments could belong to the same mapping. +Results: We have developed an algorithm for quickly calculating the minimum distance between positions on a se- +quence graph using a minimum distance index. We have also developed an algorithm that uses the distance index +to cluster seeds on a graph. We demonstrate that our implementations of these algorithms are efficient and practical +to use for a new generation of mapping algorithms based upon genome graphs. \ No newline at end of file diff --git a/content/_publications/GBZ file format for pangenome graphs.md b/content/_publications/GBZ file format for pangenome graphs.md new file mode 100644 index 0000000000000..aedc7690bbbaf --- /dev/null +++ b/content/_publications/GBZ file format for pangenome graphs.md @@ -0,0 +1,4 @@ +URL: https://pubmed.ncbi.nlm.nih.gov/36179091/ + +**Motivation:** Pangenome graphs representing aligned genome assemblies are being shared in the text-based Graphical Fragment Assembly format. As the number of assemblies grows, there is a need for a file format that can store the highly repetitive data space efficiently. +**Results:** We propose the GBZ file format based on data structures used in the Giraffe short-read aligner. The format provides good compression, and the files can be efficiently loaded into in-memory data structures. We provide compression and decompression tools and libraries for using GBZ graphs, and we show that they can be efficiently used on a variety of systems. \ No newline at end of file diff --git a/content/_publications/Gap-Sensitive Colinear Chaining Algorithms for Acyclic Pangenome Graphs.md b/content/_publications/Gap-Sensitive Colinear Chaining Algorithms for Acyclic Pangenome Graphs.md new file mode 100644 index 0000000000000..2dcf4080f91af --- /dev/null +++ b/content/_publications/Gap-Sensitive Colinear Chaining Algorithms for Acyclic Pangenome Graphs.md @@ -0,0 +1,3 @@ +URL: https://www.liebertpub.com/doi/10.1089/cmb.2023.0186 + +A pangenome graph can serve as a better reference for genomic studies because it allows a compact representation of multiple genomes within a species. Aligning sequences to a graph is critical for pangenome-based resequencing. The seed-chain-extend heuristic works by finding short exact matches between a sequence and a graph. In this heuristic, colinear chaining helps identify a good cluster of exact matches that can be combined to form an alignment. Colinear chaining algorithms have been extensively studied for aligning two sequences with various gap costs, including linear, concave, and convex cost functions. However, extending these algorithms for sequence-to-graph alignment presents significant challenges. Recently, Makinen et al. introduced a sparse dynamic programming framework that exploits the small path cover property of acyclic pangenome graphs, enabling efficient chaining. However, this framework does not consider gap costs, limiting its practical effectiveness. We address this limitation by developing novel problem formulations and provably good chaining algorithms that support a variety of gap cost functions. These functions are carefully designed to enable fast chaining algorithms whose time requirements are parameterized in terms of the size of the minimum path cover. Through an empirical evaluation, we demonstrate the superior performance of our algorithm compared with existing aligners. When mapping simulated long reads to a pangenome graph comprising 95 human haplotypes, we achieved 98.7% precision while leaving <2% of reads unmapped. \ No newline at end of file diff --git a/content/_publications/Movi - a fast and cache-efficient full-text pangenome index.md b/content/_publications/Movi - a fast and cache-efficient full-text pangenome index.md new file mode 100644 index 0000000000000..d4112e1db0552 --- /dev/null +++ b/content/_publications/Movi - a fast and cache-efficient full-text pangenome index.md @@ -0,0 +1,3 @@ +URL : https://www.biorxiv.org/content/10.1101/2023.11.04.565615v1.full + +Efficient pangenome indexes are promising tools for many applications, including rapid classification of nanopore sequencing reads. Recently, a compressed-index data structure called the “move structure” was proposed as an alternative to other BWT-based indexes like the FM index and r-index. The move structure uniquely achieves both O(r) space and O(1)-time queries, where r is the number of runs in the pangenome BWT. We implemented Movi, an efficient tool for building and querying move-structure pangenome indexes. While the size of the Movi’s index is larger than the r-index, it scales at a smaller rate for pangenome references, as its size is exactly proportional to r, the number of runs in the BWT of the reference. Movi can compute sophisticated matching queries needed for classification – such as pseudo-matching lengths – at least ten times faster than the fastest available methods. Movi achieves this speed by leveraging the move structure’s strong locality of reference, incurring close to the minimum possible number of cache misses for queries against large pangenomes. Movi’s fast constant-time query loop makes it well suited to real-time applications like adaptive sampling for nanopore sequencing, where decisions must be made in a small and predictable time interval. \ No newline at end of file diff --git a/content/_publications/Pangenome graph construction from genome alignments with Minigraph-Cactus.md b/content/_publications/Pangenome graph construction from genome alignments with Minigraph-Cactus.md new file mode 100644 index 0000000000000..66c19e92eb0f4 --- /dev/null +++ b/content/_publications/Pangenome graph construction from genome alignments with Minigraph-Cactus.md @@ -0,0 +1,3 @@ +URL: https://www.nature.com/articles/s41587-023-01793-w + +Pangenome references address biases of reference genomes by storing a representative set of diverse haplotypes and their alignment, usually as a graph. Alternate alleles determined by variant callers can be used to construct pangenome graphs, but advances in long-read sequencing are leading to widely available, high-quality phased assemblies. Constructing a pangenome graph directly from assemblies, as opposed to variant calls, leverages the graph’s ability to represent variation at different scales. Here we present the Minigraph-Cactus pangenome pipeline, which creates pangenomes directly from whole-genome alignments, and demonstrate its ability to scale to 90 human haplotypes from the Human Pangenome Reference Consortium. The method builds graphs containing all forms of genetic variation while allowing use of current mapping and genotyping tools. We measure the effect of the quality and completeness of reference genomes used for analysis within the pangenomes and show that using the CHM13 reference from the Telomere-to-Telomere Consortium improves the accuracy of our methods. We also demonstrate construction of a _Drosophila melanogaster_ pangenome. \ No newline at end of file diff --git a/content/_publications/Progressive Cactus is a multiple-genome aligner for the thousand-genome era.md b/content/_publications/Progressive Cactus is a multiple-genome aligner for the thousand-genome era.md new file mode 100644 index 0000000000000..55207b862b9fb --- /dev/null +++ b/content/_publications/Progressive Cactus is a multiple-genome aligner for the thousand-genome era.md @@ -0,0 +1,3 @@ +DOI: https://www.nature.com/articles/s41586-020-2871-y + +New genome assemblies have been arriving at a rapidly increasing pace, thanks to decreases in sequencing costs and improvements in third-generation sequencing technologies[1](https://www.nature.com/articles/s41586-020-2871-y#ref-CR1 "Eid, J. et al. Real-time DNA sequencing from single polymerase molecules. Science 323, 133–138 (2009)."),[2](https://www.nature.com/articles/s41586-020-2871-y#ref-CR2 "Weisenfeld, N. I., Kumar, V., Shah, P., Church, D. M. & Jaffe, D. B. Direct determination of diploid genome sequences. Genome Res. 27, 757–767 (2017)."),[3](https://www.nature.com/articles/s41586-020-2871-y#ref-CR3 "Jain, M., Olsen, H. E., Paten, B. & Akeson, M. The Oxford Nanopore MinION: delivery of nanopore sequencing to the genomics community. Genome Biol. 17, 239 (2016)."). For example, the number of vertebrate genome assemblies currently in the NCBI (National Center for Biotechnology Information) database[4](https://www.nature.com/articles/s41586-020-2871-y#ref-CR4 "Kitts, P. A. et al. Assembly: a resource for assembled genomes at NCBI. Nucleic Acids Res. 44 (D1), D73–D80 (2016).") increased by more than 50% to 1,485 assemblies in the year from July 2018 to July 2019. In addition to this influx of assemblies from different species, new human de novo assemblies[5](https://www.nature.com/articles/s41586-020-2871-y#ref-CR5 "Jain, M. et al. Nanopore sequencing and assembly of a human genome with ultra-long reads. Nat. Biotechnol. 36, 338–345 (2018).") are being produced, which enable the analysis of not only small polymorphisms, but also complex, large-scale structural differences between human individuals and haplotypes. This coming era and its unprecedented amount of data offer the opportunity to uncover many insights into genome evolution but also present challenges in how to adapt current analysis methods to meet the increased scale. Cactus[6](https://www.nature.com/articles/s41586-020-2871-y#ref-CR6 "Paten, B. et al. Cactus: algorithms for genome multiple sequence alignment. Genome Res. 21, 1512–1528 (2011)."), a reference-free multiple genome alignment program, has been shown to be highly accurate, but the existing implementation scales poorly with increasing numbers of genomes, and struggles in regions of highly duplicated sequences. Here we describe progressive extensions to Cactus to create Progressive Cactus, which enables the reference-free alignment of tens to thousands of large vertebrate genomes while maintaining high alignment quality. We describe results from an alignment of more than 600 amniote genomes, which is to our knowledge the largest multiple vertebrate genome alignment created so far. \ No newline at end of file diff --git a/content/Publications/Publications.canvas b/content/_publications/Publications.canvas similarity index 70% rename from content/Publications/Publications.canvas rename to content/_publications/Publications.canvas index e49bc630fcb22..d3626c3825a9d 100644 --- a/content/Publications/Publications.canvas +++ b/content/_publications/Publications.canvas @@ -2,7 +2,6 @@ "nodes":[ {"id":"9ee4e8e1010c6b03","type":"text","text":"Permet de subdiviser le problème en sous-problèmes indépendants","x":1400,"y":-140,"width":400,"height":70}, {"id":"167906313c410a7c","type":"text","text":"Depuis n'importe quel noeud du graphe, cette propriété permet de définir une structure d'arbre hiérarchique récursive.","x":1400,"y":-380,"width":400,"height":100}, - {"id":"58bad2b9c05a7f76","type":"text","text":"# Cactus Graphs for Genome Comparisons\nDOI: 10.1089/cmb.2010.0252\n\nWe introduce a data structure, analysis, and visualization scheme called a cactus graph for\ncomparing sets of related genomes. In common with multi-break point graphs and A-Bruijn\ngraphs, cactus graphs can represent duplications and general genomic rearrangements, but\nadditionally, they naturally decompose the common substructures in a set of related genomes\ninto a hierarchy of chains that can be visualized as two-dimensional multiple alignments and\nnets that can be visualized in circular genome plots.","x":-870,"y":-1380,"width":780,"height":300,"color":"4"}, {"id":"919383e2a232b1fe","type":"text","text":"Break-point graphs, multi-breakpoint graphs, A-Brujin graphs","x":680,"y":-1500,"width":555,"height":60}, {"id":"a6826d2c452750ad","type":"text","text":"Souvent NP difficile pour 3 génomes ou plus","x":680,"y":-1410,"width":555,"height":50}, {"id":"884872dc5076dca6","type":"text","text":"Préalablement, la notion d'intervalles conservés au sein de set de permutations signées a été montrée, et il a été montré que ces intervalles pouvaient à la fois être imbriqués et organisés en séquences. Cela permettait à la structure d'avoir une forme semblable à un arbre, efficace pour le calcul comme le stockage.","x":80,"y":-1290,"width":440,"height":210}, @@ -16,7 +15,6 @@ {"id":"66a9ce421a4c5ec9","type":"text","text":"Alignement multi-séquence peut être représenté sous forme de matrice ou de DAGs, mais les réarrangements à grande échelle mettent à mal ces approches.","x":80,"y":-1440,"width":435,"height":120}, {"id":"acbc449c2d39d522","type":"text","text":"Un *thread* est un chemin d'*adjacencies* et segments alternés connectés par des *caps* qui est encadré par des *adjacencies* connectées à des *caps*","x":604,"y":-1050,"width":460,"height":120}, {"id":"1e1e30ad4bcc8914","type":"text","text":"Un *net* est un graphe où tous les noeuds sont des *end* et chaque arête représente un set d'adjacences entre les deux *caps* qu'il connecte","x":1064,"y":-900,"width":405,"height":120}, - {"id":"53c74e047c34032d","type":"text","text":"Papier très clair sur les définitions, nécessaire pour comprendre le suivant","x":-900,"y":-1440,"width":370,"height":80,"color":"3"}, {"id":"3aba27866e336e46","type":"text","text":"Dense et difficile à interpréter, les arêtes sont des géodésiques qui traversent les noeuds","x":1592,"y":-610,"width":360,"height":110}, {"id":"1041d25cf9b9250b","type":"text","text":"Peuvent être décomposés en composantes plus petites","x":1592,"y":-490,"width":360,"height":60}, {"id":"c8d5f84f9751bd4c","type":"file","file":"_imgs/net_chains_threads.jpg","x":1500,"y":-1026,"width":400,"height":391}, @@ -69,12 +67,7 @@ {"id":"c7e28ab1b6d1dfff","type":"text","text":"Une chaîne (cyclique) est une séquence cyclique de *chain pairs* dans le même cycle dans le graphe cactus et ordonnés dans ce cycle","x":-1337,"y":2560,"width":425,"height":140}, {"id":"c54f8b5a1531dfe0","type":"text","text":"Une séquence maximum de *bridge pairs* connectés par des noeuds incidents de degré 2 est une *(acyclic) chain*","x":-1712,"y":2668,"width":335,"height":120}, {"id":"cdfed778307857a7","type":"text","text":"Une paire distincte de noeuds dans le graphe bidirigé sont une *bridge pair* si ils projettent sur le même noeud et que leurs deux arêtes noires incidentes sont des *bridges*","x":-1712,"y":2478,"width":335,"height":164}, - {"id":"bd2ac0b855e308f1","type":"text","text":"# Progressive Cactus is a multiple-genome aligner for the thousand-genome era\nDOI: https://www.nature.com/articles/s41586-020-2871-y\n\nNew genome assemblies have been arriving at a rapidly increasing pace, thanks to decreases in sequencing costs and improvements in third-generation sequencing technologies[1](https://www.nature.com/articles/s41586-020-2871-y#ref-CR1 \"Eid, J. et al. Real-time DNA sequencing from single polymerase molecules. Science 323, 133–138 (2009).\"),[2](https://www.nature.com/articles/s41586-020-2871-y#ref-CR2 \"Weisenfeld, N. I., Kumar, V., Shah, P., Church, D. M. & Jaffe, D. B. Direct determination of diploid genome sequences. Genome Res. 27, 757–767 (2017).\"),[3](https://www.nature.com/articles/s41586-020-2871-y#ref-CR3 \"Jain, M., Olsen, H. E., Paten, B. & Akeson, M. The Oxford Nanopore MinION: delivery of nanopore sequencing to the genomics community. Genome Biol. 17, 239 (2016).\"). For example, the number of vertebrate genome assemblies currently in the NCBI (National Center for Biotechnology Information) database[4](https://www.nature.com/articles/s41586-020-2871-y#ref-CR4 \"Kitts, P. A. et al. Assembly: a resource for assembled genomes at NCBI. Nucleic Acids Res. 44 (D1), D73–D80 (2016).\") increased by more than 50% to 1,485 assemblies in the year from July 2018 to July 2019. In addition to this influx of assemblies from different species, new human de novo assemblies[5](https://www.nature.com/articles/s41586-020-2871-y#ref-CR5 \"Jain, M. et al. Nanopore sequencing and assembly of a human genome with ultra-long reads. Nat. Biotechnol. 36, 338–345 (2018).\") are being produced, which enable the analysis of not only small polymorphisms, but also complex, large-scale structural differences between human individuals and haplotypes. This coming era and its unprecedented amount of data offer the opportunity to uncover many insights into genome evolution but also present challenges in how to adapt current analysis methods to meet the increased scale. Cactus[6](https://www.nature.com/articles/s41586-020-2871-y#ref-CR6 \"Paten, B. et al. Cactus: algorithms for genome multiple sequence alignment. Genome Res. 21, 1512–1528 (2011).\"), a reference-free multiple genome alignment program, has been shown to be highly accurate, but the existing implementation scales poorly with increasing numbers of genomes, and struggles in regions of highly duplicated sequences. Here we describe progressive extensions to Cactus to create Progressive Cactus, which enables the reference-free alignment of tens to thousands of large vertebrate genomes while maintaining high alignment quality. We describe results from an alignment of more than 600 amniote genomes, which is to our knowledge the largest multiple vertebrate genome alignment created so far.","x":-3180,"y":2920,"width":1188,"height":417,"color":"4"}, {"id":"800d68620586fe43","type":"text","text":"Ajout d'un *input guide tree* qui permet de divisier le problème général en une série de sous-problèmes","x":-2450,"y":3680,"width":425,"height":87,"color":"1"}, - {"id":"464d3a859a82198b","type":"text","text":"# Cactus: Algorithms for genome multiple sequence alignment\nDOI : https://doi.org/10.1101%2Fgr.123356.111\n\nMuch attention has been given to the problem of creating reliable multiple sequence alignments in a model incorporating substitutions, insertions, and deletions. Far less attention has been paid to the problem of optimizing alignments in the presence of more general rearrangement and copy number variation. Using Cactus graphs, recently introduced for representing sequence alignments, we describe two complementary algorithms for creating genomic alignments. We have implemented these algorithms in the new “Cactus” alignment program. We test Cactus using the Evolver genome evolution simulator, a comprehensive new tool for simulation, and show using these and existing simulations that Cactus significantly outperforms all of its peers. Finally, we make an empirical assessment of Cactus's ability to properly align genes and find interesting cases of intra-gene duplication within the primates.","x":-1151,"y":-277,"width":920,"height":360,"color":"4"}, - {"id":"c17ec7ef81f35b4b","type":"text","text":"# Superbubbles, ultrabubbles and cacti\nURL : https://pubmed.ncbi.nlm.nih.gov/29461862/\n\nA superbubble is a type of directed acyclic subgraph with single distinct source and sink vertices. In genome assembly and genetics, the possible paths through a superbubble can be considered to represent the set of possible sequences at a location in a genome. Bidirected and biedged graphs are a generalization of digraphs that are increasingly being used to more fully represent genome assembly and variation problems. In this study, we define snarls and ultrabubbles, generalizations of superbubbles for bidirected and biedged graphs, and give an efficient algorithm for the detection of these more general structures. Key to this algorithm is the cactus graph, which, we show, encodes the nested decomposition of a graph into snarls and ultrabubbles within its structure. We propose and demonstrate empirically that this decomposition on bidirected and biedged graphs solves a fundamental problem by defining genetic sites for any collection of genomic variations, including complex structural variations, without need for any single reference genome coordinate system. Further, the nesting of the decomposition gives a natural way to describe and model variations contained within large variations, a case not currently dealt with by existing formats (e.g., variant cell format (VCF)).","x":-1420,"y":1314,"width":1220,"height":360,"color":"4"}, - {"id":"8392d7487ecced04","type":"text","text":"cacti jamais défini ?","x":-441,"y":1284,"width":250,"height":60,"color":"3"}, - {"id":"8ff05f3c7e0b7038","type":"text","text":"# Pangenome graph construction from genome alignments with Minigraph-Cactus\nURL: https://www.nature.com/articles/s41587-023-01793-w\n\nPangenome references address biases of reference genomes by storing a representative set of diverse haplotypes and their alignment, usually as a graph. Alternate alleles determined by variant callers can be used to construct pangenome graphs, but advances in long-read sequencing are leading to widely available, high-quality phased assemblies. Constructing a pangenome graph directly from assemblies, as opposed to variant calls, leverages the graph’s ability to represent variation at different scales. Here we present the Minigraph-Cactus pangenome pipeline, which creates pangenomes directly from whole-genome alignments, and demonstrate its ability to scale to 90 human haplotypes from the Human Pangenome Reference Consortium. The method builds graphs containing all forms of genetic variation while allowing use of current mapping and genotyping tools. We measure the effect of the quality and completeness of reference genomes used for analysis within the pangenomes and show that using the CHM13 reference from the Telomere-to-Telomere Consortium improves the accuracy of our methods. We also demonstrate construction of a _Drosophila melanogaster_ pangenome.","x":-5520,"y":4600,"width":1200,"height":360,"color":"4"}, {"id":"799f68e892314b6b","type":"text","text":"Utilise des assemblies ancestrales reconstruites afin de combiner les sous-alignements","x":-1932,"y":3707,"width":290,"height":120}, {"id":"a4cd608c024b8594","type":"text","text":"2 à 5 génomes par sous-alignement","x":-1747,"y":3919,"width":250,"height":60}, {"id":"6dc45fab5aead6a1","type":"text","text":"découpage récursif selon le guide tree","x":-2066,"y":3919,"width":250,"height":60}, @@ -86,13 +79,11 @@ {"id":"0607cb8ec901ea4e","type":"text","text":"**Impact de l'input guide tree**","x":-2620,"y":4069,"width":275,"height":60}, {"id":"f4d55f5538722fc0","type":"text","text":"Non négligeable si l'arbre est incorrect ou inconnu","x":-2780,"y":4270,"width":263,"height":100}, {"id":"b67aca38385cc0e2","type":"text","text":"Effet réduit par l'ajout de la notion d'extragroupe, voire de plusieurs extragroupes","x":-2482,"y":4270,"width":337,"height":100}, - {"id":"15e35fa2d6d51a3d","type":"text","text":"# Gap-Sensitive Colinear Chaining Algorithms for Acyclic Pangenome Graphs\nURL: https://www.liebertpub.com/doi/10.1089/cmb.2023.0186\n\nA pangenome graph can serve as a better reference for genomic studies because it allows a compact representation of multiple genomes within a species. Aligning sequences to a graph is critical for pangenome-based resequencing. The seed-chain-extend heuristic works by finding short exact matches between a sequence and a graph. In this heuristic, colinear chaining helps identify a good cluster of exact matches that can be combined to form an alignment. Colinear chaining algorithms have been extensively studied for aligning two sequences with various gap costs, including linear, concave, and convex cost functions. However, extending these algorithms for sequence-to-graph alignment presents significant challenges. Recently, Makinen et al. introduced a sparse dynamic programming framework that exploits the small path cover property of acyclic pangenome graphs, enabling efficient chaining. However, this framework does not consider gap costs, limiting its practical effectiveness. We address this limitation by developing novel problem formulations and provably good chaining algorithms that support a variety of gap cost functions. These functions are carefully designed to enable fast chaining algorithms whose time requirements are parameterized in terms of the size of the minimum path cover. Through an empirical evaluation, we demonstrate the superior performance of our algorithm compared with existing aligners. When mapping simulated long reads to a pangenome graph comprising 95 human haplotypes, we achieved 98.7% precision while leaving <2% of reads unmapped.","x":-4080,"y":4230,"width":1240,"height":420,"color":"4"}, {"id":"ccad44d8e99b297f","type":"text","text":"Comparaison contre :\n+ minigraph\n+ graphaligner\n+ graphchainer\n+ (minimap2)","x":-3818,"y":4820,"width":240,"height":180}, {"id":"473c33069dc9b5e1","type":"text","text":"Prend en compte des fonctions de gap lors de l'alignement de séquences sur un pangénome au format d'un DAG","x":-3460,"y":4820,"width":422,"height":100,"color":"1"}, {"id":"b857d70c30b2a368","type":"text","text":"Du coup, applications ? Parce que les graphes MGC ou PGGB ne sont pas des DAG","x":-3464,"y":5000,"width":430,"height":80,"color":"2"}, {"id":"4b073f56cef38de7","type":"text","text":"Peut-être nécessité d'un outil qui transforme des pangenome graphs en DAGs ?","x":-2988,"y":4980,"width":297,"height":120,"color":"5"}, {"id":"2cd0774814970b9a","type":"text","text":"binary tree qui n'a pas besoin d'être complètement résolu","x":-2362,"y":3949,"width":250,"height":102}, - {"id":"8eb4486aa40f0ee0","type":"text","text":"Nouveau papier en préparation \"Haplotype-aware Sequence-to-Graph Alignment\"","x":-3265,"y":4160,"width":454,"height":90,"color":"3"}, {"id":"f51cc8b5120d57bd","type":"text","text":"Des *chain pairs* contigues dans une *chain* partagent deux côtés opposés d'une même arête noire","x":-1294,"y":2738,"width":340,"height":100}, {"id":"654e9a95fdb293f5","type":"file","file":"_imgs/superbubbles.jpg","x":-540,"y":1724,"width":400,"height":179}, {"id":"837c14414c238af7","type":"text","text":"Strictement disjointes","x":-644,"y":2180,"width":250,"height":60}, @@ -100,7 +91,6 @@ {"id":"129f89296035d1b3","type":"text","text":"Strictement imbriquées","x":-641,"y":2000,"width":245,"height":65}, {"id":"e4eeaa710c4ce695","type":"text","text":"Propriétés d'imbrication strictes","x":-679,"y":2090,"width":320,"height":60}, {"id":"9e629313e68e4600","type":"text","text":"Format HAL et HAL toolkit :\n+ format d'alignement gardant cette notion d'arbre\n+ format qui peut être modifié ; ajout ou retrait de génomes sans avoir à tout recalculer depuis zéro","x":-1377,"y":2876,"width":356,"height":209}, - {"id":"af918cdf44aa146d","type":"text","text":"# Distance indexing and seed clustering in sequence graphs\nURL: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7355256/pdf/btaa446.pdf\n\nMotivation: Graph representations of genomes are capable of expressing more genetic variation and can therefore\nbetter represent a population than standard linear genomes. However, due to the greater complexity of genome\ngraphs relative to linear genomes, some functions that are trivial on linear genomes become much more difficult in\ngenome graphs. Calculating distance is one such function that is simple in a linear genome but complicated in a\ngraph context. In read mapping algorithms such distance calculations are fundamental to determining if seed align-\nments could belong to the same mapping.\nResults: We have developed an algorithm for quickly calculating the minimum distance between positions on a se-\nquence graph using a minimum distance index. We have also developed an algorithm that uses the distance index\nto cluster seeds on a graph. We demonstrate that our implementations of these algorithms are efficient and practical\nto use for a new generation of mapping algorithms based upon genome graphs.","x":-1171,"y":3140,"width":1060,"height":400,"color":"4"}, {"id":"c4e7f42fad8cc6dd","type":"text","text":"### Ultrabubble\n\n+ Une superbubble dans un digraphe est une ultrabubble dans le *biedged graph* équivalent. \n+ Une ultrabubble est un snarl si sa composante séparée est acyclique et ne contient pas de *tips*.\n","x":-418,"y":2784,"width":615,"height":185,"color":"1"}, {"id":"a76a161d695d3749","type":"text","text":"### Superbubble\nN'importe quelle paire de noeuds distincts (x,y) dans le graphe forment une superbubble ssi :\n+ y est atteignable depuis x\n+ les noeuds atteignables depuis x sans dépasser y sont identiques aux noeuds atteignables depuis y sans dépasser x\n+ Le sous-graphe obtenu par ce set est acyclique\n+ aucun autre noeud du set ne forme une paire avec x, y ou les 2 qui remplit tous les critères précédents","x":-260,"y":2033,"width":482,"height":370,"color":"1"}, {"id":"3bac4b15a3b76c6d","type":"text","text":"### Snarl\nGénéralisation aux *biedged graphs* : les *snarls* sont des sous-graphes minimaux dont tous les noeus sont connectés au plus par deux arêtes au reste du graphe (2-BEC) \nUn *snarl* dans un biedged graph a ces propriétés :\n+ le retrait des arêtes noires entrant dans x et y déconnectent le graphe, formant une composante séparée\n+ il n'existe pas au sein de l'ensemble de noeuds un noued z tel que {x,z} ou {z,y} satisfait le critère précédent","x":349,"y":2292,"width":595,"height":320,"color":"1"}, @@ -116,11 +106,6 @@ {"id":"b3ab8ceb14f25665","type":"text","text":"Objectif : à partir du snarl tree, trouver une distance minimale entre deux points dans le graphe","x":-573,"y":3670,"width":321,"height":115,"color":"1"}, {"id":"79d85b0031c6ce3f","type":"text","text":"Initialisation avec chaque position dans un cluster séparé, puis aggrégation progressive en suivant le *snarl tree*","x":222,"y":4202,"width":360,"height":120}, {"id":"24a49c27acfb97ef","type":"text","text":"A chaque étape, annotation du cluster avec deux *bondary distance* : les plus courtes distances depuis n'importe laquelle des positions jusqu'aux *boundaries* de la structure","x":174,"y":4396,"width":456,"height":120}, - {"id":"c6fb2f397f3cf773","type":"text","text":"# The design and construction of reference pangenome graphs with minigraph\nURL: https://genomebiology.biomedcentral.com/articles/10.1186/s13059-020-02168-z\n\nThe recent advances in sequencing technologies enable the assembly of individual genomes to the quality of the reference genome. How to integrate multiple genomes from the same species and make the integrated representation accessible to biologists remains an open challenge. Here, we propose a graph-based data model and associated formats to represent multiple genomes while preserving the coordinate of the linear reference genome. We implement our ideas in the minigraph toolkit and demonstrate that we can efficiently construct a pangenome graph and compactly encode tens of thousands of structural variants missing from the current reference genome.","x":-6520,"y":3120,"width":1140,"height":260,"color":"4"}, - {"id":"b6da29614bf625f9","type":"text","text":"# Construction and representation of human pangenome graphs\nURL: https://pasteur.hal.science/pasteur-04126278/\n\nAs a single reference genome cannot possibly represent all the variation present across human individuals, pangenome graphs have been introduced to incorporate population diversity within a wide range of genomic analyses. Several data structures have been proposed for representing collections of genomes as pangenomes, in particular graphs. In this work we collect all publicly available high-quality human haplotypes and constructed the largest human pangenome graphs to date, incorporating 52 individuals in addition to two synthetic references (CHM13 and GRCh38). We build variation graphs and de Bruijn graphs of this collection using five of the state-of-the-art tools: Bifrost , mdbg , Minigraph , Minigraph-Cactus and pggb . We examine differences in the way each of these tools represents variations between input sequences, both in terms of overall graph structure and representation of specific genetic loci. This work sheds light on key differences between pangenome graph representations, informing end-users on how to select the most appropriate graph type for their application.","x":-3631,"y":5510,"width":1170,"height":335,"color":"4"}, - {"id":"959c6871b98e5f24","type":"text","text":"Travail comparatif sur :\n+ Bifrost\n+ mdbg\n+ Minigraph\n+ Minigraph-cactus\n+ PGGB","x":-2345,"y":5480,"width":250,"height":230}, - {"id":"2ad06502c64301be","type":"text","text":"Colored compacted de Brujin graphs (ccdbg)","x":-2002,"y":5535,"width":250,"height":60}, - {"id":"c1747efd88b1391c","type":"text","text":"Graphes de variation","x":-2002,"y":5618,"width":250,"height":60}, {"id":"a07c9f18c29efd3c","type":"text","text":"Continuation de cette définition de **snarls** pour définir la variation","x":-4520,"y":5200,"width":320,"height":80}, {"id":"395da1694bf23728","type":"text","text":"Construction d'un SV graph avec **minigraph**","x":-5280,"y":5240,"width":250,"height":80,"color":"3"}, {"id":"565c2f071796974b","type":"text","text":"Enlever les alignements incomplets et fallacieux correspondant à de coutes chaînes visitées par un grand nombre de séquences","x":-5030,"y":5715,"width":400,"height":130}, @@ -141,17 +126,38 @@ {"id":"992f3cf1e697d0f7","type":"text","text":"Analyse de permutations entre P et Q","x":-4880,"y":1780,"width":260,"height":90}, {"id":"e275bd2463802d6a","type":"text","text":"Décomposition successive des parallélogrammes de projection en modifiant des bits dans P et Q","x":-4880,"y":1895,"width":260,"height":165}, {"id":"416157ccf3ea4181","type":"text","text":"Tant que toutes les Q-runs n'ont pas un poids inférieur à 2d :\n+ On prend la run de poids maximal\n+ On la splitte\n+ On recalcule","x":-4936,"y":2240,"width":372,"height":180}, - {"id":"436955ae04bc294f","type":"text","text":"Méthode pour remplacer la BWT sur des pangénomes","x":-5120,"y":1300,"width":280,"height":80}, {"id":"2e27c8d0f6788a54","type":"text","text":"Ne concerne pas directement les graphes de variation","x":-5105,"y":1417,"width":305,"height":83}, {"id":"496273d96b37d9da","type":"text","text":"BWT indexes : basés sur les suffixes/préfixes des BWT successives à travers une fenêtre de lecture, et les overlaps","x":-5105,"y":1540,"width":340,"height":120}, - {"id":"44132eb33e08274c","type":"text","text":"# Movi: a fast and cache-efficient full-text pangenome index\nURL : https://www.biorxiv.org/content/10.1101/2023.11.04.565615v1.full\n\nEfficient pangenome indexes are promising tools for many applications, including rapid classification of nanopore sequencing reads. Recently, a compressed-index data structure called the “move structure” was proposed as an alternative to other BWT-based indexes like the FM index and r-index. The move structure uniquely achieves both O(r) space and O(1)-time queries, where r is the number of runs in the pangenome BWT. We implemented Movi, an efficient tool for building and querying move-structure pangenome indexes. While the size of the Movi’s index is larger than the r-index, it scales at a smaller rate for pangenome references, as its size is exactly proportional to r, the number of runs in the BWT of the reference. Movi can compute sophisticated matching queries needed for classification – such as pseudo-matching lengths – at least ten times faster than the fastest available methods. Movi achieves this speed by leveraging the move structure’s strong locality of reference, incurring close to the minimum possible number of cache misses for queries against large pangenomes. Movi’s fast constant-time query loop makes it well suited to real-time applications like adaptive sampling for nanopore sequencing, where decisions must be made in a small and predictable time interval.","x":-6300,"y":1417,"width":890,"height":466,"color":"4"}, {"id":"c39f8c609227c924","type":"text","text":"Cela garantit qu'au max 2d scans sont requis pour interroger la structure","x":-4385,"y":2380,"width":370,"height":80}, {"id":"cae77ee78a51c888","type":"text","text":"Quand on le parcourt, on ne saute que quelques lignes","x":-5369,"y":2240,"width":289,"height":80}, - {"id":"40cbd71b2e996b34","type":"text","text":"A discuter le 23 janv.","x":-1440,"y":-1260,"width":250,"height":60} + {"id":"40cbd71b2e996b34","type":"text","text":"A discuter le 23 janv.","x":-1440,"y":-1260,"width":250,"height":60}, + {"id":"b2bd2d86c5838364","type":"file","file":"_publications/Cactus - Algorithms for genome multiple sequence alignment.md","x":-1151,"y":-277,"width":920,"height":360,"color":"4"}, + {"id":"a884c10e4fe8529b","type":"text","text":"> An associated article to this work demonstrated that the pangenomes\npresented here can be losslessly stored using a compressed, binary\nrepresentation of GFA in just 3–6 GB despite representing more than\n282 billion bases of individual sequence, with strongly sublinear scaling\nas new genomes are added","x":-3920,"y":-80,"width":640,"height":160}, + {"id":"3f80ff8608c11f00","type":"file","file":"_publications/Cactus Graphs for Genome Comparisons.md","x":-870,"y":-1380,"width":780,"height":300,"color":"4"}, + {"id":"53c74e047c34032d","type":"text","text":"Papier très clair sur les définitions, nécessaire pour comprendre le suivant","x":-460,"y":-1474,"width":370,"height":80,"color":"3"}, + {"id":"8392d7487ecced04","type":"text","text":"cacti jamais défini ?","x":-450,"y":1240,"width":250,"height":50,"color":"3"}, + {"id":"b24cb341ab94c72b","type":"file","file":"_publications/Superbubbles, ultrabubbles and cacti.md","x":-1420,"y":1314,"width":1220,"height":360,"color":"4"}, + {"id":"8c61cb4632b4c27a","type":"file","file":"_publications/Distance indexing and seed clustering in sequence graphs.md","x":-1171,"y":3140,"width":1060,"height":400,"color":"4"}, + {"id":"d2ffb7b6f7de3712","type":"file","file":"_publications/Progressive Cactus is a multiple-genome aligner for the thousand-genome era.md","x":-3180,"y":2920,"width":1188,"height":417,"color":"4"}, + {"id":"8eb4486aa40f0ee0","type":"text","text":"Nouveau papier en préparation \"Haplotype-aware Sequence-to-Graph Alignment\"","x":-3294,"y":4129,"width":454,"height":90,"color":"3"}, + {"id":"e4df005023f988fe","type":"file","file":"_publications/Gap-Sensitive Colinear Chaining Algorithms for Acyclic Pangenome Graphs.md","x":-4080,"y":4230,"width":1240,"height":420,"color":"4"}, + {"id":"114973e1f73f1e7d","type":"file","file":"_publications/Pangenome graph construction from genome alignments with Minigraph-Cactus.md","x":-5520,"y":4600,"width":1200,"height":360,"color":"4"}, + {"id":"0f72a37b84a47211","type":"file","file":"_publications/The design and construction of reference pangenome graphs with minigraph.md","x":-6520,"y":3120,"width":1140,"height":260,"color":"4"}, + {"id":"2ad06502c64301be","type":"text","text":"Colored compacted de Brujin graphs (ccdbg)","x":-4076,"y":713,"width":250,"height":60}, + {"id":"c1747efd88b1391c","type":"text","text":"Graphes de variation","x":-4076,"y":796,"width":250,"height":60}, + {"id":"a757fd0e1fc5f59e","type":"file","file":"_publications/Movi - a fast and cache-efficient full-text pangenome index.md","x":-6300,"y":1417,"width":890,"height":466,"color":"4"}, + {"id":"d7ea1f197b165c65","type":"file","file":"_publications/Construction and representation of human pangenome graphs.md","x":-5705,"y":688,"width":1170,"height":335,"color":"4"}, + {"id":"436955ae04bc294f","type":"text","text":"Méthode pour remplacer la BWT sur des pangénomes","x":-5220,"y":1710,"width":280,"height":80,"color":"1"}, + {"id":"753b3485207254d3","type":"file","file":"_publications/A draft human pangenome reference.md","x":-5160,"y":-180,"width":1021,"height":360,"color":"4"}, + {"id":"959c6871b98e5f24","type":"text","text":"Travail comparatif sur :\n+ Bifrost\n+ mdbg\n+ Minigraph\n+ Minigraph-cactus\n+ PGGB","x":-4460,"y":741,"width":250,"height":230,"color":"1"}, + {"id":"18ab04ccd8deb09f","type":"file","file":"_publications/GBZ file format for pangenome graphs.md","x":-2860,"y":-160,"width":800,"height":320,"color":"4"}, + {"id":"15e57fcfe67aadc7","type":"file","file":"_publications/Unbiased pangenome graphs.md","x":-9360,"y":1380,"width":1120,"height":380,"color":"4"}, + {"id":"2afff5da76c99aa2","type":"file","file":"_publications/Building pangenome graphs.md","x":-9200,"y":2140,"width":820,"height":400,"color":"4"}, + {"id":"1bd14c47bb5791d4","type":"text","text":"Explications sur l'algorithme `seqwish` qui sert à l'induction du graphe pour PGGB","x":-8080,"y":1440,"width":380,"height":80,"color":"1"} ], "edges":[ {"id":"ebe3edacf1266866","fromNode":"8995e775a8dbba70","fromSide":"right","toNode":"f48a4c7882b18109","toSide":"left"}, - {"id":"e116c9f5f8df0bd3","fromNode":"464d3a859a82198b","fromSide":"right","toNode":"8995e775a8dbba70","toSide":"left"}, + {"id":"e116c9f5f8df0bd3","fromNode":"b2bd2d86c5838364","fromSide":"right","toNode":"8995e775a8dbba70","toSide":"left"}, {"id":"e324d44edbab4147","fromNode":"8995e775a8dbba70","fromSide":"right","toNode":"5a563da47acfed7a","toSide":"left"}, {"id":"308a282ebfe97dfd","fromNode":"5a563da47acfed7a","fromSide":"right","toNode":"167906313c410a7c","toSide":"left"}, {"id":"8446850d8fb10db8","fromNode":"5a563da47acfed7a","fromSide":"right","toNode":"9ee4e8e1010c6b03","toSide":"left","label":"usage en genome MSA"}, @@ -174,19 +180,19 @@ {"id":"bdb6b187915a84b5","fromNode":"a25245bd984a162e","fromSide":"bottom","toNode":"a3f8d96e7aceab99","toSide":"top"}, {"id":"be9cfe85a6403cae","fromNode":"9b12143cbb4118a9","fromSide":"bottom","toNode":"a3f8d96e7aceab99","toSide":"top"}, {"id":"04310ed63502617e","fromNode":"572e1342e4d6b1c1","fromSide":"bottom","toNode":"a3f8d96e7aceab99","toSide":"top"}, - {"id":"1df5f821a8c82727","fromNode":"58bad2b9c05a7f76","fromSide":"bottom","toNode":"464d3a859a82198b","toSide":"top","color":"4"}, + {"id":"1df5f821a8c82727","fromNode":"3f80ff8608c11f00","fromSide":"bottom","toNode":"b2bd2d86c5838364","toSide":"top","color":"4"}, {"id":"ba8b3cf16e17d306","fromNode":"a3f8d96e7aceab99","fromSide":"bottom","toNode":"26b0fd371f64a696","toSide":"top","label":"algorithme CAF"}, {"id":"54bcf6f2d1a8269f","fromNode":"26b0fd371f64a696","fromSide":"bottom","toNode":"48faed08f7460406","toSide":"top","label":"algorithme BAR"}, - {"id":"7018b930bdc7a00c","fromNode":"58bad2b9c05a7f76","fromSide":"right","toNode":"66a9ce421a4c5ec9","toSide":"left"}, + {"id":"7018b930bdc7a00c","fromNode":"3f80ff8608c11f00","fromSide":"right","toNode":"66a9ce421a4c5ec9","toSide":"left"}, {"id":"23fa7e35e87f2d46","fromNode":"66a9ce421a4c5ec9","fromSide":"right","toNode":"919383e2a232b1fe","toSide":"left"}, {"id":"517da59aadc7171a","fromNode":"66a9ce421a4c5ec9","fromSide":"right","toNode":"a6826d2c452750ad","toSide":"left"}, {"id":"61839395d8e382ef","fromNode":"498a6976afcf8582","fromSide":"right","toNode":"9f6fc359db1439ff","toSide":"left"}, {"id":"9ac70617c3094f73","fromNode":"498a6976afcf8582","fromSide":"right","toNode":"3fce6a85e9ce9de2","toSide":"left"}, {"id":"f06a3d85df960a81","fromNode":"884872dc5076dca6","fromSide":"right","toNode":"498a6976afcf8582","toSide":"left"}, - {"id":"14395d7c84d6ce19","fromNode":"58bad2b9c05a7f76","fromSide":"right","toNode":"884872dc5076dca6","toSide":"left"}, - {"id":"893320a8783badc3","fromNode":"58bad2b9c05a7f76","fromSide":"right","toNode":"c73aa01ef3b7754c","toSide":"left"}, - {"id":"18446ccc67e981c7","fromNode":"58bad2b9c05a7f76","fromSide":"right","toNode":"4402546a20b4c968","toSide":"left"}, - {"id":"51047abffbe67d81","fromNode":"58bad2b9c05a7f76","fromSide":"right","toNode":"c5bed1188d635294","toSide":"left"}, + {"id":"14395d7c84d6ce19","fromNode":"3f80ff8608c11f00","fromSide":"right","toNode":"884872dc5076dca6","toSide":"left"}, + {"id":"893320a8783badc3","fromNode":"3f80ff8608c11f00","fromSide":"right","toNode":"c73aa01ef3b7754c","toSide":"left"}, + {"id":"18446ccc67e981c7","fromNode":"3f80ff8608c11f00","fromSide":"right","toNode":"4402546a20b4c968","toSide":"left"}, + {"id":"51047abffbe67d81","fromNode":"3f80ff8608c11f00","fromSide":"right","toNode":"c5bed1188d635294","toSide":"left"}, {"id":"1d4e0409dceb0b87","fromNode":"4402546a20b4c968","fromSide":"right","toNode":"acbc449c2d39d522","toSide":"left"}, {"id":"365e46f84db50434","fromNode":"c73aa01ef3b7754c","fromSide":"right","toNode":"acbc449c2d39d522","toSide":"left"}, {"id":"fbaab3197d5013bb","fromNode":"c5bed1188d635294","fromSide":"right","toNode":"acbc449c2d39d522","toSide":"left"}, @@ -197,21 +203,21 @@ {"id":"cbca79064ccf7eaf","fromNode":"bc6ec2440d65a561","fromSide":"right","toNode":"3aba27866e336e46","toSide":"left"}, {"id":"02d175fedb4107bf","fromNode":"bc6ec2440d65a561","fromSide":"right","toNode":"1041d25cf9b9250b","toSide":"left"}, {"id":"4de01744f4501c27","fromNode":"529fdb5950adb38d","fromSide":"right","toNode":"742daf28a78c57f6","toSide":"left"}, - {"id":"6a2c50bf5897173a","fromNode":"58bad2b9c05a7f76","fromSide":"right","toNode":"529fdb5950adb38d","toSide":"left"}, - {"id":"9a525a749a8f5be9","fromNode":"464d3a859a82198b","fromSide":"right","toNode":"739fec564ad1be89","toSide":"top"}, - {"id":"7abe58ad486ef183","fromNode":"464d3a859a82198b","fromSide":"right","toNode":"1daf2c11f1ccebf0","toSide":"top"}, - {"id":"86a80c283fdcec66","fromNode":"c6fb2f397f3cf773","fromSide":"bottom","toNode":"8ff05f3c7e0b7038","toSide":"top","color":"4"}, - {"id":"ccbf97af47d03a2c","fromNode":"bd2ac0b855e308f1","fromSide":"bottom","toNode":"8ff05f3c7e0b7038","toSide":"top","color":"4"}, - {"id":"54e0ce13d6b7d718","fromNode":"c17ec7ef81f35b4b","fromSide":"right","toNode":"a0820e26c5132c08","toSide":"left"}, + {"id":"6a2c50bf5897173a","fromNode":"3f80ff8608c11f00","fromSide":"right","toNode":"529fdb5950adb38d","toSide":"left"}, + {"id":"9a525a749a8f5be9","fromNode":"b2bd2d86c5838364","fromSide":"right","toNode":"739fec564ad1be89","toSide":"top"}, + {"id":"7abe58ad486ef183","fromNode":"b2bd2d86c5838364","fromSide":"right","toNode":"1daf2c11f1ccebf0","toSide":"top"}, + {"id":"86a80c283fdcec66","fromNode":"0f72a37b84a47211","fromSide":"bottom","toNode":"114973e1f73f1e7d","toSide":"top","color":"4"}, + {"id":"ccbf97af47d03a2c","fromNode":"d2ffb7b6f7de3712","fromSide":"bottom","toNode":"114973e1f73f1e7d","toSide":"top","color":"4"}, + {"id":"54e0ce13d6b7d718","fromNode":"b24cb341ab94c72b","fromSide":"right","toNode":"a0820e26c5132c08","toSide":"left"}, {"id":"2889826312059da4","fromNode":"a0820e26c5132c08","fromSide":"right","toNode":"c6d832679d9cf6c2","toSide":"left"}, {"id":"e3c31dadb0a910dd","fromNode":"a0820e26c5132c08","fromSide":"right","toNode":"99944f7644f8775f","toSide":"left"}, {"id":"2b92a6afb54af1ed","fromNode":"a0820e26c5132c08","fromSide":"bottom","toNode":"6a40b6d09c5dcd37","toSide":"left"}, - {"id":"2688c91e67850790","fromNode":"c17ec7ef81f35b4b","fromSide":"right","toNode":"0d67d9ec7a8efcab","toSide":"left"}, + {"id":"2688c91e67850790","fromNode":"b24cb341ab94c72b","fromSide":"right","toNode":"0d67d9ec7a8efcab","toSide":"left"}, {"id":"9e8a908012a6bdd3","fromNode":"0d67d9ec7a8efcab","fromSide":"right","toNode":"b09229bf8670d741","toSide":"left"}, - {"id":"9fc422907c5f9eb0","fromNode":"c17ec7ef81f35b4b","fromSide":"right","toNode":"0ffdd366b904f707","toSide":"left"}, - {"id":"0b947d400cd98ec2","fromNode":"c17ec7ef81f35b4b","fromSide":"right","toNode":"3a1f12b39c04853b","toSide":"left"}, + {"id":"9fc422907c5f9eb0","fromNode":"b24cb341ab94c72b","fromSide":"right","toNode":"0ffdd366b904f707","toSide":"left"}, + {"id":"0b947d400cd98ec2","fromNode":"b24cb341ab94c72b","fromSide":"right","toNode":"3a1f12b39c04853b","toSide":"left"}, {"id":"c346218255b123fb","fromNode":"3a1f12b39c04853b","fromSide":"right","toNode":"9707d09e99a83455","toSide":"left"}, - {"id":"ef8658dfc14ed38f","fromNode":"c17ec7ef81f35b4b","fromSide":"right","toNode":"a76a161d695d3749","toSide":"top"}, + {"id":"ef8658dfc14ed38f","fromNode":"b24cb341ab94c72b","fromSide":"right","toNode":"a76a161d695d3749","toSide":"top"}, {"id":"a0d22ab405871e8d","fromNode":"0ffdd366b904f707","fromSide":"bottom","toNode":"3bac4b15a3b76c6d","toSide":"top"}, {"id":"ffb00171e2e70810","fromNode":"a76a161d695d3749","fromSide":"right","toNode":"3bac4b15a3b76c6d","toSide":"top","color":"1","label":"adaptation aux biedged graphs"}, {"id":"d0d999112b20f6ac","fromNode":"9187b5a93d2e77d8","fromSide":"bottom","toNode":"c7e28ab1b6d1dfff","toSide":"top"}, @@ -231,11 +237,11 @@ {"id":"c6d923407d8fda25","fromNode":"c4e7f42fad8cc6dd","fromSide":"top","toNode":"3bac4b15a3b76c6d","toSide":"bottom","color":"1","label":"généralisation"}, {"id":"cb9f40234840aec2","fromNode":"a76a161d695d3749","fromSide":"bottom","toNode":"c4e7f42fad8cc6dd","toSide":"top","color":"1","label":"extension aux graphes bidirigés"}, {"id":"9b74b92bba69ce36","fromNode":"a76a161d695d3749","fromSide":"left","toNode":"35c597f2a9236a4f","toSide":"right"}, - {"id":"fde3f265977a65ff","fromNode":"c17ec7ef81f35b4b","fromSide":"bottom","toNode":"d1fb5f4183f8fbc0","toSide":"top"}, - {"id":"06c24211732c06b6","fromNode":"bd2ac0b855e308f1","fromSide":"right","toNode":"93fe12ee89f385ed","toSide":"left"}, - {"id":"bd2247f4d68e28c0","fromNode":"bd2ac0b855e308f1","fromSide":"bottom","toNode":"800d68620586fe43","toSide":"left"}, - {"id":"97a7d3b740d57216","fromNode":"464d3a859a82198b","fromSide":"bottom","toNode":"c17ec7ef81f35b4b","toSide":"top","color":"4"}, - {"id":"89a30d2f3147142b","fromNode":"464d3a859a82198b","fromSide":"bottom","toNode":"bd2ac0b855e308f1","toSide":"top","color":"4"}, + {"id":"fde3f265977a65ff","fromNode":"b24cb341ab94c72b","fromSide":"bottom","toNode":"d1fb5f4183f8fbc0","toSide":"top"}, + {"id":"06c24211732c06b6","fromNode":"d2ffb7b6f7de3712","fromSide":"right","toNode":"93fe12ee89f385ed","toSide":"left"}, + {"id":"bd2247f4d68e28c0","fromNode":"d2ffb7b6f7de3712","fromSide":"bottom","toNode":"800d68620586fe43","toSide":"left"}, + {"id":"97a7d3b740d57216","fromNode":"b2bd2d86c5838364","fromSide":"bottom","toNode":"b24cb341ab94c72b","toSide":"top","color":"4"}, + {"id":"89a30d2f3147142b","fromNode":"b2bd2d86c5838364","fromSide":"bottom","toNode":"d2ffb7b6f7de3712","toSide":"top","color":"4"}, {"id":"9d9d59fdf4eb4e8f","fromNode":"800d68620586fe43","fromSide":"right","toNode":"799f68e892314b6b","toSide":"left"}, {"id":"c2830ac1178daa97","fromNode":"799f68e892314b6b","fromSide":"bottom","toNode":"a4cd608c024b8594","toSide":"top"}, {"id":"2c5c354e0741048a","fromNode":"799f68e892314b6b","fromSide":"bottom","toNode":"6dc45fab5aead6a1","toSide":"top"}, @@ -245,34 +251,34 @@ {"id":"0b057cb2697bdeb8","fromNode":"958344047a413d04","fromSide":"right","toNode":"363a63c9986152c9","toSide":"top","label":"assembly ancestrale"}, {"id":"b9c3076fa93276be","fromNode":"a4cd608c024b8594","fromSide":"bottom","toNode":"363a63c9986152c9","toSide":"top","label":"assemblies originales"}, {"id":"078adaa5637ef6b9","fromNode":"958344047a413d04","fromSide":"right","toNode":"6d2888fd017db5c0","toSide":"bottom"}, - {"id":"e0b543b48f85d0f2","fromNode":"bd2ac0b855e308f1","fromSide":"right","toNode":"9e629313e68e4600","toSide":"left"}, + {"id":"e0b543b48f85d0f2","fromNode":"d2ffb7b6f7de3712","fromSide":"right","toNode":"9e629313e68e4600","toSide":"left"}, {"id":"a28c36841d31a3ba","fromNode":"800d68620586fe43","fromSide":"bottom","toNode":"0607cb8ec901ea4e","toSide":"top"}, {"id":"7aaf6003ad328bcc","fromNode":"0607cb8ec901ea4e","fromSide":"bottom","toNode":"b67aca38385cc0e2","toSide":"top"}, {"id":"f89a0b3771dd7f12","fromNode":"0607cb8ec901ea4e","fromSide":"bottom","toNode":"f4d55f5538722fc0","toSide":"top"}, - {"id":"6153bd15466017cb","fromNode":"15e35fa2d6d51a3d","fromSide":"bottom","toNode":"ccad44d8e99b297f","toSide":"top"}, - {"id":"3fc4574ac8d88568","fromNode":"15e35fa2d6d51a3d","fromSide":"bottom","toNode":"473c33069dc9b5e1","toSide":"top"}, + {"id":"6153bd15466017cb","fromNode":"e4df005023f988fe","fromSide":"bottom","toNode":"ccad44d8e99b297f","toSide":"top"}, + {"id":"3fc4574ac8d88568","fromNode":"e4df005023f988fe","fromSide":"bottom","toNode":"473c33069dc9b5e1","toSide":"top"}, {"id":"72cce186facc20fc","fromNode":"473c33069dc9b5e1","fromSide":"bottom","toNode":"b857d70c30b2a368","toSide":"top"}, {"id":"0d2b8af12a718c47","fromNode":"473c33069dc9b5e1","fromSide":"right","toNode":"4b073f56cef38de7","toSide":"top"}, - {"id":"091618dd7a3964e1","fromNode":"b6da29614bf625f9","fromSide":"right","toNode":"959c6871b98e5f24","toSide":"left"}, + {"id":"091618dd7a3964e1","fromNode":"d7ea1f197b165c65","fromSide":"right","toNode":"959c6871b98e5f24","toSide":"left"}, {"id":"b74d4005748a7017","fromNode":"959c6871b98e5f24","fromSide":"right","toNode":"2ad06502c64301be","toSide":"left"}, {"id":"6d1715eb9a5a9c5a","fromNode":"959c6871b98e5f24","fromSide":"right","toNode":"c1747efd88b1391c","toSide":"left"}, - {"id":"9b1ee7d7288087fa","fromNode":"c17ec7ef81f35b4b","fromSide":"bottom","toNode":"af918cdf44aa146d","toSide":"top","color":"4"}, + {"id":"9b1ee7d7288087fa","fromNode":"b24cb341ab94c72b","fromSide":"bottom","toNode":"8c61cb4632b4c27a","toSide":"top","color":"4"}, {"id":"dc5b669fe605a811","fromNode":"c7e28ab1b6d1dfff","fromSide":"bottom","toNode":"f51cc8b5120d57bd","toSide":"top"}, - {"id":"601b64253090e1e8","fromNode":"af918cdf44aa146d","fromSide":"right","toNode":"cafa15b1c72270f0","toSide":"left"}, - {"id":"c5e98cf9cfc6f4c6","fromNode":"af918cdf44aa146d","fromSide":"right","toNode":"69cb9f0bc27775ce","toSide":"left"}, + {"id":"601b64253090e1e8","fromNode":"8c61cb4632b4c27a","fromSide":"right","toNode":"cafa15b1c72270f0","toSide":"left"}, + {"id":"c5e98cf9cfc6f4c6","fromNode":"8c61cb4632b4c27a","fromSide":"right","toNode":"69cb9f0bc27775ce","toSide":"left"}, {"id":"7606d6cdc7a0385f","fromNode":"3bac4b15a3b76c6d","fromSide":"bottom","toNode":"69cb9f0bc27775ce","toSide":"top"}, {"id":"6608b9ba90ddbe0b","fromNode":"69cb9f0bc27775ce","fromSide":"bottom","toNode":"9927540a8f87d695","toSide":"left"}, {"id":"a183b11ae8fa1345","fromNode":"69cb9f0bc27775ce","fromSide":"bottom","toNode":"8ec43f4cf38a035f","toSide":"left"}, {"id":"199c78ed0baf991f","fromNode":"8ec43f4cf38a035f","fromSide":"right","toNode":"9b29d6bc4bf05e07","toSide":"left"}, - {"id":"16fd9d6161412c6f","fromNode":"af918cdf44aa146d","fromSide":"bottom","toNode":"b3ab8ceb14f25665","toSide":"top"}, + {"id":"16fd9d6161412c6f","fromNode":"8c61cb4632b4c27a","fromSide":"bottom","toNode":"b3ab8ceb14f25665","toSide":"top"}, {"id":"bd115360c5acb561","fromNode":"b3ab8ceb14f25665","fromSide":"bottom","toNode":"c00023f9483a734f","toSide":"top"}, {"id":"1dc61bbce548a31c","fromNode":"b3ab8ceb14f25665","fromSide":"bottom","toNode":"41575dca10c5c02d","toSide":"top"}, {"id":"bf01cb52323b6ff1","fromNode":"c00023f9483a734f","fromSide":"bottom","toNode":"012805a4b06cc5b4","toSide":"top"}, {"id":"4e0e2554d28232b3","fromNode":"41575dca10c5c02d","fromSide":"bottom","toNode":"012805a4b06cc5b4","toSide":"top"}, {"id":"69656e75ed4cba68","fromNode":"79d85b0031c6ce3f","fromSide":"bottom","toNode":"24a49c27acfb97ef","toSide":"top"}, {"id":"3748c68fbbc6330c","fromNode":"012805a4b06cc5b4","fromSide":"right","toNode":"79d85b0031c6ce3f","toSide":"left"}, - {"id":"c10eb4c71860abd8","fromNode":"8ff05f3c7e0b7038","fromSide":"bottom","toNode":"a07c9f18c29efd3c","toSide":"left"}, - {"id":"aa4f4021e880fb10","fromNode":"8ff05f3c7e0b7038","fromSide":"bottom","toNode":"395da1694bf23728","toSide":"top"}, + {"id":"c10eb4c71860abd8","fromNode":"114973e1f73f1e7d","fromSide":"bottom","toNode":"a07c9f18c29efd3c","toSide":"left"}, + {"id":"aa4f4021e880fb10","fromNode":"114973e1f73f1e7d","fromSide":"bottom","toNode":"395da1694bf23728","toSide":"top"}, {"id":"b6e51a72ccc8f98c","fromNode":"395da1694bf23728","fromSide":"bottom","toNode":"a126e0f80a9ae345","toSide":"top","color":"3"}, {"id":"38102332928a2203","fromNode":"a126e0f80a9ae345","fromSide":"right","toNode":"565c2f071796974b","toSide":"top"}, {"id":"a341a564be10134c","fromNode":"565c2f071796974b","fromSide":"bottom","toNode":"de1f18f12d0c57b5","toSide":"right"}, @@ -280,9 +286,9 @@ {"id":"55175decf88aca1b","fromNode":"56c7e177b0c92f4b","fromSide":"bottom","toNode":"a126e0f80a9ae345","toSide":"right"}, {"id":"e1f5e3d22abc686a","fromNode":"395da1694bf23728","fromSide":"right","toNode":"56c7e177b0c92f4b","toSide":"top"}, {"id":"76408abc1e2abaa4","fromNode":"a126e0f80a9ae345","fromSide":"bottom","toNode":"502d8f0c671f3d9f","toSide":"right"}, - {"id":"df6322ae76ff3790","fromNode":"44132eb33e08274c","fromSide":"right","toNode":"436955ae04bc294f","toSide":"left"}, - {"id":"9104bae3b43f4220","fromNode":"44132eb33e08274c","fromSide":"right","toNode":"2e27c8d0f6788a54","toSide":"left"}, - {"id":"70bf3f35a35a512a","fromNode":"44132eb33e08274c","fromSide":"right","toNode":"496273d96b37d9da","toSide":"left"}, + {"id":"df6322ae76ff3790","fromNode":"a757fd0e1fc5f59e","fromSide":"right","toNode":"436955ae04bc294f","toSide":"left"}, + {"id":"9104bae3b43f4220","fromNode":"a757fd0e1fc5f59e","fromSide":"right","toNode":"2e27c8d0f6788a54","toSide":"left"}, + {"id":"70bf3f35a35a512a","fromNode":"a757fd0e1fc5f59e","fromSide":"right","toNode":"496273d96b37d9da","toSide":"left"}, {"id":"58d3d1fb918d9674","fromNode":"496273d96b37d9da","fromSide":"right","toNode":"6da72b1e869ca4ff","toSide":"left"}, {"id":"ea2094ca6ebf6252","fromNode":"6da72b1e869ca4ff","fromSide":"right","toNode":"5c4b56ef797d1072","toSide":"left"}, {"id":"151a32d98ee2b804","fromNode":"6da72b1e869ca4ff","fromSide":"right","toNode":"21cd3ec799bf1599","toSide":"left"}, @@ -295,13 +301,17 @@ {"id":"95b7510ec5b62b15","fromNode":"5c4b56ef797d1072","fromSide":"bottom","toNode":"78cc6582b1da88ac","toSide":"right"}, {"id":"a5145eec17c6554c","fromNode":"6da72b1e869ca4ff","fromSide":"bottom","toNode":"78cc6582b1da88ac","toSide":"top"}, {"id":"067f3ec5bdf00b38","fromNode":"5c4b56ef797d1072","fromSide":"bottom","toNode":"922d801361911683","toSide":"top"}, - {"id":"f9b21930c32275eb","fromNode":"44132eb33e08274c","fromSide":"right","toNode":"bfe61575cd63f0bd","toSide":"left"}, + {"id":"f9b21930c32275eb","fromNode":"a757fd0e1fc5f59e","fromSide":"right","toNode":"bfe61575cd63f0bd","toSide":"left"}, {"id":"b646a5da52e1dae9","fromNode":"bfe61575cd63f0bd","fromSide":"right","toNode":"992f3cf1e697d0f7","toSide":"left"}, {"id":"28e086a04f2c42a3","fromNode":"bfe61575cd63f0bd","fromSide":"bottom","toNode":"dd5ad775188134db","toSide":"top"}, {"id":"1f6bc561407363d1","fromNode":"bfe61575cd63f0bd","fromSide":"right","toNode":"e275bd2463802d6a","toSide":"left"}, {"id":"ae4c3bcfb1f2451a","fromNode":"e275bd2463802d6a","fromSide":"bottom","toNode":"416157ccf3ea4181","toSide":"top"}, {"id":"7ed5373c3616fb83","fromNode":"416157ccf3ea4181","fromSide":"right","toNode":"c39f8c609227c924","toSide":"left"}, {"id":"19c47ea14ed92136","fromNode":"dd5ad775188134db","fromSide":"bottom","toNode":"cae77ee78a51c888","toSide":"top"}, - {"id":"9ae3d63809280de1","fromNode":"40cbd71b2e996b34","fromSide":"right","toNode":"58bad2b9c05a7f76","toSide":"left"} + {"id":"9ae3d63809280de1","fromNode":"40cbd71b2e996b34","fromSide":"right","toNode":"3f80ff8608c11f00","toSide":"left"}, + {"id":"95926d3dedce5639","fromNode":"753b3485207254d3","fromSide":"right","toNode":"a884c10e4fe8529b","toSide":"left","color":"4"}, + {"id":"51b8ebcc3fafea38","fromNode":"a884c10e4fe8529b","fromSide":"right","toNode":"18ab04ccd8deb09f","toSide":"left","color":"4","label":"l'article en question"}, + {"id":"eece43191eed580d","fromNode":"15e57fcfe67aadc7","fromSide":"bottom","toNode":"2afff5da76c99aa2","toSide":"top","color":"4"}, + {"id":"6ed113686d0c2fff","fromNode":"15e57fcfe67aadc7","fromSide":"right","toNode":"1bd14c47bb5791d4","toSide":"left"} ] } \ No newline at end of file diff --git a/content/_publications/Superbubbles, ultrabubbles and cacti.md b/content/_publications/Superbubbles, ultrabubbles and cacti.md new file mode 100644 index 0000000000000..e0dc61febeb6c --- /dev/null +++ b/content/_publications/Superbubbles, ultrabubbles and cacti.md @@ -0,0 +1,3 @@ +URL : https://pubmed.ncbi.nlm.nih.gov/29461862/ + +A superbubble is a type of directed acyclic subgraph with single distinct source and sink vertices. In genome assembly and genetics, the possible paths through a superbubble can be considered to represent the set of possible sequences at a location in a genome. Bidirected and biedged graphs are a generalization of digraphs that are increasingly being used to more fully represent genome assembly and variation problems. In this study, we define snarls and ultrabubbles, generalizations of superbubbles for bidirected and biedged graphs, and give an efficient algorithm for the detection of these more general structures. Key to this algorithm is the cactus graph, which, we show, encodes the nested decomposition of a graph into snarls and ultrabubbles within its structure. We propose and demonstrate empirically that this decomposition on bidirected and biedged graphs solves a fundamental problem by defining genetic sites for any collection of genomic variations, including complex structural variations, without need for any single reference genome coordinate system. Further, the nesting of the decomposition gives a natural way to describe and model variations contained within large variations, a case not currently dealt with by existing formats (e.g., variant cell format (VCF)). \ No newline at end of file diff --git a/content/_publications/The design and construction of reference pangenome graphs with minigraph.md b/content/_publications/The design and construction of reference pangenome graphs with minigraph.md new file mode 100644 index 0000000000000..bb48bbe14a523 --- /dev/null +++ b/content/_publications/The design and construction of reference pangenome graphs with minigraph.md @@ -0,0 +1,3 @@ +URL: https://genomebiology.biomedcentral.com/articles/10.1186/s13059-020-02168-z + +The recent advances in sequencing technologies enable the assembly of individual genomes to the quality of the reference genome. How to integrate multiple genomes from the same species and make the integrated representation accessible to biologists remains an open challenge. Here, we propose a graph-based data model and associated formats to represent multiple genomes while preserving the coordinate of the linear reference genome. We implement our ideas in the minigraph toolkit and demonstrate that we can efficiently construct a pangenome graph and compactly encode tens of thousands of structural variants missing from the current reference genome. \ No newline at end of file diff --git a/content/_publications/Unbiased pangenome graphs.md b/content/_publications/Unbiased pangenome graphs.md new file mode 100644 index 0000000000000..4af2125bbbf9d --- /dev/null +++ b/content/_publications/Unbiased pangenome graphs.md @@ -0,0 +1,4 @@ +URL: https://academic.oup.com/bioinformatics/article/39/1/btac743/6854971 + +Motivation: pangenome variation graphs model the mutual alignment of collections of DNA sequences. A set of pairwise alignments implies a variation graph, but there are no scalable methods to generate such a graph from these alignments. Existing related approaches depend on a single reference, a specific ordering of genomes or a _de Bruijn_ model based on a fixed _k_-mer length. A scalable, self-contained method to build pangenome graphs without such limitations would be a key step in pangenome construction and manipulation pipelines. +Results: we design the _seqwish_ algorithm, which builds a variation graph from a set of sequences and alignments between them. We first transform the alignment set into an implicit interval tree. To build up the variation graph, we query this tree-based representation of the alignments to reduce transitive matches into single DNA segments in a sequence graph. By recording the mapping from input sequence to output graph, we can trace the original paths through this graph, yielding a pangenome variation graph. We present an implementation that operates in external memory, using disk-backed data structures and lock-free parallel methods to drive the core graph induction step. We demonstrate that our method scales to very large graph induction problems by applying it to build pangenome graphs for several species. \ No newline at end of file