From 1db04a8bce66b46b1b59f7ed1138ca1378db2cc6 Mon Sep 17 00:00:00 2001 From: Jacob Martin Date: Tue, 10 Sep 2013 11:07:53 +1200 Subject: [PATCH 1/3] Solving xml import issue in pycharm --- .idea/.name | 1 - .idea/PyTrA.iml | 9 - .idea/dictionaries/Igor.xml | 7 - .idea/encodings.xml | 5 - .../inspectionProfiles/profiles_settings.xml | 7 - .idea/libraries/sass_stdlib.xml | 8 - .idea/misc.xml | 8 - .idea/modules.xml | 9 - .idea/other.xml | 3 - .idea/scopes/scope_settings.xml | 5 - .idea/testrunner.xml | 8 - .idea/vcs.xml | 7 - .idea/workspace.xml | 608 ------------------ 13 files changed, 685 deletions(-) delete mode 100644 .idea/.name delete mode 100644 .idea/PyTrA.iml delete mode 100644 .idea/dictionaries/Igor.xml delete mode 100644 .idea/encodings.xml delete mode 100644 .idea/inspectionProfiles/profiles_settings.xml delete mode 100644 .idea/libraries/sass_stdlib.xml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/other.xml delete mode 100644 .idea/scopes/scope_settings.xml delete mode 100644 .idea/testrunner.xml delete mode 100644 .idea/vcs.xml delete mode 100644 .idea/workspace.xml diff --git a/.idea/.name b/.idea/.name deleted file mode 100644 index 197b73c..0000000 --- a/.idea/.name +++ /dev/null @@ -1 +0,0 @@ -PyTrA \ No newline at end of file diff --git a/.idea/PyTrA.iml b/.idea/PyTrA.iml deleted file mode 100644 index fc05edc..0000000 --- a/.idea/PyTrA.iml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/.idea/dictionaries/Igor.xml b/.idea/dictionaries/Igor.xml deleted file mode 100644 index 85fe3f4..0000000 --- a/.idea/dictionaries/Igor.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - mcmc - - - \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml deleted file mode 100644 index e206d70..0000000 --- a/.idea/encodings.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml deleted file mode 100644 index c60c33b..0000000 --- a/.idea/inspectionProfiles/profiles_settings.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/libraries/sass_stdlib.xml b/.idea/libraries/sass_stdlib.xml deleted file mode 100644 index 546bfd1..0000000 --- a/.idea/libraries/sass_stdlib.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index ad182e7..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - jar:file:\C:\Program Files (x86)\JetBrains\PyCharm 2.6.3\lib\pycharm.jar!\resources\html5-schema\html5.rnc - - - - diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 64e7f31..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/.idea/other.xml b/.idea/other.xml deleted file mode 100644 index f6e673a..0000000 --- a/.idea/other.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/.idea/scopes/scope_settings.xml b/.idea/scopes/scope_settings.xml deleted file mode 100644 index 922003b..0000000 --- a/.idea/scopes/scope_settings.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/testrunner.xml b/.idea/testrunner.xml deleted file mode 100644 index fe849f6..0000000 --- a/.idea/testrunner.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index c80f219..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/.idea/workspace.xml b/.idea/workspace.xml deleted file mode 100644 index 35d491d..0000000 --- a/.idea/workspace.xml +++ /dev/null @@ -1,608 +0,0 @@ - - - - -<<<<<<< HEAD -<<<<<<< HEAD - -======= - - -======= ->>>>>>> xml - - - - - - - - - - - - - - - - - - - - - - -<<<<<<< HEAD ->>>>>>> Revert "xml" -======= - - ->>>>>>> xml - - - - - - - - - - - - - - - - - - - -<<<<<<< HEAD -<<<<<<< HEAD - - - - - - - - - - - - - -======= - - ->>>>>>> Revert "xml" -======= - - - - ->>>>>>> xml - - - - -<<<<<<< HEAD - - - -<<<<<<< HEAD - -======= - ->>>>>>> Revert "xml" -======= - - - - ->>>>>>> xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1354744770922 - 1354744770922 - - - 1358912120311 - 1358912120311 - - - - - - - - - - - - - - - - - - - - - - - -<<<<<<< HEAD -<<<<<<< HEAD - -======= - ->>>>>>> Revert "xml" -======= - ->>>>>>> xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<<<<<<< HEAD - - - - - - - - -======= - - - - - - - - - - - - ->>>>>>> xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<<<<<<< HEAD - - - - - - - - - - - - -======= - - -<<<<<<< HEAD - ->>>>>>> Revert "xml" -======= - ->>>>>>> xml - - - - - -<<<<<<< HEAD - -<<<<<<< HEAD - - - -======= - -======= - - - - - - - - - - - - - ->>>>>>> xml - - ->>>>>>> Revert "xml" - - - - - - - From 8a650d9b4c267a89c1172e11aab88b2da2fafa37 Mon Sep 17 00:00:00 2001 From: Jacob Martin Date: Tue, 10 Sep 2013 11:16:09 +1200 Subject: [PATCH 2/3] Fixed problem with xml encoding --- .idea/.name | 1 + .idea/PyTrA v1.iml | 9 + .idea/PyTrA.iml | 9 + .idea/dictionaries/Igor.xml | 3 + .idea/encodings.xml | 5 + .../inspectionProfiles/profiles_settings.xml | 7 + .idea/libraries/sass_stdlib.xml | 8 + .idea/misc.xml | 8 + .idea/modules.xml | 9 + .idea/other.xml | 7 + .idea/scopes/scope_settings.xml | 5 + .idea/testrunner.xml | 8 + .idea/vcs.xml | 8 + .idea/workspace.xml | 526 +++++++ Data.py | 8 +- Data.pyc | Bin 887 -> 1043 bytes LICENCE.txt | 21 + PyTrA.py | 1283 +++++++++-------- PyTrA_Help.py | 73 +- PyTrA_Help.pyc | Bin 7217 -> 9372 bytes README.txt | 15 + chain.jpg | Bin 0 -> 35762 bytes mcmc.jpg | Bin 0 -> 90185 bytes mcmc.py | 103 +- mcmc.pyc | Bin 2898 -> 4847 bytes 25 files changed, 1474 insertions(+), 642 deletions(-) create mode 100644 .idea/.name create mode 100644 .idea/PyTrA v1.iml create mode 100644 .idea/PyTrA.iml create mode 100644 .idea/dictionaries/Igor.xml create mode 100644 .idea/encodings.xml create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/libraries/sass_stdlib.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/other.xml create mode 100644 .idea/scopes/scope_settings.xml create mode 100644 .idea/testrunner.xml create mode 100644 .idea/vcs.xml create mode 100644 .idea/workspace.xml create mode 100644 LICENCE.txt create mode 100644 README.txt create mode 100644 chain.jpg create mode 100644 mcmc.jpg diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..91c3424 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +PyTrA v1 \ No newline at end of file diff --git a/.idea/PyTrA v1.iml b/.idea/PyTrA v1.iml new file mode 100644 index 0000000..a34a857 --- /dev/null +++ b/.idea/PyTrA v1.iml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/.idea/PyTrA.iml b/.idea/PyTrA.iml new file mode 100644 index 0000000..a34a857 --- /dev/null +++ b/.idea/PyTrA.iml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/.idea/dictionaries/Igor.xml b/.idea/dictionaries/Igor.xml new file mode 100644 index 0000000..f18a4e9 --- /dev/null +++ b/.idea/dictionaries/Igor.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..8de604b --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..c60c33b --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/.idea/libraries/sass_stdlib.xml b/.idea/libraries/sass_stdlib.xml new file mode 100644 index 0000000..546bfd1 --- /dev/null +++ b/.idea/libraries/sass_stdlib.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..752c907 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,8 @@ + + + + jar:file:\C:\Program Files (x86)\JetBrains\PyCharm 2.6.3\lib\pycharm.jar!\resources\html5-schema\html5.rnc + + + + diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..b7d487b --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/.idea/other.xml b/.idea/other.xml new file mode 100644 index 0000000..9d2e7e9 --- /dev/null +++ b/.idea/other.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/.idea/scopes/scope_settings.xml b/.idea/scopes/scope_settings.xml new file mode 100644 index 0000000..922003b --- /dev/null +++ b/.idea/scopes/scope_settings.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/testrunner.xml b/.idea/testrunner.xml new file mode 100644 index 0000000..0d97b74 --- /dev/null +++ b/.idea/testrunner.xml @@ -0,0 +1,8 @@ + + + + + + diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..9d32e50 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..8978db0 --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,526 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1367358874235 + 1367358874235 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AlchemyModelDependency + #PyTrA v1 + + + + + + + All + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Data.py b/Data.py index a4c8720..3fc3c67 100644 --- a/Data.py +++ b/Data.py @@ -5,6 +5,9 @@ class Data(): + ''' + Holds all of the data needed in PyTrA + ''' time_C = np.array([]) wavelength_C = np.array([]) Chirp = np.array([]) @@ -19,4 +22,7 @@ class Data(): tracefitmodel = [] Traces = np.array([0]) Pixels = np.array([]) - Range = np.array([-1,2]) \ No newline at end of file + Range = np.array([-1,2]) + mcmc = {} + xi = np.array([]) + yi = np.array([]) \ No newline at end of file diff --git a/Data.pyc b/Data.pyc index caa461c9bbc8da932bbe146c53374bfb5ff7f593..ab5b4f71e1b90772bfb7946e68d099ee9660c791 100644 GIT binary patch literal 1043 zcmbVKO>fgc5FOiz+n9uuK;gn+Ie@~Yh%2fpAXO_dy0A zyC6I89pD?l$2npj&c`7gd59sJl&LXd(X^syN~!By%-UB%rZ$cAZ+za_4$_Vh|E)=h z*Cg=R15j8K3u5#^1@O58IhMlWT^EKf+;QQq3wth%TzJcceHRWk5ZjQWv8|W~Z0xqn zAClquo^y))-*IW9YXUbl_gU&LXgqt*W$wH1K1|QY)G{7X)H}sC8&5m$Yru zwWWDmjmIXokJ~Tlg(_8@+X55BniRTS@}!By(l;EIo)xW9iL@hRZ}!O+g;cN8EJ0TB zA_@IDc5e$Ld8;Mf)zYtfax$|6Ty2|XYN0LOMwRS#Mj6A~GkvK_!#<~Joh$ZPWmU%a zywtp`^%!;FCYWakCokd;Mztn>n>THI++?dt)z-vsv^`yYin-U~;(1Ii50>jGNl+ur z6AWPxdc%L-N0Jv9Nxszb6GR&XQA7|9L9A z|3?t}TIbPfK(ot{G~eN)*eRDI8a)8;DL|=KudPyCMY7(Qn?|Up+AVjnXz%roWftrp zop2A~C;ibjwyk-E4N*;2&Tr!sL>2808a{zyzVg;8!-GStjwIr`m#AnV zMAhCIV-3sAE-vQW$I4zW?UiHPz&5ekx$J}(PTgnQgjnZHx3wMN039Ga1|7c()`#)6 z{$SVIvunrG9ny~_{j=?ECP(BN;Sr$B&i;9yV5iImz*}ee0prD$GMgoODs5_S*6@PyTrA Help -

Click here to see the video - -

More information on the websitenznano +

Click here to go to the website

Importing Data

@@ -57,57 +55,53 @@ class Help(HasTraits):

Importing data from Ohio State University involves inputing the data file and the delay file (A single vector of the time delays). The wavelength and corresponding pixel number are input for calibrating the data. To load the data press Load data button and click ok

-

You may want to delete a range of wavelengths between which the data is offscale click the Delete traces button and pick the wavelengths you want to delete between

-

Correcting Chirp

Due to the ultrashort pulses from femtosecond transient absorption spectrometers shorter wavelengths arrive at the spectrometer before longer wavelengths

To correct for this we can fit a polynomial to the chirp spectrum and then interpolate our values to correct for the dispersion

-

View the chirp by clicking the 2D plot of chirp button

- -

Now find the times between which the chirp is visible.

+

View the chirp by going to the Chirp correction menu and click on Plot chirp

-

Close the plot and input the time range when the chirp is visible in the two text boxes under the Time range for chirp correction label

+

Zoom into the area you want to fit the chirp to

-

Click the Fix for chirp button. You will be asked to pick 8 points on the chirp wavefront and then another graph will ask you to pick the top of the wavefront

+

Click the Chirp correction item in the Chirp correction menu. You will be asked to pick 8 points on the chirp wavefront and then another graph will ask you to pick the front of the wavefront

-

The polynomial fit and the standard deviation and added to the bottom text bar

+

The polynomial fit and the standard deviation are printed in the log

Data anaylsis

-

To fit a single trace at a certain wavelength click the Fit trace button plot will appear click on a wavelength that you want to fit to

+

To fit a single trace or spectra go to type the value into the text box under the line plots then click either Fit Trace

-

The pymodelfit window will open and the data will be displayed the trace.

+

The pymodelfit window will open and the data will be displayed.

- - -

In fitting the data it is recommended that you click the Fit Model button until it converges and the solution no longer changes

+

On exit the parameters used to fit the trace are printed in the status bar

Pick the model that you want to use click on the new model button. -

Convoluted_1 is a single exponential with the instrument response (gaussian)

-

Convoluted_2 is a double expoential convoluted with the instrument response (gaussian)

-

Click the Fit model multiple times until the variable do not change. Each time you fit the model the algorithim uses the varibles from the previous fit to get a better intial guess. This leads to an accurate fit of the data and leads to what is called convergence.

+

Convoluted_1,2,3,4 are exponential sums convoluted with the instrument response (gaussian)

+

Gauss_1,2,3,4 are Gaussian function with x and y shifts

+

Click the Fit model multiple times until the variable do not change. Each time you fit the model the algorithim uses the varibles from the previous fit to get a better intial guess. This leads to an accurate fit of the data where the solution convergence on the best value for the model and data.

+

The variables that are used in the fit.

-

A1 = Amplitude

+

A = Amplitude

mu = shift in the centre of the gaussian distribution

w = Full width half maximum of the gaussian (instrument response)

-

T1 = Time constant

+

T = Time constant

y0 = baseline

-

Where w gives us the width of the instrument at half the height of the peak and T1 gives us the time constant for the exponential decay.

+ +

Where w gives the width of the instrument at half the height of the peak and T gives us the time constant for the exponential decay.

Global fitting

Global fitting can be done using Igor Pro from Wavemetrics. Otherwise TIMP library for R is a free alternative. -

Click the Select multiple traces button. You will be prompted to pick between which wavelengths to fit to.

+

Click the Select traces button under the Global fit menu item. You will be prompted to pick between which wavelengths to fit to.

-

The number of traces saved and between which wavelengths will be printed in the Status bar

+

The number of traces saved and between which wavelengths will be printed in the log file

-

Make sure Igor Pro is open and then click on the Send traces to Igor Igor Pro should prompt you to load the data click the Load button the traces will be inputted and the time vector will be saved as timevals

+

Make sure Igor Pro is open and then click on the Send to Igor in the Global fit menu item. Igor Pro should prompt you to load the data click the Load button the traces will be inputted and the time vector will be saved as timevals

The Global Analysis window wil open click on Add/Remove Waves

@@ -121,16 +115,37 @@ class Help(HasTraits):

Click Fit! and wait for Igor Pro to compute the global minimum. The coefficients will be printed out make sure in the output it reads Global Fit converged normally. Note down the global time constant which is the same for all of the data traces.

+

MCMC

+ +

One method for model checking and non-linear regression is to use Markov Chain Monte Carlo. This method defines all of the parameters and the error as distribution from which to sample from, these are the priors. You then can sample the distributions to see if a stable solution exist and if the chain converges

+ +

To begin you need to do a single trace fit of the kinetics and open up the MCMC dialog box found under the kinetic trace in the main window

+ +

+ +

Setting the parameters you will need to choose priors that do not restrict the parameters but hold the parameter from becoming unphysical (such as a negative time decay tau). It is recomended to only use Uniform priors

+ +

Once the chain has run you should see the plots of each parameter. The top left plot is of the chain value at the different iterations, the chain must converge to a stable value. If converge does not occur the model is not a stable solution within the noise of the system. The bottom left graph is the autocorrelation plot. This shows the amount of correlation of the sample with the samples previously, we want a Markov chain which is only correlated to the previous state this being an autocorrelation plot showing minimal correlation. The right plot is the histogram for the distribution of the chain we want a high density around a mean.

+ +

+ +

The next step is tuning the chain. If the chain has converged you can use the Raftery Lewis statistics to set the values for the burn-in, thining and number of iterations.

+ +

Once you are finished shut the window the values of the mean and standard deviation will be printed out in the log file.

+ +

The Bayesian information Criterion (BIC) can be used to compare different models. This is calculated from a maximum a posteriori (MAP) which optimises the parameters to the value of maximum denisty. More negative BIC indicate more dense distribution and a better fit with the number of parameters also taken into account.

+

Visualisation

-

A 3D plot can be opened by clicking the 3D plot button. The surface will be sent to MayaVi window for viewing. You can customise the plot using the tool bar on the top of the 3D plot the far left button opens up a dialog with many different options for label sizes titles and surface colours.

+

A 3D plot can be opened by clicking the 3D plot button in the 2d graph tab. The surface will be sent to MayaVi window for viewing. You can customise the plot using the tool bar on the top of the 3D plot the far left button opens up a dialog with many different options for label sizes titles and surface colours. By changing the value right of the 3D plot button you can scale the z axis of the plot

-

2D contour plot, spectra at a certain time value and trace at a certain wavelength can be viewed using matplotlib.

+

The plots in the main window can be zoomed by holding Ctrl and dragging over the area of interest. The Averaged and Normalised buttons will slice the 2D plot into 10 sections within the zoomed area of the main 2D plot in the main window. SVD and EFA also work within the zoom range of the main 2D plot.

-

Exporting data

+

2D contour plot, spectra at a certain time value and trace at a certain wavelength can be viewed using matplotlib as well which can produce publication quality images.

-

Data can be exported as csv in same format it was imported as. The file is saved in the same directory where the data was taken and starts with the date in front with the name of the file taken from the title.

+

Exporting data

+

Data can be exported as csv in same format it was imported as. The file is saved in the same directory where the data was taken and starts with the date in front with the name of the file taken from the title. The log file will also be saved in the same place if the Save log file is clicked.

""") diff --git a/PyTrA_Help.pyc b/PyTrA_Help.pyc index 0495e0c76ee86bd98bc67ff852248758af11d627..f2bc221d9caf529d4e5b5d3be0c5fd61b75b57ce 100644 GIT binary patch delta 3574 zcmb7HO|Klq6}5x0oM()26tDvbm90qF(PNB1B3tlyl0A;?C*=hPKPLj7WYu)nbQiC? zs#8@x^M)*%9UB%{y@WLz7LjETyDahtk_A72WEEwREb<3(?yc^g0ech4A2Z!mx9&aX z+;eLlUj2OQ$W#A4w)V|mzWD8fBj5e#!RZJ8s!n891pLXBn5&7`K|T8Vpgr{H?}y(# z*ko3ltbaYuwW~y8ol{BB)`(J>T1b_mPssk9GO*sQ(3cBQdS_zE>TDLQZ#mEtHfS=4G-O;GzmOzgg>O{yHP zD6~Obz~Jet>7Y>>U!2(R0Xb!xH&OJClZo0m-#r=1-pN(_^P_LBjfN*}b@WvG$}@j@ zY5n5*rS;1K5DK+lS))wQvJk#5eS7uTn^$hh+WY$#R+jM-EsdDgCQ>#>B4VFOTL_=) zY4Gjdv43vQkzOp(+oEQ66KiJ5Wy&Oqs3npn$_EiKm;xkvRN7P(950nY#;n`s*~{%$ z&wke4IsS|1NCUs;=yQ?jnQA{de!czc@qe_R9zOZX61Q80ouC+!1IvmiZvXb&=SM&a zo))T|ow&Vj#a3qBfLc%7lQxeYeS6}QrG0%09)1h9LRiOkuT&GRQffPX7Az$nK zNW6=F!gq)bRCnv?J)$;4Sgyb;sCO!)@Ig)xbs$^qBLmJ0uW4_>1@;>7gBo`%RFI)| zYGR|%JjgM%6cP|3B)SHIAs(so8iWG2D(EDZZ7bwiS9}I>gCr$UOkFg!(8EeEbsM{o zUB8zE{9K#V&WEHnbeRe7lDE#3Ntuj3sIoKXH~DQt^1G`-U>_sQmMpLhX%N(xk>u6_ z-Uur)lz}QUur%lZKqk?uRziR=k=r7&IXq{w08?VihR&@`l`p(bpzpK32CZOR;?ztA zG=vDc1Xn7N3lU^}ZX~t>2@Wo6(F$pV*qUO&0=#E5q+51b4iLOeZMq~b#}TeJqM;&v zZfoR7cPr z;euCtl3H>HryH7{psHd@YSXu9+(6=>j3Qp7=Uz!Edk=XX88WSTM^2%@h4{6a11EwE zg^}Zg1_r94Tv>B|sB}_0^O`m!SRmHBe_c*6r&0J)(#xU*HyL#lIWQbv`y7<{94GXf;Ml?g1eE{CXKMz_U80Gh&0C0m-lD!VLO#DT^eSCZ& zN@Gx;_z+iQ&@fr>ETK%s!F87^Co|5?;x5Jsf>p@^#npqxQta*iW_bTPwqKt5;~O+V=L-2oA0;{}XVV(FSM>xn z#3uPejcQ?1FvLuG?y7eEXaC80()G<23upC!3ycOpF9yoAd{KoD*kE`D<-CuWa*rdj24}SNS4!7&c?w!SsyC!BA m;)naURZ)$q#XASF^AP^}pWvUvZTrznX8r$()~>z$>i+=W-}2r7 delta 1378 zcmaJ>L5mbe6yAw$TqnCxL_-!_e9k5aL1t70C7B(fD@*oZSa3rKfyA2bH{In{SCv)O z(>r?^kQ{Odh!l8tqywiQMu852 zfnhR1Py@Od(wR(LYN3y=K$K9VJW9)^F>?&KrNV)Ym_UdGk2cDyu60Jqq<5`?bcRJ} zyPf(J`nkL0h&q!o=*gSC%|=9RAFaCo_FvOC8~)D1iSdPNpoMaQXOwcI{{v6x-HxtA z`&tz+;M6K8<#>kg8m5E@(+s)geSz)W=gUIb%8RmH;LN4Y$D~<}R|{68Bu_Zok45!W zZK1&7rh~rPBoeud(Ucbxxz>qX4MrB%IFT|2qu}vuiiTuyjHDS+rjh!J9%eOrX8i9nm;7UxAHU`J z3MXBH-TRwXW))lrU|J)i@yf>`277`=-I#;D{tp5otw8POIZ{QAD0Bn zo)gn}mVh!E)& z;+K^3kmwNTTskg*?jt3KXcBTcpRvt zr0U^^51Ka|b2;r7MP&KNS09yoABe0b%Iqd$`?n*%O#8KkAN=!$SN>easy_install pymc + +There packages that need to be installed separately are: + +* pymc - for MCMC fitting +* pymodelfit - for fitting of the data +* pywin32 - Needed for windows if you want to use Igor Pro from PyTrA \ No newline at end of file diff --git a/chain.jpg b/chain.jpg new file mode 100644 index 0000000000000000000000000000000000000000..51f0fa74b69def5cf51dcf6f9b908dd489e8d4ac GIT binary patch literal 35762 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 literal 0 HcmV?d00001 diff --git a/mcmc.jpg b/mcmc.jpg new file mode 100644 index 0000000000000000000000000000000000000000..263c460e6528652148c1cf0b7d0a29213a5430d0 GIT binary patch literal 90185 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 literal 0 HcmV?d00001 diff --git a/mcmc.py b/mcmc.py index a75eb3b..46778ff 100644 --- a/mcmc.py +++ b/mcmc.py @@ -1,16 +1,25 @@ -from pymc import * -from traits.api import HasTraits, File, Button, Array, Enum, Instance, Str, List, HasPrivateTraits, Float, Int -from traitsui.api import Group, Item, View, Label, HSplit, Tabbed, ListEditor +from pymc import MCMC, Matplot, geweke, raftery_lewis, MAP, distributions +import pymc +from traits.api import HasTraits, Button, Enum, Str, List, HasPrivateTraits, Float, Int, Bool +from traitsui.api import Item, View, Label, HSplit, ListEditor from Data import Data -import matplotlib.pyplot as plt +from matplotlib.pyplot import show +from inspect import getargspec +from types import MethodType -class MCMC(HasTraits): +class MCMC_1(HasTraits): parameters = List iter = Int(10000) + thin = Int(2) burn_in = Int(0) + sigmin = Float(0.0) + sigmax = Float(1.0) run = Button("Run") - prior_dict = dict() + plot = Bool(True) + plotg = Bool(False) status = Str('') + Information = Str('Output') + prior_dict = {} view = View( Item( 'parameters', @@ -23,17 +32,20 @@ class MCMC(HasTraits): Item('iter'), Item('burn_in'), + Item('thin'), Item('run'), - Label('See log file for ouput'), - title = 'MCMC', resizable=True, + Label('Sigma min and max value'), + HSplit(Item('sigmin'),Item('sigmax')), + Item('plot',label='Distribution plot'), + Item('plotg',label='Geweke plot'), + Item('Information',style='custom'), + title = 'MCMC', + resizable=True, buttons = [ 'OK', 'Cancel' ] ) def _run_fired(self): - """ - - """ for i in range(len(self.parameters)): #Sets a Poisson Distribution @@ -48,19 +60,65 @@ def _run_fired(self): if self.parameters[i].dist=='Normal': self.prior_dict[self.parameters[i].name]=self.parameters[i].sig - print "dictionary created" - print self.prior_dict + sig_val = (self.sigmin,self.sigmax) + sig = distributions.Uniform('sig',sig_val[0],sig_val[1]) x,y,w = Data.tracefitmodel.data - model = Data.tracefitmodel.getMCMC(x,y,priors=self.prior_dict,datamodel=None) - - model.sample(self.iter,burn=self.burn_in) - - Matplot.plot(model) - plt.show() - model.stats() + model = Data.tracefitmodel.getMCMC(x,y,priors=self.prior_dict,datamodel=(distributions.Normal,'mu',dict(tau=1/sig/sig))) + model_fit = MAP(model) + + Data.mcmc = {} + model_fit.fit() + MC = MCMC(model_fit.variables) + MC.sample(self.iter,burn=self.burn_in,thin=self.thin) + Data.mcmc['MCMC'] = MC + + Data.mcmc['MAP'] = model_fit.BIC + + #Plotting + if self.plot == True: + Matplot.plot(MC,last=False) + + if self.plotg ==True: + scores = geweke(MC, intervals=20) + Matplot.geweke_plot(scores) + show() + + Data.mcmc['raftery_lewis'] = raftery_lewis(MC, q=0.025, r=0.01, verbose=0) + + #Calculating maximum of the Raftery Lewis diagnostics + + thin = 0 + burn_in = 0 + iterations = 0 + + #Finding maximum values for Raftery Lewis statistics + for i,v in Data.tracefitmodel.pardict.iteritems(): + if iterations == 0: + thin = Data.mcmc['raftery_lewis'][i][4] + burn_in = Data.mcmc['raftery_lewis'][i][2] + iterations = Data.mcmc['raftery_lewis'][i][3] + else: + if Data.mcmc['raftery_lewis'][i][4]>thin: + thin = Data.mcmc['raftery_lewis'][i][4] + if Data.mcmc['raftery_lewis'][i][2]>burn_in: + burn_in = Data.mcmc['raftery_lewis'][i][2] + if Data.mcmc['raftery_lewis'][i][3]>iterations: + iterations = Data.mcmc['raftery_lewis'][i][3] + #Sigma + if Data.mcmc['raftery_lewis']['sig'][4]>thin: + thin = Data.mcmc['raftery_lewis']['sig'][4] + if Data.mcmc['raftery_lewis']['sig'][2]>burn_in: + burn_in = Data.mcmc['raftery_lewis']['sig'][2] + if Data.mcmc['raftery_lewis']['sig'][3]>iterations: + iterations = Data.mcmc['raftery_lewis']['sig'][3] + + self.Information = 'Bayesian Information Criterion = %s' %(Data.mcmc['MAP']) + self.Information ='%s\n---Raftery Lewis Diagnostics--- \n\nfor probability s=0.95, desired accuracy r=0.01 need;' % self.Information + self.Information = '%s\nThinning = %s' %(self.Information,thin) + self.Information = '%s\nBurn in = %s' %(self.Information,burn_in) + self.Information = '%s\nIterations = %s' %(self.Information,iterations) - return(self.status) class Params(HasPrivateTraits): #Name of string @@ -69,7 +127,7 @@ class Params(HasPrivateTraits): min = Float max = Float sig = Float - dist = Enum('Uniform','Normal','Poisson') + dist = Enum('Uniform','Normal') view = View( Item('name',label='Parameter',style='readonly'), @@ -77,4 +135,5 @@ class Params(HasPrivateTraits): Item('max',label='Upper value for Uniform'), Item('sig',label='Sigma value for Normal'), Item('dist',label='Distribution for parameter'), + resizable=False ) \ No newline at end of file diff --git a/mcmc.pyc b/mcmc.pyc index fa7d6a412a01fb65442fd6b4f067f0d6b50e15dd..e0177571b753811810e078d53d1266e2d82efe94 100644 GIT binary patch literal 4847 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 literal 2898 zcmbVO&2k$>5bjw?wk6A!f8{t(g`ucIxhBIKg&d8?$zxSfErZ?bximvnzH+ zNkrKv^8_4t7_Jl#z>(+R0ieGgJ5i-Lq|kcXJv}o$)7@WpZ{_c~#_#R5FZ*=$tMLDO z{Mx^mB>bl+BRU2bP^QQP6a{1|6jjJnDXNmGQB)%{MbQ+QX^N)F%uqB#rcP0vOoO5Z znOTZv$uucyl7g-ZWpiZaDVitKqNqh?fuaR6ixe%AS)yo(%rZsGWL79z@q4P2t&&-# zXw{Evl(lKFM$rvQrbq{Lq9~cBpNTGszKPZ;nIYW}Y5lqMCM7jG>NME8^dJ6p6mt&b zR%aG$oyksYkIOi9)>V1*S(<4##ms||b4BiI%-%1{cr3Gz@{w^fEZWVji}SvAaN&_F zWp*#M&MmNjRUVeV%$@8+&E%@R?*T^6IEY~OX-2=i5{pUT``+|!xd zX6I;_rB2x6xYyH(gHbr}QIfi%^p?SZhp~$fM9u!z{?_wQw|MFSzxEF%nkZ6mBF9x% z5&27nxPn*0vx}zz0?661b$FRWt7j2S2%DtmNY7KkTWSai2Sc|c3Ja9fNi%Iw!t0xq z%<=Z>r3$cq9^1jRu9*d47AaW-lPpoPOv#F9Sf!**$r_#VO==a!Npb_hWvGNloprV( zU3iBHGbEl3N4b*$yfci;*l4FqE6%iTd==XM$hyLaGqrfnHF^2S>TX^*-7AVS0Y;*E zecWRLZAsBT>v|oCIZw!Y`k;cKp9NIzA>vqDz1ktuHM*PAq=45~Wc{y` z(y7V8G@ZPnrmARaPi~%(!OM5}u}%E#hg~#i&|sFntI$P27fh@08-z_d z=PU4C{lyrj3~0u25M0#gyhek0IYuB0eL$g7ZjlB{m}XBYw@iZ-AYWnqs^@rV`>Li` z)V(+rcM!AqFccC|c2MNLINI0@8KxV&HGC8MVefwIhFRf{6$Zx+GcT|| z6uzc$-Q-dWtb!Za4p`A{b#@}fITiX$=vb)VD!1$KauQf7A3$|MqY!F6naKbx+b#CmX!Of>7=CN?YCJ_YS|Epr&SmRrPkT9?YqRY6Kn0 zKvep!WOujgHFfz8qfB?ZA?C#WAv(zmSA?)Se2a+~g+PSwLj)Iv_dw=B;Pw!BkY&f^ zNQbD=GJ3)dAl&BB3u9l|VyPWC%VNuvno>=9>Z%!3R9(i9)+==$v6P=yMFMh&f@%A_ zO@4r)w2WVvd8uWfS@1^y*L1h%fs30A$JWPa^vu`zR{p%s7w9?nMeIcrw!i)xdj4q!w;B9nq<;CVS-qNHW1#x z!#mdt9uJ5Ax!@x#keZ&Jns`Ek&-m~? z%->}4kQ1~_dn4q&)coh|se`zOJ0QCtf+slMLk1>=$ZWZ-+$hAUA=-uLp8(Vz%ixF! z@+xT(?(>%W{95>EDgZ$Iv&5iTRV{fsukoY+bT~GBNeC_+{N;2z9;P8$P>9atGXO=& zUl9rJO@Z%2#KhYppI~UcUdt#IJrMZpkUSCRNT?SvfsFBW3q#{ePL}pK*QMs*Fwcgc iU@7ugtot8c5v<(x8UHEFv$$JB?WsFzLA8SR$NvJjWF%k! From 7c8d7ea2ad59ff5fb577343975ac4e2f0d6683f0 Mon Sep 17 00:00:00 2001 From: Jacob Martin Date: Tue, 10 Sep 2013 16:41:24 +1200 Subject: [PATCH 3/3] Update to GUI New sliders which work Fast loading of 2D plot no longer grid it up but plotting samples vs. wavelength. Can turn on zooming which stops jumping bac to main window. Added in valueeditor to see Data class --- .idea/workspace.xml | 223 ++++++++++++++++++++++++-------------------- PyTrA.py | 136 +++++++++++++++++++-------- 2 files changed, 220 insertions(+), 139 deletions(-) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 8978db0..2709c30 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,10 +2,8 @@ - + - - @@ -30,15 +28,6 @@ - - - - - - - - - @@ -51,21 +40,76 @@ - + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -84,18 +128,6 @@ - - - - - - - - - - - - @@ -152,6 +184,7 @@ + @@ -172,18 +205,17 @@ - - - + - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -505,18 +487,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - + + + + + + + diff --git a/PyTrA.py b/PyTrA.py index bac0cce..6ecf159 100644 --- a/PyTrA.py +++ b/PyTrA.py @@ -12,9 +12,9 @@ from pylab import ginput from scipy import interpolate, special, linalg from matplotlib.pyplot import figure, contourf, title, xlabel, ylabel, show, close, xlim, ylim, subplot, semilogy, gca, colorbar, cm, legend, plot, subplots_adjust -from traits.api import HasTraits, File, Button, Array, Instance, Str, Int, Float, Range +from traits.api import HasTraits, File, Button, Array, Instance, Str, Int, Float, Bool from traitsui.menu import Action, Menu,MenuBar -from traitsui.api import Group, Item, View, Label, HSplit, Tabbed, VSplit +from traitsui.api import Group, Item, View, Label, HSplit, Tabbed, VSplit, RangeEditor, ValueEditor from chaco.api import ArrayPlotData, Plot, jet from chaco.tools.api import PanTool, ZoomTool from tvtk.pyface.scene_editor import SceneEditor @@ -134,6 +134,14 @@ def _Load_data_fired(self): Data.time_C = Data.time Data.wavelength_C = Data.wavelength +class Dataviewer(HasTraits): + data = Data + + view = View( + Item('data',show_label=False,editor=ValueEditor()), + resizable=True + ) + class MainWindow(HasTraits): ''' Main window for PyTrA sets up the view objects and views the different methods that can be applied to the data @@ -143,12 +151,19 @@ class MainWindow(HasTraits): scene = Instance(MlabSceneModel, ()) plot2D = Instance(Plot) - plotwaveindexshow = Float(0) - plotwaveindex = Range(0,1000) - plottimeindexshow = Float(0) - plottimeindex = Range(0,1000) + plotwaveindexshow = Float + plotwaveindex = Float + wavelow=Float(0) + wavehigh=Float(100) + waverange=int(100) + plottimeindexshow = Float + plottimeindex = Float + timelow=Float(-1.0) + timehigh=Float(100.0) + timerange=int(100) plottime = Instance(Plot) updateplots = Button('Reset plots') + zoom_on = Bool(False) plotwavelength = Instance(Plot) plot2Db = Button("plot") TrA_Raw_file = File("TrA data") @@ -188,6 +203,7 @@ class MainWindow(HasTraits): Save_log = Button("Save log file") Help = Button("Help") log = Str("PyTrA:Python based fitting of Ultra-fast Transient Absorption Data") + showdata=Button("Show python data") #--Setting up views in TraitsUI--# @@ -207,23 +223,26 @@ class MainWindow(HasTraits): plot_group = Group( HSplit( VSplit( - ( - Label('Hold Ctrl to zoom in plots'), - Item('plot2D', editor=ComponentEditor(), show_label=False), - ( - HSplit(Item('updateplots', show_label=False),Item('Plot_2D', show_label=False),Item('multiple_plots', show_label=False),Item('Normalise', show_label=False),Item('SVD', show_label=False),Item('EFA', show_label=False)) ) - ), - (Item('log',style='custom',show_label=False), - HSplit(Item('Save_log', show_label=False))) + ( + Label('Hold Ctrl to zoom in plots'), + Item('plot2D', editor=ComponentEditor(), show_label=False), + (HSplit(Item('updateplots', show_label=False),Item('zoom_on'),Item('Plot_2D', show_label=False),Item('multiple_plots', show_label=False),Item('Normalise', show_label=False),Item('SVD', show_label=False),Item('EFA', show_label=False)) + ) + ), + (Item('log',style='custom',show_label=False), + HSplit(Item('Save_log', show_label=False))), ), VSplit( - (Item('plottime', editor=ComponentEditor(), show_label=False), - (HSplit(Item('plotwaveindexshow', show_label=False, style='readonly'),Item('Kinetic_Trace', show_label=False),Item('Fit_Trace', show_label=False),Item('mcmc',show_label=False),Item('DeleteTraces_1', show_label=False))), - Item('plotwaveindex', show_label=False) - ), - (Item('plotwavelength', editor=ComponentEditor(), show_label=False), - (HSplit(Item('plottimeindexshow', show_label=False, style='readonly'),Item('Spectra', show_label=False),Item('Fit_Spec', show_label=False),Item('DeleteSpectra_1', show_label=False))), - Item('plottimeindex', show_label=False)), + ( + Item('plottime', editor=ComponentEditor(), show_label=False), + (HSplit(Item('Kinetic_Trace', show_label=False),Item('Fit_Trace', show_label=False),Item('mcmc',show_label=False),Item('DeleteTraces_1', show_label=False),Item('plotwaveindexshow', show_label=False, style='readonly'))), + Item('plotwaveindex', show_label=False, editor=RangeEditor(low_name='wavelow',high_name='wavehigh',format='%6f',label_width=waverange,mode='slider')) + ), + ( + Item('plotwavelength', editor=ComponentEditor(), show_label=False), + (HSplit(Item('Spectra', show_label=False),Item('Fit_Spec', show_label=False),Item('DeleteSpectra_1', show_label=False),Item('plottimeindexshow',show_label=False,style='readonly'))), + Item('plottimeindex', show_label=False, editor=RangeEditor(low_name='timelow',high_name='timehigh',format='%d',label_width=timerange,mode='slider')) + ), ), ), label='2D plot' @@ -247,6 +266,7 @@ class MainWindow(HasTraits): Action(name="Save as Glotaran",action="_Save_Glo_fired"), Action(name="Delete multple traces",action="_DeleteTraces_fired"), Action(name="Delete multple spectra",action="_Delete_spectra_fired"), + Action(name="Show python data",action='_showdata_fired'), name="File"), Menu( Action(name="Plot chirp",action='_PlotChirp_fired'), @@ -281,34 +301,41 @@ def _plot2Db_fired(self): ds.set_data('img',Data.TrA_Data) img = Plot(ds) - cmapImgPlot = img.img_plot("img",colormap=jet,x=Data.wavelength,y=Data.time) + cmapImgPlot = img.img_plot("img",colormap=jet,xbounds=(Data.wavelength[0],Data.wavelength[-1]),ybounds=(0,(len(Data.time)-1))) self.plot2D = img self.plot2D.x_axis.title="Wavelength (nm)" - self.plot2D.y_axis.title="time (ps)" + self.plot2D.y_axis.title="Samples" + + if self.zoom_on==True: + zoom = ZoomTool(component=img, tool_mode="box", always_on=True) + img.overlays.append(zoom) - zoom = ZoomTool(component=img, tool_mode="box", always_on=False) - img.overlays.append(zoom) img.tools.append(PanTool(img)) self._plottimeindex_changed() self._plotwaveindex_changed() + def _zoom_on_changed(self): + self._updateplots_fired() + def _updateplots_fired(self): #Don't regrid just reset 2D and 1D graphs ds = ArrayPlotData() - ds.set_data('img',Data.TrA_Data_gridded) + ds.set_data('img',Data.TrA_Data) img = Plot(ds) - cmapImgPlot = img.img_plot("img",colormap=jet,xbounds=(Data.wavelength[0],Data.wavelength[-1]),ybounds=(Data.time[0],Data.time[-1])) + cmapImgPlot = img.img_plot("img",colormap=jet,xbounds=(Data.wavelength[0],Data.wavelength[-1]),ybounds=(0,(len(Data.time)-1))) self.plot2D = img self.plot2D.x_axis.title="Wavelength (nm)" - self.plot2D.y_axis.title="time (ps)" + self.plot2D.y_axis.title="Samples" + + if self.zoom_on==True: + zoom = ZoomTool(component=img, tool_mode="box", always_on=True) + img.overlays.append(zoom) - zoom = ZoomTool(component=img, tool_mode="box", always_on=False) - img.overlays.append(zoom) img.tools.append(PanTool(img)) self._plottimeindex_changed() @@ -318,7 +345,7 @@ def _plottimeindex_changed(self): ''' Plotting the 1D spectra chaco plot ''' - index_time_left=(abs(Data.time-float(self.plottimeindex))).argmin() + index_time_left=self.plottimeindex self.plottimeindexshow = Data.time[index_time_left] @@ -326,8 +353,10 @@ def _plottimeindex_changed(self): plot = Plot(dw) plot.plot(("x","y"), line_width=1) - zoom = ZoomTool(component=plot, tool_mode="box", always_on=False) - plot.overlays.append(zoom) + if self.zoom_on==True: + zoom = ZoomTool(component=img, tool_mode="box", always_on=True) + img.overlays.append(zoom) + plot.tools.append(PanTool(plot)) self.plotwavelength = plot @@ -347,8 +376,10 @@ def _plotwaveindex_changed(self): plot = Plot(dt) plot.plot(("x","y"), line_width=1) - zoom = ZoomTool(component=plot, tool_mode="box", always_on=False) - plot.overlays.append(zoom) + if self.zoom_on==True: + zoom = ZoomTool(component=img, tool_mode="box", always_on=True) + img.overlays.append(zoom) + plot.tools.append(PanTool(plot)) self.plottime = plot @@ -397,7 +428,14 @@ def _Load_files_fired(self): indst = Data.time.argsort() Data.TrA_Data = Data.TrA_Data[indst,:] Data.time = Data.time[indst] - + self.timelist = Data.time.tolist() + + self.wavelow = float(Data.wavelength[0]) + self.wavehigh = float(Data.wavelength[-1]) + self.waverange = len(Data.wavelength) + self.timelow = int(0) + self.timehigh = len(Data.time)-1 + self.timerange = len(Data.time) self.plottimeindex = float(Data.time[0]) self.plotwaveindex = float(Data.wavelength[0]) @@ -422,12 +460,14 @@ def _Load_files_fired(self): except: self.log=("%s\nNo Chirp found"%(self.log)) - # Update chaco plot self._plot2Db_fired() self.log=("%s\nData file imported of size t=%s and wavelength=%s name=%s" %(self.log,Data.TrA_Data.shape[0],Data.TrA_Data.shape[1],TrA_Raw_name)) + def _showdata_fired(self): + Dataviewer().edit_traits() + def _open_csv_fired(self): ''' Opens the file in the original @@ -475,6 +515,10 @@ def _DeleteTraces_fired(self): Data.TrA_Data = delete(Data.TrA_Data,arange(index_wavelength_left,index_wavelength_right,1),1) Data.wavelength = delete(Data.wavelength,arange(index_wavelength_left,index_wavelength_right,1)) + self.wavelow = float(Data.wavelength[0]) + self.wavehigh = float(Data.wavelength[-1]) + self.waverange = len(Data.wavelength) + # Update chaco plot self._plot2Db_fired() @@ -499,6 +543,10 @@ def _Delete_spectra_fired(self): Data.TrA_Data = delete(Data.TrA_Data,arange(index_time_top,index_time_bottom,1),0) Data.time = delete(Data.time,arange(index_time_top,index_time_bottom,1)) + self.timelow = float(0) + self.timehigh = len(Data.time)-1 + self.timerange = len(Data.time) + # Update chaco plot self._plot2Db_fired() @@ -509,12 +557,16 @@ def _DeleteSpectra_1_fired(self): Delete single spectrum ''' - index_time_left=(abs(Data.time-float(self.plottimeindex))).argmin() + index_time_left=self.plottimeindex time_val = Data.time[index_time_left] Data.TrA_Data = delete(Data.TrA_Data,index_time_left,0) Data.time = delete(Data.time,index_time_left) + self.timelow = float(0) + self.timehigh = len(Data.time)-1 + self.timerange = len(Data.time) + # Update chaco plot self._plot2Db_fired() @@ -532,6 +584,10 @@ def _DeleteTraces_1_fired(self): Data.TrA_Data = delete(Data.TrA_Data,index_wave_left,1) Data.wavelength = delete(Data.wavelength,index_wave_left) + self.wavelow = float(Data.wavelength[0]) + self.wavehigh = float(Data.wavelength[-1]) + self.waverange = len(Data.wavelength) + # Update chaco plot self._plot2Db_fired() @@ -616,7 +672,7 @@ def _Fit_Trace_fired(self): def _Fit_Spec_fired(self): - index_time=(abs(Data.time-self.plottimeindex)).argmin() + index_time=self.plottimeindex Data.tracefitmodel = fitgui.fit_data(Data.wavelength,Data.TrA_Data[index_time,:],autoupdate=False,model=Gauss_1) results_error = Data.tracefitmodel.getCov().diagonal() @@ -888,7 +944,7 @@ def _Kinetic_Trace_fired(self): def _Spectra_fired(self): - index_time=(abs(Data.time-float(self.plottimeindex))).argmin() + index_time=self.plottimeindex figure() plot(Data.wavelength, Data.TrA_Data[index_time,:] )