Я выполняю имитацию белково-белковых взаимодействий. Я использую Python для кодирования логических ворот как функций моделирования взаимодействия белков. Моя модель в основном представляет собой группу групп (g0
- g4
), содержащую логические ворота (см. Изображение). Первоначально я установил list
, содержащий мои группы, а затем для каждой группы dict
, который содержит белки (узлы) с их начальными значениями (их так называемые seedValues
, которые являются начальными параметрами для сети на t=0
).Выполнение последовательности логических логических групп
Мой вопрос заключается в следующем: есть ли какой-то способ переборе моих групп (и их функции логика ворот), который начинается в группе 0 (g0
в образе) в t
, и что в t=t+1
выполняет группы g0
и g1
, затем выполняет три группы g0
, g1
и g2
по адресу t=t+2
и т. д. до t=m
, где m
- количество итераций, которые хотели?
Уточнение: Возможно, я не знаю. Моя проблема заключается в следующем: скажем, что я пишу функцию, которая проходит через мои группы, по одному за раз. Она начинается в
g0
в момент времениt=0
и выполняет, хранит и выводит все ворота в этой группе, а также все ворота «вперед» по себе (g1
кg4
). Когда это будет сделано, функция отметит время на один шаг вперед (t=t+1
) и отправится вg1
и снова выдает результаты, включая вывод группg2
вg4
. Теперь возникает ошибка: для точной модели мне нужно выполнитьg0
в тоже времяt=t+1
, до шаг программыg2
. Как я могу сделать вывод своей программы такими последовательными «волнами» исполнения? Я думаю, мне, возможно, придется использовать ретрансляцию , но я не знаю, как это сделать.
См. Пример изображения того, что я имею в виду под «группами» here. заметки Изображение: и B переключатели (программа должна изменить их, как способ изучения возмущений), C постоянная (не изменяется). J - выход (главным образом для шоу). D и F построены таким образом, чтобы колебаться, когда = 0.
Я искал для этого на Stack бирже и переполнение стека; в то время как я вижу много вопросов, которые касаются моей области интереса (1, 2), я не вижу никаких определений, которые я определяю конкретно для решения моих проблем. Спасибо за ваше время.
Возможно, что-то здесь отсутствует. Единственная веская причина для создания многопоточной/многопроцессорной программы - это производительность. Если вы еще не написали программу, как вы знаете, что она недостаточно быстро? Просто потому, что компоненты схемы работают параллельно, не означает, что внутренняя структура вашей программы должна выполнять вычисления параллельно. Важно то, что программа создает точную модель того, что делает цепь (белок). Зачем усложнять задачу, написав многопоточную программу? –
Я обновил свой вопрос, чтобы лучше отразить то, что я ищу. Пожалуйста, ознакомьтесь с моим уточнением в исходном вопросе. –