def addNew(self, name, scanType): """ Try to add a new scan with the given name and tnype ParameterScanCollectionException is raised if there is a problem (name already taken or invalid type). Returns a reference to the newly created scan. """ if name in self.scans.keys(): raise ParameterScanCollectionException("Name '" + name + "' already taken") scanFolder = os.path.join(self.folder, "scans", name) if scanType == "ParameterScan::Dummy" or scanType == "Dummy": from Dummy import Dummy Dummy.createNew(scanFolder) self.scans[name] = newScan = Dummy(scanFolder, self) elif scanType == "ParameterScan::DummySubscan" or scanType == "DummySubscan": from DummySubscan import DummySubscan DummySubscan.createNew(scanFolder) self.scans[name] = newScan = DummySubscan(scanFolder, self) elif scanType == "ParameterScan::TuneFreq" or scanType == "TuneFreq": from TuneFreq import TuneFreq TuneFreq.createNew(scanFolder) self.scans[name] = newScan = TuneFreq(scanFolder,self) elif scanType == "ParameterScan::Scan2D" or scanType == "Scan2D": from Scan2D import Scan2D Scan2D.createNew(scanFolder) self.scans[name] = newScan = Scan2D(scanFolder,self) elif scanType == "ParameterScan::Scan2D_Tune" or scanType == "Scan2D_Tune": from Scan2D_Tune import Scan2D_Tune Scan2D_Tune.createNew(scanFolder) self.scans[name] = newScan = Scan2D_Tune(scanFolder,self) else: if scanType in self.parameterScanTypes or "ParameterScan::"+scanType in self.parameterScanTypes: raise NotImplementedError("Forgot to implement support for ParameterScan '" + scanType + "'!") raise ParameterScanCollectionException("Unknown ParameterScan type '" + scanType + "'") self.__paramfile.dataDict["scans"].pushBack(name,newScan.type) self.__paramfile.write() return self.scans[name]
def createAndLoadAnalysis(anaType, runConfig, folder, name=None): """ Creates a new analysis of the specified anaType, with common analysis folder given. If name is specified, use this name, else use the default for this analysis anaType. The created analysis is then loaded and returned. raises AnalysisException_createFail if something goes wrong. """ if not anaType in AnalysisInterface.getTypes(): raise AnalysisException_createFail("Type '" + anaType + "' is not valid") name = AnalysisInterface.getName(anaType, name) if os.path.exists(os.path.join(folder, name)): raise AnalysisException_createFail("Analysis file already created?!?") import acdOpti.AcdOptiRunConfig assert isinstance(runConfig, acdOpti.AcdOptiRunConfig.AcdOptiRunConfig) if anaType == "Dummy": from Dummy import Dummy Dummy.createNew(folder, name) return Dummy(folder, name, runConfig) if anaType == "DummyInput": from DummyInput import DummyInput DummyInput.createNew(folder, name) return DummyInput(folder, name, runConfig) elif anaType == "FileList": from FileList import FileList FileList.createNew(folder,name) return FileList(folder,name,runConfig) elif anaType == "Omega3P_modeInfo": from Omega3P_modeInfo import Omega3P_modeInfo Omega3P_modeInfo.createNew(folder, name) return Omega3P_modeInfo(folder,name,runConfig) elif anaType == "RFpost": from RFpost import RFpost RFpost.createNew(folder, name) return RFpost(folder, name, runConfig) elif anaType == "RFpost_local": from RFpost_local import RFpost_local RFpost_local.createNew(folder, name) return RFpost_local(folder,name,runConfig) elif anaType == "GroupVelocity": from GroupVelocity import GroupVelocity GroupVelocity.createNew(folder, name) return GroupVelocity(folder, name, runConfig) elif anaType == "ScMax": from ScMax import ScMax ScMax.createNew(folder, name) return ScMax(folder, name, runConfig) elif anaType == "ModeFileRecalc": from ModeFileRecalc import ModeFileRecalc ModeFileRecalc.createNew(folder, name) return ModeFileRecalc(folder, name, runConfig) elif anaType == "Metadata": from Metadata import Metadata Metadata.createNew(folder, name) return Metadata(folder,name,runConfig) else: raise AnalysisException_createFail("Unknown analysis type '" + anaType + "'")