コード例 #1
0
        private void AnnotateAltAllele(VariantFeature variant, VariantAlternateAllele altAllele, Transcript transcript)
        {
            // handle upstream or downstream transcripts
            if (!Overlap.Partial(transcript.Start, transcript.End, altAllele.Start, altAllele.End))
            {
                return;
            }

            var ta = new TranscriptAnnotation
            {
                AlternateAllele         = altAllele,
                HasValidCdnaCodingStart = false,
                HasValidCdsStart        = false
            };

            MapCdnaCoordinates(transcript, ta, altAllele);
            _pianoVariant.CreateAnnotationObject(transcript, altAllele);

            GetCodingAnnotations(transcript, ta, _compressedSequence);
            var consequence = new Consequences(new VariantEffect(ta, transcript, variant.InternalCopyNumberType));

            consequence.DetermineVariantEffects(variant.InternalCopyNumberType);

            _pianoVariant.FinalizeAndAddAnnotationObject(transcript, ta, consequence.GetConsequenceStrings());
        }
コード例 #2
0
ファイル: GeneMerger.cs プロジェクト: YuJiang01/Nirvana
        private List <MutableGene> GetValidGenes(MutableGene seedGene, List <MutableGene> genes, out int start,
                                                 out int end)
        {
            var validGenes = new List <MutableGene>();

            start = seedGene.Start;
            end   = seedGene.End;

            foreach (var gene in genes)
            {
                if (gene.Invalid || seedGene.OnReverseStrand != gene.OnReverseStrand ||
                    seedGene.ReferenceIndex != gene.ReferenceIndex || !Overlap.Partial(start, end, gene.Start, gene.End))
                {
                    continue;
                }

                validGenes.Add(gene);

                if (gene.Start < start)
                {
                    start = gene.Start;
                }
                if (gene.End > end)
                {
                    end = gene.End;
                }
            }

            return(validGenes);
        }
コード例 #3
0
        private static MutableGene GetFlattenedGene(MutableGene seedGene, List <MutableGene> genesWithSameGeneId,
                                                    int overlapStart, int overlapEnd)
        {
            var  flattenedGene = MutableGene.Clone(seedGene);
            bool useOverlap    = overlapStart != -1 && overlapEnd != -1;

            foreach (var gene in genesWithSameGeneId)
            {
                if (gene.Invalid || flattenedGene.OnReverseStrand != gene.OnReverseStrand ||
                    flattenedGene.ReferenceIndex != gene.ReferenceIndex)
                {
                    continue;
                }

                if (useOverlap && !Overlap.Partial(overlapStart, overlapEnd, gene.Start, gene.End))
                {
                    continue;
                }
                if (!useOverlap && !Overlap.Partial(flattenedGene.Start, flattenedGene.End, gene.Start, gene.End))
                {
                    continue;
                }

                UpdateCoordinates(gene, flattenedGene);
                gene.Invalid = true;
            }

            return(flattenedGene);
        }
コード例 #4
0
ファイル: GffCreator.cs プロジェクト: YuJiang01/Nirvana
 private static bool HasCds(CdnaCoordinateMap exon, int codingRegionStart, int codingRegionEnd)
 {
     if (codingRegionStart == -1 || codingRegionEnd == -1)
     {
         return(false);
     }
     return(Overlap.Partial(exon.GenomicStart, exon.GenomicEnd, codingRegionStart, codingRegionEnd));
 }
コード例 #5
0
        /// <summary>
        /// constructor
        /// </summary>
        public FeatureVariantEffects(ReferenceAnnotationInterval feature, VariantType vt, int refBegin, int refEnd, bool isSV, VariantType internalCopyNumberType)
        {
            _isSV = isSV;

            _completelyOverlaps = Overlap.Complete(feature.Start, feature.End, refBegin, refEnd);
            _overlaps           = Overlap.Partial(feature.Start, feature.End, refBegin, refEnd);
            _completelyWithin   = refBegin >= feature.Start && refEnd <= feature.End;

            _lossOrDeletion    = vt == VariantType.copy_number_loss || vt == VariantType.deletion || internalCopyNumberType == VariantType.copy_number_loss;
            _gainOrDuplication = vt == VariantType.copy_number_gain || vt == VariantType.duplication ||
                                 vt == VariantType.tandem_duplication || internalCopyNumberType == VariantType.copy_number_gain;
            _isInsertionDeletion = vt == VariantType.indel;
            _isInsertion         = vt == VariantType.insertion;
        }
コード例 #6
0
ファイル: AlternateAllele.cs プロジェクト: YuJiang01/Nirvana
        public void AddCustomIntervals(List <ICustomInterval> overlappingCustomIntervals)
        {
            if (overlappingCustomIntervals == null)
            {
                return;
            }

            foreach (var customInterval in overlappingCustomIntervals)
            {
                if (Overlap.Partial(this, customInterval))
                {
                    CustomIntervals.Add(customInterval);
                }
            }
        }
コード例 #7
0
        public int Extract()
        {
            var count    = 0;
            var interval = _reader.GetNextCustomInterval();

            while (interval != null)
            {
                if (Overlap.Partial(interval.Start, interval.End, _begin, _end))
                {
                    _writer.WriteInterval(interval);
                    count++;
                }

                interval = _reader.GetNextCustomInterval();
            }
            _writer.Dispose();
            return(count);
        }