MATLAB:如何优化对寡核苷酸的多次调用

时间:2016-06-04 11:49:03

标签: arrays matlab optimization bioinformatics cell-array

一小段背景:

我正在设计用于原位杂交的分子探针,以便能够研究特定基因在各种组织中的表达。 为了做到这一点,我需要在该基因中找到最符合某些标准的序列。 使用Matlab中 Bioinformatics Toolbox 中的 oligoprop 函数分析序列。

问题:

该程序需要一些时间,我想优化它。我使用过Matlab Profiler并将这行代码识别为最耗时的代码之一。

oligopropsOfSequences = arrayfun(@(x) oligoprop(char(x), ...
                                            'Dimerlength', 3, ...
                                            'HPBase', 3), ...
                                            sequences);
  

序列是1byX单元格数组。它通常大约3000元素。

     

oligoprop 是Bioinformatics Toolbox的功能

     

我的分析需要 oligoprop Dimerlength和HPBase的参数

我做了同样的"操作"已经在for循环中,使用arrayfun只是略微增加了整体性能。到目前为止,似乎 oligoprop 本身只需要时间,这是可以理解的。

我还必须承认我是Matlab新手的本地Python程序员,所以我还不熟悉使用哪种结构,以及一般Matlab如何做事。所以欢迎任何类型的支持信息。

  

这里测试它是一个示例短序列单元阵列

sequences = {'caccagtggatgctagccgccctgctggccccggggatggacgtc', 'accagtggatgctagccgccctgctggccccggggatggacgtcc', 'ccagtggatgctagccgccctgctggccccggggatggacgtcca', 'cagtggatgctagccgccctgctggccccggggatggacgtccaa', 'agtggatgctagccgccctgctggccccggggatggacgtccaaa'}
  

编辑1:

正如所建议的那样,我尝试使用cellfun,起初我遇到了一些错误,但是能够摆脱它们,只是遇到了语义问题。 代码如下:

oligopropsOfSequences = cellfun(@(x) oligoprop(x, ...
                                            'Dimerlength', 3, ...
                                            'HPBase', 3), ...
                                            sequences, 'UniformOutput', false);  

代码不会产生任何错误,但我得到的是1byX单元数组,包含我的结构,而不是获取Xby1结构数组。 我不知道如何将该单元阵列转换回结构数组,而且我担心操作本身可能会很昂贵。

由于我后来的操作依赖于结构数组,我无法正确分析整个函数以查看是否有任何速度增益。

0 个答案:

没有答案