Doxygen Source Code Documentation
plug_extract.c File Reference
#include "afni.h"#include <stdlib.h>#include <stdio.h>#include <math.h>Go to the source code of this file.
Data Structures | |
| struct | extract_data |
| struct | fXYZ |
Defines | |
| #define | NUM_YN_STRINGS (sizeof(yn_strings)/sizeof(char *)) |
| #define | NUM_FORMAT_STRINGS (sizeof(yn_strings)/sizeof(char *)) |
| #define | YUP 1 |
| #define | NOPE 0 |
| #define | ERROR_NOSUCHVOXEL 1 |
| #define | ERROR_FILEREAD 2 |
| #define | ERROR_FILEWRITE 2 |
| #define | ERROR_OPTIONS 17 |
| #define | ERROR_OUTCONFLICT 19 |
Functions | |
| char * | EXTRACT_main (PLUGIN_interface *) |
| void | EXTRACT_tsfunc (double T0, double TR, int npts, float ts[], double ts_mean, double ts_slope, void *udp, float *dumb) |
| void | show_ud (extract_data *ud) |
| void | write_ud (extract_data *ud) |
| void | indexTOxyz (extract_data *ud, int ncall, int *xpos, int *ypos, int *zpos) |
| void | error_report (extract_data *ud, int ncall) |
| void | writets (extract_data *ud, float *ts, int ncall) |
| float * | extract_index (char *fname, int ind_col_loc, int ncols, int *nrows, int *Err) |
| fXYZ * | extract_xyz (char *fname, int x_col_loc, int y_col_loc, int z_col_loc, int ncols, int *nrows, int *Err) |
| void | disp_vect (float *v, int l) |
| int | filexists (char *f_name) |
| int | f_file_size (char *f_name) |
| DEFINE_PLUGIN_PROTOTYPE PLUGIN_interface * | PLUGIN_init (int ncall) |
Variables | |
| char | helpstring [] |
| char * | yn_strings [] = { "n" , "y" } |
| char * | format_strings [] = { "i x y z ts[1] ..." , "ts[1] ts[2] ..." } |
| PLUGIN_interface * | global_plint = NULL |
Define Documentation
|
|
Definition at line 138 of file plug_extract.c. |
|
|
Definition at line 139 of file plug_extract.c. Referenced by EXTRACT_main(). |
|
|
Definition at line 137 of file plug_extract.c. |
|
|
Definition at line 140 of file plug_extract.c. |
|
|
Definition at line 141 of file plug_extract.c. |
|
|
Definition at line 135 of file plug_extract.c. |
|
|
Definition at line 131 of file plug_extract.c. Referenced by EXTRACT_main(). |
|
|
Definition at line 130 of file plug_extract.c. Referenced by EXTRACT_main(). |
|
|
Definition at line 134 of file plug_extract.c. |
Function Documentation
|
||||||||||||
|
Definition at line 1090 of file plug_extract.c. Referenced by show_ud().
|
|
||||||||||||
|
Definition at line 796 of file plug_extract.c. References extract_data::errcode, indexTOxyz(), and extract_data::outlogfile. Referenced by calculate_results(), and DELAY_tsfuncV2().
00797 {
00798 int xpos,ypos,zpos;
00799
00800 indexTOxyz (ud, ncall, &xpos , &ypos , &zpos);
00801
00802 switch (ud->errcode)
00803 {
00804
00805 default:
00806 fprintf (ud->outlogfile,"De Fault, De Fault (%d), the two sweetest words in the english langage ! ",ud->errcode);
00807 break;
00808 }
00809 fprintf (ud->outlogfile,"%d\t%d\t%d\t%d\t\n", ncall , xpos , ypos , zpos );
00810 return;
00811 }
|
|
||||||||||||||||||||||||
|
Definition at line 953 of file plug_extract.c. References calloc, f_file_size(), and i. Referenced by EXTRACT_main().
00954 {/*extract_index*/
00955
00956 float tmp, *indxvect=NULL;
00957 int sz,i;
00958 div_t divstuff,temp;
00959 FILE * INFILE;
00960
00961 /* ncols must be > 0 */
00962 if (ncols <= 0)
00963
00964 {
00965 *Err = 4;
00966 return (indxvect); /* ncols <= 0 !*/
00967 }
00968
00969
00970 /* ind_col_loc must be > 0 (1st column is 1, and it must be less than ncols) */
00971 if (ind_col_loc <= 0 || ind_col_loc > ncols)
00972 {
00973 *Err = 1;
00974 return (indxvect); /* ind_col_loc should be >0 and <ncols*/
00975 }
00976
00977 /* if the number of rows is given, compute required size */
00978 if (*nrows > 0)
00979 {
00980 sz = *nrows * ncols;
00981 }
00982 else
00983 { /* dtermine the size and compute the number of rows, check if it's an integer*/
00984 sz = f_file_size (fname);
00985 if (sz == -1)
00986 {
00987 *Err = 3;
00988 return (indxvect);
00989 }
00990 divstuff = div (sz,ncols);
00991 if (divstuff.rem != 0)
00992 {
00993 *Err = 2;
00994 return (indxvect); /* size of file and number of columns don't match */
00995 }
00996 else
00997 {
00998 *nrows = divstuff.quot;
00999 }
01000 }
01001
01002 /* Allocate and check for necessary space */
01003 indxvect = (float *) calloc (sz+2,sizeof(float));
01004
01005 if (indxvect == NULL)
01006 {
01007 printf ("\nFatal Error : Failed to Allocate memory\a\n");
01008 printf ("Abandon Lab Immediately !\n\n");
01009 return NULL ;
01010 };
01011
01012 INFILE = fopen (fname,"r");
01013 if (INFILE == NULL)
01014 {
01015 *Err = 3; /* can't find file */
01016 return (indxvect);
01017 }
01018
01019 temp = div (ind_col_loc,ncols);
01020
01021 for (i=0;i<sz;++i)
01022 {
01023 fscanf (INFILE,"%f",&tmp);
01024 divstuff = div ((i+1),ncols);
01025 if (divstuff.rem == temp.rem)
01026 {
01027 if (divstuff.rem != 0) indxvect[divstuff.quot] = tmp;
01028 else indxvect[divstuff.quot-1] = tmp;
01029 }
01030 }
01031
01032
01033 *Err = 0;
01034 return (indxvect);
01035
01036 }/*extract_index*/
|
|
|
Definition at line 351 of file plug_extract.c. References calloc, THD_3dim_dataset::daxes, DSET_FILECODE, DSET_PREFIX, extract_data::dsetname, extract_data::dtrnd, extract_data::errcode, ERROR_FILEWRITE, extract_index(), EXTRACT_tsfunc(), extract_xyz(), extract_data::fail, filexists(), extract_data::format, format_strings, free, extract_data::ignore, extract_data::iloc, extract_data::indvect, itmp, extract_data::ncols, extract_data::new_prefix, extract_data::nrows, NUM_FORMAT_STRINGS, NUM_YN_STRINGS, THD_dataxes::nxx, extract_data::nxx, THD_dataxes::nyy, extract_data::nyy, THD_dataxes::nzz, extract_data::nzz, extract_data::outlogfile, extract_data::outwritets, extract_data::pass, PLUTO_4D_to_typed_fim(), PLUTO_add_dset(), PLUTO_find_dset(), PLUTO_prefix_ok(), PLUTO_string_index(), extract_data::strin, extract_data::strout, vec, write_ud(), extract_data::xloc, extract_data::xyzvect, extract_data::yloc, yn_strings, and extract_data::zloc. Referenced by PLUGIN_init().
00352 {
00353 extract_data uda,*ud;
00354 MRI_IMAGE * tsim;
00355 MCW_idcode * idc ; /* input dataset idcode */
00356 THD_3dim_dataset * old_dset , * new_dset ; /* input and output datasets */
00357 char *tmpstr , * str , *nprfxstr;
00358 int ntime, nvec ,nprfx, Err , itmp;
00359 float * vec , fs , T ;
00360 char * tag; /* plugin option tag */
00361
00362 /* Allocate as much character space as Bob specifies in afni.h + a bit more */
00363
00364 tmpstr = (char *) calloc (PLUGIN_MAX_STRING_RANGE+10,sizeof(char));
00365 nprfxstr = (char *) calloc (PLUGIN_MAX_STRING_RANGE+10,sizeof(char));
00366
00367 if (tmpstr == NULL || nprfxstr == NULL)
00368 return "********************\n"
00369 "Could not Allocate\n"
00370 "a teeni weeni bit of\n"
00371 "Memory ! Go complain\n"
00372 "to yer Mamma ! \n"
00373 "********************\n";
00374
00375 ud = &uda; /* ud now points to an allocated space */
00376 ud->errcode = 0; /*reset error flag */
00377
00378 /*--------------------------------------------------------------------*/
00379 /*----- Check inputs from AFNI to see if they are reasonable-ish -----*/
00380
00381 /*--------- go to first input line ---------*/
00382
00383 tag = PLUTO_get_optiontag(plint) ;
00384
00385 if (tag == NULL)
00386 {
00387 return "************************\n"
00388 "Bad 1st line option \n"
00389 "************************" ;
00390 }
00391
00392 idc = PLUTO_get_idcode(plint) ; /* get dataset item */
00393 old_dset = PLUTO_find_dset(idc) ; /* get ptr to dataset */
00394 if( old_dset == NULL )
00395 return "*************************\n"
00396 "Cannot find Input Dataset\n"
00397 "*************************" ;
00398
00399 ud->dsetname = DSET_FILECODE (old_dset);
00400
00401 ud->ignore = PLUTO_get_number(plint) ; /* get number item */
00402
00403 str = PLUTO_get_string(plint) ;
00404 ud->dtrnd = (int)PLUTO_string_index( str , NUM_YN_STRINGS , yn_strings );
00405
00406
00407
00408 /*--------- loop over ramining options ---------*/
00409
00410
00411 ud->iloc = -1;
00412 ud->xloc = -1;
00413 ud->yloc = -1;
00414 ud->zloc = -1;
00415 do
00416 {
00417 tag = PLUTO_get_optiontag(plint) ;
00418 if (tag == NULL) break;
00419 if (strcmp (tag, "Mask") == 0)
00420 {
00421 ud->strin = PLUTO_get_string(plint) ;
00422 ud->ncols = PLUTO_get_number(plint) ;
00423 ud->pass = PLUTO_get_number(plint) ;
00424 ud->fail = 0; /* Set voxels that don't make it to 0 */
00425 continue;
00426 }
00427
00428 if (strcmp (tag, "Index") == 0)
00429 {
00430 ud->iloc = PLUTO_get_number(plint) ; /* get number item */
00431 continue;
00432 }
00433
00434 if (strcmp (tag, "XYZ") == 0)
00435 {
00436 ud->xloc = PLUTO_get_number(plint) ; /* get number item */
00437 ud->yloc = PLUTO_get_number(plint) ; /* get number item */
00438 ud->zloc = PLUTO_get_number(plint) ; /* get number item */
00439 continue;
00440 }
00441
00442 if (strcmp (tag, "Output") == 0)
00443 {
00444 ud->new_prefix = PLUTO_get_string(plint) ; /* get string item (the output prefix) */
00445 /* check to see if the field is empty */
00446 if (ud->new_prefix == NULL)
00447 nprfx = 0;
00448 else
00449 nprfx = 1;
00450 /* check if the size is larger than 0. I did not want to check for this unless it's allocated */
00451 if (nprfx == 1 && (int)strlen (ud->new_prefix) == 0)
00452 nprfx = 0;
00453
00454 if (nprfx == 0) /* now create the new name and make new_prefix point to it */
00455 {
00456 sprintf (nprfxstr,"%s.XTRCT",DSET_PREFIX (old_dset));
00457 ud->new_prefix = nprfxstr;
00458 /*printf ("New prefix is set to be : %s\n\a",ud->new_prefix);*/
00459 }
00460
00461
00462 if( ! PLUTO_prefix_ok(ud->new_prefix) ) /* check if it is OK */
00463 return "************************\n"
00464 "Output Prefix is illegal\n"
00465 "************************" ;
00466
00467 ud->strout = PLUTO_get_string(plint) ;
00468
00469 str = PLUTO_get_string(plint) ;
00470 ud->format = (int)PLUTO_string_index( str , NUM_FORMAT_STRINGS , format_strings );
00471 continue;
00472 }
00473
00474 } while (1);
00475 /* ------------------ Check for some errorsor inconsistencies ------------- */
00476
00477 if (ud->iloc == -1 && ud->xloc == -1)
00478 {
00479 return "**************************\n"
00480 "At least iloc or x/y/zloc\n"
00481 "must be specified\n"
00482 "**************************\n"
00483 ;
00484 }
00485
00486 if (ud->iloc != -1 && ud->xloc != -1)
00487 {
00488 return "***************************\n"
00489 "iloc AND x/y/zloc can not\n"
00490 "be simultaneously specified\n"
00491 "***************************\n"
00492 ;
00493 }
00494
00495
00496 /* ------------------Done with user parameters ---------------------------- */
00497
00498 /* Now loadup that index list or the xyz list */
00499 if (ud->iloc != -1)
00500 {
00501 itmp = 0; /* might want to give option of setting it to number of rows if*/
00502 /* the users know it, otherwise, it is automatically determined*/
00503 ud->indvect = extract_index (ud->strin, ud->iloc, ud->ncols, &itmp, &Err);
00504 }
00505 else /* assuming the only other case is that x y z are specified */
00506 {
00507 itmp = 0;
00508 ud->xyzvect = extract_xyz (ud->strin , ud->xloc , ud->yloc , ud->zloc , ud->ncols, &itmp, &Err);
00509 }
00510
00511
00512 ud->nrows = itmp;
00513
00514 switch (Err)
00515 {
00516 case (0):
00517 break;
00518 case (1):
00519 return "****************************************\n"
00520 "index location should be > 0 and < ncols\n"
00521 "****************************************\n";
00522 case (2):
00523 return "********************************************\n"
00524 "file size and number of columns do not match\n"
00525 "********************************************\n";
00526 case (3):
00527 return "**********************\n"
00528 "Can't find matrix file\n"
00529 "**********************\n";
00530 case (4):
00531 return "*****************\n"
00532 "ncols must be > 0\n"
00533 "*****************\n";
00534 case (5):
00535 return "****************************************\n"
00536 "x/y/z column numbers can NOT be the same\n"
00537 "****************************************\n";
00538 default:
00539 return "****************************************\n"
00540 "Should not have gotten here .....\n"
00541 "****************************************\n";
00542
00543 }
00544
00545
00546 if (strcmp (ud->strout,"") == 0) /* no output file is specified */
00547 {
00548 sprintf ( tmpstr , "%s" , ud->new_prefix);
00549 ud->strout = tmpstr;
00550 }
00551
00552 if (filexists(ud->strout) == 1)
00553 {
00554 return "*******************************\n"
00555 "Outfile exists, won't overwrite\n"
00556 "*******************************\n";
00557 }
00558 ud->outwritets = fopen (ud->strout ,"w");
00559
00560 sprintf ( tmpstr , "%s.log" , ud->strout);
00561 if (filexists(tmpstr) == 1)
00562 {
00563 return "*******************************\n"
00564 "Outfile.log exists, won't overwrite\n"
00565 "*******************************\n";
00566 }
00567
00568 ud->outlogfile = fopen (tmpstr ,"w");
00569
00570 if ((ud->outwritets == NULL) || (ud->outlogfile == NULL) )
00571 {
00572 ud->errcode = ERROR_FILEWRITE;
00573
00574 return "***********************\n"
00575 "Could Not Write Outfile\n"
00576 "***********************\n";
00577 }
00578
00579
00580 ud->nxx = (int)old_dset->daxes->nxx; /* get data set dimensions */
00581 ud->nyy = (int)old_dset->daxes->nyy;
00582 ud->nzz = (int)old_dset->daxes->nzz;
00583
00584 /* ready to dump the log file */
00585 write_ud (ud);
00586
00587 /*------------- ready to compute new dataset -----------*/
00588
00589 new_dset = PLUTO_4D_to_typed_fim( old_dset , /* input dataset */
00590 ud->new_prefix , /* output prefix */
00591 -1, /* negative value indicating data type is like original brick */
00592 ud->ignore , /* ignore count */
00593 ud->dtrnd , /* detrend */
00594 EXTRACT_tsfunc , /* timeseries processor */
00595 (void *)ud /* data for tsfunc */
00596 ) ;
00597
00598 PLUTO_add_dset( plint , new_dset , DSET_ACTION_MAKE_CURRENT ) ;
00599
00600 fclose (ud->outlogfile);
00601 fclose (ud->outwritets);
00602
00603 free (tmpstr);
00604 free (nprfxstr);
00605
00606 return NULL ; /* null string returned means all was OK */
00607 }
|
|
||||||||||||||||||||||||||||||||||||
|
Definition at line 613 of file plug_extract.c. References extract_data::errcode, extract_data::fail, global_plint, i, extract_data::iloc, indexTOxyz(), extract_data::indvect, extract_data::ln, extract_data::nrows, extract_data::pass, PLUTO_popup_meter(), PLUTO_set_meter(), TR, writets(), and extract_data::xyzvect. Referenced by EXTRACT_main().
00616 {
00617 static int nvox , ncall ;
00618 extract_data uda,*ud;
00619 float xcor=0.0 , tmp=0.0 , tmp2 = 0.0 , dtx = 0.0 ,\
00620 slp = 0.0 , vts = 0.0 , vrvec = 0.0 , rxcorCoef = 0.0;
00621 int i , is_ts_null , status , opt , actv , zpos , ypos , xpos , hit;
00622
00623 ud = &uda;
00624 ud = (extract_data *) udp;
00625
00626
00627 /** is this a "notification"? **/
00628
00629
00630 if( dumb == NULL ){
00631
00632 if( npts > 0 ){ /* the "start notification" */
00633
00634 PLUTO_popup_meter( global_plint ) ; /* progress meter */
00635 nvox = npts ; /* keep track of */
00636 ncall = 0 ; /* number of calls */
00637
00638 } else { /* the "end notification" */
00639
00640 PLUTO_set_meter( global_plint , 100 ) ; /* set meter to 100% */
00641
00642 }
00643 return ;
00644 }
00645
00646
00647 hit = 0;
00648 ud->ln = npts;
00649
00650
00651 if (ud->iloc != -1) /* for each ncall, find out if this index is wanted*/
00652 {
00653 *dumb = ud->fail;
00654 for (i=0;i<ud->nrows;++i)
00655 {
00656 if (ud->indvect[i] == (float)ncall)
00657 {
00658 hit = 1;
00659 *dumb = ud->pass;
00660 writets (ud,ts,ncall);
00661 i = ud->nrows;
00662 }
00663 }
00664 }
00665 else
00666 {
00667 *dumb = ud->fail;
00668 indexTOxyz (ud, ncall, &xpos , &ypos , &zpos);
00669 for (i=0;i<ud->nrows;++i)
00670 {
00671 if (ud->xyzvect[i].x == (float)xpos)
00672 {
00673 if (ud->xyzvect[i].y == (float)ypos)
00674 {
00675 if (ud->xyzvect[i].z == (float)zpos)
00676 {
00677 hit = 1;
00678 *dumb = ud->pass;
00679 writets (ud,ts,ncall);
00680 i = ud->nrows;
00681 }
00682 }
00683 }
00684 }
00685
00686 }
00687
00688
00689 /* the output brick generated here is practically useless, it has 1 at the voxels
00690 whos time courses were used and 0 where nothing was extracted */
00691
00692
00693
00694 if (ud->errcode == 0) /* if there are no errors, proceed */
00695 {/* */
00696 }/* ud->errcode == 0 outer loop */
00697
00698 /** set the progress meter to the % of completion **/
00699 ncall++ ;
00700
00701 PLUTO_set_meter( global_plint , (100*ncall)/nvox ) ;
00702
00703 ud->errcode = 0; /* Rest error to nothing */
00704
00705 return ;
00706 }
|
|
||||||||||||||||||||||||||||||||
|
Definition at line 844 of file plug_extract.c. References calloc, f_file_size(), i, fXYZ::x, fXYZ::y, and fXYZ::z. Referenced by EXTRACT_main().
00845 {/*extract_xyz*/
00846
00847 float tmp, *tmpX;
00848 int sz,i,indx,tst;
00849 div_t divstuff,tempx,tempy,tempz;
00850 FILE * INFILE;
00851 fXYZ * xyzvect=NULL;
00852
00853 /* ncols must be > 0 */
00854 if (ncols <= 0)
00855
00856 {
00857 *Err = 4;
00858 return (xyzvect); /* ncols <= 0 !*/
00859 }
00860
00861
00862 /* ind_col_loc must be > 0 (1st column is 1, and it must be less than ncols) */
00863 if (x_col_loc <= 0 || x_col_loc > ncols || y_col_loc <= 0 || y_col_loc > ncols || z_col_loc <= 0 || z_col_loc > ncols )
00864 {
00865 *Err = 1;
00866 return (xyzvect); /* ?_col_loc should be >0 and <ncols*/
00867 }
00868
00869 /* if the number of rows is given, compute required size */
00870 if (*nrows > 0)
00871 {
00872 sz = *nrows * ncols;
00873 }
00874 else
00875 { /* dtermine the size and compute the number of rows, check if it's an integer*/
00876 sz = f_file_size (fname);
00877 if (sz == -1)
00878 {
00879 *Err = 3;
00880 return (xyzvect);
00881 }
00882 divstuff = div (sz,ncols);
00883 if (divstuff.rem != 0)
00884 {
00885 *Err = 2;
00886 return (xyzvect); /* size of file and number of columns don't match */
00887 }
00888 else
00889 {
00890 *nrows = divstuff.quot;
00891 }
00892 }
00893
00894 tst = (x_col_loc - y_col_loc) * (x_col_loc - z_col_loc) * (y_col_loc - z_col_loc);
00895 if (tst == 0)
00896 {
00897 *Err = 5;
00898 return (xyzvect); /* columns specified are the same */
00899 }
00900
00901 /* Allocate and check for necessary space */
00902 xyzvect = (fXYZ *) calloc (sz+2,sizeof(fXYZ));
00903
00904 if (xyzvect == NULL)
00905 {
00906 printf ("\nFatal Error : Failed to Allocate memory\a\n");
00907 printf ("Abandon Lab Immediately !\n\n");
00908 return NULL;
00909 };
00910
00911 INFILE = fopen (fname,"r");
00912 if (INFILE == NULL)
00913 {
00914 *Err = 3; /* can't find file */
00915 return (xyzvect);
00916 }
00917
00918 tempx = div (x_col_loc,ncols);
00919 tempy = div (y_col_loc,ncols);
00920 tempz = div (z_col_loc,ncols);
00921
00922 for (i=0;i<sz;++i)
00923 {
00924 fscanf (INFILE,"%f",&tmp);
00925 divstuff = div ((i+1),ncols);
00926 if (divstuff.rem != 0)
00927 indx = divstuff.quot;
00928 else
00929 indx = divstuff.quot - 1;
00930
00931 if (divstuff.rem == tempx.rem)
00932 xyzvect[indx].x = tmp;
00933
00934 else if (divstuff.rem == tempy.rem)
00935 xyzvect[indx].y = tmp;
00936
00937 else if (divstuff.rem == tempz.rem)
00938 xyzvect[indx].z = tmp;
00939 }
00940
00941
00942 *Err = 0;
00943 return (xyzvect);
00944
00945 }/*extract_xyz*/
|
|
|
Definition at line 1042 of file plug_extract.c. Referenced by extract_index(), and extract_xyz().
01044 {
01045
01046
01047 int cnt=0,ex;
01048 float buf;
01049
01050 FILE*internal_file;
01051
01052 internal_file = fopen (f_name,"r");
01053 if (internal_file == NULL) {
01054 return (-1);
01055 }
01056 ex = fscanf (internal_file,"%f",&buf);
01057 while (ex != EOF)
01058 {
01059 ++cnt;
01060 ex = fscanf (internal_file,"%f",&buf);
01061 }
01062
01063
01064 fclose (internal_file);
01065 return (cnt);
01066 }
|
|
|
Definition at line 1072 of file plug_extract.c. Referenced by DUMP_main(), and EXTRACT_main().
01073 {/*filexists*/
01074 FILE *outfile;
01075
01076 outfile = fopen (f_name,"r");
01077 if (outfile == NULL)
01078 return (0);
01079 else
01080 fclose (outfile);
01081 return (1);
01082
01083 }/*filexists*/
|
|
||||||||||||||||||||||||
|
Definition at line 781 of file plug_extract.c. References extract_data::nxx, and extract_data::nyy. Referenced by calculate_results(), DELAY_tsfuncV2(), error_report(), EXTRACT_tsfunc(), and writets().
|
|
|
Definition at line 191 of file plug_extract.c. References ANAT_ALL_MASK, EXTRACT_main(), format_strings, FUNC_ALL_MASK, global_plint, helpstring, and yn_strings.
00192 {
00193 PLUGIN_interface * plint ; /* will be the output of this routine */
00194
00195 if( ncall > 0 ) return NULL ; /* only one interface */
00196
00197 /*---------------- set titles and call point ----------------*/
00198
00199 plint = PLUTO_new_interface( "3D+t Extract" ,
00200 "Extract voxel time courses given their index or XYZ coordinates" ,
00201 helpstring ,
00202 PLUGIN_CALL_VIA_MENU , EXTRACT_main ) ;
00203
00204 global_plint = plint ; /* make global copy */
00205
00206 /*--------- 1st line: Input dataset and mask files ---------*/
00207
00208 PLUTO_add_option( plint ,
00209 "Data" , /* label at left of input line */
00210 "Data" , /* tag to return to plugin */
00211 TRUE /* is this mandatory? */
00212 ) ;
00213
00214 PLUTO_add_dataset( plint ,
00215 "3D+time" , /* label next to button */
00216 ANAT_ALL_MASK , /* take only EPI datasets */
00217 FUNC_ALL_MASK , /* No fim funcs */
00218 DIMEN_4D_MASK | /* need 3D+time datasets */
00219 BRICK_ALLREAL_MASK /* need real-valued datasets */
00220 ) ;
00221
00222 PLUTO_add_number( plint ,
00223 "Ignore" , /* label next to chooser */
00224 0 , /* smallest possible value */
00225 50 , /* largest possible value (inactivated for now)*/
00226 0 , /* decimal shift (none in this case) */
00227 0 , /* default value */
00228 FALSE /* allow user to edit value? */
00229 ) ;
00230 PLUTO_add_string( plint ,
00231 "Dtrnd" , /* label next to textfield */
00232 2,yn_strings, /* strings to choose among */
00233 1 /* Default option */
00234 ) ;
00235
00236 /*---------- 2nd line: Mask file info ----------*/
00237 PLUTO_add_option( plint ,
00238 "Mask file" , /* label at left of input line */
00239 "Mask" , /* tag to return to plugin */
00240 TRUE /* is this mandatory? */
00241 ) ;
00242
00243 PLUTO_add_string( plint , "Mask File" , 0 , NULL , 19 ) ;
00244
00245 PLUTO_add_number( plint ,
00246 "N Columns" , /* label next to chooser */
00247 1 , /* smallest possible value */
00248 1000 , /* largest possible value (inactivated for now)*/
00249 0 , /* decimal shift (none in this case) */
00250 3 , /* default value */
00251 TRUE /* allow user to edit value? */
00252 ) ;
00253
00254 PLUTO_add_number( plint ,
00255 "Pass Value" , /* label next to chooser */
00256 -10000 , /* smallest possible value */
00257 10000 , /* largest possible value (inactivated for now)*/
00258 0 , /* decimal shift (none in this case) */
00259 1 , /* default value */
00260 TRUE /* allow user to edit value? */
00261 ) ;
00262
00263
00264
00265 /*---------- 3rd line: index mask location ----------*/
00266
00267 PLUTO_add_option( plint ,
00268 "Index Mask ?" , /* label at left of input line */
00269 "Index" , /* tag to return to plugin */
00270 FALSE /* is this mandatory? */
00271 ) ;
00272
00273 PLUTO_add_number( plint ,
00274 "i col." , /* label next to chooser */
00275 1 , /* smallest possible value */
00276 1000 , /* largest possible value (inactivated for now)*/
00277 0 , /* decimal shift (none in this case) */
00278 1 , /* default value */
00279 TRUE /* allow user to edit value? */
00280 ) ;
00281
00282
00283 /*---------- 4th line: xyz mask location ----------*/
00284
00285 PLUTO_add_option( plint ,
00286 "XYZ Mask ?" , /* label at left of input line */
00287 "XYZ" , /* tag to return to plugin */
00288 FALSE /* is this mandatory? */
00289 ) ;
00290
00291 PLUTO_add_number( plint ,
00292 "x col." , /* label next to chooser */
00293 1 , /* smallest possible value */
00294 1000 , /* largest possible value */
00295 0 , /* decimal shift (none in this case) */
00296 2 , /* default value */
00297 TRUE /* allow user to edit value? */
00298 ) ;
00299
00300 PLUTO_add_number( plint ,
00301 "y col." , /* label next to chooser */
00302 1 , /* smallest possible value */
00303 1000 , /* largest possible value */
00304 0 , /* decimal shift (none in this case) */
00305 3 , /* default value */
00306 TRUE /* allow user to edit value? */
00307 ) ;
00308
00309
00310 PLUTO_add_number( plint ,
00311 "z col." , /* label next to chooser */
00312 1 , /* smallest possible value */
00313 1000 , /* largest possible value */
00314 0 , /* decimal shift (none in this case) */
00315 4 , /* default value */
00316 TRUE /* allow user to edit value? */
00317 ) ;
00318
00319 /*---------- 5th line: output stuff ----------*/
00320
00321 PLUTO_add_option( plint ,
00322 "Output" , /* label at left of input line */
00323 "Output" , /* tag to return to plugin */
00324 TRUE /* is this mandatory? */
00325 ) ;
00326
00327 PLUTO_add_string( plint ,
00328 "AFNI Prfx" , /* label next to textfield */
00329 0,NULL , /* no fixed strings to choose among */
00330 19 /* 19 spaces for typing in value */
00331 ) ;
00332
00333
00334 PLUTO_add_string( plint , "Filename" , 0 , NULL , 19 ) ;
00335
00336 PLUTO_add_string( plint ,
00337 "Format" , /* label next to textfield */
00338 2,format_strings, /* strings to choose among */
00339 0 /* Default option */
00340 ) ;
00341
00342 return plint ;
00343 }
|
|
|
set the progress meter to the % of completion * Definition at line 712 of file plug_extract.c. References extract_data::dsetname, extract_data::dtrnd, extract_data::format, extract_data::ignore, extract_data::iloc, extract_data::ln, extract_data::ncols, extract_data::new_prefix, extract_data::nrows, extract_data::nxx, extract_data::nyy, extract_data::nzz, extract_data::strin, extract_data::strout, extract_data::xloc, extract_data::yloc, and extract_data::zloc. Referenced by check_for_valid_inputs().
00713 {
00714 printf ("\n\nUser Data Values at location :\n");
00715 printf ("ud->dsetname= %s\n",ud->dsetname);
00716 printf ("ud->strin= %s\n",ud->strin);
00717 printf ("ud->strout= %s\n",ud->strout);
00718 printf ("ud->nxx= %d\n",ud->nxx);
00719 printf ("ud->nyy= %d\n",ud->nyy);
00720 printf ("ud->nzz= %d\n",ud->nzz);
00721 printf ("ud->iloc= %d\n",ud->iloc);
00722 printf ("ud->xloc= %d\n",ud->xloc);
00723 printf ("ud->yloc= %d\n",ud->yloc);
00724 printf ("ud->zloc= %d\n",ud->zloc);
00725 printf ("ud->ncols= %d\n",ud->ncols);
00726 printf ("ud->nrows= %d\n",ud->nrows);
00727 printf ("ud->ignore= %d\n",ud->ignore);
00728 printf ("ud->dtrnd= %d\n",ud->dtrnd);
00729 printf ("ud->ln= %d\n",ud->ln);
00730 printf ("ud->new_prefix= %s\n",ud->new_prefix);
00731 printf ("ud->format= %d\n",ud->format);
00732 printf ("Hit enter to continue\a\n\n");
00733 getchar ();
00734 return;
00735 }
|
|
|
Definition at line 741 of file plug_extract.c. References extract_data::dsetname, extract_data::dtrnd, extract_data::fail, extract_data::format, extract_data::ignore, extract_data::iloc, extract_data::ncols, extract_data::new_prefix, extract_data::nrows, extract_data::nxx, extract_data::nyy, extract_data::nzz, extract_data::outlogfile, extract_data::pass, extract_data::strin, extract_data::strout, extract_data::xloc, extract_data::yloc, and extract_data::zloc. Referenced by check_for_valid_inputs(), DELAY_main(), and EXTRACT_main().
00742 {
00743 fprintf (ud->outlogfile,"\n\nUser Data Values \n");
00744 fprintf (ud->outlogfile,"ud->dsetname= %s\n",ud->dsetname);
00745 fprintf (ud->outlogfile,"ud->strin= %s\n",ud->strin);
00746 fprintf (ud->outlogfile,"ud->strout= %s\n",ud->strout);
00747 fprintf (ud->outlogfile,"ud->nxx= %d\n",ud->nxx);
00748 fprintf (ud->outlogfile,"ud->nyy= %d\n",ud->nyy);
00749 fprintf (ud->outlogfile,"ud->nzz= %d\n",ud->nzz);
00750 fprintf (ud->outlogfile,"ud->iloc= %d\n",ud->iloc);
00751 fprintf (ud->outlogfile,"ud->xloc= %d\n",ud->xloc);
00752 fprintf (ud->outlogfile,"ud->yloc= %d\n",ud->yloc);
00753 fprintf (ud->outlogfile,"ud->zloc= %d\n",ud->zloc);
00754 fprintf (ud->outlogfile,"ud->ncols= %d\n",ud->ncols);
00755 fprintf (ud->outlogfile,"ud->nrows= %d\n",ud->nrows);
00756 fprintf (ud->outlogfile,"ud->ignore= %d\n",ud->ignore);
00757 fprintf (ud->outlogfile,"ud->dtrnd= %d\n",ud->dtrnd);
00758 fprintf (ud->outlogfile,"ud->pass= %f\n",ud->pass);
00759 fprintf (ud->outlogfile,"ud->fail= %f\n",ud->fail);
00760 fprintf (ud->outlogfile,"ud->new_prefix= %s\n",ud->new_prefix);
00761 fprintf (ud->outlogfile,"ud->format= %d\n",ud->format);
00762 fprintf (ud->outlogfile,"\nThe format for the output file is the following:\n");
00763 switch (ud->format)
00764 {
00765 case (0):
00766 fprintf (ud->outlogfile,"ncall\txpos\typos\tzpos\tts[0]\tts[1]\t...\n");
00767 break;
00768 case (1):
00769 fprintf (ud->outlogfile,"ts[0]\tts[1]\t...\n");
00770 break;
00771
00772 }
00773
00774 return;
00775 }
|
|
||||||||||||||||
|
Definition at line 817 of file plug_extract.c. References extract_data::format, i, indexTOxyz(), extract_data::ln, and extract_data::outwritets. Referenced by calculate_results(), DELAY_tsfuncV2(), and EXTRACT_tsfunc().
00819 {
00820 int i,xpos,ypos,zpos;
00821
00822 switch (ud->format)
00823 {
00824 case (0):
00825 indexTOxyz (ud,ncall,&xpos , &ypos , &zpos);
00826 fprintf (ud->outwritets, "%d\t%d\t%d\t%d\t",ncall,xpos, ypos,zpos);
00827 break;
00828 case (1):
00829 break;
00830 default:
00831 break;
00832 }
00833
00834 for (i=0;i<ud->ln;++i)
00835 {
00836 fprintf (ud->outwritets, "%f\t",ts[i]);
00837 }
00838 fprintf (ud->outwritets,"\n");
00839 }
|
Variable Documentation
|
|
Definition at line 128 of file plug_extract.c. Referenced by EXTRACT_main(), and PLUGIN_init(). |
|
|
Definition at line 173 of file plug_extract.c. Referenced by EXTRACT_tsfunc(), and PLUGIN_init(). |
|
|
Definition at line 68 of file plug_extract.c. Referenced by PLUGIN_init(). |
|
|
Definition at line 127 of file plug_extract.c. Referenced by EXTRACT_main(), and PLUGIN_init(). |