':param dataset: the Galaxy dataset whose file will be the source
:type dataset: model.DatasetInstance
:param named_columns: optionally return dictionaries keying each column
with \'chrom\', \'start\', \'end\', \'strand\', or \'name\'.
Optional: defaults to False
:type named_columns: bool'

def __init__(self, dataset, chrom_column=None, start_column=None, end_column=None, strand_column=None, name_column=None, named_columns=False, **kwargs):

    dataset_source = DatasetDataProvider(dataset)
    self.column_names = []
    indeces = []
    if (chrom_column is None):
        chrom_column = dataset_source.get_metadata_column_index_by_name('chromCol')
        if (chrom_column is not None):
            self.column_names.append('chrom')
            indeces.append(chrom_column)
    if (start_column is None):
        start_column = dataset_source.get_metadata_column_index_by_name('startCol')
        if (start_column is not None):
            self.column_names.append('start')
            indeces.append(start_column)
    if (end_column is None):
        end_column = dataset_source.get_metadata_column_index_by_name('endCol')
        if (end_column is not None):
            self.column_names.append('end')
            indeces.append(end_column)
    if (strand_column is None):
        strand_column = dataset_source.get_metadata_column_index_by_name('strandCol')
        if (strand_column is not None):
            self.column_names.append('strand')
            indeces.append(strand_column)
    if (name_column is None):
        name_column = dataset_source.get_metadata_column_index_by_name('nameCol')
        if (name_column is not None):
            self.column_names.append('name')
            indeces.append(name_column)
    kwargs.update({'indeces': indeces})
    if (not kwargs.get('column_types', None)):
        kwargs.update({'column_types': dataset_source.get_metadata_column_types(indeces=indeces)})
    self.named_columns = named_columns
    super(IntervalDataProvider, self).__init__(dataset_source, **kwargs)
