【发布时间】:2016-04-08 07:27:06
【问题描述】:
我正在模拟蛋白质-蛋白质相互作用。我正在使用 Python 将逻辑门编码为模拟蛋白质相互作用的函数。
我的模型基本上是一系列包含逻辑门的组(g0 到g4)(见图)。最初,我设置了一个包含我的组的list,然后为每个组设置一个dict,其中包含蛋白质(节点)及其起始值(它们所谓的seedValues,它们是网络的起始参数) t=0)。
我的问题是:是否有某种方法可以遍历我的组(及其逻辑门功能),从t 的第 0 组(图像中的g0)开始,然后在t=t+1 执行组g0 和g1,然后在t=t+2 处执行三个组g0、g1 和g2,依此类推直到t=m,其中m 是需要的迭代次数?
澄清:也许我不清楚。我的问题是这样的:假设我编写了一个逐步遍历我的组的函数,一次一个。它 从
g0到时间t=0开始,并执行、存储和输出所有 该组中的门,加上自身“前面”的所有门(g1到g4)。完成后,该函数将时间向前移动一步 (t=t+1) 并转到g1并再次执行,包括输出 将g2分组到g4。现在是错误出现的地方:为了准确 模型,我也需要在t=t+1时执行g0,之前 程序步骤到g2。我怎样才能让我的程序输出这样 顺序执行的“波”?我想我可能需要使用 递归,但我不知道怎么做。
查看我对“组”here 的意思的示例图片。 图片注释:A 和 B 是开关(程序应该改变它们,作为研究扰动的一种方式),C是一个常数(从不改变)。 J 是输出(主要用于展示)。 D 和 F 以这种方式构建,以便在 A = 0 时振荡。
我在 Stack Exchange 和 Stack Overflow 上搜索过这个;虽然我看到许多与我感兴趣的领域相关的问题(1、2),但我没有看到任何我确定专门解决我的问题的问题。感谢您的宝贵时间。
【问题讨论】:
-
可能我在这里遗漏了一些东西。创建多线程/多进程程序的唯一好理由是性能。如果你还没有编写程序,你怎么知道它不够快?仅仅因为电路组件并行运行并不意味着程序的内部结构必须并行进行计算。重要的是该程序生成了电路(蛋白质)功能的准确模型。为什么要编写多线程程序来使您的任务复杂化?
-
我更新了我的问题,以更好地反映我想要做什么。请参阅我在原始问题中的说明。
标签: python logic simulation boolean-logic