在 GitHub 上编辑此页面

Google 代码之夏

简介

在过去的几年里,Biopython 相关的 GSoC 项目在 开放生物信息学基金会 (OBF)国家进化合成中心 (NESCent) 的指导下成功运行。

请阅读这些组织的 GSoC 页面和 主要的 Google 代码之夏页面 以了解更多关于该项目的详细信息。

当前项目提案

请查看 开放生物信息学基金会 (OBF) GSoC wiki 页面OBF GSoC 页面,作为我们通常的指导组织。

任何关于 Biopython 的项目想法都可以在 http://obf.github.io/GSoC/ideas/ 上发布(通过 GitHub 拉取请求更新 https://github.com/OBF/GSoC/blob/gh-pages/00_ideas.md)。

我们鼓励潜在的学生和导师加入 BioPython 邮件列表,并积极参与开发这些项目想法,无论是提交自己的想法还是为改进现有想法做出贡献。

过去的导师

通常,每个 BioPython 提案都会分配一个或多个导师。尽管如此,我们鼓励潜在的学生/导师与 邮件列表 联系,提出他们自己的提案想法。因此,没有一个固定的“可用”导师列表,因为这很大程度上取决于每年提出的项目。

过去的导师包括

过去被接受的项目

2014(OBF)

索引和延迟加载序列解析器

学生 Evan Parker (博客)

基本原理 Bio.SeqIO 的索引提供按需解析功能,可以将大型文件(或磁盘上的文件集合)中的任何序列作为 SeqRecord 对象进行访问。这对于处理许多小型到中型序列/基因组非常有效。但是,对于大型基因组或染色体来说,这并非理想,因为可能只需要其中一个子区域。延迟加载解析器会在需要时才读取记录。例如,如果请求区域 *record[3000:4000]*,那么只有这 1000 个碱基需要从磁盘加载到内存中,以及该区域中的任何特征。这就是 Biopython 的 BioSQL 接口的工作方式。像 tabix 和 samtools 这样的工具已经证明了有效的坐标索引,这在这种情况中可能很有用。

除了通过索引进行随机访问之外,延迟加载解析器还可以用于迭代文件。这 *可能* 为只使用一部分数据的任务提供加速。例如,如果计算来自 GenBank 的基因组集合的 GC 含量,使用 Bio.SeqIO.parse(…) 目前会不必要地加载和解析所有注释和特征。延迟解析器只会解析序列信息。

方法和目标 有用的功能包括

难度和所需技能 困难。熟悉 Biopython 的现有序列解析至关重要。了解大型文件的索引将至关重要。

可能的导师 Wibowo ArindrartoPeter Cock,欢迎其他导师

2013(NESCent)

今年,开放生物信息学基金会在竞争激烈的 GSoC 项目中没有被选中。Biopython 而是以 NESCent 为依托参与了该项目。

密码子比对和分析

学生 Zheng Ruan (博客)

基本原理 密码子比对是核苷酸序列的比对,其中三核苷酸直接对应于翻译后的蛋白质产物中的氨基酸。这包含了重要的信息,可用于多种分析,特别是选择压力的分析。该项目扩展了 Biopython 以支持这种数据类型和这些分析。

方法和目标 有用的功能包括

难度和所需技能 中等,取决于野心。熟悉 Biopython 的现有比对类和函数,或 BioPerl、BioJava 或 BioRuby 中的等效项(例如)将非常有用。了解密码子比对的实际应用,或者至少对分子生物学的基本了解非常重要。涉及一些基本的数学知识,本质上是阅读一些方程式并将它们转换为代码。一本有用的参考书是 Ziheng Yang 的 *计算分子进化*。

导师 Eric TalevichPeter Cock

Bio.Phylo:填补空白

学生 Yanbo Ye (博客)

基本原理 尽管 Biopython 中的 Phylo 模块支持 I/O 和基本的树操作,但仍有一些重要的组件需要实现,以更好地支持系统发育工作流程。

方法和目标 这个“想法”故意留作开放式结尾 - 一些潜在的有用功能是

难度和所需技能 中级到高级的 Python 编程技能 - 这些实现要具有合理的效率非常重要,尽管我们并不打算与这些算法的最快的独立实现竞争。系统发育方法的知识至关重要;作为参考,你可能需要一本 Joe Felsenstein 的 *推断系统发育* 的副本。树可视化是使用 matplotlib 完成的。

导师 Mark Holder, Jeet Sukumaran, Eric Talevich

2012(OBF)

SearchIO

学生 Wibowo Arindrarto (博客)

基本原理 Biopython 具有用于解析和写入各种序列文件格式(SeqIO)、多序列比对(AlignIO)、系统发育树(Phylo)和基序(Bio.Motif)的通用 API。一个明显的遗漏是与 BioPerl 的 SearchIO 等效的东西。本提案的目标是开发一个易于使用的 Python 接口,其风格与 SeqIO、AlignIO 等相同,但用于成对搜索结果。这旨在涵盖 EMBOSS muscle & water、BLAST XML、BLAST 表格、HMMER、Bill Pearson 的 FASTA 比对等等。

方法 Biopython 中已经存在大部分用于处理这些文件格式的底层解析代码,就像 SeqIO 和 AlignIO 模块相互链接并共享代码一样,类似的链接也适用于在使用成对比对文件格式时提出的 SearchIO 模块。但是,SearchIO 还将支持成对搜索结果,其中成对序列比对本身不可用(例如,默认的 BLAST 表格输出)。这项工作的关键方面将是设计一个反映这一点的成对搜索结果对象层次结构,可能有一个子类继承自成对搜索结果和现有的 MultipleSequenceAlignment 对象。除了最初的基于迭代器的解析和写入框架的挑战之外,类似于 Bio.SeqIO.index 和 index_db 功能的随机访问对于处理大型数据集将是最理想的。

挑战 该项目将涵盖来自主要生物信息学工具的各种重要文件格式,因此需要熟悉运行这些工具,并了解它们的输出及其含义。文件格式的相互转换是其中的一部分。

难度和所需技能 中等/困难,取决于尝试的目标数量。学生需要精通 Python 并了解 Biopython 代码库。对所有列出的命令行工具的经验将是明显的优势,对使用 BioPerl 的 SearchIO 的第一手经验也是如此。你还需要了解或学习 git 版本控制系统。

导师 Peter Cock

基因组变异的表示和操作

学生 Lenna Peterson (博客)

基本原理 基因组变异的计算分析需要能够可靠地传达和操作变异。该项目的目的是在 Biopython 中提供设施来表示序列变异对象,将它们转换为常见的人类和文件表示形式,并对它们进行常见的操作。

方法和目标

难度和所需技能 容易到中等,取决于尝试的目标数量。学生需要具备以下方面的技能:基本的分子生物学(基因组、转录本、蛋白质)、基因组变异、Python、Biopython、Perl、BioPerl、NCBI Eutilities 和/或 Ensembl API。计算机语法的经验非常可取。你还需要了解或学习 git 版本控制系统。

导师 Reece Hart

Brad Chapman

James Casbon

2011(OBF)

生物分子界面分析

学生 Mikael Trellet

在残基水平上对蛋白质-蛋白质复合物界面进行理性分析可以提供有关整体结合过程的重要信息。这些信息可以广泛用于结合亲和力研究、界面设计和酶学等领域。为了利用这些信息,需要开发能够系统且自动地分析蛋白质结构或提供此功能的工具。Protorop(http://www.bioinformatics.sussex.ac.uk/protorp/)是这类工具的示例,该服务器自发布以来已被引用多次,证明了其重要性。然而,作为网络服务器,Protorop 不适合大规模分析,并且会使社区依赖于维护人员来保持服务的可用性。另一方面,Biopython 的结构生物学模块 Bio.PDB 为开发用于界面分析的离线开源库提供了理想的解析机制和程序结构。此类库可轻松用于蛋白质-蛋白质界面的大规模分析,例如在 CAPRI 实验评估或基准统计中。如果时间允许,将该模块扩展到处理蛋白质-DNA 或蛋白质-RNA 复合物也是合理的,因为 Biopython 已经支持核酸。

方法和目标

难度和所需技能 简单/中等。熟悉 Biopython 的 Bio.PDB 模块。了解一般的结构生物学和相关的文件格式(PDB)。

导师 João Rodrigues

Eric Talevich

Mocapy++ 的 Python 桥梁

学生 Michele Silva

理由 发现生物分子的结构是生物学中最大的问题之一。给定一个氨基酸或碱基序列,其三维结构是什么?生物分子结构预测的一种方法是构建概率模型。贝叶斯网络是一种概率模型,由一组变量及其联合概率分布组成,以有向无环图的形式表示。动态贝叶斯网络是一种表示变量序列的贝叶斯网络。这些序列可以是时间序列或符号序列,例如蛋白质序列。方向统计主要关注平面或三维空间中的单位向量观测。样本空间通常是圆或球。必须使用特殊的定向方法来考虑样本空间的结构。图形模型和方向统计的结合允许开发生物分子结构的概率模型。通过使用具有方向输出的动态贝叶斯网络,可以构建序列和结构的联合概率分布。生物分子结构可以表示在几何上自然的连续空间中。Mocapy++ 是一个用于使用动态贝叶斯网络进行推断和学习的开源工具包,它支持方向统计。Mocapy++ 非常适合构建生物分子结构的概率模型;它已被用于开发原子级别的蛋白质和 RNA 结构模型。Mocapy++ 被用于几个高影响力的出版物中,并且将成为即将发布的分子建模软件包 Phaistos 的核心。该项目的目的是开发一个对 Mocapy++ 非常有用的 Python 接口,并将该接口集成到 Biopython 项目中。通过 Bio.PDB 模块,Biopython 为数据挖掘生物分子结构数据库提供了出色的功能。将 Mocapy++ 和 Biopython 集成在一起将允许使用从数据库中提取的数据训练概率模型。将 Mocapy++ 与 Biopython 集成将为研究人员创建一个强大的工具包,让他们能够快速实施和测试新想法、尝试各种方法并改进他们的方法。它将为生物分子结构预测、设计和模拟领域提供强有力的支持。

方法和目标 Mocapy++ 是一个用于训练和使用贝叶斯网络的机器学习工具包。它已被用于开发生物分子结构的概率模型。该项目的目的是开发一个 Mocapy++ 的 Python 接口,并将其与 Biopython 集成在一起。这将允许使用从数据库中提取的数据训练概率模型。将 Mocapy++ 与 Biopython 集成将为蛋白质结构预测、设计和模拟领域提供强有力的支持。

导师 Eric Talevich

Thomas Hamelryck

MocapyExt

学生 Justinas V. Daugmaudis

理由 Biopython 是生物信息学和计算生物学中一个非常受欢迎的库。Mocapy++ 是一个用于在动态贝叶斯网络 (DBN) 中进行参数学习和推断的机器学习工具包,它对域中随机变量之间的概率关系进行编码。Mocapy++ 是根据 GNU 通用公共许可证 (GPL) 从 SourceForge 免费获得的。该库支持广泛的 DBN 架构和概率分布,包括方向统计中的分布。值得注意的是,球体上的 Kent 分布和环面上的二元 von Mises 分布已被证明在制定蛋白质和 RNA 结构的概率模型方面非常有用。这样一个非常有用和强大的库是长期努力的结果,它已被用于诸如 TorusDBN、Basilisk、FB5HMM 这样的项目并取得了巨大成功。最初的 Mocapy 实现可以追溯到 2004 年,从那时起,该库已用 C++ 重写。但是,C++ 是一种静态类型和编译的编程语言,不利于快速原型设计。因此,目前 Mocapy++ 没有为自定义节点类型提供动态加载的规定,并且存在一种机制可以插入不需要修改和重新编译库的新节点类型,这是令人感兴趣的。这种插件接口将通过允许快速实施和测试新的概率分布来帮助快速原型设计,这反过来可以大大减少开发时间和精力;用户可以无需修改和后续重新编译即可扩展 Mocapy++。认识到这种需求,由 T. Hamelryck 提出了该项目(以下简称 MocapyEXT),旨在改进当前的 Mocapy++ 节点类型扩展机制。

方法和目标 MocapyEXT 项目在很大程度上是一项工程工作,旨在为 Mocapy++ 提供一个透明的 Python 插件接口,其中内置和动态加载的节点类型可以以统一的方式使用。此外,外部实现和动态加载的节点可以由用户修改,这些更改不需要重新编译客户端程序,也不需要重新编译相应的 Mocapy++ 库。这将促进快速原型设计,简化现有代码的适应,并改进软件互操作性,同时对现有的 Mocapy++ 接口进行最小更改,从而促进对 MocapyEXT 引入的更改的顺利接受。

导师 Eric Talevich

Thomas Hamelryck

2010 年(OBF)

改进 Bio.PDB

学生 João Rodrigues

理由 Biopython 是生物信息学和计算生物学中一个非常受欢迎的库。最初由 Thomas Hamelryck 开发的 Bio.PDB 模块是结构生物学家一个简单但强大的工具。虽然它提供了一个可靠的 PDB 解析器功能,并且允许对大分子进行一些计算(邻域搜索、RMS),但它仍然缺乏结构生物学家日常工作中的一些功能。在结构中探测二硫键并相应地添加极性氢原子是两个可以集成到 Bio.PDB 中的示例,考虑到该模块的巧妙结构和良好的整体组织。诸如链移除和残基重命名(以解释现有的不同命名法)以及重新编号之类的修饰操作也将受到社区的欢迎。Bio.PDB 可以改进的另一个方面是为 MODELLER、GROMACS、AutoDock、HADDOCK 等大型分子模拟提供一个平滑的集成/交互层。有人可能会说,最简单的解决方案是为这些软件包的功能和例程编写钩子。但是,我认为,诸如最近开发的 edPDB 或更完整的 Biskit 库之类的项目使这些接口工作变得多余。相反,我认为将这些软件的输入/输出格式包含在 Biopython 的 SeqIO 和 AlignIO 模块中更有利。这将与创建用于模型验证/结构检查服务/软件的接口一起,使 Biopython 能够用作模拟前和模拟后工具。最终,它将为将其纳入结构建模、分子动力学和对接模拟的管道和工作流程铺平道路。

导师 Eric Talevich

Peter Cock

Diana Jaunzeikare

2009 年(NESCent)

这是 Biopython 第一次参加 GSoC,我们是在 NESCent 的 GSoC 2013 程序 的旗帜下参加的。

PhyloXML

理由 PhyloXML 是一种用于系统发育树的 XML 格式,旨在允许存储有关树本身的信息(例如分支长度和多个支持值),以及分类学和基因组注释等数据。以标准格式连接这些进化信息碎片是比较基因组学研究的关键。

在 2008 年的夏季代码期间创建了一个用于 phyloXML 的 Bioperl 驱动程序;该项目旨在为流行的 Biopython 包构建一个类似的模块。

导师 Brad Chapman

Christian Zmasek

Biopython 的生物地理系统发育

理由 我开发了 Bio.Geography,这是生物信息学编程工具包 Biopython 的一个新模块。Bio.Geography 通过允许从 GBIF(全球生物多样性信息设施)自动搜索、下载和解析地理位置记录,扩展了 Biopython 访问在线数据库的基因和蛋白质序列的传统功能,GBIF 是全球自然历史收藏标本信息的权威聚合器。这将使需要系统发育树尖端物种栖息区域的进化生物地理学分析成为可能,特别是对于需要处理数千个标本出现记录的大规模分析。该模块还将促进物种制图、生态位建模、博物馆记录错误检查和范围变化监测等应用。

导师 Brad Chapman

Stephen Smith

David Kidd