internal static PatchTable GetInstanceWithUniformWeightByLength(IList <PatchPattern> patchPatternCollection)
        {
            PatchTable patchTable = new PatchTable();

            patchTable.PatchTableScorer = PatchTableScorer.GetInstance("normal");

            int totalLength = 0;

            foreach (PatchPattern patchPattern in patchPatternCollection)
            {
                totalLength += patchPattern.FullLength;
            }


            foreach (PatchPattern patchPattern in patchPatternCollection)
            {
                double weight = (double)patchPattern.FullLength / (double)totalLength;

                patchTable.SetMaxPatchLength(patchPattern);

                Patch aPatch = Patch.GetInstance(patchPattern, weight);
                patchTable.Add(aPatch);
                patchTable.CreateSortedArrays();
            }

            return(patchTable);
        }
 private Patch GetPatchFromCollection(PatchPattern patchPattern)
 {
     if (PatchPatternToPatch.ContainsKey(patchPattern))
     {
         return((Patch)PatchPatternToPatch[patchPattern]);
     }
     else
     {
         Patch aPatch = Patch.GetInstance(patchPattern, 0.0);
         PatchPatternToPatch.Add(patchPattern, aPatch);
         return(aPatch);
     }
 }
        static public PatchTable GetInstanceFromFile(PatchPatternFactory patchPatternFactory,
                                                     TextReader patchTableTextReader, string scorerName)
        {
            PatchTable patchTable = new PatchTable();

            patchTable.PatchTableScorer = PatchTableScorer.GetInstance(scorerName);

            foreach (Dictionary <string, string> row in SpecialFunctions.TabFileTable(patchTableTextReader, "Patch\tWeight", false))
            {
                PatchPattern patchPattern = patchPatternFactory.GetInstance(row["Patch"]);
                double       weight       = double.Parse(row["Weight"]);
                patchTable.SetMaxPatchLength(patchPattern);
                Patch patch = Patch.GetInstance(patchPattern, weight);
                patchTable.Add(patch);
            }

            patchTable.CreateSortedArrays();

            return(patchTable);
        }
        static public PatchTable GetInstance(Dictionary <string, double> patchToWeight, string protein, string vaccineCriteriaName)
        {
            PatchTable patchTable = new PatchTable();

            patchTable.PatchTableScorer = PatchTableScorer.GetInstance("normal");

            PatchPatternFactory patchPatternFactory = PatchPatternFactory.GetFactory("strings");

            patchTable.PatchPatternToPatch = new Dictionary <PatchPattern, Patch>();
            foreach (KeyValuePair <string, double> patchAndWeight in patchToWeight)
            {
                string       patchAsString = patchAndWeight.Key;
                double       weight        = patchAndWeight.Value;
                PatchPattern patchPattern  = patchPatternFactory.GetInstance(patchAsString);
                Patch        aPatch        = Patch.GetInstance(patchPattern, weight);
                patchTable.Add(aPatch);
            }

            patchTable.CreateSortedArrays();

            return(patchTable);
        }