Ich versuche, in der folgenden Arbeit (Methode 5) http://dx.doi.org/10.1016%2FS0076-6879(05)09012-9 in Python2.7 einen Algorithmus zu implementieren, um meine Programmierkenntnisse zu verbessern. Implementierungen können an folgenden Orten gefunden werden: Anscheinend kann ich nicht so viele Links posten. Wenn mein Ruf steigt, werde ich die Links hier posten.Die MSS-Maximum-Likelihood-Methode für Fluktuationstest
Im Wesentlichen wird der Algorithmus für die biologische Forschung verwendet und findet die Mutationsrate der Zellen unter einer Bedingung. Hier ist mein Versuch, die Fehler hat (Anmerkung: Ich habe diesen Code aktualisiert jedoch einen Fehler zu entfernen, ich bin immer noch nicht die richtige Antwort zu bekommen):
import numpy as np
import sympy as sp
from scipy.optimize import minimize
def leeCoulson(nparray):
median=np.median(nparray)
x=sp.Symbol('x')
M_est=sp.solve(sp.Eq(-x*sp.log(x) - 1.24*x + median,0),x)
return M_est
def ctArray(nparray,max):
list=[0] * int(max+1)
for i in range(int(max)+1):
list[i]=nparray.count(i)
return list
values='filename1.csv'
data=np.genfromtxt(values,delimiter=',')
mVal=int(max(data))
ctArray_=ctArray(np.ndarray.tolist(data),mVal)
ef mssCalc(estM,max=mVal,count=ctArray_):
def rec(pi,r):
pr=(estM/r)+sum([(pi[i]/(r-i+1)) for i in range(0,r-1)])
return pr
prod=1
pi=[0]*max
pi[0]=np.exp(-1*estM)
for r in range(1,max):
pi[r]=rec(pi,r)
prod=prod*(pi[r]**count[r])
return -1*prod
finalM=minimize (mssCalc,leeCoulson(data),method='nelder-mead',options={'xtol':1e-3,'disp':True})
print finalM
Dieser Code gibt die folgenden Fehler:
mss-mle_calc.py:37: RuntimeWarning: overflow encountered in multiply
prod=prod*(pi[r]**count[r])
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/scipy/optimize/optimize.py:462: RuntimeWarning: invalid value encountered in subtract
numpy.max(numpy.abs(fsim[0] - fsim[1:])) <= ftol):
Warning: Maximum number of function evaluations has been exceeded.
Bitte helfen Sie mir, diesen Code besser zu machen, wenn Sie etwas Zeit haben.
Ich wollte nur die Ironie bemerken, dass Ihr Problem ist. „Maximale Anzahl der Funktionsauswertungen überschritten worden ist“, und wenn sie versuchen, danach zu fragen, Sie erhalten einen Fehler "Maximale Anzahl der Hyperlinks überschritten". –
Im Ernst, es sieht so aus, als ob Sie versuchen [eine unbegrenzte Funktion zu optimieren] (http://stackoverflow.com/questions/29229810/optimization-using-scipy). –
Ich hatte den Witz nicht bemerkt, danke für ein Lachen. –