Several Data format are used to store the acquired data.

Ionogram HDF File Format:

Hierarchical Data Format (HDF) is a set of file formats (HDF4, HDF5) designed to store and organize large amounts of data. Ionograms data are in HDF5 file format. 
HDF5 files are structured like a file system or a folder hierarchy. They contain two primary types of objects:
Groups: Analogous to folders or directories, used to organize the file structure.
Datasets: The actual data arrays, which are similar to files.
In the figure below the groups of Dataset in the ionogram H5 data files:
binary data table are in the "I" dataset of 300 x 1000 points
I_fvec containt a list of  300 frequencies (from 1 MHz to 30.9 MHz at stemps of 0.1MHz) In the first column and type of code (prn) in the second column
I_rcvec contain a list of 1000 ranges (from 0 1'497,46 km at steps of 1,498 km  )
in the follwing data other information are stored like version of the ionosgrams, position of the station noise_floor and Signal to Noise Ratio and timestamps of the acquisition time.

H5structure.png
Usesul programs to open HDF5 file are: HDFView, Silk ... MATLAB has native functions to read and write HDF5 files.
In python the H5py library can be used and  minimal Python code example is listed below:

# Basic Python code 
import h5py
import numpy as n
...
#read file
try: 
    #openfile 
    with h5py.File(file_name, "r") as h1: 
        v1 = h1['ionogram_version'][()] 
        #test on ionogram version 
        if (v1 == 1) or (v1 == 2): 
            # file HD5 1000 byte da 0 1497.2 km 1.5 km/byte 
            #vector of frequncies 
            freq1 = n.copy(h1['I_fvec']) 
            #vector of ranges 
            rng1 = n.copy(h1['I_rvec'][()]) 
            #ionogram data in the I array 
            I = n.copy(h1['I'][()]) 
... 

 

Ionogram RDF File Format:

a) All ionogram files should be binary files and have extension .RDF.
b) The name of the ionogram file is yyggglmm.rdf, where yy are the last two digits of the year, ggg are the three digits for the calendar day, l is the letter that identifies the hour (see Table 1) and mm represents the minutes (ex. 09121b00.rdf where 09 are the last two digits of the year 2009, 121 is the calendar day, b corresponds to the hour 02 and 00 are the minutes).
c) Each file has a header of 197 bytes where the bytes between 1 and 6 represent the initial frequency of the sounding, the bytes between 8 and 13 represent the final frequency of the sounding, and the bytes between 15 and 19 represent the frequency step (whose size can be 0.050 or 0.100 MHz), while the remaining bytes are parameters concerning the receiver settings, the signal processing algorithm, and geophysical constants depending on the specific installation site (see Table 2; the mandatory parameters for our software are highlighted in blue. The other values can be left blank).
d) Next to the header these files are structured in a definite number (depending on the monitoring frequency band width) of records of 150 bytes (whose value stands for the received echo amplitude), each record representing the sounding in height in correspondence of a determined value of the frequency; the value of the first byte represents the energy reflected back towards the ground from a height of 90 km, the byte 150 represents the energy reflected back towards the ground from a height of 760.5 km, therefore the passage between two successive bytes of the record is equal to a movement in height of 4.5 km.
e) 1) In case of O/X information is available for each frequency there are two consecutive records of 150 bytes, one for the O mode and the other one for the X mode (in this case the field “polarization information” of the header, see Table 2, has to be filled with “OX”).2) In case of only the O mode information is available for each frequency only one record of 150 bytes is present (in this case the field “polarization information” of the header, see Table 2, has to be filled with “ O”).3) In case of only the X mode information is available for each frequency only one record of 150 bytes is present (in this case the field “polarization information” of the header, see Table 2, has to be filled with “ X”).4) In case of both traces are recorded but without information on polarization for each frequency only one record of 150 bytes is present (in this case the field “polarization information” of the header, see Table 2, has to be filled with “  ”).

Letter

Hour

A

00

B

01

C

02

D

03

E

04

F

05

G

06

H

07

I

08

J

09

K

10

L

11

M

12

N

13

O

14

P

15

Q

16

R

17

S

18

T

19

U

20

V

21

W

22

X

23

Table 1

From byte

To byte

total number of bytes

meaning

example

1

6

6

initial frequency of the sounding

01.500

7

7

1

blank

 

8

13

6

final frequency of the sounding

14.500

14

14

1

blank

 

15

19

5

frequency step of the sounding

0.050

20

20

1

blank

 

21

25

5

initial height of the sounding

090.0

26

26

1

blank

 

27

31

5

final height of the sounding

760.5

32

32

1

blank

 

33

35

3

height step of the sounding

4.5

36

36

1

blank

 

37

38

2

internal attenuation

18

39

39

1

blank

 

40

41

2

external attenuation

04

42

42

1

blank

 

43

43

1

mathematical amplification

1

44

44

1

blank

 

45

48

4

filter HIGH

0000

49

49

1

blank

 

50

53

4

filter LOW

5000

54

54

1

blank

 

55

56

2

numbers of integrations

20

57

57

1

blank

 

58

58

1

software release DSP

3

59

59

1

blank

 

60

65

6

available

xxxxxx

66

66

1

blank

 

67

118

52

eventual comment

 

119

119

1

blank

 

120

121

2

Polarization information

“OX” or “ X” or “ O” or

 “  “

122

122

1

blank

 

123

127

5

URSI code of the station

RM041

128

128

1

blank

 

129

132

4

year

2003

133

133

1

blank

 

134

135

2

month (01-12)

04

136

136

1

blank

 

137

138

2

day (01-31)

07

139

139

1

blank

 

140

142

3

Calendar day

094

143

143

1

blank

 

144

148

5

time (hh:mm)

22:43

149

149

1

blank

 

150

154

5

geographical latitude

+41.8

155

155

1

blank

 

156

160

5

geographical longitude

012.5

161

161

1

blank

 

162

166

5

magnetic latitude

+42.0

167

167

1

blank

 

168

172

5

magnetic longitude

093.8

173

173

1

blank

 

174

177

4

gyrofrequency

1.20

178

178

1

blank

 

179

183

5

magnetic inclination

+60.0

184

184

1

blank

 

185

196

12

name of the file

03097N23.RDF

197

197

1

CR

0Ahex

Table 2