GeoSyn is an open-source Python tool for generating synthetic geotechnical 2D cross-sections. It was developed to support data-driven applications in geotechnical engineering by creating realistic and diverse training datasets for machine learning (ML) models.
This tool allows users to define key subsurface parameters, including:
- Number of layers
- Geometry of layer boundaries (via sine/cosine functions)
- Material categories and properties
- Spatial heterogeneity using anisotropic Gaussian random fields
Each synthetic cross-section can represent any scalar geotechnical property such as:
- Soil type (e.g., sand, clay)
- Soil Behaviour Type Index (Ic)
- Permeability
- Undrained shear strength
- Any other scalar property expressible in 2D
GeoSyn was used in the following peer-reviewed study to train a conditional Generative Adversarial Network (cGAN) that reconstructs geotechnical stratigraphy from sparse CPT data:
Campos Montero, F.A., Zuada Coelho, B., Smyrniou, E., Taormina, R., & Vardon, P.J. (2025)
SchemaGAN: A conditional Generative Adversarial Network for geotechnical subsurface schematisation
Computers and Geotechnics, 183, 107177
📄 https://doi.org/10.1016/j.compgeo.2025.107177
Clone the repository and install the required dependencies:
git clone https://github.com/fabcamo/GeoSyn.git
cd GeoSyn
pip install -r requirements.txtTo generate the synthetic images, run the main.py script:
python main.pyThe script will generate a synthetic database of geotechnical cross-sections in the output directory.
Before running the script, ensure you configure the following key input parameters:
- Number of Realizations: The total number of synthetic images to generate.
- Size in X: The length of the model in pixels.
- Size in Y: The depth of the model in pixels.
These parameters can be adjusted directly within the main.py file.
For more advanced use, users can also customize geotechnical properties, their distributions, and boundary geometry settings. This requires deeper modifications to the codebase, particularly in the modules responsible for random field generation and stratigraphy modeling.
GeoSyn outputs geotechnical cross-sections in both PNG and CSV formats, formatted to a size of 32x512 pixels to maintain a 1:16 ratio for length over depth. This ensures computational efficiency and visual fidelity.
GeoSyn is used in the following publication as part of a deep generative modeling pipeline for subsurface stratigraphy:
Campos Montero, F.A., Zuada Coelho, B., Smyrniou, E., Taormina, R., & Vardon, P.J. (2025)
SchemaGAN: A conditional Generative Adversarial Network for geotechnical subsurface schematisation
Computers and Geotechnics, 183, 107177
https://doi.org/10.1016/j.compgeo.2025.107177
This project is licensed under the MIT License. See the LICENSE file for details.
GeoSyn depends on several third-party Python packages, including:
- GSTools (MIT License)
These packages are subject to their own licenses, including MIT, BSD, PSF, and Apache 2.0 variants. While GeoSyn is released under the MIT License, you must ensure compliance with the licenses of any dependencies you use.
For a full list of dependencies, see requirements.txt.
To review license information for installed packages, you can use:
pip install pip-licenses
pip-licenses