himoto / ParamEstim

Parameter Estimation of ODE/DDE Models in Julia
https://github.com/biomass-dev/BioMASS.jl
MIT License
3 stars 0 forks source link

Overlap with DiffEqParamEstim.jl or BlackBoxOptim.jl #1

Closed freemin7 closed 4 years ago

freemin7 commented 4 years ago

Your application looks impressive but you seem to reinvent some significant amount of wheel.

From what i see you directly include Sundails. Why did you decide not use the DiffEq universe and call Sundails without that? If you did so you could try other algorithms which might lead to a faster/more precise solution.

There are some other packages in Julia which have significant overlap: https://github.com/JuliaDiffEq/DiffEqParamEstim.jl and https://github.com/robertfeldt/BlackBoxOptim.jl I am sure DiffEqParamEstim would be happy with such an well worked out and non-trivial example. Why did you decide to roll your own framework from scratch ? Do you see places where DiffEqParamEstim could improve to suit your needs?

BlackBoxOptim.jl might be interested in your evolutionary optimization algorithm, i think it already has some but having them behind the same calls would allow to compare those and pick a better one or improve the interface of BlackBoxOptim.jl.

Thank you for writing this package and welcome to the wider Julia community. I hope i did not bother you.

himoto commented 4 years ago

Thank you for your inquiry.

From what i see you directly include Sundails. Why did you decide not use the DiffEq universe and call Sundails without that? If you did so you could try other algorithms which might lead to a faster/more precise solution.

I have tested some ODE solvers and found CVODE_BDF() is the fastest, but I will change my package in order for you to use https://github.com/JuliaDiffEq/DifferentialEquations.jl on other algorithms.

There are some other packages in Julia which have significant overlap:s https://github.com/JuliaDiffEq/DiffEqParamEstim.jl and https://github.com/robertfeldt/BlackBoxOptim.jl I am sure DiffEqParamEstim would be happy with such an well worked out and non-trivial example. Why did you decide to roll your own framework from scratch?

I didn't know these packages existed. Thank you for your information. I have already created optimization tool in Python (https://github.com/okadalabipr/intro_to_param_estim), and tried to make it faster by using Julia.

Do you see places where DiffEqParamEstim could improve to suit your needs?

I am not entirely sure of what this package entails but I will look into more details and get back to you on this.

Lastly, It was not a bother at all. Thank you so much for your feedbacks.

freemin7 commented 4 years ago

I am glad i could be of help. You might want to contact Chris Rackauckas (http://chrisrackauckas.com/index.html) he is very involved with the JuliaDiffEq project and might help you better integrating your code with other projects in the area. When he applies his research it seems to be related to biology/medicine too.

Pumas is scientific AI in clinical practice. Pumas makes it possible to predict the optimal medication dosage for individuals, reducing the costs and potential complications associated with treatments. The software is currently being tested in the administration of treatment for neonatal abstinence syndrome (NAS), an opioid withdrawal disorder in newborn babies. NAS requires medically administered morphine doses every four hours to prevent the infants from experiencing withdrawal symptoms. Pumas is being used to predict personalized safe dosage regimens by incorporating realistic biological models (quantitative systems pharmacology) and deep learning into the traditional nonlinear mixed effects (NLME) modeling framework.

He created this package for example https://github.com/JuliaDiffEq/MultiScaleArrays.jl which makes the creation of large systems of differential equations with hierarchies less error prone. I am suggesting that it would work for you in this case but you might want to consider it future projects.

Short question out of personal interest:

I didn't know these packages existed. Thank you for your information. I have already created optimization tool in Python (https://github.com/okadalabipr/param_estim), and tried to make it faster by using Julia.

Did it get faster?

himoto commented 4 years ago

Thank you so much for all your suggestions. I've looked into Chris Rackauckas's package and found it very fascinating. I will look further into it and contact him in the near future.

Short question out of personal interest:

I didn't know these packages existed. Thank you for your information. I have already created optimization tool in Python (https://github.com/okadalabipr/param_estim), and tried to make it faster by using Julia. Did it get faster?

Yes, it definitely have gotten faster with Julia than Python. I attached below the result of the execution time; and it went faster by almost 6x.

Execution time to calculate generation 1000