Home Reference Source Test

packages/causality-datasets/src/dataSource.mixins.js

/**
 * This pipeline mixin provides DataSourceReader attibute, source reading methods for pipeline 
 * and getting Source in pipelineConfig
 * @class DataSourceMixins
 * @extends Event
 * @example
 * [EXAMPLE ../examples/dataset.mixins.babel.js]
 */
const DataSourceMixins = (BasePipelineClass)=> class extends BasePipelineClass {
   
    set DataSourceReader(sourceReader){
        this.sourceReader = sourceReader;
    }

    get DataSourceReader(){
        return this.sourceReader;
    }

    setByConfig(pipelineConfig){
        if(super.setByConfig){
            super.setByConfig(pipelineConfig);
        }
        this.Logger.groupBegin('set Source by config');
        const { Source } = pipelineConfig.Dataset;
        if(Source){
            this.DataSourceReader = Source;
        }
        else{
            this.DataSourceReader = null;
            this.Logger.log('***Source is not defined \n' + 
                            '***TrainDataGenerator and TestDataGenerator must be set manually');
        }
        this.Logger.groupEnd();
        return pipelineConfig;
    }

    async read(numChunks){
        let selectedChunk = this.DataSourceReader.chunkSelect(numChunks);
        this.Logger.log({'select chunks': selectedChunk});
        await this.DataSourceReader.read();
        return this.Preprocessing.PreprocessingData;
    }
};

export default DataSourceMixins;