[Master Index] [Index for Toolbox]

# get_user_directory

## (Toolbox/get_user_directory.m in BrainStorm 2.0 (Alpha))

### Function Synopsis

    Users = get_user_directory;

### Help Text

    GET_USER_DIRECTORY - Get the user's root directory information
     function Users = get_user_directory;
     User = get_user_directory;
     Accesses the Preferences to get the current Users structure and
      CurrentData, as a subfield fo Users, e.g. Users.CurrentData.

     Every attempt to get the current user database should call this mfile, which will in
      in turn call database_manager only if there is a problem.

     LOGIC: if the user has an active BrainStorm session running, then the structure
      will be found in the BrainStormTaskbar as application data BrainStormDataBase.
     If there is something wrong with that information, send the user to the data manager

     If the BrainStormTaskbar is not running, then we may be in batch mode, so get
      the information from the BrainStorm preferences. Send error messages to the
      standard output.

     Returns the structure with fields:
      Comment, string commenting on the location of the files
      STUDIES, string giving the root location of all studies
      SUBJECTS, string giving the root for subjects.
      FILELIST, structure, result of browse_study_folder(SUBJECTS)
      CurrentData with fields and examples:
          StudyFile: 'jcm_spont08-31.ds\jcm_brainstormstudy.mat'
        SubjectFile: 'jcm_mri\jcm_brainstormsubject.mat'

     Idea is that we then call load(fullfile(User.STUDIES,<filename>));
      i.e. all filenames are referential to a root.

### Cross-Reference Information

This function calls

    browse_study_folder                C:\BrainStorm_2001\Toolbox\browse_study_folder.m
    bst_message_window                 C:\BrainStorm_2001\Toolbox\bst_message_window.m
    data_manager                       C:\BrainStorm_2001\Toolbox\data_manager.m

This function is called by

    bem_xfer                           C:\BrainStorm_2001\Toolbox\bem_xfer.m
    browse_study_folder                C:\BrainStorm_2001\Toolbox\browse_study_folder.m
    bst_headmodeler                    C:\BrainStorm_2001\Toolbox\bst_headmodeler.m
    bst_imaging_display                C:\BrainStorm_2001\Toolbox\bst_imaging_display.m
    bst_mriviewer                      C:\BrainStorm_2001\Toolbox\bst_mriviewer.m
    bst_sourceimaging                  C:\BrainStorm_2001\Toolbox\bst_sourceimaging.m
    bst_static_taskbar                 C:\BrainStorm_2001\Toolbox\bst_static_taskbar.m
    bst_wavedata_display               C:\BrainStorm_2001\Toolbox\bst_wavedata_display.m
    data_manager                       C:\BrainStorm_2001\Toolbox\data_manager.m
    data_selector_cb                   C:\BrainStorm_2001\Toolbox\data_selector_cb.m
    dataplot_cb                        C:\BrainStorm_2001\Toolbox\dataplot_cb.m
    extract_channels                   C:\BrainStorm_2001\Toolbox\extract_channels.m
    find_brainstorm_files              C:\BrainStorm_2001\Toolbox\find_brainstorm_files.m
    find_brainstorm_structure          C:\BrainStorm_2001\Toolbox\find_brainstorm_structure.m
    get_channel                        C:\BrainStorm_2001\Toolbox\get_channel.m
    headmodeler_gui                    C:\BrainStorm_2001\Toolbox\headmodeler_gui.m
    importdata                         C:\BrainStorm_2001\Toolbox\importdata.m
    least_squares_fit                  C:\BrainStorm_2001\Toolbox\least_squares_fit.m
    least_squares_parameters_cb        C:\BrainStorm_2001\Toolbox\least_squares_parameters_cb.m
    load_brainstorm_file               C:\BrainStorm_2001\Toolbox\load_brainstorm_file.m
    make_default_study                 C:\BrainStorm_2001\Toolbox\make_default_study.m
    make_default_subject               C:\BrainStorm_2001\Toolbox\make_default_subject.m
    minnorm_parameters_cb              C:\BrainStorm_2001\Toolbox\minnorm_parameters_cb.m
    mri_read_tool                      C:\BrainStorm_2001\Toolbox\mri_read_tool.m
    mritool_cb                         C:\BrainStorm_2001\Toolbox\mritool_cb.m
    parametric_estimation              C:\BrainStorm_2001\Toolbox\parametric_estimation.m
    rap_music_parameters               C:\BrainStorm_2001\Toolbox\rap_music_parameters.m
    rapmusic_gui                       C:\BrainStorm_2001\Toolbox\rapmusic_gui.m
    read_gain                          C:\BrainStorm_2001\Toolbox\read_gain.m
    results_visualization              C:\BrainStorm_2001\Toolbox\results_visualization.m
    simulator                          C:\BrainStorm_2001\Toolbox\simulator.m
    simulator_mri                      C:\BrainStorm_2001\Toolbox\simulator_mri.m
    sourceimaging                      C:\BrainStorm_2001\Toolbox\sourceimaging.m
    study_editor                       C:\BrainStorm_2001\Toolbox\study_editor.m
    subject_editor                     C:\BrainStorm_2001\Toolbox\subject_editor.m
    surf2vol_interp                    C:\BrainStorm_2001\Toolbox\surf2vol_interp.m
    tessellation_handler               C:\BrainStorm_2001\Toolbox\tessellation_handler.m

### Listing of function C:\BrainStorm_2001\Toolbox\get_user_directory.m

    function Users = get_user_directory;
    %GET_USER_DIRECTORY - Get the user's root directory information
    % function Users = get_user_directory;
    % User = get_user_directory;
    % Accesses the Preferences to get the current Users structure and
    %  CurrentData, as a subfield fo Users, e.g. Users.CurrentData.
    %
    % Every attempt to get the current user database should call this mfile, which will in
    %  in turn call database_manager only if there is a problem.
    %
    % LOGIC: if the user has an active BrainStorm session running, then the structure
    %  will be found in the BrainStormTaskbar as application data BrainStormDataBase.
    % If there is something wrong with that information, send the user to the data manager
    %
    % If the BrainStormTaskbar is not running, then we may be in batch mode, so get
    %  the information from the BrainStorm preferences. Send error messages to the
    %  standard output.
    %
    % Returns the structure with fields:
    %  Comment, string commenting on the location of the files
    %  STUDIES, string giving the root location of all studies
    %  SUBJECTS, string giving the root for subjects.
    %  FILELIST, structure, result of browse_study_folder(SUBJECTS)
    %  CurrentData with fields and examples:
    %      StudyFile: 'jcm_spont08-31.ds\jcm_brainstormstudy.mat'
    %    SubjectFile: 'jcm_mri\jcm_brainstormsubject.mat'
    %
    % Idea is that we then call load(fullfile(User.STUDIES,<filename>));
    %  i.e. all filenames are referential to a root.

    %<autobegin> ---------------------- 26-May-2004 11:30:20 -----------------------
    % --------- Automatically Generated Comments Block Using AUTO_COMMENTS ---------
    %
    % CATEGORY: Utility - General
    %
    % Alphabetical list of external functions (non-Matlab):
    %   toolbox\browse_study_folder.m
    %   toolbox\bst_message_window.m
    %   toolbox\data_manager.m
    %
    % Group : Preference data and their calls in this file:
    %   CurrentData = getpref('BrainStorm','CurrentData',[]);
    %   CurrentData = getpref('BrainStorm','UserCurrentData');
    %   UserDB = getpref('BrainStorm','UserDataBase');
    %   iUser = getpref('BrainStorm','iUserDataBase');
    %
    % Application data and their calls in this file:
    %   TASKBAR = getappdata(0,'BrainStormTaskbar');
    %   Users = getappdata(TASKBAR,'BrainStormDataBase');
    %
    % At Check-in: $Author: Mosher $  $Revision: 21 $  $Date: 5/26/04 9:59a $
    %
    % This software is part of BrainStorm Toolbox Version 2.0 (Alpha) 24-May-2004
    %
    % Principal Investigators and Developers:
    % ** Richard M. Leahy, PhD, Signal & Image Processing Institute,
    %    University of Southern California, Los Angeles, CA
    % ** John C. Mosher, PhD, Biophysics Group,
    %    Los Alamos National Laboratory, Los Alamos, NM
    % ** Sylvain Baillet, PhD, Cognitive Neuroscience & Brain Imaging Laboratory,
    %    CNRS, Hopital de la Salpetriere, Paris, France
    %
    % See BrainStorm website at http://neuroimage.usc.edu for further information.
    %
    % Copyright (c) 2004 BrainStorm by the University of Southern California
    % This software distributed  under the terms of the GNU General Public License
    % as published by the Free Software Foundation. Further details on the GPL
    % license can be found at http://www.gnu.org/copyleft/gpl.html .
    %
    % FOR RESEARCH PURPOSES ONLY. THE SOFTWARE IS PROVIDED "AS IS," AND THE
    % UNIVERSITY OF SOUTHERN CALIFORNIA AND ITS COLLABORATORS DO NOT MAKE ANY
    % WARRANTY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES OF
    % MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, NOR DO THEY ASSUME ANY
    % LIABILITY OR RESPONSIBILITY FOR THE USE OF THIS SOFTWARE.
    %<autoend> ------------------------ 26-May-2004 11:30:20 -----------------------

    % /---Script Author--------------------------------------\
    % | *** John C. Mosher, Ph.D.                            |
    % |  Biophysics Group                                    |
    % |                                                      |
    % | *** Sylvain Baillet, Ph.D.                           |
    % | Cognitive Neuroscience & Brain Imaging Laboratory    |
    % | CNRS UPR640 - LENA                                   |
    % | Hopital de la Salpetriere, Paris, France             |
    % | sylvain.baillet@chups.jussieu.fr                     |
    % \------------------------------------------------------/
    %
    % Date of creation: January 1999
    % Date of modification: September 2001
    %----------------------------------------------------------------------------------
    % JCM 11/9/99     appended filesep if missing
    % JCM 10/25/00    changed to use get_user_directory
    % SB 11/13/00     Added an error message to force the user to move Users.mat into
    %                 custom if necessary.
    % SB 09/03/01     USer guidata to look for User information
    % JCM 22-Mar-2002 allowing for get_user_directory to load from bst_prev_session
    % JCM 28-May-2002 database_manager has replaced initialize_users, database_manager now
    %                 uses getprefs rather than users.mat. Altered help block above to
    %                 reflect new changes. Used try, catch to handle errors
    % SB  03-Sep-2002 Return [] when database is not loaded properly
    % JCM 30-Oct-2002 Strict enforcement of Preferences only, all other use disabled.
    %                 Since startup sets a default if needed, errors should be minimal.
    % JCM 20-Aug-2003 empty CurrentData default if necessary
    % JCM  5-Sep-2003 Added FILELIST generation if it is missing from the database
    % ----------------------------------------------------------------------------------

    try
       UserDB = getpref('BrainStorm','UserDataBase');
       iUser = getpref('BrainStorm','iUserDataBase'); % number of the last one used
       Users = UserDB(iUser);

       if(~isfield(Users,'FILELIST')),
          % FILELIST is missing from the user database structure
          Users = setfield(Users,'FILELIST',browse_study_folder(Users.STUDIES));
       end

       % the current data is stored in preferences separate from the database
       CurrentData = getpref('BrainStorm','CurrentData',[]); % default blank if not there
       Users = setfield(Users,'CurrentData',CurrentData); % May BST MMII format

    catch
       Users = [];
    end

    return

    % everything else below disabled by the above return statement

    try

       if(isappdata(0,'BrainStormTaskbar')), % a BrainStorm Taskbar is running
          try

             TASKBAR = getappdata(0,'BrainStormTaskbar');
             Users = getappdata(TASKBAR,'BrainStormDataBase');
             % NOTE: May BST MMII returns Users.CurrentData as one of the fields, which is
             %  not in the regular structure.

          catch

             bst_message_window('wrap',{'Something failed in retrieving your latest database.',...
                   'Please edit your database and/or select valid data'});
             data_manager; % non-modal call
             return

          end

       elseif(ispref('BrainStorm','UserDataBase')),

          % there is no Taskbar, we may be in batch mode
          % get the latest database information from the Mathworks preferences

          try

             UserDB = getpref('BrainStorm','UserDataBase');
             iUser = getpref('BrainStorm','iUserDataBase'); % number of the last one used
             Users = UserDB(iUser);
             % the current data is stored in preferences separate from the database
             CurrentData = getpref('BrainStorm','UserCurrentData');
             Users = setfield(Users,'CurrentData',CurrentData); % May BST MMII format

          catch

             % use fprintf, since brainstorm is apparently not running
             %  and we may be writing standard output out to a file
             fprintf(['Error in loading your database preferences.\n',...
                   'BrainStorm is not running, nor is there a ',...
                   'valid database structure in the preferences. \n',...
                   'Please restart BrainStorm and use the ',...
                   'Data Manager to build a proper database.\n']);
             Users = [];
             return

          end

       else

          % The taskbar isn't running, and there are no preferences
          bst_message_window('wrap',{'BrainStorm is not running, nor is there a ',...
                'valid database structure. Please restart BrainStorm and use the ',...
                'Data Manager to build a proper database.'});

          return

       end

    catch

       % if all else fails, call the data manager
       bst_message_window('wrap',{'Something failed in retrieving your latest database.',...
             'Please edit your database and/or select valid data'});
       data_manager; % non-modal call
       return

    end

    % We have a single Users structure, clean up

    % some of our commands anticipate at separator at the end, give one:
    if(~strcmp(Users.STUDIES(end),filesep)),
       Users.STUDIES(end+1)=filesep;
    end

    if(~strcmp(Users.SUBJECTS(end),filesep)),
       Users.SUBJECTS(end+1)=filesep;
    end

    return

    % Deprecated code below, not in use as of 3-Sep-2001 (apparently)
    if(0), % deprecated code section, marked more clearly 20-Oct-2002 JCM

       if(0), %old SB code
          hf = findobj(0,'Tag','TASKBAR'); % where is the taskbar
          Users = guidata(hf);
       end

       if isempty(hf) % User does not use the taskbar figure (may be running bacth processing ?)
          global Users
          [brainstorm_home,tmp] = which('startup'); % find the brainstorm home folder in the user path
          if isempty(brainstorm_home) % Path does not include the BrainStorm folder containing the 'startup' file
             Users.SUBJECTS = pwd;
             Users.STUDIES = pwd;
          else
             User.SUBJECTS = brainstorm_home;
             User.STUDIES = brainstorm_home;
          end
       end

       default_custom = what('Custom'); % find the custom folder in the users path
       fname = fullfile(default_custom.path,'users.mat'); % the fully qualified name
       if(~exist(fname)),
          %SB 11/13/00 : Error message is necessary for a proper handling of the situation by the user
          errordlg(sprintf('It is necessary to move the Users.mat file in %s first - Please restart BrainStorm when Users.mat is moved.',default_custom.path),'New BrainStorm Version');
          delete(findobj(0,'Tag','TASKBAR'))
          Users = [];
          return
       else
          load(fullfile(default_custom.path,'users.mat'),'-mat') %  loads the custom folder file 'users.mat'
       end

       % the local directory now has the structure Users, comprising .Comment, .STUDIES, and .SUBJECTS

       % trim to just the FIRST one

       Users = Users(1);

       % some of our commands anticipate at separator at the end, give one:
       if(~strcmp(Users.STUDIES(end),filesep)),
          Users.STUDIES(end+1)=filesep;
       end

       if(~strcmp(Users.SUBJECTS(end),filesep)),
          Users.SUBJECTS(end+1)=filesep;
       end

       return

    end % deprecated code section

Produced by color_mat2html, a customized BrainStorm 2.0 (Alpha) version of mat2html on Tue Nov 2 16:17:59 2004
Cross-Directory links are: ON