def saveToSDDS(self, sddsFileName = None): if not sddsFileName: sddsFileName = util.getSaveFileName(self, 'sdds') if not sddsFileName: return mySDDS = sdds.SDDS(0) mySDDS.description[0] = "RadTrack" mySDDS.description[1] = "Copyright 2013-2015 by RadiaBeam Technologies. All rights reserved." mySDDS.parameterName = ["designMomentumEV", "totalCharge", "eMassEV"] mySDDS.parameterData = [[self.designMomentumEV], [self.totalCharge], [self.eMassEV]] mySDDS.parameterDefinition = [["","","","",mySDDS.SDDS_DOUBLE,""], ["","","","",mySDDS.SDDS_DOUBLE,""], ["","","","",mySDDS.SDDS_DOUBLE,""]] mySDDS.columnName = ["x", "xp", "y", "yp", "t", "p"] tmp6 = self.myBunch.getDistribution6D().getPhaseSpace6D().getArray6D() if not self.userInputEnabled(): tmp6 = randomSampleOfBunch(tmp6, int(self.ui.numPtcls.text())) mySDDS.columnData = [ [list(tmp6[i,:])] for i in range(6)] mySDDS.columnDefinition = [["","m", "","",mySDDS.SDDS_DOUBLE,0], ["","","","",mySDDS.SDDS_DOUBLE,0], ["","m", "","",mySDDS.SDDS_DOUBLE,0], ["","","","",mySDDS.SDDS_DOUBLE,0], ["","s", "","",mySDDS.SDDS_DOUBLE,0], ["","m_ec","","",mySDDS.SDDS_DOUBLE,0]] mySDDS.save(sddsFileName)
def saveToCSV(self, fileName = None): if not fileName: fileName = util.getSaveFileName(self, 'csv') if not fileName: return # make sure the top-level parameters are up-to-date self.designMomentumEV = util.convertUnitsStringToNumber(self.ui.designMomentum.text(), 'eV') self.totalCharge = util.convertUnitsStringToNumber(self.ui.totalCharge.text(), 'C') # create a header to identify this as a RadTrack file h1 = 'RadTrack,Copyright 2012-2014 by RadiaBeam Technologies LLC - All rights reserved (C)\n ' # names of the top-level parameters h2 = 'p0 [eV],Q [C],mass [eV]\n ' # values of the top-level parameters h3 = str(self.designMomentumEV)+','+str(self.totalCharge)+','+str(self.eMassEV)+'\n ' # label the columns h4 = 'x,xp,y,yp,s,dp\n ' # specify the units h5 = '[m],[rad],[m],[rad],[m],[rad]' # assemble the full header myHeader = h1 + h2 + h3 + h4 + h5 # write particle data into the file # create local pointer to particle array userNumberOfParticles = int(self.ui.numPtcls.text()) tmp6 = randomSampleOfBunch(self.myBunch.getDistribution6D().getPhaseSpace6D().getArray6D(), userNumberOfParticles) np.savetxt(fileName, tmp6.transpose(), fmt=str('%1.12e'), delimiter=',', comments='', header=myHeader)
def exportToFile(self, fileName = None): if not fileName: fileName = util.getSaveFileName(self, ['sdds', 'csv']) if not fileName: return if os.path.basename(fileName).startswith(self.parent.tabPrefix): name, ext = os.path.splitext(fileName) fileName = name + '+' + str(self.userInputEnabled()) + ext with open(fileName, 'w'): pass # create file in case no data to be saved if self.userInputEnabled(): self.generateBunch() # save all particles if fileName.lower().endswith('csv'): self.saveToCSV(fileName) else: self.saveToSDDS(fileName)
def exportToFile(self, fileName = None): if not fileName: fileName = util.getSaveFileName(self) if not fileName: return fileLines = [] for box in self.textBox.values(): try: try: _, unit = util.separateNumberUnit(box.text()) value = util.convertUnitsNumberToString(self.valueFromTextBox[box], box.unit, unit) except (ValueError, KeyError): value = box.text() fileLines.append(box.objectName() + ':' + value) # text box except AttributeError: fileLines.append(box.objectName() + ':' + box.currentText()) # combo box with open(fileName, 'w') as f: f.write('\n'.join(sorted(fileLines)))