Skip to content

Missing

Handle NaN and zero scores. Use these before log transforms (which produce NaN on zero input) or before comparisons that need complete data.

fill_missing

fill_missing(track: Track, value: float = 0.0) -> Track

Replace NaN scores with value.

Parameters:

Name Type Description Default
track Track

The track to transform.

required
value float

Replacement for NaN entries. Defaults to 0.0.

0.0

Returns:

Type Description
Track

A new Track with NaN scores replaced.

Examples:

>>> from seqchain.track import TableTrack, TrackLabel
>>> t = TableTrack(TrackLabel("t"), {"a": float("nan"), "b": 5.0})
>>> fill_missing(t, 0.0).get("a")
0.0
Source code in src/seqchain/transform/missing.py
def fill_missing(track: Track, value: float = 0.0) -> Track:
    """Replace NaN scores with *value*.

    Args:
        track: The track to transform.
        value: Replacement for NaN entries. Defaults to ``0.0``.

    Returns:
        A new Track with NaN scores replaced.

    Examples:
        >>> from seqchain.track import TableTrack, TrackLabel
        >>> t = TableTrack(TrackLabel("t"), {"a": float("nan"), "b": 5.0})
        >>> fill_missing(t, 0.0).get("a")
        0.0
    """
    return track.map_scores(lambda s: value if math.isnan(s) else s)

replace_zeros

replace_zeros(track: Track, value: float) -> Track

Replace zero scores with value.

Parameters:

Name Type Description Default
track Track

The track to transform.

required
value float

Replacement for zero entries.

required

Returns:

Type Description
Track

A new Track with zero scores replaced.

Examples:

>>> from seqchain.track import TableTrack, TrackLabel
>>> t = TableTrack(TrackLabel("t"), {"a": 0.0, "b": 5.0})
>>> replace_zeros(t, 1.0).get("a")
1.0
Source code in src/seqchain/transform/missing.py
def replace_zeros(track: Track, value: float) -> Track:
    """Replace zero scores with *value*.

    Args:
        track: The track to transform.
        value: Replacement for zero entries.

    Returns:
        A new Track with zero scores replaced.

    Examples:
        >>> from seqchain.track import TableTrack, TrackLabel
        >>> t = TableTrack(TrackLabel("t"), {"a": 0.0, "b": 5.0})
        >>> replace_zeros(t, 1.0).get("a")
        1.0
    """
    return track.map_scores(lambda s: value if s == 0.0 else s)

drop_missing

drop_missing(track: Track) -> Track

Remove entries with NaN scores.

Parameters:

Name Type Description Default
track Track

The track to transform.

required

Returns:

Type Description
Track

A new Track with NaN entries removed.

Examples:

>>> from seqchain.track import TableTrack, TrackLabel
>>> t = TableTrack(TrackLabel("t"), {"a": float("nan"), "b": 5.0})
>>> drop_missing(t).keys()
['b']
Source code in src/seqchain/transform/missing.py
def drop_missing(track: Track) -> Track:
    """Remove entries with NaN scores.

    Args:
        track: The track to transform.

    Returns:
        A new Track with NaN entries removed.

    Examples:
        >>> from seqchain.track import TableTrack, TrackLabel
        >>> t = TableTrack(TrackLabel("t"), {"a": float("nan"), "b": 5.0})
        >>> drop_missing(t).keys()
        ['b']
    """
    return track.filter_entries(lambda s: not math.isnan(s))

drop_zeros

drop_zeros(track: Track) -> Track

Remove entries with zero scores.

Parameters:

Name Type Description Default
track Track

The track to transform.

required

Returns:

Type Description
Track

A new Track with zero entries removed.

Examples:

>>> from seqchain.track import TableTrack, TrackLabel
>>> t = TableTrack(TrackLabel("t"), {"a": 0.0, "b": 5.0})
>>> drop_zeros(t).keys()
['b']
Source code in src/seqchain/transform/missing.py
def drop_zeros(track: Track) -> Track:
    """Remove entries with zero scores.

    Args:
        track: The track to transform.

    Returns:
        A new Track with zero entries removed.

    Examples:
        >>> from seqchain.track import TableTrack, TrackLabel
        >>> t = TableTrack(TrackLabel("t"), {"a": 0.0, "b": 5.0})
        >>> drop_zeros(t).keys()
        ['b']
    """
    return track.filter_entries(lambda s: s != 0.0)