N.I.M.R.O.D. |

-----> ** Only files in the "users" folder must be modified in routine.**

SEE the module VectorLength in moduleModelSpe.f90.

The user must specify the model size :

- npmbio : Number of biological parameters
- npmexpl : Number of explicative variables (estimated regression coefficient)
- ndim : Number of random effects
- npmcomp : Number of observed compartments
- nbcomp : Total Number of compartments in ODE systems
- tdef2 : Maximum Number of observation time
- nbpatienta : Maximum number of patient

SEE the module Datareading in moduleModelSpe.f90 and subroutine readData in IOUser.f90.

First, you must define names for data you want to collect in moduleModelSpe.f90, in the module Datareading. Use variables in the VectorLength module to specify the lengths. Then in file inAndOutUser.f90 define the different reading subroutine. Each new defined reading subroutine must be called in the readData subroutine

SEE the module systemODE in moduleModelSpe.f90 and subroutines solution, FEX*, JEX* and initialPoints in ode.f90.

First parameters must be defined in moduleModelSpe.f90/module systemODE in order to have name stored for ODE parameters, constant ODE parameters and derivative ODE parameters. Second JEX (first derivative) and FEX (second derivative / hessian) subroutines must be specified in ode.f90. Third, define specific JEX*'s and FEX*'s subroutines for parameters * derivatives in ode.f90. To finish, modify subroutine initialPoints so as to specify equilibrium points for the whole system and for parameters sub-systems. A mapple program (Compute_ODE.mw) is available. Specific information on FEX and JEX can be found in dlsode.f90 subroutine manual.

SEE the subroutine SystemResolution in observationModel.f90

On the one hand, all compartments are not necessarly observed - only agrregate indicators are availables (eg sum of compartments). On the other hand, compartment values can be bounded (eg must be greater or equal to 0). You must modify subroutine SystemResolution in observationModel.f90 to take into account these informations.

SEE subroutines transfoFixedInTime and transfo in parameterTransformation.f90

Sometimes parameters transformation are preferred to parameters themselves (ex : log-transformation if the parameter must be positive). This can be implemented in the subroutines transfo and transfoFixedInTime in parameterTransformation.f90 Fixed in time parameters parameters must be defined in transfoFixedInTime since this subroutine is only called once at the beginning of the program. Other parameters can be defined in transfo. User must properly implement transfo because it can be called more than 1 million of times in a single run. Thus, a time consuming implementation of this subroutine is highly costly.

Then, each ODE system parameter must be defined in function of "b" (the estimation vector), parameters0 (constants for parameters) and or covariates (with or without estimated coefficient). It is also the place to define dparameter, the derivative of parameters. If the parameter is independant from estimated regression coefficient then, dparameter has to be set equal to parameter. Otherwise, dparameter will be computed then used in the regression coefficient estimation.

SEE subroutines transfoFixedInTime and transfo in parameterTransformation.f90 and subroutine solution and initialPoints in ode.f90.

Order of parameters in vector "b" must be carefully choosen and kept. Traditionally, the global ordre is : biological parameters, covariates effects, random effects and error measurment. The order in subroutines transfoFixedInTime and transfo in parameterTransformation.f90 must match with the one used in subroutines solution and initialPoint in ode.f90 to call dlsode. Moreover, if you decided to consider n random effects, they will be put on the n first elements of vector b.

SEE Input.txt

Classical maximum likelihood without penalisation is possible by specifying it in the Input.txt file. Otherwise, for MAP estimation, priors must be specified. Two penalization type are available: either a penalisation for all biological parameters or a penalisation for all parameters. So far the penalization different type of penalization is implemented in function of the parameter type We implemented Normal priors for fixed parameters : mean and standard deviation carefully choosen in accordance with the literrature. Priors for random effects standard deviations are half cauchy, parameter to be given is the over estimated median of the standard deviation of the random effect. Standard deviation for error measurment have jeffreys classical priors.

SEE Input.txt

Many information must be provided in the Input file.

- Names of parameters (in latex shape) and starting point value. -99 stands for unprovided starting points, thus, NIMROD takes as starting points the mean of the priors. Error measurment starting point specification is compulsory. If all parameters are not penalized, parameters with no penalization must have their starting points specified.

- Output and Input folder/files.

- Algorithm convergence threshold : acceptable difference in parameters displacement, acceptable difference in log-likelihood and acceptable RDM.

- Maximum number of iteration

- Optimization procedure (RVS, RVS+Marquardt, Marquardt)

- Penalization type (biologica parameters only or all)

- Priors values

SEE Advanced users Options for algorithm customization

Parallel computing

Two modules are available mpimod.mpi.f90 for running mpi program (but mpif90 has to be installed) and mpimod.seq.f90 for sequentiel compilation. Cmake automatically choose the rigth one according to computer settings but manual compilation (if Cmake is not installed) can be done by deleting the unused mpimod.f90.

- Basic problems of variable definition (no implicit type, re-use of a variable name ...)
- Verify that you copied input files in your work directory
- Verify that files are read correctly. use option debugReadData=.true. in moduleModeleSpe.f90/module debugage
- Verify that you have the same order for parameters in vecor "b" in
- Verify That dlsode correctly compute the trajectories. You can use option debugDLSODESolution=.true. in moduleModeleSpe.f90/module debugage
- Then check funcpa. You can use option debugFUNCPA=.true.in moduleModeleSpe.f90/module debugage
- If warning "Under the detection treeshold" happens too often - check your detection treeshold definition. You can eventually use debugVRAISTOT=.true. debug option.
- Other debug option are available but output are sometimes difficults to read for unused users.
- Adding prints in the code where results seems to be astonishing is still a good alternative to these already implemented debug options.

Generated on Wed Mar 20 2013 12:21:53 for N.I.M.R.O.D. by 1.7.3