def read(self, line, f, data):
data["<STR_LIT>"] = float(f.readline().split()[<NUM_LIT:1>])<EOL>N = len(data["<STR_LIT>"])<EOL>gradient = data.get("<STR_LIT>")<EOL>if gradient is None:<EOL><INDENT>gradient = np.zeros((N,<NUM_LIT:3>), float)<EOL>data["<STR_LIT>"] = gradient<EOL><DEDENT>for i in range(N):<EOL><INDENT>words = f.readline().split()<EOL>gradient[i,<NUM_LIT:0>] = float(words[<NUM_LIT:2>])<EOL>gradient[i,<NUM_LIT:1>] = float(words[<NUM_LIT:3>])<EOL>gradient[i,<NUM_LIT:2>] = float(words[<NUM_LIT:4>])<EOL><DEDENT>
See :meth:`PunchParser.read`