Exemple #1
0
        //constructors
        public CosmicItem(ExtendedBinaryReader reader)
        {
            if (reader == null)
            {
                return;
            }

            ID          = reader.ReadAsciiString();
            SaAltAllele = reader.ReadAsciiString();
            AltAllele   = SupplementaryAnnotationUtilities.ReverseSaReducedAllele(SaAltAllele);
            RefAllele   = reader.ReadAsciiString();
            Gene        = reader.ReadAsciiString();
            SampleCount = reader.ReadOptNullableInt32();

            var countStudy = reader.ReadOptInt32();

            if (countStudy > 0)
            {
                Studies = new HashSet <CosmicStudy>();
            }

            for (var i = 0; i < countStudy; i++)
            {
                Studies.Add(new CosmicStudy(reader));
            }
        }
Exemple #2
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);
        }
Exemple #3
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);
        }
Exemple #4
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);
        }
Exemple #5
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);
        }
Exemple #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.
            }

            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);
        }
Exemple #7
0
        public void Write(ExtendedBinaryWriter writer)
        {
            writer.WriteOptArray(_alleleOrigins?.Distinct().ToArray(), writer.WriteOptAscii);
            writer.WriteOptAscii(SaAltAllele);
            writer.WriteOptAscii(ReferenceAllele);
            writer.WriteOptAscii(ID);
            writer.Write((byte)ReviewStatus);
            writer.WriteOptAscii(IsAlleleSpecific);
            writer.WriteOptArray(_medgenIds?.Distinct().ToArray(), writer.WriteOptAscii);
            writer.WriteOptArray(_omimIds?.Distinct().ToArray(), writer.WriteOptAscii);
            writer.WriteOptArray(_orphanetIds?.Distinct().ToArray(), writer.WriteOptAscii);

            writer.WriteOptArray(SupplementaryAnnotationUtilities.ConvertMixedFormatStrings(_phenotypes)?.Distinct().ToArray(), writer.WriteOptUtf8);
            writer.WriteOptAscii(Significance);

            writer.WriteOpt(LastUpdatedDate);
            writer.WriteOptArray(_pubmedIds.ToArray(), writer.WriteOpt);
        }
Exemple #8
0
        public ClinVarItem(ExtendedBinaryReader reader)
        {
            _alleleOrigins = reader.ReadOptArray(reader.ReadAsciiString)?.ToList();
            SaAltAllele    = reader.ReadAsciiString();
            AltAllele      = SaAltAllele != null?SupplementaryAnnotationUtilities.ReverseSaReducedAllele(SaAltAllele) : "";                 // A

            ReferenceAllele = reader.ReadAsciiString();
            ID               = reader.ReadAsciiString();
            ReviewStatus     = (ReviewStatusEnum)reader.ReadByte();
            IsAlleleSpecific = reader.ReadAsciiString();
            _medgenIds       = reader.ReadOptArray(reader.ReadAsciiString)?.ToList();
            _omimIds         = reader.ReadOptArray(reader.ReadAsciiString)?.ToList();
            _orphanetIds     = reader.ReadOptArray(reader.ReadAsciiString)?.ToList();
            _phenotypes      = reader.ReadOptArray(reader.ReadUtf8String)?.ToList();
            Significance     = reader.ReadAsciiString();
            LastUpdatedDate  = reader.ReadOptInt64();
            _pubmedIds       = reader.ReadOptArray(reader.ReadOptInt64)?.ToList();
        }
Exemple #9
0
        public CustomItem(ExtendedBinaryReader reader)
        {
            Id             = reader.ReadAsciiString();
            AnnotationType = reader.ReadAsciiString();
            SaAltAllele    = reader.ReadAsciiString();
            AltAllele      = SupplementaryAnnotationUtilities.ReverseSaReducedAllele(SaAltAllele);
            IsPositional   = reader.ReadBoolean();

            var numStringFields = reader.ReadOptInt32();

            if (numStringFields > 0)
            {
                StringFields = new Dictionary <string, string>();

                for (var i = 0; i < numStringFields; i++)
                {
                    var key   = reader.ReadAsciiString();
                    var value = reader.ReadAsciiString();
                    StringFields[key] = value;
                }
            }
            else
            {
                StringFields = null;
            }

            var numBoolFields = reader.ReadOptInt32();

            if (numBoolFields > 0)
            {
                BooleanFields = new List <string>();

                for (var i = 0; i < numBoolFields; i++)
                {
                    BooleanFields.Add(reader.ReadAsciiString());
                }
            }
            else
            {
                BooleanFields = null;
            }
        }
Exemple #10
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);
        }
Exemple #11
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);
        }