def __init__(self): self.CF = CF.calcFreq() self.CF.getReference() # Maximum input voltage is 5V. Take 4.8V so that we are # far away from any distortions. self.maxRFAmp = 4.8 self.minRFAmp = 0.002 self.afgOnPath = "/Experiment/Variables/AFG On" self.afgAddress = "/Experiment/Variables/AFG Addresses/Quadrupole" self.varFreqC = "/Experiment/Variables/Center Frequency" self.varFreqMod = "/Experiment/Variables/Frequency Deviation" self.varSpecies = "/Experiment/Variables/Species" self.varCharge = "/Experiment/Variables/Charge" self.varNumberPoints = ("/Equipment/TITAN_ACQ/ppg cycle/begin_ramp/" + "loop count") self.varStartFreq = "/Experiment/Variables/StartFreq (MHz)" self.varStopFreq = "/Experiment/Variables/EndFreq (MHz)" self.varFreqList = "/Experiment/Variables/Quad FreqList" self.varCalExTime = ("/Experiment/Variables/MPET RF Calibration/" + "RF Excitation Time (ms)") self.varCalVolatage = ("/Experiment/Variables/MPET RF Calibration" + "/RF Amplitude (V)") self.varTakeUser = "******" self.varRFUserAmp = "/Experiment/Variables/MPETRFAmp" pass
def test_splitInput(self, mock_Midas): mycf = CF.calcFreq() name = "1H1:1H2" result = mycf.splitInput(name) expected = ["1H1", "1H2"] self.assertEqual(result, expected)
def test_cyclotron_frequencies(self, mock_Midas): mycf = CF.calcFreq() mycf.calc_frequency = mock.MagicMock(return_value=1.0) result = mycf.cyclotron_frequencies("1C12") expected = 1.0 self.assertEqual(result, expected) mycf.calc_frequency.assert_called_once_with("1C12", mycf.getFreqC)
def test_calc_frequency(self, mock_Midas): mycf = CF.calcFreq() def myfunc(name, q): return q * 1.0 result = mycf.calc_frequency("1H1 1, 1C12 2, 2C12:4H1 3", myfunc) expected = [1.0, 2.0, 3.0] self.assertEqual(result, expected)
def test_getFreqP(self, mock_Midas): mycf = CF.calcFreq() mycf.getFreqC = mock.MagicMock(return_value=1000.0) mycf.refmagnetron = 10.0 result = mycf.getFreqP("1C12", 1) expected = 1000.0 - 10.0 self.assertEqual(result, expected) mycf.getFreqC.assert_called_once_with("1C12", 1)
def test_getReference(self, mock_Midas): mycf = CF.calcFreq() mock_Midas.varget.side_effect = ["ion1", "1000000", "1", "1000"] mycf.getReference() self.assertEqual(mock_Midas.varget.call_count, 4) self.assertEqual(mycf.refname, "ion1") self.assertEqual(mycf.reffreq, 1000000.0) self.assertEqual(mycf.refcharge, 1.0) self.assertEqual(mycf.refmagnetron, 1000.0)
def test_getFreqC(self, mock_Midas): mycf = CF.calcFreq() mycf.getIonicMass = mock.MagicMock(return_value=1000.0) mycf.reffreq = 1000000.0 mycf.refname = "1C12" mycf.refcharge = 1 result = mycf.getFreqC("1H1", 1) expected = 1000000.0 * (1000.0 / 1) * (1 / 1000.0) self.assertEqual(result, expected) mycf.getIonicMass.assert_has_calls([mock.call("1H1", 1), mock.call("1C12", 1)])
def test_parseInput(self, mock_Midas): mycf = CF.calcFreq() name = "1H1 1" result = mycf.parseInput(name) expected = [["1H1", "1"]] self.assertEqual(result, expected) name = "1H1 1, 1C12 2+ , 1Ca40 10; 1C12:1O16 1, 1H2 1" result = mycf.parseInput(name) expected = [["1H1", "1"], ["1C12", "2"], ["1Ca40", "10"], ["1C12:1O16", "1"], ["1H2", "1"]] self.assertEqual(result, expected)
def test_BE(self, mock_Midas): mycf = CF.calcFreq() result = mycf.BE(1, 1) expected = 13.59844 / 1000.0 self.assertEqual(result, expected) result = mycf.BE(2, 2) expected = (23.44309 + 54.41776) / 1000.0 self.assertEqual(result, expected) result = mycf.BE(118, 3) expected = (5.89095 + 14.66149 + 25.79251) / 1000.0 self.assertEqual(result, expected)
def test_getAtomicMass(self, mock_Midas): mycf = CF.calcFreq() mycf.data = [["1H", 1000], ["2H", 2000], ["3H", 3000]] mycf.amu = 1.0 result = mycf.getAtomicMass("1H1") expected = 1 * 1.0 + 1000.0 self.assertEqual(result, expected) result = mycf.getAtomicMass("1H3") expected = 3 * 1.0 + 3000.0 self.assertEqual(result, expected)
def test_getIonicMass(self, mock_Midas): mycf = CF.calcFreq() mycf.me = 500.0 mycf.getAtomicMass = mock.MagicMock(return_value=1000.0) mycf.BE = mock.MagicMock(return_value=1) result = mycf.getIonicMass("1H2", 1) expected = 1000.0 - 500.0 + 1 self.assertEqual(result, expected) mycf.getAtomicMass.assert_called_once_with("1H2") mycf.BE.assert_called_once_with(1, 1) mycf.getAtomicMass.reset_mock() mycf.BE.reset_mock() mycf.getAtomicMass = mock.MagicMock(return_value=1000.0) mycf.BE = mock.MagicMock(return_value=1) result = mycf.getIonicMass("1H2:4C12", 1) expected = 5 * 1000.0 - 500.0 self.assertEqual(result, expected) mycf.getAtomicMass.assert_has_calls([mock.call("1H2"), mock.call("4C12")]) mycf.BE.assert_not_called() mycf.getAtomicMass.reset_mock() mycf.BE.reset_mock() mycf.getAtomicMass = mock.MagicMock(return_value=1000.0) mycf.BE = mock.MagicMock(return_value=1) result = mycf.getIonicMass("1Rb74", 20) expected = 1000.0 - 20 * 500.0 + 1 self.assertEqual(result, expected) mycf.getAtomicMass.assert_called_once_with("1Rb74") mycf.BE.assert_called_once_with(37, 20)
def __init__(self): afg.__init__(self) afgAddress = Midas.varget("/Experiment/Variables/AFG Addresses/Dipole") print afgAddress self.openConnection(ipAddress=afgAddress) self.afgName = 'Dipole' self.varRFAmp = '/Experiment/Variables/SwiftDipole/RF Amplitude (V)' self.varFreqC = ('/Experiment/Variables/SwiftDipole/' + 'Center Frequency (Hz)') self.varFreqMod = ('/Experiment/Variables/SwiftDipole/' + 'Frequency Modulation (Hz)') self.varSpecies = '/Experiment/Variables/SwiftDipole/Species' self.varCharge = '/Experiment/Variables/SwiftDipole/Species' self.varFreqList = "/Experiment/Variables/Dipole FreqList" self.CF = CF.calcFreq() self.CF.getReference() self.afgOnPath = "/Experiment/Variables/SwiftDipole/AFG On" self.varStartFreq = "/Experiment/Variables/StringDump" self.varStopFreq = "/Experiment/Variables/StringDump"
def test_init(self, mock_Midas): mycf = CF.calcFreq() self.assertEqual(len(mycf.elemDict), 118)
import calcFreq.calcFreq as calcfreq import pythonmidas.pythonmidas as Midas import numpy as np import re #import sys CF = calcfreq.calcFreq() CF.getReference() def checkInput(name): names = CF.splitInput(name) passes = True elemList = np.hstack(([re.findall('\\d+', x) for x in names], [re.findall('\\D+', x) for x in names])) try: [float(x[0]) * CF.getAtomicMass(x[0] + x[2] + x[1]) for x in elemList] except IndexError: print "Element in input", name, "does not exist in AME table." #passes = False Midas.sendmessage("DipoleCalculator", "Element in input " + name + " does not exist in AME table.") return passes ##################### # Start the program #####################
import calcFreq.calcFreq as calcfreq import pythonmidas.pythonmidas as Midas import numpy as np import re #import sys CF = calcfreq.calcFreq() CF.getReference() def checkInput(name): names = CF.splitInput(name) passes = True elemList = np.hstack( ([re.findall('\\d+', x) for x in names], [re.findall('\\D+', x) for x in names])) try: [float(x[0]) * CF.getAtomicMass(x[0] + x[2] + x[1]) for x in elemList] except IndexError: print "Element in input", name, "does not exist in AME table." #passes = False Midas.sendmessage( "DipoleCalculator", "Element in input " + name + " does not exist in AME table.") return passes #####################