Example #1
0
        public override SupplementaryDataItem SetSupplementaryAnnotations(SupplementaryPositionCreator sa, string refBases = null)
        {
            // check if the ref allele matches the refBases as a prefix
            if (!SupplementaryAnnotationUtilities.ValidateRefAllele(ReferenceAllele, refBases))
            {
                return(null); //the ref allele for this entry did not match the reference bases.
            }

            var newAlleles = SupplementaryAnnotationUtilities.GetReducedAlleles(Start, ReferenceAllele, AlternateAllele);

            var newStart     = newAlleles.Item1;
            var newRefAllele = newAlleles.Item2;
            var newAltAllele = newAlleles.Item3;

            if (newRefAllele != ReferenceAllele)
            {
                return(new ExacItem(Chromosome, newStart, newRefAllele, newAltAllele, Coverage,
                                    AllAlleleNumber, AfrAlleleNumber, AmrAlleleNumber, EasAlleleNumber, FinAlleleNumber, NfeAlleleNumber, OthAlleleNumber, SasAlleleNumber,
                                    AllAlleleCount, AfrAlleleCount, AmrAlleleCount, EasAlleleCount, FinAlleleCount, NfeAlleleCount, OthAlleleCount, SasAlleleCount));
            }

            SetSaFields(sa, newAltAllele);

            return(null);
        }
Example #2
0
        /// <summary>
        /// Adds the ClinVar items in this object to the supplementary annotation object
        /// </summary>
        public override SupplementaryDataItem SetSupplementaryAnnotations(SupplementaryPositionCreator saCreator, string refBases = null)
        {
            // check if the ref allele matches the refBases as a prefix
            if (!SupplementaryAnnotationUtilities.ValidateRefAllele(ReferenceAllele, refBases))
            {
                return(null);                //the ref allele for this entry did not match the reference bases.
            }

            // for insertions and deletions, the alternate allele has to be modified to conform with VEP convension
            var newAlleles = SupplementaryAnnotationUtilities.GetReducedAlleles(Start, ReferenceAllele, AltAllele);

            var newStart     = newAlleles.Item1;
            var newRefAllele = newAlleles.Item2;
            var newAltAllele = newAlleles.Item3;

            if (newRefAllele != ReferenceAllele)
            {
                var additionalItem = new ClinVarItem(Chromosome, newStart, _alleleOrigins, newAltAllele, ID, ReviewStatusString, _medgenIds, _omimIds, _orphanetIds, _phenotypes, newRefAllele, Significance, _pubmedIds, LastUpdatedDate);

                return(additionalItem);
            }

            saCreator.SaPosition.ClinVarItems.Add(new ClinVarItem(Chromosome, newStart, _alleleOrigins, newAltAllele, ID, ReviewStatusString, _medgenIds, _omimIds, _orphanetIds, _phenotypes, newRefAllele, Significance, _pubmedIds, LastUpdatedDate));

            return(null);
        }
Example #3
0
        public override SupplementaryDataItem SetSupplementaryAnnotations(SupplementaryPositionCreator sa, string refBases = null)
        {
            // check if the ref allele matches the refBases as a prefix
            if (!SupplementaryAnnotationUtilities.ValidateRefAllele(ReferenceAllele, refBases))
            {
                return(null);                //the ref allele for this entry did not match the reference bases.
            }

            var newAlleles = SupplementaryAnnotationUtilities.GetReducedAlleles(Start, ReferenceAllele, AlternateAllele);

            var newStart     = newAlleles.Item1;
            var newRefAllele = newAlleles.Item2;
            var newAltAllele = newAlleles.Item3;

            if (newRefAllele != ReferenceAllele)
            {
                return(new DbSnpItem(Chromosome,
                                     newStart,
                                     RsId,
                                     newRefAllele,
                                     RefAlleleFreq,
                                     newAltAllele,
                                     AltAlleleFreq,
                                     _infoField));   // we need to keep the vcfline for the sake of conflict resolution
            }
            // it's a SNV or MNV at this position
            SetSaFields(sa, newAltAllele);

            return(null);
        }
Example #4
0
        public override SupplementaryDataItem SetSupplementaryAnnotations(SupplementaryPositionCreator saCreator, string refBases = null)
        {
            // check if the ref allele matches the refBases as a prefix
            if (!SupplementaryAnnotationUtilities.ValidateRefAllele(RefAllele, refBases))
            {
                return(null);                //the ref allele for this entry did not match the reference bases.
            }

            var newAlleles = SupplementaryAnnotationUtilities.GetReducedAlleles(Start, RefAllele, AltAllele);

            var newStart     = newAlleles.Item1;
            var newRefAllele = newAlleles.Item2;
            var newAltAllele = newAlleles.Item3;

            if (newRefAllele != RefAllele)
            {
                return(new CosmicItem(Chromosome, newStart, ID, newRefAllele, newAltAllele, Gene, Studies, SampleCount));
            }

            var newRefAlleleParsed = string.IsNullOrEmpty(newRefAllele) ? "-" : newRefAllele;
            var newItem            = new CosmicItem(Chromosome, Start, ID, newRefAlleleParsed, newAltAllele, Gene, Studies, SampleCount);

            newItem.AddCosmicToSa(saCreator);

            return(null);
        }
Example #5
0
        private void SetSaFields(SupplementaryPositionCreator saCreator, string newAltAllele)
        {
            var annotation = new ExacAnnotation
            {
                ExacCoverage = Coverage,

                ExacAllAn = AllAlleleNumber,
                ExacAfrAn = AfrAlleleNumber,
                ExacAmrAn = AmrAlleleNumber,
                ExacEasAn = EasAlleleNumber,
                ExacFinAn = FinAlleleNumber,
                ExacNfeAn = NfeAlleleNumber,
                ExacOthAn = OthAlleleNumber,
                ExacSasAn = SasAlleleNumber,

                ExacAllAc = AllAlleleCount,
                ExacAfrAc = AfrAlleleCount,
                ExacAmrAc = AmrAlleleCount,
                ExacEasAc = EasAlleleCount,
                ExacFinAc = FinAlleleCount,
                ExacNfeAc = NfeAlleleCount,
                ExacOthAc = OthAlleleCount,
                ExacSasAc = SasAlleleCount
            };

            saCreator.AddExternalDataToAsa(DataSourceCommon.DataSource.Exac, newAltAllele, annotation);
        }
Example #6
0
        public override SupplementaryDataItem SetSupplementaryAnnotations(SupplementaryPositionCreator sa, string refBases = null)
        {
            // check if the ref allele matches the refBases as a prefix
            if (!SupplementaryAnnotationUtilities.ValidateRefAllele(ReferenceAllele, refBases))
            {
                return(null); //the ref allele for this entry did not match the reference bases.
            }
            // if this is a SV,
            if (IsInterval)
            {
                return(null);
            }

            var newAlleles = SupplementaryAnnotationUtilities.GetReducedAlleles(Start, ReferenceAllele, AlternateAllele);

            var newStart     = newAlleles.Item1;
            var newRefAllele = newAlleles.Item2;
            var newAltAllele = newAlleles.Item3;

            if (newRefAllele != ReferenceAllele)
            {
                return(new OneKGenItem(Chromosome, newStart, Id, newRefAllele, newAltAllele, AncestralAllele,
                                       AllAlleleCount, AfrAlleleCount, AmrAlleleCount, EurAlleleCount, EasAlleleCount, SasAlleleCount,
                                       AllAlleleNumber, AfrAlleleNumber, AmrAlleleNumber, EurAlleleNumber, EasAlleleNumber, SasAlleleNumber,
                                       SvType, SvEnd, CiPos, CiEnd));
            }

            SetSaFields(sa, newAltAllele);

            return(null);
        }
Example #7
0
        private void SetSaFields(SupplementaryPositionCreator saCreator, string newAltAllele)
        {
            var annotation = new EvsAnnotation
            {
                EvsAll        = AllFreq,
                EvsAfr        = AfrFreq,
                EvsEur        = EurFreq,
                EvsCoverage   = Coverage,
                NumEvsSamples = NumSamples
            };

            saCreator.AddExternalDataToAsa(DataSourceCommon.DataSource.Evs, newAltAllele, annotation);
        }
        public void MergeSaCreator(SupplementaryPositionCreator other)
        {
            if (ReferencePosition != other.ReferencePosition || RefSeqName != other.RefSeqName)
            {
                return;
            }

            // first the allele specific annotations are merged
            MergeAlleleSpecificAnnotations(other);


            // merge positional annotations
            MergePositionalAnnotations(other);

            // merging custom annotations: they cannot be categorized into positional or otherwise since that is only known from each customItem's IsAlleleSpecificFlag
            SaPosition.CustomItems.AddRange(other.SaPosition.CustomItems);
        }
        private void MergeAlleleSpecificAnnotations(SupplementaryPositionCreator other)
        {
            foreach (var otherAlleleAnnotation in other.SaPosition.AlleleSpecificAnnotations)
            {
                var otherAsa = otherAlleleAnnotation.Value;

                AlleleSpecificAnnotation asa;
                if (SaPosition.AlleleSpecificAnnotations.TryGetValue(otherAlleleAnnotation.Key, out asa))
                {
                    asa.MergeAlleleSpecificAnnotation(otherAsa);
                }
                else
                {
                    // this is for a new alternate allele
                    SaPosition.AlleleSpecificAnnotations[otherAlleleAnnotation.Key] = otherAsa;
                }
            }
        }
        private void MergePositionalAnnotations(SupplementaryPositionCreator other)
        {
            //TODO: figure out if this part is necessary, maybe we can calculate at the last step
            if (!other.RefAlleleFreq.Equals(Double.MinValue))
            {
                RefAllele     = other.RefAllele;
                RefAlleleFreq = other.RefAlleleFreq;
            }


            // a cosmic id may have multiple entries each for a study. So this needs special handling
            foreach (var cosmicItem in other.SaPosition.CosmicItems)
            {
                cosmicItem.AddCosmicToSa(this);
            }

            SaPosition.ClinVarItems.AddRange(other.SaPosition.ClinVarItems);
        }
Example #11
0
        private void SetSaFields(SupplementaryPositionCreator saCreator, string newAltAllele)
        {
            if (!RefAlleleFreq.Equals(double.MinValue))
            {
                saCreator.RefAllele     = ReferenceAllele;
                saCreator.RefAlleleFreq = RefAlleleFreq;
            }
            //var sa = saCreator.SaPosition;

            //set asa field
            var annotation = new DbSnpAnnotation
            {
                DbSnp = new List <long> {
                    RsId
                },
                AltAlleleFreq = AltAlleleFreq
            };

            saCreator.AddExternalDataToAsa(DataSourceCommon.DataSource.DbSnp, newAltAllele, annotation);
        }
Example #12
0
        public void AddCosmicToSa(SupplementaryPositionCreator saCreator)
        {
            var sa    = saCreator.SaPosition;
            var index = sa.CosmicItems.IndexOf(this);

            if (index == -1)
            {
                sa.CosmicItems.Add(this);
                return;
            }

            //get the existing cosmic item in dictionary
            if (sa.CosmicItems[index].Studies == null)
            {
                sa.CosmicItems[index].Studies = Studies;
                return;
            }

            foreach (var study in Studies)
            {
                sa.CosmicItems[index].Studies.Add(study);
            }
        }
Example #13
0
        public override SupplementaryDataItem SetSupplementaryAnnotations(SupplementaryPositionCreator sa, string refBases = null)
        {
            // check if the ref allele matches the refBases as a prefix
            if (!SupplementaryAnnotationUtilities.ValidateRefAllele(ReferenceAllele, refBases))
            {
                return(null);                //the ref allele for this entry did not match the reference bases.
            }

            var newAlleles = SupplementaryAnnotationUtilities.GetReducedAlleles(Start, ReferenceAllele, AlternateAllele);

            var newStart     = newAlleles.Item1;
            var newRefAllele = newAlleles.Item2;
            var newAltAllele = newAlleles.Item3;

            if (newRefAllele != ReferenceAllele)
            {
                return(new EvsItem(Chromosome, newStart, RsId, newRefAllele, newAltAllele, AllFreq, AfrFreq, EurFreq, Coverage, NumSamples));
            }

            SetSaFields(sa, newAltAllele);

            return(null);
        }
Example #14
0
        private void SetSaFields(SupplementaryPositionCreator saCreator, string altAllele)
        {
            var annotation = new OneKGenAnnotation
            {
                AncestralAllele = AncestralAllele,

                OneKgAllAn = AllAlleleNumber,
                OneKgAfrAn = AfrAlleleNumber,
                OneKgAmrAn = AmrAlleleNumber,
                OneKgEurAn = EurAlleleNumber,
                OneKgEasAn = EasAlleleNumber,
                OneKgSasAn = SasAlleleNumber,

                OneKgAllAc = AllAlleleCount,
                OneKgAfrAc = AfrAlleleCount,
                OneKgAmrAc = AmrAlleleCount,
                OneKgEurAc = EurAlleleCount,
                OneKgEasAc = EasAlleleCount,
                OneKgSasAc = SasAlleleCount
            };

            saCreator.AddExternalDataToAsa(DataSourceCommon.DataSource.OneKg, altAllele, annotation);
        }
Example #15
0
        public override SupplementaryDataItem SetSupplementaryAnnotations(SupplementaryPositionCreator saCreator, string refBases = null)
        {
            // check if the ref allele matches the refBases as a prefix
            if (!SupplementaryAnnotationUtilities.ValidateRefAllele(RefAllele, refBases))
            {
                return(null); //the ref allele for this entry did not match the reference bases.
            }

            var newAlleles = SupplementaryAnnotationUtilities.GetReducedAlleles(Start, RefAllele, AltAllele);

            var newStart     = newAlleles.Item1;
            var newRefAllele = newAlleles.Item2;
            var newAltAllele = newAlleles.Item3;

            if (newRefAllele != RefAllele)
            {
                return(new CustomItem(Chromosome, newStart, newRefAllele, newAltAllele, AnnotationType, Id, IsPositional, StringFields, BooleanFields));
            }
            //for ins, del, indel without padding base, the altAllele will change even though the ref does not.
            saCreator.SaPosition.CustomItems.Add(new CustomItem(Chromosome, newStart, newRefAllele, newAltAllele, AnnotationType, Id, IsPositional, StringFields, BooleanFields));

            return(null);
        }
 public abstract SupplementaryDataItem SetSupplementaryAnnotations(SupplementaryPositionCreator sa, string refBases = null);
Example #17
0
 public override SupplementaryDataItem SetSupplementaryAnnotations(SupplementaryPositionCreator sa, string refBases = null)
 {
     return(null);
 }
Example #18
0
 public override SupplementaryDataItem SetSupplementaryAnnotations(SupplementaryPositionCreator sa, string refBases = null)
 {
     throw new NotImplementedException();
 }