本篇文章给大家谈谈smith waterman,以及waterman钢笔的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
文章详情介绍:
人工智能如何改变基因组学?
AI 和加速计算正在为基因组测序流程开辟新的可能性。
全基因组测序领域的进步已经点燃了数字生物学的革命。
随着新一代高通量测序成本的下降,基因组学项目正在世界各地展开。
无论是对患有罕见疾病的危重病人进行测序,还是大规模人群的遗传学研究,全基因组测序正在成为临床工作流程和药物研发的重要一环。
但基因组测序只是第一步。基因组测序数据分析需要通过加速计算、数据科学和 AI 来读取和理解基因组。随着摩尔定律(集成电路中的晶体管数量每两年增加一倍)的终结,人们需要新的计算方法来降低数据分析的成本、提高读取的吞吐量和准确性并最终释放人类基因组的全部潜力。
生物信息学数据的爆发
一个人的全基因组测序会产生约 100GB 的原始数据。而在使用如深度学习和自然语言处理这类复杂的算法和应用对基因组进行测序后,这个数字会增加一倍以上。
伴随着人类基因组测序成本的不断降低,测序数据量呈现指数级增长。
据估计,全人类基因组存储的数据量将在 2025 年达到 40EB,这比存储人类从古至今说过的每一个字所需要的存储空间还高出 8 倍。
许多基因组分析流程正在竭力应对不断产生的大量原始数据。
加速基因组测序分析流程
测序分析十分复杂且需要耗费大量算力,并且还需要许多步骤来检测人类基因组中的遗传变异。
深度学习对于使用基于循环神经网络(RNN)和卷积神经网络(CNN)的模型在基因组仪器内进行碱基检测变得越来越重要。神经网络解读仪器产生的图像和信号数据并对人类基因组的 30 亿个核苷酸对进行推断。这在提高读取准确性的同时确保碱基检测更加实时,进一步加快了从样本到变异检测格式(VCF)再到最终报告的整个基因组分析流程。
在基因组二次分析中,比对技术运用参考基因组来协助重新拼接 DNA 片段测序后的基因组。
领先的比对算法 BWA-MEM 能够帮助研究人员迅速将 DNA 序列读取结果映射到参考基因组上。另一种用于 RNA-seq 数据的黄金标准比对算法 STAR 可通过准确、极速的比对来更好地理解基因表达。
动态规划算法 Smith-Waterman 也被广泛用于比对,在包含一个动态规划加速器的 NVIDIA H100 Tensor Core GPU 上,比对步骤加快了 35 倍。
发现遗传变异
测序项目最关键的阶段之一是变异检测,例如单核苷酸变化、小规模插删或复杂重排。研究人员将在这个阶段检测病人样本和参考基因组之间的差异。这有助于临床医生确定危重病人可能患有的遗传疾病,或帮助研究人员在整个人群中发现新的药物靶标。
经 GPU 优化和加速的检测工具,如博德研究所的 GATK(用于生殖系变异检测的基因组分析工具套件),可以加快分析速度。为了帮助研究人员排除 GATK 结果中的假阳结果,NVIDIA 与博德研究所联合推出了一款利用 CNN 过滤变异的深度学习工具 NVScoreVariants。
基于深度学习的变异检测工具,如谷歌的 DeepVariant,可在无需单独过滤步骤的情况下,提高检测的准确率。DeepVariant 使用 CNN 架构检测变异,通过各基因组平台输出结果的反复微调训练提高检测的准确性。
NVIDIA Clara Parabricks 工具套件中的二次分析软件将这些变异检测工具的速度提高了 80 倍。例如在基于 CPU 的环境中使用 GPU 加速的 Clara Parabricks 可以将 HaplotypeCaller 的运行时间从 16 小时减少到 5 分钟以内。
加速新一轮基因组学浪潮
通过为短读和长读测序平台提供加速的 AI 碱基检测和变异检测,NVIDIA 正在帮助推动下一波基因组学的发展浪潮。行业领导者和初创企业正在与 NVIDIA 一起助力全基因组测序领域的突破。
例如,生物技术公司 PacBio 最近发布了一款采用 NVIDIA Tensor Core GPU 的新型长读长测序系统——Revio。与之前的系统相比,Revio 的算力提高了 20 倍,旨在以低于 1000 美元的成本对人类基因组进行大规模的高精度长读测序。
牛津纳米孔科技有限公司提供了业内仅有的一个单一技术,能够对任何长度的 DNA 或 RNA 片段进行实时测序,使研究人员能够迅速发现更多遗传变异。西雅图儿童医院最近使用高通量纳米孔测序仪 PromethION 在新生儿出生后的几小时内检测遗传性疾病。
Ultima Genomics 正在提供每个样本只需 100 美元的高通量全基因组测序。Singular Genomics 的 G4 测序仪是目前最强大的台式测序系统。
Textdistance-rs_Rust开发者的新重磅武器
作为一个资深的Rust开发者和算法爱好者,我迫不及待地尝试了textdistance-rs库。我必须说,它超出了我的期望。这个库的文档很全面,使得入门和使用不同的算法变得非常简单。该库的API也非常符合Rust的习惯,看起来就像是Rust的标准库的一部分。
压测代码
功能介绍
基于经过广泛使用的Python textdistance库(由同一作者编写)。这意味着rust版本继承了python版本的稳定性和质量。
包含20多种算法,可满足各种不同的使用场景。无论是简单的距离比较,还是较新的entropy和NCDSift4算法,这个库都能满足用户的需求。
包含最先进的算法,如Entropy和NCDSift4。这使得该库非常适合那些需要高级算法进行序列相似性比较的项目。
零依赖性。该库不依赖于Rust生态系统中的任何其他库,这使其易于集成和部署。
可用于任何迭代器,包括字节,代码点,Unicode音节块,单词和数字。这使该库非常通用,可用于许多不同类型的输入。
对所有算法提供友好和一致的API。无论选择哪种算法,接口都非常相似,这使得切换算法变得非常简单。
可选将结果标准化到0.0-1.0区间。这为用户提供了调整算法结果的灵活性。
无unsafe代码。作为一个Rust库,它致力于安全和内存正确性,这使其成为一个稳定和安全的选择。
纯Rust。该库完全用Rust编写,不存在外部依赖项。所以如果你的项目使用Rust,这个库会很好地融入你的技术栈。
总的来说,textdistance-rs是一个全面而强大的选项,用于在Rust项目中比较序列的相似性。它具有广泛的算法支持,简洁的API和坚定的安全保证,这使其成为这个领域的一个非常有吸引力的选择。我强烈推荐Rust开发人员查看和使用这个异常优秀的库。
使用
快捷比较函数:
use textdistance::str::damerau_levenshtein;
assert!(damerau_levenshtein("abc", "acbd") == 2);
对比差异结果
use textdistance::nstr::damerau_levenshtein;
assert!(damerau_levenshtein("abc", "acbd") == 2./4.);
指定特定的比较算法
use textdistance::{Algorithm, DamerauLevenshtein};
let a = DamerauLevenshtein::default();
let r = a.for_str("abc", "acbd");
assert!(r.val() == 2);
assert!(r.nval() == 2./4.);
对unioncode的支持
use textdistance::{Algorithm, DamerauLevenshtein};
use unicode_segmentation::UnicodeSegmentation;
let s1 = "a̐éö̲\r\n";
let s2 = "éa̐ö̲\r\n";
let g1 = s1.graphemes(true);
let g2 = s2.graphemes(true);
let a = DamerauLevenshtein::default();
let r = a.for_iter(g1, g2);
assert!(r.val() == 1);基准测试
算法 | 所用时间 |
hamming | 19.203 µs |
mlipns | 20.625 µs |
sift4_simple | 143.69 µs |
sift4_common | 238.86 µs |
jaro | 1.7148 ms |
jaro_winkler | 1.7174 ms |
levenshtein | 4.5999 ms |
yujian_bo | 4.6044 ms |
lig3 | 6.5563 ms |
淘宝smith_waterman | 9.5146 ms |
damerau_levenshtein_restricted | 10.301 ms |
damerau_levenshtein | 41.938 ms |
使用感受
我尝试了几个不同的用例来测试这个库,包括比较单词,比较DNA序列和比较文本文件。在每个用例中,我都能找到几种算法可以很好地解决我的问题,而且切换算法只需要更改一个参数。normalize选项也为调整结果提供了方便,这使我能够根据自己的需要精细地调整相似性分数。
textdistance-rs的性能也是惊人的。就算是最复杂的算法,处理大量数据也是很快的,这证明了Rust的功效和该库的高效实现。我实际上发现这个库在许多情况下都超过了其Python版本的速度,这使其成为处理大规模数据的一个理想选择。
总之,我对textdistance-rs留下了深刻的印象。无论是易用性,功能还是性能,这个库都超出了我的预期。它填补了Rust生态系统中的一个重要空白,为我们提供了一个单一的高质量选项,用于在各种项目中进行快速和准确的序列相似性比较。我强烈推荐任何有兴趣使用这个库的Rust开发者立即尝试。你不会失望的!该库是一个令人惊叹的贡献,我期待着它的未来发展。