예제 #1
0
        /// <summary>
        /// writes the transcript to the binary writer
        /// </summary>
        public void Write(IExtendedBinaryWriter writer, Dictionary <IGene, int> geneIndices,
                          Dictionary <ITranscriptRegion, int> transcriptRegionIndices, Dictionary <IInterval, int> microRnaIndices,
                          Dictionary <string, int> peptideIndices)
        {
            // transcript
            writer.WriteOpt(Chromosome.Index);
            writer.WriteOpt(Start);
            writer.WriteOpt(End);
            // ReSharper disable once ImpureMethodCallOnReadonlyValueField
            Id.Write(writer);

            // gene
            writer.WriteOpt(GetIndex(Gene, geneIndices));

            // encoded data
            var encoded = EncodedTranscriptData.GetEncodedTranscriptData(BioType, CdsStartNotFound, CdsEndNotFound,
                                                                         Source, IsCanonical, SiftIndex != -1, PolyPhenIndex != -1, MicroRnas != null, RnaEdits != null,
                                                                         Selenocysteines != null, TranscriptRegions != null, Translation != null, StartExonPhase);

            encoded.Write(writer);

            // transcript regions
            if (encoded.HasTranscriptRegions)
            {
                WriteIndices(writer, TranscriptRegions, transcriptRegionIndices);
            }
            writer.WriteOpt(NumExons);

            // protein function predictions
            if (encoded.HasSift)
            {
                writer.WriteOpt(SiftIndex);
            }
            if (encoded.HasPolyPhen)
            {
                writer.WriteOpt(PolyPhenIndex);
            }

            // translation
            if (encoded.HasTranslation)
            {
                // ReSharper disable once PossibleNullReferenceException
                var peptideIndex = GetIndex(Translation.PeptideSeq, peptideIndices);
                Translation.Write(writer, peptideIndex);
            }

            // attributes
            if (encoded.HasMirnas)
            {
                WriteIndices(writer, MicroRnas, microRnaIndices);
            }
            if (encoded.HasRnaEdits)
            {
                WriteItems(writer, RnaEdits, (x, y) => x.Write(y));
            }
            if (encoded.HasSelenocysteines)
            {
                WriteItems(writer, Selenocysteines, (x, y) => y.WriteOpt(x));
            }
        }
예제 #2
0
 public void Write(IExtendedBinaryWriter writer)
 {
     writer.WriteOptAscii(Name);
     writer.WriteOptAscii(Version);
     writer.WriteOpt(ReleaseDateTicks);
     writer.WriteOptAscii(Description);
 }
예제 #3
0
        public void Write(IExtendedBinaryWriter writer)
        {
            if (_currentNode != null)
            {
                _nodes.Add(_currentNode);
            }

            writer.WriteOptAscii(ReferenceSequence);
            writer.WriteOpt(_nodes.Count);
            foreach (var node in _nodes)
            {
                node.Write(writer);
            }

            writer.WriteOpt(_largeVariants.Count);
            if (_largeVariants.Count == 0)
            {
                return;
            }

            foreach (var interval in _largeVariants.OrderBy(x => x.Begin).ThenBy(x => x.End))
            {
                WriteInterval(interval, writer);
            }
        }
예제 #4
0
        public void Write(IExtendedBinaryWriter writer)
        {
            writer.Write(KeyName);
            writer.Write(VcfkeyName);
            writer.Write(AltAllele);

            byte flags = 0;

            if (MatchByAllele)
            {
                flags |= 1;
            }
            if (IsArray)
            {
                flags |= 2;
            }
            writer.Write(flags);

            writer.Write(VcfString);

            writer.WriteOpt(JsonStrings.Length);
            foreach (var jsonString in JsonStrings)
            {
                writer.Write(jsonString);
            }
        }
예제 #5
0
        public void Write(IExtendedBinaryWriter writer)
        {
            writer.WriteOptAscii(Id);
            writer.WriteOptAscii(AnnotationType);
            writer.WriteOptAscii(SaAltAllele);
            writer.Write(IsPositional);

            if (StringFields != null)
            {
                writer.WriteOpt(StringFields.Count);
                foreach (var stringField in StringFields)
                {
                    writer.WriteOptAscii(stringField.Key);
                    writer.WriteOptAscii(stringField.Value);
                }
            }
            else
            {
                writer.WriteOpt(0);
            }

            if (BooleanFields != null)
            {
                writer.WriteOpt(BooleanFields.Count);
                foreach (var booleanField in BooleanFields)
                {
                    writer.WriteOptAscii(booleanField);
                }
            }
            else
            {
                writer.WriteOpt(0);
            }
        }
예제 #6
0
 private static void WriteIndices <T>(IExtendedBinaryWriter writer, T[] items, IReadOnlyDictionary <T, int> indices)
 {
     writer.WriteOpt(items.Length);
     foreach (var item in items)
     {
         writer.WriteOpt(GetIndex(item, indices));
     }
 }
예제 #7
0
 public void Write(IExtendedBinaryWriter writer)
 {
     writer.WriteOpt(Start);
     writer.WriteOpt(End);
     writer.WriteOpt(CdnaStart);
     writer.WriteOpt(CdnaEnd);
     writer.WriteOpt(Length);
 }
예제 #8
0
 private static void WriteItems <T>(IExtendedBinaryWriter writer, T[] items, Action <T, IExtendedBinaryWriter> writeAction)
 {
     writer.WriteOpt(items.Length);
     foreach (var item in items)
     {
         writeAction(item, writer);
     }
 }
예제 #9
0
 public void Write(IExtendedBinaryWriter writer)
 {
     writer.Write((byte)Type);
     writer.WriteOpt(Id);
     writer.WriteOpt(Start);
     writer.WriteOpt(End);
     writer.WriteOpt(CdnaStart);
     writer.WriteOpt(CdnaEnd);
 }
예제 #10
0
 public void Write(IExtendedBinaryWriter writer)
 {
     writer.WriteOptAscii(GlobalMajorAllele);
     writer.WriteOpt(DataSources.Length);
     foreach (var dataSource in DataSources)
     {
         dataSource.Write(writer);
     }
 }
예제 #11
0
 public void Write(IExtendedBinaryWriter writer)
 {
     writer.Write(GeneName);
     writer.WriteOpt(Annotations.Length);
     for (int i = 0; i < Annotations.Length; i++)
     {
         Annotations[i].Write(writer);
     }
 }
예제 #12
0
 public void Write(IExtendedBinaryWriter writer)
 {
     writer.WriteOpt(Chromosome.Index);
     writer.WriteOpt(Start);
     writer.WriteOpt(End);
     writer.Write((byte)Type);
     // ReSharper disable once ImpureMethodCallOnReadonlyValueField
     Id.Write(writer);
 }
예제 #13
0
 public void Write(IExtendedBinaryWriter writer)
 {
     writer.Write(DataSource);
     writer.Write(IsArray);
     writer.WriteOpt(JsonStrings.Length);
     foreach (var jsonString in JsonStrings)
     {
         writer.Write(jsonString);
     }
 }
예제 #14
0
        private void WriteMaskedEntries(IExtendedBinaryWriter writer)
        {
            writer.WriteOpt(_maskedEntries.Length);

            foreach (var maskedEntry in _maskedEntries)
            {
                writer.WriteOpt(maskedEntry.Begin);
                writer.WriteOpt(maskedEntry.End);
            }
        }
예제 #15
0
        private void WriteCytogeneticBands(IExtendedBinaryWriter writer)
        {
            writer.WriteOpt(_cytogeneticBands.Length);

            foreach (var band in _cytogeneticBands)
            {
                writer.WriteOpt(band.Begin);
                writer.WriteOpt(band.End);
                writer.WriteOptAscii(band.Name);
            }
        }
예제 #16
0
 public void Write(IExtendedBinaryWriter writer)
 {
     writer.WriteOpt(Chromosome.Index);
     writer.WriteOpt(Start);
     writer.WriteOpt(End);
     writer.Write(OnReverseStrand);
     writer.WriteOptAscii(Symbol);
     writer.WriteOpt(HgncId);
     // ReSharper disable ImpureMethodCallOnReadonlyValueField
     EntrezGeneId.Write(writer);
     EnsemblId.Write(writer);
 }
예제 #17
0
        internal static void WriteItems <T>(IExtendedBinaryWriter writer, IReadOnlyCollection <T> items, Action <T> writeMethod)
        {
            if (items == null)
            {
                writer.WriteOpt(0);
            }
            else
            {
                writer.WriteOpt(items.Count);
                foreach (var item in items)
                {
                    writeMethod(item);
                }
            }

            writer.Write(CacheConstants.GuardInt);
        }
예제 #18
0
        private void WriteBlockOffsets(IExtendedBinaryWriter writer)
        {
            writer.WriteOpt(_blockPositions.Count);

            int  oldPosition    = 0;
            long oldBlockOffset = 0;

            foreach (var offset in _blockPositions.OrderBy(x => x.Position))
            {
                int  deltaPosition    = offset.Position - oldPosition;
                long deltaBlockOffset = offset.Offset - oldBlockOffset;

                writer.WriteOpt(deltaPosition);
                writer.WriteOpt(deltaBlockOffset);

                oldPosition    = offset.Position;
                oldBlockOffset = offset.Offset;
            }
        }
예제 #19
0
        /// <summary>
        /// writes the cytogenetic bands to the file
        /// </summary>
        public void Write(IExtendedBinaryWriter writer)
        {
            var numReferences = _cytogeneticBands.Length;

            writer.WriteOpt(numReferences);

            for (var refIndex = 0; refIndex < numReferences; refIndex++)
            {
                var numRefEntries = _cytogeneticBands[refIndex].Length;
                writer.WriteOpt(numRefEntries);

                foreach (var band in _cytogeneticBands[refIndex])
                {
                    writer.WriteOpt(band.Begin);
                    writer.WriteOpt(band.End);
                    writer.WriteOptAscii(band.Name);
                }
            }
        }
예제 #20
0
        private static void WriteIntervals <T>(IExtendedBinaryWriter writer, IReadOnlyCollection <IntervalArray <T> > intervalArrays,
                                               Action <T> writeMethod)
        {
            writer.WriteOpt(intervalArrays.Count);

            foreach (var intervalArray in intervalArrays)
            {
                if (intervalArray == null)
                {
                    writer.WriteOpt(0);
                    continue;
                }

                writer.WriteOpt(intervalArray.Array.Length);
                foreach (var interval in intervalArray.Array)
                {
                    writeMethod(interval.Value);
                }
            }

            writer.Write(CacheConstants.GuardInt);
        }
예제 #21
0
 private void WriteBuffer(IExtendedBinaryWriter writer)
 {
     writer.WriteOpt(_buffer.Length);
     writer.Write(_buffer);
 }
예제 #22
0
 public void Write(IExtendedBinaryWriter writer)
 {
     writer.Write((byte)_id);
     writer.Write(_version);
     writer.Write(_info);
 }
예제 #23
0
 private void WriteMetadata(IExtendedBinaryWriter writer)
 {
     writer.WriteOpt(_sequenceOffset);
     writer.WriteOpt(_numBases);
 }
예제 #24
0
 public void Write(IExtendedBinaryWriter writer)
 {
     writer.WriteOpt(Start);
     writer.WriteOpt(End);
     writer.WriteOptAscii(Bases);
 }
예제 #25
0
 internal void Write(IExtendedBinaryWriter writer)
 {
     writer.Write(_info);
     writer.Write(_contents);
 }
예제 #26
0
 public void Write(IExtendedBinaryWriter writer) => throw new System.NotImplementedException();
예제 #27
0
 public void Write(IExtendedBinaryWriter writer, int peptideIndex)
 {
     CodingRegion.Write(writer);
     ProteinId.Write(writer);
     writer.WriteOpt(peptideIndex);
 }
예제 #28
0
 private static void WriteInterval(Interval <long> interval, IExtendedBinaryWriter writer)
 {
     writer.WriteOpt(interval.Begin);
     writer.WriteOpt(interval.End);
     writer.WriteOpt(interval.Value);
 }
예제 #29
0
 public void Write(IExtendedBinaryWriter writer)
 {
     writer.WriteOpt(_start);
     writer.WriteOpt(_end - _start);
     writer.WriteOpt(FileLocation);
 }
예제 #30
0
 public static void Write(this IInterval interval, IExtendedBinaryWriter writer)
 {
     writer.WriteOpt(interval.Start);
     writer.WriteOpt(interval.End);
 }