Exemplo n.º 1
0
        private void WritePosition(List <ISupplementaryDataItem> items)
        {
            int position = items[0].Position;

            _memStream.Position = 0;
            if (_isPositional)
            {
                var positionalItem = SuppDataUtilities.GetPositionalAnnotation(items);
                if (positionalItem == null)
                {
                    return;
                }
                _memWriter.Write(positionalItem.GetJsonString());
            }
            else
            {
                // any data source that is reported by allele and is not an array (e.g. allele frequencies) need this filtering step
                if (_index.MatchByAllele && !_index.IsArray)
                {
                    items = SuppDataUtilities.RemoveConflictingAlleles(items, _throwErrorOnConflicts);
                }

                if (_index.JsonKey == SaCommon.PrimateAiTag)
                {
                    items = SuppDataUtilities.DeDuplicatePrimateAiItems(items);
                }

                _memWriter.WriteOpt(items.Count);

                foreach (ISupplementaryDataItem saItem in items)
                {
                    _memWriter.WriteOptAscii(saItem.RefAllele);
                    _memWriter.WriteOptAscii(saItem.AltAllele);
                    _memWriter.Write(saItem.GetJsonString());
                }
            }

            int numBytes = (int)_memStream.Position;

            if (!_block.HasSpace(numBytes))
            {
                Flush(items[0].Chromosome.Index);
            }
            _block.Add(_memBuffer, numBytes, position);
        }
Exemplo n.º 2
0
        public void ResolveDuplicates()
        {
            var entrezToHgnc = new Dictionary <string, string>
            {
                { "255403", "Gene1" }
            };

            var ensemblToHgnc = new Dictionary <string, string>
            {
                { "ENSG00000234810", "Gene2" }
            };
            var primateParser = new PrimateAiParser(GetDuplicateItemStream(), GetSequenceProvider(), entrezToHgnc, ensemblToHgnc);

            var items = primateParser.GetItems().Cast <ISupplementaryDataItem>().ToList();

            var deDupItems = SuppDataUtilities.DeDuplicatePrimateAiItems(items);

            Assert.Single(deDupItems);
            Assert.Equal("\"hgnc\":\"Gene1\",\"scorePercentile\":0.93", deDupItems[0].GetJsonString());
        }