Example_Thorlabs_PM100D
This is an example of using the library.
1# %% ==========================================================================
2# Import and Definitions
3# =============================================================================
4import time
5import datetime
6import pandas as pd
7import numpy as np
8import matplotlib.pyplot as plt
9from tqdm import tqdm
10
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
16# from Instruments_Libraries.PM100D import PM100D
17from Instruments_Libraries.InstrumentSelect import PowerMeter
18
19# %% ==========================================================================
20# Select Instruments and Load Instrument Libraries
21# =============================================================================
22# myPowermeter = PM100D('Seriennummer') # replace with your serial number
23myPowermeter = PowerMeter()
24
25# %% ==========================================================================
26# Setup the Measurement
27# =============================================================================
28num_of_points = 10
29sleep_time = 0.5
30wavelength = 1550 # nm
31
32# %% ==========================================================================
33# Configure the Instrument
34# =============================================================================
35myPowermeter.ConfigPower()
36myPowermeter.set_AutoPowerRange('ON')
37myPowermeter.set_PowerUnits('dBm')
38myPowermeter.set_WaveLength(wavelength) # nm
39
40# %% ==========================================================================
41# Measurement
42# =============================================================================
43records = [] # Empty list to store data and meta data
44for i in tqdm(range(num_of_points)):
45 rec = {} # single record
46 rec["Power_dBm"] = myPowermeter.get_Power()
47 rec["WaveLength"] = myPowermeter.ask_Wavelength()
48 rec["Timestamps"] = datetime.datetime.now()
49 records.append(rec)
50 time.sleep(sleep_time)
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()