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