This project follows the code of conduct. If you are not familiar with our code of conduct policy, take a minute to read the policy before starting with your first contribution.

How to contribute

If you are interested in contributing, please get in touch with us on GitHub and we will be happy to have you be a part of our community!


A working list of development goals is useful when developing a package. Here, we identify at a high level what our software aims to achieve and provide in the user experience.

Mission statement

The goal of the DeltaMetrics project is to provide convenient tools to analyze seidmentologic data cubes. The software should be flexible, so that users can easily build their own analysis on top of the DeltaMetrics platform. The software should implement common analysis steps that can be chained or combined in support of reproducible workflows.


  1. Users can instantiate the core object in DeltaMetrics, a dm.cube.DataCube, from a variety of data sources containing time-by-x-by-y data; for example input data could be timeseries maps of lidar scans, overhead photos, grain size (DeltaRCM), and/or flow velocity (DeltaRCM). Coordinates can (should) be specified for the input data; if coordinates are not specified, unit indexing is used. The Cube coordinates information about the underlying data, and so can act as a wrapper for many different underlying variables that share coordinates.

  2. A dm.cube.StratigraphyCube can be created either directly from an array or from bed elevation information. The StratigraphyCube represents information on a discrete z-by-x-by-y grid, so that data in the dataset reflects a voxel in a sedimentary deposit generated by the intergrated bed elevation changes over time. In the special case where a StratigraphyCube is created from a DataCube, underlying data variables are dynamically placed into the StratigraphyCube based on preservation (memory-efficient).

  3. Users can extract Section objects (e.g., RadialSection) from a Cube. Several types of sections are supported; each type defines coordinates in the x-y plane along which the section is extracted across the x-y plane. Sections represent the coordinates, and can be realized with any variable from the underlying dataset (i.e., supporting Section into both DataCube and StratigraphyCube).

  4. Users can compute statistics on the Section objects. For example, identifying channels in sectioned grain size information, or computing compensation statistics via sectioned time information.

  5. Users can extract Planform objects from a Cube, which are a) single time horizon or b) single elevation horizon (i.e., a single view of the x-y plane). Planform objects represent the coordinate along which the data are realized, and can reflect any variable from the underlying dataset.

  6. Users can compute statistics on these Planform objects. For example, finding the shoreline, or a radially averaged delta size (Planview operations).

  7. Identifying specific areas of the Cube data is achieved by mask objects (e.g., LandMask).