몬테카를로 시뮬레이션을 수행하고 신호 강도 대 시간 곡선을 생성하는 코드를 작성했습니다. 이러한 곡선의 모양은 다양한 매개 변수에 따라 달라지며 두 곳의 공동 작업자는 내가 시뮬레이션하고있는 실험의 '실제 버전'으로 결정하려고합니다.파이썬으로 시뮬레이션 및 실험 데이터 포인트 맞추기
실험 데이터를 시뮬레이션 된 곡선과 비교할 준비가되었지만, 아직까지는 어떤 테스트도 수행 할 수 없었기 때문에 멈췄다. (지금까지 실험 데이터를 테스트를 위해 시뮬레이션 된 노이즈 데이터로 대체했다) . 나는 scipy.optimize.leastsq
코드 2를 사용하여 종료했는데 (문서에 따르면 피팅이 성공했다는 것을 의미 함), 대개 단순히 정확한 값은 아니지만 가까운 값을 반환합니다. 초기 추측과 상관없이 입력합니다. 그들이 진정한 가치관으로부터 얼마나 멀리 떨어져 있었는지 멀리 떨어져있었습니다. 다른 값을보고하는 경우 결과 곡선은 여전히 실제 곡선과 상당히 다릅니다. 나는 생각했다
또 다른 관찰은 내가 크기의 동일한 순서의 복지 두 매개 변수 '진정한 값을 주변에 해왔다 내 시뮬레이션 잡음이 데이터를 사용하는 동안 infodict['nfev']
변함없이
The relative error between two consecutive iterates is at most 0.000000
이 포함되어 있다는 점이다 (로 그 스텝 크기 사용법은 그 중 하나에 현저하게 영향을 미칠 수 있습니다.), 매우 다른 순서의 크기를 가지며 단계 크기 (매개 변수 epsfcn
)를 변경했지만 아무 소용이 없습니다.
는 사람이, 내가 잘못 일을 할 수있는 어떤 또는 내가 leastsq
의 대신을 피팅 어떤 기능을 사용할 수 있습니다 어떤 생각을 가지고 있습니까
지금 시뮬레이션 수행 방법에 대한 몇 가지 세부 사항을 제공 할 것입니다 러스에 의해 제안 편집
: 우리가 큰 분자에 결합하는 작은 분자에서 찾고 있습니다. 이것은 상호 친 화성에 의존하는 확률로 발생합니다 (친 화성은 실험 데이터에서 추출 된 값 중 하나입니다). 바인딩이 이루어지면 컴플렉스가 다시 떨어져 나올 때까지 걸리는 시간을 시뮬레이션합니다 (해리 시간 상수는 관심있는 두 번째 매개 변수입니다). 다른 여러 매개 변수가 있지만 예상되는 신호 강도가 계산 될 때만 관련이 있으므로 실제 시뮬레이션과 관련이 없습니다.
주어진 수의 작은 분자로 시작합니다. 각각의 상태는 여러 시간 단계에 대해 시뮬레이션됩니다. 매 시간 단계마다 우리는 친 화성 값을 사용하여이 분자가 결합되지 않은 경우 큰 분자에 결합하는지 여부를 결정합니다. 이미 바인딩 된 경우에는 해리 시간 상수와이 단계에서 해체되는지 여부를 결정하기 위해 이미 바인딩 된 시간 양을 사용합니다.
두 경우 모두 매개 변수 (선호도, 해리 시간 상수)를 사용하여 확률을 계산 한 다음 난수 (0과 1 사이)와 비교합니다.이 비교에서는 작은 분자 (바운드/언 바운드) 변경.
EDIT 형상이 명확하게 재현하더라도, 생성 곡선의 형상을 결정하고, 더 잘 정의 된 기능은 없다 2
, 임의성의 요소는 각각의 데이터에 존재 포인트. 따라서 leastsq
대신 optimize.fmin
을 사용하려고 시도했지만 최대 수의 반복 수행 후에 수렴하지 않고 단순히 종료됩니다. 안드레아에 의해 제안
EDIT 3
가 나는 sample plot을 업로드했습니다. 나는 샘플 데이터를 제공하는 것이 많은 도움이된다고 생각하지 않는다. x 값 (시간) 당 하나의 y 값 (신호 강도) 일 뿐이다. ...
문제가 계속되는 경우 사용중인 데이터 및 피팅 절차의 예를 보여줄 수 있다면 도움이됩니다. –
흥미로운 응용 프로그램처럼 보입니다. 몇 가지 플롯이나 예제 데이터를 넣어야합니다. 그러면 질문에 훨씬 더 많은 관심을 기울일 수 있습니다. –
@Andrea Zonca 제안한대로 음모를 업로드했습니다. 샘플 데이터는 생략했습니다. y 값당 하나의 x 값일 뿐이므로 아무에게도 말하지 않습니다 ... 감사합니다! – canavanin