#region calculate goodness and select best fit def sumAbsValues(list): sum = 0 for val in list: sum += abs(val) return sum tsRef = measuredTimeSeries.GetValues() deviation =[] startIndex = 20 #remove influence of initial conditions for i in range(1,timeSeriesToCompare.Count): devItem = sumAbsValues(list(substractLists(timeSeriesToCompare[i].GetValues(),tsRef,startIndex))) deviation.append(devItem) bestFitDeviation = min(deviation) bestFitIndex = deviation.index(bestFitDeviation)+1 if bestFitIndex == 1: #basis model bc1BestFit = bc1Ini roughnessBestFit = rghnsIni else: idxBestBC = (bestFitIndex-1)/len(rangeRoughness) idxBestRoughness = (bestFitIndex-1)%len(rangeRoughness) bc1BestFit = rangeBC1[idxBestBC] roughnessBestFit = rangeRoughness[idxBestRoughness] print "selected bc: " + str(bc1BestFit) + "m3/s" print "selected roughness " + str(roughnessBestFit) + "m^(1/3) s^-1" print timeSeriesToCompare[bestFitIndex].Components[0].Name #endregion