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();
}
});
}