Dr Thomas Cornulier

Dr Thomas Cornulier

Research Fellow

Overview
Dr Thomas Cornulier
Dr Thomas Cornulier

Contact Details

Telephone
work +44 (0)1224 272559
Address
The University of Aberdeen Room 1.05 Cruickshank building,
School of Biological Sciences,
University of Aberdeen,
St. Machar Drive,
Aberdeen AB24 3UU,
UK

pallid harrier - Velavadar Gujarat

sample of tomachrome images

Biography

  • 2012 - present Research fellow in applied statistics, University of Aberdeen, UK
  • 2009 - 2012 Post Doctoral Research fellow, University of Aberdeen, UK
  • 2008-2009 Post Doctoral Research fellow, CEBC-CNRS, France
  • 2007 Marie-Curie "Transfer Of Knowledge" Research fellow, Mammal Research Institute, Bialowieza, Poland
  • 2006-2007 Post Doctoral Research fellow, University of Aberdeen / UKPopNet, UK
  • 2005 PhD in Ecology, Université Lyon I, France
  • 2001 MSc Biometry & modelling, Université Lyon I, France

Gannet @ Trouphead (c) T. Cornulier

Research

Research Interests

T. Cornulier's research cloud

 

My research involves the development of models to address novel or long standing scientific issues. I work on a wide range of topics across biology, with particular interests in understanding variation in animal population size over space and time. This may involve using hierarchical models with Bayesian statistical approaches for 1) developing integrated, process-based models of systems dynamics (e.g. population, soil,...), combining data from different sources to inform each process and 2) making the most efficient use of sparse data, such as historical records or volunteer-based surveys. I also have general interests in random effects, smoothing methods, integrated population models and the analysis of spatial and temporal lags in systems' response to environmental variation.

 

Grey seal @ Ythan (c) T. Cornulier

Current Research

  • Models for habitat selection over multiple spatial scales (collab. A. Villers - CNRS)
  • Real-time prediction of fish distribution hotspots at sea (collab. R. Wiff - G. Martin - T. Marshall - UoA)
  • Early detection of local changes in data-poor fish stocks (collab. H Gadenne - L Pawlowski - IFREMER)
  • Spatio-temporal variation and early detection of local changes in volume of ambulance interventions across Scotland (J. Jansen - UAB)
  • Spatial prediction of plague incidence in Madagascar (collab. S. Telfer - UoA - B. Purse - CEH)
  • Wintering ecology and conservation of Montagu's and Pallid harriers in India (collab. C. Krishna, F. Mougeot et al.)
  • Meta-analysis of fertilizer-induced global nitrous oxyde emissions in crops (collab. J. Hillier - Edinburgh Univ, F. Albanito - UoA, U. Lebender and F. Brentrup - YARA, C. Stirling - CIMMYT)
  • Effects of trait functional importance on fluctuating asymmetry (collab. B. Arroyo)
  • Temporal variation in cuckoo laying phenology in Central Europe (collab. P. Adamik)
  • Life history trait allometric relationships in Mammals and Plants (collab. L. Santini, J. Travis, N. Beckman, J. Bullock - CEH)

 

PhD students

  • Katie August (2018-2021) Leaving the safety of the forest: The landscape-scale dynamics of a protected mobile species occupying areas with varying levels of protection (co-supervision with X. Lambin)
  • Arianna Zampollo (2018-2021) Modelling primary production in Scottish waters to predict the impacts on the ecosystem of climate change and renewable energy devices. (co-supervision with B. Scott, J Tweedle, R. O'Hara)
  • Naveed Bhatti (2017-2020) Developing monitoring tools for data deficient conservation priority lichens/bryophytes (co-supervision with R. Mitchell et al.)
  • Vivianne Eilers (2017-2020) Evaluating the effectiveness of mitigation actions to reduce the impact of electricity cables and roads on Brazilian fauna (co-supervision with K. Mustin, S. Redpath)
  • Ewan McHenry (2014-2018) Doing more with less: adaptive management of American mink population (co-supervision with X. Lambin, D.A. Elston)


 

Past projects (see publications list for more)

  • Spatial and temporal changes in the population dynamics of cyclic rodents - patterns and causes (collab. X. Lambin, N.G. Yoccoz, D.A. Elston et al.)
  • Predicting farmland bird population response to environmental change using mechanistic models (Systems: Yellowhammer / UK - Montagu's harrier / France) (collab. X. Lambin, D.A. Elston, A. Millon)
  • Retrospective and prospective modelling of American mink eradication in the Outer Hebrides using integrated population models (collab. X. Lambin, I. Macleod, M.K. Oliver)
  • Predicting predator response to changes in rodent dynamics (collab. X. Lambin, A. Millon, A. Villers)

 

Fulmar @ Trouphead (c) T. Cornulier

 

Teaching

Teaching Responsibilities

Course coordinator:

3rd year undergraduate BI3010 (with Michelle Pinard) - Statistical Analysis of Biological Data.

Postgraduate MSc BI5401 - Introduction to Bayesian Inference (Discontinued as of 2018).

PhD course 'An Introduction to R' (with Alex Douglas).

PhD course 'An Introduction to Statistical Modelling in R' (with Alex Douglas).

Contributions:

Generalized additive models in MSc BI5009 - Experimental Design & Data Analysis.

Random effect models in MSc BI5302 - Statistics for Complex Study Designs.

Non-parametric statistics - Basic statistics course for Postgraduate researchers.

Quantitative training induction for Postgraduate researchers.

Statistics training workshops:

Spatio-temporal modelling for fisheries (IFOP, Valparaiso, Chile 2019 - with R. Wiff).

Statistical methods for informing the management of contracting or range-expanding species (as part of CONTAIN-LATAM-UK project funded by the Newton Latin American Biodiversity Fund).

  • Part 1: "Statistical modelling of presence-absence and count data in space and time" (June 2019, Buenos Aires, Argentina)
  • Parts 2 & 3: "Introduction to Bayesian modelling + Bayesian modelling for population ecology" (December 2019, Bariloche, Argentina)

 

Brown bear (c) TC

Further Info

Some R stuff

 

Notes and simple R functions mostly intended for my own use and anyone else’s. Without any warranty! Any error please let me know.

 

Here is some R code to draw Royama's phase plane (Royama, T. 1992. Analytical Population Dynamics).

Royama's triangle

#START CODE
plot(1, 1, col= NULL, xlim= c(-2, 2), ylim= c(-1, 1), xlab= expression(paste("1 + ", Omega[1])), ylab= expression(Omega[2]), pch= 21, bg= NULL, cex.lab= 1.2)
segments(c(-2, 0, -2, 0), c(-1, 1, -1, -1), c(0, 2, 2, 0), c(1, -1, -1, 0), col= grey(0.4))
curve(-x^2 / 4, -2, 2, col= grey(0.4), add= T)
cycleperiod<- c(3, 5:100)
w= 2 * pi / cycleperiod
for(i in 1){curve(-0.25 * x^2 * (tan(w[i])^2 + 1), -sqrt(1 / (0.25 * (tan(w[i])^2 + 1))), 0, add= T, col= grey(0.4))}
for(i in 2:97){curve(-0.25 * x^2 * (tan(w[i])^2 + 1), 0, sqrt(1 / (0.25 * (tan(w[i])^2 + 1))), add= T, col= grey(0.4))}
text(x= c(-1.34, -0.65, 0.05, 0.47, 0.73, 0.91, 1.04), y= c(-0.516, -0.516, -0.516, -0.516, -0.516, -0.516, -0.516), labels= 2:8, col= grey(0.5), cex= 1.2)
# END CODE

 

# Modification of R's image() and contour() functions to plot images of matrices as they are normally displayed, i.e. without transposing then reversing the rows order (R default)
image2<- function(x, col= rev(heat.colors(64)), ...){
image.default(t(x[nrow(x):1, ]), col= col, ...)
}
contour2<- function(x, ...){
contour.default(t(x[nrow(x):1, ]), ...)
}

# R function returning the (index of the) desired “quantile” of a cumulative distribution (not foolproof!)
cumquant<- function(ecd, quantiles= c(0.25, 0.5, 0.75)){
# takes empirical cumulative distributions and
# returns the index of the last data less than or equal to the desired “quantiles”
mx<- max(ecd)
sapply(quantiles, function(q){length(ecd[(ecd/mx) <= q])})
}

# R function to draw random variates from a skew-normal distribution (thanks to D. Elston)
rnormskew<- function(n, mu, sd, shape){
nmax<- (2.1 + exp(-0.0001 * n)) * n
x<- rnorm(nmax, mu, sd)
r<- runif(nmax, 0, 1)
y<- pnorm(((x - mu) / sd) * shape)
x[r < y][1:n]
}

# R function to draw random variates from a truncated-normal distribution slightly modified from function rtrun() in library(bayesm)
rtrunc<- function (mu, sigma, a, b){
lgth<- max(c(length(mu), length(sigma), length(a), length(b)))
FA <- pnorm(((a - mu)/sigma))
FB <- pnorm(((b - mu)/sigma))
return(mu + sigma * qnorm(runif(lgth) * (FB - FA) +
FA))
}

 

 

Pipistrelle bat (c) T. Cornulier

Publications

Publications 

Update