Я пытаюсь вычислить функции склонности в python, используя уравнение: функция склонности = stoch_rate * произведение бинома (xi, si), где xi - число дискретных молекул конкретного реагента в реакции, а si это соотношение между реагентами в каждом уравнении, оба хранятся в матрицах.
popul_num = np.matrix([100, 200, 0, 0])
LHS = np.matrix([[1,1,0,0], [0,0,1,0], [0,0,1,0]]) --> three rows for 3 different reactions, each row has 4 elements describing the ratio of reactants in that particular reaction
stoch_rate = np.matrix([0.0016, 0.0001, 0.1000]) --> rates for each of the three reactions above
В моей системе 4 объекта; Фермент, субстрат, фермент-субстратный комплекс и продукт. Которые описаны в матрицах popul_num и LHS в этом порядке.
Я написал следующий код для перебора элементов матриц, вычисления биномиальных коэффициентов для каждого реагента (на основе количества молекул в popul_num и соотношения в LHS), а затем умножения на константы скорости для генерации функция склонности.
for j in LHS:
aj = stoch_rate
for i in popul_num:
if np.any(i >= LHS[i,j]):
# ^^^IndexError --> index 100 is out of bounds for axis 0 with size 3^^^
aj = list(aj*binom(i, LHS[i, j]))
else:
aj == 0
break
print(aj)
Подразумевается, что оператор if проверяет, достаточно ли количество дискретных молекул в popul_num достаточно, чтобы позволить реакции происходить в соответствии со стехиометрией / крысами ios в LHS.
Я получаю сообщение об ошибке индекса: index 100 is out of bounds for axis 0 with size 3
Я знаю, что индексирование начинается с нуля, и я пытался найти несколько решений, но не смотрел!
Любая помощь будет высоко ценится
Приветствия