30 lines
837 B
Python
30 lines
837 B
Python
import numpy as np
|
|
|
|
|
|
def _parse_alist_header(header):
|
|
size = header.split()
|
|
return int(size[0]), int(size[1])
|
|
|
|
|
|
def read_alist_file(filename):
|
|
"""
|
|
This function reads in an alist file and creates the
|
|
corresponding parity check matrix H. The format of alist
|
|
files is described at:
|
|
http://www.inference.phy.cam.ac.uk/mackay/codes/alist.html
|
|
"""
|
|
|
|
with open(filename, 'r') as myfile:
|
|
data = myfile.readlines()
|
|
numCols, numRows = _parse_alist_header(data[0])
|
|
|
|
H = np.zeros((numRows, numCols))
|
|
|
|
# The locations of 1s starts in the 5th line of the file
|
|
for lineNumber in np.arange(4, 4 + numCols):
|
|
indices = data[lineNumber].split()
|
|
for index in indices:
|
|
H[int(index) - 1, lineNumber - 4] = 1
|
|
|
|
return H.astype(np.int32)
|