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_opendset.c File Reference

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

Go to the source code of this file.


Defines

#define CHECK_FOR_DATA(fn)

Functions

THD_3dim_datasetTHD_open_one_dataset (char *pathname)
int THD_is_dataset (char *sname, char *pname, int vt)
char * THD_dataset_headname (char *sname, char *pname, int vt)

Define Documentation

#define CHECK_FOR_DATA fn   
 

Value:

do{ if( fsize <= 0 ){                                                    \
       if( fsize == 0 )                                                   \
         fprintf(stderr,"** Can't read ANY data from file '%s'\n",(fn));  \
       RETURN(NULL) ;                                                     \
     }} while(0)

Definition at line 11 of file thd_opendset.c.

Referenced by THD_open_one_dataset().


Function Documentation

char* THD_dataset_headname char *    sname,
char *    pname,
int    vt
 

Definition at line 199 of file thd_opendset.c.

References ADN_directory_name, ADN_none, ADN_prefix, ADN_view_type, THD_3dim_dataset::dblk, THD_datablock::diskptr, EDIT_dset_items(), EDIT_empty_copy(), ENTRY, FIRST_VIEW_TYPE, THD_diskptr::header_name, LAST_VIEW_TYPE, malloc, RETURN, and THD_delete_3dim_dataset().

Referenced by THD_open_3dcalc().

00200 {
00201    THD_3dim_dataset *dset ;
00202    char *str ; int ll ;
00203 
00204 ENTRY("THD_dataset_headname") ;
00205 
00206    if( pname == NULL ) RETURN(NULL) ;
00207 
00208    dset = EDIT_empty_copy(NULL) ;
00209    EDIT_dset_items( dset , ADN_prefix , pname , ADN_none ) ;
00210 
00211    if( sname != NULL )
00212       EDIT_dset_items( dset , ADN_directory_name , sname , ADN_none ) ;
00213 
00214    if( vt >= FIRST_VIEW_TYPE && vt <= LAST_VIEW_TYPE )
00215       EDIT_dset_items( dset , ADN_view_type , vt , ADN_none ) ;
00216 
00217    ll = strlen(dset->dblk->diskptr->header_name) + 1 ;
00218    str = (char *) malloc(sizeof(char)*ll ) ;
00219    strcpy( str , dset->dblk->diskptr->header_name ) ;
00220 
00221    THD_delete_3dim_dataset( dset , False ) ;
00222    RETURN(str) ;
00223 }

int THD_is_dataset char *    sname,
char *    pname,
int    vt
 

Definition at line 164 of file thd_opendset.c.

References ADN_directory_name, ADN_none, ADN_prefix, ADN_view_type, THD_3dim_dataset::dblk, THD_datablock::diskptr, EDIT_dset_items(), EDIT_empty_copy(), ENTRY, FIRST_VIEW_TYPE, THD_diskptr::header_name, LAST_VIEW_TYPE, RETURN, THD_delete_3dim_dataset(), and THD_is_file().

Referenced by THD_open_3dcalc().

00165 {
00166    THD_3dim_dataset *dset ;
00167    int ii , vv ;
00168 
00169 ENTRY("THD_is_dataset") ;
00170 
00171    if( pname == NULL ) RETURN(-1) ;
00172 
00173    dset = EDIT_empty_copy(NULL) ;
00174    EDIT_dset_items( dset , ADN_prefix , pname , ADN_none ) ;
00175 
00176    if( sname != NULL )
00177      EDIT_dset_items( dset , ADN_directory_name , sname , ADN_none ) ;
00178 
00179    if( vt >= FIRST_VIEW_TYPE && vt <= LAST_VIEW_TYPE ){
00180      EDIT_dset_items( dset , ADN_view_type , vt , ADN_none ) ;
00181      ii = THD_is_file(dset->dblk->diskptr->header_name);
00182      THD_delete_3dim_dataset(dset,False) ;
00183      if( ii ) RETURN(vt) ;
00184      RETURN(-1) ;
00185    }
00186 
00187    for( vv=FIRST_VIEW_TYPE ; vv <= LAST_VIEW_TYPE ; vv++ ){
00188      EDIT_dset_items( dset , ADN_view_type , vv , ADN_none ) ;
00189      ii = THD_is_file(dset->dblk->diskptr->header_name);
00190      if( ii ){ THD_delete_3dim_dataset(dset,False); RETURN(vv); }
00191    }
00192 
00193    THD_delete_3dim_dataset( dset , False ) ;
00194    RETURN(-1) ;
00195 }

THD_3dim_dataset* THD_open_one_dataset char *    pathname
 

Definition at line 23 of file thd_opendset.c.

References CHECK_FOR_DATA, DATASET_BRICK_SUFFIX, DATASET_HEADER_SUFFIX, ENTRY, getenv(), offset, RETURN, STRING_HAS_SUFFIX, THD_3dim_from_block(), THD_filesize(), THD_init_one_datablock(), THD_is_file(), THD_MAX_NAME, THD_open_1D(), THD_open_3D(), THD_open_analyze(), THD_open_ctfmri(), THD_open_ctfsam(), THD_open_dataset(), THD_open_minc(), THD_open_mpeg(), and THD_open_nifti().

Referenced by B2F_read_opts(), BUCK_read_opts(), CALC_read_opts(), check_output_files(), get_line_opt(), get_options(), IMREG_main(), main(), output_ts_array(), read_dataset(), read_input_data(), T3D_anatomy_parent_CB(), T3D_geometry_parent_CB(), TCAT_read_opts(), THD_fetch_dataset(), THD_open_3dcalc(), THD_open_dataset(), THD_read_dvecmat(), TT_load_atlas(), VL_command_line(), write_3dtime(), write_afni_data(), write_bucket_data(), and write_ts_array().

00024 {
00025    int ii , plen ;
00026    char dirname[THD_MAX_NAME] , fullname[THD_MAX_NAME] ;
00027    THD_3dim_dataset *dset ;
00028    THD_datablock    *dblk ;
00029    char *sub ;
00030    char *fname ;   /* to skip directory during HEAD/BRIK search in filename */
00031    int   offset ;  /*                                 - [rickr 20 Sep 2002] */
00032    int fsize ;     /* 06 Jan 2005 */
00033 
00034 ENTRY("THD_open_one_dataset") ;
00035 
00036    /*-- sanity check --*/
00037 
00038    if( pathname == NULL              ||
00039        (plen=strlen(pathname)) == 0  ||
00040        pathname[plen-1]        == '/'  ) RETURN(NULL) ;
00041 
00042    /*-- perhaps open the new-fangled way [22 May 2000] --*/
00043 
00044    if( getenv("AFNI_USE_THD_open_dataset") != NULL &&
00045        strstr(pathname,"[")                != NULL   ){
00046 
00047       RETURN( THD_open_dataset(pathname) ) ;
00048    }
00049 
00050    fsize = THD_filesize(pathname) ;                         /* 06 Jan 2005 */
00051    if( fsize == 0 && !THD_is_file(pathname) ) fsize = -1 ;  /* 31 Mar 2005 */
00052 
00053    /*-- perhaps the MINC way --*/
00054 
00055    if( STRING_HAS_SUFFIX(pathname,".mnc") ){
00056      CHECK_FOR_DATA(pathname) ;               /* 06 Jan 2005 */
00057      RETURN( THD_open_minc(pathname) ) ;
00058    }
00059 
00060    /*-- perhaps the ANALYZE way --*/
00061 
00062    if( STRING_HAS_SUFFIX(pathname,".hdr") ){
00063      CHECK_FOR_DATA(pathname) ;               /* 06 Jan 2005 */
00064      RETURN( THD_open_analyze(pathname) ) ;
00065    }
00066 
00067    /*-- perhaps the CTF way [04 Dec 2002] --*/
00068 
00069    if( STRING_HAS_SUFFIX(pathname,".mri") ){
00070      CHECK_FOR_DATA(pathname) ;               /* 06 Jan 2005 */
00071      RETURN( THD_open_ctfmri(pathname) ) ;
00072    } else if( STRING_HAS_SUFFIX(pathname,".svl") ){
00073      CHECK_FOR_DATA(pathname) ;               /* 06 Jan 2005 */
00074      RETURN( THD_open_ctfsam(pathname) ) ;
00075    }
00076 
00077    /*-- 04 Mar 2003: allow input of .1D files --*/
00078 
00079    if( STRING_HAS_SUFFIX(pathname,".1D") ){
00080      CHECK_FOR_DATA(pathname) ;               /* 06 Jan 2005 */
00081      RETURN( THD_open_1D(pathname) ) ;
00082    } else if( STRING_HAS_SUFFIX(pathname,".3D") ){  /* 21 Mar 2003 */
00083      CHECK_FOR_DATA(pathname) ;               /* 06 Jan 2005 */
00084      RETURN( THD_open_3D(pathname) ) ;
00085    }
00086 
00087    /*-- 28 Aug 2003: the NIFTI way! --*/
00088 
00089    if( STRING_HAS_SUFFIX(pathname,".nii")    ||
00090        STRING_HAS_SUFFIX(pathname,".nii.gz") ||
00091        STRING_HAS_SUFFIX(pathname,".nia")      ){
00092 
00093      CHECK_FOR_DATA(pathname) ;               /* 06 Jan 2005 */
00094      RETURN( THD_open_nifti(pathname) ) ;
00095    }
00096 
00097    /*-- 03 Dec 2003: the MPEG way! --*/
00098 
00099    if( STRING_HAS_SUFFIX(pathname,".mpg")  ||
00100        STRING_HAS_SUFFIX(pathname,".MPG")  ||
00101        STRING_HAS_SUFFIX(pathname,".MPEG") ||
00102        STRING_HAS_SUFFIX(pathname,".mpeg")   ){
00103 
00104      CHECK_FOR_DATA(pathname) ;               /* 06 Jan 2005 */
00105      RETURN( THD_open_mpeg(pathname) ) ;
00106    }
00107 
00108    /*-- Must be an AFNI-formatted dataset! -------------*/
00109    /*-- find directory and last names in the pathname --*/
00110 
00111    for( ii=plen-1 ; ii >= 0 ; ii-- ) if( pathname[ii] == '/' ) break ;
00112 
00113    if( ii < 0 ){
00114      strcpy( dirname , "./" ) ;      /* fake directory name */
00115    } else {
00116      strcpy( dirname , pathname ) ;
00117      dirname[ii+1] = '\0' ;
00118    }
00119    offset = ii + 1 ;  /* offset of file within pathname - rickr [20 Sep 2002] */
00120 
00121    /*-- perform surgery on the name to make it a valid .HEAD --*/
00122 
00123    strcpy( fullname , pathname ) ;
00124    fname = fullname + offset ; /* trailing filename (past directory) - rickr */
00125 
00126    /* (REPLACE) sub = strstr( fullname , DATASET_HEADER_SUFFIX ) ;  * .HEAD ? */
00127    sub = strstr( fname , DATASET_HEADER_SUFFIX ) ;   /* .HEAD ?  r:fname */
00128 
00129    if( sub == NULL ){                                   /* no! */
00130       sub = strstr( fname , DATASET_BRICK_SUFFIX ) ; /* .BRIK ?  r:fname */
00131 
00132       if( sub == NULL ){                               /* no! */
00133          ii = strlen(fullname) ;
00134          if( fullname[ii-1] != '.' ) strcat( fullname , "." ) ; /* tack .HEAD */
00135          strcat( fullname , DATASET_HEADER_SUFFIX ) ;           /* onto end */
00136 
00137       } else {                                     /* yes! */
00138          strcpy( sub , DATASET_HEADER_SUFFIX ) ;   /* replace .BRIK with .HEAD */
00139       }
00140    }
00141 
00142    /*-- open it up? --*/
00143 
00144    fsize = THD_filesize(fullname) ;                         /* 06 Jan 2005 */
00145    if( fsize == 0 && !THD_is_file(pathname) ) fsize = -1 ;  /* 31 Mar 2005 */
00146    CHECK_FOR_DATA(fullname) ;
00147 
00148    dblk = THD_init_one_datablock( dirname , fullname ) ;
00149    if( dblk == NULL ) RETURN(NULL) ;
00150 
00151    dset = THD_3dim_from_block( dblk ) ;
00152    RETURN(dset) ;
00153 }
 

Powered by Plone

This site conforms to the following standards: