Skip to content

Main content

Sparse Coordinate Row Pointer Builder

Build stable CSR row pointers and aligned column/value/source-index arrays from COO observations; no duplicate combination or per-row column sorting.

Loading tool…

Description

Build stable CSR row pointers and aligned column/value/source-index arrays from COO observations; no duplicate combination or per-row column sorting.

A sparse matrix can be stored as coordinate triplets or as pointer/index/value arrays. Stored entries are not necessarily distinct numerical nonzeros: duplicates and explicit zeros can matter to representation checks. Row and column coordinates here are zero-based, and omitted entries are handled only as stated for the particular operation.

Build stable CSR row pointers and aligned column/value/source-index arrays from COO observations; no duplicate combination or per-row column sorting.

When to use this tool

Use this tool to build stable CSR row pointers and aligned column/value/source-index arrays from COO observations; no duplicate combination or per-row column sorting.

How to use the tool and how it works

  1. Enter tripletsJson, rows, columns using the field definitions below. For JSON text, serialize the explicit records in the shown shape.
  2. Run the operation. Correct input errors before interpreting an output.
  3. Read result.rowPointers, result.columnIndexes, result.values, result.sourceIndexes. Use the ordering, boundary rules and absence conditions described below.

Stably group triplets by row. Build cumulative row pointers and aligned columnIndexes, values and sourceIndexes.1

Input fieldMeaning and unitsAccepted input
tripletsJsonJSON array of records with zero-based row, column and finite value fields.Text, at most 8,192 UTF-16 code units; the operation’s grammar also applies.
rowsDeclared row count; coordinate operations use 0–128, dense budgets allow larger integers.A finite safe integer within the operation’s stated bounds.
columnsDeclared column count; coordinate operations use 0–128, dense budgets allow larger integers.A finite safe integer within the operation’s stated bounds.

These are the decoded structures used in the example’s JSON text fields. Supply the corresponding serialized JSON strings as input.

json
{
  "tripletsJson": [
    {
      "row": 0,
      "column": 1,
      "value": 2
    },
    {
      "row": 0,
      "column": 1,
      "value": 3
    },
    {
      "row": 1,
      "column": 0,
      "value": 0
    }
  ]
}
Output fieldInterpretation
resultObject containing the named fields below.
result.rowPointersZero-based cumulative stored-entry offsets for every row boundary.
result.columnIndexesStored column indexes aligned with output values.
result.valuesStored values aligned with the compressed index list.
result.sourceIndexesOriginal triplet indexes in output storage order.
json
{
  "input": {
    "tripletsJson": "[{\"row\":0,\"column\":1,\"value\":2},{\"row\":0,\"column\":1,\"value\":3},{\"row\":1,\"column\":0,\"value\":0}]",
    "rows": 2,
    "columns": 2
  },
  "output": {
    "result": {
      "rowPointers": [
        0,
        2,
        3
      ],
      "columnIndexes": [
        1,
        1,
        0
      ],
      "values": [
        2,
        3,
        0
      ],
      "sourceIndexes": [
        0,
        1,
        2
      ]
    }
  }
}

Limitations and assumptions

  • Rows are limited to 127 so the pointer list fits its 128-entry bound; column sorting and duplicate combination are not performed.
  • Triplets are JSON records with row, column and value. Coordinate shapes are ordinarily bounded to 128 per axis; compressed major dimensions are limited to 127 for pointer-list capacity. The dense-budget operation has separate larger shape limits and returns exact counts as decimal text.
  • Every declared top-level input field is required and unexpected fields are rejected. Ordinary strings are limited to 8,192 UTF-16 code units and lists to 128 entries, with tighter operation-specific bounds where stated. JSON text has bounded nesting and node counts.
  • Numeric outputs must be finite and no larger in absolute magnitude than the safe-integer limit; operations returning exact large integers use decimal text. Positions are zero-based and spans end exclusively unless the operation explicitly states a different convention.

Alternative or Complementary methods

Distinguish stored-record counts, coordinate-pattern checks and arithmetic matrix properties. Combine duplicates or prune zeros explicitly when required, and use a matrix library for numerical linear algebra.

References

  1. Tool behavior and example: Sparse Coordinate Row Pointer Builder — tool.io

Similar or alternative tools

  • Sparse Coordinate Row Counts

    Count COO entry occurrences per row, including duplicate coordinates and explicit zero values; not dense nonzero support.

  • Sparse Row Pointer Triplet Expander

    Expand validated CSR compressed pointer arrays to occurrence-preserving COO records with explicit dimensions; duplicate entries and zeros remain.