Example #1
0
 def new_block(self, op_name, grid_entry, grid_meta):
     op_func = np.__getattribute__(op_name)
     grid = ArrayGrid.from_meta(grid_meta)
     block_shape = grid.get_block_shape(grid_entry)
     if op_name == "eye":
         assert np.all(np.diff(grid_entry) == 0)
         return op_func(*block_shape, dtype=grid.dtype)
     else:
         return op_func(block_shape, dtype=grid.dtype)
Example #2
0
    def csc(self):
        meta_swap = self.grid.to_meta()
        grid_swap = ArrayGrid.from_meta(meta_swap)
        rarr_src = np.ndarray(self.blocks.shape, dtype='O')

        for grid_entry in self.grid.get_entry_iterator():
            rarr_src[grid_entry] = self.blocks[grid_entry].csc()

        rarr_swap = SparseBlockArray(grid_swap, self.system, rarr_src)
        return rarr_swap
Example #3
0
 def read_fs(self, filename: str):
     meta = self._filesystem.read_meta_fs(filename)
     addresses = meta["addresses"]
     grid_meta = meta["grid_meta"]
     grid = ArrayGrid.from_meta(grid_meta)
     ba: BlockArray = BlockArray(grid, self._system)
     for grid_entry in addresses:
         node_address = addresses[grid_entry]
         options = {"resources": {node_address: 1.0 / 10**4}}
         ba.blocks[grid_entry].oid = self._filesystem.read_block_fs(
             filename, grid_entry, grid_meta, options=options)
     return ba
Example #4
0
 def __getattr__(self, item):
     if item != "T":
         raise NotImplementedError(item)
     metaT = self.grid.to_meta()
     metaT["shape"] = tuple(reversed(metaT["shape"]))
     metaT["block_shape"] = tuple(reversed(metaT["block_shape"]))
     result_grid: ArrayGrid = ArrayGrid.from_meta(metaT)
     result_graphs = np.copy(self.graphs.T)
     for grid_entry in result_grid.get_entry_iterator():
         self._add_uop("transpose", grid_entry, result_graphs,
                       result_graphs)
     return GraphArray(result_grid,
                       self.cluster_state,
                       result_graphs,
                       copy_on_op=self.copy_on_op)
Example #5
0
 def __getattr__(self, item):
     if item == "__array_priority__" or item == "__array_struct__":
         # This is triggered by a numpy array on the LHS.
         raise ValueError("Unable to covert numpy array to block array.")
     if item != "T":
         raise NotImplementedError(item)
     metaT = self.grid.to_meta()
     metaT["shape"] = tuple(reversed(metaT["shape"]))
     metaT["block_shape"] = tuple(reversed(metaT["block_shape"]))
     gridT = ArrayGrid.from_meta(metaT)
     rarrT = BlockArray(gridT, self.system)
     rarrT.blocks = np.copy(self.blocks.T)
     for grid_entry in rarrT.grid.get_entry_iterator():
         rarrT.blocks[grid_entry] = rarrT.blocks[grid_entry].transpose()
     return rarrT
Example #6
0
 def delete_fs(self, filename: str):
     meta = self._filesystem.read_meta_fs(filename)
     addresses = meta["addresses"]
     grid_meta = meta["grid_meta"]
     grid = ArrayGrid.from_meta(grid_meta)
     result_grid = ArrayGrid(grid.grid_shape,
                             tuple(np.ones_like(grid.shape, dtype=np.int)),
                             dtype=dict.__name__)
     rarr = BlockArray(result_grid, self._system)
     for grid_entry in addresses:
         node_address = addresses[grid_entry]
         options = {"resources": {node_address: 1.0 / 10**4}}
         rarr.blocks[grid_entry].oid = self._filesystem.delete_block_fs(
             filename, grid_entry, grid_meta, options=options)
     self._filesystem.delete_meta_fs(filename)
     return rarr
Example #7
0
    def swapaxes(self, axis1, axis2):
        meta_swap = self.grid.to_meta()
        shape = list(meta_swap["shape"])
        block_shape = list(meta_swap["block_shape"])
        dim = len(shape)
        if axis1 >= dim or axis2 >= dim:
            raise ValueError("axis is larger than the array dimension")
        shape[axis1], shape[axis2] = shape[axis2], shape[axis1]
        block_shape[axis1], block_shape[axis2] = block_shape[axis2], block_shape[axis1]
        meta_swap["shape"] = tuple(shape)
        meta_swap["block_shape"] = tuple(block_shape)
        grid_swap = ArrayGrid.from_meta(meta_swap)
        rarr_src = np.ndarray(self.blocks.shape, dtype='O')

        for grid_entry in self.grid.get_entry_iterator():
            rarr_src[grid_entry] = self.blocks[grid_entry].swapaxes(axis1, axis2)
        rarr_src = rarr_src.swapaxes(axis1, axis2)

        rarr_swap = BlockArray(grid_swap, self.system, rarr_src)
        return rarr_swap
Example #8
0
 def empty(self, grid_entry, grid_meta):
     grid = ArrayGrid.from_meta(grid_meta)
     block_shape = grid.get_block_shape(grid_entry)
     return np.empty(block_shape, dtype=grid.dtype)
Example #9
0
def delete_block_s3(filename: AnyStr, grid_entry: Tuple, grid_meta: Dict):
    return np.array(StoredArrayS3(
        filename, ArrayGrid.from_meta(grid_meta)).delete(grid_entry),
                    dtype=dict)
Example #10
0
def read_block_s3(filename: AnyStr, grid_entry: Tuple, grid_meta: Dict):
    return StoredArrayS3(filename,
                         ArrayGrid.from_meta(grid_meta)).get(grid_entry)
Example #11
0
def write_block_s3(block: Any, filename: AnyStr, grid_entry: Tuple,
                   grid_meta: Dict):
    return np.array(StoredArrayS3(filename,
                                  ArrayGrid.from_meta(grid_meta)).put(
                                      grid_entry, block),
                    dtype=dict)
Example #12
0
def write_meta_s3(filename: AnyStr, grid_meta: Dict):
    sa: StoredArrayS3 = StoredArrayS3(filename, ArrayGrid.from_meta(grid_meta))
    return np.array(sa.put_grid(sa.grid), dtype=dict)