Using PyGSLIB for the estimation of Mineral Resources

    Published on March 20th, 2019

    Meet CSA Global Senior Resource Consultant, Adrian Martinez Vargas, when he presents on ‘PyGSLIB, a Python package with open source for the estimation of Mineral Resources’ at the 11th International Convention of Prospectors and Explorers between 20-22 May 2019, Sheraton Lima Hotel and Convention Centre, Lima, Peru.

    The event will demonstrate the efforts made by the Peruvian Institute of Mining Engineers (IIMP) to strengthen bonds between academia through its involvement in scientific research activities for the development of a responsible and sustainable mining industry.Under the slogan “Mining Exploration: Science, Innovation, and Strategic Investment”, this event aims to strengthen the mining exploration value chain and provides an opportunity to consolidate the findings in new deposits.

    Abstract
    PyGSLIB is an open source python package for Mineral Resource estimation. It is written in Python, Cython and Fortran. It consists of five main modules: drillhole, blockmodel, gslib, vtktools, and nonlinear. The package contains a set of functions and classes for drillhole and block model processing, basic computational geometry and some implicit modeling capabilities, nonlinear geostatistics, and basic geostatistics. The module gslib contains GSLIB Fortran code modified. This software was inspired in the Datamine macro language and its aim is producing Mineral Resource estimates that can be reproduced.  It enables auditability by encapsulating estimation parameters, data, and comments in a single Jupyter-Notebook script. This paper describes the software implementation and functionality and presents a case of study.

    Resumen

    PyGSLIB es una librería de Python con código abierto para la estimación de Recursos Minerales. Fue escrito en: Python, Cython y Fortran. Consiste en cinco módulos principales:  drillhole, blockmodel, gslib, vtktools, y nonlinear. Estos módulos contienen funciones y ejercicios para trabajar: con sondajes, modelos de bloques, geometría computacional con funciones implícitas, geoestadística no linear y geoestadística básica.  El módulo gslib contiene parte del código Fortran modificado del software GSLIB. PyGSLIB está inspirando en macros de Datamine y tiene como premisa producir estimaciones de Recursos Minerales que puedan reproducirse, también permite la auditabilidad de los cálculos porque: captura la información, parámetros de estimación y comentarios en unas scripts de Jupyter-Notebook. Este documento describe la implementación del software y su funcionalidad es demostrada con un caso de estudio. Palabras clave: desurvey, sondaje, modelo de bloques, geometría computacional.

    Introducción

    La estimación de recursos es un proceso repetitivo y con un flujo de trabajo que generalmente varia poco de una estimación a otra, independientemente del tipo de yacimiento mineral  que se estime (Figure 1), por ello resulta útil el uso de macros o scripts para desarrollar el proceso de estimación. El mejor ejemplo de software comercial con esta funcionalidad es Datamine Studio, el cual fue creado en 1981 y no incorporó interfaz gráfica hasta principio de los 90 (Constellation Software, ?).

    El uso de script ofrece dos ventajas fundamentales:  a) los resultados pueden reproducirse y b) facilita la auditabilidad de la estimación ya que los parámetros y supuestos usados para la estimación son explícita o implícitamente plasmados en el código fuente.  Estas son las dos premisas de PyGSLIB, un módulo Python diseñado para la estimación de Recursos Minerales.

    Figura 1 Proceso repetitivo para la estimación de Recursos Minerales con PyGSLIB

    Diseño e implementación PyGSLIB

    PyGSLIB [FS1] utiliza comandos en lenguaje Python, que pueden ejecutarse de manera interactiva o secuencial. Por lo general se recomienda el desarrollo sobre Jupyter Notebooks. Este paquete Python cuenta con los módulos:

    • drillhole: para crear objetos de tipo drillhole los cuales contienen funciones para calcular coordenadas de intervalos, compositar intervalos, entre otras funcionalidades.
    • blockmodel: genera modelos de bloques, y calcula porcentaje de bloques dentro de un sólido.
    • vtktools: contiene un número de funciones para geometría computacional. También se usa para importar y exportar ficheros de triangulaciones, sondajes y modelos de bloques en formato vtk (Kitware, 2018 [a]).
    • gslib: contiene programas del software GSLIB e implementa geoestadística y estadística básica.
    • nonlinear: implementa geoestadística no lineal con el modelo gaussiano discreto, usando polinomios de Hermite.
    • Otros módulos como sandbox, sandbox2 y Html_plot también están disponibles. Estos módulos contienen código en estado experimental.
    • El código de PyGSLIB se distribuye con licencias GPL y MIT y puede ser descargado, modificado y redistribuido sin costo alguno (OpenGeostat, 2018).

    Caso de estudio sintético

    Para ilustrar la funcionalidad y como ejemplo de pygslib se generó un yacimiento artificial (o sintético) usando el propio modulo PyGSLIB. El yacimiento se generó digitalizando dominios geológicos y trazas de sondajes en secciones verticales. Las leyes de oro se crearon con simulación[FS5]  secuencial gaussiana no condicional, usando el software GSLIB.

    Exploración de datos de entrada

    Para la estimación de Recursos Minerales se partió de la base de datos de sondajes sintéticos[FS7]  que contienen las tablas de: collares, desviaciones o survey, y de intervalos de muestreo con leyes simuladas, todas en formato *.csv. Las tablas se importaron como DataFrames de Pandas (Pandas, 2018) y se generaron los sondajes como instancias de la clase[FS8] [AM9]  pygslib.drillhole.Drillhole.  Las coordenadas de los intervalos de muestreo se calcularon con la función pygslib.drillhole.Drillhole.desurvey() y las trazas se exportaron al formato vtk para la visualización inicial en el software ParaView (Kitware, 2018 [b]).

    Construcción de los sólidos del dominio de estimación

    El modelo geológico se interpretó usando las leyes de “oro”. Los intervalos con leyes sobre cero se asignaron al dominio 1 y se compositaron a un metro usando la función drillholes.key_composite(). Los puntos de contacto se extrajeron de los compósitos y se usaron para generar superficies con la función pygslib.vtktools.rbfinterpolate (Figure 2).


    Figura 2 Superficies de contactos generadas con la función pygslib.vtktools.rbfinterpolate.

    Las superficies de contacto se usaron para generar los sólidos, incluido el del dominio 1, para ello las superficies se convirtieron en funciones implícitas (o instancias de tipo vtkImplicitPolyDataDistance) y se usaron para evaluar la distancia entre superficie y puntos dentro de la región que define el área de estudio. Las superficies cerradas de los sólidos se obtienen con una operación booleana entre superficies implícitas, que en este caso es la intersección y se expresa como el mínimo o máximo entre el valor de dos superficies implícitas (Figure 3). La superficie cerrada del sólido se obtiene como el contorno de la isosuperficie 3D que pasa por el valor cero de la operación booleana (Figura 3).


    Figura 3 Construcción de solidos 3D con funciones implícitas booleanas. En gris superficies de contacto. Arriba planos de secciones generadas con funciones implícitas con dos superficies de contacto que definen el dominio 1. En el medio, sección de función implícita booleana de intersección. Debajo solidos obtenidos, en azul dominio 1 y sondajes en gris. La visualización se realizó con el software Paraview, exportando sólidos y sondajes en formato vtk.

    Estimación de recursos

    Se definió un modelo de bloque[FS10] s de 5x5x5 m con una instancia de la clase[FS11] [AM12]  pygslib.blockmodel.Blockmodel. El sólido del dominio 1 se usó para generar los bloques y calcular el porcentaje dentro del sólido usando la función pygslib.blockmodel.Blockmodel.fillwireframe (Figura 4). Los intervalos de sondajes se usaron para calcular la media desclusterizada, el variograma,[FS13]  y se interpoló con el inverso a la distancia al cuadrado, vecino más cercano y kriging[AM14]  ordinario. Todas estas operaciones se completaron usando las funciones del módulo pygslib.gslib.


    Figura 4 Bloques en dominio 1 coloreado con porcentaje dentro del sólido.

    Validación de los resultados

    La validación de los resultados se realizó de forma visual (Figura 5), comparando leyes promedio en sondajes y modelo de bloque, comparando diferentes modelo estimados usando swath plots (Figura 6), y validación en las curvas de ley – tonelaje, comparando los modelos estimados y el modelo gausiano discreto implementado en el módulo pygslib.nonlinear (Figura 7).


    Figura 5 Validación visual de secciones de sondajes y de estimado de contenidos en modelo de bloques. La visualización ser realizó en el software Paraview.


    Figura 6 Swath plot construido usando filtros de Dataframes de Pandas

    Figura 7 Comparación de curvas de ley tonelaje obtenidas de la estimación en el modelo de bloque y del cambio de soporte global con modelo gaussiano discreto.

    Otro ejemplo de estimación de recursos usando PyGSLIB y explicación detallada de las funciones antes mencionadas se pueden encontrar en.   https://opengeostat.github.io/pygslib/Tutorial.html. En este ejemplo se usaron datos de la zona Babbitt del complejo Duluth[FS17] , un depósito de cúmulos ultramáficos con mineralización de níquel, cobre y elementos del grupo del platino localizado en USA.

    PyGSLIB también ha sido utilizado para optimizar espaciado entre sondajes usado simulación condicional[FS18]  secuencial Gaussiana y de indicadores, tal y como muestra Martinez-Vargas, 2017.

    Resultados y Conclusiones

    Todo el proceso de estimación, incluida la generación de los sólidos, se desarrolló con un script de Jupyter Notebook. El script, además del código, contiene comentarios y salidas gráficas que permiten leer el proceso como si fuera un reporte técnico y es auditable.

    Para validar que la estimación es reproducible el script fue ejecutado varias veces, obteniéndose los mismos resultados. También se ejecutó excluyendo algunos de los sondajes y modificando parámetros de estimación para evaluar el impacto en tonelaje y ley, y así evaluar la incertidumbre en la estimación.

    Los resultados demuestran que PyGSLIB permite generar estimaciones fáciles de reproducir y auditar, y permite automatizar el proceso de estimación.

    Al tener el código abierto, las fórmulas y algoritmos usados también se pueden auditar.

    Referencias bibliográficas

    Constellation Software, ?. Datamine (http://www.miningsoftware.org/portfolio-posts/datamine/)
    Kitware, 2018. Paraview (https://www.paraview.org/)
    Kitware, 2018. VTK (https://www.vtk.org/)
    Martínez-Vargas, 2017. Optimizing grade-control drillhole spacing with conditional simulation. Minería y Geología v.33 n.1, 2017.
    OpenGeostat, 2018. PyGSLIB  (https://github.com/opengeostat/pygslib)
    Pandas, 2018. Proyecto Pandas (https://pandas.pydata.org/)

    ABOUT OUR PRESENTER

     

    Presenter, Adrian Martiez

    Adrian Martinez
    Resource Consultant

    Adrian has 16 years of experience as a consultant on resource estimation and technical reports, operational auditing, due diligence and technical risk analysis, mine geology, sampling and geological interpretation. He has worked with various commodities such as gold, copper, nickel, submarine sills, barite, clay and limestone deposits. Some examples of Canadian and international mineral resource estimation projects where he worked are Coringa, Cow Mountain, Borden Gold Property, Gallowai Bull River Mine and Brucejack. He also worked on Cuban projects in Moa Bay, Cementos Mariel, Oro Barita and Merceditas.

    Adrian’s main consulting skill is the ability to identify the right techniques and parameters for resource estimation as well as potential issues of concern in each specific project. He mastered the application of multiple indicator kriging for resource estimation of gold deposits with high nugget and domaining issues. Additionally, he has experience with non-linear geostatistics and conditional simulations for resource estimation, model validation, risk analysis, drillhole spacing, among other applications.

    PROEXPLO 2019

    Connect with our Teams

    SIGN UP FOR EMAIL ALERTS

    CONNECT WITH CSA GLOBAL
      SIGN UP FOR EMAIL ALERTS