_mapVariantSnpData()

in client/client/app/shared/components/ngbVariantDetails/ngbVariantDbSnp/ngbVariantDbSnp.service.js [31:212]


    _mapVariantSnpData(snpData, rsId) {
        let snpCollapsiblePanels = [],
            variationExists = snpData.hasOwnProperty('variation');

        let snpHref = `https://www.ncbi.nlm.nih.gov/projects/SNP/snp_ref.cgi?rs=${rsId.slice(2)}`;//Snp Link
        snpCollapsiblePanels.push({
            title: 'Summary',
            isOpen: true,
            snpHref: snpHref,
            rsId: rsId,
            values: []
        });

        if(snpData.hasOwnProperty('organism_summary')) {
            snpCollapsiblePanels[snpCollapsiblePanels.length - 1].values.push({
                title: 'Organism',
                values: [snpData.organism_summary]
            });
        }
        if (variationExists) {
            if (snpData.variation.hasOwnProperty('genomeLabel')) {
                snpCollapsiblePanels[snpCollapsiblePanels.length - 1].values.push({
                    title: 'Map to Genome Build',
                    values: [snpData.variation.genomeLabel]
                });
            }
            if (snpData.variation.hasOwnProperty('snp_class')) {
                snpCollapsiblePanels[snpCollapsiblePanels.length - 1].values.push({
                    title: 'Variation Class',
                    values: [snpData.variation.snp_class]
                });
            }
        }
        if(snpData.hasOwnProperty('refsnp_alleles')) {
            snpCollapsiblePanels[snpCollapsiblePanels.length - 1].values.push({
                title: 'RefSNP Alleles',
                values: [snpData.refsnp_alleles]
            });
        }
        if (variationExists) {
            if (snpData.variation.hasOwnProperty('clinical_significance')) {

                let clinicalSignificance = {
                    title: 'Clinical Significance',
                    values: [snpData.variation.clinical_significance]
                };

                if(snpData.hasOwnProperty('clinVar') && snpData.clinVar.hasOwnProperty('clinvar_link') && snpData.clinVar.clinvar_link) {
                    clinicalSignificance.hasLink = true;
                    clinicalSignificance.linkHref = snpData.clinVar.clinvar_link;//ClinVar Link
                    clinicalSignificance.linkText = '[ClinVar]';
                }
                snpCollapsiblePanels[snpCollapsiblePanels.length - 1].values.push(clinicalSignificance);
            }

            if(snpData.variation.hasOwnProperty('global_maf')) {
                snpCollapsiblePanels[snpCollapsiblePanels.length - 1].values.push({
                    title: 'MAF/MinorAlleleCount',
                    values: [snpData.variation.global_maf]
                });
            }
        }
        if(snpData.hasOwnProperty('maf_source')) {
            snpCollapsiblePanels[snpCollapsiblePanels.length - 1].values.push({
                title: 'MAF Source',
                values: [snpData.maf_source]
            });
        }
        if (variationExists && snpData.variation.hasOwnProperty('docsum')) {
            let hgvsIndex = snpData.variation.docsum.indexOf('HGVS=');
            if (hgvsIndex + 1) {
                let hgvs = snpData.variation.docsum.slice(hgvsIndex)
                                                    .split(/\|/, 1)[0]
                                                    .slice(5),
                    tmpEl = document.createElement('div');

                tmpEl.innerHTML = hgvs;
                hgvs = tmpEl.childNodes[0].nodeValue;

                snpCollapsiblePanels[snpCollapsiblePanels.length - 1].values.push({
                    title: 'HGVS Names',
                    values: hgvs.split(/,/)
                });
            }
        }

        if(variationExists) {
            let genomeLabelExists = snpData.variation.hasOwnProperty('genomeLabel'),
                chrExists = snpData.variation.hasOwnProperty('chr'),
                chrposExists = snpData.variation.hasOwnProperty('chrpos'),
                contigLabelExists = snpData.variation.hasOwnProperty('contigLabel'),
                contigposExists = snpData.variation.hasOwnProperty('contigpos');

            if (genomeLabelExists || chrExists || chrposExists || contigLabelExists || contigposExists) {
                snpCollapsiblePanels.push({
                    title: 'Primary Assembly Mapping',
                    isOpen: false,
                    values: []
                });
            }

            if(genomeLabelExists) {
                snpCollapsiblePanels[snpCollapsiblePanels.length - 1].values.push({
                    title: 'Assembly',
                    values: [snpData.variation.genomeLabel]
                });
            }
            if(chrExists) {
                snpCollapsiblePanels[snpCollapsiblePanels.length - 1].values.push({
                    title: 'Chr',
                    values: [snpData.variation.chr]
                });
            }
            if(chrposExists) {
                snpCollapsiblePanels[snpCollapsiblePanels.length - 1].values.push({
                    title: 'Chr Pos',
                    values: [snpData.variation.chrpos]
                });
            }
            if(contigLabelExists) {
                snpCollapsiblePanels[snpCollapsiblePanels.length - 1].values.push({
                    title: 'Contig',
                    values: [snpData.variation.contigLabel]
                });
            }
            if(contigposExists) {
                snpCollapsiblePanels[snpCollapsiblePanels.length - 1].values.push({
                    title: 'Contig Pos',
                    values: [snpData.variation.contigpos]
                });
            }
        }


        if (snpData.hasOwnProperty('ref_seq_gene_mapping')) {
            let refSeqGeneExists = snpData.ref_seq_gene_mapping.hasOwnProperty('refSeqGene'),
                geneExists = snpData.ref_seq_gene_mapping.hasOwnProperty('gene'),
                positionExists = snpData.ref_seq_gene_mapping.hasOwnProperty('position'),
                alleleExists = snpData.ref_seq_gene_mapping.hasOwnProperty('allele');

            if (refSeqGeneExists || geneExists || positionExists || alleleExists) {
                snpCollapsiblePanels.push({
                    title: 'RefSeq Gene Mapping',
                    isOpen: false,
                    values: []
                });
                if (refSeqGeneExists) {
                    snpCollapsiblePanels[snpCollapsiblePanels.length - 1].values.push({
                        title: 'RefSeqGene',
                        values: [snpData.ref_seq_gene_mapping.refSeqGene]
                    });
                }
                if (geneExists) {
                    snpCollapsiblePanels[snpCollapsiblePanels.length - 1].values.push({
                        title: 'Gene:ID',
                        values: [snpData.ref_seq_gene_mapping.gene]
                    });
                }
                if (positionExists) {
                    snpCollapsiblePanels[snpCollapsiblePanels.length - 1].values.push({
                        title: 'Position',
                        values: [snpData.ref_seq_gene_mapping.position]
                    });
                }
                if (alleleExists) {
                    snpCollapsiblePanels[snpCollapsiblePanels.length - 1].values.push({
                        title: 'Allele',
                        values: [snpData.ref_seq_gene_mapping.allele]
                    });
                }
            }
        }


        this.isLoading = false;
        this.hasError = false;


        return {
            snpCollapsiblePanels: snpCollapsiblePanels
        }
    }