Spectrometer Package

class pychron.spectrometer.field_table.FieldTable(*args: Any, **kwargs: Any)[source]

map a voltage to a mass

load_table(path=None, load_items=False)[source]

mftable format- first line is a header followed by Isotope, Dac_i, Dac_j,….

Dac_i is the magnet dac setting to center Isotope on detector i example:

iso, H2,     H1,      AX,     L1,     L2,     CDD
Ar40,5.78790,5.895593,6.00675,6.12358,6.24510,6.35683
Ar39,5.89692,5.788276,5.89692,5.89692,5.89692,5.89692
Ar36,5.56072,5.456202,5.56072,5.56072,5.56072,5.56072
update_field_table(det, isotope, dac, message='', save=True, report=False, update_others=True)[source]

dac needs to be in axial units

update_others. If false only

class pychron.spectrometer.fieldmixin.FieldMixin(*args: Any, **kwargs: Any)[source]
class pychron.spectrometer.base_magnet.BaseMagnet(*args: Any, **kwargs: Any)[source]
finish_loading()[source]

initialize the mftable

read DAC from device :return:

map_dac_to_isotope(dac=None, det=None, current=True)[source]

convert a dac voltage to isotope name for a given detector

Parameters
  • dac – float, voltage

  • det – str, detector name

  • current – bool, get current hv

Returns

str, e.g Ar40

map_dac_to_mass(dac, detname)[source]

convert a DAC value (voltage) to mass for a given detector use the mftable

Parameters
  • dac – float, voltage (0-10V)

  • detname – str, name of a detector, e.g H1

Returns

float, mass

map_mass_to_dac(mass, detname)[source]

convert a mass value from amu to dac for a given detector

Parameters
  • mass – float, amu

  • detname – std, name of a detector, e.g. H1

Returns

float, dac voltage

mass_change(m)[source]

set the self.mass attribute suppress mass change handler

Parameters

m – float

Returns

class pychron.spectrometer.base_detector.BaseDetector(*args: Any, **kwargs: Any)[source]

Thermo

The thermo package (pychron.spectrometer.thermo) contains abstractions for interfacing a Thermo Scientific mass spectrometer via RemoteControlService.cs

Spectrometers

class pychron.spectrometer.thermo.spectrometer.base.ThermoSpectrometer(*args: Any, **kwargs: Any)[source]
get_deflection(name, current=False)[source]

get deflection by detector name

Parameters
  • name – str, detector name

  • current – bool, if True query qtegra

Returns

float

get_detector_active(dname)[source]

return True if dname in the list of intensity keys e.g.

keys, signals = get_intensities return dname in keys

Parameters

dname

Returns

get_intensity(dkeys)[source]

dkeys: str or tuple of strs

load()[source]

load detectors load setupfiles/spectrometer/config.cfg file load magnet load deflections coefficients

Returns

load_configurations()[source]

load configurations from Qtegra :return:

load_current_detector_gains()[source]

load the detector gains from the spectrometer

set_gains(history=None)[source]
Parameters

history

Returns

list

set_integration_time(it, force=False)[source]
Parameters
  • it – float, integration time

  • force – set integration even if “it” is not different than self.integration_time

Returns

float, integration time

test_intensity()[source]

test if intensity is changing. make 2 measurements if exactlly the same for all detectors make third measurement if same as 1,2 make fourth measurement if same all four measurements same then test fails :return:

class pychron.spectrometer.thermo.spectrometer.argus.ArgusSpectrometer(*args: Any, **kwargs: Any)[source]

Interface to a Thermo Scientific Argus Mass Spectrometer via Qtegra and RemoteControlServer.cs magnet control provided by ArgusMagnet source control provided by ArgusSource

direct access to RemoteControlServer.cs API via microcontroller e.g. microcontroller.ask(‘GetIntegrationTime’)

magnet_klass

alias of pychron.spectrometer.thermo.magnet.argus.ArgusMagnet

microcontroller_klass

alias of pychron.hardware.thermo_spectrometer_controller.ArgusController

class pychron.spectrometer.thermo.spectrometer.helix.HelixSpectrometer(*args: Any, **kwargs: Any)[source]
magnet_klass

alias of pychron.spectrometer.thermo.magnet.helix.HelixMagnet

microcontroller_klass

alias of pychron.hardware.thermo_spectrometer_controller.HelixController

class pychron.spectrometer.thermo.magnet.base.ThermoMagnet(*args: Any, **kwargs: Any)[source]

Magnet interface to Qtegra.

uses MFTable object of mapping dac to mass

class pychron.spectrometer.thermo.magnet.argus.ArgusMagnet(*args: Any, **kwargs: Any)[source]
class pychron.spectrometer.thermo.magnet.helix.HelixMagnet(*args: Any, **kwargs: Any)[source]

Isotopx

The Isotopx package (pychron.spectrometer.isotopx) contains abstractions for interfacing a Isotopx mass spectrometer via IsotopxRCS

Spectrometers

class pychron.spectrometer.isotopx.spectrometer.base.IsotopxSpectrometer(*args: Any, **kwargs: Any)[source]
class pychron.spectrometer.isotopx.spectrometer.ngx.NGXSpectrometer(*args: Any, **kwargs: Any)[source]
finish_loading()[source]

finish loading magnet send configuration if self.send_config_on_startup set in Preferences :return:

get_update_period(it=None, is_scan=False)[source]

acquisition period is always set to 1s so update period always needs to be <1s

microcontroller_klass

alias of pychron.hardware.isotopx_spectrometer_controller.NGXController

set_integration_time(it, force=False)[source]
Parameters
  • it – float, integration time in seconds

  • force – set integration even if “it” is not different than self.integration_time

Returns

float, integration time

class pychron.spectrometer.isotopx.magnet.base.IsotopxMagnet(*args: Any, **kwargs: Any)[source]
class pychron.spectrometer.isotopx.magnet.ngx.NGXMagnet(*args: Any, **kwargs: Any)[source]
set_mass(v, delay=None, deflect=False)[source]
Parameters
  • v – mass

  • delay – settling time in ms

  • deflect

Returns

MAP

The map package (pychron.spectrometer.map) contains abstractions for interfacing with a Mass Analyzer Products (MAP) mass spectromter. Developed for New Mexico Geochronology Research Laboratory’s MAP215-50

class pychron.spectrometer.map.magnet.MapMagnet(*args: Any, **kwargs: Any)[source]

Abstraction for the MAP Magent

set_dac(v, verbose=False)[source]

set the magnet dac voltage.

set the range then send W[v]

dev.tell('W4.543')
Parameters
  • v – v, dac voltage

  • verbose

Returns

bool, True if dac changed else False

set_range(r, verbose=False)[source]

if float convert to integer and use as range.

send B[r-1]

# r = 6
dev.tell('B5')
Parameters
  • r – float or int

  • verbose