biom.table.Table.transform — biom-format.org

# biom-format.org

## biom.table.Table.transform

`Table.` `transform`(f, axis='sample', inplace=True)

  Iterate over axis, applying a function f to each vector.

  Only non null values can be modified and the density of the table can’t increase. However, zeroing values is fine.

  Parameters: | f : function(data, id, metadata) -> new data A function that takes three values: an array of nonzero values corresponding to each observation or sample, an observation or sample id, and an observation or sample metadata entry. It must return an array of transformed values that replace the original values. axis : {‘sample’, ‘observation’}, optional The axis to operate on. Can be “sample” or “observation”. inplace : bool, optional Defaults to `True`. Whether to return a new table or modify itself.
  Returns: | biom.Table Returns itself if inplace, else returns a new transformed table.
  Raises: | UnknownAxisError If provided an unrecognized axis.

  Examples

      >>> import numpy as np
      >>> from biom.table import Table

  Create a 2x3 table

      >>> data = np.asarray([[0, 0, 1], [1, 3, 42]])
      >>> table = Table(data, ['O1', 'O2'], ['S1', 'S2', 'S3'],
      ...               [{'foo': 'bar'}, {'x': 'y'}], None)
      >>> print table
      # Constructed from biom file
      #OTU ID S1  S2  S3
      O1  0.0 0.0 1.0
      O2  1.0 3.0 42.0

  Create a transform function

      >>> f = lambda data, id_, md: data / 2

  Transform to a new table on samples

      >>> table2 = table.transform(f, 'sample', False)
      >>> print table2
      # Constructed from biom file
      #OTU ID S1  S2  S3
      O1  0.0 0.0 0.5
      O2  0.5 1.5 21.0

  table hasn’t changed

      >>> print table
      # Constructed from biom file
      #OTU ID S1  S2  S3
      O1  0.0 0.0 1.0
      O2  1.0 3.0 42.0

  Tranform in place on observations

      >>> table3 = table.transform(f, 'observation', True)

  table is different now

      >>> print table
      # Constructed from biom file
      #OTU ID S1  S2  S3
      O1  0.0 0.0 0.5
      O2  0.5 1.5 21.0

  but the table returned (table3) is the same as table

      >>> print table3
      # Constructed from biom file
      #OTU ID S1  S2  S3
      O1  0.0 0.0 0.5
      O2  0.5 1.5 21.0