loadVariationsGroupData()

in client/client/app/shared/projectContext/index.js [2216:2335]


    loadVariationsGroupData(callbacks) {
        const {groupByChromosome, groupByType, groupByQuality} = callbacks;
        this._variantsGroupByQualityError = null;
        this._variantsGroupByTypeError = null;
        this._variantsGroupByChromosomesError = null;
        if (!this.reference) {
            this._variantsDataByChromosomes = [];
            this._variantsDataByQuality = [];
            this._variantsDataByType = [];
            this._isVariantsGroupByChromosomesLoading = false;
            this._isVariantsGroupByTypeLoading = false;
            this._isVariantsGroupByQualityLoading = false;
            if (groupByChromosome && groupByChromosome.finished) {
                groupByChromosome.finished();
            }
            if (groupByType && groupByType.finished) {
                groupByType.finished();
            }
            if (groupByQuality && groupByQuality.finished) {
                groupByQuality.finished();
            }
            return;
        }
        this._isVariantsGroupByChromosomesLoading = true;
        this._isVariantsGroupByTypeLoading = true;
        this._isVariantsGroupByQualityLoading = true;
        const vcfFileIdsByProject = this._vcfFilter && this._vcfFilter.vcfFileIdsByProject && this._vcfFilter.vcfFileIdsByProject.length ? this._vcfFilter.vcfFileIdsByProject : this.getVcfFileIdsByProject();
        const quality = this._vcfFilter ? this._vcfFilter.quality.value : [];
        const exon = (this._vcfFilter && (this._vcfFilter.exons !== undefined)) ? this._vcfFilter.exons : false;
        const genes = {
            conjunction: false,
            field: this._vcfFilter ? this._vcfFilter.selectedGenes : []
        };
        const sampleNames = {
            conjunction: false,
            field: this.getVcfSampleNames()
        };
        const variationTypes = {
            conjunction: false,
            field: this._vcfFilter ? this._vcfFilter.selectedVcfTypes : []
        };
        const additionalFilters = this._vcfFilter ? this._vcfFilter.additionalFilters : {};
        const infoFields = this._infoFields || [];
        const orderBy = this._orderByVariations;
        const chromosomeIds = this._vcfFilter.chromosomeIds || [];
        const startIndex = this._vcfFilter.startIndex;
        const endIndex = this._vcfFilter.endIndex;
        const filter = {
            additionalFilters,
            chromosomeIds,
            exon,
            genes,
            infoFields,
            quality,
            variationTypes,
            vcfFileIdsByProject,
            orderBy,
            startIndex,
            endIndex,
            sampleNames
        };

        if (groupByChromosome && groupByChromosome.started) {
            groupByChromosome.started();
        }
        if (groupByType && groupByType.started) {
            groupByType.started();
        }
        if (groupByQuality && groupByQuality.started) {
            groupByQuality.started();
        }

        const errorDescription = (error) => {
            if (error.toLowerCase().startsWith('error:')) {
                error = error.substring('error:'.length);
            }
            if (error.toLowerCase().indexOf('feature index is too large to perform request') >= 0) {
                return 'VCF file too large, unable to show data';
            }
            if (error.toLowerCase().indexOf('variations filter shall be specified') >= 0) {
                return error;
            } else {
                return null;
            }
        };

        this.projectDataService.getVcfGroupData(filter, 'CHROMOSOME_NAME')
            .catch(({message}) => {
                this._variantsGroupByChromosomesError = errorDescription(message);
            })
            .then(data => {
                this._variantsDataByChromosomes = data || [];
                this._isVariantsGroupByChromosomesLoading = false;
                if (groupByChromosome && groupByChromosome.finished) {
                    groupByChromosome.finished();
                }
            });
        this.projectDataService.getVcfGroupData(filter, 'VARIATION_TYPE')
            .catch(({message}) => {
                this._variantsGroupByTypeError = errorDescription(message);
            })
            .then(data => {
                this._variantsDataByType = data || [];
                this._isVariantsGroupByTypeLoading = false;
                if (groupByType && groupByType.finished) {
                    groupByType.finished();
                }
            });
        this.projectDataService.getVcfGroupData(filter, 'QUALITY')
            .catch(({message}) => {
                this._variantsGroupByQualityError = errorDescription(message);
            })
            .then(data => {
                this._variantsDataByQuality = data || [];
                this._isVariantsGroupByQualityLoading = false;
                if (groupByQuality && groupByQuality.finished) {
                    groupByQuality.finished();
                }
            });
    }