From 360edffd09c1328ebd214436b96e9766639674ad Mon Sep 17 00:00:00 2001 From: subwaystation Date: Thu, 1 Feb 2024 13:55:36 +0100 Subject: [PATCH] Playing around with the 1D PG-SGD parameters --- docs/conf.py | 4 +- docs/img/DRB1-3123_sorted.U1000.png | Bin 0 -> 4934 bytes docs/img/DRB1-3123_sorted.j10000.png | Bin 0 -> 10682 bytes docs/img/DRB1-3123_sorted.x2.png | Bin 0 -> 13928 bytes docs/rst/tutorials/exploratory_analysis.rst | 2 +- docs/rst/tutorials/sort_layout.rst | 67 ++++++++++++++++++++ 6 files changed, 70 insertions(+), 3 deletions(-) create mode 100644 docs/img/DRB1-3123_sorted.U1000.png create mode 100644 docs/img/DRB1-3123_sorted.j10000.png create mode 100644 docs/img/DRB1-3123_sorted.x2.png diff --git a/docs/conf.py b/docs/conf.py index 2bd5b665..11f16991 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -20,13 +20,13 @@ # -- Project information ----------------------------------------------------- project = u'odgi' -copyright = '2020-2024, *Guarracino A., *Heumos S., Nahnsen S., Prins P., Garrison E. Revision v0.8.4-d7ef5c6b' +copyright = '2020-2024, *Guarracino A., *Heumos S., Nahnsen S., Prins P., Garrison E. Revision v0.8.4-a19163ea' author = u'*Andrea Guarracino, *Simon Heumos, Sven Nahnsen, Pjotr Prins, Erik Garrison' # The short X.Y version version = 'v0.8.4' # The full version, including alpha/beta/rc tags -release = 'd7ef5c6b' +release = 'a19163ea' # -- General configuration --------------------------------------------------- diff --git a/docs/img/DRB1-3123_sorted.U1000.png b/docs/img/DRB1-3123_sorted.U1000.png new file mode 100644 index 0000000000000000000000000000000000000000..73efc36454ff845184a1b2b1669c643fca71e3d5 GIT binary patch literal 4934 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 aep|$6lj5s=8_d7L039v;i^Ugg!v72EhGf(L literal 0 HcmV?d00001 diff --git a/docs/img/DRB1-3123_sorted.j10000.png b/docs/img/DRB1-3123_sorted.j10000.png new file mode 100644 index 0000000000000000000000000000000000000000..d3b2e39e81b22d8ee3572047a8c37df28366f108 GIT binary patch literal 10682 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 Xq;dDqxWL>jhNY`%pi!shl<@xn9>S6i literal 0 HcmV?d00001 diff --git a/docs/rst/tutorials/exploratory_analysis.rst b/docs/rst/tutorials/exploratory_analysis.rst index 7db08d80..35cd38b1 100644 --- a/docs/rst/tutorials/exploratory_analysis.rst +++ b/docs/rst/tutorials/exploratory_analysis.rst @@ -76,7 +76,7 @@ Color with respect to the node position This is a linearized visualization, but the pangenome graphs are not linear when the embedded genomes present structural variation. However, a graph can be optimized for being better visualized in 1-Dimension by sorting its nodes properly -(see the :ref:`sorting-layouting` tutorial for more information). +(see the :ref:`sort-layout` tutorial for more information). To color the bars with respect to the node position in each path, execute: diff --git a/docs/rst/tutorials/sort_layout.rst b/docs/rst/tutorials/sort_layout.rst index 2e93823c..517a3fd4 100644 --- a/docs/rst/tutorials/sort_layout.rst +++ b/docs/rst/tutorials/sort_layout.rst @@ -187,6 +187,73 @@ This prints to stdout: Compared to before, these metrics show that the goodness of the sorting of the graph improved significantly. +-------------------------------------------- +Playing around with the 1D PG-SGD parameters +-------------------------------------------- + +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +What happens if the maximum number of iterations is very low? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. code-block:: bash + + odgi sort -i DRB1-3123_unsorted.og --threads 2 -P -Y -x 2 -o DRB1-3123_sorted.x2.og + odgi viz -i DRB1-3123_sorted.x2.og -o DRB1-3123_sorted.x2.png + +.. image:: /img/DRB1-3123_sorted.x2.png + +The graph appears very complex and not quite human readable. That's because in total there were two times the number +of total path steps node position updates instead of one hundred times the number of total path steps, which is the current default. +For very complex graphs, one may have to increase this number even further. + +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +What happens if the minimum number of term updates is very high? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. code-block:: bash + + odgi sort -i DRB1-3123_unsorted.og --threads 2 -P -Y -U 1000 -o DRB1-3123_sorted.U1000.og + odgi viz -i DRB1-3123_sorted.U1000.og -o DRB1-3123_sorted.U1000.png + +.. image:: /img/DRB1-3123_sorted.U1000.png + +The graph lost it's complexity and is now linear. Compared to the 1D visualization using the default parameters, it is hard +to spot any differences. So let's take a look at the metrics: + +.. code-block:: bash + + odgi stats -i DRB1-3123_sorted.U1000.og -s -d -l -g + +This prints to stdout: + +.. code-block:: bash + + #mean_links_length + path in_node_space in_nucleotide_space num_links_considered num_gap_links_not_penalized + all_paths 1.00361 8.30677 21870 15195 + #sum_of_path_node_distances + path in_node_space in_nucleotide_space nodes nucleotides num_penalties num_penalties_different_orientation + all_paths 3.23238 3.73489 21882 163416 3750 1 + +We actually were able to improve the metrics compared to using default parameters. However, the runtime increased from under 1 second to ~30 seconds. +So one needs to be careful with such a parameter. Compared to the gains in linearity, such an additional time usage would be a huge +waste with very large graphs. + +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +What happens if the threshold of the maximum distance of two nodes is very high? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. code-block:: bash + + odgi sort -i DRB1-3123_unsorted.og --threads 2 -P -Y -j 10000 -o DRB1-3123_sorted.j10000.og + odgi viz -i DRB1-3123_sorted.j10000.og -o DRB1-3123_sorted.j10000.png + +.. image:: /img/DRB1-3123_sorted.j10000.png + +The graph appears very complex and not quite human readable. That's because the iterations are terminated as soon as the +expected distance of two nodes, the nucleotide distance given by two randomly chosen path steps, is as close as 10000. +Naturally, this happens very soon. + ========================================================= 1D reference-guided grooming and reference-guided sorting =========================================================