Philips Independent User Group web page. The information and opinions on this site neither belong to or are endorsed by Philips. Individuals have submitted these pages, they may be used at the surfer's own risk. Any programs copied down should be tested thoroughly by the end user. No liability rests with the author, Philips or the hosts of the site.

Odyssey Users Pages (NB macros have the .wri extension added, this makes them display in wordpad. Don't try to save from wordpad, instead, right click and "save target as" then remove .wri from the filename before transferring to Odyssey)




Deconvolution and convolution

The Curve maths function in Pixie includes a deconvolution operation which is very robust.(As long as you start from the downward sloping part of the drug clearance curve.) One other thing to note is that some programs on other computers truncate the deconvolved curve to remove first pass, which is a high spike at the beginning of the deconvolved curve. If you are used to this, be warned: the Pixie function doesn't, so you need to do this in the macro if you want to achieve the same result. You can easily do this by using the curve point read/write operation to read the value of say the 6th point then use the same funtion to write this value to points one to five.

You probably also want to derive some parameters from the curves, such as minimum transit time, mean transit time and transit time index. But how to test your program? Well here is a tool that might be helpful, its a simple utility that enables you to create idealised transit curves in the buffers of your choice. You are required to specify the minimum transit time and transit time index for each curve (mean transit time is just the sum of these) and state which buffer to put the curve in. You can do this repeatedly filling as many buffers as you wish with your phantom transit curves. So you can make such curves and place them in the buffers where your renal processing macro is expecting to find input curves for the parameter calculations, then run the parameter calc part of the program and check that your calculated parameters are the same as the parameters you specified when making the curves. The macro is called curve_gen.pmf

Other features of the macro enable you to make an idealised blood curve, and also to convolve any 2 curves together. So you can for instance:

Here is an example screen grab of the input curves you can make. On the left is the renal transit curve (i.e. the "deconvolved" curve. On the right is an exponential blood clearance curve with which the renal tranit curve might become convolved. In the movie clip below you can see the renal transit curve being convolved with the blood curve. The renal transit curve is being repeated after a 1 frame time delay and each time attenuated by the blood curve (also shown) simulating recirculation. The graph on the right is the recirculating renal transit curve being progressively summed

The resulting convolved curve looks satisfyingly like a renogram curve.

Enough about convolution lets look at the mundane matter of curve colours, can you count in 15's?


Curve Colours

These seem to have changed and are not printed in the colours held in the curve colour environment variables anymore. i.e. when they changed no-one bothered to change the environment variables to match the new colour scheme. So just avoid said variables. (If you want to see the colours of the old scheme run the factory pixie macro ZCAT.pmf)

So as an aid to programmers I have done a quick macro which shows (nearly) all the curves and their colours. The output looks like (click for a full view). So now you don’t need the macro! But just in case you want it anyway here it is:- cv_colours.pmf



THE X-axis BUG (Odyssey FX8.9)

The bug basically means that your first x value will have a somewhat unpredictable value. Its debatable what the value should be (0, first fame duration or half that) but one thing it shouldn’t be is unpredictable! My examination of the bug tells me that the first value will depend on 2 things,

  1. whether the dynamic had short or long frames
  2. whether you had saved the curves to the patient folder and reloaded them, or whether they were freshly made.

Making "raw curves" from acquired images the scaling x-axis rule depends on the duration of each frame!

Things get even worse if you save to file, then reload the curves.

There is some more information available by examining the CB headers with cbdump. This gives a number of parameters set in the header, including X0, Xincrement and time frame.



The x axis can be restored to (very nearly) the same start point for all types of curves whether saved/reloaded or not by running the cbmodify command with a fixed set of parameters (X0 = 0, Time frame = 0).



The results of all the test acquisitions I did, giving the x value range, and the values in the headers, before and after save/relaod, before and after cbmodify as described are given in this spreadsheet

 I hope this is helpful to some users. Please let me know if you find out any of this is wrong or find out some more detail.

 This workround might seem unnecessary or pedantry but there is one concrete reason to worry about the x scale. You cannot plot multiple curves with CBdisplay unless the x values correspond.