Doxygen Source Code Documentation
plug_delay_V2.c File Reference
#include "afni.h"
#include "afni_plugin.h"
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include "plug_delay_V2.h"
Go to the source code of this file.
Data Structures | |
struct | COMPLEX |
struct | hilbert_data_V2 |
Defines | |
#define | NUM_METHOD_STRINGS (sizeof(method_strings)/sizeof(char *)) |
#define | NUM_YN_STRINGS (sizeof(yn_strings)/sizeof(char *)) |
#define | METH_SECONDS 0 |
#define | METH_DEGREES 1 |
#define | METH_RADIANS 2 |
#define | DELAY 0 |
#define | XCOR 1 |
#define | XCORCOEF 2 |
#define | NBUCKETS 4 |
#define | DELINDX 0 |
#define | COVINDX 1 |
#define | COFINDX 2 |
#define | VARINDX 3 |
#define | YUP 1 |
#define | NOPE 0 |
#define | ERROR_NOTHINGTODO 1 |
#define | ERROR_LARGENSEG 2 |
#define | ERROR_LONGDELAY 3 |
#define | ERROR_WRONGUNIT 8 |
#define | ERROR_WARPVALUES 9 |
#define | ERROR_FSVALUES 10 |
#define | ERROR_TVALUES 11 |
#define | ERROR_TaUNITVALUES 12 |
#define | ERROR_TaWRAPVALUES 13 |
#define | ERROR_FILEOPEN 15 |
#define | ERROR_SERIESLENGTH 16 |
#define | ERROR_OPTIONS 17 |
#define | ERROR_NULLTIMESERIES 18 |
#define | ERROR_OUTCONFLICT 19 |
#define | ERROR_BADLENGTH 20 |
Functions | |
void | fft (COMPLEX *, int) |
void | ifft (COMPLEX *, int) |
void | dft (COMPLEX *, COMPLEX *, int) |
void | idft (COMPLEX *, COMPLEX *, int) |
void | rfft (float *, COMPLEX *, int) |
void | ham (COMPLEX *, int) |
void | han (COMPLEX *, int) |
void | triang (COMPLEX *, int) |
void | black (COMPLEX *, int) |
void | harris (COMPLEX *, int) |
char * | DELAY_main (PLUGIN_interface *) |
void | DELAY_tsfuncV2 (double T0, double TR, int npts, float ts[], double ts_mean, double ts_slope, void *udp, int nbrick, float *buckar) |
void | show_ud (hilbert_data_V2 *ud, int loc) |
void | write_ud (hilbert_data_V2 *ud) |
void | indexTOxyz (hilbert_data_V2 *ud, int ncall, int *xpos, int *ypos, int *zpos) |
void | error_report (hilbert_data_V2 *ud, int ncall) |
void | writets (hilbert_data_V2 *ud, float *ts) |
DEFINE_PLUGIN_PROTOTYPE PLUGIN_interface * | PLUGIN_init (int ncall) |
Variables | |
char | helpstring [] |
char * | method_strings [] = { "Seconds" , "Degrees" , "Radians"} |
char * | yn_strings [] = { "n" , "y" } |
PLUGIN_interface * | global_plint = NULL |
Define Documentation
|
Definition at line 237 of file plug_delay_V2.c. Referenced by DELAY_main(), and DELAY_tsfuncV2(). |
|
Definition at line 236 of file plug_delay_V2.c. Referenced by DELAY_main(), and DELAY_tsfuncV2(). |
|
Definition at line 227 of file plug_delay_V2.c. |
|
Definition at line 235 of file plug_delay_V2.c. Referenced by DELAY_main(), and DELAY_tsfuncV2(). |
|
Definition at line 257 of file plug_delay_V2.c. Referenced by DELAY_main(). |
|
Definition at line 252 of file plug_delay_V2.c. Referenced by DELAY_main(). |
|
Definition at line 248 of file plug_delay_V2.c. Referenced by DELAY_main(). |
|
Definition at line 244 of file plug_delay_V2.c. Referenced by error_report(). |
|
Definition at line 245 of file plug_delay_V2.c. Referenced by DELAY_tsfuncV2(), and error_report(). |
|
Definition at line 243 of file plug_delay_V2.c. Referenced by error_report(). |
|
Definition at line 255 of file plug_delay_V2.c. Referenced by DELAY_tsfuncV2(), and error_report(). |
|
Definition at line 254 of file plug_delay_V2.c. |
|
Definition at line 256 of file plug_delay_V2.c. Referenced by DELAY_main(). |
|
Definition at line 253 of file plug_delay_V2.c. Referenced by error_report(). |
|
Definition at line 250 of file plug_delay_V2.c. Referenced by DELAY_main(). |
|
Definition at line 251 of file plug_delay_V2.c. Referenced by DELAY_main(). |
|
Definition at line 249 of file plug_delay_V2.c. Referenced by DELAY_main(). |
|
Definition at line 247 of file plug_delay_V2.c. Referenced by DELAY_main(). |
|
Definition at line 246 of file plug_delay_V2.c. Referenced by DELAY_main(). |
|
Definition at line 223 of file plug_delay_V2.c. |
|
Definition at line 224 of file plug_delay_V2.c. |
|
Definition at line 222 of file plug_delay_V2.c. |
|
Definition at line 234 of file plug_delay_V2.c. Referenced by DELAY_main(). |
|
Definition at line 241 of file plug_delay_V2.c. Referenced by DELAY_main(). |
|
Definition at line 218 of file plug_delay_V2.c. Referenced by DELAY_main(). |
|
Definition at line 219 of file plug_delay_V2.c. Referenced by DELAY_main(). |
|
Definition at line 238 of file plug_delay_V2.c. Referenced by DELAY_main(), and DELAY_tsfuncV2(). |
|
Definition at line 228 of file plug_delay_V2.c. |
|
Definition at line 229 of file plug_delay_V2.c. |
|
Definition at line 240 of file plug_delay_V2.c. Referenced by DELAY_main(), and DELAY_tsfuncV2(). |
Function Documentation
|
|
|
Definition at line 484 of file plug_delay_V2.c. References hilbert_data_V2::biasrem, calloc, hilbert_data_V2::co, COFINDX, COVINDX, THD_3dim_dataset::daxes, DELAY_tsfuncV2(), DELINDX, hilbert_data_V2::Dsamp, DSET_FILECODE, DSET_NUM_TIMES, DSET_PREFIX, hilbert_data_V2::dsetname, hilbert_data_V2::dtrnd, EDIT_BRICK_ADDKEY, EDIT_BRICK_LABEL, EDIT_BRICK_TO_FICO, hilbert_data_V2::errcode, ERROR_BADLENGTH, ERROR_FILEOPEN, ERROR_FSVALUES, ERROR_OUTCONFLICT, ERROR_TaUNITVALUES, ERROR_TaWRAPVALUES, ERROR_TVALUES, ERROR_WARPVALUES, ERROR_WRONGUNIT, free, hilbert_data_V2::fs, i, hilbert_data_V2::ignore, is_vect_null(), hilbert_data_V2::ln, MAKER_4D_to_typed_fbuc(), method_strings, MRI_FLOAT_PTR, MRI_IMAGE::name, hilbert_data_V2::Navg, NBUCKETS, hilbert_data_V2::new_prefix, hilbert_data_V2::Nfit, NOPE, hilbert_data_V2::Nort, hilbert_data_V2::nsamp, hilbert_data_V2::Nseg, NUM_METHOD_STRINGS, NUM_YN_STRINGS, THD_dataxes::nxx, hilbert_data_V2::nxx, THD_dataxes::nyy, hilbert_data_V2::nyy, THD_dataxes::nzz, hilbert_data_V2::nzz, hilbert_data_V2::out, hilbert_data_V2::outlogfile, hilbert_data_V2::outts, hilbert_data_V2::outwrite, hilbert_data_V2::outwritets, PLUTO_add_dset(), PLUTO_find_dset(), PLUTO_prefix_ok(), PLUTO_string_index(), hilbert_data_V2::Pover, hilbert_data_V2::refname, hilbert_data_V2::rvec, hilbert_data_V2::strout, hilbert_data_V2::T, hilbert_data_V2::unt, VARINDX, vec, write_ud(), hilbert_data_V2::wrp, yn_strings, and YUP. Referenced by PLUGIN_init().
00485 { 00486 hilbert_data_V2 uda,*ud; 00487 MRI_IMAGE * tsim; 00488 MCW_idcode * idc ; /* input dataset idcode */ 00489 THD_3dim_dataset * old_dset , * new_dset ; /* input and output datasets */ 00490 char *tmpstr , * str , *nprfxstr; /* strings from user */ 00491 int ntime, nvec ,nprfx, i; 00492 float * vec , fs , T ; 00493 00494 /* Allocate as much character space as Bob specifies in afni.h + a bit more */ 00495 00496 tmpstr = (char *) calloc (PLUGIN_MAX_STRING_RANGE+10,sizeof(char)); 00497 nprfxstr = (char *) calloc (PLUGIN_MAX_STRING_RANGE+10,sizeof(char)); 00498 00499 if (tmpstr == NULL || nprfxstr == NULL) 00500 return "********************\n" 00501 "Could not Allocate\n" 00502 "a teeni weeni bit of\n" 00503 "Memory ! \n" 00504 "********************\n"; 00505 00506 ud = &uda; /* ud now points to an allocated space */ 00507 ud->errcode = 0; /*reset error flag */ 00508 00509 /*--------------------------------------------------------------------*/ 00510 /*----- Check inputs from AFNI to see if they are reasonable-ish -----*/ 00511 00512 /*--------- go to first input line ---------*/ 00513 00514 PLUTO_next_option(plint) ; 00515 00516 idc = PLUTO_get_idcode(plint) ; /* get dataset item */ 00517 old_dset = PLUTO_find_dset(idc) ; /* get ptr to dataset */ 00518 if( old_dset == NULL ) 00519 return "*************************\n" 00520 "Cannot find Input Dataset\n" 00521 "*************************" ; 00522 00523 ud->dsetname = DSET_FILECODE (old_dset); 00524 ud->nsamp = DSET_NUM_TIMES (old_dset); 00525 ud->Navg = 1 ; /* Navg does not play a role for the p value, averaging increases sensitivity */ 00526 ud->Nort = PLUTO_get_number(plint) ; /* Should be two by default, for mean and linear trend */ 00527 ud->Nfit = 2 ; /* Always 2 for phase and amplitude for this plugin */ 00528 /*--------- go to 2nd input line, input time series ---------*/ 00529 00530 PLUTO_next_option(plint) ; 00531 00532 tsim = PLUTO_get_timeseries(plint); 00533 if (tsim == NULL) return "No Timeseries Input"; 00534 00535 ud->ln = (int)tsim -> nx; /* number of points in each vector */ 00536 nvec = tsim -> ny; /* number of vectors */ 00537 ud->rvec = (float *) MRI_FLOAT_PTR(tsim); /* vec[i+j*nx] = ith point of jth vector */ 00538 /* for i=0 .. ntime-1 and j=0 .. nvec-1 */ 00539 00540 if (is_vect_null (ud->rvec,ud->ln) == 1) /* check if ref vect is all zeroes */ 00541 { 00542 return "Reference vector is all zeros"; 00543 } 00544 00545 ud->refname = tsim->name; 00546 ud->ignore = PLUTO_get_number(plint) ; /* get number item */ 00547 00548 str = PLUTO_get_string(plint) ; 00549 ud->Dsamp = (int)PLUTO_string_index( str , NUM_YN_STRINGS , yn_strings ) ; 00550 00551 /*--------- go to 3rd input line, sampling frequency, and stimulus period ---------*/ 00552 00553 PLUTO_next_option(plint) ; 00554 00555 ud->fs = PLUTO_get_number(plint) ; /* get number item */ 00556 ud->T = PLUTO_get_number(plint) ; /* get number item */ 00557 00558 ud->co = PLUTO_get_number(plint) ; /* get number item */ 00559 str = PLUTO_get_string(plint) ; 00560 ud->biasrem = (int)PLUTO_string_index( str , NUM_YN_STRINGS , yn_strings ) ; 00561 00562 /*--------- go to 4th input line, delay units and wrp option---------*/ 00563 00564 PLUTO_next_option(plint) ; 00565 00566 ud->Nseg = (int)PLUTO_get_number(plint) ; /* get number item */ 00567 ud->Pover = (int)PLUTO_get_number(plint) ; /* get number item */ 00568 00569 str = PLUTO_get_string(plint) ; /* get string item (the method) */ 00570 ud->unt = (int)PLUTO_string_index( str , /* find it in list it is from */ 00571 NUM_METHOD_STRINGS , 00572 method_strings ) ; 00573 00574 str = PLUTO_get_string(plint) ; 00575 ud->wrp = (int)PLUTO_string_index( str , NUM_YN_STRINGS , yn_strings ) ; 00576 00577 /*--------- go to 5th input line Output prefix ---------*/ 00578 00579 PLUTO_next_option(plint) ; 00580 00581 ud->new_prefix = PLUTO_get_string(plint) ; /* get string item (the output prefix) */ 00582 00583 /* check to see if the field is empty */ 00584 if (ud->new_prefix == NULL) 00585 nprfx = 0; 00586 else 00587 nprfx = 1; 00588 /* check if the size is larger than 0. I did not want to check for this unless it's allocated */ 00589 if (nprfx == 1 && (int)strlen (ud->new_prefix) == 0) 00590 nprfx = 0; 00591 00592 if (nprfx == 0) /* now create the new name and make new_prefix point to it */ 00593 { 00594 sprintf (nprfxstr,"%s.DEL",DSET_PREFIX (old_dset)); 00595 ud->new_prefix = nprfxstr; 00596 /*printf ("New prefix is set to be : %s\n\a",ud->new_prefix);*/ 00597 } 00598 00599 if( ! PLUTO_prefix_ok(ud->new_prefix) ) /* check if it is OK */ 00600 return "************************\n" 00601 "Output Prefix is illegal\n" 00602 "************************" ; 00603 00604 str = PLUTO_get_string(plint) ; /* write delays to file ? */ 00605 ud->out = (int)PLUTO_string_index( str , NUM_YN_STRINGS , yn_strings ); 00606 00607 ud->strout = PLUTO_get_string(plint) ; /* strout is for the outiflename, which will be used after the debugging section */ 00608 if (ud->strout == NULL) /* if no output name is given, use the new_prefix */ 00609 {ud->strout = ud->new_prefix;} 00610 else 00611 { 00612 if((int)strlen (ud->strout) == 0) ud->strout = ud->new_prefix; 00613 } 00614 00615 str = PLUTO_get_string(plint) ; 00616 ud->outts = (int)PLUTO_string_index( str , NUM_YN_STRINGS , yn_strings ); 00617 00618 /* ------------------Done with user parameters ---------------------------- */ 00619 00620 ud->nxx = (int)old_dset->daxes->nxx; /* get data set dimensions */ 00621 ud->nyy = (int)old_dset->daxes->nyy; 00622 ud->nzz = (int)old_dset->daxes->nzz; 00623 00624 /* No need for users to set these options ...*/ 00625 00626 ud->dtrnd = 0; 00627 00628 if (ud->ln != (ud->nsamp - ud->ignore)) 00629 { 00630 ud->errcode = ERROR_BADLENGTH; 00631 return "***************************\n" 00632 "Bad time series length \n" 00633 "Check reference time series\n" 00634 " or the ignore parameter \n" 00635 "***************************\n"; 00636 } 00637 00638 if ((ud->unt < 0) || (ud->unt > 2)) /* unt error Check */ 00639 { 00640 ud->errcode = ERROR_WRONGUNIT; 00641 return "***********************\n" 00642 " internal error: (ziad)\n" 00643 "unt values out of bound\n" 00644 "***********************\n"; /*unt must be between 0 and 2 */ 00645 } 00646 00647 if ((ud->wrp < 0) || (ud->wrp > 1)) /* wrp error Check */ 00648 { 00649 ud->errcode = ERROR_WARPVALUES; 00650 return "***********************\n" 00651 " internal error: (ziad)\n" 00652 "wrp values out of bound\n" 00653 "***********************\n"; /* wrp must be between 0 and 1*/ 00654 } 00655 00656 if (ud->fs < 0.0) { /* fs error Check */ 00657 ud->errcode = ERROR_FSVALUES; 00658 return "***********************\n" 00659 " internal error: (ziad)\n" 00660 "fs value is negative !\n" 00661 "***********************\n"; /* fs must be >= 0*/ 00662 } 00663 00664 if (ud->T < 0.0) { /* T error Check */ 00665 ud->errcode = ERROR_TVALUES; 00666 return "***********************\n" 00667 " internal error: (ziad)\n" 00668 "T value is negative !\n" 00669 "***********************\n"; /*T must be >= 0 */ 00670 } 00671 00672 00673 if ((ud->T == 0.0) && (ud->unt > 0)) /* unt error Check */ 00674 { 00675 ud->errcode = ERROR_TaUNITVALUES; 00676 return "***********************\n" 00677 " internal error: (ziad)\n" 00678 "T and unt val. mismatch\n" 00679 "***********************\n"; /*T must be specified, and > 0 in order to use polar units*/ 00680 } 00681 00682 00683 if ((ud->wrp == 1) && (ud->T == 0.0)) /* wrp error Check */ 00684 { 00685 ud->errcode = ERROR_TaWRAPVALUES; 00686 return "***********************\n" 00687 " internal error: (ziad)\n" 00688 "wrp and T val. mismatch\n" 00689 "***********************\n"; /*T must be specified, and > 0 in order to use polar warp*/ 00690 } 00691 if ((ud->out == NOPE) && (ud->outts == YUP)) 00692 { 00693 ud->errcode = ERROR_OUTCONFLICT; 00694 return"***********************\n" 00695 "error: \n" 00696 "Write flag must be on\n" 00697 "to use Write ts\n" 00698 "***********************\n"; 00699 00700 } 00701 00702 00703 /* Open the logfile, regardless of the ascii output files */ 00704 sprintf ( tmpstr , "%s.log" , ud->strout); 00705 ud->outlogfile = fopen (tmpstr,"w"); 00706 00707 00708 if (ud->out == YUP) /* open outfile */ 00709 { 00710 ud->outwrite = fopen (ud->strout,"w"); 00711 00712 if (ud->outts == YUP) 00713 { 00714 sprintf ( tmpstr , "%s.ts" , ud->strout); 00715 ud->outwritets = fopen (tmpstr,"w"); 00716 00717 } 00718 00719 if ((ud->outwrite == NULL) || (ud->outlogfile == NULL) ||\ 00720 (ud->outwritets == NULL && ud->outts == YUP) ) 00721 { 00722 ud->errcode = ERROR_FILEOPEN; 00723 00724 return "***********************\n" 00725 "Could Not Write Outfile\n" 00726 "***********************\n"; 00727 } 00728 00729 } 00730 00731 /* Write out user variables to Logfile */ 00732 write_ud (ud); /* writes user data to a file */ 00733 00734 /*show_ud (ud,0); */ /* For some debugging */ 00735 00736 00737 /*------------- ready to compute new dataset -----------*/ 00738 00739 new_dset = MAKER_4D_to_typed_fbuc ( old_dset , /* input dataset */ 00740 ud->new_prefix , /* output prefix */ 00741 -1, /* negative value indicating data type is like original brick */ 00742 ud->ignore , /* ignore count */ 00743 1 , /* detrend = ON Let BOB do it*/ 00744 NBUCKETS, /*Number of values at each voxel*/ 00745 DELAY_tsfuncV2 , /* timeseries processor (bucket version)*/ 00746 (void *)ud /* data for tsfunc */ 00747 ) ; 00748 00749 /* Setup the label, keywords and types of subbricks */ 00750 i = 0; 00751 while (i < NBUCKETS) 00752 { 00753 switch (i) 00754 { 00755 case DELINDX: /* delay value in results vector */ 00756 EDIT_BRICK_LABEL (new_dset,i,"Delay"); 00757 EDIT_BRICK_ADDKEY (new_dset,i,"D"); 00758 ++i; 00759 break; 00760 case COVINDX: /* covariance value in results vector */ 00761 EDIT_BRICK_LABEL (new_dset,i,"Covariance"); 00762 EDIT_BRICK_ADDKEY (new_dset,i,"I"); 00763 ++i; 00764 break; 00765 case COFINDX: /* cross correlation coefficient value in results vector */ 00766 EDIT_BRICK_LABEL (new_dset,i,"Corr. Coef."); 00767 EDIT_BRICK_ADDKEY (new_dset,i,"r"); 00768 /* Here you must modify either ud->Nfit or ud->Nort or most likely ud->nsamp based on ud->Navg */ 00769 EDIT_BRICK_TO_FICO (new_dset,i,ud->nsamp - ud->ignore,ud->Nfit,ud->Nort); 00770 ++i; 00771 break; 00772 case VARINDX: /* FMRI time course variance value in results vector */ 00773 EDIT_BRICK_LABEL (new_dset,i,"Variance"); 00774 EDIT_BRICK_ADDKEY (new_dset,i,"S2"); 00775 ++i; 00776 break; 00777 default : 00778 return "*********************\n" 00779 "Internal Error (ziad)\n" 00780 " Bad i value \n" 00781 "*********************\n"; 00782 break; 00783 } 00784 00785 } 00786 00787 PLUTO_add_dset( plint , new_dset , DSET_ACTION_MAKE_CURRENT ) ; 00788 00789 00790 00791 if (ud->out == YUP) /* close outfile and outlogfile*/ 00792 { 00793 fclose (ud->outlogfile); 00794 fclose (ud->outwrite); 00795 if (ud->outts == YUP) fclose (ud->outwritets); 00796 } 00797 else 00798 { 00799 if (ud->outlogfile != NULL) fclose (ud->outlogfile); /* close outlogfile */ 00800 } 00801 00802 free (tmpstr); 00803 free (nprfxstr); 00804 return NULL ; /* null string returned means all was OK */ 00805 } |
|
Definition at line 811 of file plug_delay_V2.c. References hilbert_data_V2::biasrem, hilbert_data_V2::co, COFINDX, COVINDX, DELINDX, hilbert_data_V2::Dsamp, hilbert_data_V2::dtrnd, hilbert_data_V2::errcode, ERROR_LONGDELAY, ERROR_NULLTIMESERIES, error_report(), global_plint, hilbertdelay_V2(), hunwrap(), i, hilbert_data_V2::ignore, indexTOxyz(), is_vect_null(), hilbert_data_V2::ln, hilbert_data_V2::Nseg, hilbert_data_V2::out, hilbert_data_V2::outts, hilbert_data_V2::outwrite, PLUTO_popup_meter(), PLUTO_set_meter(), hilbert_data_V2::Pover, hilbert_data_V2::rvec, hilbert_data_V2::T, TR, hilbert_data_V2::unt, VARINDX, writets(), hilbert_data_V2::wrp, and YUP. Referenced by DELAY_main().
00814 { 00815 static int nvox , ncall ; 00816 hilbert_data_V2 uda,*ud; 00817 float del, xcorCoef, buckara[4]; 00818 float xcor=0.0 , tmp=0.0 , tmp2 = 0.0 , dtx = 0.0 ,\ 00819 delu = 0.0 , slp = 0.0 , vts = 0.0 , vrvec = 0.0 ; 00820 int i , is_ts_null , status , opt , actv , zpos , ypos , xpos ; 00821 00822 ud = &uda; 00823 ud = (hilbert_data_V2 *) udp; 00824 00825 /** is this a "notification"? **/ 00826 00827 if( buckar == NULL ){ 00828 00829 if( npts > 0 ){ /* the "start notification" */ 00830 00831 PLUTO_popup_meter( global_plint ) ; /* progress meter */ 00832 nvox = npts ; /* keep track of */ 00833 ncall = 0 ; /* number of calls */ 00834 00835 } else { /* the "end notification" */ 00836 00837 opt = 0; /* cleanup in hdelay */ 00838 status = hilbertdelay_V2 (ts,ud->rvec,ud->ln,ud->Nseg,ud->Pover,opt,ud->dtrnd,dtx,ud->biasrem,&tmp,&slp,&xcor,&tmp2,&vts,&vrvec); /* cleanup time */ 00839 00840 PLUTO_set_meter( global_plint , 100 ) ; /* set meter to 100% */ 00841 00842 } 00843 return ; 00844 } 00845 00846 /* In the old version, I had to check for a match between the lengths of the reference time series and FMRI time series 00847 This is now done before the function is called. */ 00848 00849 if (is_vect_null (ts,npts) == 1) /* check for null vectors */ 00850 { 00851 ud->errcode = ERROR_NULLTIMESERIES; 00852 error_report (ud , ncall ); /* report the error */ 00853 00854 del = 0.0; /* Set all the variables to Null and don't set xcorCoef to an impossible value*/ 00855 xcorCoef = 0.0; /* because the data might still be OK */ 00856 xcor = 0.0; 00857 } 00858 00859 if (ud->errcode == 0) /* if there are no errors, proceed */ 00860 {/* ud->errcode == 0 outer loop */ 00861 opt = 1; /* activate hdelay */ 00862 00863 /* transform dtx from seconds to sampling units and correct for the number of points ignored*/ 00864 if (ud->Dsamp == YUP) 00865 dtx = (float) (T0 / TR) - ud->ignore; 00866 else 00867 dtx = 0.0; 00868 00869 ud->errcode = hilbertdelay_V2 (ts,ud->rvec,ud->ln,ud->Nseg,ud->Pover,opt,ud->dtrnd,dtx,ud->biasrem,&delu,&slp,&xcor,&xcorCoef,&vts,&vrvec); /* cleanup time */ 00870 00871 if (ud->errcode == 0) /* If there are no errors, proceed */ 00872 { /*ud->errcode == 0 inner loop */ 00873 hunwrap (delu, (float)(1/TR), ud->T, slp, ud->wrp, ud->unt, &del ); 00874 00875 actv = 1; /* assume voxel is active */ 00876 00877 if (xcorCoef < ud->co) actv = 0; /* determine if voxel is activated using xcorCoef */ 00878 00879 if ((actv == 1) && (ud->out == YUP)) /* if voxel is truly activated, write results to file without modifying return value */ 00880 { 00881 indexTOxyz ( ud , ncall, &xpos , &ypos , &zpos); 00882 fprintf (ud->outwrite,"%d\t%d\t%d\t%d\t%f\t%f\t%f\t%f\t%f\n", ncall , xpos , ypos , zpos , delu , del , xcor , xcorCoef , vts); 00883 if (ud->outts == YUP) 00884 { 00885 writets (ud,ts); 00886 } 00887 } 00888 00889 }/*ud->errcode == 0 inner loop */ 00890 00891 else if (ud->errcode == ERROR_LONGDELAY) 00892 { 00893 error_report ( ud , ncall); 00894 00895 del = 0.0; /* Set all the variables to Null and don't set xcorCoef to an impossible value*/ 00896 xcorCoef = 0.0; /* because the data might still be OK */ 00897 xcor = 0.0; 00898 00899 } 00900 else if (ud->errcode != 0) 00901 { 00902 error_report ( ud , ncall); 00903 00904 del = 0.0; /* Set all the variables to Null and set xcorCoef to an impossible value*/ 00905 xcorCoef = NOWAYXCORCOEF; 00906 xcor = 0.0; 00907 } 00908 00909 }/* ud->errcode == 0 outer loop */ 00910 00911 /* Now fill up the bucket array */ 00912 00913 buckar[DELINDX] = del; 00914 buckar[COVINDX] = xcor; 00915 buckar[COFINDX] = xcorCoef; 00916 buckar[VARINDX] = vts; 00917 00918 00919 /** set the progress meter to the % of completion **/ 00920 ncall++ ; 00921 00922 PLUTO_set_meter( global_plint , (100*ncall)/nvox ) ; 00923 00924 ud->errcode = 0; /* Rest error to nothing */ 00925 00926 return ; 00927 } |
|
|
|
Definition at line 1028 of file plug_delay_V2.c. References hilbert_data_V2::errcode, ERROR_LARGENSEG, ERROR_LONGDELAY, ERROR_NOTHINGTODO, ERROR_NULLTIMESERIES, ERROR_SERIESLENGTH, indexTOxyz(), and hilbert_data_V2::outlogfile.
01029 { 01030 int xpos,ypos,zpos; 01031 indexTOxyz (ud, ncall, &xpos , &ypos , &zpos); 01032 01033 switch (ud->errcode) 01034 { 01035 case ERROR_NOTHINGTODO: 01036 fprintf (ud->outlogfile,"Nothing to do hilbertdelay_V2 call "); 01037 break; 01038 case ERROR_LARGENSEG: 01039 fprintf (ud->outlogfile,"Number of segments Too Large "); 01040 break; 01041 case ERROR_LONGDELAY: 01042 fprintf (ud->outlogfile,"Could not find zero crossing before maxdel limit "); 01043 break; 01044 case ERROR_SERIESLENGTH: 01045 fprintf (ud->outlogfile,"Vectors have different length "); 01046 break; 01047 case ERROR_NULLTIMESERIES: 01048 fprintf (ud->outlogfile,"Null time series vector "); 01049 break; 01050 default: 01051 fprintf (ud->outlogfile,"De Fault, De Fault (%d), the two sweetest words in the english langage ! ",ud->errcode); 01052 break; 01053 } 01054 fprintf (ud->outlogfile,"%d\t%d\t%d\t%d\t\n", ncall , xpos , ypos , zpos ); 01055 return; 01056 } |
|
Definition at line 352 of file plug_delay_V2.h.
00353 { 00354 static COMPLEX *w; /* used to store the w complex array */ 00355 static int mstore = 0; /* stores m for future reference */ 00356 static int n = 1; /* length of fft stored for future */ 00357 00358 COMPLEX u,temp,tm; 00359 COMPLEX *xi,*xip,*xj,*wptr; 00360 00361 int i,j,k,l,le,windex; 00362 00363 double arg,w_real,w_imag,wrecur_real,wrecur_imag,wtemp_real; 00364 00365 if(m != mstore) { 00366 00367 /* free previously allocated storage and set new m */ 00368 00369 if(mstore != 0) free(w); 00370 mstore = m; 00371 if(m == 0) return; /* if m=0 then done */ 00372 00373 /* n = 2**m = fft length */ 00374 00375 n = 1 << m; 00376 le = n/2; 00377 00378 /* allocate the storage for w */ 00379 00380 w = (COMPLEX *) calloc(le-1,sizeof(COMPLEX)); 00381 if(!w) { 00382 printf("\nUnable to allocate complex W array\n"); 00383 exit(1); 00384 } 00385 00386 /* calculate the w values recursively */ 00387 00388 arg = 4.0*atan(1.0)/le; /* PI/le calculation */ 00389 wrecur_real = w_real = cos(arg); 00390 wrecur_imag = w_imag = -sin(arg); 00391 xj = w; 00392 for (j = 1 ; j < le ; j++) { 00393 xj->real = (float)wrecur_real; 00394 xj->imag = (float)wrecur_imag; 00395 xj++; 00396 wtemp_real = wrecur_real*w_real - wrecur_imag*w_imag; 00397 wrecur_imag = wrecur_real*w_imag + wrecur_imag*w_real; 00398 wrecur_real = wtemp_real; 00399 } 00400 } 00401 00402 /* start fft */ 00403 00404 le = n; 00405 windex = 1; 00406 for (l = 0 ; l < m ; l++) { 00407 le = le/2; 00408 00409 /* first iteration with no multiplies */ 00410 00411 for(i = 0 ; i < n ; i = i + 2*le) { 00412 xi = x + i; 00413 xip = xi + le; 00414 temp.real = xi->real + xip->real; 00415 temp.imag = xi->imag + xip->imag; 00416 xip->real = xi->real - xip->real; 00417 xip->imag = xi->imag - xip->imag; 00418 *xi = temp; 00419 } 00420 00421 /* remaining iterations use stored w */ 00422 00423 wptr = w + windex - 1; 00424 for (j = 1 ; j < le ; j++) { 00425 u = *wptr; 00426 for (i = j ; i < n ; i = i + 2*le) { 00427 xi = x + i; 00428 xip = xi + le; 00429 temp.real = xi->real + xip->real; 00430 temp.imag = xi->imag + xip->imag; 00431 tm.real = xi->real - xip->real; 00432 tm.imag = xi->imag - xip->imag; 00433 xip->real = tm.real*u.real - tm.imag*u.imag; 00434 xip->imag = tm.real*u.imag + tm.imag*u.real; 00435 *xi = temp; 00436 } 00437 wptr = wptr + windex; 00438 } 00439 windex = 2*windex; 00440 } 00441 00442 /* rearrange data by bit reversing */ 00443 00444 j = 0; 00445 for (i = 1 ; i < (n-1) ; i++) { 00446 k = n/2; 00447 while(k <= j) { 00448 j = j - k; 00449 k = k/2; 00450 } 00451 j = j + k; 00452 if (i < j) { 00453 xi = x + i; 00454 xj = x + j; 00455 temp = *xj; 00456 *xj = *xi; 00457 *xi = temp; 00458 } 00459 } 00460 } |
|
|
|
|
|
|
|
|
|
Definition at line 477 of file plug_delay_V2.h.
00478 { 00479 static COMPLEX *w; /* used to store the w complex array */ 00480 static int mstore = 0; /* stores m for future reference */ 00481 static int n = 1; /* length of ifft stored for future */ 00482 00483 COMPLEX u,temp,tm; 00484 COMPLEX *xi,*xip,*xj,*wptr; 00485 00486 int i,j,k,l,le,windex; 00487 00488 double arg,w_real,w_imag,wrecur_real,wrecur_imag,wtemp_real; 00489 float scale; 00490 00491 if(m != mstore) { 00492 00493 /* free previously allocated storage and set new m */ 00494 00495 if(mstore != 0) free(w); 00496 mstore = m; 00497 if(m == 0) return; /* if m=0 then done */ 00498 00499 /* n = 2**m = inverse fft length */ 00500 00501 n = 1 << m; 00502 le = n/2; 00503 00504 /* allocate the storage for w */ 00505 00506 w = (COMPLEX *) calloc(le-1,sizeof(COMPLEX)); 00507 if(!w) { 00508 printf("\nUnable to allocate complex W array\n"); 00509 exit(1); 00510 } 00511 00512 /* calculate the w values recursively */ 00513 00514 arg = 4.0*atan(1.0)/le; /* PI/le calculation */ 00515 wrecur_real = w_real = cos(arg); 00516 wrecur_imag = w_imag = sin(arg); /* opposite sign from fft */ 00517 xj = w; 00518 for (j = 1 ; j < le ; j++) { 00519 xj->real = (float)wrecur_real; 00520 xj->imag = (float)wrecur_imag; 00521 xj++; 00522 wtemp_real = wrecur_real*w_real - wrecur_imag*w_imag; 00523 wrecur_imag = wrecur_real*w_imag + wrecur_imag*w_real; 00524 wrecur_real = wtemp_real; 00525 } 00526 } 00527 00528 /* start inverse fft */ 00529 00530 le = n; 00531 windex = 1; 00532 for (l = 0 ; l < m ; l++) { 00533 le = le/2; 00534 00535 /* first iteration with no multiplies */ 00536 00537 for(i = 0 ; i < n ; i = i + 2*le) { 00538 xi = x + i; 00539 xip = xi + le; 00540 temp.real = xi->real + xip->real; 00541 temp.imag = xi->imag + xip->imag; 00542 xip->real = xi->real - xip->real; 00543 xip->imag = xi->imag - xip->imag; 00544 *xi = temp; 00545 } 00546 00547 /* remaining iterations use stored w */ 00548 00549 wptr = w + windex - 1; 00550 for (j = 1 ; j < le ; j++) { 00551 u = *wptr; 00552 for (i = j ; i < n ; i = i + 2*le) { 00553 xi = x + i; 00554 xip = xi + le; 00555 temp.real = xi->real + xip->real; 00556 temp.imag = xi->imag + xip->imag; 00557 tm.real = xi->real - xip->real; 00558 tm.imag = xi->imag - xip->imag; 00559 xip->real = tm.real*u.real - tm.imag*u.imag; 00560 xip->imag = tm.real*u.imag + tm.imag*u.real; 00561 *xi = temp; 00562 } 00563 wptr = wptr + windex; 00564 } 00565 windex = 2*windex; 00566 } 00567 00568 /* rearrange data by bit reversing */ 00569 00570 j = 0; 00571 for (i = 1 ; i < (n-1) ; i++) { 00572 k = n/2; 00573 while(k <= j) { 00574 j = j - k; 00575 k = k/2; 00576 } 00577 j = j + k; 00578 if (i < j) { 00579 xi = x + i; 00580 xj = x + j; 00581 temp = *xj; 00582 *xj = *xi; 00583 *xi = temp; 00584 } 00585 } 00586 00587 /* scale all results by 1/n */ 00588 scale = (float)(1.0/n); 00589 for(i = 0 ; i < n ; i++) { 00590 x->real = scale*x->real; 00591 x->imag = scale*x->imag; 00592 x++; 00593 } 00594 } |
|
Definition at line 1013 of file plug_delay_V2.c. References hilbert_data_V2::nxx, and hilbert_data_V2::nyy.
|
|
Definition at line 297 of file plug_delay_V2.c. References ANAT_ALL_MASK, DELAY_main(), FUNC_ALL_MASK, global_plint, helpstring, method_strings, and yn_strings.
00298 { 00299 PLUGIN_interface * plint ; /* will be the output of this routine */ 00300 00301 if( ncall > 0 ) return NULL ; /* only one interface */ 00302 00303 /*---------------- set titles and call point ----------------*/ 00304 00305 plint = PLUTO_new_interface( "Hilbert Delay98" , 00306 "Time delay between FMRI and reference time series" , 00307 helpstring , 00308 PLUGIN_CALL_VIA_MENU , DELAY_main ) ; 00309 00310 global_plint = plint ; /* make global copy */ 00311 00312 /*--------- 1st line: Input dataset ---------*/ 00313 00314 PLUTO_add_option( plint , 00315 "Data" , /* label at left of input line */ 00316 "Data" , /* tag to return to plugin */ 00317 TRUE /* is this mandatory? */ 00318 ) ; 00319 00320 PLUTO_add_dataset( plint , 00321 "3D+time" , /* label next to button */ 00322 ANAT_ALL_MASK , /* take only EPI datasets */ 00323 FUNC_ALL_MASK , /* No fim funcs */ 00324 DIMEN_4D_MASK | /* need 3D+time datasets */ 00325 BRICK_ALLREAL_MASK /* need real-valued datasets */ 00326 ) ; 00327 00328 PLUTO_add_number( plint , 00329 "Nort" , /* label next to chooser */ 00330 1 , /* smallest possible value */ 00331 100 , /* largest possible value (inactivated for now)*/ 00332 0 , /* decimal shift (none in this case) */ 00333 2 , /* default value */ 00334 FALSE /* allow user to edit value? */ 00335 ) ; 00336 00337 /*---------- 2nd line: Input time series ----------*/ 00338 00339 PLUTO_add_option( plint , 00340 "Ref." , /* label at left of input line */ 00341 "Ref." , /* tag to return to plugin */ 00342 TRUE /* is this mandatory? */ 00343 ) ; 00344 00345 PLUTO_add_timeseries(plint,"Ref. Vect."); 00346 00347 PLUTO_add_number( plint , 00348 "Ignore" , /* label next to chooser */ 00349 0 , /* smallest possible value */ 00350 50 , /* largest possible value (inactivated for now)*/ 00351 0 , /* decimal shift (none in this case) */ 00352 0 , /* default value */ 00353 FALSE /* allow user to edit value? */ 00354 ) ; 00355 00356 PLUTO_add_string( plint , 00357 "Dsamp" , /*label next to textfield */ 00358 2,yn_strings, /* strings to choose among */ 00359 1 /* Default option */ 00360 ) ; 00361 00362 /*---------- 3rd line: sampling frequency ----------*/ 00363 00364 PLUTO_add_option( plint , 00365 "Sig." , /* label at left of input line */ 00366 "Sig." , /* tag to return to plugin */ 00367 TRUE /* is this mandatory? */ 00368 ) ; 00369 00370 PLUTO_add_number( plint , 00371 "fs in Hz" , /* label next to chooser */ 00372 0 , /* smallest possible value */ 00373 2000 , /* largest possible value */ 00374 1 , /* decimal shift (none in this case) */ 00375 5 , /* default value */ 00376 TRUE /* allow user to edit value? */ 00377 ) ; 00378 00379 PLUTO_add_number( plint , 00380 "Tstim sec" , /* label next to chooser */ 00381 0.0 , /* smallest possible value */ 00382 500 , /* largest possible value */ 00383 0 , /* decimal shift (none in this case) */ 00384 40 , /* default value */ 00385 TRUE /* allow user to edit value? */ 00386 ) ; 00387 00388 PLUTO_add_number( plint , 00389 "C-Off" , /* label next to chooser */ 00390 -10 , /* smallest possible value */ 00391 10 , /* largest possible value */ 00392 1 , /* decimal shift */ 00393 5 , /* default value */ 00394 TRUE /* allow user to edit value? */ 00395 ) ; 00396 00397 00398 PLUTO_add_string( plint , 00399 "No-bias" , /*label next to textfield */ 00400 2,yn_strings, /* strings to choose among */ 00401 1 /* Default option */ 00402 ) ; 00403 00404 00405 00406 /*---------- 4th line: Delay Units ----------*/ 00407 00408 PLUTO_add_option( plint , 00409 "Alg." , /* label at left of input line */ 00410 "Alg." , /* tag to return to plugin */ 00411 TRUE /* is this mandatory? */ 00412 ) ; 00413 00414 PLUTO_add_number( plint , 00415 "N seg." , /* label next to chooser */ 00416 1 , /* smallest possible value */ 00417 1 , /* largest possible value (turned Off for the moment, supporting code is present)*/ 00418 0 , /* decimal shift (none in this case) */ 00419 1 , /* default value */ 00420 FALSE /* allow user to edit value? */ 00421 ) ; 00422 00423 PLUTO_add_number( plint , 00424 "% ovrlp" , /* label next to chooser */ 00425 0 , /* smallest possible value */ 00426 0 , /* largest possible value (not implemented)*/ 00427 0 , /* decimal shift (none in this case) */ 00428 0 , /* default value */ 00429 FALSE /* allow user to edit value? */ 00430 ) ; 00431 00432 00433 PLUTO_add_string( plint , 00434 "Units" , /* label next to textfield */ 00435 3,method_strings, /* strings to choose among */ 00436 0 /* Default option */ 00437 ) ; 00438 00439 PLUTO_add_string( plint , 00440 "Phz Wrp" , /* label next to textfield */ 00441 2,yn_strings, /* strings to choose among */ 00442 0 /* Default option */ 00443 ) ; 00444 00445 00446 /*---------- 5th line: Output dataset ----------*/ 00447 00448 PLUTO_add_option( plint , 00449 "Output" , /* label at left of input line */ 00450 "Output" , /* tag to return to plugin */ 00451 TRUE /* is this mandatory? */ 00452 ) ; 00453 00454 PLUTO_add_string( plint , 00455 "AFNI Prfx" , /* label next to textfield */ 00456 0,NULL , /* no fixed strings to choose among */ 00457 19 /* 19 spaces for typing in value */ 00458 ) ; 00459 00460 PLUTO_add_string( plint , 00461 "Write" , /* label next to textfield */ 00462 2,yn_strings , 00463 1 00464 ) ; 00465 00466 PLUTO_add_string( plint , "Filename" , 0 , NULL , 19 ) ; 00467 00468 PLUTO_add_string( plint , 00469 "Write ts" , /* label next to textfield */ 00470 2,yn_strings , 00471 1 00472 ) ; 00473 00474 /*--------- done with interface setup ---------*/ 00475 return plint ; 00476 } |
|
Definition at line 610 of file plug_delay_V2.h.
00611 { 00612 static COMPLEX *cf; 00613 static int mstore = 0; 00614 int p,num,k,index; 00615 float Realsum, Realdif, Imagsum, Imagdif; 00616 double factor, arg; 00617 COMPLEX *ck, *xk, *xnk, *cx; 00618 00619 /* First call the fft routine using the x array but with 00620 half the size of the real fft */ 00621 00622 p = m - 1; 00623 cx = (COMPLEX *) x; 00624 fft(cx,p); 00625 00626 /* Next create the coefficients for recombination, if required */ 00627 00628 num = 1 << p; /* num is half the real sequence length. */ 00629 00630 if (m!=mstore){ 00631 if (mstore != 0) free(cf); 00632 cf = (COMPLEX *) calloc(num - 1,sizeof(COMPLEX)); 00633 if(!cf){ 00634 printf("\nUnable to allocate trig recomb coefficients."); 00635 exit(1); 00636 } 00637 00638 factor = 4.0*atan(1.0)/num; 00639 for (k = 1; k < num; k++){ 00640 arg = factor*k; 00641 cf[k-1].real = (float)cos(arg); 00642 cf[k-1].imag = (float)sin(arg); 00643 } 00644 } 00645 00646 /* DC component, no multiplies */ 00647 y[0].real = cx[0].real + cx[0].imag; 00648 y[0].imag = 0.0; 00649 00650 /* other frequencies by trig recombination */ 00651 ck = cf; 00652 xk = cx + 1; 00653 xnk = cx + num - 1; 00654 for (k = 1; k < num; k++){ 00655 Realsum = ( xk->real + xnk->real ) / 2; 00656 Imagsum = ( xk->imag + xnk->imag ) / 2; 00657 Realdif = ( xk->real - xnk->real ) / 2; 00658 Imagdif = ( xk->imag - xnk->imag ) / 2; 00659 00660 y[k].real = Realsum + ck->real * Imagsum 00661 - ck->imag * Realdif ; 00662 00663 y[k].imag = Imagdif - ck->imag * Imagsum 00664 - ck->real * Realdif ; 00665 ck++; 00666 xk++; 00667 xnk--; 00668 } 00669 } |
|
set the progress meter to the % of completion * Definition at line 933 of file plug_delay_V2.c. References hilbert_data_V2::biasrem, hilbert_data_V2::co, disp_vect(), hilbert_data_V2::Dsamp, hilbert_data_V2::dsetname, hilbert_data_V2::dtrnd, hilbert_data_V2::errcode, hilbert_data_V2::fs, hilbert_data_V2::ignore, hilbert_data_V2::ln, hilbert_data_V2::Navg, hilbert_data_V2::new_prefix, hilbert_data_V2::Nfit, hilbert_data_V2::Nort, hilbert_data_V2::nsamp, hilbert_data_V2::Nseg, hilbert_data_V2::nxx, hilbert_data_V2::nyy, hilbert_data_V2::nzz, hilbert_data_V2::out, hilbert_data_V2::outts, hilbert_data_V2::Pover, hilbert_data_V2::refname, hilbert_data_V2::rvec, hilbert_data_V2::strout, hilbert_data_V2::T, hilbert_data_V2::unt, and hilbert_data_V2::wrp.
00934 { 00935 printf ("\n\nUser Data Values at location :%d\n",loc); 00936 printf ("ud->dsetname= %s\n",ud->dsetname); 00937 printf ("ud->refname= %s\n",ud->refname); 00938 printf ("ud->rvec= (1st three elements only)"); 00939 disp_vect (ud->rvec,3); 00940 printf ("ud->nxx= %d\n",ud->nxx); 00941 printf ("ud->nyy= %d\n",ud->nyy); 00942 printf ("ud->nzz= %d\n",ud->nzz); 00943 printf ("ud->fs= %f\n",ud->fs); 00944 printf ("ud->T= %f\n",ud->T); 00945 printf ("ud->co= %f\n",ud->co); 00946 printf ("ud->unt= %d\n",ud->unt); 00947 printf ("ud->wrp= %d\n",ud->wrp); 00948 printf ("ud->Navg= %d\n",ud->Navg); 00949 printf ("ud->Nort= %d\n",ud->Nort); 00950 printf ("ud->Nfit= %d\n",ud->Nfit); 00951 printf ("ud->Nseg= %d\n",ud->Nseg); 00952 printf ("ud->Pover= %d\n",ud->Pover); 00953 printf ("ud->dtrnd= %d\n",ud->dtrnd); 00954 printf ("ud->biasrem= %d\n",ud->biasrem); 00955 printf ("ud->Dsamp= %d\n",ud->Dsamp); 00956 printf ("ud->ln= %d\n",ud->ln); 00957 printf ("ud->nsamp= %d\n",ud->nsamp); 00958 printf ("ud->ignore= %d\n",ud->ignore); 00959 printf ("ud->errcode= %d\n",ud->errcode); 00960 printf ("ud->new_prefix= %s\n",ud->new_prefix); 00961 printf ("ud->out= %d\n",ud->out); 00962 printf ("ud->strout= %s\n",ud->strout); 00963 printf ("ud->outts= %d\n",ud->outts); 00964 printf ("Hit enter to continue\a\n\n"); 00965 getchar (); 00966 return; 00967 } |
|
|
|
Definition at line 973 of file plug_delay_V2.c. References hilbert_data_V2::biasrem, hilbert_data_V2::co, hilbert_data_V2::Dsamp, hilbert_data_V2::dsetname, hilbert_data_V2::dtrnd, hilbert_data_V2::errcode, hilbert_data_V2::fs, hilbert_data_V2::ignore, hilbert_data_V2::ln, hilbert_data_V2::new_prefix, hilbert_data_V2::Nfit, hilbert_data_V2::Nort, hilbert_data_V2::nsamp, hilbert_data_V2::Nseg, hilbert_data_V2::nxx, hilbert_data_V2::nyy, hilbert_data_V2::nzz, hilbert_data_V2::out, hilbert_data_V2::outlogfile, hilbert_data_V2::outts, hilbert_data_V2::Pover, hilbert_data_V2::refname, hilbert_data_V2::strout, hilbert_data_V2::T, hilbert_data_V2::unt, and hilbert_data_V2::wrp.
00974 { 00975 fprintf (ud->outlogfile,"\nLogfile output by Hilbert Delay98 plugin\n"); 00976 fprintf (ud->outlogfile,"\n\nUser Data Values \n"); 00977 fprintf (ud->outlogfile,"Input data set = %s\n",ud->dsetname); 00978 fprintf (ud->outlogfile,"Reference file name = %s\n",ud->refname); 00979 fprintf (ud->outlogfile,"Number of voxels in X dimension = %d\n",ud->nxx); 00980 fprintf (ud->outlogfile,"Number of voxels in Y dimension = %d\n",ud->nyy); 00981 fprintf (ud->outlogfile,"Number of voxels in Z dimension = %d\n",ud->nzz); 00982 fprintf (ud->outlogfile,"Sampling Frequency = %f\n",ud->fs); 00983 fprintf (ud->outlogfile,"Stimulus Period = %f\n",ud->T); 00984 fprintf (ud->outlogfile,"Threshold Cut Off value = %f\n",ud->co); 00985 fprintf (ud->outlogfile,"Delay units = %d\n",ud->unt); 00986 fprintf (ud->outlogfile,"Delay wrap = %d\n",ud->wrp); 00987 fprintf (ud->outlogfile,"Number of segments = %d\n",ud->Nseg); 00988 fprintf (ud->outlogfile,"Number of samples in time series = %d\n",ud->nsamp); 00989 fprintf (ud->outlogfile,"Ignore = %d\n",ud->ignore); 00990 fprintf (ud->outlogfile,"Length of reference time series = %d\n",ud->ln); 00991 fprintf (ud->outlogfile,"Number of fit parameters = %d\n",ud->Nfit); 00992 fprintf (ud->outlogfile,"Number of nuisance parameters (orts)= %d\n",ud->Nort); 00993 fprintf (ud->outlogfile,"Percent overlap = %d\n",ud->Pover); 00994 fprintf (ud->outlogfile,"Plugin detrending = %d (Always 0, mandatory detrending is performed)\n",ud->dtrnd); 00995 fprintf (ud->outlogfile,"Bias correction = %d\n",ud->biasrem); 00996 fprintf (ud->outlogfile,"Acquisition time correction = %d\n",ud->Dsamp); 00997 fprintf (ud->outlogfile,"Prefix for birck output = %s\n",ud->new_prefix); 00998 fprintf (ud->outlogfile,"Flag for Ascii output file = %d\n",ud->out); 00999 fprintf (ud->outlogfile,"Ascii output file name = %s\n",ud->strout); 01000 fprintf (ud->outlogfile,"Flag for Ascii time series file output = %d\n",ud->outts); 01001 fprintf (ud->outlogfile,"\nud->errcode (debugging only)= %d\n\n",ud->errcode); 01002 fprintf (ud->outlogfile,"\nThe format for the output file is the following:\n"); 01003 fprintf (ud->outlogfile,"VI\tX\tY\tZ\tDuff\tDel\tCov\txCorCoef\tVTS\n"); 01004 fprintf (ud->outlogfile,"\nError Log <message> <index> <x> <y> <z>\n\n"); 01005 01006 return; 01007 } |
|
Definition at line 1062 of file plug_delay_V2.c. References i, hilbert_data_V2::ln, and hilbert_data_V2::outwritets.
01064 { 01065 int i; 01066 01067 for (i=0;i<ud->ln;++i) 01068 { 01069 fprintf (ud->outwritets, "%f\t",ts[i]); 01070 } 01071 fprintf (ud->outwritets,"\n"); 01072 } |
Variable Documentation
|
Definition at line 279 of file plug_delay_V2.c. Referenced by DELAY_tsfuncV2(), and PLUGIN_init(). |
|
Definition at line 97 of file plug_delay_V2.c. Referenced by PLUGIN_init(). |
|
Definition at line 215 of file plug_delay_V2.c. Referenced by DELAY_main(), and PLUGIN_init(). |
|
Definition at line 216 of file plug_delay_V2.c. Referenced by DELAY_main(), and PLUGIN_init(). |