I want to write Python function cis.read_data() equivalent in Julia.

```
def read_data(data_list, read_function):
"""
Wrapper for calling an HDF reading function for each dataset, and then concatenating the result.
:param list data_list: A list of data objects to read
:param callable or str read_function: A function for reading the data, or 'SD' or 'VD' for default reading routines.
:return: A single numpy array of concatenated data values.
"""
if callable(read_function):
out = utils.concatenate([read_function(i) for i in data_list])
elif read_function == 'VD':
out = utils.concatenate([hdf_vd.get_data(i) for i in data_list])
elif read_function == 'SD':
out = utils.concatenate([hdf_sd.get_data(i) for i in data_list])
else:
raise ValueError("Invalid read-function: {}, please supply a callable read "
"function, 'VD' or 'SD' only".format(read_function))
return out
```

I have to read a part of data from a hdf5 file and i will use a config file for selecting that part of data.

and the config file of Athena++ is

## sane00.athinput

```
<job>
problem_id = sane00
<time>
cfl_number = 0.25
nlim = -1
tlim = 4.0E4
<output1>
file_type = hdf5
variable = prim
id = prim
dt = 10.0
xdmf = false
<output2>
file_type = hdf5
variable = uov
id = user
dt = 100.0
xdmf = false
<output3>
file_type = rst
dt = 1.E4
<mesh>
nx1 = 72
x1min = 1.6
x1max = 1200.0
x1rat = 1.0963050292915717
ix1_bc = user
ox1_bc = user
nx2 = 32
x2min = 0.0
x2max = 3.141592653589793
ix2_bc = polar
ox2_bc = polar
nx3 = 16
x3min = 0.0
x3max = 6.283185307179586
ix3_bc = periodic
ox3_bc = periodic
refinement = static
<meshblock>
nx1 = 18
nx2 = 4
nx3 = 16
<refinement1>
level = 1
x1min = 1.6
x1max = 200.0
x2min = 0.41
x2max = 2.731592653589793
x3min = 0.0
x3max = 6.283185307179586
<refinement2>
level = 2
x1min = 1.6
x1max = 30.0
x2min = 0.61
x2max = 2.531592653589793
x3min = 0.0
x3max = 6.283185307179586
<refinement3>
level = 1
x1min = 8.5
x1max = 1200.0
x2min = 0.0
x2max = 0.380
x3min = 0.0
x3max = 6.283185307179586
<refinement4>
level = 1
x1min = 8.5
x1max = 1200.0
x2min = 2.761592653589793
x2max = 3.141592653589793
x3min = 0.0
x3max = 6.283185307179586
<refinement5>
level = 2
x1min = 44.4
x1max = 1200.0
x2min = 0.0
x2max = 0.18
x3min = 0.0
x3max = 6.283185307179586
<refinement6>
level = 2
x1min = 44.4
x1max = 1200.0
x2min = 2.961592653589793
x2max = 3.141592653589793
x3min = 0.0
x3max = 6.283185307179586
<coord>
m = 1.0
a = 0.0
<hydro>
gamma = 1.3333333333333333
dfloor = 1.0e-6
pfloor = 1.0e-8
rho_min = 1.0e-2
rho_pow = -1.5
pgas_min = 1.0e-2
pgas_pow = -2.5
sigma_max = 100.0
beta_min = 1.0e-3
gamma_max = 50.0
<problem>
k_adi = 1.0
r_edge = 40.5
r_peak = 80.0
l = 0.0
rho_max = 1.0
field_config = loops
potential_cutoff = 0.2
potential_start = 25.0
potential_end = 550.0
potential_wavelength = 3.75
beta_min = 0.05833
potential_r_pow = 0.0
potential_rho_pow = 1.0
sample_n_r = 288
sample_n_theta = 128
sample_r_rat = 1.0232525877105085
sample_cutoff = 0.2
pert_amp = 1.00E-1
pert_kr = 6.28E-2
pert_kz = 6.28E-2
```