Project Scope

Context

Geoscientific disciples, like Metallurgy, Geometallurgy, Geology, and Mining Engineering, rely on the analysis of data based on mass, moisture and chemistry. The data is collected from drill-holes, samples, and process streams. The data is used to model the behaviour of the material in the ground, and the material as it is processed.

Purpose

To provide a package that supports the geometallurgical workflow from drill-hole data to sample fractionation and mass balanced process simulation. The package should be able to handle large datasets and provide the necessary visualisations to support the workflow. Plots should be interactive to maximise context and insight. Assurance of data integrity is a key requirement.

Output

The package should be developed in a test-driven manner, with tests written in pytest.

The package provides an api that supports the following objects:

  • Sample: a container for mass, moisture, and chemistry data

  • Stream: a container for a Sample object that is part of a flowsheet

  • Flowsheet: a container for a network of Stream objects

  • BlockModel: a container for a 3D array of mass, moisture, and chemistry data

  • Operation: a node in a Flowsheet object that reports the mass balance status across that node

  • WaterStream: a subclass of Stream that represents a water only flow in a flowsheet

  • EmptyStream: a Stream object with no data, but with a name. It is used to represent a stream that is expected to have data, but does not yet.

  • IntervalSample: a subclass of Sample that represents a sample with an interval index. It is used to represent a drill-hole intervals, or samples fractionated by size (sieved samples), etc.

  • utils: a module that provides utility functions for the package

For more information on the objects, see the functionality and api reference:

Resources

Expect the dependencies to include the following packages:

  • pandas

  • dask

  • periodictable

  • plotly

  • omf

  • omfvista, pyvista

Timing

This is a non-funded project, with no timeline. Progress should be reasonably rapid, by re-using code from the mass-composition package.

To Do

Todo

Add tests for the pandas utilities, which provide the mass-composition transforms and weight averaging

Todo

Modify the composition module to be more intuitive. For example you would expect is_element to return a bool, but it returns a reduced list of matches. Additionally, is_compositional with strict=True the returned list order may vary due to the use of sets in the method. This is not ideal for testing.

Todo

Cleanup the flowsheet module, locating static methods to utils where appropriate

Todo

sankey_width_var - default to none but resolve to mass_dry using var_map.

Todo

Create new repo open-geomet-data that contains the data for examples and case studies.