def test_flatten(self): """flatten should remove one level of nesting from nested sequences test pulled from PyCogent (http://pycogent.sourceforge.net) """ self.assertEqual(flatten(["aa", "bb", "cc"]), list("aabbcc")) self.assertEqual(flatten([1, [2, 3], [[4, [5]]]]), [1, 2, 3, [4, [5]]])
def test_flatten_no_change(self): """flatten should not change non-nested sequences (except to list) test pulled from PyCogent (http://pycogent.sourceforge.net) """ self.assertEqual(flatten("abcdef"), list("abcdef")) # test identities self.assertEqual(flatten([]), []) # test empty sequence self.assertEqual(flatten(""), []) # test empty string
def test_flatten(self): """flatten should remove one level of nesting from nested sequences This method is ported from PyCogent (http://www.pycogent.org). PyCogent is a GPL project, but we obtained permission from the authors of this method to port it to the BIOM Format project (and keep it under BIOM's BSD license). """ self.assertEqual(flatten(['aa', 'bb', 'cc']), list('aabbcc')) self.assertEqual(flatten([1, [2, 3], [[4, [5]]]]), [1, 2, 3, [4, [5]]])
def test_flatten_no_change(self): """flatten should not change non-nested sequences (except to list) This method is ported from PyCogent (http://www.pycogent.org). PyCogent is a GPL project, but we obtained permission from the authors of this method to port it to the BIOM Format project (and keep it under BIOM's BSD license). """ self.assertEqual(flatten('abcdef'), list('abcdef')) # test identities self.assertEqual(flatten([]), []) # test empty sequence self.assertEqual(flatten(''), []) # test empty string
def list_dict_to_sparsemat(data, dtype=float): """Takes a list of dict {(0,col):val} and creates a SparseMat""" if isinstance(data[0], SparseMat): if data[0].shape[0] > data[0].shape[1]: is_col = True n_cols = len(data) n_rows = data[0].shape[0] else: is_col = False n_rows = len(data) n_cols = data[0].shape[1] else: all_keys = flatten([d.keys() for d in data]) n_rows = max(all_keys, key=itemgetter(0))[0] + 1 n_cols = max(all_keys, key=itemgetter(1))[1] + 1 if n_rows > n_cols: is_col = True n_cols = len(data) else: is_col = False n_rows = len(data) mat = SparseMat(n_rows, n_cols, dtype=dtype) for row_idx,row in enumerate(data): for (foo,col_idx),val in row.items(): if is_col: mat[foo,row_idx] = val else: mat[row_idx,col_idx] = val return mat
def list_dict_to_csmat(data, dtype=float): """Takes a list of dict {(0,col):val} and creates a CSMat""" if isinstance(data[0], CSMat): if data[0].shape[0] > data[0].shape[1]: is_col = True n_cols = len(data) n_rows = data[0].shape[0] else: is_col = False n_rows = len(data) n_cols = data[0].shape[1] else: all_keys = flatten([d.keys() for d in data]) n_rows = max(all_keys, key=itemgetter(0))[0] + 1 n_cols = max(all_keys, key=itemgetter(1))[1] + 1 if n_rows > n_cols: is_col = True n_cols = len(data) else: is_col = False n_rows = len(data) mat = CSMat(n_rows, n_cols, dtype=dtype) rows = [] cols = [] vals = [] for row_idx,row in enumerate(data): for (foo,col_idx),val in row.items(): if is_col: # transpose rows.append(foo) cols.append(row_idx) vals.append(val) else: rows.append(row_idx) cols.append(col_idx) vals.append(val) mat.bulkCOOUpdate(rows, cols, vals) return mat
def list_dict_to_scipy(data, dtype=float): """Takes a list of dict {(row,col):val} and creates a ``ScipySparseMat``. """ if isinstance(data[0], ScipySparseMat): if data[0].shape[0] > data[0].shape[1]: is_col = True n_cols = len(data) n_rows = data[0].shape[0] else: is_col = False n_rows = len(data) n_cols = data[0].shape[1] else: all_keys = flatten([d.keys() for d in data]) n_rows = max(all_keys, key=itemgetter(0))[0] + 1 n_cols = max(all_keys, key=itemgetter(1))[1] + 1 if n_rows > n_cols: is_col = True n_cols = len(data) else: is_col = False n_rows = len(data) rows = [] cols = [] vals = [] for row_idx, row in enumerate(data): for (foo, col_idx), val in row.items(): if is_col: # transpose rows.append(foo) cols.append(row_idx) vals.append(val) else: rows.append(row_idx) cols.append(col_idx) vals.append(val) return ScipySparseMat(n_rows, n_cols, dtype=dtype, data=(vals, (rows, cols)))