public string[] SplitPopulation(string populationFile, int numberOfCores, string outputFolder, string outputFileName) { var population = ImportPopulation(populationFile); var populationData = PopulationTableFrom(population); var dataSplitter = new PopulationDataSplitter(numberOfCores, populationData); DirectoryHelper.CreateDirectory(outputFolder); var outputFiles = new List<string>(); for (int i = 0; i < numberOfCores; i++) { var outputFile = Path.Combine(outputFolder, $"{outputFileName}_{i + 1}{Constants.Filter.CSV_EXTENSION}"); var rowIndices = dataSplitter.GetRowIndices(i).ToList(); //This is potentially empty if the number of individuals in the population is less than the number of cores provided if(!rowIndices.Any()) continue; outputFiles.Add(outputFile); exportSplitPopulation(populationData, rowIndices, outputFile); } return outputFiles.ToArray(); }