<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Medvedev Group</title>
	<atom:link href="https://medvedevgroup.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://medvedevgroup.com</link>
	<description>A Research Group in Algorithmic Bioinformatics</description>
	<lastBuildDate>Fri, 27 Feb 2026 20:36:20 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.2.9</generator>

<image>
	<url>https://medvedevgroup.com/wp-content/uploads/2019/08/cropped-OldMain-32x32.jpg</url>
	<title>Medvedev Group</title>
	<link>https://medvedevgroup.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Can researcher identity be captured with a single number?</title>
		<link>https://medvedevgroup.com/2022/11/15/can-researcher-identity-be-captured-with-a-single-number/</link>
		
		<dc:creator><![CDATA[paulmedv]]></dc:creator>
		<pubDate>Tue, 15 Nov 2022 12:36:20 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<guid isPermaLink="false">http://medvedevgroup.com/?p=631</guid>

					<description><![CDATA[Of course not, the title is just click bait 🙂 But, what I was thinking of a characterization that could be informative. We have two little voices in our head, driving our self-esteem. On one hand, we seek the approval <span class="readmore"><a href="https://medvedevgroup.com/2022/11/15/can-researcher-identity-be-captured-with-a-single-number/">Read More</a></span>]]></description>
										<content:encoded><![CDATA[
<p>Of course not, the title is just click bait <img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> But, what I was thinking of a characterization that could be informative.</p>



<p>We have two little voices in our head, driving our self-esteem. On one hand, we seek the approval of others. We need that paper in Nature, we want that big award, we want that big recognition. We yearn for it as it forms our opinion of ourselves: if I get a paper in Nature, then I am a great researcher. If not, I&#8217;m so-so.  And we all want to be great researchers.</p>



<p>On the other hand, we have an internal barometer of our self-worth as a researcher. We have standards for what a great paper is: maybe it&#8217;s a discovery or a tool that gets used by others, or it greatly improves something impactful. It is fair in its treatment of previous work, it is thorough in its presentation, etc etc. The point is its our OWN standards and when we write papers that meet those standards we think of ourselves as great researchers &#8212; regardless of where the paper is published or what the reviewers say about it.</p>



<p>These two little voices pull us in different directions, and perhaps we can think of ourselves as what percentage of the pull goes to which voice (be honest!). After that, we can also think of others this way, and it can help us understand them. It can be helpful when mentoring also, since if you&#8217;re trying to support someone, it helps to know what drives their self-esteem.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>From idea to paper: discretizing and optimizing the initial stages of the process</title>
		<link>https://medvedevgroup.com/2022/08/17/from-idea-to-paper-discretizing-and-optimizing-the-initial-stages-of-the-process/</link>
		
		<dc:creator><![CDATA[paulmedv]]></dc:creator>
		<pubDate>Wed, 17 Aug 2022 14:16:20 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<guid isPermaLink="false">http://medvedevgroup.com/?p=616</guid>

					<description><![CDATA[This is a post about managing the research process when juggling many projects and other commitments. My idea-to-output pipeline: I often have &#8220;a flash of potential insight.&#8221; This might be a thought about how there is a better way of <span class="readmore"><a href="https://medvedevgroup.com/2022/08/17/from-idea-to-paper-discretizing-and-optimizing-the-initial-stages-of-the-process/">Read More</a></span>]]></description>
										<content:encoded><![CDATA[
<p>This is a post about managing the research process when juggling many projects and other commitments.</p>



<p><strong>My idea-to-output pipeline:</strong></p>



<p>I often have &#8220;a flash of potential insight.&#8221; This might be a thought about how there is a better way of solving a computational problem or a connection between unrelated concepts that might open new avenues for research exploration. These flashes happen while reading a paper, hearing a talk, walking down the street, or talking to a colleague. To say that these are half-baked ideas is an exaggeration and maybe &#8220;quarter-baked&#8221; is a better term. Let&#8217;s think of such a flash as the beginning of a pipeline. At the end of a pipeline is a research output &#8212; a paper, a lecture, a blog post, etc. It might take years to get here, e.g. a research paper.</p>



<p>What about the points in the middle of the pipeline? I used to think that it&#8217;s a continuous process; but with time I realized that there are discrete checkpoints, at least in the way I do it. Here is what I came up with:</p>



<p>1. A flash of potential insight</p>



<p>2. Converting the cloudy flash into a more concrete thought, often through writing it down.</p>



<p>3. Doing a dump of all accompanying thoughts onto paper (i.e. a brainstorm).</p>



<p>4. Evaluating which of this is novel and relevant &#8212; usually doing a literature review or looking at existing teaching materials.</p>



<p>5. Narrowing the initial brainstorm into a concrete project idea.</p>



<p>6-15: Execute the project idea: evaluate practical feasibility with preliminary results, maybe write a grant, match a student&#8217;s interest with the project, guide the student through the project, etc&#8230;&nbsp;</p>



<p>This post is not about steps 6 through 15, so I didn&#8217;t elaborate on them here. I&#8217;ve found that over my career, I&#8217;ve been discretizing the continuous process into these steps, starting from the end. That is, as a starting student the whole process was a continuous blur; then I recognized that there is a discrete stage 15, then stage 14, and so on. The initial 5 steps were all a continuous blur to me until somewhat recently, when I first noticed the existence of checkpoint 5, then later checkpoint 4, and so on. Only last week did I recognize the existence/importance of stage 3. </p>



<p><strong>The problem:</strong></p>



<p>At the moment I have a flash, I usually do not have time to follow up on it with the first five steps. I am usually busy and my mind is immersed in other projects. Maybe potential projects get lost along the way? I used to think that if a flash is truly promising, it will occur to me multiple times, and eventually I will follow up on it. But now this seems like a baseless assumption whose purpose was only to justify my status quo. Over time, I&#8217;ve applied a lot of scrutiny to the later stages of the pipeline (6-15) and tried to optimize the efficiency of those stages. Now, I want to do the same for steps 1-5. How many &#8220;flashes&#8221; eventually become outputs? I don&#8217;t know, since many flashes are not followed-up on and their existence is forgotten. How many of these flashes turn out to be nonsense when scrutinized? How many make it to at least to stage 5? I don&#8217;t know. How many flashes that could have led to outputs are lost because I forget about them? I don&#8217;t know. </p>



<p>Another problem is that the whole pipeline potentially stretches over many years and, since I am generally overwhelmed with the number of projects going on simultaneously, I don&#8217;t remember things well. When I don&#8217;t take good notes, I often find myself repeating steps that I have already done! For example, at the early stages, I sometimes browse through literature to get a sense of what has been done. If I don&#8217;t take good notes, then when I return to this in a month, I have to start over. Another problem is that the coolness and excitement that I have at the initial stages are sometimes lost by the time of writing the paper! Sure, sometimes it&#8217;s just that the original excitement was naive and didn&#8217;t account for things I learned later. But sometimes, I suspect that it&#8217;s just that after being down in the trenches of a project for a long time, I forget its original beauty. </p>



<p>What I also realized recently is that &#8220;taking good notes&#8221; is stage-dependent. For example, taking good notes at the end of stage 3 is just an unpolished, &#8220;natural flow&#8221; kind of text. Trying to do something more actually destroys the value of these notes. If I have the natural flow, I can capture the original excitement, and then a year later I can look at these notes and remember precisely why I was so excited initially. Moreover, if I require polished notes at the end of this stage then it makes it harder to find time to get through the stage and increases the chance that the flash will get forgotten. On the other hand, &#8220;taking good notes&#8221; during a literature search means being very precise, so that these notes can serve as a basis for precise published statements later.</p>



<p>.</p>



<p><strong>The solution:</strong></p>



<p>I want to take a more systematic approach in the future. I want to refine/improve/make-more-precise the pipeline steps, and make precise what kind of notes are most effective for each stage. I also don&#8217;t want ideas to unintentionally drop out of the pipeline. It should take very little time to bring an idea to the end of stage 3 (e.g. 30 minutes in a coffee shop). Now that I&#8217;ve broken down the initial stages into smaller, more manageable tasks, I think this is possible. By being systematic about this, I can iterate and refine both the stages of the pipeline and the specs for each deliverable.</p>



<p>Also, it is fine if ideas will get stuck in the pipeline because I can&#8217;t find time for them (e.g. I never get to stage 4). I just don&#8217;t want them to fall out. If they are stuck, then I know about it and I can always return to it. Moreover, I can analyze why they get stuck and fix the problem, e.g. I need to allocate more time to idea development.</p>



<p><strong>Feedback</strong>:&nbsp;</p>



<p>This post stemmed from a &#8220;flash of potential insight&#8221; I had yesterday. Since I am on vacation, I had the opportunity to immerse myself into the pipeline of turning it into an output. I decided that a blog post would be a good output, for which the turnaround is really quick. But really these are all still half-baked thoughts in my head. I am really curious to hear about how other people approach the early stages of the pipeline.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The challenges of writing a logical argument in the Introduction</title>
		<link>https://medvedevgroup.com/2021/11/10/the-challenges-of-writing-a-logical-argument-in-the-introduction/</link>
		
		<dc:creator><![CDATA[paulmedv]]></dc:creator>
		<pubDate>Wed, 10 Nov 2021 19:15:19 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<guid isPermaLink="false">http://medvedevgroup.com/?p=505</guid>

					<description><![CDATA[Writing a good intro to a paper is challenging, for many reasons. I have a longer lecture about it here. In this post, I wanted to point out one reason which occurred to me only after many years and after <span class="readmore"><a href="https://medvedevgroup.com/2021/11/10/the-challenges-of-writing-a-logical-argument-in-the-introduction/">Read More</a></span>]]></description>
										<content:encoded><![CDATA[
<p>Writing a good intro to a paper is challenging, for many reasons. I have a longer lecture about it <a rel="noreferrer noopener" href="http://medvedevgroup.com/wp-content/uploads/lec-10-25-2020.mp4" target="_blank">here</a>. In this post, I wanted to point out one reason which occurred to me only after many years and after giving the lecture. The Intro often contains a multi-step logical argument. Sometimes this is hard for the reader to follow because the argument has logical gaps. The thing is, even when there are no logical gaps, the reader might still find it difficult to follow, for the following reason.</p>



<p>In the writer&#8217;s head, an argument is usually represented as a directed acyclic graph. Each node is a statement and an edge from x to y means that x logically implies y. For example</p>



<figure class="wp-block-gallery columns-1 wp-block-gallery-1 is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><a href="http://medvedevgroup.com/wp-content/uploads/intro-tree-1.png"><img decoding="async" width="614" height="340" src="http://medvedevgroup.com/wp-content/uploads/intro-tree-1.png" alt="first graph" data-id="790" data-full-url="http://medvedevgroup.com/wp-content/uploads/intro-tree-1.png" data-link="https://medvedevgroup.com/intro-tree-1/" class="wp-image-790" srcset="https://medvedevgroup.com/wp-content/uploads/intro-tree-1.png 614w, https://medvedevgroup.com/wp-content/uploads/intro-tree-1-300x166.png 300w" sizes="(max-width: 614px) 100vw, 614px" /></a></figure></li></ul></figure>



<p>The rightmost node (node 9) is the final point the writer wants to make, e.g. the specific challenge their paper addresses. One mistake writers make is to include nodes that do not lie on the path to 9. In this example, that&#8217;s node 3. Node 3 might be a very interesting observation and the writer might be tempted to keep it. But that&#8217;s usually a mistake and they must trim 3 from their tree before putting it in the intro:</p>



<figure class="wp-block-image size-large"><img decoding="async" loading="lazy" width="611" height="264" src="http://medvedevgroup.com/wp-content/uploads/intro-tree-2.png" alt="graph 2" class="wp-image-789" srcset="https://medvedevgroup.com/wp-content/uploads/intro-tree-2.png 611w, https://medvedevgroup.com/wp-content/uploads/intro-tree-2-300x130.png 300w" sizes="(max-width: 611px) 100vw, 611px" /></figure>



<p>The next challenge is that an introduction is necessarily linear. Each sentence has exactly one successor and one predecessor. The introduction is not good at representing a tree structure of arguments. So the writer must linearize their graph and create what in Computer Science we call a &#8220;topological ordering&#8221;:</p>



<figure class="wp-block-image size-large"><img decoding="async" loading="lazy" width="790" height="197" src="http://medvedevgroup.com/wp-content/uploads/intro-tree-3.png" alt="" class="wp-image-788" srcset="https://medvedevgroup.com/wp-content/uploads/intro-tree-3.png 790w, https://medvedevgroup.com/wp-content/uploads/intro-tree-3-300x75.png 300w, https://medvedevgroup.com/wp-content/uploads/intro-tree-3-768x192.png 768w" sizes="(max-width: 790px) 100vw, 790px" /></figure>



<p>Each of those arcs that jump other nodes, e.g. from 4 to 7, require the writer to make explicit connections with previous parts of the text. This makes things more difficult for the reader, and the less of these jumping arcs, the better. For example, putting 7 right after 4 would have been a better linearization:</p>



<figure class="wp-block-image size-large"><img decoding="async" loading="lazy" width="790" height="197" src="http://medvedevgroup.com/wp-content/uploads/intro-tree-4.png" alt="" class="wp-image-787" srcset="https://medvedevgroup.com/wp-content/uploads/intro-tree-4.png 790w, https://medvedevgroup.com/wp-content/uploads/intro-tree-4-300x75.png 300w, https://medvedevgroup.com/wp-content/uploads/intro-tree-4-768x192.png 768w" sizes="(max-width: 790px) 100vw, 790px" /></figure>



<p>Now there are only two jumping arcs instead of three. The writer can further try to eliminate arcs from the graph completely by checking if they are absolutely necessary. For example, 5 and 6 might be two examples that support point 8. But are two examples really necessary? If not, then get rid of 5: </p>



<figure class="wp-block-image size-large"><img decoding="async" loading="lazy" width="790" height="197" src="http://medvedevgroup.com/wp-content/uploads/intro-tree-5.png" alt="" class="wp-image-786" srcset="https://medvedevgroup.com/wp-content/uploads/intro-tree-5.png 790w, https://medvedevgroup.com/wp-content/uploads/intro-tree-5-300x75.png 300w, https://medvedevgroup.com/wp-content/uploads/intro-tree-5-768x192.png 768w" sizes="(max-width: 790px) 100vw, 790px" /></figure>



<p>This is now much easier for the reader to follow. Happy writing!</p>



<p>UPDATE 11/10/21: I want to add a prequel to all this. What is often in the writer&#8217;s mind at the start is not even a graph but some kind of personal, cerebral, often pictorial representation. Getting that into a graph is its own challenge. If a writer tries to go from that straight into a linearized argument, all hell breaks lose. </p>



<p></p>
]]></content:encoded>
					
		
		<enclosure url="http://medvedevgroup.com/wp-content/uploads/lec-10-25-2020.mp4" length="0" type="video/mp4" />

			</item>
		<item>
		<title>What do Eulerian and Hamiltonian cycles have to do with genome assembly?</title>
		<link>https://medvedevgroup.com/2020/08/21/what-do-eulerian-and-hamiltonian-cycles-have-to-do-with-genome-assembly/</link>
					<comments>https://medvedevgroup.com/2020/08/21/what-do-eulerian-and-hamiltonian-cycles-have-to-do-with-genome-assembly/#comments</comments>
		
		<dc:creator><![CDATA[paulmedv]]></dc:creator>
		<pubDate>Fri, 21 Aug 2020 16:40:05 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<guid isPermaLink="false">http://medvedevgroup.com/?p=365</guid>

					<description><![CDATA[(UPDATE: A slightly updated version of this blog is now published here in PLoS Computational Biology) (written by Paul Medvedev and Mihai Pop) When you learned about genome assembly algorithms, you might have heard a story that goes something like <span class="readmore"><a href="https://medvedevgroup.com/2020/08/21/what-do-eulerian-and-hamiltonian-cycles-have-to-do-with-genome-assembly/">Read More</a></span>]]></description>
										<content:encoded><![CDATA[<p>(UPDATE: A slightly updated version of this blog is now published <a href="https://doi.org/10.1371/journal.pcbi.1008928">here</a> in PLoS Computational Biology)</p>
<p>(written by Paul Medvedev and Mihai Pop)</p>
<p>When you learned about genome assembly algorithms, you might have heard a story that goes something like this:</p>
<p style="padding-left: 40px;"><i>In the overlap-layout paradigm, solving the assembly problem requires solving the Hamiltonian cycle problem in the overlap graph. This is difficult, because the Hamiltonian cycle program is NP-hard. On the other hand, if we break our reads up into k-mers, we can build the de Bruijn graph. Then, the assembly problem becomes the problem of finding an Eulerian cycle in the de Bruijn graph, which is easily solvable in linear time. Thus, by formulating the assembly problem in terms of the de Bruijn graph, we can solve the much easier Eulerian cycle problem and not have to solve the NP-hard Hamiltonian cycle problem.</i></p>
<p><b>In this post, we explain that while de Bruijn graphs have indeed been very useful, the reason has nothing to do with the complexity of the Hamiltonian and Eulerian cycle problems. </b></p>
<p>Every Eulerian cycle in a de Bruijn graph or a Hamiltonian cycle in an overlap graph corresponds to a single genome reconstruction where all the repeats are completely resolved. For example, <a href="#fig1">Figure 1</a> shows two different Eulerian cycles in the same graph (a similar example could be constructed for Hamiltonian cycles in an overlap graph). Each cycle corresponds to a different arrangement of segments between the repeats. The presence of multiple Eulerian or Hamiltonian cycles implies that the genome structure is ambiguous given the data available. In other words, using the same set of reads one can reconstruct different genomes, each of which is fully consistent with the data (Figure 1 gives an example). Choosing one of these reconstructions arbitrarily would be foolhardy since only one of them is the original genome. No sane assembly algorithm would do this, and that is one of the major reasons why an algorithm for finding Eulerian or Hamiltonian cycles is not part of any assembly algorithm used in practice.</p>
<p> </p>


<div class="wp-block-media-text alignwide is-stacked-on-mobile" id="fig1"><figure class="wp-block-media-text__media"><img decoding="async" loading="lazy" width="551" height="331" src="http://medvedevgroup.com/wp-content/uploads/fig1.png" alt="" class="wp-image-383 size-full" srcset="https://medvedevgroup.com/wp-content/uploads/fig1.png 551w, https://medvedevgroup.com/wp-content/uploads/fig1-300x180.png 300w" sizes="(max-width: 551px) 100vw, 551px" /></figure><div class="wp-block-media-text__content">
<p class="has-small-font-size" id="fig1"><strong>Figure 1</strong>: A worked out example for a set of reads <em>R = {TATTA, TAATA} </em>and <em>k=3</em>. Here, the set of all k-mers is <em>S = sp<sup>k</sup>(R) </em>= <em>{TAT, ATT, TTA, TAA, AAT, ATA}</em>. Panel A shows <em>G<sub>1</sub> = dBG<sup>k</sup>(S)</em>&nbsp; and one possible Eulerian cycle of <em>G<sub>1</sub></em> (in blue). Panel B show the only other Eulerian cycle in <em>G<sub>1</sub></em> (in orange). The genome reconstruction corresponding to the blue cycle is <em>ATTAATAT</em> and to the orange cycle is <em>ATTATAAT</em> (note that because the genome is circular, the last two characters of each string are equal to the first two characters).&nbsp;</p>
</div></div>


<p>Instead, assemblers output contigs—long, contiguous segments which can unambiguously be inferred to be part of the genome. Finding such segments is a very different computational problem than finding a single Eulerian or Hamiltonian cycle<span id='easy-footnote-1-365' class='easy-footnote-margin-adjust'></span><span class='easy-footnote'><a href='https://medvedevgroup.com/2020/08/21/what-do-eulerian-and-hamiltonian-cycles-have-to-do-with-genome-assembly/#easy-footnote-bottom-1-365' title='For those who are curious, the problem of finding all possible contigs was first mentioned in Nagarajan and Pop (2009) and later explored by Tomescu and Medvedev (2016) and other follow-up papers. In this line of research, the set of substrings which must appear in all possible genome reconstructions are called omnitigs. For a broader discussion on how to formulate the genome assembly problem, see the tutorial by Medvedev (2019).'><sup>1</sup></a></span> . In fact, it was shown that finding all possible contigs can be done in polynomial time, regardless of whether the genome reconstruction is modeled as a Hamiltonian or Eulerian cycle (Tomescu and Medvedev, 2016). The algorithm used in practice (the unitig algorithm) is linear and nearly identical in the two graph models.</p>
<p>Perhaps you are not convinced by the above reasoning? Fine. For the sake of argument, let&#8217;s imagine that we really are interested in finding a single, arbitrary, genome reconstruction. But even in this case, the distinction between Eulerian and Hamiltonian cycles is misleading. We make our point with this Theorem, which we first state informally (a formal statement and proof will come <a href="#proof">below</a>):</p>
<p><span style="text-decoration: underline;">Main Theorem (informal)</span>: The following problems are equivalent and solvable in linear time:</p>
<ol>
<li>Find an Eulerian cycle in the de Bruijn graph where the edges correspond to k-mers in the reads.</li>
<li>Find a Hamiltonian cycle in the de Bruijn graph where the edges correspond to all the possible (k+1)-mers that can be obtained from the reads&#8217; k-mers.</li>
</ol>
<p>The first part of the theorem should not be surprising. It states one half of the story we started with, namely that we can solve the assembly problem in linear time by finding an Eulerian cycle in a de Bruijn graph. The second part of the theorem, though, adds a twist. It is about finding a Hamiltonian cycle, but it differs from the initial story in two ways. First, it is a Hamiltonian cycle in a de Bruijn graph, not in an overlap graph. This might seem strange, but there is no special connection between overlap graphs and the Hamiltonian cycle problem &#8212; one is free to find a Hamiltonian cycle in any graph they wish. Second, the problem is solvable in linear time in this case, even though it is NP-hard in general. This might also seem strange, but in fact it is common for NP-hard problems to have polynomial-time solutions for a restricted class of inputs<span id='easy-footnote-2-365' class='easy-footnote-margin-adjust'></span><span class='easy-footnote'><a href='https://medvedevgroup.com/2020/08/21/what-do-eulerian-and-hamiltonian-cycles-have-to-do-with-genome-assembly/#easy-footnote-bottom-2-365' title='For example, the satisfiability problem is NP-hard in general but is polynomial-time solvable when the clauses are restricted to have only two variables.'><sup>2</sup></a></span>.</p>
<p>What the theorem states, then, is that one can solve the assembly problem in linear time by finding a Hamiltonian cycle within an appropriately defined de Bruijn graph. The fact that the Hamiltonian cycle problem is NP-hard in general graphs is not directly relevant. What is important is the underlying structure of the de Bruijn graph which makes the Hamiltonian cycle problem easy to solve<span id='easy-footnote-3-365' class='easy-footnote-margin-adjust'></span><span class='easy-footnote'><a href='https://medvedevgroup.com/2020/08/21/what-do-eulerian-and-hamiltonian-cycles-have-to-do-with-genome-assembly/#easy-footnote-bottom-3-365' title='There is much more that has been said on the complexity of finding a single genome reconstruction. For a starting point, see the papers by Medvedev and Brudno (2007), Nagarajan and Pop (2009), Kingsford, Schatz, and Pop (2010), and Bresler et al (2013). The last two papers especially show how the complexity depends more on the repeat structure of the underlying genome than on the graph model used.'><sup>3</sup></a></span>. Hence, the initial story was right in the sense that using de Bruijn graphs is a good idea but wrong to imply that the complexity of the Hamiltonian cycle problem is a reason. All of this is of course assuming we are, for some reason, interested in an arbitrary genome reconstruction, which, as we argued earlier, we typically are not.</p>
<p>So why are de Bruijn graphs so popular for short read assembly, if not for the difference in the complexity of finding Eulerian or Hamiltonian cycles? The answer is complex, which might explain why the initial simple story was appealing. It may have to do with the simplicity of their implementation, the appeal of the k-mer abstraction, the ease of error correction, or with something else. In fact, the difference between using de Bruijn graphs and overlap graphs is poorly understood and is a fascinating open research problem. But, the Eulerian and Hamiltonian cycle dichotomy is not really relevant to assembly or to the popularity of de Bruijn graphs.</p>
<h2>Acknowledgements</h2>
<p>PM would like to thank Rayan Chikhi for feedback on the post and Alexandru Tomescu and Michael Brudno for many helpful discussions on this topic (and Michael Brudno specifically for introducing him to the problem a long time ago).</p>
<h2>References</h2>
<ul>
<li>Bresler, Guy, Ma&#8217;ayan Bresler, and David Tse. &#8220;Optimal assembly for high throughput shotgun sequencing.&#8221; In <i>BMC bioinformatics</i>, vol. 14, no. S5, p. S18. BioMed Central, 2013.</li>
<li>Carl Kingsford, Michael C. Schatz, and Mihai Pop. &#8220;Assembly complexity of prokaryotic genomes using short reads.&#8221; In <i>BMC bioinformatics</i> 11(1): 21, 2010.</li>
<li>Medvedev, Paul, Konstantinos Georgiou, Gene Myers, and Michael Brudno. &#8220;Computability of models for sequence assembly.&#8221; In <i>International Workshop on Algorithms in Bioinformatics</i>, pp. 289-301. Springer, Berlin, Heidelberg, 2007.</li>
<li>Medvedev, Paul. &#8220;Modeling biological problems in computer science: a case study in genome assembly.&#8221; <i>Briefings in bioinformatics</i> 20, no. 4 (2019): 1376-1383.</li>
<li>Nagarajan, Niranjan, and Mihai Pop. &#8220;Parametric complexity of sequence assembly: theory and applications to next generation sequencing.&#8221; <i>Journal of computational biology</i> 16, no. 7 (2009): 897-908.</li>
<li>Tomescu, Alexandru I., and Paul Medvedev. &#8220;Safe and complete contig assembly through omnitigs.&#8221; <i>Journal of Computational Biology</i> 24, no. 6 (2017): 590-602.</li>
</ul>
<h2><a id="proof"></a>Proof of theorem</h2>
<p>Let&#8217;s prove the main theorem, which follows almost directly from definitions. It may have been observed in previous papers, though we are not sure if it has been explicitly stated.</p>
<p>Let <em>t</em> be a string, <em>k</em> be a positive integer, and <em>S</em> be a set of <em>k</em>-mers. Let <em>R</em> be a set of reads, i.e. strings of length <em>k</em>.&nbsp; We define <em>pre<sub>i </sub>(t) </em>and <em>suf<sub>i </sub>(t) </em>as the prefix and suffix, respectively, of length <em>i</em> of <em>t</em>. The <em>k</em>-spectrum of <em>R</em>, denoted by <em>sp<sup>k</sup> (R)</em>, is the set of all <em>k</em>-mer substrings of the strings of <em>R</em>. The de Bruijn graph of order <em>k</em> of <em>S</em>, denoted as <em>dBG</em><sup>k</sup><em>(S)</em>, is defined as follows<span id='easy-footnote-4-365' class='easy-footnote-margin-adjust'></span><span class='easy-footnote'><a href='https://medvedevgroup.com/2020/08/21/what-do-eulerian-and-hamiltonian-cycles-have-to-do-with-genome-assembly/#easy-footnote-bottom-4-365' title='This graph is sometimes referred to as the edge centric dBG, not to be confused with a node centric one (see &lt;a href=&quot;https://www.biostars.org/p/175058/#256741&quot;&gt;https://www.biostars.org/p/175058/#256741&lt;/a&gt; for an explanation of the two terms).'><sup>4</sup></a></span>. The vertex set is <em>sp<sup>k-1</sup> (S)</em> , and for every <em>k</em>-mer <em>x</em> <span class="ILfuVd"><span class="hgKElc">∈</span></span><em>S</em>, we add an edge from <em>pre<sub>k-1 </sub>(x)</em>&nbsp; to <em>suf<sub>k-1 </sub>(x)</em> . <a href="#fig1">Figure 1</a> shows an example of a de Bruijn graph. We define the <i>closure </i>of <em>S</em>, denoted <em>closure(S)</em>,&nbsp; to be the set of all <em>(k+1)</em>-mers <em>y</em> such that <em>pre<sub>k</sub>(y) </em><span class="ILfuVd"><span class="hgKElc">∈ </span></span>S and&nbsp; <em>suf<sub>k</sub>(y) </em><span class="ILfuVd"><span class="hgKElc">∈ </span></span>S. Informally, it is the set of all <em>(k+1)</em>-mers that can be constructed from <em>S</em>.</p>
<p><span style="text-decoration: underline;">Main Theorem (formal):</span> Let <i>R</i> be a set of strings whose smallest length is <i>L</i>. Let <i>k</i> be a positive integer less than <i>L</i>. Then, there is a one-to-one correspondence between Eulerian cycles in <i>dBG<em><sup>k</sup></em>(sp<em><sup>k</sup></em>(R)</i> and Hamiltonian cycles in <i>dbG<em><sup>k+1</sup></em>(closure(sp<em><sup>k</sup></em>(R)))</i>. Moreover, an Eulerian or Hamiltonian cycle can be found in its respective graph in <i>O(</i>|<i>sp<em><sup>k</sup></em>(R)</i>|<i>) </i>time.</p>
<p><span style="text-decoration: underline;">Proof:</span> Let <i>S=sp<em><sup>k</sup></em>(R)</i>. Let <i>G<em><sub>1</sub></em> = dBG<em><sup>k</sup></em>(S)</i> and <i>G<em><sub>2</sub></em> = dBG<em><sup>k+1</sup></em> (closure(S))</i>. First, we show that the vertex set of <i>G<em><sub>2</sub></em></i> is <i>S</i>,&nbsp; i.e. <i>sp<em><sup>k</sup></em>(closure(S)) = S. </i>Clearly, <i>sp<em><sup>k</sup></em>(closure(S)) ⊆ S</i>, since no new <i>k</i>-mers are created during the closure process. Now, let <i>x</i> be a <i>k</i>-mer in <i>S</i>. It must appear in some read <i>r</i>, and since the length of <i>r</i> is greater than <i>k</i>, <i>x</i> must be a prefix or suffix of some <i>(k+1)</i>-mer <i>y</i> in <i>R</i>. Moreover, <i>y</i> must be in <i>closure(S), </i>since its prefix and suffix are both in <i>r</i> and hence in <i>S</i>. Therefore, <i>x <span class="ILfuVd"><span class="hgKElc">∈</span></span> sp<em><sup>k</sup></em>(closure(S)</i>, completing our proof that <i>S ⊆ sp<em><sup>k</sup></em>(closure(S)) </i>&nbsp;and the vertex set of <i>G<em><sub>2</sub></em></i> is <i>S</i>.</p>
<p>Observe that a sequence of <i>k</i>-mers <i>C<em><sub>1</sub></em> = x<em><sub>0</sub></em>, &#8230;, x<em><sub>n-1</sub></em>&nbsp; </i>is a sequence of edges defining an Eulerian cycle in <i>G<em><sub>1</sub></em></i> if and only if the set of k-mers of&nbsp; <i>C<em><sub>1</sub></em></i>&nbsp; is exactly <i>S</i> (without any repetitions) and, for all <i>i</i>, <i>suf<em><sub>k-1</sub></em> (x<em><sub>i</sub></em>) = pre<em><sub>k-1</sub></em> (x<em><sub>i + 1 mod n</sub></em>)</i>. Also, observe that a sequence of k-mers <i>C<em><sub>2</sub></em> = x<em><sub>0</sub></em>, &#8230;, x<em><sub>n-1</sub></em></i> is a sequence of vertices defining a Hamiltonian cycle in <i>G<em><sub>2</sub></em></i> if and only if the exact same criteria holds, i.e. the set of <em>k</em>-mers of <i>C<em><sub>2</sub></em></i> is exactly <i>S </i>(without repetitions) and, for all <i>i</i>, <i>suf<em><sub>k-1</sub></em> (x<em><sub>i</sub></em>) = pre<em><sub>k-1</sub></em> (x<em><sub>i+1 mod n</sub></em>)</i>. Thus, there is a one-to-one correspondence between Eulerian cycles in <i>dBG<em><sup>k</sup></em>(S)</i>&nbsp; and Hamiltonian cycles in <i>dBG<em><sup>k+1</sup></em>(closure(S))</i>. <a href="#fig2">Figure 2</a> shows an example.</p>


<div class="wp-block-media-text alignwide is-stacked-on-mobile" style="grid-template-columns:76% auto" id="fig2"><figure class="wp-block-media-text__media"><img decoding="async" loading="lazy" width="1024" height="424" src="http://medvedevgroup.com/wp-content/uploads/fig2-1024x424.png" alt="" class="wp-image-385 size-full" srcset="https://medvedevgroup.com/wp-content/uploads/fig2-1024x424.png 1024w, https://medvedevgroup.com/wp-content/uploads/fig2-300x124.png 300w, https://medvedevgroup.com/wp-content/uploads/fig2-768x318.png 768w, https://medvedevgroup.com/wp-content/uploads/fig2.png 1089w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure><div class="wp-block-media-text__content">
<p class="has-small-font-size" id="fig2"><strong>Figure 2:</strong> Using the same example as in Figure 1, this figure shows <em>G<sub>2</sub> = dBG<sup>k+1</sup>(closure(S))</em> and the two possible Hamiltonian cycles in <em>G<sub>2</sub></em>. Notice that the <em>k</em>-mer sequence corresponding to the blue cycle in Panel A is the same as in Fig 1A; similarly, the <em>k</em>-mer sequence for the orange cycle in Panel B is the same as in Fig 1B.</p>
</div></div>


<p>For the running time, an Eulerian cycle can be found in time linear in the number of edges using a classical algorithm, e.g., Hierholzer’s Algorithm. Giving the one-to-one correspondence above, the vertex labels of a Hamiltonian cycle in <i>G<em><sub>2</sub></em></i> can be found by outputting the edge labels of an Eulerian cycle in <i>G<em><sub>1</sub></em></i>. Hence, the running times for the two problems are equivalent.</p>
<p>∎</p>]]></content:encoded>
					
					<wfw:commentRss>https://medvedevgroup.com/2020/08/21/what-do-eulerian-and-hamiltonian-cycles-have-to-do-with-genome-assembly/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>Algorithm Engineering / Experimental Algorithms</title>
		<link>https://medvedevgroup.com/2020/04/01/algorithm-engineering-experimental-algorithms/</link>
		
		<dc:creator><![CDATA[paulmedv]]></dc:creator>
		<pubDate>Wed, 01 Apr 2020 01:58:54 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<guid isPermaLink="false">http://medvedevgroup.com/?p=321</guid>

					<description><![CDATA[If you know me personally, then you know how often I complain about the gap between theory and practice in bioinformatics. Recently, I came across a research area that seeks to address this gap, though not in bioinformatics specifically. It <span class="readmore"><a href="https://medvedevgroup.com/2020/04/01/algorithm-engineering-experimental-algorithms/">Read More</a></span>]]></description>
										<content:encoded><![CDATA[<p></p>


</p>
<p>If you know me personally, then you know how often I complain about the gap between theory and practice in bioinformatics. Recently, I came across a research area that seeks to address this gap, though not in bioinformatics specifically. It is called experimental algorithms, or algorithm engineering. Briefly, &#8220;Experimental Algorithmics studies algorithms and data structures by joining experimental studies with the traditional theoretical analyses&#8221; (Moret, 2000). I had heard about this before in passing, but I finally took the time to look up details about what this is. I wish I had done this years earlier.</p>
<p>



</p>
<p>There is a lot that has been written about it, so I don&#8217;t think I have anything to add for now. But, I decided to make a post that collects all the resources I found and a few questions I had. This is partially because it will help me organize my thoughts, but also might be a good starting point for someone who, like me, wants to learn more about it. Please note that this list is definitely not comprehensive or representative. Please leave a comment to add things that I missed or if you have any other thoughts.</p>
<p>



</p>
<p>What is algorithm engineering / experimental algorithms and what problems is it intended to address?</p>
<p>



</p>
<ul>
<li>Sanders, Peter. &#8220;<a href="https://dl.acm.org/doi/10.5555/2790231.2790237" target="_blank" rel="noreferrer noopener" aria-label="Algorithm engineering–an attempt at a definition using sorting as an example (opens in a new tab)">Algorithm engineering–an attempt at a definition using sorting as an example</a>.&#8221; ALENEX 2010<em>.</em></li>
<li>Moret, Bernard ME. &#8220;<a href="http://iar.cs.unm.edu/~moret/dimacs_algorithmics.pdf" target="_blank" rel="noreferrer noopener" aria-label="Towards a discipline of experimental algorithmics (opens in a new tab)">Towards a discipline of experimental algorithmics</a>.&#8221; <em>Data Structures, Near Neighbor Searches, and Methodology: Fifth and Sixth DIMACS Implementation Challenges</em> 59 (2002): 197-213.</li>
<li><a href="http://dx.doi.org/10.1145/2015996.2015997" target="_blank" rel="noreferrer noopener" aria-label="On experimental algorithmics: an interview with Catherine McGeoch and Bernard Moret (opens in a new tab)">On experimental algorithmics: an interview with Catherine McGeoch and Bernard Moret</a></li>
<li>Chapter 1 from Müller-Hannemann, Matthias, and Stefan Schirra. <em><a href="https://link.springer.com/book/10.1007%2F978-3-642-14866-8" target="_blank" rel="noreferrer noopener" aria-label="Algorithm Engineering: Bridging the Gap Between Algorithm Theory and Practice (opens in a new tab)">Algorithm Engineering: Bridging the Gap Between Algorithm Theory and Practice</a></em>. Springer, 2001.</li>
</ul>
<p>



</p>
<p>What is the methodology for experimentally evaluating an algorithm?</p>
<p>



</p>
<ul>
<li>A whole book about it: Müller-Hannemann, Matthias, and Stefan Schirra. <em><a href="https://link.springer.com/book/10.1007%2F978-3-642-14866-8" target="_blank" rel="noreferrer noopener">Algorithm Engineering: Bridging the Gap Between Algorithm Theory and Practice</a></em>. Springer, 2001.
<ul>
<li style="list-style-type: none;">
<ul>
<li>Chapter 4.8 struck me as particularly interesting. It talked about how to try to extrapolate asymptotic behavior from experiments.</li>
</ul>
</li>
</ul>
</li>
<li>Another book about it: <a href="https://www.cambridge.org/core/books/guide-to-experimental-algorithmics/CDB0CB718F6250E0806C909E1D3D1082" target="_blank" rel="noreferrer noopener" aria-label="A Guide to Experimental Algorithmics (opens in a new tab)">A Guide to Experimental Algorithmics</a> by Catherine C. McGeoch
<ul>
<li style="list-style-type: none;">
<ul>
<li>(this book is behind a paywall that even Penn State and scihub are not able to penetrate&#8230;but there is a PDF floating out there if you google it)</li>
</ul>
</li>
</ul>
</li>
<li>A recent article: Angriman, Eugenio, et al. &#8220;<a href="https://doi.org/10.3390/a12070127" target="_blank" rel="noreferrer noopener" aria-label="Guidelines for experimental algorithmics: A case study in network analysis.&quot;  (opens in a new tab)">Guidelines for experimental algorithmics: A case study in network analysis.&#8221; </a><em>Algorithms</em> 12.7 (2019): 127.</li>
</ul>
<p>



</p>
<p>Some classes that teach algorithm engineering: </p>
<p>



</p>
<ul>
<li><a href="https://cs.au.dk/~gerth/ae16/">https://cs.au.dk/~gerth/ae16/</a></li>
<li><a href="https://people.csail.mit.edu/jshun/6886-s19/">https://people.csail.mit.edu/jshun/6886-s19/</a></li>
</ul>
<p>



</p>
<p>What conferences / journals publish work in experimental algorithms / algorithm engineering?</p>
<p>



</p>
<ul>
<li>SIAM Symposium on Algorithm Engineering and Experiments (ALENEX)</li>
<li>European Symposium on Algorithms (ESA): Engineering and Application Track </li>
<li>Symposium on Experimental Algorithms (SEA)</li>
<li>ACM Journal of Experimental Algorithmics (JEA)</li>
</ul>
<p>



</p>
<p>What about bioinformatics?</p>
<ul>
<li>Here is an example of an older paper that presents itself in the mold of algorithm engineering:
<ul>
<li style="list-style-type: none;">
<ul>
<li>Moret, Bernard ME, David A. Bader, and Tandy Warnow. &#8220;<a href="https://doi.org/10.1023/A:1014362705613" target="_blank" rel="noreferrer noopener" aria-label="High-performance algorithm engineering for computational phylogenetics (opens in a new tab)">High-performance algorithm engineering for computational phylogenetics</a>.&#8221; <em>The Journal of Supercomputing</em> 22.1 (2002): 99-111.</li>
</ul>
</li>
</ul>
</li>
<li>Here are two recent k-mer data structure bioinformatics papers
<ul>
<li style="list-style-type: none;">
<ul>
<li>Limasset, Antoine, et al. &#8220;<a href="http://dx.doi.org/10.4230/LIPIcs.SEA.2017.25" target="_blank" rel="noreferrer noopener" aria-label="Fast and scalable minimal perfect hashing for massive key sets (opens in a new tab)">Fast and scalable minimal perfect hashing for massive key sets</a>.&#8221; <em>16th International Symposium on Experimental Algorithms</em>. Vol. 11. 2017.</li>
<li>Zentgraf, Jens, Timm, Henning , and Rahmann, Sven. &#8220;<a href="https://doi.org/10.1137/1.9781611976007.15" target="_blank" rel="noreferrer noopener" aria-label="Cost-optimal assignment of elements in genome-scale multi-way bucketed Cuckoo hash tables (opens in a new tab)">Cost-optimal assignment of elements in genome-scale multi-way bucketed Cuckoo hash tables</a>.&#8221; ALENEX 2020.</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>



</p>
<p>Questions that I am left with:</p>
<p>



</p>
<ul>
<li>What does a paper in algorithm engineering / experimental algorithms look like? How is it different from other papers?
<ul>
<li style="list-style-type: none;">
<ul>
<li>I found this question difficult to answer. I looked through the recent ALENEX proceedings to get an idea. Compared to SODA papers, the difference was clear &#8212; there was always an experimental analysis, often extensive. But beyond that? It seemed that many bioinformatics papers published in a journal like Oxford Bioinformatics or in a conference like WABI and RECOMB could have been ALENEX papers. At least, the papers without much biology. I&#8217;m thinking for example of my papers on the compaction of de Bruijn graphs or on other papers for data structures for k-mers. Is it the case that for a paper to belong to the algorithm engineering community it should study an algorithm for a problem of BROAD interest, i.e. one that is relevant to more than just one application domain like bioinformatics? I don&#8217;t know.</li>
</ul>
</li>
</ul>
</li>
<li>What is the relationship of algorithm engineering / experimental algorithms to Data Science?
<ul>
<li style="list-style-type: none;">
<ul>
<li>It seems like there is an intersection, e.g. the McGeoch book has a chapter on &#8220;Data Analysis&#8221; that would today be part of a Data Science course. Both fields differentiate themselves from Statistics and Computer Science by focusing on empirical performance, rather than theoretical properties of the algorithm or the data.</li>
</ul>
</li>
</ul>
</li>
<li>What is the relationship of algorithm engineering / experimental algorithms to <a href="https://en.wikipedia.org/wiki/Computational_science" target="_blank" rel="noreferrer noopener" aria-label="Computational Science (opens in a new tab)">Computational Science</a>?</li>
<li>What are the big open questions in the field of algorithm engineering / experimental algorithms?
<ul>
<li style="list-style-type: none;">
<ul>
<li>Bioinformaticians often get asked this question, and it&#8217;s not an easy one to answer for us. I&#8217;m not sure if it is even a fair question &#8212; should a field necessarily have major open questions? It&#8217;s not a natural science, and maybe a field that is engineering rather than science does not need to have such questions. Either way, are there such questions in algorithm engineering / experimental algorithms?</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>My Twitter guidelines</title>
		<link>https://medvedevgroup.com/2020/02/25/twitter-guidelines/</link>
					<comments>https://medvedevgroup.com/2020/02/25/twitter-guidelines/#comments</comments>
		
		<dc:creator><![CDATA[paulmedv]]></dc:creator>
		<pubDate>Tue, 25 Feb 2020 16:44:29 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<guid isPermaLink="false">http://medvedevgroup.com/?p=307</guid>

					<description><![CDATA[I was recently asked about my attitude towards Twitter, which inspired me to write a blog post about it. It took me awhile to start using Twitter, and then only as a passive observer. On the one hand, the format <span class="readmore"><a href="https://medvedevgroup.com/2020/02/25/twitter-guidelines/">Read More</a></span>]]></description>
										<content:encoded><![CDATA[<p>I was recently asked about my attitude towards Twitter, which inspired me to write a blog post about it. It took me awhile to start using Twitter, and then only as a passive observer. On the one hand, the format is not conducive to constructive discussions; on the other, Twitter is an amazing way to connect and share information with other researchers. On balance, I decided that until something better comes along, I will use Twitter.</p>
<p>The potential options for what to (re)tweet are large. I was initially overwhelmed by having to make a decision every time I wondered whether to tweet something or not. To overcome this, I came up with a set of guidelines for this decision making process. These guidelines greatly reduced the activation energy for writing a tweet. I wanted to share them here in case 1) anyone was curious why I do or do not (re)tweet certain things, 2) my experience can help someone have an easier time with Twitter, and 3) other people are willing to share their own guidelines. Please keep in mind that I do not suggest these guidelines as general rules for Twitter usage. They work to help me achieve my personal goals but, to the extent your goals are different, will not necessarily work for you.</p>
<p>Here are my guidelines:</p>
<ol>
<li><strong>Avoid using Twitter for discussion.</strong> I want to use Twitter for sharing information, but not for engaging in discussion. I would love to engage in constructive discussion in an open forum, but I don’t find Twitter is a good platform for that.</li>
<li><strong>Limit tweets to research-related content</strong>. A narrow and cohesive scope means that my tweets will tend to be of interest to many of my followers. I don’t expect that people that care about my research are also interested in my views on politics or in pictures of my cat (though he is sooooo cute).</li>
<li><strong>Avoid tweeting on controversial issues.</strong> The reason is that such tweets can potentially generate vitriol and aggression, and even the anticipation of this leads to anxiety for me. This is a somewhat selfish rule, as it prioritizes my mental health over the need to speak out on important issues related to academia. Such issues may include research ethics, publication biases, or university politics. These are really important, so I feel some guilt about not commenting on them on Twitter; however, I can affect positive change through other means not involving Twitter (e.g. through my actions when I’m in a position to do something). Since in today’s climate it is not always possible to predict what may be controversial, my rule of thumb is to stick to research related content as a safe bet (it also matches rule 2).</li>
<li><strong>My tweets are not endorsements.</strong> If I retweet a link to a paper, it does not mean it’s a good paper. It just means it is research that someone has done on a topic that is of interest to me or to my followers. If I were to retweet only papers that I endorse, it means I would have to read the paper first. As a result, I would not retweet anything in a timely manner. Adopting this rule was crucial for me to be able to start to actively engage with Twitter.</li>
<li><strong>Try to promote research rather than people.</strong> Twitter is a good venue to promote research, like tweeting about a useful paper. But I try to make a distinction between promoting people’s research vs. the people themselves. For example, if a tweet has a link to a resource (e.g. a paper or software), then it is promoting the research. If a tweet just congratulates somebody on an award, then it is promoting the person. I think promoting people is dangerous if one does not know them well (for example, what if somebody does great research but turns out to be a jerk).</li>
<li><strong>Be positive.</strong> If I enjoy reading a paper or see a great talk or come across a great resource, Twitter is a great way to let the authors know their work is appreciated. What if I see something for which I want to make a more critical comment? Most of the time, I can do that privately.</li>
<li><strong>Avoid drive-by research commentary, especially critical one.</strong> For example, “Thanks for the paper but your analysis sucks.” A paper is often the result of years of work by a student and the least one can do before trashing it is to read it completely and give a thought-out response, including a balanced focus on the strengths and weakness (some good advice <a href="https://twitter.com/pashadag/status/1000417894331662336">in this tweet</a>). This is what we strive for when writing reviews, and I don’t think we should drop this standard because of Twitter. Drive-by criticism is often done by people who have not even read the paper carefully. Drive-by positive statements are more acceptable, but only if I have read the paper enough to endorse it.</li>
<li><strong>Try to be honest about my intentions.</strong> I see a lot of tweets of the form: “I am so humbled that our paper X won the greatest paper of all time award.” If you were truly humbled, then you wouldn’t be tweeting about it. In truth, you just want to show-off your accomplishment. There is nothing wrong with that. I would just phrase it more honestly, for example: “Our paper X won the greatest paper of all time award.”</li>
</ol>
<p>These guidelines serve me as a baseline, but I feel free to break them if needed. My thoughts about this will continue to evolve based on my experience, feedback from others, and the evolution of Twitter and its alternatives.</p>
<p>Let me also add that there are many alternate approaches to using Twitter that violate the guidelines above. For example, one might choose to engage with controversial issues, or one might be negative as a way to effect positive change. It just depends on what works for you and what you want to achieve. So, I don’t proselytize any of the above, except perhaps avoiding the drive-by criticism. I am not sure if I see a justification for that.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://medvedevgroup.com/2020/02/25/twitter-guidelines/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>What are some common issues I find when reviewing algorithmic bioinformatics conference papers?</title>
		<link>https://medvedevgroup.com/2019/08/11/what-are-some-common-issues-i-find-when-reviewing-algorithmic-bioinformatics-conference-papers/</link>
		
		<dc:creator><![CDATA[paulmedv]]></dc:creator>
		<pubDate>Sun, 11 Aug 2019 17:56:12 +0000</pubDate>
				<category><![CDATA[General]]></category>
		<guid isPermaLink="false">http://medvedevgroup.com/site/?p=79</guid>

					<description><![CDATA[UPDATE: This post, in a slightly modified and improved form, is now published at https://doi.org/10.1371/journal.pcbi.1007742 . Please see there for the latest version. As a PC member, I sometimes find it frustrating to see a paper that potentially has a <span class="readmore"><a href="https://medvedevgroup.com/2019/08/11/what-are-some-common-issues-i-find-when-reviewing-algorithmic-bioinformatics-conference-papers/">Read More</a></span>]]></description>
										<content:encoded><![CDATA[
<p class="has-background has-medium-font-size has-white-background-color">UPDATE: This post, in a slightly modified and improved form, is now published at <a href="https://doi.org/10.1371/journal.pcbi.1007742" target="_blank" rel="noreferrer noopener" aria-label="https://doi.org/10.1371/journal.pcbi.1007742  (opens in a new tab)">https://doi.org/10.1371/journal.pcbi.1007742 </a>. Please see there for the latest version.</p>



<p class="has-medium-font-size">As a PC member, I sometimes find it frustrating to see a paper that potentially has a great contribution be rejected because of the way it was written. I wish that I had the opportunity to tell the authors &#8212; hey, you forgot to do this really important thing, without which its hard to accept the paper, but if you could go back and fix it, you might have a great paper for the conference. In our conference format, this type of back-and-forth is usually not possible. This motivated writing this post, so that newcomers to the field have a chance to know in advance what a potential reviewer might look for in an algorithmic bioinformatics conference paper.</p>



<p class="has-medium-font-size">What do I mean by algorithmic bioinformatics conference paper? I am thinking of the subset of papers submitted to RECOMB/WABI/ISMB that take an algorithm-based approach to solving a bioinformatics problem. This is largely intended to contrast against papers more rooted in statistical methodology, where the standards are a bit different. I also focus on conference reviews, where the process is a bit different than for a journal. When reviewing a paper for a bioinformatics journal like <em>Oxford Bioinformatics</em>, there is of course an opportunity for the authors to address any limitations in a revision.</p>



<p class="has-medium-font-size">I want to also add a disclaimer that this is not in any way an official statement about what PC members would look for in a review. As far as I know, there is no such official policy, and the things that each PC member looks for do not completely overlap. There is a diversity of standards and that is why each paper has multiple PC members reviewing it. I cannot speak for others, though I hope that people can add their comments and feedback.</p>



<p class="has-medium-font-size">When I review, the first thing I try to identify is: what is the main novel contribution of the paper? Is it an idea, a theorem, an algorithm, or a tool (i.e. software) people can use? Sometimes a paper has all these components, but not all of them contribute to the novelty of the paper. Here are some examples: </p>



<p class="has-medium-font-size">1) The paper contains an algorithm and a tool that implements the algorithm. The algorithm itself may be a simple modification of what is previously known, but the algorithm is implemented in a novel software tool for an important biological problem. If the tool performance is an improvement over previous tools, then the tool is the main contribution.&nbsp;</p>



<p class="has-medium-font-size">2) In another example, the main novelty is in the algorithm or in its analysis, and this is what the reader is intended to take away from the paper. The paper may have implemented a tool, but the intention of the tool is to only be a prototype to test the feasibility of the idea. The tool is not the main contribution. </p>



<p class="has-medium-font-size">3) Sometimes, the main contribution of the paper is novel biological findings, without any methodological (either algorithmic or software) novelty. This is not really within the scope of the RECOMB/ISMB†/WABI conferences, which has to be methodological. Certainly, having novel biological findings can serve to demonstrate the strength of the methodological contribution. But if you discover a cure for cancer by applying existing software, then it is probably outside the scope of RECOMB/ISMB†/WABI.</p>



<p class="has-medium-font-size">It is up to the authors to make the main contribution of the paper crystal clear to the reader. As a reviewer, I will then base my evaluation on what the authors claim. If the authors&#8217; claim is not clearly stated, then I will do my best to guess what it is. But if I make a mistake, then I may end up evaluating the paper from a completely incorrect angle. </p>



<p class="has-medium-font-size">Here are some common issues I find with papers. This is not intended to be an exhaustive list and only includes issues that are both basic and that I&#8217;ve seen multiple times. In a competitive venue, a paper is usually accepted based on its strengths rather than a lack of weaknesses; however, in my experience, the weaknesses below typically ruin a paper&#8217;s chance of acceptance. </p>



<p class="has-medium-font-size"><strong>Context within prior algorithmic work is not given</strong>:&nbsp; A common scenario where this happens is when the authors developed a method for a particular biological dataset, and there are no other tools designed specifically for this kind of dataset or problem. However, the problem and/or solution might be very similar to what has been previously studied. For instance, many problems come down to clustering of some data points (e.g. genes in a network or reads from a sequencing experiment) or to some version of sequence alignment. The algorithmic context of such a paper is, at least in part, clustering or, respectively, alignment algorithms. Sometimes the authors provide the biological context (e.g. what is the relationship to previous approaches to finding genes in a network) but leave out the algorithmic one (e.g. what is the relationship to previous clustering algorithms). Why is this particular problem or dataset different enough so that standard clustering or alignment techniques do not apply? If the authors present a clustering algorithm for the problem but do not answer this question in the intro, then their contribution is not placed in the algorithmic context &#8212; which makes it hard to evaluate its novelty.</p>



<p class="has-medium-font-size"><strong>Unclear writing:</strong> Some papers will contain many spelling and grammatical mistakes, or ambiguous notation and terminology.&nbsp; I try to do the best I can to understand the contribution of the paper, and often I do understand it in spite of these problems. In such cases, it does not greatly influence my overall decision about the paper, and I generally trust the authors to clean up the paper before publication (if it is accepted). In other cases, I cannot understand the paper after a reasonable amount of time trying. In these cases, I simply cannot evaluate the paper&#8217;s contribution.<br></p>



<p class="has-medium-font-size"><strong>The paper is written in the style of a biology journal:</strong> In biology journals, the methods section is often written as a step-by-step manual necessary to reproduce the results (i.e.&nbsp;a pipeline of processing steps on the data). This type of presentation focuses on implementation details and reproducibility rather than highlighting the novelty of the algorithm. Even if the method is novel, when it is written in this style it is hard for the reader to identify and understand the novel parts. Another aspect of this is that for a biology journal, the results section comes before the methods section. Doing this for an algorithmic bioinformatics paper is not in it of itself a problem, but it usually correlates with not enough focus being given to the method.</p>



<p class="has-medium-font-size"><strong>Claims in the intro that are not supported by the rest of the paper</strong>: For example, the authors claim that their tool is the fastest to-date for a problem, but the results section only contains a comparison against one other tool or only on a narrow type of data. In such cases, I simply ask the authors to tone down their claims. However, sometimes the claims are central to the claimed importance of the paper, in which case this feels a bit disingenuous. Another example is the bait-and-switch, when the intro claims that the paper presents an algorithm for some interesting problem. But, what ends up being evaluated in the results is an algorithm for a slightly different problem.&nbsp; </p>



<p class="has-medium-font-size"><strong>There is neither a strong theoretical contribution nor an experimental evaluation: </strong>Some contributions are theoretical &#8212; a powerful idea, a way of thinking about a problem, or a theorem which can be applied by other algorithm developers. These papers require a lot of work on the modeling or theoretical side, and it can be justifiable if experimental results are either not included or limited. However, in most other cases, experimental evaluation is essential to a paper. If this is missing or is inappropriate to the problem, it can make it impossible to evaluate the strength of the contribution. </p>



<p class="has-medium-font-size"><strong>There is no comparison against other work: </strong>The authors sometimes find it obvious that their method should work much better than anything else out there. They may be right, but it is important to demonstrate this in the paper by finding the most compelling alternative approach and comparing against it.&nbsp; </p>



<p class="has-medium-font-size"><strong>Software</strong>: If the main contribution of the paper is a tool, then the tool should be usable. At the very least, I should be able to download the software, install it, and run it on a toy input that is provided in the download.&nbsp; If I can see that the tool already has some users (e.g. through GitHub activity), then this is enough to demonstrate its usability and I may not bother to try it out myself. On the other hand, if the paper contains a tool that is only a prototype and is not the main contribution, then the usability of the software is not something I consider very important.</p>



<p class="has-medium-font-size"><strong>Correctness: </strong>Sometimes the authors present an algorithm or data structure for which they prove the correctness, or it is obvious through the construction. For example, it could be a data structure to represent and query some data. However, when they evaluate their tool for its e.g. runtime, it is still essential that the correctness of the algorithm is explicitly verified in the experiments. This can be a simple one line that says: e.g. we verified that the new data structure gives the same answers to queries as the previous one on all the evaluated datasets. However, without this check, how does the reader know that the algorithm is not twice as fast as the competition just because it has a bug?</p>



<p class="has-medium-font-size"><strong>No analysis of running time or memory usage</strong>: In most cases, it is important for an algorithmic bioinformatics paper to present the running time and memory usage of the algorithm, either through experimental evaluation and/or theoretical analysis. This is a very natural thing to do for computer scientists, but I sometimes find that researchers with a different background forget to include this. In other cases, the authors do not include any memory or time analysis because they know that it is tiny and besides the main point, but it may not be at all obvious to the reader. In such cases, a simple statement to the effect that the memory usage or running time is negligible would suffice.&nbsp;</p>



<p>† ISMB is very diverse, with many different types of tracks and presentations. This blog only refers to those papers focusing on methods. Certain tracks may also feature papers focusing on the biology. </p>



<p>[   Subscribe to new posts via <a rel="noreferrer noopener" href="http://feeds.feedburner.com/medvedev-blog" target="_blank">RSS feed</a>. ]</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
