The carbonate digital lab

 | Coding languages | Machine learning | Numerical methods Stratigraphy and forward modeling 

The role and importance of numerical methods

Within the carbonate group, we tend to mix laboratory and field methods with numerical methods and coding. There are practical reasons to adopt this dual approach: the role of numerical geology is to provide quantitative methods to interpret the natural world with greater confidence, and to both predict, quantify, and reduce sources of errors at all stage of the geological interpretation. Coupling numerical methods with practical applications in geology is thus a very powerful paradigm. The tools we use are fit for purpose, which explains why they are diverse.

Digital infrastructure: the (coding) languages that we speak

Coding languages are designed with a purpose in mind: this remains true even for "general" programming languages designed to performed generic tasks. Broadly speaking, two family of languages can be distinguished: weakly-typed, interpreted scripting languages that sacrifice safety, fast execution and ease of code re-reading for fast development time, and strongly-typed, compiled languages that do the reverse. Both have their use.

In the group, we have used Matlab, R and Python code extensively to do simple numerical work, and to explore statistical relationships between variables and produce elegant plots. Good published example of this type of work within the group can be found in the use of R for geostatistical modeling (Le Blevec et al, 2017, Le Blevec et al, 2018) and of Matlab to model the evolution of the isotope geochemical composition of dolomites on the Marion Plateau (Veillard et al, 2019). Lately, we have started to use Python and the excellent associated library as a replacement for both R and Matlab.

For more demanding codes, we tend to prefer strongly typed languages were type errors can be checked at compile time. This avoids lengthy numerical computations ending in a type error. It also typically has the very significant benefit that compiled languages tend to be faster at run time, thus reducing latency. We have used various compiled languages in the past, starting with Objective-C to develop a Macintosh application to draw ternary diagrams (John, 2004). We then moved to the Java Virtual Machine (JVM) ecosystem as it offers numerous adventages: fast execution, backward compatibility, extensive ecosystem, and the ability to run on virtually every platform. We developed our software Easotope using Java (John and Bowen, 2016). Currently, we are using another JVM language extensively: Scala. Scala is superior to Java for our puropose as it combined object-orientation with functional programming, and it is considered as the best language for machine learning at scale, notably with Apache Spark.

Machine learning and "big data" in carbonate sedimentology

Artificial Intelligence, or AI, is now a buzz word found everywhere in our daily life. In science, it is associated with the terms "Big Data" and "Machine Learning".The term AI is deceiving, as there is no real artificial intelligence today (known as Strong AI), or very little of it. But what the field has given us is an ever growing collection of very powerful algorithms to solve non-linear problems, and some creative ways to use them. It is not an exageration to state that now is one of the most exciting times to be a scientist with some interest in coding!

Example of 'Big Data' projects within the carbonate group includes an Msc project done in 2018, in the process of being published (Kanagandran and John, in prep.). Geology has traditionally been a descriptive science, with rock facies (the way rocks 'look') being an important non-structured data that is used for further interpretations. Thus, careful and accurate description of facies directly impacts the quality and related uncertainty of geological models. This is also true for applied projects for instance in the oil and gas industry, where rock facies form the base of many numerical models or petrophysical classes. However, the Lokier et al 2015 study has clearly shown that even experienced geologists tend to give a different facies name to the same rock. This leads to great uncertainties when it comes to relying on rock description.

In our study, we demonstrated that a special type of artificial neural network (convolutional neural networks) could be trained to recognise rock facies at a speed 60 times greater then achieved by humans, and with a 90% accuracy very close to the best geologists. This is demonstrated here by automated core classification at high-resolution using our Python code and the TensorFlow library (Figure above, right). Furthermore, the algorithm makes systematic mistakes between very similar classes of rocks, and it outputs a confidence interval for it's classification (see above). And the biggest gain is that the algorithm can classifiy an entire core shed on its own, meaning that even if a bias is introduce in the data, this bias will be constant throughout the project or even throughout several projects. It can thus be corrected for. By contrast, core description is typically done by small team of humans, and their bias is unknown and not systematic.

The results from this project shows the big potential for machine learning to revolutionarise the field of Earth Sciences, especially given enough training data. But it is of course only the first one of a series of project we intend to do in the group. What we will work on next will depend in part on funding we receive. Core description and thin section descriptions are amongst our target, but also other types of data, such as seismic data, geochemical data, downhole data. In fact, any kind of data you can think about, as this approach liberates the geologist form menial tasks and allow them to focus on the higher order interpretation.

Overview of the Easotope architecture (John and Bowen, 2016)

Numerical methods in carbonate geochemistry and sedimentology

Numerical methods find their place in every subfield of carbonate geology. For instance, we developed a new software called 'Easotope' and released it as free software (see John and Bowen, 2016). Easotope is built as a client-server application in Java, and runs on most standard operating systems that support a Java Virtual Machine (JVM). Easotope is a great help for the field of clumped isotope geochemistry, as it makes the management of complex isotope corrections easier and more transparent. This in turn reduces the source of uncertainty in interpreting data.

We also worked in collaboration with other members of the department on advanced numerical project. For instance, Thomas Le Blevec, a former member of the carbonate research group, did his PhD on using pluri-gaussian simulations to model carbonate rocks at a range of scales. His work, writen using the programming language 'R', has resulted in a number of publications, for instance Le Blevec et al, 2017. Another example is the work of Peter Fitch who used Eclipse and a experimental design to model the effect of various geologic heterogeneities within a carbonate reservoir on production scenarios (Fitch et al, 2014).

The field of numerical methods is a dynamic and fascinating one, and it benefits from creativity: there are many interesting problems that we can solve using numerical methods combined with domaine-specific expert knowledge. Students and post-doc need not have prior knowledge of programming to enter the group on a digital project, as long as they are willing to learn new skills.

Publications related to our numerical work: