qt3rfsynthcontrol


Nameqt3rfsynthcontrol JSON
Version 1.0.1.dev1 PyPI version JSON
download
home_page
SummaryA package for controlling the Windfreak SynthHD RF generator.
upload_time2023-02-07 20:06:29
maintainer
docs_urlNone
author
requires_python>=3.8
licenseBSD 3-Clause License Copyright (c) 2022, University of Washington Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
keywords qt3 microwave electron spin control windfreak synthhd rf generator rf synthesizer rf control rf
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Controller for Windfreak SynthHD v2 RF Generator

Helper code to control [Windfreak's SynthHD RF generator](https://windfreaktech.com/product/microwave-signal-generator-synthhd/).


## Installation

```
pip install qt3rfsynthcontrol
```

## Usage

### Determine the port


```python
import qt3rfsynthcontrol
qt3rfsynthcontrol.discover_devices()
```

Will return a list of ports and information about devices connected to those ports.
For example

```python
[['COM3',
  'Intel(R) Active Management Technology - SOL (COM3)',
  'PCI\\VEN_8086&DEV_43E3&SUBSYS_0A541028&REV_11\\3&11583659&1&B3'],
 ['COM5',
  'USB Serial Device (COM5)',
  'USB VID:PID=0483:A3E5 SER=206A36705430 LOCATION=1-2:x.0'],
 ['COM6',
  'USB Serial Device (COM6)',
  'USB VID:PID=04D8:000A SER= LOCATION=1-8:x.0'],
 ['COM7',
  'USB Serial Device (COM7)',
  'USB VID:PID=239A:8014 SER=3B0D07C25831555020312E341A3214FF LOCATION=1-6:x.0']]
```

It is certainly not obvious to which USB port the Windfreak is connected. However,
using the Windows Task Manager, as well as trial and error, should eventually
reveal the correct serial port to use.

### Connection to SynthHD

```python
rf_synth = qt3rfsynthcontrol.QT3SynthHD('COM5')
```

### Hardware Info

```python
rf_synth.hw_info()
```

### Current Signal Status

```python
rf_synth.current_status()
```

### Set Fixed Frequency

```python
channel_A = 0
channel_B = 1
rf_synth.set_channel_fixed_output(channel_A, power = -5.0, frequency = 2870e6)
```

### Set Up For Frequency Scan

Frequency scan can either be triggered externally (using the Quantum Composer
  Sapphire pulser, or other), or can run independent of any external control.

```python
channel_A = 0
channel_B = 1
rf_synth.set_frequency_sweep(channel_A, power = -5.0, frequency_low = 2820e6,
                            frequency_high = 2920e6, n_steps = 101,
                            trigger_mode = 'single frequency step',
                            frequency_sample_time = 0.100)
```

See the function's documentation for further details

```python
help(rf_synth.set_frequency_sweep)
```

### Turn RF ON/OFF

The RF generation can be turned on and off with

```python
channel_A = 0
channel_B = 1
rf_synth.rf_on(channel_A)
rf_sythh.rf_off(channel_A)
```

### Windfreak.SynthHD

If you wish to use the `windfreak-python` SynthHD object instance directly, you
can obtain it from the property `SynthHD`. Usage of
[windfreak-python is documented here](https://github.com/christian-hahn/windfreak-python).


```python
windfreak_synthhd = rf_synth.SynthHD()

print(windfreak_synthhd[0].power)
print(windfreak_synthhd[0].frequency)
```

The documentation is a little sparse, however. The full set of commands are found in

  * [the code](https://github.com/christian-hahn/windfreak-python/blob/master/windfreak/synth_hd.py#L337)
  * [the programming manual](https://windfreaktech.com/wp-content/uploads/2016/12/WFT_SerialProgramming_API_10b.pdf)

It can take a little effort to match the python API with the description in the manual as
some of the `windfreak-python` API functions do not exactly match the function name in the manual.
For example `sweep_single` in `windfreak-python` is called `sweep_run` or `run_sweep`
in the programming manual.

# LICENSE

[LICENCE](LICENSE)

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "qt3rfsynthcontrol",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "\"G. Adam Cox\" <gadamc@gmail.com>, Maxwell Parsons <mfpars@uw.edu>",
    "keywords": "qt3,microwave,electron spin control,windfreak,synthHD,rf generator,rf synthesizer,rf control,rf",
    "author": "",
    "author_email": "\"G. Adam Cox\" <gadamc@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/69/81/91c429a8b6b9b204fa9eb4fdb2751843b0ccde4effbf65811a010bd86d17/qt3rfsynthcontrol-1.0.1.dev1.tar.gz",
    "platform": null,
    "description": "# Controller for Windfreak SynthHD v2 RF Generator\n\nHelper code to control [Windfreak's SynthHD RF generator](https://windfreaktech.com/product/microwave-signal-generator-synthhd/).\n\n\n## Installation\n\n```\npip install qt3rfsynthcontrol\n```\n\n## Usage\n\n### Determine the port\n\n\n```python\nimport qt3rfsynthcontrol\nqt3rfsynthcontrol.discover_devices()\n```\n\nWill return a list of ports and information about devices connected to those ports.\nFor example\n\n```python\n[['COM3',\n  'Intel(R) Active Management Technology - SOL (COM3)',\n  'PCI\\\\VEN_8086&DEV_43E3&SUBSYS_0A541028&REV_11\\\\3&11583659&1&B3'],\n ['COM5',\n  'USB Serial Device (COM5)',\n  'USB VID:PID=0483:A3E5 SER=206A36705430 LOCATION=1-2:x.0'],\n ['COM6',\n  'USB Serial Device (COM6)',\n  'USB VID:PID=04D8:000A SER= LOCATION=1-8:x.0'],\n ['COM7',\n  'USB Serial Device (COM7)',\n  'USB VID:PID=239A:8014 SER=3B0D07C25831555020312E341A3214FF LOCATION=1-6:x.0']]\n```\n\nIt is certainly not obvious to which USB port the Windfreak is connected. However,\nusing the Windows Task Manager, as well as trial and error, should eventually\nreveal the correct serial port to use.\n\n### Connection to SynthHD\n\n```python\nrf_synth = qt3rfsynthcontrol.QT3SynthHD('COM5')\n```\n\n### Hardware Info\n\n```python\nrf_synth.hw_info()\n```\n\n### Current Signal Status\n\n```python\nrf_synth.current_status()\n```\n\n### Set Fixed Frequency\n\n```python\nchannel_A = 0\nchannel_B = 1\nrf_synth.set_channel_fixed_output(channel_A, power = -5.0, frequency = 2870e6)\n```\n\n### Set Up For Frequency Scan\n\nFrequency scan can either be triggered externally (using the Quantum Composer\n  Sapphire pulser, or other), or can run independent of any external control.\n\n```python\nchannel_A = 0\nchannel_B = 1\nrf_synth.set_frequency_sweep(channel_A, power = -5.0, frequency_low = 2820e6,\n                            frequency_high = 2920e6, n_steps = 101,\n                            trigger_mode = 'single frequency step',\n                            frequency_sample_time = 0.100)\n```\n\nSee the function's documentation for further details\n\n```python\nhelp(rf_synth.set_frequency_sweep)\n```\n\n### Turn RF ON/OFF\n\nThe RF generation can be turned on and off with\n\n```python\nchannel_A = 0\nchannel_B = 1\nrf_synth.rf_on(channel_A)\nrf_sythh.rf_off(channel_A)\n```\n\n### Windfreak.SynthHD\n\nIf you wish to use the `windfreak-python` SynthHD object instance directly, you\ncan obtain it from the property `SynthHD`. Usage of\n[windfreak-python is documented here](https://github.com/christian-hahn/windfreak-python).\n\n\n```python\nwindfreak_synthhd = rf_synth.SynthHD()\n\nprint(windfreak_synthhd[0].power)\nprint(windfreak_synthhd[0].frequency)\n```\n\nThe documentation is a little sparse, however. The full set of commands are found in\n\n  * [the code](https://github.com/christian-hahn/windfreak-python/blob/master/windfreak/synth_hd.py#L337)\n  * [the programming manual](https://windfreaktech.com/wp-content/uploads/2016/12/WFT_SerialProgramming_API_10b.pdf)\n\nIt can take a little effort to match the python API with the description in the manual as\nsome of the `windfreak-python` API functions do not exactly match the function name in the manual.\nFor example `sweep_single` in `windfreak-python` is called `sweep_run` or `run_sweep`\nin the programming manual.\n\n# LICENSE\n\n[LICENCE](LICENSE)\n",
    "bugtrack_url": null,
    "license": "BSD 3-Clause License  Copyright (c) 2022, University of Washington  Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.  3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ",
    "summary": "A package for controlling the Windfreak SynthHD RF generator.",
    "version": "1.0.1.dev1",
    "split_keywords": [
        "qt3",
        "microwave",
        "electron spin control",
        "windfreak",
        "synthhd",
        "rf generator",
        "rf synthesizer",
        "rf control",
        "rf"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "07bc8d232e261078053dd5644df3dd17108c895b70a949c542ee2fd85a6ada9c",
                "md5": "616e8cbd75bc036db0982eb4c1c44ca3",
                "sha256": "1886588f8c3eaf20340254b0c197834c3a571cbef9b633db60fd428e57d85918"
            },
            "downloads": -1,
            "filename": "qt3rfsynthcontrol-1.0.1.dev1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "616e8cbd75bc036db0982eb4c1c44ca3",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 8143,
            "upload_time": "2023-02-07T20:06:28",
            "upload_time_iso_8601": "2023-02-07T20:06:28.607986Z",
            "url": "https://files.pythonhosted.org/packages/07/bc/8d232e261078053dd5644df3dd17108c895b70a949c542ee2fd85a6ada9c/qt3rfsynthcontrol-1.0.1.dev1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "698191c429a8b6b9b204fa9eb4fdb2751843b0ccde4effbf65811a010bd86d17",
                "md5": "da329beea11b120db23ad2df7fd5c0b2",
                "sha256": "dce3916cd7cf699c730a7cfcc87887255c466e702ac28dbd5f74c59ff69adb12"
            },
            "downloads": -1,
            "filename": "qt3rfsynthcontrol-1.0.1.dev1.tar.gz",
            "has_sig": false,
            "md5_digest": "da329beea11b120db23ad2df7fd5c0b2",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 8170,
            "upload_time": "2023-02-07T20:06:29",
            "upload_time_iso_8601": "2023-02-07T20:06:29.779510Z",
            "url": "https://files.pythonhosted.org/packages/69/81/91c429a8b6b9b204fa9eb4fdb2751843b0ccde4effbf65811a010bd86d17/qt3rfsynthcontrol-1.0.1.dev1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-02-07 20:06:29",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "lcname": "qt3rfsynthcontrol"
}
        
Elapsed time: 0.04250s