Наверное, немного больше математического вопроса! У меня есть следующий код, который использует биномиальный коэффициент, np.binom для вычисления функций склонности:
for j in range(len(LHS)):
cj = stoch_rate
for i in range(len(popul_num)):
if i >= LHS[i,j]: # ensures discrete number of reactants is high enough for the reaction to occur according to the LHS ratios
binon_rxn = binom(i, LHS[i, j]) # binomial coefficent isnt working! Always returns 1!
print(binon_rxn)
aj = cj*binon_rxn
else:
cj == 0
aj = (cj*binom(i, LHS[i, j]))
print("Propensity function:\n", aj)
Матрицы, которые я использую:
stoch_rate = np.matrix([0.0016, 0.0001, 0.1000])
LHS = np.matrix([[1,1,0,0], [0,0,1,0], [0,0,1,0]])
popul_num = np.matrix([350, 700, 0, 0])
LHS представляет rat ios между реагентами в системе из 3 реакций (каждый ряд - отдельная реакция), а popul_num представляет собой дискретное число каждого реагента в системе. Реагенты есть; Фермент, субстрат, фермент-субстратный комплекс и продукт, которые представлены в указанном порядке в каждой из матриц popul_num и LHS. Stoch_rate - скорость реакции.
Мне нужно рассчитать биномиальный коэффициент, используя количество дискретных молекул в popul_num и соответствующее соотношение для этого реагента в этой реакции из LHS.
В данный момент мой биномиальный коэффициент всегда возвращает 1,0, и я не знаю почему? Я пробовал scipy.stat.binom, но он возвращает ошибку атрибута «У Scipy нет атрибута stat» и scipy.special.binom, но он также возвращает только 1.
Возможно, я неправильно перебираю матрицу ?
Приветствия