<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def read_data(self, dstart=None, dend=None, swap_axes=True):
 """Read the data from `file` and return it as Numpy array. Parameters dstart : int, optional Offset in bytes of the data field. By default, it is equal to ``header_size``. Backwards indexing with negative values is also supported. Use a value larger than the header size to extract a data subset. dend : int, optional End position in bytes until which data is read (exclusive). Backwards indexing with negative values is also supported. Use a value different from the file size to extract a data subset. swap_axes : bool, optional If ``True``, use `data_axis_order` to swap the axes in the returned array. In that case, the shape of the array may no longer agree with `data_storage_shape`. Returns ------- data : `numpy.ndarray` The data read from `file`. """

        data = super(FileReaderMRC, self).read_data(dstart, dend)
        data = data.reshape(self.data_shape, order='F')
        if swap_axes:
            data = np.transpose(data, axes=self.data_axis_order)
            assert data.shape == self.data_shape
        return data