def __init__(self, filename=None, names=None, array=None, permissive=False, **kwargs):
self.__array = None           <EOL>self.__cache = {}             <EOL>self.savedata = kwargs.pop('<STR_LIT>', False)<EOL>if filename is not None:<EOL><INDENT>self._init_filename(filename)  <EOL><DEDENT>if names is None:<EOL><INDENT>self.names = []<EOL><DEDENT>else:<EOL><INDENT>try:<EOL><INDENT>self.names = names.split('<STR_LIT:U+002C>')<EOL><DEDENT>except AttributeError:<EOL><INDENT>self.names = names<EOL><DEDENT><DEDENT>self.metadata = kwargs.pop('<STR_LIT>', {})  <EOL>self.permissive = permissive<EOL>self.stride = kwargs.pop('<STR_LIT>', <NUM_LIT:1>)<EOL>self.corrupted_lineno = None      <EOL>self.ncorrel = kwargs.pop('<STR_LIT>', <NUM_LIT>)<EOL>self.__correlkwargs = {}          <EOL>if array is not None:<EOL><INDENT>self.set(array)<EOL><DEDENT>
Initialize the class from a xvg file.

        :Arguments:
              *filename*
                    is the xvg file; it can only be of type XY or
                    NXY. If it is supplied then it is read and parsed
                    when :attr:`XVG.array` is accessed.
              *names*
                    optional labels for the columns (currently only
                    written as comments to file); string with columns
                    separated by commas or a list of strings
              *array*
                    read data from *array* (see :meth:`XVG.set`)
              *permissive*
                    ``False`` raises a :exc:`ValueError` and logs and errior
                    when encountering data lines that it cannot parse.
                    ``True`` ignores those lines and logs a warning---this is
                    a risk because it might read a corrupted input file [``False``]
              *stride*
                    Only read every *stride* line of data [1].
              *savedata*
                    ``True`` includes the data (:attr:`XVG.array`` and
                    associated caches) when the instance is pickled (see
                    :mod:`pickle`); this is oftens not desirable because the
                    data are already on disk (the xvg file *filename*) and the
                    resulting pickle file can become very big. ``False`` omits
                    those data from a pickle. [``False``]
              *metadata*
                    dictionary of metadata, which is not touched by the class