public MerDictionarySource(MerCollections.MerDictionary source)
 {
     if (source != null)
     {
         InitialiseMerDictionarySource(source);
     }
     else
     {
         idx    = 0;
         maxIdx = -1;
         valid  = false;
     }
     opened     = false;
     sourceType = "MerDictionary";
 }
        private void InitialiseMerDictionarySource(MerCollections.MerDictionary source)
        {
            int merCount = source.Sort();

            mers   = source.sortedKeys;
            values = source.sortedValues;
            idx    = -1;
            maxIdx = mers.Length - 1;
            valid  = false;

            if (merCount > 0)
            {
                firstMer = mers[0];
                lastMer  = mers[maxIdx];
                valid    = true;
                MoveToNextDistinctMer();
            }
        }