DOI: 10.5281/zenodo.18481638
title: Structure of Pre-Nucleation Structures (PNCs) of Pure Calcium Carbonate and with guest ions (Mg, Al, Si)

description: This dataset contains .json files of the analysis of PNCs structures (Calcium Carbonates with guest ionslike Mg, Al or Si) obtained with an evolutionnary algorithm. There is one file per composition studied. The .json files are compatible with the software Chemiscope [1] in order to vizualise and explore interactively the PNCs and their structural descriptors.

The vizualisation is set in such way that the darker and bigger the point, the lower the recsaled enthalpy. The structures are ordered from the lowest rescaled enthalpy to the highest, in other words structure 0 has a rescaled enthalpy of 0 eV/atom and the final structure will have a rescaled enthalpy close but smaller than 0.14 eV/atom, the cutoff we applied to study the structures.Some figures are also part of the repository, to illustrate some paragraph.

A python script is include too, reverse_chemiscope.py, in order to extract the structures from the .json files.

There is also a technical explanation of the workflow we built.
description: HOW WERE OBTAINED THE PNCs ?

Starting only from the atomic composition (without assuming any predefined molecular units), USPEX [2] generated random candidate structures, as illustrated in Figure 1.

Figure 1: Simplified scheme of a USPEX run. Inspired by [3].

Each generated structure was subsequently relaxed using the atomistic simulation software LAMMPS [4] together with the machine-learning interatomic potential ORB [5]. This relaxation step formed the first generation of the evolutionary search. The resulting structures then underwent genetic operations such as heredity, mutation, and permutation, enabling the exploration of the configurational space of calcium carbonate clusters.

At each iteration, structures with higher enthalpy were discarded, while the most stable configurations were preserved and used to generate the next generation. This process continued iteratively until convergence was achieved or a predefined number of generations was reached.

As a result, this approach produced a large and diverse set of candidate PNC structures. These structures are then filtered and analyzed allowing to relate their relative enthalpies to their structural, chemical, and geometrical properties, and to distinguish physically meaningful clusters from less promising configurations.

HOW DID WE ANALYZED THE PNCs ?

The first step of the analysis was to remove duplicate and highly unstable structures generated during the evolutionary search. As illustrated in Figure 2, a cutoff in rescaled enthalpy was applied to select only structures within a given energy window. As reported in [6], and in agreement with similar studies, structures that lie slightly above the convex hull but remain within this enthalpy range are commonly considered thermodynamically stable or metastable. In our case we chose to remove every structure with a rescaled enthalpy higher than 0.14 eV/atom. This filtering therefore allowed us to focus on the most stable and unique PNC configurations for each composition.

Figure 2: (Left) Rescaled enthalpy as a function of the structure ID. Some structures obtained during different stages of the EA run are shown. (Right) rescaled enthalpies distribution for 1C-1Ca-11O-16H.

After filtering, each remaining structure was described using a set of structural descriptors. For this purpose, we combined the SOAP similarity algorithm [7] with a customized in-house algorithm that extracts key chemical and structural features, as listed in Table 1. Each PNC is therefore represented by a numerical vector (descriptor), and the collection of all descriptors forms a fingerprint of the structural space explored.

Table 1: List of the properties used to create the customed fingerprint for XCH8, Ca2C2H8, CaXC2Hn, Ca3XC4Hn, etc. with X={Ca; Mg; Al; Si} and n={8; 16; 32}. E is the rescaled enthalpy in eV/atom, #A-B-C represents the number of atoms A bonded to C by a B bridge, #A-B is the number of bonds between A and B, <dA-B> is the average distance between A and B in Angstrom and PCAY is the Y-th dimension from the PCA reduction of the SOAP fingerprint.




System studied
Structural features


XCH8, Ca2C2H8, CaXC2H16, Ca3XC4Hn, ...
E, #X-O, #C-O, #H2O free, #H2O bonded, #X-O-C, #C-O-C, #X-O-X, #X-OH, #C-OH, #OHfree, <dX-O>, #CO2 free, <dC-O>, <dX-C>, <dX-X>, #X-OH-C, #X-OH-X, #CO3, #X-CO3-X, PCA1, PCA2, PCA3, PCA4




The resulting fingerprint allows us to quantify the similarity between structures, which can be interpreted as distances between points in a high-dimensional space. To visualise these pairwise similarities, we applied a t-SNE dimensionality reduction technique [8], generating a two-dimensional map where one point corresponds to one PNC and structures that are close together share similar chemical and structural environments.

The two-dimensional maps of each composition studied are contained in their respective.json file.

HOW TO USE CHEMISCOPE ?

After dowloading the files, you can either dowload Chemiscope or use the online version.

In the upper part of the page you will see Load/Save,  click on it and a small window will open, click on Load dataset and then choose the .json file you want to vizualise. When the t-SNE map appears, you can then click on ≡, next to the title of the file Dataset for .... The Map setting window will open and here you can plot any structural properties by changing the property measured with the colormap in the color: section.

WARNING: Chemiscope will tend to create some bonds in the structures that don't exist. Unfortunately, it is not possible to modify the bond cutoff in the actual version.

HOW TO EXTRACT THE STRUCTURES ?

To solve this, we wrote the script reverse_chemiscope.py that will read a given .json file and output a folder called ./output_reverse_chemiscope. It will contain two things: (i) ./output_reverse_chemiscope/global_data.txt a file that will contain descriptors of the structures and their positions in the t-SNE 2D map ; (ii) ./output_reverse_chemiscope/structures_xyz/ a folder that will contain all the structure extracted in format .xyz, compatible with VESTA [7] for a better vizualisation. CAUTION: Don't forget to change the name of the input file in the script, it is set on XXX.json.

For exemple, if you want to extract the structures from 4C_3Ca_1Si_45O_64H.json, just replace json_file = "XXX.json" by json_file = "4C_3Ca_1Si_45O_64H.json", which is the 9th line of the script.

CAUTION: This script can run only if you have the ASE Package. 
description: WORKFLOW EXPLANATION

This section intends to show some sample of inputs used to generates the PNCs structures, the script used to analyze them and some explanations, so anyone curious can get a better view over our workflow. To illustrate it, we will focus on the study of the system 4C-4Ca-20O-16H as an exemple.

USPEX DETAILS

This work relies on the evolutionary structure-search code USPEX, which is used to generate a diverse set of candidate structures through genetic algorithms. Rather than providing a general introduction to USPEX, we focus here on the specific inputs, settings, and outputs relevant to the present workflow.

USPEX input files

The main control file for the USPEX run is INPUT.txt. This file defines the global parameters of the evolutionary search, including the type of calculation, the chemical composition of the system (number of atoms of each species), the size of each generation, the total number of generations, and the fractions of individuals selected to produce offspring. It also specifies the genetic operators and their respective proportions, such as heredity, permutation (including the species allowed to be swapped), and other transformations.

In addition, INPUT.txt defines the external simulation software used for structure relaxation. In our case, the value 4 is used to indicate LAMMPS as the relaxation engine, together with other parameters related to the execution of the USPEX workflow.

LAMMPS relaxation template

The second essential input is the LAMMPS template file, lammps.in_1, which defines the relaxation protocol applied to each structure generated by USPEX. All individuals are assigned the generic name coo, as USPEX manages each structure in a separate directory, avoiding any naming conflicts within or across generations.

Structure relaxations are performed using the Machine Learning potential ORB. The relaxation is carried out in two successive stages: first using the FIRE minimization algorithm, followed by a conjugate-gradient (CG) minimization. This two-step approach ensures robust convergence of the atomic configurations.

USPEX execution and outputs

During the evolutionary run, USPEX launches a LAMMPS relaxation for every individual in a given generation. Once all structures are relaxed, USPEX updates its output files and applies the genetic operators to the relaxed population in order to generate the next generation.

Among the various output files produced by USPEX, we focus primarily on the Individuals file, which provides a compact summary of all generated structures, including their identifiers, energies, and genealogical information. Other output files, such as gatheredPOSCARS, contain the full set of generated structures in POSCAR format but can be very large and are therefore not included in the repository. Both Individuals and gatheredPOSCARS are used as inputs for the analysis workflow described in the following section.

Once the predefined number of generations is reached, the USPEX run terminates and the complete set of relaxed structures is available for post-processing and analysis.

ANYLISIS DETAILS

This part of workflow is composed of several successive steps designed to (i) preprocess the structures, (ii) characterize them energetically and structurally, and (iii) explore similarities between structures using high-dimensional descriptors and dimensionality-reduction techniques.

Step 1 – Structure preprocessing

The workflow starts by splitting the gatheredPOSCARS file into individual structure files. Each structure is then converted into the .xyz format using Atomsk [8].

Step 2 – Energetic filtering and inspection

In the second step, we analyze the distribution of rescaled enthalpies for all generated structures. For this purpose, we developed the Python script graphe_enthalpy_density.py, which reads the Individuals file and produces a density plot similar to Figure 2. This step provides a global energetic overview of the dataset and supports the definition of an enthalpy cutoff used in later stages of the workflow.

Step 3 – SOAP fingerprint construction

The third step consists in building a structural fingerprint for each structure using the Smooth Overlap of Atomic Positions (SOAP) descriptor. This is implemented in the script soap.py, based on the DScribe package.

For a given structure, SOAP descriptors are computed for the local atomic environment of each atom, defined as the neighbor density within a given cutoff radius around a reference atom. Each atomic environment is encoded as a high-dimensional vector. The descriptors are then averaged over all atoms of the structure, resulting in a single vector representation per structure. Collectively, these vectors form a high-dimensional fingerprint matrix describing the entire dataset and its structural similarities. In the workflow, this matrix is stored in the file dimdist_tSNE.txt (not in the repository).

Step 4 – Dimensionality reduction and feature extraction

To exploit the SOAP fingerprint, its dimensionality must be reduced in order to visualize and interpret structural similarities. We applied the t-Distributed Stochastic Neighbor Embedding (t-SNE) method to project the high-dimensional fingerprint into a two-dimensional space while preserving pairwise similarities between structures.

Conceptually, t-SNE minimizes the discrepancy between pairwise similarity probabilities in the original high-dimensional space and in the reduced low-dimensional space. As a result, structurally similar configurations tend to cluster together, while dissimilar ones are pushed apart.

This step is implemented in a dedicated script that performs the following operations:





Compute rescaled enthalpies and discard structures above a chosen cutoff.




Apply t-SNE (via the openTSNE package) to the SOAP fingerprint.




Generate an .mp4 animation illustrating the iterative convergence of the t-SNE embedding. An exemple is provided in tsne_movie_4C_4Ca_20O_16H.mp4




Read all .xyz structures and compute the structural properties listed in Table 1.




Output a summary file containing the structure IDs, their 2D coordinates in the reduced space, the rescaled enthalpies, and all computed properties.



Step 5 – Construction of a custom fingerprint

The initial t-SNE projection of the SOAP fingerprint did not reveal clearly distinguishable families of structures. To address this limitation, we constructed a customized and normalized fingerprint (refered as processed_data.txt) based on selected structural and energetic features extracted in Step 4-4.

A second script was therefore developed (graphe_tsne_custom_final.py) to reapply steps (i), (iii), (iv), and (v) described above, while replacing the dimensionality-reduction step with a t-SNE projection of the customized fingerprint instead of the raw SOAP descriptor.

Although the SOAP fingerprint was not directly used for clustering at this stage, it was not discarded entirely. As reported in Table 1, the first four principal components obtained from a PCA reduction of the SOAP descriptors were included as features in the customized fingerprint, ensuring that essential structural information captured by SOAP was retained.

This step produces two main outputs: (i) the file projection_tSNE_custom.pdf, which contains the t-SNE projections colored by the different calculated properties, and (ii) a summary file, global_data_custom.txt, which gathers the structure identifiers, reduced coordinates, energetic data, and all computed features. This file is subsequently used to generate the final .json files.

Step 6 – Chemiscope 

Finally, to enable interactive visualization of the dataset, we developed the script chemiscope.py, which converts global_data_custom.txt into a Chemiscope-compatible JSON file (4C_4Ca_20O_16H.json). This file allows interactive exploration of the structures, their properties, and their relative positions in the reduced space.