Skip to main content

A library to read, write, and check AGS4 files using Pandas DataFrames

Project description

PyPI PyPI - Downloads Conda DOI Tests

python-ags4

[[TOC]]

Introduction

python-ags4 is a library of functions that

  • imports/reads AGS4 files to a collection of Pandas DataFrames.
  • data can be analyzed, manipulated, and updated using Pandas
  • and then exported/written back to an AGS4 file

Release available at pypi.org/project/python-ags4/

This project is maintained by the AGS Data Format Working Group

Note This repo was forked from github.com/asitha-sena/python-ags4 which is now archived and read-only

HEAD is gitlab.com/ags-data-format-wg/ags-python-library

Documentation

Installation

pip install python-ags4

Note Installation requires Python 3.8 or later.

Code Examples

First import the module.

from python_ags4 import AGS4

Import data from an AGS4 file

# Load from a file
tables, headings = AGS4.AGS4_to_dataframe('path/to/file.ags')

# Or use our sample data
from python_ags4.data import load_test_data
tables, headings = load_test_data()
  • tables is a dictionary of Pandas DataFrames. Each DataFrame contains the data from a GROUP in the AGS4 file.
  • headings is a dictionary of lists. Each list has the header names of the corresponding GROUP

Important: If the above code throws an exception or returns an empty dictionary, it very likely that the input file is not a valid AGS4 file. In such a case, the AGS4.check_file() function can be used to validate the file and see whether anything needs to be fixed before trying again. Most users will find it easier perform this step using the command line interface as it will provide a formatted error report that is much easier to read than the python dictionary created by directly calling the function.

All data are imported as text so they cannot be analyzed or plotted immediately. You can use the following code to convert all the numerical data in a DataFrame from text to numeric.

LOCA = AGS4.convert_to_numeric(tables['LOCA'])

The AGS4.convert_to_numeric() function automatically converts all columns in the input DataFrame with the a numeric TYPE to a float. (Note: The UNIT and TYPE rows are removed during this operation as they are non-numeric.)

Export data back to an AGS4 file

AGS4.dataframe_to_AGS4(tables, headings, 'output.ags')

A DataFrame with numeric columns may not get exported with the correct precision so they should be converted back to formatted text. The AGS4.convert_to_text() function will do this automatically if an AGS4 dictionary file is provided with the necessary UNIT and TYPE information. Numeric fields in the DataFrame that are not described in the dictionary file will be skipped with a warning.

LOCA_txt = AGS4.convert_to_text(LOCA, 'DICT.ags')

Tables converted to numeric using the AGS4.convert_to_numeric() function should always be converted back to text before exporting to an AGS4 file. (Note: The UNIT and TYPE rows will be added back in addition to formatting the numeric columns.)

Juypter Notebook

We have created an example Juypter Notebook which imports an AGS file, plots boreholes on a map and creates a Striplog.

See here

Command Line Interface

A cli tool was added in version 0.2.0. It should be available from the terminal (or on the Anaconda Powershell prompt in Windows) after running python pip install python-ags4>=0.2.0

It does not yet have the full functionality of the library, but it does provide a quick and easy way to convert .ags files to Excel spreadsheets (.xlsx) and back. The data can be easily edited in a spreadsheet and then converted back a .ags file. The TYPE values for numeric columns can be changed in the spreadsheet and the data will be automatically reformatted correctly when converted back to .ags, as long as all values in a column are numbers. Any supposedly numeric columns with text entries will be skipped with a warning message.

(Note: All data is imported to the spreadsheet as text entries so any column that should be reformatted should be explicitly converted to numbers in Excel.)

asciicast

A checking tool is available as of version 0.3.0 and it can be used to make sure that the file conforms to the AGS4 rules. The tool has been tested in both bash and Powershell.

asciicast

Graphical User Interface using pandasgui

The output from python-ags4 can be directly used with pandasgui to view and edit AGS4 files using an interactive graphical user interface. It also provides funtionality to plot and visualize the data.

from pandasgui import show
from python_ags4.data import load_test_data

tables, headings = load_test_data()
gui = show(**tables)

Any edits made in the GUI can be saved and exported back to an AGS4 file as follows:

updated_tables = gui.get_dataframes()

AGS4.dataframe_to_AGS4(updated_tables, headings, 'output.ags')

Development

Please refer to the Wiki page for details about the development environment and how to get involved in the project.

API documentation available at https://ags-data-format-wg.gitlab.io/ags-python-library

Citation

Senanayake et al., (2022). python-ags4: A Python library to read, write, and validate AGS4 geodata files. Journal of Open Source Software, 7(79), 4569, https://doi.org/10.21105/joss.04569

Implementations

This library has been used to create

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

python_ags4-0.5.0.tar.gz (241.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

python_ags4-0.5.0-py3-none-any.whl (252.6 kB view details)

Uploaded Python 3

File details

Details for the file python_ags4-0.5.0.tar.gz.

File metadata

  • Download URL: python_ags4-0.5.0.tar.gz
  • Upload date:
  • Size: 241.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.6.1 CPython/3.10.12 Linux/6.5.0-14-generic

File hashes

Hashes for python_ags4-0.5.0.tar.gz
Algorithm Hash digest
SHA256 3e22d74f808e97daf12f3ed92173179c0e563b4dd65aedae3ee55b36c71d9c13
MD5 96968a328ea38b2158b4d852d8fee807
BLAKE2b-256 09cbdfeaf5e80a2f2fcde256e573016d52dc29c3e4666eaccdee022234094ddf

See more details on using hashes here.

File details

Details for the file python_ags4-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: python_ags4-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 252.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.6.1 CPython/3.10.12 Linux/6.5.0-14-generic

File hashes

Hashes for python_ags4-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ac151d16a5d64327c62afdfde437e5dfa0a67d005a4c20a03d1bf97aaca4aa52
MD5 c154c075670e0e1ef3dcf69871610cf2
BLAKE2b-256 8812c47991b4bdd312a6d54d44cf1ac031e7edebfe691a108c852bff6a6c1f34

See more details on using hashes here.

Supported by

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