生物信息学 - 氨基酸的常见基序

时间:2014-12-22 12:52:05

标签: python design-patterns sequence bioinformatics

我正在尝试生成一个能够编码所选氨基酸的核苷酸基序。例如 - 组氨酸由CAT,CAC编码。精氨酸是CGT,CGC,CGA,CGG,AGA和AGG。模式是:

  1. 在密码子中的位置 - C或A

  2. 在密码子中的位置 - A或G

  3. 位置 - A,T,C或G

  4. 根据该规则,您可以定义所选择的氨基酸(H和R)以及我不想要的氨基酸(例如AAA是赖氨酸,AAT是天冬酰胺......)。因此,我需要定义仅匹配我选择的AA的模式,如果上面的情况可以是:[C] [A或G] [T],该模式仅定义组氨酸和精氨酸,但不定义其他氨基酸。我正在尝试制定一个算法,用我选择的任何氨基酸(超过两个)做这个事情,如果模式不存在,它应该找到更少氨基酸的可能性(例如,如果5个氨基酸的模式如果不存在,它将从查询中找到四种氨基酸的模式) - 这个最终的优化问题可能是最难的部分。有什么建议?非常感谢,抱歉我的英语很差。

3 个答案:

答案 0 :(得分:2)

我会分两步完成。首先,使用密码子到氨基酸的映射将核苷酸序列翻译成氨基酸序列(CAT映射到HCAC映射到H,{{1 }}映射到CGTR映射到CGC等。其次,使用Boyer-Moore算法搜索特定的氨基酸序列,或者如果需要,可以搜索正则表达式"通配符"或选项组。

答案 1 :(得分:0)

我更喜欢PHP,JS开发人员,但代码的逻辑仍然相同。 下图是定义不同氨基酸及其代码的图表。

http://wang.salk.edu/images/fig2.jpg

我建议你做这样的事情: $ all_aas = {CGC => A,CGA => A,CGG => A,AGA =>一个, ....}; //定义所有氨基酸

$ chosen_aas = {CAT => H,CGA =>一个]; //定义你选择的所有氨基酸

$ lesser_aas = {CGT => H,CGC => H]; //定义那些不太优选的氨基酸

$ final_aa_seq ='&#39 ;; //最终的氨基酸串

我正在使用Python上面的词典来完成它。它基本上是一个键值对。

现在,每当你得到一个nulcoetide序列。您所需要做的就是:

  1. 运行for循环,使用子字符串查找三个字符集。

  2. 在$ chosen_aas数组中搜索匹配项;将找到的代码附加到
    $ final_aa_seq

  3. 如果在$ chosen_aas中找不到,请在$ lesser_aas中搜索字符串;将找到的代码附加到
    $ final_aa_seq

  4. 运行所有完整的for循环并输出字符串。

  5. 如果您需要更多逻辑,请告诉我。

答案 2 :(得分:0)

问题解决了:

1)我制作了一个来自choise氨基酸的所有密码子的文库(例如Met和Trp是AUG和UGG - 因此所有组合的文库由[A / U] [U / G] [G] - AUG组成,AGG,UUG,UGG

2)创建了两个列表 - 第一个“好”氨基酸 - AUG,UGG和第二个“坏” - AGG,UUG

3)计算剩下的“好”氨基酸的量,如果我去除一个特定的核苷酸(如果我在第二个位置移除U,我丢失了我的AUG中的蛋氨酸 - 所以对于U在第二个位置,数字是1)每个位置的核苷酸

4)接下来的“坏”密码子被分析每个位置中每个核苷酸的出现(对于密码子AGG和UUG,我在第三个中具有2x G,在第二个中具有1xG,在第一个中具有1x U等)。

5)在这些步骤之后,我只是从步骤4)中取出最高数字,查看步骤3)中的列表以及是否可以无害地去除第三位的G而没有任何良好氨基酸损失(在我们的例如,但可以在较大的密码子集中完成) - 我删除所有密码子,其中G位于第三位,编辑“好”和“坏”密码子列表,然后再次进入步骤3)