Python Функция np.binom возвращает только 1 - PullRequest
0 голосов
/ 27 апреля 2020

Наверное, немного больше математического вопроса! У меня есть следующий код, который использует биномиальный коэффициент, 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.

Возможно, я неправильно перебираю матрицу ?

Приветствия

...