private static List <PatchPattern> PatchPatternCollection(VaccineAsString vaccineUncompressed)
        {
            List <PatchPattern> rg = new List <PatchPattern>();

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

            foreach (string componentAsString in vaccineUncompressed.NiceStringCollection())
            {
                PatchPattern patchPattern = aPatchPatternFactory.GetInstance(componentAsString);
                rg.Add(patchPattern);
            }
            return(rg);
        }
        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);
        }