Normal approximation Inference in Models with Random effects based on Ordinary Differential equations


---> NEW : Version 2.1 is now available here. Downloads.

Models libraries (Pharmacokinetics, HIV, ...) are available here :


Models based on ordinary differential equations (ODE) are a widespread tool to describe dynamical system. In biomedical sciences, data within each subject can be sparse but information is often gained from between-subjects variability. This makes natural the use of mixed effect models to estimate population parameters. Although maximum likelihood based approaches are a valuable option, both numerical and identifiability issues favor a Bayesian approach which can incorporate prior knowledge in a flexible way. However the combination of difficulties coming from the ODE system and from the presence of random effects raises a major numerical challenge. A normal approximation of the posterior can be obtained by computing the maximum of the posterior distribution (MAP). Here we present the NIMROD (Normal approximation Inference in Models with Random effects based on Ordinary Differential equations), a program devoted to the MAP estimation in ODE models. See Model and problem definition for more details.

To modify NIMROD at your own convenience, you can find documentation in Related pages How to implement one's own problems ?

Advanced users can custom the algorithm and change algorithm thresholds Advanced users Options

See Modules, Files and Directories for a complete description of NIMROD implementation. Functions and subroutines Call graph, variable and usage descriptions are available.


The NIMROD Fortress at Spring.


For Mac :

For Linux


    unzip nimrod.zip
    cd nimrod
    mkdir build
    cd build
    cmake ..


Automatic switch between MPI parallel and sequentiel compilation is implemented depending on the fact that MPI is found on the computer or not. More details can be find CMakeLists.txt. Let N be the number of subjects analyzed in the study data. Let M be the number of cores available and used for the running. User must check that M<=N.

No MPI library


MPI on a workstation

    mpirun -np M ./nimrod

MPI on a cluster with torque

    qsub mpi.sh

For a M cores running suring maximum 10 hours, mpi.sh is implemented such that:

                #PBS -l nodes=M,walltime=10:00:00
                #PBS -N OPENMPI
                . /etc/profile.d/modules.sh
                module purge
                module load torque
                module load gcc/4.6.0
                module load openmpi/gcc
                NUMPROC=`cat $PBS_NODEFILE | wc -l`
                cd $PBS_O_WORKDIR
                mpirun --prefix $MPI_HOME -np $NUMPROC -machinefile $PBS_NODEFILE $myapp