【发布时间】:2014-06-18 19:19:40
【问题描述】:
我正在 PostgreSQL 中寻找支持来处理蛋白质序列的任务,这些任务看起来很通用或很常见,以至于我怀疑我没有应用正确的 Google 查询术语或以最佳方式定义问题。我知道 PostBIS 和 PostBio,但它们似乎更侧重于检测序列关系而不是应用它们。
我最初寻找的原始函数大致如下:
屏蔽:给定 array1 1..n 个字符和 array2 1..n 个(布尔等价物),返回 array3,它是由 array2 屏蔽的 array1(清空或拼接出 array1 中的列其中 array2 为“假”)。或者,array2 可以是开始和结束位置,而不是完整的 n 列。
映射:给定 array1 1..n,array2 1..m,以及一些告诉我的映射,例如array1 中的第 10 列是 array2 中的第 28 列,返回 array3,其中 array2 的值位于映射的 array1 位置。同样如上所述,映射实现可以是对齐段的开始和结束位置,而不是每个方向上的完整 n 和 m 列映射。
我可以设想在数据库表中执行此操作,例如sequenceID、sequenceIndex 和 alignMap 列,但是当我的访问数据库的软件通常想要处理完整的序列块时,这似乎会生成大量行(每个序列位置)来索引和连接。
是否有我应该考虑的现有模块或方法?带有 unnest 和 array_agg 的优雅表达式(请概述)? PostgreSQL 中的数组对我来说是新的,但我了解到数据库内部的处理通常比外部更快,例如perl.我当前的 PostgreSQL 版本是 9.1,但预计很快会升级到 9.2。
这方面的一个应用是蛋白质序列 A 与结构 Z 对齐,那么 A 的特征“x”出现在 Z 的什么位置?
【问题讨论】:
标签: arrays postgresql mapping sequence bioinformatics