Doxygen Source Code Documentation
3dFourier.c File Reference
#include "mrilib.h"#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include "fourier_filter.c"Go to the source code of this file.
| Functions | |
| void * | My_Malloc (size_t) | 
| void | Error_Exit (char *message) | 
| void | help_message (void) | 
| int | main (int argc, char *argv[]) | 
Function Documentation
| 
 | 
| 
 Definition at line 25 of file 3dFourier.c. 
 00026 {
00027         fprintf(stderr, "\n\nError in 3dFourier:\n%s\n\nTry 3dFourier -help\n",message);
00028         exit(1);
00029 }
 | 
| 
 | 
| 
 Definition at line 37 of file 3dFourier.c. References MASTER_SHORTHELP_STRING. Referenced by main(). 
 00038 {
00039         printf(
00040                 "3dFourier \n"
00041                 "(c) 1999 Medical College of Wisconsin\n"
00042                 "by T. Ross and K. Heimerl\n"
00043                 "Version 0.8 last modified 8-17-99\n\n"
00044                 "Usage: 3dFourier [options] dataset\n\n"
00045                 "The paramters and options are:\n"
00046                 "       dataset         an afni compatible 3d+time dataset to be operated upon\n"
00047                 "       -prefix name    output name for new 3d+time dataset [default = fourier]\n"
00048                 "       -lowpass f      low pass filter with a cutoff of f Hz\n"
00049                 "       -highpass f     high pass filter with a cutoff of f Hz\n"
00050                 "       -ignore n       ignore the first n images [default = 1]\n"
00051 /*              "       -autocorr       compute the autocorrelation of the data\n" */
00052                 "       -retrend        Any mean and linear trend are removed before filtering.\n"
00053                 "                       This will restore the trend after filtering.\n"
00054                 "\nNote that by combining the lowpass and highpass options, one can construct\n"
00055                 "bandpass and notch filters\n"
00056         );
00057 
00058         printf("\n" MASTER_SHORTHELP_STRING ) ;
00059 
00060 }
 | 
| 
 | ||||||||||||
| compute the overall minimum and maximum voxel values for a dataset Definition at line 64 of file 3dFourier.c. References argc, DSET_BRICK_TYPE, DSET_GRAPHABLE, Error_Exit(), Fourier_Filter_Driver(), help_message(), My_Malloc(), and THD_open_dataset(). 
 00065 {
00066         int j, narg=1, autocorr=FALSE, retrend=FALSE, ignore=1;
00067         char *prefix=NULL, *err;
00068         float low_fc = 0.0, high_fc = 0.0;
00069         THD_3dim_dataset *input=NULL;
00070 
00071         if (argc < 2 ||  strcmp(argv[1],"-help") == 0 ) {
00072                 help_message();
00073                 exit(1);
00074         }
00075 
00076         /* Loop over arguements and pull out what we need */
00077         while( narg < argc && argv[narg][0] == '-' ){
00078 
00079                 if( strncmp(argv[narg],"-prefix",5) == 0 ) {
00080                         narg++;
00081                         if (narg==argc)
00082                                 Error_Exit("-prefix must be followed by a file name");
00083                         j = strlen(argv[narg]);
00084                         prefix =(char *)My_Malloc((j+1)*sizeof(char));
00085                         strcpy(prefix, argv[narg++]);
00086                         continue;
00087                 }
00088 
00089                 if (strncmp(argv[narg], "-lowpass", 5) == 0) {
00090                         narg++;
00091                         if (narg==argc)
00092                                 Error_Exit("-lowpass must be followed by a frequency");
00093                         low_fc = (float)atof(argv[narg++]);
00094                         continue;
00095                 }
00096 
00097                 if (strncmp(argv[narg], "-highpass", 5) == 0) {
00098                         narg++;
00099                         if (narg==argc)
00100                                 Error_Exit("-highpass must be followed by a frequency");
00101                         high_fc = (float)atof(argv[narg++]);
00102                         continue;
00103                 }
00104 
00105                 if (strncmp(argv[narg], "-ignore", 5) == 0) {
00106                         narg++;
00107                         if (narg==argc)
00108                                 Error_Exit("-ignore must be followed by an integer");
00109                         ignore = (int)atol(argv[narg++]);
00110                         if ((ignore<0) || (ignore>10))
00111                                 Error_Exit("-ignore must be between 0 and 10, inclusive");
00112                         continue;
00113                 }
00114 /*
00115                 if (strncmp(argv[narg], "-autocorr", 5) == 0) {
00116                         narg++;
00117                         autocorr = TRUE;
00118                         continue;
00119                 }
00120 */
00121                 if (strncmp(argv[narg], "-retrend", 5) == 0) {
00122                         narg++;
00123                         retrend = TRUE;
00124                         continue;
00125                 }
00126 
00127                 if (strncmp(argv[narg], "-help", 5) == 0) {
00128                         help_message();
00129                 }
00130 
00131 
00132                 Error_Exit("Illegal or unrecoginized option");
00133 
00134         } /* end of while over arguements */
00135 
00136 #if 1
00137    if( low_fc > 0.0f && high_fc > 0.0f && low_fc <= high_fc )
00138      fprintf(stderr,"** WARNING: lowpass=%f is <= than highpass=%f\n"
00139                     "** -------: results from 3dFourier are suspect!\n"  ,
00140              low_fc,high_fc) ;
00141 #endif
00142 
00143         if( narg >= argc )
00144                 Error_Exit("No input datasets!?\n");
00145 
00146         if(prefix==NULL) {
00147                 prefix=(char *)My_Malloc(8*sizeof(char));
00148                 strcpy(prefix,"fourier");
00149         }
00150 
00151         /* try to open input dataset */
00152 
00153         input = THD_open_dataset( argv[narg] ) ; /* 16 Sep 1999 */
00154 
00155         if( input == NULL )
00156                 Error_Exit("Cannot open input dataset!") ;
00157 
00158         if (!DSET_GRAPHABLE(input))
00159                 Error_Exit("Input dataset is not a 3d+time dataset");
00160 
00161         if (DSET_BRICK_TYPE(input, 0)==MRI_complex)
00162                 Error_Exit("Sorry, I can't deal with complex 3d+time datasets");
00163 
00164         err=Fourier_Filter_Driver(input, low_fc, high_fc, ignore, autocorr, retrend, prefix);
00165         if (err!=NULL)
00166                 Error_Exit(err);
00167 
00168         return 0;  /* All went well exit code */
00169 }
 | 
| 
 | 
| 
 Definition at line 11 of file fourier_filter.c. 
 00011                                      {
00012         void *ptr=NULL;
00013         
00014         ptr = (void *)malloc(size);
00015         if (ptr == NULL) {
00016 #ifdef IN_FOURIER_PLUGIN
00017                 fprintf(stderr, "Fatal error in Fourier Filter Driver, malloc returned NULL");
00018                 exit(1);
00019 #else
00020                 Error_Exit("Fatal: malloc returned NULL"); 
00021 #endif
00022         }
00023         return ptr;
00024 }
 | 
 
                             
                             
                             
                             
                             
                             
                             
                             
                             
                             
                             
                             
 
 
 
 
       
	   
	   
	   
	  