<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def from_files(cls, ID, datafiles, parser='name', position_mapper=None, readdata_kwargs={}, readmeta_kwargs={}, ID_kwargs={}, **kwargs):
 """ Create an OrderedCollection of measurements from a set of data files. Parameters {_bases_ID} {_bases_data_files} {_bases_filename_parser} {_bases_position_mapper} {_bases_ID_kwargs} kwargs : dict Additional key word arguments to be passed to constructor. """

        if position_mapper is None:
            if isinstance(parser, six.string_types):
                position_mapper = parser
            else:
                msg = "When using a custom parser, you must specify the position_mapper keyword."
                raise ValueError(msg)
        d = _assign_IDS_to_datafiles(datafiles, parser, cls._measurement_class, **ID_kwargs)
        measurements = []
        for sID, dfile in d.items():
            try:
                measurements.append(cls._measurement_class(sID, datafile=dfile,
                                                           readdata_kwargs=readdata_kwargs,
                                                           readmeta_kwargs=readmeta_kwargs))
            except:
                msg = 'Error occured while trying to parse file: %s' % dfile
                raise IOError(msg)
        return cls(ID, measurements, position_mapper, **kwargs)