Example_Thorlabs_PM100D
This is an example of using the library.
1# %% ==========================================================================
2# Import and Definitions
3# =============================================================================
4import datetime
5import time
6
7import matplotlib.pyplot as plt
8import numpy as np
9import pandas as pd
10from tqdm import tqdm
11
12# Instrument Libraries Github: https://github.com/MartinMiroslavovMihaylov/Python_Instruments_Automation_Scripts
13# Install with:
14# pip install git+https://github.com/MartinMiroslavovMihaylov/Python_Instruments_Automation_Scripts.git
15# from Instruments_Libraries.PM100D import PM100D
16from Instruments_Libraries.InstrumentSelect import PowerMeter
17
18# %% ==========================================================================
19# Select Instruments and Load Instrument Libraries
20# =============================================================================
21# myPowermeter = PM100D('Seriennummer') # replace with your serial number # noqa: N816
22myPowermeter = PowerMeter() # noqa: N816
23
24# %% ==========================================================================
25# Setup the Measurement
26# =============================================================================
27num_of_points = 10
28sleep_time = 0.5
29wavelength = 1550 # nm
30
31# %% ==========================================================================
32# Configure the Instrument
33# =============================================================================
34myPowermeter.config_power()
35myPowermeter.set_auto_power_range('ON')
36myPowermeter.set_power_units('dBm')
37myPowermeter.set_wavelength(wavelength) # nm
38
39# %% ==========================================================================
40# Measurement
41# =============================================================================
42records = [] # Empty list to store data and meta data
43for idx in tqdm(range(num_of_points)):
44 rec = {} # single record
45 rec["Power_dBm"] = myPowermeter.get_power()
46 rec["WaveLength"] = myPowermeter.get_wavelength()
47 rec["Timestamps"] = datetime.datetime.now()
48 records.append(rec)
49 time.sleep(sleep_time)
50 temp = idx*np.pi # do something with idx
51
52# %% ==========================================================================
53# Create Dataframe
54# =============================================================================
55meas_df = pd.DataFrame.from_records(records)
56
57# %% ==========================================================================
58# Plot the Measurement
59# =============================================================================
60t0 = meas_df["Timestamps"].iloc[0]
61relative_time = (meas_df["Timestamps"] - t0).dt.total_seconds()
62
63plt.plot(relative_time, meas_df["Power_dBm"])
64plt.xlabel('Time (s)')
65plt.ylabel('Power (dBm)')
66plt.show()
67# %% ==========================================================================
68# Save Dataframe
69# =============================================================================
70# Save DataFrame to HDF5 (better than CSV)
71meas_df.to_hdf("measurements.h5", key="data", mode="w")
72# key="data" is like a "dataset name" inside the HDF5 file
73# (you can store multiple DataFrames in one file with different keys).
74# mode="w" overwrites the file. Use mode="a" if you want to append new datasets.
75
76# Later: Load it back
77loaded_df = pd.read_hdf("measurements.h5", key="data")
78print(loaded_df.head())
79
80#or
81
82# Save DataFrame to CSV
83meas_df.to_csv("measurements.csv", index=False)
84
85# Load it back, auto-parsing the "Timestamps" column as datetime
86loaded_df = pd.read_csv("measurements.csv", parse_dates=["Timestamps"])
87print(loaded_df.head())
88
89# %% ==========================================================================
90# Close Instrument
91# =============================================================================
92myPowermeter.Close()