Monday, November 16, 2020

Texture analysis by DiRDiP

Imagine you have a set of points evolving in time. It can be the center of colloidal particles in a suspension, of cell nuclei in a tissue, of bubbles in a foam, of people in a crowd. You also have a way of defining which point is bonded to which one. Two people are bonded if they hold hands. Two nuclei are bonded if their respective cell membranes touch. Two bubbles are bonded if they share a soap film. Two colloidal particles are bonded if they are within a certain distance from each other.

And now you make this dynamical, with people moving and handshaking around, bubbles deforming to flow through a funnel, colloidal suspension beeing sheared, tissue trying to fix the scar of a scalpel cut. Your points are moving and your bonds can stretch, rotate, break or be born.

A set of 9 positions with bonds between them, evolving in time. The positions can move, the bonds can appear (green) or disappear (red).

How would you characterize this mess? How to make statistically significant observations of such an ensemble of discreet events? How to deduce anything about the response properties of your system? 

One way is to translate the original discreet description of the evolution of the system (discreet points moving and discreet bonds deforming, appearing or disappearing) into a continuous description in terms of strain field. Even better, in terms of strain fields: the reversible part of the strain that correspond to the bonds that deform without breaking on one hand, and on the other hand the irreversible part of the strain that corresponds to the bonds that appear or disappear.

I've just released a piece of code that does just that.

It's based on a great method published by François Graner and Benjamin Dollet in 2008 that allow to go from the set of point to the mechanical properties of the system. This paper is great, pedestrian and extremely clear on every detail. I really recommend the read if you know a bit about strain tensors and continuous mechanics.

Unfortunately, the original implementation of this analysis in Delphi was lost and later implementations in Matlab were never brought to releasable form. That is why I reimplemented everything in Python - I hope in a clean enough way - so that others will be tempted to use this method. 

This new implementation relies only on Numpy and Numba for optimized calculations, and on Matplotlib to display the results. 
 
I've cooked up examples to show how to use Trackpy results stored in Pandas dataframes as positions and how scipy.spatial can be used to define bonds.
 
Following the title of the original paper, the code is named DiRDiP, for Discrete Rearranging Disordered Patterns.
 
The code can be cited using the DOI provided by Zenodo: 
Mathieu Leocmach, DiRDiP, https://doi.org/10.5281/zenodo.4276047 (2020)


What the code takes as input

  • Two arrays of coordinates at two different times. The dimensionality is arbitray, but for most applications 2D and 3D will be enough.
  • Two sets of bonds, each linking positions at one of the two times.
  • A grid on which to compute the continuous description. I've implemented the rectilinear grid in any dimension, the regular grid in any dimension, and the polar grid in 2D. Implementing other grids (spherical, cylindrical, etc) would be rather easy.

What the code outputs

Arrays of matrices, one matrix per grid element. Exemple of matrices (as defined in the paper):
  • statistical velocity gradient
  • statistical rotation rate
  • statistical topological rearrangement rate

There is a submodule dedicated to displaying such arrays of matrices in Matplotlib.

What the code does not do

  • Localize interesting points and link their positions in time. Use Trackpy for that, or what fits to your problem.
  • Decide which points are linked together. This dependes so much on the physics or biology of your system. Some possible geometrical criteria are implemented in scipy.spatial, like Voronoi neighbourhood, k-nearest neighbours, distance criterion, etc.
  • Decide how to average the results to obtain statistical significance. But you know, averaging numpy arrays is pretty easy. For example, if you have a seady state, you may want to average in time the arrays resulting from two successive time steps. If you have a spatial symmetry or invariance in your system, you may want to exploit it.

What I am proud of

  • Unit tests
  • Documentation of each function
  • Some examples

What it still lack to be perfect

  • A tutorial
  • A generated documentation 
  • More users

Saturday, March 14, 2020

Tracking contacts

Recently, I am trying to figure out how to detect topological changes in a gel network as it breaks. In other words, I am tracking contacts as a network is loosing its connectivity.

As the schools and universities are closing, as I am myself practicing social distancing, the irony is not lost on me.

My immediate and regular contacts are my wife and children, my parents and family living in the same city, my colleagues, the members of my akido club, the parents I meet at the bus stop, friends I see for games, and more distantly the people on the market, at the canteen and in public transportation.

This last one is limited to a minimum since I am mostly commuting by bicycle. I won't meet other parents now that schools are closed. Social distancing means for me: not going to aikido (the club will close anyway), moving games online, not meeting my parents and family in person. I will also work from home as much as possible, including avoiding the canteen. The two PhD students I advise are warned and we have ways to communicate online.

We'll get through this responsibly, limiting damage to public health and our research. That said, I'll go back to my network analysis on Monday, with 3 kids at home.

Wednesday, January 29, 2020

TexMaker and input method

I write in LaTeX very often, either online via Overleaf, of locally on Texmaker.

Recently, I have to write a report in French, so I need to type accented characters, including "ê". On a french keyboard, one has to type the "dead key" "^" and then the key for "e". But when I did so in Texmaker, I only got the "e", not "ê", as if I did not push on the dead key "^". It was pretty general, since I could not even get the accent alone like in "\^{e}" or on any other letter â, û, î, ô, etc. Since everything was working fine on all other applications, it must be a Texmaker problem.

To make a long story, full of googling and forum and tials and errors, short, I discovered that is was a conflict between Qt (the graphical layer powering the interface of Texmaker) and ibus, the input method switcher I was using to write either in French or in Japanese.

The workaround I found was to install another input method switcher: fcitx.

Now I confess, this blog post is more a note for me to remember the procedure. But it may help others.

So, things are explained on this page.
  1. One need to have fcitx and fcitx-mozc installed
  2. Type in the terminal im-config and select fcitx, validate
  3. reboot (closing the session is not sufficient)
  4. A keyboard icon shows up (on top bar for me). Right click, configure. Ask for your default keyboard (French for me). Validate and close.
  5. Right click again on the keyboard icon, configure. Now you have access to all input methods, including mozc. Add mozc. 
  6. Selecting mosc on the list, click on the bottom icon showing some tools. In the menu, select the layout of your physical keyboard (French AZERTY for me). Validate and close.
Now, I might be a bit optimistic in this procedure because I actually tried much more things. Maybe between step 2 is actually more complex:
  1. Disable ibus for Gnome
    sudo dpkg-divert --package im-config --rename /usr/bin/ibus-daemon
  2. Reboot
  3. Type in the terminal im-config and select fcitx, validate
  4. Reboot
  5. (maybe) Enable back ibus for Gnome
    sudo dpkg-divert --package im-config --rename --remove /usr/bin/ibus-daemon
  6. Reboot

Friday, May 3, 2019

How does a gel become mechanically stable?

Gels are strange materials. They are mostly made of a liquid, however they are solid. This solidity comes from the structure of the gel: a dilute solid network.
Transmission electron micrograph of a casein gel.
See the network in the above picture? Here the strands of the network are made of aggregated proteins. The holes, or pores, are permeated by water.

A gel network can be made of various building blocks. For example if you take very long, linear molecules that you crosslink from time to time, you get a polymer network. If this network is swelled by a solvent, then it is a gel. That is the case of panna cotta, where long collagen molecules from the gelatin associate into a network to imprison the creamy milk.

In the case of a yogurt, you start from globular proteins called caseins (think of little balls) dispersed in water. If you make them attract each other, the proteins will spontaneously aggregate into a network.

From a mechanical point of view, these two cases look quite different. Long molecules are floppy, adopt many configurations. If you pull on such a long molecule, you are decreasing the number of configurations it can adopt. This is costly in terms of (free) energy, so it is hard to pull, as if the chain was a little spring. Now is you assemble such springs into a network, it is quite obvious that you will get a solid that is easy to deform.

Using the path in black, it is possible to go from one end of the sample to the other. This sample is percolated. The black path is a percolation path.


Now, if you assemble sticky balls into a network, and if you pull on it, will it deform elastically or immediately break down into pieces? What are the conditions to make a particle gel stable? The answer to these question is not obvious and there have been many different answers in the literature.
  1. In polymer gels, having a percolating network is enough to have mechanical stability. Percolation means that it is possible to find a path along the network that goes from one end of the sample to the other. But many observation concluded that this was not enough to have mechanical stability in the case of particle gels.
  2. A glass is mechanically stable because its particles are not able to rearrange, trapped by the cage formed by their neighbours. This concept was imported into gels by saying that particles were trapped by the attractive bonds they formed with their neighbours. This theory allows arrest, but does not explain the network structure of the gel. For a long time it was thought that a combination of percolation and glassy arrest could explain gel stability.
  3. About a decade ago the paradigm shifted. There was this class of phase separation called "spinodal decomposition" that spontaneously formed a bicontinous pattern: a phase rich in particles intertwined with a phase poor in particles. Usually the pattern coarsen with time until complete separation of the phases. But it was found that if the particle-rich phase is dense enough to undergo a glass transition, then it becomes arrested and the structure stop evolving. So we get a network structure and thus a gel. This is called the arrested spinodal theory. However at very low volume fractions it does not describes well some observations. More importantly, it does not predicts the mechanical behaviour of the gel.
  4. But there are other ideas in the literature that come more from a mechanical point of view. Back in the 19th century, Maxwell stated that mechanical stability was ensured if the number of mechanical constraints is equal to the number of degrees of freedom. From example, if you live in 3D space (I do), you have 6 degrees of freedom : you can move east, west, north, south, up and down and any combination of theses. If you are blocked so that you can't move north, can't move south, can't move east, can't move west, can't move up and can't move down, then you cannot move anywhere. So you are stable. This concept of "isostaticity" is very useful at the macroscopic scale, when you want to build a bridge or when you want to understand sand piles. But is this concept relevant when each particle is jiggling around due to thermal motion? In 2012, a paper found that when you look at a gel before and after breaking it, you find a decrease of the particles that have 6 or more bonds. These are actually the particles that should be stable, since each bond is a constrains, so higher than 6 you shouldn't be able to move.
  5. In 2016, percolation stroke back. A paper found that not all paths along the network were important. If you considered only paths that never turned back, that were "directed", then you are interested in "directed percolation", not "isotropic percolation". The authors found that all their samples where directed percolation took place were mechanically stable, and that no other sample was. So, is directed percolation the cause of mechanical stability? For the moment, just remember that their samples were very dilute (less than 10% of particles).

The path in black is a percolation path that never turn back. This is a directed percolation path.

Here we arrive on the scene with our method to follow experimentally each individual particle during the process of gelation. All previous experiments were done by observing the state of the already formed gel. So the only influence that had been studied was the fraction of solid particles and the strength of the interactions. Here we add another axis: time.

We asked this question: can we observe when a gel become mechanically stable, and how is the microstructure changing at that moment?

First, we had to find a way of checking whether the suspension was mechanically stable or not. Usually you do that by putting the suspension in a rheometer, you oscillate at very low amplitude to measure the mechanical response. This response has two parts: elastic and viscous. If the viscous part is larger than the elastic part, the suspension is still liquid. If the elastic part is larger than the viscous part, the suspension is solid, so the gel has become mechanically stable. But in our case we need large (3 micron) particles to be able to observe everything in minute details. Large particles makes extremely soft gels. So soft that the rheometer does not have enough sensitivity.

Therefore, we ditch the idea of a rheometer altogether and only look at the response of the system to thermal agitation. The sample is just under the microscope and we record the trajectories of all the particles due to thermal agitation. If particles are able to diffuse away freely, it means that the suspension is liquid. If the particles are stuck and vibrate around a mean position, it means that the suspension is solid. Actually, a clever method call microrheology manages to transform the displacement of the particles into a measure of the mechanical response, elastic or viscous. In this way, we know exactly when our suspension becomes a mechanically stable gel.

In parallel, we can follow the progress of percolation. The usual isotropic percolation occurs always way before mechanical stability. Explanation (1) is out of the game.

We can also follow directed percolation. It occurs later than isotropic percolation, and actually for dilute gels (below 10-12% particle fraction), the time of directed percolation matches very well the time of mechanical stability. But, it does not work at all a higher volume fraction. Mechanical stability occurs sometimes 5-15 times later than the directed percolation. So, obviously explanation (5) is not general.

Now, we can look at isostatic particles, these particles that have 6 or more neighbours. Are these particles percolating? Yes, they are, and always at the exact time where mechanical stability sets in (see error bars in the paper, because science has error bars). So explanation (4) seems to be the correct one.

But then, why does explanation (4) give the right time at low particle fraction?

Look at the cartoons below. This is in 2 dimensions, so isostaticity means having 4 neighbours, not 6 like in 3D. Isostatic particles are shown in purple.

Path to gelation in the dilute case
In the dilute case (less than 10-12%)
  • When particles begin to aggregate, they form very loose clusters, very open and far from each other.
  • These clusters compact. Particles make more bonds within the same cluster, but clusters are too far away from each other to meet now. Because of this compaction, the heart of each cluster is now isostatic.
  • Clusters finally begin to meet and form larger and larger clusters, until you get a percolating path. In this situation, you have groups of isostatic particles that are bridged by floppy non-isostatic bridges.
  • In order to make more bonds, floppy bridges have to straighten. So at the time isostaticity percolates through the system, the network is mostly made of straight paths. So directed percolation is easy and occur at the same time.
Path to gelation in the dense case

In the dense case (more than 10-12%)
  • When particles begin to aggregate, they are so close together that there is no space between clusters. Very quickly a percolating network is formed.
  • That is only after the formation of this initial network that rearrangements occur. More bonds are created locally and this is enough to obtain a directed percolating path.
  • Compaction continues to proceed until isostaticity percolates. That only then that the gel is mechanically stable.
That explains why directed percolation looks like a good explanation if you look only at dilute samples.

To conclude, we can view a gel as a network that is sculpted and arrested by mechanical forces. Our mechanical explanation does not really contradict the arrested spinodal theory that is more thermodynamics. But we hope that explaining gels by mechanics will help understand the mechanics of gels. For example, we still do not understand why some particle gels break into well-defined and irreversible fractures (think yogurt) whereas some others just flow plastically and reversibly (think toothpaste or fresh cement).

If you want to dig more in depth, our paper is scheduled to be published the 31th of May 2019 in Science Advances, and a preprint is already available on ArXiv:
H. Tsurusawa, M. Leocmach, J. Russo, H. Tanaka, Direct link between mechanical stability in gels and percolation of isostatic particles. Sci. Adv. 5, eaav6090 (2019). arXiv:1804.04370

Friday, January 18, 2019

Want to study how flocs, swarms or crowds flow? I'm looking for prospective PhD student

Have you ever seen the patterns made by birds, sheeps or insects when they come together? There is no boss in the mass of living bodies, however they self-organize.



The same kind of patterns can be seen at the microscopic scale in colonies of bacteria or in living tissues.



And recently, I've been working on non-living microscopic particles that self-propel, displaying the same kind of patterns.

Long exposure picture of self-propelled particles


A lot of beautiful physics has been done in the last decade about this class of system. Now it's known as "Active Matter".

Patterns are mesmerizing, physics is intellectually pleasing, but what is the purpose? What do you make out of this "Active Matter"? Can you build a bridge? Power your home? Cure cancer ?

Well, maybe.

It becomes clearer by the day that cancer metastasis is a swarm of cancer cells migrating through the body, very close to the above patterns. In which conditions the solid tumour becomes a liquid-like swarm? How to influence this transition? These are actual questions physicists and biophysicists are asking right now.

Maybe you can't power a house with active matter, but maybe you can make it do the worm of pumping the water of your shower. It has been found that a suspension of swimming micro-organisms flow more readily (has a lower viscosity) than the suspension of dead micro-organisms. Furthermore, in some situations, the viscosity is even lower than the liquid alone, without micro-organisms! They swim, converting their food into movement, and this moment helps the water flow up the pipe.

And can we build something? Maybe not a bridge, but a muscle that would be able to contract from the action of trillions of micro-motors. Or some kind of new material that would react to a push to the left by deforming to the right?

To understand this last point, I am looking for a PhD student interested in physics, mechanics, materials and afraid neither to code nor to perform experiments. This is an experimental investigation. See the announcement (2 pages, FR then EN) on my lab's website.

Monday, February 5, 2018

Crystalline gels ArXiV

Our paper on how crystalline gels form is out on the ArXiV http://arxiv.org/abs/1802.00772
Very timely weather today in Lyon: first day of snow of the year (second of the winter). Lots of Bergeron processes happening up there.

Wednesday, November 8, 2017

Crystalline gels

What happened this summer, part 2/n

We have a paper out in Nature Materials on how crystallisation can help make a gel.
Tsurusawa, H., Russo, J., Leocmach, M., & Tanaka, H. (2017). Formation of porous crystals via viscoelastic phase separation. Nature Materials, 16(10), 1022–1028.

This is the second result of my collaboration with the lab of Hajime Tanaka, where I did my PhD. You haven't heard about the first result? We are still writing it down. In academia chronological order is not always granted.

It all started with a crazy idea from the boss and an even crazier “I'll try that” from a fresh PhD student around April 2008. It took Hideyo almost three years, including a depression, to hammer this idea into a working experimental setup and one more year to perform the experiments before graduating. Then he joined a private company and left me with a mountain of data to analyse. I had followed the story from the beginning as we started our PhD at the same time. I had completed my PhD on colloidal glass a year before he finished his about colloidal gels. Different subjects but many common methods. Hideyo was a skilled experimentalist, I was more keen on developing analysis methods.

We were both working with large colloidal particles (plastic balls of 3 microns in diameter) dispersed in an oily solvent. This system is perfect for observing in 3D at the particle level whatever physical phenomenon. The particles are charged and repel each other at long range. In water, you usually have plenty of dissolved ions. These ions tend to screen electrostatic repulsion, which means that same charges do not repel each other if they are further than 10 nm, at most 100 nm in extremely pure and neutral water. However in our oily solvent there are very few dissolved ions and electrostatic charges still can feel each other 10 microns apart.


Engineering interactions between colloidal particles. Refractive index matching and hairs ensures hard repulsion at contact. Charges provide long range repulsion but can be screened by ions. Non adsorbing polymers induces short range depletion attraction.


For me it was a bane since I wanted colloidal glasses, that is concentrated suspensions with particles close to contact. So I added some strange salts able to dissolve into the oil, providing ions that would shorten the range of repulsion. At that time, it was known that if you added polymers to the mix, they induced a short ranged attraction between particles and even at low particle content you could obtain a network of particles.


A colloidal gel observed by confocal microscopy


Such a solid network intertwined with a liquid solvent is called a gel. Yogurt is a gel, as most of our foods, organs, and many cosmetics. How gels form is still quite mysterious. We know that particles that attract each other would prefer to be grouped all together, leaving a large swath of empty solvent aside. A bit like when salad dressing unmix with oil on one side and vinegar on the other. Except that a yoghurt does not expel all the whey otherwise nobody wants to eat it. Some phenomenon stops the separation and allows the stability of the network. Except that your skin cream that was nice and stable yesterday just collapsed in a separated mess this morning. Nobody knows why and when a gel will suddenly lose its stability.

To understand that, we have to know why the phase separation arrests in the first place. We have to know how a gel forms. And for this we want to observe gel formation with our large colloids to be able to follow what is going on in every detail. But nobody knew how to do that.

Sketch of the semi-permeable cell


That when Hajime Tanaka had his crazy idea. Let's mix particles and polymers together but without salt. We have a short range attraction that is hidden by the long range repulsion. The suspension is stable with particles that stay far away from each other. We put this suspension in a chamber suitable for microscopy where the bottom is a membrane filter. Pore size is chosen so that neither colloidal particles nor polymers can go through, but salt can. Now we put everything under the microscope, add a salty solution on the other side of the membrane, and see the suspension forming a gel.

What is especially great with this idea is that with large particles and thin enough sample chamber ions diffuse so fast across the chamber that switching off the repulsion is practically instantaneous from the point of view of the slowly diffusing particles.

It seems simple but it took a couple of years or engineering to get the method right. Thanks Hideyo for toiling on that. Thanks also to John who analyzed a subset of the data and found that there was something strange going on; something that was at odd with existing models. Thanks also for calling me back to participate in that exciting story, even if I originally had to analyse a different subset of the data.

The most common model for gel formation relies on glass transition. If you cool a liquid without crystallising it it will slow down so much that it hardly flows anymore. One could wait the age of the universe before observing any flow. So practically what was a liquid is now a solid, disordered like a liquid. This is the definition of a glass. You can also obtain a glass by compression rather than cooling. The phase separation between a particle poor phase and a particle rich phase is analog to a gas-liquid phase separation. The colloidal gas contains almost only solvent and the colloidal liquid is very concentrated in particles. What the model says is that the liquid is son concentrated, so dense, that it become a glass. To sum up, a special type of phase separation (a “spinodal decomposition”) creates a liquid network, but this liquid becomes a glass and so the network arrests and becomes solid.

Reconstruction of gel structure. Gas particles in orange, liquid in grey, crystal in purple. Left: strong attration, thin network. Right: weaker attraction, stress-driven rearrangement is possible and thus crystallisation.


In our experiments we observed a very different scenario. The network formed, but strands were so thin (one or two particles thick) that we had a hard time calling it a liquid or a glass phase. In some conditions (weaker attraction) some strands snapped and the network could coarsen a bit more, maybe 4-5 particles thick. Here occurred the unexpected: crystallisation.

Because there was enough space available in the liquid network, the particles in the network were able to rearrange locally to form crystal nuclei. Instead of a disordered glass we obtained a network full of ordered crystals.

Growth of the crystals beyond the original liquid network


At some point, a crystal reached the edge of the liquid network. And it did not stop there. Particles in the gas adsorbed on the crystal, allowing it to grow further than the envelope of the original network. But there are so few particles in the gas, they should be quickly spent? Not if other parts of the system sublimate or vaporize. What we found is that particles in the liquid network vaporized and then adsorb on crystals far away, making them grow.

Ice crystal grow at the expense of surrounding supercooled water droplets.


Interestingly, this sequence of events is very probably what is responsible for rain. Atmospheric clouds are made of water droplets. It is cold up there and the water is supercooled, liquid despite a temperature below freezing. Thermodynamics tells us that water vapor in contact with supercooled liquid water has to be at higher pressure than water vapor in contact with ice at the same temperature. Actually when one droplet eventually freezes we obtain an ice crystal in contact with vapor which pressure is too high because set by the surrounding supercooled water droplets. So the gas condenses on the crystal, and the crystal grows at the expense of surrounding droplets that need to evaporate to maintain the vapor pressure. The crystal sucks the water out of the droplets without touching them. At some point the crystal becomes large enough to fall out of the cloud. Tens of meters below the temperature is hot enough to melt the crystal into a rain drop. This is called the Bergeron process. Next time you open your umbrella, think about this complicated sequence of events involving three phases - crystal, liquid and vapor.

Of course, if the temperature is below freezing down to the floor we get snow. The delicate geometric shapes of snowflakes are made possible by their formation process. Vapor adsorption on crystals allows a much slower and more harmonious growth than direct liquid condensation. Crystalline planes are more ordered, cleanly arranged. That is what we observed in our crystal-gels.

So, to sum up, we have observed an other way to arrest a phase separation into a gel that involves crystallisation rather than glass transition. This process creates a crystalline network with a large area of neat, vapor-deposited crystalline planes. It screams “catalysis” to my ear, or any kind of application that needs a large area of crystalline materials. And we demonstrated that such porous materials could be made in one pot, with the system tumbling down all the different steps by itself: phase separation, stress-driven rearrangements, crystal nucleation, vapor deposition. I hope people designing “real materials” (not made with fancy colloids) will be able to make such crystal-gels with nice applications down the line.