Doxygen Source Code Documentation
thd_avts.c File Reference
#include "mrilib.h"Go to the source code of this file.
Functions | |
| MRI_IMAGE * | THD_average_timeseries (MCW_cluster_array *clustar, THD_3dim_dataset *dset) |
| MRI_IMAGE * | THD_average_one_timeseries (MCW_cluster *clust, THD_3dim_dataset *dset) |
Function Documentation
|
||||||||||||
|
Extract a single average time series. -------------------------------------------------------------------------- Definition at line 57 of file thd_avts.c. References ADDTO_CLARR, MCW_cluster_array::clar, DESTROY_CLARR, ENTRY, INIT_CLARR, ISVALID_DSET, RETURN, and THD_average_timeseries().
00059 {
00060 MRI_IMAGE *im ;
00061 MCW_cluster_array *clustar ;
00062
00063 ENTRY("THD_average_one_timeseries") ;
00064
00065 if( clust == NULL || !ISVALID_DSET(dset) ) RETURN(NULL) ;
00066
00067 INIT_CLARR(clustar) ;
00068 ADDTO_CLARR(clustar,clust) ;
00069
00070 im = THD_average_timeseries( clustar , dset ) ;
00071
00072 clustar->clar[0] = NULL ; DESTROY_CLARR(clustar) ;
00073 RETURN(im) ;
00074 }
|
|
||||||||||||
|
For each cluster of points in clustar, extract the average time series from dataset dset. Put the results into an nt X nc float image, where nt = number of dataset bricks, nc = number of clusters. ------------------------------------------------------------------------- Definition at line 9 of file thd_avts.c. References MCW_cluster_array::clar, DSET_NVALS, DSET_NX, DSET_NY, ENTRY, free, MCW_cluster::i, ISVALID_DSET, MCW_cluster::j, MCW_cluster::k, malloc, MRI_FLOAT_PTR, mri_new(), nc, MCW_cluster_array::num_clu, MCW_cluster::num_pt, RETURN, THD_extract_array(), and THREE_TO_IJK. Referenced by ROIPLOT_main(), and THD_average_one_timeseries().
00011 {
00012 int nt,nc , ii,jj , npt,kk , nx,ny,nxy , ijk,nav ;
00013 MRI_IMAGE *flim ;
00014 float *flar , *tsar , *avar , fac ;
00015 MCW_cluster *clust ;
00016
00017 ENTRY("THD_average_timeseries") ;
00018
00019 if( clustar == NULL || clustar->num_clu == 0 || !ISVALID_DSET(dset) )
00020 RETURN(NULL) ;
00021
00022 nt = DSET_NVALS(dset) ;
00023 nc = clustar->num_clu ;
00024 tsar = (float *) malloc(nt*sizeof(float)) ;
00025 avar = (float *) malloc(nt*sizeof(float)) ;
00026
00027 flim = mri_new( nt,nc , MRI_float ) ;
00028 flar = MRI_FLOAT_PTR(flim) ;
00029
00030 nx = DSET_NX(dset) ; ny = DSET_NY(dset) ; nxy = nx*ny ;
00031
00032 for( jj=0 ; jj < nc ; jj++ ){
00033 clust = clustar->clar[jj] ;
00034 if( clust == NULL || clust->num_pt == 0 ) continue ;
00035 npt = clust->num_pt ;
00036 for( ii=0 ; ii < nt ; ii++ ) avar[ii] = 0.0 ;
00037 for( nav=kk=0 ; kk < npt ; kk++ ){
00038 ijk = THREE_TO_IJK(clust->i[kk],clust->j[kk],clust->k[kk],nx,nxy) ;
00039 ii = THD_extract_array( ijk , dset , 0 , tsar ) ;
00040 if( ii < 0 ) continue ;
00041 for( ii=0 ; ii < nt ; ii++ ) avar[ii] += tsar[ii] ;
00042 nav++ ;
00043 }
00044 if( nav > 0 ){
00045 fac = 1.0 / nav ;
00046 for( ii=0 ; ii < nt ; ii++ ) flar[ii+jj*nt] = fac*avar[ii] ;
00047 }
00048 }
00049
00050 free(avar) ; free(tsar) ; RETURN(flim) ;
00051 }
|