繁体   English   中英

单步执行一系列分组逻辑门

[英]Stepping through a sequence of grouped logic gates

我正在进行蛋白质 - 蛋白质相互作用的模拟。 我正在使用Python将逻辑门编码为模拟蛋白质相互作用的函数。 我的模型基本上是一系列包含逻辑门的组( g0g4 )(见图)。 最初,我设置了一个包含我的组的list ,然后为每个组设置一个包含蛋白质(节点)及其起始值的dict (它们所谓的seedValues ,它们是t=0网络的起始参数)。

我的问题是:是否有一些方法可以迭代我的组(及其逻辑门函数),从t第0组(图像中的g0 )开始,而在t=t+1执行组g0g1 ,然后在t=t+2执行三组g0g1g2 ,依此类推,直到t=m ,其中m是想要的迭代次数?

澄清 :也许我不清楚。 我的问题是:说我写了一个逐步遍历我的组的函数。 它在时间t=0时从g0开始,并执行,存储和输出该组中的所有门,以及其自身“前方”的所有门( g1g4 )。 完成此操作后,该函数将时间向前一步( t=t+1 )并转到g1并再次执行,包括输出组g2g4 现在是一个错误蔓延的地方:对于一个准确的模型,我需要在时间t=t+1执行g0程序步骤到g2 如何让我的程序输出如此连续的“波浪”执行? 我想我可能需要使用递归,但我不知道如何。

见我与“团体”是指例如图像这里 图像注释: AB是开关(程序应该改变它们,作为研究扰动的一种方式), C是一个常数(从未改变)。 J是输出(主要用于显示)。 只要A = 0, DF就会以振荡的方式构建。

我在Stack Exchange和Stack Overflow上搜索过这个; 当我看到我的相切感兴趣的领域很多问题( 12 ),我看不出有什么,我决定专门解决我的问题。 感谢您的时间。

在我看来,你的问题减少到几个嵌套循环。 如果将所有组放入名为gx的列表中,并将时间t从0递增到某个值tmax ,则在Python中看起来像这样......

for t in range(tmax):
    for i in range(t):
        nodeExecute(gx[i])

每次增加t ,除了之前的所有组之外,还会执行一个组。 如果我还没有理解,请道歉。

对于事件驱动的数字模拟或离散事件模拟 ,“时间轮”或“定时轮”通常用作基本数据结构。 轮子基本上是一个数组,其中每个元素指向模拟事件的列表或动态矢量,它们共享“time mod wheelsize”的相同值。

时轮所描绘这里 在此输入图像描述

时轮比优先级队列更有效, 优先级队列也可用于按时间戳的升序处理模拟事件。

事件驱动逻辑仿真的伪代码:

t = tStart
While (t < tEnd) {
    process all events scheduled for t and schedule follow-up events
    schedule events from signal sources
    t = t + 1
}

要处理门的分组,您可以将每个组视为具有多个输出的超级门。 可能有必要在给定的门组内建模不同的延迟延迟。

您可以使用硬件描述语言(Verilog)描述您的电路,而不是编写自己的模拟器,并使用现成的模拟器

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM