def __init__(self, f, units, sub=slice(None)):
SlicedReader.__init__(self, f, sub)<EOL>try:<EOL><INDENT>while True:<EOL><INDENT>line = next(self._f)<EOL>if line == "<STR_LIT>":<EOL><INDENT>break<EOL><DEDENT><DEDENT>try:<EOL><INDENT>line = next(self._f)<EOL>self.num_atoms = int(line)<EOL><DEDENT>except ValueError:<EOL><INDENT>raise FileFormatError("<STR_LIT>" % line)<EOL><DEDENT><DEDENT>except StopIteration:<EOL><INDENT>raise FileFormatError("<STR_LIT>")<EOL><DEDENT>self._f.seek(<NUM_LIT:0>) <EOL>self.units = units<EOL>
Arguments:
 | ``f``  --  a filename or a file-like object
 | ``units``  --  The units of the atom fields. The number of fields,
                  their unit and their meaning depends on the input
                  file of the LAMMPS simulation.

Optional argumtent:
 | ``sub``  --  a slice object indicating which time frames to skip/read