def _mixedtypes_datastring2rawniml(s, niml): tps = niml['vec_typ'] ncols = len(tps) nrows = niml['vec_len'] lines = s.strip().split(_TEXT_ROWSEP) if len(lines) != nrows: raise ValueError("Expected %d rows, but found %d" % (nrows, len(lines))) elems = map(lambda x: x.strip().split(_TEXT_COLSEP), lines) fs = map(types.code2python_convertor, tps) data = [] for col in xrange(ncols): f = fs[col] if types.sametype(tps[col], 'String'): d = map(f, [elems[r][col] for r in xrange(nrows)]) else: tp = types.code2numpy_type(tps[col]) niform = niml.get('ni_form', None) if not niform is None: raise ValueError( 'Not supported: have ni_form with mixed types') d = np.zeros((nrows, ), dtype=tp) # allocate one-dimensional array for r in xrange(nrows): d[r] = f(elems[r][col]) data.append(d) return data
def _mixedtypes_datastring2rawniml(s, niml): tps = niml['vec_typ'] ncols = len(tps) nrows = niml['vec_len'] lines = s.strip().split(_TEXT_ROWSEP) if len(lines) != nrows: raise ValueError("Expected %d rows, but found %d" % (nrows, len(lines))) elems = map(lambda x : x.strip().split(_TEXT_COLSEP), lines) fs = map(types.code2python_convertor, tps) data = [] for col in xrange(ncols): f = fs[col] if types.sametype(tps[col], 'String'): d = map(f, [elems[r][col] for r in xrange(nrows)]) else: tp = types.code2numpy_type(tps[col]) niform = niml.get('ni_form', None) if not niform is None: raise ValueError('Not supported: have ni_form with mixed types') d = np.zeros((nrows,), dtype=tp) # allocate one-dimensional array for r in xrange(nrows): d[r] = f(elems[r][col]) data.append(d) return data