sequencer package

sequencer.sequencer module

Generates and runs sequences of outputs for TTLs, DACs, and electrode DACs.

class sequencer.sequencer.SequencerServer(config_path='./config.json')

Bases: DeviceServer

Generates and runs sequences of outputs for TTLs, DACs, and electrode DACs.

Connects to sequencer devices (TODO: Fancy link), as listed in config.json.

TODO: Finish documenting all the methods.

channel_manual_output(c, channel_id, output=None)
channel_mode(c, channel_id, mode=None)
fix_sequence_keys(c, sequence)
get_channels(self, cntx)

Returns a JSON-dumped dictionary of all channels on all sequencer devices.

Parameters:

cntx – The LabRAD context

Returns:

A JSON-dumped string of a dictionary, where the keys are channel names and the values are the channels.

Return type:

str

id2channel(self, channel_id)

Returns channel corresponding to channel_id. Expects 3 possibilities for channel_id:

  • name -> return channel with that name

  • @loc -> return channel at that location

  • name@loc -> first try name, then location

Parameters:

channel_id (str) – The identifier of the channel, as described above.

Returns:

The channel corresponding to channel_id

Raises:

KeyError` if channel cannot be foun

name = 'sequencer'
run_sequence(self, c, sequence)

Runs the provided sequence, first ensuring that each channel has a valid sequence, then programming each device, then starting them.

First starts the AD5791 (TODO: fancy link) boards (stable DACs for electric field), then the analog (TODO: fancy link) boards, then finally the digital (TODO: fancy link) boards, starting KRbDigi01, which triggers the others, last. If a new board is added with a difference sequencer_type, it will be started along with the digital boards.

Parameters:
  • c – The LabRAD context

  • sequence (str) – A JSON-dumped string containing the sequence (TODO: Add an example of a sequence.)

send_update(c)
sequencer_mode(c, sequencer)
update = <labrad.server.Signal object>

sequencer.devices module

TODO: generally describe sequencer devices, finish documenting all of these specific devices

Generates and runs sequences of outputs for TTLs, DACs, and electrode DACs.

sequencer.devices.ad5791_board module

TODO: description, link hardware info

sequencer.devices.analog_board module

TODO: description, link hardware info

sequencer.devices.digital_board module

TODO: description, link hardware info

class sequencer.devices.digital_board.DigitalBoard(config)

Bases: DeviceWrapper

__init__(config)

defaults

initialize()
make_sequence_bytes(sequence)
program_sequence(sequence)
sequencer_type = 'digital'
set_mode(mode)
start_sequence()
write_channel_manual_outputs()
write_channel_modes()
class sequencer.devices.digital_board.DigitalChannel(config)

Bases: object

__init__(config)

defaults

name

non-defaults

set_manual_output(state)
set_mode(mode)
sequencer.devices.digital_board.get_out(channel_sequence, t)
sequencer.devices.digital_board.time_to_ticks(clk, time)
class sequencer.sequencer.SequencerServer(config_path='./config.json')

Bases: DeviceServer

Generates and runs sequences of outputs for TTLs, DACs, and electrode DACs.

Connects to sequencer devices (TODO: Fancy link), as listed in config.json.

TODO: Finish documenting all the methods.

channel_manual_output(c, channel_id, output=None)
channel_mode(c, channel_id, mode=None)
fix_sequence_keys(c, sequence)
get_channels(self, cntx)

Returns a JSON-dumped dictionary of all channels on all sequencer devices.

Parameters:

cntx – The LabRAD context

Returns:

A JSON-dumped string of a dictionary, where the keys are channel names and the values are the channels.

Return type:

str

id2channel(self, channel_id)

Returns channel corresponding to channel_id. Expects 3 possibilities for channel_id:

  • name -> return channel with that name

  • @loc -> return channel at that location

  • name@loc -> first try name, then location

Parameters:

channel_id (str) – The identifier of the channel, as described above.

Returns:

The channel corresponding to channel_id

Raises:

KeyError` if channel cannot be foun

name = 'sequencer'
run_sequence(self, c, sequence)

Runs the provided sequence, first ensuring that each channel has a valid sequence, then programming each device, then starting them.

First starts the AD5791 (TODO: fancy link) boards (stable DACs for electric field), then the analog (TODO: fancy link) boards, then finally the digital (TODO: fancy link) boards, starting KRbDigi01, which triggers the others, last. If a new board is added with a difference sequencer_type, it will be started along with the digital boards.

Parameters:
  • c – The LabRAD context

  • sequence (str) – A JSON-dumped string containing the sequence (TODO: Add an example of a sequence.)

send_update(c)
sequencer_mode(c, sequencer)
update = <labrad.server.Signal object>