A programban lehetőség van konfigurálni (egyelőre még kevés) beállítást. Ilyen pl. a precision
. Ez azt szabja meg, hogy a megjelenő számok hány tizedesjegyig legyenek kiírva. Ennek bemutatására gyorsan létrehozok egy interferogramot, majd koszinusz-függvény illesztésével kiértékelem.
import pysprint as ps
g = ps.Generator(1, 4, 3, delay=500, GD=0, GDD=540, normalize=True)
g.generate()
ifg = ps.CosFitMethod(*g.data)
print(ifg)
CosFitMethod ---------- Parameters ---------- Datapoints: 14129 Predicted domain: frequency Range: from 0.99997 to 4.00000 PHz Normalized: True Delay value: Not given SPP position(s): Not given ---------------------------- Metadata extracted from file ---------------------------- {}
ifg.GD_lookup(3, engine="normal")
The predicted GD is ± 505.74801 fs based on reference point of 3.00000.
A konfigurációt egy különleges with
contextmanagerrel tudjuk módosítani a következőképpen:
with ps.config.setting("beallitas_neve", beallitas_erteke):
...
Az eredményeket most 8 tizedesjegyig szeretném megkapni, így a futtatni kívánt kódot a with
blokk belsejébe írom.
with ps.config.setting("precision", 8):
ifg.optimizer(reference_point=3, order=2, initial_region_ratio=0.01, extend_by=0.01);
Working... -
c:\program files\python37\lib\site-packages\scipy\optimize\minpack.py:829: OptimizeWarning: Covariance of the parameters could not be estimated category=OptimizeWarning)
Working... \
Futtatva ugyan ezt a with
contextmanageren kívül már az alapértelmezett 5 tizedesjegyet használja a program:
ifg.optimizer(reference_point=3, order=2, initial_region_ratio=0.01, extend_by=0.01);
Working... /
c:\program files\python37\lib\site-packages\scipy\optimize\minpack.py:829: OptimizeWarning: Covariance of the parameters could not be estimated category=OptimizeWarning)
Working... /
Ez a konfigurációs beállítás (majdnem) az összes kiírt szám - beleérve a fájlba írt logokat is - tizedesjegyeinek számát szabályozza.
A programba beépített függvénnyel lehetőség van az
$X = \overline{x}_n \, \pm \, \frac{t_{N-1}}{\sqrt{N}}\sigma_{N-1}$képlettel adott mérési eredmény kiszámolására a következő módon:
import numpy as np
from pysprint.utils import measurement
# a mérési eredményeink
x = np.array([1.00, 1.10, 1.05, 0.79, 1.12])
# a függvény hívása 95%-os szignifikancia szint mellett
measurement(x, confidence=0.95);
A program telepítésével egy CLI, azaz Command Line Interface is telepítésre kerül. Ez a terminál/parancssor/Anaconda Prompt segítségével elérhető. A fő funkciója az, hogy sablonokat tud generálni az adott kiértékelési módszerhez, és ezt nem kell mindig újból beírni. Itt a munkafüzetben a !
-lel érhető el a terminál. Generáljunk egy WFT kiértékeléshez tartozó sablont:
!python -m pysprint --template wft
Created template wft-2020-11-06-12-33.py at C:\pyt\PySprint\doc
Attól függően, hogy hogyan települt a program a python -m
előtag elhagyható. Ez a következő fájlt generálta:
!type wft-2020-11-06-12-33.py
## PySprint generated template file ## Created at : 2020-11-06 12:33:15.495056 ## Method used here : WFTMethod import numpy as np import matplotlib.pyplot as plt import pysprint as ps # -----------------------------LOADING DATA----------------------------------- ifg = ps.WFTMethod.parse_raw( "ifg_file.txt", skiprows=0, decimal=".", sep=None, delimiter=None, comment=None, usecols=None, names=None, swapaxes=False, na_values=None, skip_blank_lines=True, keep_default_na=False, meta_len=1 ) # -----------------------------PREPROCESSING----------------------------------- ## change range if needed # ifg.chrange(current_unit, target_unit) ## change to frequency domain if needed # ifg.chdomain() ## slice domain if needed # ifg.slice(start, stop) ## Optionally plot the interferogram # ifg.plot() # ifg.show() # ------------------------------CALCULATION------------------------------------ ## safely remove everything to ensure proper windows # ifg.remove_all_windows() ## Add a window sequence # ifg.add_window_linspace(start, stop, number, fwhm=None, std=None, order=2) # OR # ifg.add_window_arange(start, stop, step, fwhm=None, std=None, order=2) # OR # ifg.add_window_geomspace(start, stop, number, fwhm=None, std=None, order=2) # OR # ifg.add_window(center, fwhm=None, std=None, order=2) ## Optionally remove windows # ifg.remove_window_at(center) # ifg.remove_window_interval(start, stop) ## Calculate immediately # ifg.calculate(reference_point, order, fastmath=False, parallel=False) ## Plot the heatmap # ifg.heatmap() # OR # Build only the GD # GD_curve = ifg.build_GD(fastmath=False, parallel=False) ## Preprocess the GD optionally # GD_curve.slice(start, stop) ## Fit the GD # GD_curve.fit(reference_point, order) ## Plot the fitting and errors optionally # GD_curve.plot() # GD_curve.errorplot()
A wft
mellett a cff
, spp
, mm
, és fft
kulcsszavakkal generálható a megfelelő sablon fájl.