def performRegression(self): def quoteBasename(string): return u"\"%s\"" % (os.path.basename(string)) # Default is no. reportSummary = "FALSE" if self.hasOption(u"options"): if self.optionIsSet(u"ReportSummary"): reportSummary = "TRUE" script = u"""\ modelSetDirectory = "%s" validationSetDirectory = "%s" independentVariables = "%s" categoricalVariables = c(%s) dependentVariable = "%s" fractionUnchangedCellsInModelSampleSet = %g fractionChangedCellsInModelSampleSet = %g summaryFile = "%s" stepwise = "forward" reportSummary = %s """ % ( self.modelOutputDirectoryName(), self.validationOutputDirectoryName(), self.independentVariablesTableBaseName(), u", ".join(map(quoteBasename, self.categoricalVariables())), self.tableFilename(), self.fractionOfUnchangedCellsInModelSetSample(), self.fractionOfChangedCellsInModelSetSample(), u"multinomialregression.Rout", reportSummary) for name in [u"variogramBinWidth", u"variogramCutoff", u"maxNumberOfSteps"]: if self.hasOption(name): script += "%s = %s\n" % (name, self.option(name)) if sys.platform == "win32": script = script.replace("\\", "\\\\") file(self.regressionScriptFilename(), "w").write(script) scriptFilename = os.path.join(self.scriptDirectoryName(), u"multinomialRegression.R") assert os.path.exists(scriptFilename) currentWorkingDirectory = os.getcwdu() outputFilename = u"multinomialregression_messages.Rout" try: os.chdir(self.outputDirectoryName()) utils.executeRScript(scriptFilename, outputFilename, logFilename=self.logFilename()) finally: os.chdir(currentWorkingDirectory) assert os.path.exists(self.regressionScriptFilename()) os.remove(self.regressionScriptFilename())
def performRegressionsPerClass(self, aClass): def quoteBasename(string): return u"\"%s\"" % (os.path.basename(string)) def script( dependentVariableTableFilename, summaryFile): # Default is no. reportSummary = "FALSE" if self.hasOption(u"options"): if self.optionIsSet(u"ReportSummary"): reportSummary = "TRUE" result = u"""\ modelSetDirectory = "%s" validationSetDirectory = "%s" independentVariables = "%s" categoricalVariables = c(%s) dependentVariable = "%s" landUseChanged = "%s" fractionUnchangedCellsInModelSampleSet = %g fractionChangedCellsInModelSampleSet = %g summaryFile = "%s" stepwise = "forward" reportSummary = %s """ % ( self.modelOutputDirectoryName(), self.validationOutputDirectoryName(), self.independentVariablesTableBaseName(), u", ".join(map(quoteBasename, self.categoricalVariables())), dependentVariableTableFilename, self.changeTableFilename(), self.fractionOfUnchangedCellsInModelSetSample(), self.fractionOfChangedCellsInModelSetSample(), summaryFile, reportSummary) for name in [u"variogramBinWidth", u"variogramCutoff", u"maxNumberOfSteps"]: if self.hasOption(name): result += "%s = %s\n" % (name, self.option(name)) return result # Death aScript = script(self.classNumberToDeathTableFilename(aClass), u"binaryregression_death%s.Rout" % (aClass)) if sys.platform == "win32": aScript = aScript.replace("\\", "\\\\") file(self.regressionScriptFilename(), "w").write(aScript) # TODO Test the existence of this script in the initialise function instead # TODO of asserting it here. scriptFilename = os.path.join(self.scriptDirectoryName(), u"binaryRegression.R") assert os.path.exists(scriptFilename) currentWorkingDirectory = os.getcwdu() try: outputFilename = u"binaryregression_death%s_messages.Rout" % (aClass) os.chdir(self.outputDirectoryName()) utils.executeRScript(scriptFilename, outputFilename, logFilename=self.logFilename()) finally: os.chdir(currentWorkingDirectory) assert os.path.exists(self.regressionScriptFilename()) os.remove(self.regressionScriptFilename()) # Birth aScript = script(self.classNumberToBirthTableFilename(aClass), u"binaryregression_birth%s.Rout" % (aClass)) if sys.platform == "win32": aScript = aScript.replace("\\", "\\\\") file(self.regressionScriptFilename(), "w").write(aScript) scriptFilename = os.path.join(self.scriptDirectoryName(), u"binaryRegression.R") assert os.path.exists(scriptFilename) currentWorkingDirectory = os.getcwdu() try: outputFilename = u"binaryregression_birth%s_messages.Rout" % (aClass) os.chdir(self.outputDirectoryName()) utils.executeRScript(scriptFilename, outputFilename, logFilename=self.logFilename()) finally: os.chdir(currentWorkingDirectory) assert os.path.exists(self.regressionScriptFilename()) os.remove(self.regressionScriptFilename())