public ExperimentRunNameGroup AddGroup(String _name, String _description, String _runNames, Int32 _priority = 100) { ExperimentRunNameGroup group = new ExperimentRunNameGroup(); group.Priority = _priority; group.Deploy(_name, _description, _runNames); groups.Add(group); return(group); }
/// <summary> /// Deploys for run names. /// </summary> /// <param name="runs">The runs.</param> /// <returns></returns> public ExperimentRunNameGroup DeployForRunNames(List <String> runs) { ExperimentRunNameGroup output = new ExperimentRunNameGroup(); output.name = name; output.description = description; output.Priority = Priority; output.runNames.AddRange(runs); return(output); }
/// <summary> /// Returns clone filtered for matched runNames /// </summary> /// <param name="runNames">The run names.</param> /// <returns></returns> public ExperimentRunNameGroups DeployForRunNames(IEnumerable <String> runNames, params String[] runNameSuffixes) { ExperimentRunNameGroups output = new ExperimentRunNameGroups(); List <String> names = runNames.ToList(); List <String> suffixes = new List <string>(); if (runNameSuffixes != null) { suffixes.AddRange(runNameSuffixes); } List <String> assigned = new List <string>(); foreach (ExperimentRunNameGroup group in groups) { List <String> in_group = new List <string>(); foreach (var in_name in names) { if (group.runNames.Contains(in_name)) { in_group.Add(in_name); } else { foreach (String suffix in suffixes) { if (in_name.EndsWith(suffix)) { String in_name_nosuffix = in_name.Substring(0, in_name.Length - suffix.Length); if (group.runNames.Contains(in_name_nosuffix)) { in_group.Add(in_name); } } } } } if (in_group.Any()) { assigned.AddRange(in_group); output.groups.Add(group.DeployForRunNames(in_group)); } //foreach (var nm in group.runNames) //{ //} //List<string> runs = names.Intersect(group.runNames).ToList(); //if (runs.Any()) //{ // assigned.AddRange(runs); // output.groups.Add(group.DeployForRunNames(runs)); //} } foreach (String ass in assigned) { names.Remove(ass); } if (names.Any()) { ExperimentRunNameGroup otherGroup = new ExperimentRunNameGroup(); otherGroup.name = "Other"; otherGroup.description = "Ungrouped experiment runs"; otherGroup.runNames.AddRange(names); otherGroup.Priority = -100; output.groups.Add(otherGroup); } output.groups.OrderByDescending(x => x.Priority); return(output); }