Skip to content

AFNI/NIfTI Server

Sections
Personal tools
You are here: Home » AFNI » Documentation

Doxygen Source Code Documentation


Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals   Search  

thd_manydset.c File Reference

#include "mrilib.h"
#include "thd.h"

Go to the source code of this file.


Functions

THD_3dim_dataset_arrayTHD_array_3dim_from_block (THD_datablock_array *blk_arr)

Function Documentation

THD_3dim_dataset_array* THD_array_3dim_from_block THD_datablock_array   blk_arr
 

Definition at line 16 of file thd_manydset.c.

References ADDTO_3DARR, THD_3dim_dataset::anat_parent_name, THD_3dim_dataset_array::ar, THD_datablock_array::ar, DSET_ERR, DSET_WARN, ENTRY, FREE_3DARR, INIT_3DARR, ISANAT, ISFUNC, myXtFree, THD_3dim_dataset_array::num, THD_datablock_array::num, RETURN, SORT_3DARR, THD_3dim_from_block(), and THD_delete_3dim_dataset().

Referenced by THD_init_session().

00017 {
00018    THD_3dim_dataset_array * dset_arr ;
00019    THD_3dim_dataset *       dset ;
00020    int id ;
00021    Boolean dset_ok = True , all_anat , all_func ;
00022 
00023 ENTRY("THD_array_3dim_from_block") ;
00024 
00025    INIT_3DARR( dset_arr ) ;
00026 
00027    if( blk_arr == NULL || blk_arr->num <= 0 ) RETURN(dset_arr) ;
00028 
00029    for( id=0 ; id < blk_arr->num ; id++ ){
00030 
00031       dset = THD_3dim_from_block( blk_arr->ar[id] ) ;
00032 
00033       if( dset != NULL ) ADDTO_3DARR( dset_arr , dset ) ;
00034    }
00035 
00036    if( dset_arr->num <= 0 ) RETURN(dset_arr) ;
00037 
00038    /******************************************************/
00039    /*-- now, check the set of datasets for consistency --*/
00040    /******************************************************/
00041 
00042    /*-- 1.  Images should all be anatomy type or function type --*/
00043 
00044    all_anat = all_func = True ;
00045    for( id=0 ; id < dset_arr->num ; id++ ){
00046       dset      = dset_arr->ar[id] ;
00047       all_anat  = all_anat && ISANAT(dset) ;
00048       all_func  = all_func && ISFUNC(dset) ;
00049    }
00050    if( !all_anat && !all_func )
00051       DSET_ERR("image type conflicts (ANAT and FUNC mixed)") ;
00052 
00053    SORT_3DARR( dset_arr ) ;
00054 
00055    /*-- 2.  If all images are anat, nothing to do at this moment. --*/
00056 
00057    if( all_anat ){
00058    } /* end of dealing with all_anat case */
00059 
00060    /*-- 3.  If all images are func .... --*/
00061 
00062    if( all_func ){
00063       THD_3dim_dataset * dset0 ;
00064       int jd ;
00065 
00066 #if 0
00067       /* check for anat parents (should all have one) */
00068 
00069       for( id=0 ; id < dset_arr->num ; id++ ){  /* check for anat parent */
00070          dset = dset_arr->ar[id] ;
00071          if( strlen(dset->anat_parent_name) == 0 )
00072             DSET_WARN("functional image has no anatomical parent!") ;
00073       }
00074 #endif
00075 
00076    } /* end of dealing with all_func case */
00077 
00078    /*********************************************************/
00079    /*---------- if an error occurred, clean up -------------*/
00080    /*********************************************************/
00081 
00082    if( ! dset_ok ){
00083 
00084       /*-- delete data in subsidiary data structures --*/
00085 
00086       for( id=0 ; id < dset_arr->num ; id++ ){
00087          THD_delete_3dim_dataset( dset_arr->ar[id] , False ) ;
00088          myXtFree( dset_arr->ar[id] ) ;
00089       }
00090 
00091       FREE_3DARR( dset_arr ) ;
00092       INIT_3DARR( dset_arr ) ;  /* return a blank array */
00093    }
00094 
00095    /*-- at last!
00096         give the caller the list of (nearly) initialized datasets --*/
00097 
00098    RETURN(dset_arr) ;
00099 }
 

Powered by Plone

This site conforms to the following standards: