Пример #1
0
        public void LoopbackTest()
        {
            var wigFixFile = Resources.TopPath("mini.WigFix");
            var version    = new DataSourceVersion("phylop", "0", DateTime.Now.Ticks, "unit test");

            using (var reader = new PhylopParser(FileUtilities.GetReadStream(wigFixFile), GenomeAssembly.GRCh37, ChromosomeUtilities.RefNameToChromosome))
                using (var npdStream = new MemoryStream())
                    using (var indexStream = new MemoryStream())
                        using (var npdWriter = new NpdWriter(npdStream, indexStream, version, GenomeAssembly.GRCh37, SaCommon.PhylopTag, SaCommon.SchemaVersion))
                        {
                            npdWriter.Write(reader.GetItems());

                            npdStream.Position   = 0;
                            indexStream.Position = 0;

                            using (var phylopReader = new NpdReader(npdStream, indexStream))
                            {
                                Assert.Equal(0.1, phylopReader.GetAnnotation(ChromosomeUtilities.Chr1, 100)); //first position of first block
                                Assert.Equal(0.1, phylopReader.GetAnnotation(ChromosomeUtilities.Chr1, 101)); // second position
                                Assert.Equal(0.1, phylopReader.GetAnnotation(ChromosomeUtilities.Chr1, 120)); // some internal position
                                Assert.Equal(0.1, phylopReader.GetAnnotation(ChromosomeUtilities.Chr1, 130)); //last position of first block

                                //moving on to the next block: should cause reloading from file
                                Assert.Equal(0.1, phylopReader.GetAnnotation(ChromosomeUtilities.Chr1, 175));  //first position of second block
                                Assert.Equal(-2.1, phylopReader.GetAnnotation(ChromosomeUtilities.Chr1, 182)); // some negative value

                                //chrom 2
                                Assert.Null(phylopReader.GetAnnotation(ChromosomeUtilities.Chr2, 400));//values past the last phylop positions should return null
                            }
                        }
        }
 public void Annotate(IAnnotatedPosition annotatedPosition)
 {
     foreach (var annotatedVariant in annotatedPosition.AnnotatedVariants)
     {
         if (annotatedVariant.Variant.Type != VariantType.SNV)
         {
             continue;
         }
         annotatedVariant.PhylopScore = _phylopReader.GetAnnotation(annotatedPosition.Position.Chromosome, annotatedVariant.Variant.Start);
     }
 }