Mercurial Hosting > traffic-intelligence
changeset 674:01b89182891a
corrected bug for intersection of lines (thanks to Paul for finding)
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Tue, 26 May 2015 18:16:51 +0200 |
parents | 5505f9dbb28e |
children | ab3fdff42624 |
files | python/moving.py python/tests/moving.txt python/utils.py |
diffstat | 3 files changed, 21 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/python/moving.py Tue May 26 15:02:47 2015 +0200 +++ b/python/moving.py Tue May 26 18:16:51 2015 +0200 @@ -536,8 +536,8 @@ dp12 = p2-p1 dp34 = p4-p3 #det = (p4.y-p3.y)*(p2.x-p1.x)-(p4.x-p3.x)*(p2.y-p1.y) - det = dp34.y*dp12.x-dp34.x*dp12.y - if det == 0: + det = float(dp34.y*dp12.x-dp34.x*dp12.y) + if det == 0.: return None else: ua = (dp34.x*(p1.y-p3.y)-dp34.y*(p1.x-p3.x))/det
--- a/python/tests/moving.txt Tue May 26 15:02:47 2015 +0200 +++ b/python/tests/moving.txt Tue May 26 18:16:51 2015 +0200 @@ -66,6 +66,8 @@ >>> segmentIntersection(Point(0,1), Point(0,3), Point(1,0), Point(3,1)) >>> segmentIntersection(Point(0.,0.), Point(2.,2.), Point(0.,2.), Point(2.,0.)) (1.000000,1.000000) +>>> segmentIntersection(Point(0,0), Point(4,4), Point(0,4), Point(4,0)) +(2.000000,2.000000) >>> segmentIntersection(Point(0,1), Point(1,2), Point(2,0), Point(3,2)) >>> left = Trajectory.fromPointList([(92.291666666666686, 102.99239033124439), (56.774193548387103, 69.688898836168306)])
--- a/python/utils.py Tue May 26 15:02:47 2015 +0200 +++ b/python/utils.py Tue May 26 18:16:51 2015 +0200 @@ -318,7 +318,10 @@ newVariables.append(newVariable) return newVariables -def kruskalWallis(data, dependentVariable, independentVariable, plotFigure = False, figureFilenamePrefix = None, figureFileType = 'pdf'): +def frenchify(s, displayNames): + return s + +def kruskalWallis(data, dependentVariable, independentVariable, plotFigure = False, filenamePrefix = None, figureFileType = 'pdf', saveLatex = False): '''Studies the influence of (nominal) independent variable over the dependent variable Makes tests if the conditional distributions are normal @@ -327,6 +330,9 @@ tmp = data[data[independentVariable].notnull()] independentVariableValues = sorted(tmp[independentVariable].unique().tolist()) if len(independentVariableValues) >= 2: + if saveLatex: + from storage import openCheck + out = openCheck(filenamePrefix+'-{}-{}.tex'.format(dependentVariable, independentVariable), 'w') for x in independentVariableValues: print('Shapiro-Wilk normality test for {} when {}={}: {} obs'.format(dependentVariable,independentVariable, x, len(tmp.loc[tmp[independentVariable] == x, dependentVariable]))) if len(tmp.loc[tmp[independentVariable] == x, dependentVariable]) >= 3: @@ -338,11 +344,15 @@ #plt.ylim(ymax = q75+1.5*(q75-q25)) plt.xticks(range(1,len(independentVariableValues)+1), independentVariableValues) plt.title('{} vs {}'.format(dependentVariable, independentVariable)) - if figureFilenamePrefix is not None: - plt.savefig(figureFilenamePrefix+'{}-{}.{}'.format(dependentVariable, independentVariable, figureFileType)) - #else: - # TODO formatter le tableau (html?) - print tmp.groupby([independentVariable])[dependentVariable].describe().unstack().sort(['50%'], ascending = False) + if filenamePrefix is not None: + plt.savefig(filenamePrefix+'-{}-{}.{}'.format(dependentVariable, independentVariable, figureFileType)) + table = tmp.groupby([independentVariable])[dependentVariable].describe().unstack().sort(['50%'], ascending = False) + if saveLatex: + out.write('\begin{table}[htp!]') + out.write(frenchify(table.to_latex(), displayNames)) + out.write('\end{table}[htp!]') + else: + print table return kruskal(*[tmp.loc[tmp[independentVariable] == x, dependentVariable] for x in independentVariableValues]) else: return None @@ -444,6 +454,7 @@ experiments = generateExperiments(independentVariables) nModels = len(experiments) print("Running {} models with {} processes".format(nModels, nProcesses)) + print("IndependentVariables: {}".format(independentVariables)) if nProcesses == 1: return runModels(experiments, data, dependentVariable, independentVariables, regressionType) else: