PEMtk fitting setup & batch run demo
01/09/22
Outline of this notebook:
Use
setup_fit_demo.py
script to load data and setup fitting environment.Run a batch of fits…
-
Serial with
self.fit()
method.Parallel fitting routine with
self.multiFit()
method. This uses XYZpy library for quick parallelization.
load a batch
-
Exploring the results… see the “analysis” notebook for more.
Versions
06/06/21 v1
22/08/22 v2
01/09/22 v2b
v2b updated version including:
Data IO with
self.writeFitData()
method.fitting now supports additional backends, these are set in
self.fitOpts
. For a list of available backends runself.backends()
. Currently this implements support for AF or MF fitting routines.
Setup
[1]:
# Import & set paths
import pemtk
from pemtk.fit.fitClass import pemtkFit
from pathlib import Path
# Path for demo script
demoPath = Path(pemtk.__file__).parent.parent/Path('demos','fitting')
# Run demo script to configure workspace
%run {demoPath/"setup_fit_demo.py"}
*** ePSproc installation not found, setting for local copy.
* Setting plotter defaults with epsproc.basicPlotters.setPlotters(). Run directly to modify, or change options in local env.
* Set Holoviews with bokeh.
C:\Users\femtolab\.conda\envs\ePSdev\lib\site-packages\xyzpy\plot\xyz_cmaps.py:6: MatplotlibDeprecationWarning:
The revcmap function was deprecated in Matplotlib 3.2 and will be removed two minor releases later. Use Colormap.reversed() instead.
return LinearSegmentedColormap(name, cm.revcmap(cmap._segmentdata))
*** Setting up demo fitting workspace and main `data` class object...
For more details see https://pemtk.readthedocs.io/en/latest/fitting/PEMtk_fitting_basic_demo_030621-full.html
To use local source code, pass the parent path to this script at run time, e.g. "setup_fit_demo ~/github"
* Loading packages...
* Set Holoviews with bokeh.
* Loading demo matrix element data from D:\code\github\ePSproc\data\photoionization\n2_multiorb...
*** Job subset details
Key: subset
No 'job' info set for self.data[subset].
*** Job orb6 details
Key: orb6
Dir D:\code\github\ePSproc\data\photoionization\n2_multiorb, 1 file(s).
{ 'batch': 'ePS n2, batch n2_1pu_0.1-50.1eV, orbital A2',
'event': ' N2 A-state (1piu-1)',
'orbE': -17.096913836366,
'orbLabel': '1piu-1'}
*** Job orb5 details
Key: orb5
Dir D:\code\github\ePSproc\data\photoionization\n2_multiorb, 1 file(s).
{ 'batch': 'ePS n2, batch n2_3sg_0.1-50.1eV, orbital A2',
'event': ' N2 X-state (3sg-1)',
'orbE': -17.341816310545997,
'orbLabel': '3sg-1'}
* Loading demo ADM data from D:\code\github\ePSproc\data\alignment\N2_ADM_VM_290816.mat...
* Subselecting data...
Subselected from dataset 'orb5', dataType 'matE': 36 from 11016 points (0.33%)
Subselected from dataset 'pol', dataType 'pol': 1 from 3 points (33.33%)
Subselected from dataset 'ADM', dataType 'ADM': 52 from 14764 points (0.35%)
* Calculating AF-BLMs...
Subselected from dataset 'sim', dataType 'AFBLM': 195 from 195 points (100.00%)
*Setting up fit parameters (with constraints)...
Set 6 complex matrix elements to 12 fitting params, see self.params for details.
C:\Users\femtolab\.conda\envs\ePSdev\lib\site-packages\pandas\core\generic.py:3939: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
self._update_inplace(obj)
Auto-setting parameters.
name | value | initial value | min | max | vary | expression |
---|---|---|---|---|---|---|
m_PU_SG_PU_1_n1_1_1 | 1.78461575 | 1.784615753610107 | 1.0000e-04 | 5.00000000 | True | |
m_PU_SG_PU_1_1_n1_1 | 1.78461575 | 1.784615753610107 | 1.0000e-04 | 5.00000000 | False | m_PU_SG_PU_1_n1_1_1 |
m_PU_SG_PU_3_n1_1_1 | 0.80290495 | 0.802904951323892 | 1.0000e-04 | 5.00000000 | True | |
m_PU_SG_PU_3_1_n1_1 | 0.80290495 | 0.802904951323892 | 1.0000e-04 | 5.00000000 | False | m_PU_SG_PU_3_n1_1_1 |
m_SU_SG_SU_1_0_0_1 | 2.68606212 | 2.686062120382649 | 1.0000e-04 | 5.00000000 | True | |
m_SU_SG_SU_3_0_0_1 | 1.10915311 | 1.109153108617096 | 1.0000e-04 | 5.00000000 | True | |
p_PU_SG_PU_1_n1_1_1 | -0.86104140 | -0.8610414024232179 | -3.14159265 | 3.14159265 | False | |
p_PU_SG_PU_1_1_n1_1 | -0.86104140 | -0.8610414024232179 | -3.14159265 | 3.14159265 | False | p_PU_SG_PU_1_n1_1_1 |
p_PU_SG_PU_3_n1_1_1 | -3.12044446 | -3.1204444620772467 | -3.14159265 | 3.14159265 | True | |
p_PU_SG_PU_3_1_n1_1 | -3.12044446 | -3.1204444620772467 | -3.14159265 | 3.14159265 | False | p_PU_SG_PU_3_n1_1_1 |
p_SU_SG_SU_1_0_0_1 | 2.61122920 | 2.611229196458127 | -3.14159265 | 3.14159265 | True | |
p_SU_SG_SU_3_0_0_1 | -0.07867828 | -0.07867827542158025 | -3.14159265 | 3.14159265 | True |
*** Setup demo fitting workspace OK.
Run fits
For this notebook, we’ll either (a) run a batch of fits or (b) load sample data.
With the current codebase, running multiple fits will default to using the same basis set, and output results sequentially to the main self.data
dictionary.
Update 20/08/22: fitting now supports additional backends, these are set in self.fitOpts
. For a list of available backends run self.backends()
. Currently this implements support for AF or MF fitting routines.
Benchmarks for an AMD Threadripper 2950X (16 core) system.
(a) Run a batch
(1) serial execution
Either:
Manually with a loop.
With
self.multiFit()
method, although this is optimised for parallel execution (see below).
[2]:
import time
start = time.time()
# Maual execution
for n in range(0,100):
data.randomizeParams()
data.fit()
end = time.time()
print((end - start)/60)
# Or run with self.multiFit(parallel = False)
# data.multiFit(nRange = [0,100], parallel = False)
30.742977670828502
[3]:
# We now have 100 fit results
data.data.keys()
[3]:
dict_keys(['subset', 'orb6', 'orb5', 'ADM', 'pol', 'sim', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99])
[4]:
# Quick data dump
# TODO: better save routine (json/h5).
# Now wrapped in self.writeFitData(), see https://github.com/phockett/PEMtk/issues/6 and docs at https://epsproc.readthedocs.io/en/dev/dataStructures/ePSproc_dataStructures_IO_demo_280622.html
# import pickle
# with open('dataDump_100fitTests_130621.pickle', 'wb') as handle:
# pickle.dump(data.data, handle, protocol=pickle.HIGHEST_PROTOCOL)
# Data IO with self.writeFitData()
# This will default to the working dir and set a data-stamped file name if nothing is passed.
data.writeFitData()
[4]:
WindowsPath('D:/code/python/jupyterNotebooks/dev/PEMtk/fitting/dataDump_010922_16-53-04.pickle')
(2) parallel execution
Updated version including parallel fitting routine with self.multiFit()
method.
This currently uses the XYZpy library for quick parallelization, although there is some additional setup overhead in the currently implementation due to class init per fit batch. The default aims to set ~90% CPU usage, based on core-count.
[5]:
data.multiFit(nRange = [0,100])
0%| | 0/100 [00:00<?, ?it/s]C:\Users\femtolab\.conda\envs\ePSdev\lib\site-packages\joblib\externals\loky\process_executor.py:706: UserWarning: A worker stopped while some jobs were given to the executor. This can be caused by a too short worker timeout or by a memory leak.
"timeout or by a memory leak.", UserWarning
100%|################################################################################| 100/100 [11:09<00:00, 6.70s/it]
(b) Load a batch of fit runs
Load sample data for analysis instead of running fits. Note this can be run minimally without the full setup routines above, using the commented-out cell below to init a blank object.
(The demo file(s) are available in demos/fitting.)
[6]:
# If running from scratch, create a blank object first
# # Init blank object
from pemtk.fit.fitClass import pemtkFit
data = pemtkFit()
[7]:
# Load sample dataset
# Full path to the file may be required here, in demos/fitting
# import pickle
# with open('dataDump_100fitTests_10t_randPhase_130621.pickle', 'rb') as handle:
# data.data = pickle.load(handle)
# Data IO with self.writeFitData()
# This will default to the working dir
data.loadFitData('dataDump_100fitTests_10t_randPhase_130621.pickle')
Read data from D:\code\python\jupyterNotebooks\dev\PEMtk\fitting\dataDump_100fitTests_10t_randPhase_130621.pickle with pickle.
[8]:
data.data.keys()
[8]:
dict_keys(['subset', 'orb6', 'orb5', 'ADM', 'pol', 'sim', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99])
Exploring a fit result
Each result contains a set of fit results:
[9]:
nFit = 11
data.data[nFit].keys()
[9]:
dict_keys(['AFBLM', 'residual', 'results'])
Here ‘results’ is an lmFit object, containing various outputs, including the final paramter set and fit statistics, which can be inspected directly. (See the basic demo notebook for more.)
[10]:
data.data[nFit]['results']
[10]:
Fit Statistics
fitting method | leastsq | |
# function evals | 493 | |
# data points | 195 | |
# variables | 8 | |
chi-square | 1.3656e-04 | |
reduced chi-square | 7.3029e-07 | |
Akaike info crit. | -2747.48342 | |
Bayesian info crit. | -2721.29942 |
Variables
name | value | standard error | relative error | initial value | min | max | vary | expression |
---|---|---|---|---|---|---|---|---|
m_PU_SG_PU_1_n1_1 | 1.58289364 | 0.00420180 | (0.27%) | 0.9969358394309723 | 1.0000e-04 | 5.00000000 | False | m_PU_SG_PU_1_1_n1 |
m_PU_SG_PU_1_1_n1 | 1.58289364 | 0.00420180 | (0.27%) | 0.9969358394309723 | 1.0000e-04 | 5.00000000 | True | |
m_PU_SG_PU_3_n1_1 | 1.15075298 | 0.00591749 | (0.51%) | 0.6501789011457593 | 1.0000e-04 | 5.00000000 | False | m_PU_SG_PU_3_1_n1 |
m_PU_SG_PU_3_1_n1 | 1.15075298 | 0.00591749 | (0.51%) | 0.6501789011457593 | 1.0000e-04 | 5.00000000 | True | |
m_SU_SG_SU_1_0_0 | 2.71014401 | 0.00245323 | (0.09%) | 0.5256290247418078 | 1.0000e-04 | 5.00000000 | True | |
m_SU_SG_SU_3_0_0 | 1.04870406 | 0.00589304 | (0.56%) | 0.3431948628999326 | 1.0000e-04 | 5.00000000 | True | |
p_PU_SG_PU_1_n1_1 | 1.22200072 | 28873.8615 | (2362835.06%) | 0.22504503901184436 | -3.14159265 | 3.14159265 | False | p_PU_SG_PU_1_1_n1 |
p_PU_SG_PU_1_1_n1 | 1.22200072 | 28873.8615 | (2362835.07%) | 0.22504503901184436 | -3.14159265 | 3.14159265 | True | |
p_PU_SG_PU_3_n1_1 | -1.09376359 | 28873.8574 | (2639862.74%) | 0.2384618778656229 | -3.14159265 | 3.14159265 | False | p_PU_SG_PU_3_1_n1 |
p_PU_SG_PU_3_1_n1 | -1.09376359 | 28873.8574 | (2639862.73%) | 0.2384618778656229 | -3.14159265 | 3.14159265 | True | |
p_SU_SG_SU_1_0_0 | -2.28911439 | 28873.8581 | (1261354.97%) | 0.2118753318675165 | -3.14159265 | 3.14159265 | True | |
p_SU_SG_SU_3_0_0 | 0.90233526 | 28873.8543 | (3199903.15%) | 0.5407367643463352 | -3.14159265 | 3.14159265 | True |
Correlations (unreported correlations are < 0.100)
p_PU_SG_PU_3_1_n1 | p_SU_SG_SU_1_0_0 | 1.0000 |
p_PU_SG_PU_1_1_n1 | p_PU_SG_PU_3_1_n1 | 1.0000 |
p_PU_SG_PU_1_1_n1 | p_SU_SG_SU_1_0_0 | 1.0000 |
p_PU_SG_PU_1_1_n1 | p_SU_SG_SU_3_0_0 | 1.0000 |
p_PU_SG_PU_3_1_n1 | p_SU_SG_SU_3_0_0 | 1.0000 |
p_SU_SG_SU_1_0_0 | p_SU_SG_SU_3_0_0 | 1.0000 |
m_PU_SG_PU_1_1_n1 | m_PU_SG_PU_3_1_n1 | -0.9519 |
m_SU_SG_SU_1_0_0 | m_SU_SG_SU_3_0_0 | -0.8360 |
m_PU_SG_PU_1_1_n1 | p_SU_SG_SU_3_0_0 | -0.5513 |
m_PU_SG_PU_1_1_n1 | p_PU_SG_PU_1_1_n1 | -0.5513 |
m_PU_SG_PU_1_1_n1 | p_PU_SG_PU_3_1_n1 | -0.5513 |
m_PU_SG_PU_1_1_n1 | p_SU_SG_SU_1_0_0 | -0.5513 |
m_PU_SG_PU_3_1_n1 | p_SU_SG_SU_3_0_0 | 0.5195 |
m_PU_SG_PU_3_1_n1 | p_PU_SG_PU_1_1_n1 | 0.5195 |
m_PU_SG_PU_3_1_n1 | p_PU_SG_PU_3_1_n1 | 0.5195 |
m_PU_SG_PU_3_1_n1 | p_SU_SG_SU_1_0_0 | 0.5195 |
m_SU_SG_SU_3_0_0 | p_SU_SG_SU_1_0_0 | -0.3544 |
m_SU_SG_SU_3_0_0 | p_PU_SG_PU_1_1_n1 | -0.3544 |
m_SU_SG_SU_3_0_0 | p_PU_SG_PU_3_1_n1 | -0.3544 |
m_SU_SG_SU_3_0_0 | p_SU_SG_SU_3_0_0 | -0.3544 |
m_SU_SG_SU_1_0_0 | p_PU_SG_PU_1_1_n1 | 0.3413 |
m_SU_SG_SU_1_0_0 | p_SU_SG_SU_1_0_0 | 0.3413 |
m_SU_SG_SU_1_0_0 | p_PU_SG_PU_3_1_n1 | 0.3413 |
m_SU_SG_SU_1_0_0 | p_SU_SG_SU_3_0_0 | 0.3413 |
m_PU_SG_PU_3_1_n1 | m_SU_SG_SU_1_0_0 | -0.1329 |
The best fit results are set in an Xarray, keyed by AFBLM
.
[11]:
data.data[nFit]['AFBLM']
[11]:
- Labels: 1
- t: 13
- BLM: 15
- 0j (1.6688031987744187+5.7873229526725076e-18j) ... 0j
array([[[ 0.00000000e+00+0.00000000e+00j, 1.66880320e+00+5.78732295e-18j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 9.25672722e-01-5.38415192e-18j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, -1.44274687e-01+1.20857602e-18j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 8.76295144e-03-6.48615019e-18j, 0.00000000e+00+0.00000000e+00j], [ 0.00000000e+00+0.00000000e+00j, 1.65937210e+00-7.23009276e-18j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 9.28985589e-01+8.67046349e-18j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, -1.34466346e-01+7.20380784e-18j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 7.85981063e-03-3.36660330e-18j, 0.00000000e+00+0.00000000e+00j], [ 0.00000000e+00+0.00000000e+00j, 1.60818607e+00+5.37857796e-19j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 9.47089063e-01+2.83195635e-19j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, -8.18736418e-02+7.57593374e-18j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 1.46102083e-03+6.75578530e-18j, 0.00000000e+00+0.00000000e+00j], [ 0.00000000e+00+0.00000000e+00j, 1.52326743e+00-1.50501572e-18j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 9.76089784e-01+2.84374460e-17j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, -3.91218091e-04+5.74838620e-18j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, -5.84886248e-03+5.07374737e-18j, 0.00000000e+00+0.00000000e+00j], [ 0.00000000e+00+0.00000000e+00j, 1.43636310e+00+9.52615588e-18j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 1.00205362e+00+2.01628383e-17j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 6.51578361e-02-9.80651589e-18j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 9.65536741e-04-1.14147995e-17j, 0.00000000e+00+0.00000000e+00j], [ 0.00000000e+00+0.00000000e+00j, 1.38622713e+00+9.20090768e-19j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 1.01512621e+00-4.72538875e-18j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 9.73068887e-02-1.74468117e-18j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 1.51231272e-02-9.38269746e-18j, 0.00000000e+00+0.00000000e+00j], [ 0.00000000e+00+0.00000000e+00j, 1.39474794e+00-4.45299968e-18j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 1.01331537e+00+1.63401625e-18j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 9.33980946e-02+1.10207631e-18j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 1.07891930e-02+2.50190478e-18j, 0.00000000e+00+0.00000000e+00j], [ 0.00000000e+00+0.00000000e+00j, 1.45370909e+00+7.91614025e-19j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 9.96435544e-01-1.43016883e-17j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 5.20481458e-02+1.07644377e-18j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 2.99548945e-03-9.91707915e-19j, 0.00000000e+00+0.00000000e+00j], [ 0.00000000e+00+0.00000000e+00j, 1.53164395e+00+1.13410286e-17j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 9.70481721e-01-1.75914296e-17j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, -2.06040860e-02-1.43891851e-18j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 6.28742202e-03+2.79452601e-18j, 0.00000000e+00+0.00000000e+00j], [ 0.00000000e+00+0.00000000e+00j, 1.59427468e+00-1.99609837e-18j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 9.48140851e-01+5.16493414e-18j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, -8.85733641e-02+1.65347123e-17j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 1.26018516e-02+1.49421811e-17j, 0.00000000e+00+0.00000000e+00j], [ 0.00000000e+00+0.00000000e+00j, 1.62291718e+00-6.45941678e-18j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 9.38112364e-01-2.42509436e-17j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, -1.18853978e-01+2.59622005e-18j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 1.46796819e-02+1.46303408e-17j, 0.00000000e+00+0.00000000e+00j], [ 0.00000000e+00+0.00000000e+00j, 1.61963770e+00-9.64903245e-18j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 9.39847210e-01-1.14266438e-17j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, -1.12373317e-01+2.00140733e-19j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 1.23477417e-02-8.86888414e-18j, 0.00000000e+00+0.00000000e+00j], [ 0.00000000e+00+0.00000000e+00j, 1.59960947e+00+3.78181210e-18j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 9.47416379e-01-1.37427402e-18j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, -8.82040938e-02-1.38234511e-17j, 0.00000000e+00+0.00000000e+00j, 0.00000000e+00+0.00000000e+00j, 9.01954240e-03-9.84543070e-18j, 0.00000000e+00+0.00000000e+00j]]])
- Euler(Labels)object(0.0, 0.0, 0.0)
array([(0.0, 0.0, 0.0)], dtype=object)
- Labels(Labels)<U1'z'
array(['z'], dtype='<U1')
- t(t)float644.018 4.096 4.175 ... 4.884 4.962
- units :
- ps
array([4.017657, 4.096371, 4.175086, 4.253801, 4.332516, 4.41123 , 4.489945, 4.56866 , 4.647375, 4.726089, 4.804804, 4.883519, 4.962233])
- XSraw(Labels, t)complex128(1.6688031987744187+5.7873229526725076e-18j) ... (1.5996094670027712+3.781812100979762e-18j)
array([[1.6688032 +5.78732295e-18j, 1.6593721 -7.23009276e-18j, 1.60818607+5.37857796e-19j, 1.52326743-1.50501572e-18j, 1.4363631 +9.52615588e-18j, 1.38622713+9.20090768e-19j, 1.39474794-4.45299968e-18j, 1.45370909+7.91614025e-19j, 1.53164395+1.13410286e-17j, 1.59427468-1.99609837e-18j, 1.62291718-6.45941678e-18j, 1.6196377 -9.64903245e-18j, 1.59960947+3.78181210e-18j]])
- XSrescaled(Labels, t)complex128(5.915753312142323+2.0515525707796533e-17j) ... (5.6704679194679635+1.3406174843565319e-17j)
array([[5.91575331+2.05155257e-17j, 5.88232093-2.56300115e-17j, 5.70087119+1.90665625e-18j, 5.39984244-5.33514182e-18j, 5.09177461+3.37693433e-17j, 4.91404722+3.26163685e-18j, 4.94425272-1.57854729e-17j, 5.15326456+2.80619866e-18j, 5.42953643+4.02028996e-17j, 5.65155658-7.07598449e-18j, 5.75309161-2.28980363e-17j, 5.74146616-3.42049294e-17j, 5.67046792+1.34061748e-17j]])
- XSiso()complex128(5.368076720085303+0j)
array(5.36807672+0.j)
- BLM(BLM)MultiIndex(l, m)
array([(0, -1), (0, 0), (0, 1), (2, -1), (2, 0), (2, 1), (3, -1), (3, 0), (3, 1), (4, -1), (4, 0), (4, 1), (6, -1), (6, 0), (6, 1)], dtype=object)
- l(BLM)int640 0 0 2 2 2 3 3 3 4 4 4 6 6 6
array([0, 0, 0, 2, 2, 2, 3, 3, 3, 4, 4, 4, 6, 6, 6], dtype=int64)
- m(BLM)int64-1 0 1 -1 0 1 -1 0 1 -1 0 1 -1 0 1
array([-1, 0, 1, -1, 0, 1, -1, 0, 1, -1, 0, 1, -1, 0, 1], dtype=int64)
- thres :
- None
- dataType :
- BLM
- jobLabel :
- Fit #11, (13 t, 1 pol) points, $\chi^2$=0.0001365649424927628 2021-06-13_10-16-52
For further analysis & batch results, see the “analysis” notebook.
Versions
[12]:
import scooby
scooby.Report(additional=['epsproc', 'pemtk', 'xarray', 'jupyter'])
[12]:
Thu Sep 01 17:04:18 2022 Eastern Daylight Time | |||||
OS | Windows | CPU(s) | 32 | Machine | AMD64 |
Architecture | 64bit | RAM | 63.9 GB | Environment | Jupyter |
Python 3.7.3 (default, Apr 24 2019, 15:29:51) [MSC v.1915 64 bit (AMD64)] | |||||
epsproc | 1.3.2-dev | pemtk | 0.0.1 | xarray | 0.15.0 |
jupyter | Version unknown | numpy | 1.18.1 | scipy | 1.3.0 |
IPython | 7.12.0 | matplotlib | 3.3.1 | scooby | 0.5.6 |
Intel(R) Math Kernel Library Version 2020.0.0 Product Build 20191125 for Intel(R) 64 architecture applications |
[13]:
# Check current Git commit for local ePSproc version
from pathlib import Path
!git -C {Path(ep.__file__).parent} branch
!git -C {Path(ep.__file__).parent} log --format="%H" -n 1
* dev
master
numba-tests
815a839f3c8c4995532d6b5f87997b8ba2bb12eb
[14]:
# Check current remote commits
!git ls-remote --heads https://github.com/phockett/ePSproc
# !git ls-remote --heads git://github.com/phockett/epsman
92c661789a7d2927f2b53d7266f57de70b3834fa refs/heads/dependabot/pip/notes/envs/envs-versioned/mistune-2.0.3
fe1e9540c7b91fe571f60562acd31d8e489d491e refs/heads/dependabot/pip/notes/envs/envs-versioned/nbconvert-6.5.1
815a839f3c8c4995532d6b5f87997b8ba2bb12eb refs/heads/dev
1c0b8fd409648f07c85f4f20628b5ea7627e0c4e refs/heads/master
69cd89ce5bc0ad6d465a4bd8df6fba15d3fd1aee refs/heads/numba-tests
ea30878c842f09d525fbf39fa269fa2302a13b57 refs/heads/revert-9-master
[15]:
# Check current Git commit for local PEMtk version
import pemtk
from pathlib import Path
!git -C {Path(pemtk.__file__).parent} branch
!git -C {Path(pemtk.__file__).parent} log --format="%H" -n 1
master
* mfFittingDev
c1be71d7cbb7d000370d9d28dbeaaca48b9e8bb0
[16]:
# Check current remote commits
!git ls-remote --heads https://github.com/phockett/PEMtk
# !git ls-remote --heads git://github.com/phockett/epsman
1059c4ebbd637467c0b6c37a95a51b684be0d298 refs/heads/master
7eda41b192a0b9a214bef2925becc99f716bf59a refs/heads/mfFittingDev
[ ]: