Comkat

π ALL INFORMATION CLICK HERE ππ»ππ»ππ»
Comkat
COMKAT, which stands for 'COmpartment Model Kinetic Analysis Tool', is MATLAB software for compartmental modeling oriented to nuclear medicine applications (PET & SPECT). It supports models of a wide range complexity including multiple injection, receptor model with saturation. It supports many image formats, including DICOM images. Using either the command line interface or GUI, models are easily specified, solved or used to fit experimental data. Sensitivity equations are supported. No mathematical derivations are required on the part of the user.
Although there have been various software packages for processing biomedical imaging, few of them provide the functionalities of compartment modeling. In COMKAT, the COMKAT Image Tool can be used to load images, fuse images and draw volume or region of interest (VOI or ROI). For PET images, time-activity curves can be generated and passed to the COMKAT GUI for modeling analysis. With the enhanced integration for both imaging and modeling, COMKAT is convenient to use for research and data analysis.
Based on the SUNDIALS package [1] developed by Lawrence Livermore National Laboratory, COMKAT provides a compiled (mex) version of cvodes solver that is much faster than the Matlab built-in solver.
Compartment models can be easily created, configured and solved in COMKAT using either GUI or command line functions. Parameter estimation and sensitivity is also simple and intuitive using COMKAT.
We provide many tools in COMKAT, including input function estimation, graphical method analysis, simulation and more!
COMKAT provides various command line functions for modeling and imaging needs. Based on those, we also developed graphical user interfaces (GUIs) for modeling, imaging and lots of analysis functionalities. Even for people who are not familiar with Matlab programming COMKAT is friendly and intuitive.
COMKAT website provides complete documentation of manuals, tutorials and examples. The wiki-based website also provides an environment for inputs around the world.
Almost all the functions in COMKAT provide source code. Using COMKAT for non-commercial research use is free.
The latest version of COMKAT is COMKAT R3, released on January, 2008.
The latest added functions of COMKAT include:
We have developed a method to estimate the input function from images. It's now a GUI included in COMKAT.
The new COMKAT image tool is more powerful! You can now easily translate and rotate images. Automatic image fusion is within clicks away by mutual information algorithms.
Our own DICOM reading function written as a mex file speeds up reading DICOM images by a factor of 10 compared to the Matlab built-in functions.
We also support NIFTI images now.
New command line functions for graphical methods of modeling analysis
Dr. Raymond Muzic, PhD is the main COMKAT developer. He is an associate professor of Radiology in Case Western Reserve University. Go to People:mainpage to find out more about the people involved in developing COMKAT.
COMKAT serves as a bridge between biomedical imaging and modeling analysis. It can be divided into the following components:
The command line functions of COMKAT provides functionalities to both imaging and modeling analysis. You can write a Matlab script to construct a compartment model with as simple as several lines. Models can be solved or used to estimate parameters. These functions are the basis of COMKAT because all the GUIs call underlying functions.
This GUI is designed for compartment modeling. Input and output can be loaded from various file formats. You may also set the output directly from images with COMKAT Image Tool. You can use the COMKAT GUI to fit experimental data and simply to simulate model output.
This GUI is designed for image display, fusion and region of interest. We support various image formats.
To load input functions from files or functions, a user can use the input function GUI.
COMKAT was originally designed to run as a Matlab toolbox. It is recommended that the users use COMKAT under Matlab.
COMKAT has been tested on Windows XP, MacOS 10.4 and Linux.
We recommend using COMKAT under Matlab R14 or newer.
COMKAT is free for non-commercial use. Please contact us [2] if you are considering using it in commercial purposes.
Terms of Usage for registering for a user on COMKAT website:
1. I have registered (free for noncommercial use) as a user at comkat.case.edu and agree to use COMKAT for non-commercial research. I will not share my copy of COMKAT with others who have not registered as COMKAT users. Note: Commercial use requires written permission of Ray Muzic (muzic@case.edu)
2. Via citation, I will properly acknowledge use of make a crepe COMKAT in grant applications, proposals, manuscripts, etc....
3. I will inform Ray Muzic (muzic@case.edu) of citations to COMKAT in my publications so that he can use this information to seek support for COMKAT.
4. If I modify COMKAT for my own use, I will clearly identify in publications, grant applications, etc...., that I have used a customized version of COMKAT. (I will consider sharing my modifications with Ray Muzic. If they are of general interest, and all parties agree, modifications might be made available to others (with proper acknowledgement for efforts).
5. I have read and understand the Disclaimer which essentially states: COMKAT IS NOT INTENDED FOR CLINICAL / DIAGNOSTIC USE. USER ASSUMES ALL RISK.
To cite COMKAT , please refer to the following:
Muzic RF, Jr., Cornelius S. COMKAT: compartment model kinetic analysis tool. J Nucl Med. Apr 2001;42(4):636-645. [3]
Find papers citing COMKAT through Google scholar: [4]
COMKAT allows a user to construct a compartment model of his/her own design without resorting to writing equations. Models may then be used for a simulation and fitting data. COMKAT uses an object-oriented representation of models which is illustrated in this article.
COMKAT enables a user to specify a model configuration without having to resort to writing and programming differential equations. This is all handled behind the scenes using state-of-the art differential equations solvers. On several platforms a solver written in C is used and transparently accessed from MATLAB via a mexfile interface created by the COMKAT authors. This means that solving the equations will be efficient and reliable. On platforms for which the compiled solver is not available, COMKAT will automatically use a differential equation solver (e.g. ode15s) from the MATLAB ODE Suite. This too will be reliable but may take more computer time.
There are two interfaces to COMKAT: a graphical user interface (GUI) and the command line interface (CLI). While the GUI has snazzy appeal and easy of use, the CLI is of particular utility to people doing modeling research. This is because the CLI enables one to set up simulations that loop and create thousands of simulated data sets. Because this is all done within the MATLAB environment, results of such simulations may be analyzed, graphed, and otherwise be prepared for publication. Alternatively, results could be saved to EXCEL spreadsheet or pasted into documents.
Modeling generally entails analyzing experimental data using mathematical rules that predict relationships between input functions, tissue responses and physiologic parameters. Modeling is used in two forms: 1 simulation or prediction and 2 fitting or characterization of function. In practice, to do fitting entails repeating simulations and adjusting values of parameters until the model-predicted output matches measured data. Consequently, 2 can be thought of as a superset of 1.
COMKAT uses an object-oriented approach to represent models. A compartmentModel object object can be thought of as the type for a variable that holds all the information needed to describe the kinetics, to setup and solve the equations, and even to fit data. Special functions called methods are used to configure the model, perform the solving and do the fitting. What makes something a method and not just a function is that a method acts on information stored in an object. While this might sound abstract and obtuse, hopefully the following example will convince you that this is a convenient, intuitive approach.
Using the MATLAB command line interface (CLI), type this to create a new model object:
Next use the whos command to see what was created:
Notice that cm is not a double array, not an integer array and not even a structure. cm is a special data type created using the special function compartmentModel. This function is called a constructor because it creates new instance of an object. Actually, the function is a method. It is the constructor method for a compartmentModel object. (MATLAB "knows" that is a constructor since the name of the method, compartmentModel is the same as the name of the object type.)
At this point cm is a model with no compartments, no links connecting compartments, no data... as is revealed when examining its contents
Note that nothing is special about the variable name cm. One could have just as easily created a compartmentModel object and called it Fred (Fred = compartmentModel;).
Not much can be demonstrated with an empty model so we might as well create something useful. We start by adding a couple of compartments. Lets create a model that describes a hypothetical model of blood flow to the brain. The model will have two compartments one representing the brain and one representing the rest of the body.
[For those not familiar with MATLAB,Β % create a new, empty model is a comment. It is something that MATLAB ignores and is only for the convenience of the person reading the commands.]
Lets assume that we are doing an imaging experiment and that something like radioactive water or gadolinium is administered intravenously to the subject. Blood in the carotid arteries will carry the material to the brain. Hence we consider the carotids as input function. That is, the time-course of the concentration of such a material in the blood would be experimentally measured. For the sake of simplicity lets assume that a MATLAB function called fengInput is created which can provide the blood concentration at time t. [In a more experimentally realistic case the concentration of the input function at time t may be determined by interpolating (e.g. linear interpolation) measured data. This can be done too and is, for the sake of keeping the present example simple, shown elsewhere.]
fengInput.m calculates the blood concentration at time t as a sum of gamma variate and exponential terms. The amplitudes and the exponential constants are all specified in input p to fengInput. For the sake of example, let p be defined as
[The details of what each element of p means is not important to the current discussion.]
The following commands plot the input function concentration vs time [0., 0.1; 0.2, .... 100.0] minutes
To include this input function in the model, use this command
[For now don't worry about the 1 and 0 in the command. These are the specific activity (e.g. Bq/pmol) and tracer halflife (e.g. minutes). Because of the values used in this example the model can be interpreted as using a non-radioactive tracer or a tracer with infinite half life.]
At this point the model has two compartments and one input but there is no specification as how tracer moves between the input and compartments. Herein we assume compartments are connected as depicted in the figure
To create the k1 link from the corotid input as the source to the brain as the destination, use this command
[COMKAT is case-sensitive. Since the input was called Carotid in addInput(), it must be called Carotid in addLink() and not carotid and not CaRoTiD... You may use whatever mixture of upper and lower case that you prefer so long as you are consistent!]
The parameter 'L' in the statement identifies the link type. 'L' means the link source is an input and the kinetics are linear. To include the k2 link in the model the same type of command is used except that the linktype is 'K' because the link source is a compartment and not an input. [A list of the possible link types is given in the help for addLink.]
For the mathematically inclined readers, we have just set up a model described by these equations:
The next step is to assign values for the rate constants k1 and k2. These can be adjusted later so the values used here are not so critical. For now just assign k1 = 0.8, k2 = 0.5.
At this point we are almost at the point where the model equations can be solved. What is missing is a specification of what is the model output. The output is not restricted to being the concentration in a single compartment but rather can be a weighted sum of the concentration in more than one compartment. Also there is the issue of defining the times at which solutions to the equations are desired. Model outputs are often defined as corresponding to the measured data. For example, pixel values may correspond to brain concentration averaged over the duration of the image acquisition.
Ignoring this time-averaging for a moment, an output might be thought of as one times the brain compartment concentration plus zero times the body compartment concentration. In COMKAT only the non-zero contributions of a compartment to outputs need be specified. Here is an example of how it might be done.
The wlist defines the compartments and weights with which they contribut to outputs. (E.g. to define an output as 0.5*Brain + 0.4*Body, wlist = {'Brain', 0.5; 'Body', 0.4 }; xlist is similar to wlist except that xlist defines how input functions contribute directly to outputs. If for example, one would like the model the pixel as having 4% contribution from vascular space, do this xlist = {'Carotid', 0.04 };.)
To account for time-averaging inherent in data collection processes, we need only specify the the start and stop time of each image in the dynamic sequence. Lets assume the are 14 images and the start time (column 1) and end times (column 2 ) of each image is given in a MATLAB variable
For example, image 3 (row 3 in st) begins at 1 minutes and ends at 2 minutes. To tell specify this in the model description, use the following command
At this point the model is completely defined and can be solved to obtain model-predicted concentration curves using the solve method:
That is all there is to it. To see what we got, use the whos command
The array result has as many rows as there images in the dyanmic image sequence. In this simple case the first column holds the scan start times, the second holds the scan end times and the third holds the output which was called 'pixels'. The number of columns and their contents depends on the model specification and all of this is described resultIndex
In general resultIndex{i} tells what is in column i of result.
Standard MATLAB commands may be used to plot the pixel concentration versus the mid-time of each scan.
COMKAT allows a great deal of flexibility in defining, solving models and fitting models to data. This article just scratches the surface of the possiblities. This article focused on the command line interface (CLI) of COMKAT. Another article provides an introduction to the graphical user interface (GUI). Importantly, the GUI is just a "front end" that β behind the scenes β uses CLI.
[pfit, qfit, modelfit, exitflag, output, lambda, grad, hessian] = fitGen(cm, pinit, plb, pub)
COMKAT allows a user to construct a model of his/her own design without resorting to writing equations.
COMKAT enables a user to specify a model configuration without having to resort to writing and solving differential equations. This is all handled behind the scenes using state-of-the art differential equations solvers. On several platforms, the solver is written in C and accessed from MATLAB via a mexfile interface. This means that solving the equations will be efficient and reliable.
There are two interfaces to COMKAT: a graphical user interface (GUI) and the command line interface (CLI). While the GUI has snazzy appeal and easy of use, the CLI is the workhorse for people doing modeling research. This is because the CLI enables one to setup simulations that loop and create thousands of simulated data sets all within the MATLAB programming environment.
Modeling generally entails analyzing experimental data using mathematical rules that predict relationships between input functions, tissue responses and physiologic parameters. Values of physiologic parameters, such as perfusion, are estimated by adjusting their values until the model-predicted output agrees with the experimental data. Input function fitting is no different. One proposes a mathematical form as describing the input and then adjusts values of its parameters to achieve the best match between model-predicted and experimental data.
In this section an example is presented of using COMKAT to estimate parameters of the FDG input function. The first form of the example is intentionally kept simple to best illustrate concepts. The second example is more complex and perhaps a good starting point for you to research strategies for simultaneously estimating input functions and tissue kinetic parameters.
Here we assume that the input function has the form
where Cp is the plasma concentration of 18FDG, pi are the input function parameters to be estimated, and t is time. (This form comes from Feng, Huang, Wang. "Models for Computer simulation Studies of Input Functions for Tracer Kinetic Modeling with Positron Emission Tomography", International Journal of Biomedical Computing, 32(2):95-110, March 1993.)
Step 1 To set this up in MATLAB for simulation, create the following function and put it in a file called refCp.m:
This function can be used to plot an example input curve using these commands
Note that he above function, refCp.m not only calculates values Cp, it also optionally calculates values for the derivative of Cp with respect to parameter vector p. These will be needed later since to fit the input function, it is important to quantify how changes in values of p will effects Cp values which, in turn, effect model-predicted tissue concentration reflected in voxels or regions of interest.
Step 3 Use model output as perfect "data"
Values of parameter pfit estimates are [28.0167; 0.7652; 0.7059; 4.1586; 0.1257; 0.0105] and are reasonably close to the true values (pxEval(cm, 'pin')) [28; 0.75; 0.70; 4.134; 0.1191; 0.01043]
Step 5 Examine model outputs for "data", initial guess, and fit
Aside from the obvious difference of estimatting values for rate constants as well as input parameters, this example simultaneoulsy fits three tissue regions. To do this, three different outputs (regA, regB, regC) are used and these are based on three different sets of compartments. We assume a single, common input.
Another important detail is that because of the way the K1 parameters appear in the differential equations - always multiplied by Cp, there is insufficient information to estimate both the K1 values and the scale of the input function. Think about it. It is what is called an identifiability problem. If you double K1 and halve Cp, their product - and hence model output - is unchange. Consequently, here we take the approach of fixing K1 values at their true value.
Step 1 Do nothing, just use the input from step 1 above.
Step 2 Create an FDG model for three regions all sharing the same input. (This example is a lot of typing or just one giant Copy and Paste. Nevertheless, it should be quite straightforward if you understood Example 1.
Step 3 Use model output as perfect "data"
and, yes that is right, we just estimated values of 15 parameters. Wasn't tha
Bailey Bae Sex
Lindsay Tuggey Sexy
Kourtney Kane Feet