Rss Feed
Tweeter button
Facebook button
Technorati button
Reddit button
Myspace button
Linkedin button
Webonews button
Delicious button
Digg button
Flickr button
Stumbleupon button
Newsvine button
Youtube button

Notes:

  • The site will be morphing over the next little while.
  • I am having some issues with tabs/spaces in the Python code. Sometimes they are correct, sometimes they get eaten. I am trying to figure it out.

Please feel free to leave a comment on a post if it interests you or if you have questions

Jul 272009

One thing I found out quickly is that I could not update a matplotlib plot in Python, at least automatically.  Then I found out this little trick.  The idea is that at the end of the loop one must put a fig1.canvas.draw() (obviously change the fig1 part so that it reflects the variable name of the figure).  It works very well and seems to be quite quick for simple things.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
fig1 = figure()

for ii in range(30):

    ## Clear the figure
    clf()

    # Do a plot that changes for each
    # iteration
    plot( range(ii) )

    # Now set the xlimit so that it
    # doesn't change the plot
    xlim((0,30))
    ylim((0,30))

    ## Now the magic, we must update the
    ## canvas
    fig1.canvas.draw()
Jul 232009

The Problem

There are times when an image is created where we don’t do a calculation for part of the image and want to display it black (for example) and not the colormap color which would correspond to zero.

For example, in the image:

original let’s say we are only interested in the block in the center and not the blue background around it.

We can create a background of NaN’s to represent the region which we want to not view, then use the alpha (transparency) channel to enable viewing only of the non-NaN region.

Code

Given a set of data, for example:

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
%% Create the test image
A = zeros(128,128);
A(33:96,33:96) = repmat( linspace(0, 1, 64), [64 1]);

figure(1),clf;
imagesc( A ); axis('off'); axis('square');
colormap(jet);
colorbar;

print -f1 -djpeg original.jpg

%% The better image
B = nan*ones(128,128);
B(33:96,33:96) = repmat( linspace(0, 1, 64), [64 1]);

figure(2),clf;
imagesc( B ); axis('off'); axis('square');
colormap(jet);
colorbar;

%%  Now set the alpha map for the nan region
z = B;
z(~isnan(B)) = 1;
z(isnan(B)) = 0;

alpha(z);
set(gca, 'color', [0 0 0]);

print -f2 -djpeg blocked.jpg
Jul 132009

The Problem

It is important to calculate the propagation of errors for combinations of variables. There are some good resources on the interenet for linear propagation of error including Wikipedia (here).

It is assumed the MTR z-spectral data has means and standard devations for positive offsets (mmp, ssp) and means and standard deviations for negative offsets (mmn, ssn). The asymmetry is calculated as  mm = (mmp - mmn) ./ mmp.

Code

Given a set of data, for example:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function [mm,ss] = calcasym(mmp, ssp, mmn, ssn)

mmn = fliplr(mmn);
ssn = fliplr(ssn);

%% Calculate the asymmetry
mm = (mmp - mmn) ./ mmp;

%% Calculate the error.
mean_num = mmp-mmn;
std_num = sqrt( ssp.^2 + ssn.^2 );

mean_denom = mmp;
std_denom = ssp;

ss = (mean_num./mean_denom) .* sqrt( (std_num ./ mean_num).^2 + (std_denom ./ mean_denom).^2 );

mm = mm * 100; ss = ss * 100;
© 2010 Math, Computing and Research Please leave a comment or contact me craig@mri.brechmos.org if you have any questions. Suffusion WordPress theme by Sayontan Sinha