Skip to main content

Parse soil measurument data.

Project description

PYGEF

Code style: black PyPi Version GitHub stars Coverage Status

Simple parser for *.gef files. These are ASCII based files used for soil properties measurements. Compatible with Python 3.7.

Recently added the parsing of xml boreholes file, the xml parsing is still in a preliminary phase, not all the files are supported. If you find a file that doesn't work with pygef, please make an issue about it or PR :)

Installation

Latest stable version:

$ pip install pygef

Cutting-edge version (might break):

$ pip install git+https://github.com/cemsbv/pygef.git

CPT files

>>> from pygef import read_cpt
>>> # read gef and xml files
>>> cpt_data = read_cpt("./my-cpt.xml")
>>> cpt_data
CPTData: {'bro_id': 'CPT000000099543',
          'cone_diameter': 44,
          'cone_surface_area': 1500,
          'cone_surface_quotient': 0.67,
          'cone_to_friction_sleeve_distance': 100,
          'cone_to_friction_sleeve_surface_area': 22530,
          'cone_to_friction_sleeve_surface_quotient': 1.0,
          ...
          'zlm_pore_pressure_u3_after': None,
          'zlm_pore_pressure_u3_before': None}
>>> # access the underlying polars DataFrame under the `data` attribute
>>> cpt_data.data.head()
shape: (5, 9)
┌────────────┬───────┬───────────┬────────────┬─────┬────────────┬────────────┬────────────┬────────────┐
 penetratio  depth  elapsedTi  coneResist  ...  inclinatio  inclinatio  localFrict  frictionRa 
 nLength     ---    me         ance             nNS         nResultant  ion         tio        
 ---         f64    ---        ---              ---         ---         ---         ---        
 f64                f64        f64              i64         i64         f64         f64        
╞════════════╪═══════╪═══════════╪════════════╪═════╪════════════╪════════════╪════════════╪════════════╡
 0.0         0.0    -9.99999e  -9.99999e5  ...  -999999     -999999     -9.99999e5  -9.99999e5 
                    5                                                                          
├╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤
 0.02        0.02   11.0       2.708       ...  0           0           0.03        0.6        
├╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤
 0.04        0.039  13.0       4.29        ...  0           0           0.039       0.8        
├╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤
 0.06        0.059  15.0       5.124       ...  0           0           0.045       0.9        
├╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤
 0.08        0.079  17.0       5.45        ...  0           0           0.049       1.0        
└────────────┴───────┴───────────┴────────────┴─────┴────────────┴────────────┴────────────┴────────────┘

Bore files

>>> from pygef import read_bore
>>> # read gef and xml files
>>> bore_data = read_bore("./my-bore.xml")
>>> bore_data
BoreData: {'bore_hole_completed': True,
 'bore_rock_reached': False,
 'data': (13, 8),
 'delivered_location': Location(srs_name='urn:ogc:def:crs:EPSG::28992', x=158322.139, y=444864.706),
 'delivered_vertical_position_datum': 'nap',
 'delivered_vertical_position_offset': 10.773,
 'delivered_vertical_position_reference_point': 'maaiveld',
 'description_procedure': 'ISO14688d1v2019c2020',
 'final_bore_depth': 12.0,
 'final_sample_depth': 12.0,
 'research_report_date': datetime.date(2021, 10, 19)}
>>> # access the underlying polars DataFrame under the `data` attribute
>>> bore_data.data.head()
shape: (5, 8)
┌────────────┬────────────┬────────────┬──────────┬────────────┬────────────┬────────────┬─────────┐
 upper_boun  lower_boun  geotechnic  color     dispersed_  organic_ma  sand_media  soil_di 
 dary        dary        al_soil_na  ---       inhomogeni  tter_conte  n_class     st      
 ---         ---         me          str       ty          nt_class    ---         ---     
 f64         f64         ---                   ---         ---         str         list[f6 
                         str                   bool        str                     4]      
╞════════════╪════════════╪════════════╪══════════╪════════════╪════════════╪════════════╪═════════╡
 0.0         1.0         zwakGrindi  donkergr  false       nietOrgani  middelgrof  [0.2,   
                         gZand       ijs                   sch         420tot630u  0.0,    
                                                                       m           ...     
                                                                                   0.0]    
├╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤
 1.0         1.1         zwakGrindi  donkergr  false       nietOrgani  middelgrof  [0.2,   
                         gZand       ijs                   sch         420tot630u  0.0,    
                                                                       m           ...     
                                                                                   0.0]    
├╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤
 1.1         2.0         zwakZandig  standaar  false       nietOrgani  null        [0.0,   
                         eKleiMetGr  dBruin                sch                     0.1,    
                         ind                                                       ...     
                                                                                   0.0]    
├╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤
 2.0         3.0         zwakZandig  standaar  false       nietOrgani  null        [0.0,   
                         eKlei       dGrijs                sch                     0.0,    
                                                                                   ...     
                                                                                   0.0]    
├╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤
 3.0         4.0         zwakZandig  donkergr  false       nietOrgani  null        [0.0,   
                         eKlei       ijs                   sch                     0.0,    
                                                                                   ...     
                                                                                   0.0]    
└────────────┴────────────┴────────────┴──────────┴────────────┴────────────┴────────────┴─────────┘

Plotting

from pygef import read_cpt, read_bore
from pygef.plotting import plot_cpt, plot_bore

# plot cpt file
plot_cpt(read_cpt("myfile.xml"))

# plot a bore file
plot_bore(read_bore("myfile.xml"))

Documentation

Install the requirements:

pip install -r requirements_docs.txt

Build the docs:

sphinx-build -b html docs public

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pygef-0.8.0a1.tar.gz (4.6 kB view details)

Uploaded Source

File details

Details for the file pygef-0.8.0a1.tar.gz.

File metadata

  • Download URL: pygef-0.8.0a1.tar.gz
  • Upload date:
  • Size: 4.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.2

File hashes

Hashes for pygef-0.8.0a1.tar.gz
Algorithm Hash digest
SHA256 16c007e02e397a4da511863937828b92d2127aa1dca949f752ec6294762a362c
MD5 d4caaf6e48235e708867e27fbd2b1610
BLAKE2b-256 2fc93debae11387275ad22807646d859a5f4991e1aa2bdee16a6bc216eb98fa7

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page