Google Summer of Code 2018 @ Stemformatics,报告

非常感谢我的导师Chris Pacheco和Isha Nagpal在整个项目过程中为我提供指导和支持。 也感谢Rowland Mosbergen的指导,并让我开始了该项目。 与Stemformatics合作非常愉快,并获得了愉快的体验!

什么是Stemformatics?

Stemformatics是一个在线门户网站,在基于python的Web框架Pyramid上运行,使干细胞生物学家能够快速,轻松地可视化,分析和探索有趣的数据集。 它是描述人类和小鼠干细胞的一系列各种公共实验的门户。 干细胞是具有分化成各种不同细胞类型的能力的那些细胞。 Stemformatics使数据易于搜索和导出。
如网站上所述,了解Stemformatics是另一种见解,

Stemformatics不能替代生物信息学家和干细胞生物学家之间的良好合作,而是迈向这种合作的垫脚石。

该项目

Bitbucket存储库:https://bitbucket.org/stemformatics/s4m_pyramid/src/annotation_page_clean_up_master/

该项目的主要目标是简化生物数据的输入和注释数据的能力。 首先,通过改进注释表中的功能,集成本体查询服务并创建摘要表页面来快速查看数据并进行编辑来完成。

项目进度

该项目分为3个部分,第一部分是改进注释表并集成本体查找服务,第二部分是创建摘要表页面,第三部分是将摘要页面链接到注释页面。

阶段1:注释表即兴创作 https://gsoc2.stemformatics.org/admin/annotate_dataset?ds_id=3000

批注表类似于excel工作表,其中数据批注者可以在进行实验后输入数据。 该表在可操作的javascript电子表格上运行。 由于所使用的版本较旧,所以我的首要任务是实施较新的版本,请注意,在此过程中,事情不要麻烦。

下一个任务是解决表中的错误。 注释表具有大量的列,并且由于导航它们将很困难,因此已经实现了显示/隐藏必需的列功能。 漏洞是,当某个列在某些时间被隐藏时,列标题将与相应的列数据不匹配。 将handsontable更新到可用的最新版本后,我使用了handsontable的afterRender功能来启用隐藏功能,并触发解决该错误的标头清单。

浏览大量数据非常困难。 为了简化数据搜索,我为表实现了行过滤器。

遵循本体所需的某些列中的数据。 因此,为这些列(亲代细胞类型,最终细胞类型,性别,生物)创建了本体列表文本文件,并实现了自动完成。 因此,在输入数据时,数据注释器可以从下拉菜单中选择一个选项(加载handontable时从文本文件中加载下拉列表),或者如果添加了新条目,它将自动检测并保存到相应的列表文本文件中。

这些是我在项目第一阶段中工作的一些重点。

阶段2:创建汇总表 https://gsoc2.stemformatics.org/datasets/summary_table?ds_id=3000

摘要表中显示的数据是从GEO(Gene Expression Omnibus)中解析出来的,并存储在geo_biosamples_metadata中的psql数据库中的表中。 注释者可以在注释表中输入数据,而摘要表包含来自GEO的数据,注释者可以在将数据输入注释表时查找引用。 该数据也可以由注释者编辑。 这就是汇总表的样子。

以下是我在摘要表中实现的功能列表:

  1. 取消分组的数据模式提供了数据概览,并使编辑特定数据更加容易。
  2. 分组数据模式对于批量编辑数据很有用。 分组是根据元数据值完成的。
  3. 过滤器:根据特定的元数据名称获取数据。 提交表单后,它将重定向到新页面,其中摘要表将包含基于所选特定元数据名称的数据。
  4. 快速搜索:快速筛选行以获取特定数据
  5. 保存:是将更改直接保存到数据库(使用ajax)。 保存到psql数据库的geo_biosamples_metadata表中。
  6. 保存(注释表):将数据从摘要表发送到注释表。 保存到psql数据库中的biosamples_metadata表中。
  7. CSV,JSON会像在屏幕上一样下载表的实例。

阶段3a:本体查询服务的实现 https://gsoc2.stemformatics.org/admin/annotate_dataset?ds_id=3000

顾名思义,本体查询服务用于查找生物医学本体术语。 它由EMBL-EBI开发和维护。 OLS真正有用的功能是ols-treeview,它以树格式显示查询的生物医学本体。 我使用了biojs的ols-treeview小部件来实现注释表页面上的treeview。 注释时,数据注释器将使用此特定服务。 但是反复访问OLS站点是一件很乏味的事情。 因此,OLS树是在“注释表”页面本身上实现的。

为了基于查询获取搜索结果,我使用了EBI的api。 然后使用分页将数据分为3页。 在单击任一搜索结果时,右侧将显示相应术语的树状视图。

我在注解表的上方实现了整个部分,以方便使用数据注解器。 如果需要查看更多信息,则EBI搜索按钮将直接进行查询,并在EBI Ontology Lookup Service网站本身的新选项卡中显示结果。

阶段3b:将某些数据从摘要表链接到注释表

摘要表中的某些数据需要导入到注释表中。 手动复制数据不是很有效。 因此,某些数据(年龄,性别,有机体)被发送到数据库中的biosamples_metadata表,该表反映在注释表中。 单击摘要表上的“保存到注释表”按钮即可发送数据。

拉取请求(已审阅并合并到annotation_page_clean_up_master分支)

  1. 注释表中的自动完成和搜索过滤器实现,解决了列改组错误,为注释表添加了4列
  2. 汇总表
  3. 摘要表(完成保存功能)
  4. 注释表上的OLS实现
  5. 在Treeview中的单击节点上显示数据
  6. 注释表页面的OLS
  7. 本体链接和OLS搜索分页
  8. 在摘要表中添加gsm_ids和更快的OLS搜索
  9. 保存到注释表
  10. 将注释表中的新条目保存到现有的自动完成列表中
  11. 添加了脚本并实现了将亲代细胞类型添加到数据库

未来的工作

  • 将来所有数据属性都将从摘要表复制到注释表。
  • 可以将数据从ArrayExpress抓取到汇总表中(类似于地理数据库)
  • 将php验证程序代码从php移动到金字塔(在Stemformatics中)

结论

对我来说,GSoC经验非常丰富。 我非常感激能成为如此出色的组织的一员。 我喜欢编写和调试代码的最后3个月。 知道我编​​写的代码将使人们更轻松地完成工作。