<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Algorithms on Bytes of Life</title><link>https://yangyangli.top/categories/algorithms/</link><description>Recent content in Algorithms on Bytes of Life</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>2026 &lt;a class='hover:underline hover:decoration-primary-400 hover:text-primary-500' href=https://yangyangli.top target=_blank rel='noopener noreferrer'&gt;Yangyang Li&lt;/a&gt;</copyright><lastBuildDate>Sun, 12 Mar 2023 00:00:00 +0000</lastBuildDate><atom:link href="https://yangyangli.top/categories/algorithms/index.xml" rel="self" type="application/rss+xml"/><item><title>Efficient Genomic Interval Search Using SIMD-Enhanced COITree</title><link>https://yangyangli.top/posts/019-efficient-genoimc-interval-search/</link><pubDate>Sun, 12 Mar 2023 00:00:00 +0000</pubDate><guid>https://yangyangli.top/posts/019-efficient-genoimc-interval-search/</guid><description>&lt;h2 class="relative group"&gt;Background
&lt;div id="background" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none"&gt;
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#background" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;In bioinformatics, researchers frequently analyze various types of genomic data, such as DNA sequencing data, RNA sequencing data, and epigenetic data.
Manipulating genomic intervals is a crucial task in comprehending the genetic basis of diseases and identifying potential therapeutic targets.
Genomic intervals are defined as regions that span from a starting position to an ending position and can encompass genes, regulatory elements, and other functional elements of the genome.
One primary application of genomic interval manipulation is analyzing ChIP-seq data.
Moreover, manipulating genomic intervals allows for the integration of ChIP-seq data with other genomic data types, such as gene expression and genetic variations.
This integration provides a more comprehensive understanding of biological processes and their contribution to normal development or disease.
However, integrating these data types into a single data structure can pose challenges, especially when handling large datasets.
Cache Oblivious Interval Trees (COITree), with cache-oblivious design and efficient query algorithms, have the potential to handle and integrate multiple types of genomic data into a single data structure.
It stores the intervals in contiguous memory and employs in-order van Emde Boas layout to enhance query performance.
The tree is designed to optimize cache performance by reducing the number of cache misses during traversal.
However, COITree still suffer from performance bottlenecks, particularly when dealing with large datasets.
One approach to addressing this bottleneck is to use Single Instruction Multiple Data (SIMD), which is optimized for vector operations, to improve the performance of COITree.
Thus, I hypothesize that the approach is a viable solution for improving the speed and efficiency of genomic interval analysis.&lt;/p&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://yangyangli.top/posts/019-efficient-genoimc-interval-search/featured.jpg"/></item><item><title>Bioinformatics Algorithm Library aka BINARY</title><link>https://yangyangli.top/projects/003-bioinformatics-algorithm-library/</link><pubDate>Mon, 26 Sep 2022 00:00:00 +0000</pubDate><guid>https://yangyangli.top/projects/003-bioinformatics-algorithm-library/</guid><description>&lt;p&gt;The library is a collection of algorithms and data structures that are designed for modern C++ bioinformatics applications.
You can use the library in your own projects or as a part of a larger project.&lt;/p&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://yangyangli.top/projects/003-bioinformatics-algorithm-library/featured.png"/></item><item><title>Nei Saitou Neighbor Joining</title><link>https://yangyangli.top/posts/008-nei-saitou-neighbor-joining/</link><pubDate>Wed, 03 Apr 2019 00:00:00 +0000</pubDate><guid>https://yangyangli.top/posts/008-nei-saitou-neighbor-joining/</guid><description>&lt;h2 class="relative group"&gt;1. Background
&lt;div id="1-background" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100 select-none"&gt;
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#1-background" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;Before diving into code, the description of NJ algorithm can be found in
&lt;figure&gt;
&lt;img class="my-0 rounded-md" loading="lazy" alt="This Link" src="https://cdn.jsdelivr.net/gh/cauliyang/blog-image@main//img/1605172209524.png"&gt;
&lt;/figure&gt;
, where first column indicates parent node, and second column is its children node, the last column is the value of edge.&lt;/p&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://yangyangli.top/posts/008-nei-saitou-neighbor-joining/featured.jpg"/></item></channel></rss>