merrypopins! a library for nanoindentation data science
A material science project I have been working on at Utrecht University with an excellent team!
If you just want to checkout the library we built, look here for the repo.
If you ever have thought about how things deform, break, or otherwise change due to mechanical processes you have thought about material science. If you have ever thought about how novel materials are made such as plastics or metal alloys you have thought about material science. If you have ever considered that the Bronze Age was brought about by the invention of a new material called “Bronze” which is the combination of copper and tin, you have thought about material science. Material science is all of these things and is a super active field that spans physics, chemistry, engineering and computing. These days it even includes AI in coming up with new materials.
Nano-indentation is a relatively simple science in terms of the vast amount of material science options available out there. You poke a material with a microscopic “tip” with more and more force and measure the response from the tip in terms of the force applied and the current location of the tip to see what happens. This simplicity allows for strict control of the system while producing rather dynamic behaviors. Different materials have different responses based on the Young’s modulus, etc. and you record these and then put them together to try and understand how the material deforms under load. These behaviors can even lead to chaotic instabilities like rapid deformations that occur, perhaps without any warning. If a tiny tip being put on a surface sounds familiar to you, you might have heard of atomic force microscopy (AFM). In an AFM setup, you drag the “tip” across the surface of the material you care about, as the tip moves up and down it records the elevation profile of the surface of the material. In fact, you can use the nano-indentation machine to create such elevation profiles so that you can study the shape of the indentations themselves to try and understand the material properties and dynamics of the deformation.

It is believed that these nano-indentation experiments form one end member of dimensionality in the deformation of lots of different materials including hazards such as engineering failures, accidents, or earthquakes. By indenting only single grains in a rock, and therefore a single material, we can understand how those very small deformations occur over time. If we get some kind of failure mode in the material, it is believed, that this could be some kind of observation of an earthquake nucleation process. Below is a succession of increasing zoom levels to demonstrate both the process and exactly how small of a poke we are giving the rock.


A central component of this work is identifying and locating something called a “pop-in”. A pop-in occurs when there is a sudden change in the deformation process. The tip is being forced into the material and suddenly the material gives a little, allowing the tip to travel deeper into the material rapidly before being slowed down again back to it’s regular pace. This pop-in is poorly understood in the data and it is believed to have something to do with some kind of fracture nucleation process. But nobody knows. Understanding these indentations includes both making the raw observations of the experiment itself, but also performing statistical analysis across hundreds or thousands of these experiments as the apparatus can be automated. Enter merrypopins!

merrypopins
merrypopins is a python software package that we have been working on in collaboration with Utrecht University Applied Data Science masters students. We have developed a library that loads and ingests data from the nano-indentation experiment, preprocesses the data to remove known artifacts, calculates stress-strain curves for the data, uses different ai/machine learning models for locating pop ins in the data, and facilitates statistical analysis across many iterations of the nanoindentation experiment. This library was developed in close collaboration with the material scientists and geologists at Utrecht University using tutorial driven software development practice and includes both tutorials that library users can use as well as as streamlit app that requires no coding knowledge.

The library is in active development!
If you would like to help develop this library feel free to clone or fork it on github:
git clone https://github.com/SerpRateAI/merrypopins.git
cd merrypopins
pip install -e .
or you can pip install it if you just want to use it as is:
pip install merrypopins
If you find a bug or want to make a feature request, you are welcome to create an issue!
Currently the library needs the following
Data from other nano-indentation experiments to build out the load module to account for the varying data types from various pieces of equipment
More users to test it on their data to build out features for statistical analysis
A version 2.0 release that includes more references to Mary Poppins
Happy coding everyone.