def setBigCfile(self, c, file):
        import matplotlib.pyplot as plt
        data = genfromtxt(file)
        #data[0:5, 0] gives  first five entries of data's first column
        #determine width of array (num. solved positions)
        multipoles = ['Ex1', 'Ey1', 'Ez1', 'U1', 'U2', 'U3', 'U4', 'U5']
        numCols = data.size / (23 * 8)
        numPositions = numCols * 10.
        sp = {}
        spline = {}
        x = []
        for i in range(numCols):
            x.append(i)
        p = arange(0, (numCols - 1) * (1 + 1 / numPositions),
                   (numCols - 1) / numPositions)

        n = 0
        for i in range(23):
            sp[i] = {}
            spline[i] = {}
            for j in multipoles:
                sp[i][j] = UniSpline(x, data[i + n], s=0)
                spline[i][j] = sp[i][j](p)
                n += 23
            n = 0
        self.spline = spline
        yield self.ShSetMultipoleVoltages(c, 0, 1)
Exemplo n.º 2
0
    def setMultipoleControlFile(self, c, file):
        data = genfromtxt(file)
        numCols = data.size / (23 * 8)
        numPositions = (numCols - 1) * 10.
        sp = {}
        spline = {}
        x = range(numCols)
        p = arange(0, (numCols - 1) * (1 + 1 / numPositions),
                   (numCols - 1) / numPositions)

        for i in range(23):
            n = 0
            sp[i] = {}
            spline[i] = {}
            for j in self.multipoles:
                sp[i][j] = UniSpline(x, data[i + n], s=0)
                spline[i][j] = sp[i][j](p)
                n += 23
        self.spline = spline
        yield self.advDACs(1)

        # get ion position info
        y = data[23 * 8]
        fit = interpolate.interp1d(x, y, 'linear')
        self.pos = fit(p)

        self.ionInfo['positionIndex'] = self.positionIndex
        self.ionInfo['position'] = self.pos[self.positionIndex]
        self.ionInfo['ionRange'] = list(y)

        yield self.registry.cd(['', 'cctdac_pulser'])
        yield self.registry.set('MostRecent', file)
Exemplo n.º 3
0
 def interpolateMultipoleMatrix(self, data):
     ''' fit individual components of multiple Cfiles to a spline '''
     numElectrodes = (data[:, 1].size - 1) / len(hc.default_multipoles)
     numPositions = 10 * (self.numCols - 1.)
     inc = (self.numCols - 1) / numPositions
     partition = arange(0, (numPositions + 1) * inc, inc)
     splineFit = {
         elec: {
             mult: UniSpline(range(self.numCols),
                             data[int(elec) + index * hc.numElectrodes - 1],
                             s=0)
             for index, mult in enumerate(hc.default_multipoles)
         }
         for elec in hc.elec_dict.keys()
     }
     self.multipoleMatrix = {
         elec: {
             mult: splineFit[elec][mult](partition)
             for index, mult in enumerate(hc.default_multipoles)
         }
         for elec in hc.elec_dict.keys()
     }
     positionFit = interpolate.interp1d(
         range(self.numCols),
         data[numElectrodes * len(hc.default_multipoles)], 'linear')
     self.positionList = positionFit(partition)
Exemplo n.º 4
0
 def interpolateVoltageMatrix(self):
     # fix step size here
     num_positions = 10*(self.num_columns - 1.)
     inc = (self.num_columns-1)/num_positions
     partition = arange(0, (num_positions + 1) * inc, inc)
     splineFit = {elec: UniSpline(range(self.num_columns) , self.voltage_matrix[elec], s=0) for elec in hc.elec_dict.keys()}
     self.voltage_matrix = {elec: splineFit[elec](partition) for elec in hc.elec_dict.keys()}
Exemplo n.º 5
0
 def interpolateVoltageMatrix( self, voltageMatrix ):
     # fix step size here
     numPositions = 10*(self.numCols - 1.)
     inc = (self.numCols-1)/numPositions
     partition = arange(0, (numPositions + 1) * inc, inc)
     splineFit = {elec: UniSpline(range(self.numCols) , voltageMatrix[elec], s = 0 ) for elec in hc.elec_dict.keys()}
     interpolatedVoltageMatrix = {elec: splineFit[elec](partition) for elec in hc.elec_dict.keys()}
     return interpolatedVoltageMatrix