Skip to main content

Literal Enum

Project description

narr

# #| hide
# from narr.strs import snake_case
# from narr.axes import NamedAxis, NamedAxes
# from narr.errs import NamedArrayDimsError
# from narr.mixs import NamedArrayDynamicAttrsMixin
# from narr.narr import NamedArray
# from narr.traj import (
#     TrajectoryDim, GeneTrajectoryDim,
#     ObservationTrajectories, FeatureTrajectories,
#     CellularTrajectories, ExpressionTrajectories,
#     Trajectories, GeneTrajectories,
# )

Developer Guide

Setup

# create conda environment
$ mamba env create -f env.yml

# update conda environment
$ mamba env update -n narr --file env.yml

Install

pip install -e .

# install from pypi
pip install narr

nbdev

# activate conda environment
$ conda activate narr

# make sure the narr package is installed in development mode
$ pip install -e .

# make changes under nbs/ directory
# ...

# compile to have changes apply to the narr package
$ nbdev_prepare

Publishing

# publish to pypi
$ nbdev_pypi

# publish to conda
$ nbdev_conda --build_args '-c conda-forge'
$ nbdev_conda --mambabuild --build_args '-c conda-forge -c dsm-72'

Usage

Installation

Install latest from the GitHub repository:

$ pip install git+https://github.com/dsm-72/narr.git

or from conda

$ conda install -c dsm-72 narr

or from pypi

$ pip install narr

Documentation

Documentation can be found hosted on GitHub repository pages. Additionally you can find package manager specific guidelines on conda and pypi respectively.

# import numpy as np
# from typing import Callable

Subclassing NamedArray

# class Trajectories(NamedArray):
#     DIMS = NamedAxes([NamedAxis(dim.name, i) for i, dim in enumerate(TrajectoryDim)])
    
#     def to_obsv_x_traj(self, aggr: Callable = np.mean):
#         agg_arr = aggr(np.asarray(self.transpose(
#             TrajectoryDim.obsv.name, TrajectoryDim.traj.name, TrajectoryDim.feat.name,            
#         )), axis=2)
#         return ObservationTrajectories(agg_arr)
        
#     def to_feat_x_traj(self, aggr: Callable = np.mean):
#         agg_arr = aggr(np.asarray(self.transpose(
#             TrajectoryDim.feat.name, TrajectoryDim.traj.name, TrajectoryDim.obsv.name,            
#         )), axis=2)
#         return FeatureTrajectories(agg_arr)

Using NamedArray Subclass Trajectories

# arr = np.random.randint(0, 10, (3, 5, 10))
# arr
array([[[9, 7, 1, 4, 8, 2, 3, 3, 3, 1],
        [0, 3, 8, 7, 2, 9, 9, 9, 1, 7],
        [0, 8, 5, 3, 3, 8, 8, 1, 3, 8],
        [3, 6, 9, 1, 8, 7, 7, 3, 1, 3],
        [0, 0, 2, 9, 1, 6, 6, 8, 1, 7]],

       [[5, 9, 5, 7, 3, 2, 1, 0, 9, 5],
        [9, 8, 7, 3, 1, 7, 6, 6, 0, 5],
        [8, 2, 9, 7, 2, 9, 4, 4, 0, 8],
        [2, 8, 2, 2, 0, 6, 6, 8, 6, 9],
        [5, 5, 2, 2, 3, 5, 9, 9, 3, 4]],

       [[3, 6, 4, 6, 3, 2, 4, 6, 9, 0],
        [7, 1, 6, 7, 7, 2, 6, 2, 2, 8],
        [2, 3, 6, 2, 5, 5, 2, 6, 2, 0],
        [3, 9, 8, 5, 1, 5, 7, 8, 7, 9],
        [9, 2, 1, 5, 2, 7, 0, 7, 4, 3]]])
# Trajectories(arr)
Trajectories([[[9, 7, 1, 4, 8, 2, 3, 3, 3, 1],
               [0, 3, 8, 7, 2, 9, 9, 9, 1, 7],
               [0, 8, 5, 3, 3, 8, 8, 1, 3, 8],
               [3, 6, 9, 1, 8, 7, 7, 3, 1, 3],
               [0, 0, 2, 9, 1, 6, 6, 8, 1, 7]],

              [[5, 9, 5, 7, 3, 2, 1, 0, 9, 5],
               [9, 8, 7, 3, 1, 7, 6, 6, 0, 5],
               [8, 2, 9, 7, 2, 9, 4, 4, 0, 8],
               [2, 8, 2, 2, 0, 6, 6, 8, 6, 9],
               [5, 5, 2, 2, 3, 5, 9, 9, 3, 4]],

              [[3, 6, 4, 6, 3, 2, 4, 6, 9, 0],
               [7, 1, 6, 7, 7, 2, 6, 2, 2, 8],
               [2, 3, 6, 2, 5, 5, 2, 6, 2, 0],
               [3, 9, 8, 5, 1, 5, 7, 8, 7, 9],
               [9, 2, 1, 5, 2, 7, 0, 7, 4, 3]]])
               (3 traj, 5 obsv, 10 feat)
# Trajectories(arr).transpose(1, 0, 2)
Trajectories([[[9, 7, 1, 4, 8, 2, 3, 3, 3, 1],
               [5, 9, 5, 7, 3, 2, 1, 0, 9, 5],
               [3, 6, 4, 6, 3, 2, 4, 6, 9, 0]],

              [[0, 3, 8, 7, 2, 9, 9, 9, 1, 7],
               [9, 8, 7, 3, 1, 7, 6, 6, 0, 5],
               [7, 1, 6, 7, 7, 2, 6, 2, 2, 8]],

              [[0, 8, 5, 3, 3, 8, 8, 1, 3, 8],
               [8, 2, 9, 7, 2, 9, 4, 4, 0, 8],
               [2, 3, 6, 2, 5, 5, 2, 6, 2, 0]],

              [[3, 6, 9, 1, 8, 7, 7, 3, 1, 3],
               [2, 8, 2, 2, 0, 6, 6, 8, 6, 9],
               [3, 9, 8, 5, 1, 5, 7, 8, 7, 9]],

              [[0, 0, 2, 9, 1, 6, 6, 8, 1, 7],
               [5, 5, 2, 2, 3, 5, 9, 9, 3, 4],
               [9, 2, 1, 5, 2, 7, 0, 7, 4, 3]]])
               (5 obsv, 3 traj, 10 feat)
# Trajectories(arr).transpose('obsv', 0, 2)
Trajectories([[[9, 7, 1, 4, 8, 2, 3, 3, 3, 1],
               [5, 9, 5, 7, 3, 2, 1, 0, 9, 5],
               [3, 6, 4, 6, 3, 2, 4, 6, 9, 0]],

              [[0, 3, 8, 7, 2, 9, 9, 9, 1, 7],
               [9, 8, 7, 3, 1, 7, 6, 6, 0, 5],
               [7, 1, 6, 7, 7, 2, 6, 2, 2, 8]],

              [[0, 8, 5, 3, 3, 8, 8, 1, 3, 8],
               [8, 2, 9, 7, 2, 9, 4, 4, 0, 8],
               [2, 3, 6, 2, 5, 5, 2, 6, 2, 0]],

              [[3, 6, 9, 1, 8, 7, 7, 3, 1, 3],
               [2, 8, 2, 2, 0, 6, 6, 8, 6, 9],
               [3, 9, 8, 5, 1, 5, 7, 8, 7, 9]],

              [[0, 0, 2, 9, 1, 6, 6, 8, 1, 7],
               [5, 5, 2, 2, 3, 5, 9, 9, 3, 4],
               [9, 2, 1, 5, 2, 7, 0, 7, 4, 3]]])
               (5 obsv, 3 traj, 10 feat)
# Trajectories(arr).transpose('obsv', 0, 2).to_obsv_x_traj()
NameError: name 'aggr' is not defined

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

narr-0.0.1.tar.gz (16.2 kB view hashes)

Uploaded Source

Built Distribution

narr-0.0.1-py3-none-any.whl (16.1 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page