def test_big_npz(self): logging.info("in test_big_npz") n = 1000 pstdata = PstData(row=range(n-1),col=range(n+1),val=np.zeros([n-1,n+1])) output = "tempdir/pstreader/big.npz" create_directory_if_necessary(output) PstNpz.write(output,pstdata) pstnpz = PstNpz(output) pstdata1 = pstnpz[::2,::4].read() pstdata2 = pstnpz.read(order='A') assert pstdata2.val.flags['C_CONTIGUOUS'] pstdata = PstData(row=range(n-1),col=range(n+1),val=np.zeros([n-1,n+1],order='F')) PstNpz.write(output,pstdata) pstnpz = PstNpz(output) pstdata2 = pstnpz.read(order='A') pstdata2.val.flags['F_CONTIGUOUS'] print("done")
def test_respect_read_inputs(self): from pysnptools.pstreader import _MergeRows, _MergeCols previous_wd = os.getcwd() os.chdir(os.path.dirname(os.path.realpath(__file__))) for pstreader in [ PstNpz('../examples/toydata10.snp.npz'), _MergeRows([ PstHdf5('../examples/toydata.snpmajor.snp.hdf5') [:5, :].read(), PstHdf5('../examples/toydata.snpmajor.snp.hdf5')[ 5:, :].read() ]), _MergeCols([ PstHdf5( '../examples/toydata.snpmajor.snp.hdf5')[:, :5].read(), PstHdf5('../examples/toydata.snpmajor.snp.hdf5') [:, 5:].read() ]), PstHdf5('../examples/toydata.snpmajor.snp.hdf5')[::2, ::2], PstHdf5('../examples/toydata.snpmajor.dist.hdf5').read(), PstHdf5('../examples/toydata.kernel.hdf5'), PstMemMap('../examples/tiny.pst.memmap') ]: logging.info(str(pstreader)) for order in ['F', 'C', 'A']: for dtype in [np.float32, np.float64]: for force_python_only in [True, False]: for view_ok in [True, False]: val = pstreader.read( order=order, dtype=dtype, force_python_only=force_python_only, view_ok=view_ok).val has_right_order = order == "A" or ( order == "C" and val.flags["C_CONTIGUOUS"] ) or (order == "F" and val.flags["F_CONTIGUOUS"]) if hasattr(pstreader, 'val') and not view_ok: assert pstreader.val is not val if (hasattr(pstreader, 'val') and view_ok and pstreader.val is not val and (order == 'A' or (order == 'F' and pstreader.val.flags['F_CONTIGUOUS']) or (order == 'C' and pstreader.val.flags['C_CONTIGUOUS'])) and (dtype is None or pstreader.val.dtype == dtype)): logging.info( "{0} could have read a view, but didn't". format(pstreader)) assert val.dtype == dtype and has_right_order os.chdir(previous_wd)