Skip to main content

A python library for controlling ITLA and microITLA devices.

Project description

pytla

Currently only the source distribution on pip works.

pytla the Python (Integrable) Tunable Laser Assembly library!

This is meant to be an open source and relatively user friendly way to interact with Integrable Tubable Laser Assembly lasers. The pytla package provides a base class ITLA that can be extended for specific manufacturer requirements with another yaml register file to specify the new registers.

Current Specs Followed

  • OIF-ITLA-MSA-01.3.
    • This communication scheme supports microITLA 1.1 devices as well.

Status

This is very much a work in progress. Use at your own risk. I would call this pre-alpha but most functionality exists and we use it at SpectrumLab.

Hidden functions for each register (names the same as each register but in lowercase) are available. Some registers still don't have user friendly functions defined for them.

Example Usage

# import, initialize, and connect to laser
import pytla
laser = pytla.ITLA('/dev/ttyUSB0', 9600)
laser.connect()

# Set the frequency to 193.560 THz
laser.set_frequency(193.560)

# Set the power to 10 dBm
laser.set_power(10)

More info about features available currently can be found in pytla docs.

Paradigm

The basic paradigm we have used for implementing this library is one in which functions are created for all registers based on a yaml file specifying and describing each register. These are all implemented as hidden functions with a single underscore.

For simplicity all ITLA register functions are named as follows: assuming we have some register named REGISTER in the ITLA documentation the corresponding function would be _register().

For Manufacturers

If you would like to have a specific class available for your particular type of laser please create a yaml file as specified below and submit it for inclusion. Please also provide any details for the order of operations required to enable or activate your features.

This library was designed to be simple to extend for implementing manufacturer specific registers and functions. The first step is to create a yaml file containing all of the additional registers your laser will utilize. Each entry should have the following format.

RegisterName:
  register: 0x00
  fnname: registername
  description: >
    Here we provide a description of this particular register for documentation
    purposes. It is best to format this the same way you would a docstring as it
    will be read as a docstring.
  readonly: [true/false]
  AEA: [true/false]
  signed: [true/false]

You can name your register whatever you'd like and name the function for accessing it to whatever you'd like as long as it is acceptable for python. Generally a best practice is to make the register function name all lowercase and change dashes to underscores. The register value must be numeric. It can be base 10 but best practice is hex values.

Assuming you have installed the pytla package and your yaml register file is in the same folder as the file with the MyLaser class you can create a class with hidden functions for your registers implemented in addition to the basic ITLA1.3 registers and wrapper functions.

from itla import ITLA

class MyLaser(ITLA):

    def __init__(self, port, baudrate=9600):
        register_files = ['myregisters.yaml']
        super().__init__(port, baudrate=baudrate, register_files=register_files)

Acknowlegements

This work was done as a part of projects for

  • Montana State University
  • Spectrum Lab

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pytla-0.0.2.tar.gz (19.4 kB view details)

Uploaded Source

Built Distribution

pytla-0.0.2-py3-none-any.whl (19.7 kB view details)

Uploaded Python 3

File details

Details for the file pytla-0.0.2.tar.gz.

File metadata

  • Download URL: pytla-0.0.2.tar.gz
  • Upload date:
  • Size: 19.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.8.3

File hashes

Hashes for pytla-0.0.2.tar.gz
Algorithm Hash digest
SHA256 aaebeca7df716d0795ffccaf3b1f7bb1883c04e54053b35e7bd0b1181b1506d8
MD5 406e3e1f6e2d06722c5c0628fde8f042
BLAKE2b-256 da53b6bea7eb2a676b36e43c467285b173fca36fa94c1ed3bdb08172031958b4

See more details on using hashes here.

File details

Details for the file pytla-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: pytla-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 19.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.8.3

File hashes

Hashes for pytla-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 da5a9fcae8979feb4b3a17be966638d5e4719e0efde9f3b8684a0a235aab1cbd
MD5 58e6537d856b578f61e348e03912e895
BLAKE2b-256 38579d53466167155f2d5f18f41224cd2e4e92bcbd96e7d28a3bc0ae71bf053f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page