<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def data_storage_shape(self):
 """Shape tuple of the data as stored in the file. If no header is available (i.e., before it has been initialized), or any of the header entries ``'nx', 'ny', 'nz'`` is missing, -1 is returned, which makes reshaping a no-op. Otherwise, the returned shape is a permutation of `data_shape`, i.e., ``(nx, ny, nz)``, according to `data_axis_order` in the following way:: data_shape[i] == data_storage_shape[data_axis_order[i]] See Also -------- data_shape data_axis_order """

        if self.data_shape == -1:
            return -1
        else:
            return tuple(self.data_shape[ax]
                         for ax in np.argsort(self.data_axis_order))