执行摘要

Dask 希望更好地支持生命科学家的需求。我们一直在了解这个社区,以便更好地理解

  1. 他们是谁?
  2. 他们正在尝试解决什么样的问题?

我们了解到

  • 许多人希望有更多针对他们特定科学领域的定制示例。
  • 将 Dask 更好地集成到其他软件中被认为非常重要。
  • 处理大数据时管理内存限制是一个常见的痛点。

我们今年的战略计划包括三个并行方向

  • 基础设施 (60%) - 改进 Dask,或改进许多生命科学用户使用的其他软件。
  • 推广 (20%) - 博客文章、讲座、网络研讨会、教程和示例。
  • 应用 (20%) - 将 Dask 应用于特定的生命科学问题,与个别实验室或团队合作。

如果您仍然想发表意见,现在还不晚 - 点击此链接与我们联系!

目录

背景

最近 Dask 获得了一些资助,用于聘请一名开发者 (Genevieve Buckley) 专门改进 Dask 以服务生命科学领域。

与科学家合作是推动开源项目发展的一个绝佳方式。科学家和软件开发者都能从中受益。早期,Dask 在与地球科学社区集成方面取得了很大的成功。很高兴看到在生命科学领域也能取得类似的成功。

今天我们看到 Dask 在生命科学的几个领域中被使用

  • 生物图像处理
  • 单细胞分析
  • 统计遗传学
  • ……还有很多

我们向生命科学社区征求了反馈意见,以便制定一项战略计划来指导我们未来一年的工作。

我们了解到的信息

来自 Dask 用户

当我们与 Dask 的个人用户交流时,在他们的评论中听到了许多相似的主题。

人们希望

  1. 更好的文档和示例
  2. 更好地支持在受限资源下工作
  3. 与其他软件工具更好的互操作性

最常见的请求是提供更好的文档和更多示例。生命科学许多不同领域的人们都表示这能极大地帮助他们。相应的挑战在于生命科学领域的多样性,所有这些领域都需要有针对性的文档。

GPU 支持也被普遍提及。关于 GPU 的评论符合上述两个类别:GPU 内存通常是一个限制,而且生命科学家们也希望能够更容易地将深度学习模型应用于他们的数据。

来自其他软件库

我们不仅与 Dask 的个人用户进行了交流,还与科学软件项目的开发者进行了交谈。

其他软件库为何会采用 Dask?

软件项目希望解决与以下相关的问题

  • 更容易部署到分布式集群
  • 处理大型数据集时管理内存
  • 现有功能的并行化

Dask 擅长解决这些类型的问题,可能是对此的一个良好解决方案。

我们交流过的对象

我们交流过的一些软件项目包括

当前状态

napari 是一个基于 python 的图像查看器。Dask 已经与 napari 很好地集成。这里的机会领域包括

  • 改进关于如何在 napari 中高效使用 Dask 数组的文档。
  • 更智能地缓存相邻图像块以避免延迟。
  • 创建 napari 插件的指南,以便社区能够发展。

sgkit 是一个统计遗传学工具包。Dask 已经与 sgkit 很好地集成。开发者希望改进 Dask 主仓库中的基础设施,以便他们从中受益。愿望清单项目包括

  • 更好地理解诸如数组块之类的东西在 Dask 计算过程中如何变化。
  • 更好的高级图可视化。显示所有低级操作的图可视化可能令人不知所措。
  • 更好地识别 Dask 计算中效率低下的区域。
  • 发布 Dask 新版本时的稳定性
  • 使在云中运行 Dask 变得更容易。他们目前正在使用 dask-cloudprovider 并发现它非常有用。

scanpy 是一个用于 Python 中进行单细胞分析的库。它与 anndata 一起构建,anndata 是一个带注释的数据结构。

  • 对于 scanpy 用户来说,数据大小不是主要问题,尽管 anndata 开发者确实认为添加对 Dask 的支持会很有用。
  • 对稀疏数组的支持对这些社区非常重要。

squidpy 是一个用于分析和可视化空间分子数据的工具。它构建在 scanpy 和 anndata 之上。由于 squidpy 除了 scanpy/anndata 数据集通常包含的数据外,还涉及大型成像数据,因此这是一个对 Dask 来说有巨大机会的项目。

  • 将 Dask 与 squidpy 的 ImageContainer 类集成是处理可用 RAM 限制内大型图像数据的一个良好第一步。

ilastik 目前完全不使用 Dask。他们很好奇 Dask 是否能使从单台机器扩展到集群变得更容易。用户通常以交互方式训练 ilastik 模型,然后希望将其应用于许多图像。第二步通常是人们希望轻松扩展可用计算资源的时候。

CellProfiler 是一个用于图像处理的管道工具。他们之前曾简要尝试过 Dask。

  • 他们主要希望并行化现有功能。
  • 最常见的管道属于三个主要的“用户故事”,在这些方面集中精力将产生最大影响
    1. 图像处理
    2. 对象处理
    3. 测量

我们看到的机会

由于大型科学软件项目有许多用户,因此在此处进行的改进对科学社区来说具有很高的价值。这是一个巨大的机会领域。我们计划尽可能与这些开发者社区合作,以推动其发展。

另一个机会领域是改进对 高级图可视化 的基础设施支持。高级用户和新手都将受益于用于识别 Dask 计算中效率低下区域的更好工具。

最后,继续构建对使用非 numpy 块的 Dask 数组的支持也是一个高影响力的机会领域。特别是,对稀疏数组的支持以及对 GPU 上数组的支持被强调为对生命科学社区非常重要。

战略方向

我们将通过三个并行方向来管理这个项目

每个方向在任何时候可能有一个主要项目,还有许多项目排队等待。在每个方向内,提议的项目将根据影响程度、所需时间和可用开发者资源进行排名。

基础设施

基础设施项目是对以下方面的改进

  • 位于 Dask 组织内的项目,或者
  • 大量生命科学用户使用的、涉及 Dask 的其他软件项目

我们计划将大约 60% 的项目精力用于基础设施。

推广

推广活动包括博客文章、讲座、网络研讨会、教程以及创建文档示例。我们计划将大约 20% 的项目精力用于推广。

如果您有想分享的推广想法(也许您运营着一个学生团体或受欢迎的 meetup),那么您可以在此处与我们联系

应用

最后一个方向侧重于将 Dask 应用于生命科学中的特定问题。

这些项目通常涉及与个别实验室或团队合作,最终目标是将他们的工作流程总结为一篇博客文章。这会反馈到我们的推广工作中,以便社区中的其他人可以从中学习。

理想情况下,这些是短期项目,这样我们可以展示 Dask 的许多不同应用。我们计划将大约 20% 的项目精力用于应用。

如果您使用 Dask 并有一个想要分享的示例,那么您可以在此处与我们联系

我们如何衡量成功?

Dask 生命科学研究员(Fellow)这个职位范围非常广泛,因此在这个领域内有很多不同的成功方式。

一些成功的指标包括

  • 错误得到清晰描述,或瓶颈得到清晰识别
  • 错误修复
  • 对 Dask 基础设施的改进或新功能
  • 在相关项目仓库中进行的改进或新功能
  • 在生命科学相关项目仓库中对 Dask 更好的集成或支持
  • 提供更好的文档,包含针对生命科学特定领域的定制示例
  • 撰写的博客文章(理想情况下与 Dask 用户合作)
  • 进行的讲座
  • 制作的网络研讨会
  • 创建的教程

我们没有时间或资源去做所有的事情,但通过专注于一部分,我们将能够产生影响。

局限性

我们通过与生命科学社区交流发现的信息可能在几个方面存在偏差。

我(Genevieve)的人脉在成像科学家和澳大利亚的同行中最强。在生命科学的其他领域则弱得多,因为我最初的训练背景是物理学。

Dask 项目与其他开源 Python 项目(包括科学软件)有很强的联系。Dask 开发者社区也与 NVIDIA、Quansight 等公司有很强的联系。他们在我们交流过的人群中可能占比过高。

很难找到那些尚未使用 Dask 但其问题非常适合使用 Dask 的人。这些人不太可能在 Twitter 上关注 Dask 等渠道,而且可能不知道我们正在寻找他们。

我认为这些问题没有完美的解决方案。我们尝试通过利用松散的二级和三级人脉来传播信息,并在科学公共论坛上发帖,以减轻这些影响。

方法

我们采用了多种方法收集生命科学社区的反馈。

  • 创建了一份 简短问卷 以收集评论
  • 它通过 @dask_dev Twitter 账号进行宣传
  • 我们请相关软件项目考虑转发以扩大覆盖范围 (示例)
  • 我们在科学领域的 Slack 群组和在线公共论坛中发帖
  • 我们通过电子邮件联系了我们网络中的其他生命科学家,请他们也告知他们的人脉
  • 我们直接联系了一些生命科学研究人员。
  • 我们直接联系了其他几个科学软件团队,并与开发者进行了交谈。

加入讨论

快来加入我们的 Dask Slack!我们有一个 #life-science 频道,可以在那里讨论与 Dask 生命科学社区相关的事情。您可以在在此处申请 Slack 邀请


博客评论由 Disqus 提供支持