Skip to content

Commit

Permalink
Merge pull request #92 from bmcfee/pumpp-repr
Browse files Browse the repository at this point in the history
Pumpp repr
  • Loading branch information
bmcfee committed Oct 12, 2017
2 parents 0d6ef78 + 02c5e44 commit 0e0b7b9
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 0 deletions.
26 changes: 26 additions & 0 deletions pumpp/core.py
Expand Up @@ -11,6 +11,7 @@

import librosa
import jams
import six

from .base import Slicer
from .exceptions import ParameterError
Expand Down Expand Up @@ -225,3 +226,28 @@ def __getitem__(self, key):

def __call__(self, *args, **kwargs):
return self.transform(*args, **kwargs)

def __str__(self):
rstr = '<Pump [{:d} operators, {:d} fields]>'.format(len(self.ops),
len(self.fields))
for key in self.opmap:
rstr += "\n - '{}': {}".format(key, type(self.opmap[key]))
for field in self.opmap[key].fields:
rstr += "\n - '{}': {}".format(field, self.opmap[key].fields[field])
return rstr

def _repr_html_(self):

rstr = '<dl class="row">'
for key in self.opmap:
rstr += '\n <dt class="col-sm-3">{:s}</dt>'.format(key)
rstr += '\n <dd class="col-sm-9">{}'.format(self.opmap[key])

rstr += '<ul>'
for fkey, field in six.iteritems(self.opmap[key].fields):
rstr += '\n <li>{:s} [shape={}, dtype={}]</li>'.format(fkey,
field.shape,
field.dtype.__name__)
rstr += '</ul></dd>'
rstr += '</dl>'
return rstr
42 changes: 42 additions & 0 deletions tests/test_core.py
Expand Up @@ -212,3 +212,45 @@ def test_pump_layers(sr, hop_length):
assert L1[k].dtype == L2[k].dtype
for d1, d2 in zip(L1[k].shape, L2[k].shape):
assert str(d1) == str(d2)


def test_pump_str(sr, hop_length):

ops = [pumpp.feature.STFT(name='stft', sr=sr,
hop_length=hop_length,
n_fft=2*hop_length),

pumpp.task.BeatTransformer(name='beat', sr=sr,
hop_length=hop_length),

pumpp.task.ChordTransformer(name='chord', sr=sr,
hop_length=hop_length),

pumpp.task.StaticLabelTransformer(name='tags',
namespace='tag_open',
labels=['rock', 'jazz'])]

pump = pumpp.Pump(*ops)

assert isinstance(str(pump), str)


def test_pump_repr_html(sr, hop_length):

ops = [pumpp.feature.STFT(name='stft', sr=sr,
hop_length=hop_length,
n_fft=2*hop_length),

pumpp.task.BeatTransformer(name='beat', sr=sr,
hop_length=hop_length),

pumpp.task.ChordTransformer(name='chord', sr=sr,
hop_length=hop_length),

pumpp.task.StaticLabelTransformer(name='tags',
namespace='tag_open',
labels=['rock', 'jazz'])]

pump = pumpp.Pump(*ops)

assert isinstance(pump._repr_html_(), str)

0 comments on commit 0e0b7b9

Please sign in to comment.