{ "cells": [ { "cell_type": "markdown", "id": "5ff42d12-9b18-4f1a-9605-a8c9d0f774ef", "metadata": {}, "source": [ "# Jupyter Notebook (Python) script for recreating Fig.01" ] }, { "cell_type": "markdown", "id": "bea32c7f-46f1-4c94-a2ea-6799d3671361", "metadata": {}, "source": [ "- date: 2024-06-05\n", "- author: Tim Vogel\n", "- group: Photonics and Ultrafast Laser Science (PULS), Ruhr-University Bochum, Germany" ] }, { "cell_type": "code", "execution_count": 1, "id": "c1c03055-2e70-4e60-be83-4268a805610b", "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "from matplotlib.ticker import EngFormatter\n", "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 2, "id": "21c826a0-9f74-4fc0-9fc1-f20f79dae253", "metadata": {}, "outputs": [], "source": [ "SMALL_SIZE = 8\n", "MEDIUM_SIZE = 8\n", "BIGGER_SIZE = 12\n", "\n", "plt.rc('font', size=SMALL_SIZE) # controls default text sizes\n", "plt.rc('axes', titlesize=SMALL_SIZE) # fontsize of the axes title\n", "plt.rc('axes', labelsize=MEDIUM_SIZE) # fontsize of the x and y labels\n", "plt.rc('xtick', labelsize=SMALL_SIZE) # fontsize of the tick labels\n", "plt.rc('ytick', labelsize=SMALL_SIZE) # fontsize of the tick labels\n", "plt.rc('legend', fontsize=SMALL_SIZE) # legend fontsize\n", "plt.rc('figure', titlesize=BIGGER_SIZE) # fontsize of the figure title" ] }, { "cell_type": "code", "execution_count": 3, "id": "c63a3cd4-f009-4693-8665-990901957fb8", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
methodtypegeometrymaterialemitter_compactsub_materialextraexcitation_wavelengthrepetition_rateexcitation_power...field_strength_V_per_cmbandwidth_frequencythz_power_metertemperatureyeardoititlecommentour_resultcooling
0optical rectificationinorganictilted pulse frontlithium niobateInorganicNaNTi:Sapphire8.000000e-07200000.00.460000...NaNNaNHe-cooled Si bolometer772003https://doi.org/10.1063/1.1617371Efficient generation of subpicosecond terahert...NaNNaNTrue
1optical rectificationinorganictilted pulse frontlithium niobateInorganicstoichiometricYb bulk solid state laser1.030000e-061000.00.400000...NaN2.500000e+12Liquid helium cooled bolometer (Infrared Labs)...NaN2007https://doi.org/10.1364/OE.15.011706Efficient terahertz generation by optical rect...NaNNaNFalse
2optical rectificationinorganictilted pulse frontlithium niobateInorganicNaNTi:Sapphire8.000000e-0710.00.200000...NaNNaNNaN300(?)2007https://doi.org/10.1063/1.2734374Generation of 10 µJ ultrashort terahertz pulse...NaNNaNFalse
3optical rectificationinorganictilted pulse frontlithium niobateInorganicNaNYb-doped fiber1.035000e-061000000.014.000000...NaNNaNNaN300(?)2008https://doi.org/10.1063/1.2998609Fiber laser pumped high average power single-c...NaNNaNFalse
4optical rectificationinorganictilted pulse frontlithium niobateInorganicNaNTi:Sapphire7.800000e-071000.04.000000...NaNNaNNaN300(?)2011https://doi.org/10.1063/1.3560062Single-cycle terahertz pulses with amplitudes ...NaNNaNFalse
5optical rectificationinorganictilted pulse frontlithium niobateInorganicNaNYb:YAG CPA1.300000e-0610.00.500000...NaNNaNpyroelectric detector (Microtech Instruments)3002012https://doi.org/10.1364/OL.37.000557Generation of sub-mJ terahertz pulses by optic...NaNNaNFalse
6optical rectificationinorganictilted pulse frontlithium niobateInorganicNaNYb:YAG, CPA1.030000e-0610.00.500000...NaNNaNNaN3002012https://doi.org/10.1364/OL.37.000557Generation of sub-mJ terahertz pulses by optic...NaNNaNFalse
7optical rectificationinorganictilted pulse frontlithium niobateInorganiccongruentYb-doped fiber laser, Regen. Compressor1.030000e-061000.01.200000...NaNNaNPyroelectric (Microtech Instruments)1502013https://doi.org/10.1364/OL.38.000796High conversion efficiency, high energy terahe...NaNNaNTrue
8optical rectificationinorganictilted pulse frontlithium niobateInorganicstoichiometricYb:CaF2 laser; Chirped Pulses1.030000e-0610.00.120000...NaN1.600000e+12Pyroelectric (Microtech Instruments)252013https://doi.org/10.1364/OL.38.005373Pump pulse width and temperature effects in li...NaNNaNTrue
9optical rectificationinorganictilted pulse frontlithium niobateInorganicNaNYb:YAG, CPA1.030000e-0610.00.300000...NaNNaNPyroelectric detector (Microtech Instruments)232014https://doi.org/10.1364/OE.22.020155Efficient generation of THz pulses with 0.4 mJ...NaNNaNTrue
10optical rectificationinorganictilted pulse frontlithium niobateInorganicstoichiometricYb-doped fiber laser1.042000e-06100000.01.100000...NaN4.000000e+12NaN3002014https://doi.org/10.1109/TTHZ.2014.2327377Generation and Detection of THz Pulses With a ...NaNNaNFalse
11optical rectificationinorganictilted pulse frontlithium niobateInorganicNaNChirped Ti:Sapphire Pulses8.000000e-07100.0NaN...NaNNaNNaN3002014https://doi.org/10.1364/OL.39.004333Effect of extreme pump pulse reshaping on inte...NaNNaNFalse
12optical rectificationinorganictilted pulse frontlithium niobateInorganicNaNYb:YAG, CPA1.030000e-0610.00.566234...NaNNaNPyroelectric detector (Microtech Instruments)3002014https://doi.org/10.1364/OE.22.020155Efficient generation of THz pulses with 0.4 mJ...NaNNaNFalse
13optical rectificationinorganictilted pulse frontlithium niobateInorganicstoichiometricYb:YAG oscillator1.030000e-0650000.06.000000...NaNNaNNaN3002014https://doi.org/10.1364/OL.39.006604800-fs, 330-μJ pulses from a 100-W regenerativ...NaNNaNFalse
14optical rectificationinorganictilted pulse frontlithium niobateInorganicstoichiometricYb:YAG thin-disk1.030000e-061000.07.400000...NaN1.200000e+12NaN3002015https://doi.org/10.1364/OE.23.015057Yb:YAG thin-disk chirped pulse amplification l...NaNNaNFalse
15optical rectificationinorganictilted pulse frontlithium niobateInorganicNaNTelescope Ti:Sapphire Pulses8.000000e-07NaN0.000000...NaNNaNNaN1502016https://doi.org/10.1364/OE.24.014828Generation of 0.19-mJ THz pulses in LiNbO3 dri...NaNNaNTrue
16optical rectificationinorganictilted pulse frontlithium niobateInorganicNaNTi:Sapphire Amp.8.000000e-07500.00.469697...44000000.02.500000e+12TK power meter and a Microtech pyroelectric de...1002016https://doi.org/10.1364/OE.24.005057THz generation using a reflective stair-step e...NaNNaNTrue
17optical rectificationinorganictilted pulse frontlithium niobateInorganicNaNChirped Ti:Sapphire Pulses8.000000e-0710.00.667000...NaNNaNNaN3002018https://doi.org/10.1364/OE.26.007107Highly efficient generation of 0.2 mJ terahert...NaNNaNFalse
18optical rectificationinorganictilted pulse frontlithium niobateInorganicNaNYb:LuAg TDO + MPC1.030000e-0613300000.0118.000000...NaNNaNNaN3002020https://doi.org/10.1364/OL.386305Single-cycle, MHz repetition rate THz source w...NaNyesFalse
19optical rectificationinorganictilted pulse frontlithium niobateInorganicstoichiometricYb:YAG amplifier + MPC1.030000e-06100000.0352.000000...140000.02.500000e+12Ophir 3A-P-THz3002020https://doi.org/10.1364/OE.389653Enabling high repetition rate nonlinear THz sc...NaNNaNFalse
20optical rectificationinorganictilted pulse frontlithium niobateInorganicNaNChirped Ti:Sapphire8.000000e-075.00.500000...NaN1.500000e+12Tydex Golay cell3002021https://doi.org/10.1364/OE.419709Efficient generation of a high-field terahertz...NaNNaNFalse
21optical rectificationinorganictilted pulse frontlithium niobateInorganicNaNChirped Ti:Sapphire8.000000e-0710.02.140000...6300000.02.400000e+12Gentec SDX-1152912021https://doi.org/10.1002/lpor.2020002951.4-mJ High Energy Terahertz Radiation from Li...NaNNaNTrue
22optical rectificationinorganictilted pulse frontlithium niobateInorganicstoichiometricYb:YAG amplifier1.024000e-0925000.05.675000...NaN2.500000e+12Gentec-EO_THZ5I-BL-BNC3002022https://doi.org/10.1364/PRJ.428418Near-optimal intense and powerful terahertz so...NaNNaNFalse
23optical rectificationinorganictilted pulse frontlithium niobateInorganiccongruentTi:Sapphire8.000000e-071.00.450000...NaNNaNEnergy meter Gentec SDX-11523002023https://doi.org/10.1002/adma.202208947Generation of 13.9-mJ Terahertz Radiation from...NaNNaNFalse
24optical rectificationinorganictilted pulse frontlithium niobateInorganiccongruentTi:Sapphire8.000000e-071.01.200000...750000000.01.000000e+12Energy meter Gentec SDX-11521002023https://doi.org/10.1002/adma.202208947Generation of 13.9-mJ Terahertz Radiation from...NaNNaNTrue
25optical rectificationinorganictilted pulse frontlithium niobateInorganicstoichiometricYb-based regen. amp. (Trumpf Dira 500-10)1.030000e-06100000.0415.000000...NaN1.500000e+12Ophir 3A-P-THz802023https://doi.org/10.1364/cleo_si.2023.sf3i.1643 mW Average Power Lithium Niobate THz SourceNaNyesTrue
26optical rectificationinorganictilted pulse frontlithium niobateInorganicstoichiometricYb-based regen. amp. (Trumpf Dira 500-10)1.030000e-0640000.0400.000000...NaN1.500000e+12Ophir 3A-P-THz802023https://doi.org/10.1364/cleo_si.2023.sf3i.1643 mW Average Power Lithium Niobate THz SourceNaNyesTrue
\n", "

27 rows × 26 columns

\n", "
" ], "text/plain": [ " method type geometry material \\\n", "0 optical rectification inorganic tilted pulse front lithium niobate \n", "1 optical rectification inorganic tilted pulse front lithium niobate \n", "2 optical rectification inorganic tilted pulse front lithium niobate \n", "3 optical rectification inorganic tilted pulse front lithium niobate \n", "4 optical rectification inorganic tilted pulse front lithium niobate \n", "5 optical rectification inorganic tilted pulse front lithium niobate \n", "6 optical rectification inorganic tilted pulse front lithium niobate \n", "7 optical rectification inorganic tilted pulse front lithium niobate \n", "8 optical rectification inorganic tilted pulse front lithium niobate \n", "9 optical rectification inorganic tilted pulse front lithium niobate \n", "10 optical rectification inorganic tilted pulse front lithium niobate \n", "11 optical rectification inorganic tilted pulse front lithium niobate \n", "12 optical rectification inorganic tilted pulse front lithium niobate \n", "13 optical rectification inorganic tilted pulse front lithium niobate \n", "14 optical rectification inorganic tilted pulse front lithium niobate \n", "15 optical rectification inorganic tilted pulse front lithium niobate \n", "16 optical rectification inorganic tilted pulse front lithium niobate \n", "17 optical rectification inorganic tilted pulse front lithium niobate \n", "18 optical rectification inorganic tilted pulse front lithium niobate \n", "19 optical rectification inorganic tilted pulse front lithium niobate \n", "20 optical rectification inorganic tilted pulse front lithium niobate \n", "21 optical rectification inorganic tilted pulse front lithium niobate \n", "22 optical rectification inorganic tilted pulse front lithium niobate \n", "23 optical rectification inorganic tilted pulse front lithium niobate \n", "24 optical rectification inorganic tilted pulse front lithium niobate \n", "25 optical rectification inorganic tilted pulse front lithium niobate \n", "26 optical rectification inorganic tilted pulse front lithium niobate \n", "\n", " emitter_compact sub_material extra \\\n", "0 Inorganic NaN Ti:Sapphire \n", "1 Inorganic stoichiometric Yb bulk solid state laser \n", "2 Inorganic NaN Ti:Sapphire \n", "3 Inorganic NaN Yb-doped fiber \n", "4 Inorganic NaN Ti:Sapphire \n", "5 Inorganic NaN Yb:YAG CPA \n", "6 Inorganic NaN Yb:YAG, CPA \n", "7 Inorganic congruent Yb-doped fiber laser, Regen. Compressor \n", "8 Inorganic stoichiometric Yb:CaF2 laser; Chirped Pulses \n", "9 Inorganic NaN Yb:YAG, CPA \n", "10 Inorganic stoichiometric Yb-doped fiber laser \n", "11 Inorganic NaN Chirped Ti:Sapphire Pulses \n", "12 Inorganic NaN Yb:YAG, CPA \n", "13 Inorganic stoichiometric Yb:YAG oscillator \n", "14 Inorganic stoichiometric Yb:YAG thin-disk \n", "15 Inorganic NaN Telescope Ti:Sapphire Pulses \n", "16 Inorganic NaN Ti:Sapphire Amp. \n", "17 Inorganic NaN Chirped Ti:Sapphire Pulses \n", "18 Inorganic NaN Yb:LuAg TDO + MPC \n", "19 Inorganic stoichiometric Yb:YAG amplifier + MPC \n", "20 Inorganic NaN Chirped Ti:Sapphire \n", "21 Inorganic NaN Chirped Ti:Sapphire \n", "22 Inorganic stoichiometric Yb:YAG amplifier \n", "23 Inorganic congruent Ti:Sapphire \n", "24 Inorganic congruent Ti:Sapphire \n", "25 Inorganic stoichiometric Yb-based regen. amp. (Trumpf Dira 500-10) \n", "26 Inorganic stoichiometric Yb-based regen. amp. (Trumpf Dira 500-10) \n", "\n", " excitation_wavelength repetition_rate excitation_power ... \\\n", "0 8.000000e-07 200000.0 0.460000 ... \n", "1 1.030000e-06 1000.0 0.400000 ... \n", "2 8.000000e-07 10.0 0.200000 ... \n", "3 1.035000e-06 1000000.0 14.000000 ... \n", "4 7.800000e-07 1000.0 4.000000 ... \n", "5 1.300000e-06 10.0 0.500000 ... \n", "6 1.030000e-06 10.0 0.500000 ... \n", "7 1.030000e-06 1000.0 1.200000 ... \n", "8 1.030000e-06 10.0 0.120000 ... \n", "9 1.030000e-06 10.0 0.300000 ... \n", "10 1.042000e-06 100000.0 1.100000 ... \n", "11 8.000000e-07 100.0 NaN ... \n", "12 1.030000e-06 10.0 0.566234 ... \n", "13 1.030000e-06 50000.0 6.000000 ... \n", "14 1.030000e-06 1000.0 7.400000 ... \n", "15 8.000000e-07 NaN 0.000000 ... \n", "16 8.000000e-07 500.0 0.469697 ... \n", "17 8.000000e-07 10.0 0.667000 ... \n", "18 1.030000e-06 13300000.0 118.000000 ... \n", "19 1.030000e-06 100000.0 352.000000 ... \n", "20 8.000000e-07 5.0 0.500000 ... \n", "21 8.000000e-07 10.0 2.140000 ... \n", "22 1.024000e-09 25000.0 5.675000 ... \n", "23 8.000000e-07 1.0 0.450000 ... \n", "24 8.000000e-07 1.0 1.200000 ... \n", "25 1.030000e-06 100000.0 415.000000 ... \n", "26 1.030000e-06 40000.0 400.000000 ... \n", "\n", " field_strength_V_per_cm bandwidth_frequency \\\n", "0 NaN NaN \n", "1 NaN 2.500000e+12 \n", "2 NaN NaN \n", "3 NaN NaN \n", "4 NaN NaN \n", "5 NaN NaN \n", "6 NaN NaN \n", "7 NaN NaN \n", "8 NaN 1.600000e+12 \n", "9 NaN NaN \n", "10 NaN 4.000000e+12 \n", "11 NaN NaN \n", "12 NaN NaN \n", "13 NaN NaN \n", "14 NaN 1.200000e+12 \n", "15 NaN NaN \n", "16 44000000.0 2.500000e+12 \n", "17 NaN NaN \n", "18 NaN NaN \n", "19 140000.0 2.500000e+12 \n", "20 NaN 1.500000e+12 \n", "21 6300000.0 2.400000e+12 \n", "22 NaN 2.500000e+12 \n", "23 NaN NaN \n", "24 750000000.0 1.000000e+12 \n", "25 NaN 1.500000e+12 \n", "26 NaN 1.500000e+12 \n", "\n", " thz_power_meter temperature year \\\n", "0 He-cooled Si bolometer 77 2003 \n", "1 Liquid helium cooled bolometer (Infrared Labs)... NaN 2007 \n", "2 NaN 300(?) 2007 \n", "3 NaN 300(?) 2008 \n", "4 NaN 300(?) 2011 \n", "5 pyroelectric detector (Microtech Instruments) 300 2012 \n", "6 NaN 300 2012 \n", "7 Pyroelectric (Microtech Instruments) 150 2013 \n", "8 Pyroelectric (Microtech Instruments) 25 2013 \n", "9 Pyroelectric detector (Microtech Instruments) 23 2014 \n", "10 NaN 300 2014 \n", "11 NaN 300 2014 \n", "12 Pyroelectric detector (Microtech Instruments) 300 2014 \n", "13 NaN 300 2014 \n", "14 NaN 300 2015 \n", "15 NaN 150 2016 \n", "16 TK power meter and a Microtech pyroelectric de... 100 2016 \n", "17 NaN 300 2018 \n", "18 NaN 300 2020 \n", "19 Ophir 3A-P-THz 300 2020 \n", "20 Tydex Golay cell 300 2021 \n", "21 Gentec SDX-1152 91 2021 \n", "22 Gentec-EO_THZ5I-BL-BNC 300 2022 \n", "23 Energy meter Gentec SDX-1152 300 2023 \n", "24 Energy meter Gentec SDX-1152 100 2023 \n", "25 Ophir 3A-P-THz 80 2023 \n", "26 Ophir 3A-P-THz 80 2023 \n", "\n", " doi \\\n", "0 https://doi.org/10.1063/1.1617371 \n", "1 https://doi.org/10.1364/OE.15.011706 \n", "2 https://doi.org/10.1063/1.2734374 \n", "3 https://doi.org/10.1063/1.2998609 \n", "4 https://doi.org/10.1063/1.3560062 \n", "5 https://doi.org/10.1364/OL.37.000557 \n", "6 https://doi.org/10.1364/OL.37.000557 \n", "7 https://doi.org/10.1364/OL.38.000796 \n", "8 https://doi.org/10.1364/OL.38.005373 \n", "9 https://doi.org/10.1364/OE.22.020155 \n", "10 https://doi.org/10.1109/TTHZ.2014.2327377 \n", "11 https://doi.org/10.1364/OL.39.004333 \n", "12 https://doi.org/10.1364/OE.22.020155 \n", "13 https://doi.org/10.1364/OL.39.006604 \n", "14 https://doi.org/10.1364/OE.23.015057 \n", "15 https://doi.org/10.1364/OE.24.014828 \n", "16 https://doi.org/10.1364/OE.24.005057 \n", "17 https://doi.org/10.1364/OE.26.007107 \n", "18 https://doi.org/10.1364/OL.386305 \n", "19 https://doi.org/10.1364/OE.389653 \n", "20 https://doi.org/10.1364/OE.419709 \n", "21 https://doi.org/10.1002/lpor.202000295 \n", "22 https://doi.org/10.1364/PRJ.428418 \n", "23 https://doi.org/10.1002/adma.202208947 \n", "24 https://doi.org/10.1002/adma.202208947 \n", "25 https://doi.org/10.1364/cleo_si.2023.sf3i.1 \n", "26 https://doi.org/10.1364/cleo_si.2023.sf3i.1 \n", "\n", " title comment our_result \\\n", "0 Efficient generation of subpicosecond terahert... NaN NaN \n", "1 Efficient terahertz generation by optical rect... NaN NaN \n", "2 Generation of 10 µJ ultrashort terahertz pulse... NaN NaN \n", "3 Fiber laser pumped high average power single-c... NaN NaN \n", "4 Single-cycle terahertz pulses with amplitudes ... NaN NaN \n", "5 Generation of sub-mJ terahertz pulses by optic... NaN NaN \n", "6 Generation of sub-mJ terahertz pulses by optic... NaN NaN \n", "7 High conversion efficiency, high energy terahe... NaN NaN \n", "8 Pump pulse width and temperature effects in li... NaN NaN \n", "9 Efficient generation of THz pulses with 0.4 mJ... NaN NaN \n", "10 Generation and Detection of THz Pulses With a ... NaN NaN \n", "11 Effect of extreme pump pulse reshaping on inte... NaN NaN \n", "12 Efficient generation of THz pulses with 0.4 mJ... NaN NaN \n", "13 800-fs, 330-μJ pulses from a 100-W regenerativ... NaN NaN \n", "14 Yb:YAG thin-disk chirped pulse amplification l... NaN NaN \n", "15 Generation of 0.19-mJ THz pulses in LiNbO3 dri... NaN NaN \n", "16 THz generation using a reflective stair-step e... NaN NaN \n", "17 Highly efficient generation of 0.2 mJ terahert... NaN NaN \n", "18 Single-cycle, MHz repetition rate THz source w... NaN yes \n", "19 Enabling high repetition rate nonlinear THz sc... NaN NaN \n", "20 Efficient generation of a high-field terahertz... NaN NaN \n", "21 1.4-mJ High Energy Terahertz Radiation from Li... NaN NaN \n", "22 Near-optimal intense and powerful terahertz so... NaN NaN \n", "23 Generation of 13.9-mJ Terahertz Radiation from... NaN NaN \n", "24 Generation of 13.9-mJ Terahertz Radiation from... NaN NaN \n", "25 643 mW Average Power Lithium Niobate THz Source NaN yes \n", "26 643 mW Average Power Lithium Niobate THz Source NaN yes \n", "\n", " cooling \n", "0 True \n", "1 False \n", "2 False \n", "3 False \n", "4 False \n", "5 False \n", "6 False \n", "7 True \n", "8 True \n", "9 True \n", "10 False \n", "11 False \n", "12 False \n", "13 False \n", "14 False \n", "15 True \n", "16 True \n", "17 False \n", "18 False \n", "19 False \n", "20 False \n", "21 True \n", "22 False \n", "23 False \n", "24 True \n", "25 True \n", "26 True \n", "\n", "[27 rows x 26 columns]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "odata = pd.read_csv(\"Fig.01_literature_lithium_niobate_sources.csv\", index_col=0)\n", "odata" ] }, { "cell_type": "code", "execution_count": 6, "id": "2adf8d4a-12ab-4844-a943-9bdc1cdb9933", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "WIDTH_SIZE = 8.6/2.54\n", "HEIGHT_SIZE = 5/2.54\n", "fig, ax = plt.subplots(figsize=(WIDTH_SIZE, HEIGHT_SIZE))\n", "ax.set_yscale('log')\n", "ax.set_xlabel('Publication year')\n", "ax.set_ylabel('THz average power (W)')\n", "for idx in odata.index:\n", " if odata.loc[idx, \"our_result\"] == \"yes\":\n", " if odata.loc[idx, \"repetition_rate\"] > 1e6:\n", " ax.scatter(odata.loc[idx, \"year\"], odata.loc[idx, \"thz_average_power\"], marker=\"o\", s=5**2, alpha=0.7, color=\"black\")\n", " elif odata.loc[idx, \"thz_average_power\"] < 500e-3:\n", " ax.scatter(odata.loc[idx, \"year\"], odata.loc[idx, \"thz_average_power\"], marker=\"*\", s=8**2, alpha=0.8, color=\"tab:blue\")\n", " elif odata.loc[idx, \"thz_average_power\"] > 500e-3:\n", " ax.scatter(odata.loc[idx, \"year\"], odata.loc[idx, \"thz_average_power\"], marker=\"*\", s=8**2, alpha=0.8, color=\"tab:orange\")\n", " else:\n", " ax.scatter(odata.loc[idx, \"year\"], odata.loc[idx, \"thz_average_power\"], marker=\"o\", s=5**2, alpha=0.7, color=\"black\")\n", "ax.legend([\"Literature\", \"Our result\"])\n", "line1 = ax.scatter([], [], marker=\"o\", label=\"Literature\", color=\"black\", alpha=0.7)\n", "line2 = ax.scatter([], [], marker=\"*\", label=\"Our results\", color=\"black\", alpha=0.8)\n", "ax.legend(handles=[line1, line2], loc=\"upper left\")\n", "ax.grid(True)\n", "ax.set_axisbelow(True)\n", "ax.set_ylim(top=2)\n", "fig.tight_layout()\n", "plt.savefig(\"Fig.01_THzPowerYear.png\", dpi=600, facecolor=\"white\")" ] }, { "cell_type": "code", "execution_count": null, "id": "a478177a-9d7e-4335-affd-38761fe3d917", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.5" } }, "nbformat": 4, "nbformat_minor": 5 }