Planning ######## 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. Objectives ---------- #. Users can instantiate the core object in DeltaMetrics, a :obj:`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. #. A :obj:`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). #. Users can extract `Section` objects (e.g., :class:`~deltametrics.section.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`). #. 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. #. Users can extract :obj:`~dm.plan.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. #. Users can compute statistics on these `Planform` objects. For example, finding the shoreline, or a radially averaged delta size (:doc:`../reference/plan/index`). #. Identifying specific areas of the `Cube` data is achieved by `mask` objects (e.g., :obj:`~deltametrics.mask.LandMask`).