source: trunk/src/check_files.m @ 497

Last change on this file since 497 was 497, checked in by sommeria, 12 years ago

cleaning and small bug repair.
pb of histogram for filter data solved
display of uicontrol by right mouse selection improved

File size: 10.3 KB
[357]1%'check_files': check the path, modification date and svn version for all the
2%  function in the toolbox UVMAT. Called at the opening of uvmat. Adds the
3%  uvmat path to the Matlab path if needed.
[497]5% function [checkmsg,date_str,ver]=check_files
[497]8% checkmsg: error message listing functions whose paths are not in the directory of uvmat.m
[357]9% date_str: date of the most recent modification of a file in the toolbox
10% ver : svn version in case this is a  svn repository
13%  Copyright Joel Sommeria, 2008, LEGI / CNRS-UJF-INPG,
15%     This file is part of the toolbox UVMAT.
17%     UVMAT is free software; you can redistribute it and/or modify
18%     it under the terms of the GNU General Public License as published by
19%     the Free Software Foundation; either version 2 of the License, or
20%     (at your option) any later version.
22%     UVMAT is distributed in the hope that it will be useful,
23%     but WITHOUT ANY WARRANTY; without even the implied warranty of
25%     GNU General Public License (file UVMAT/COPYING.txt) for more details.
[497]28function [checkmsg,date_str,svn_info]=check_files
34    'calc_field';...% defines fields (velocity, vort, div...) from civx data and calculate them
35    'cell2tab';... %transform a Matlab cell in a character array suitable for display in a table
36    'check_field_structure';...% check the validity of the field struture representation consistant with the netcdf format
37    'check_files';...
38    'civ';...   %function associated with the interface 'civ.fig' for PIV and spline interpolation
39    'civ.fig';...
40    'civ_3D';... function associated with the interface 'civ_3D.fig' for PIV in volume (TODO: combine with civ.m)
41    'civ_3D.fig';...
42    'civ_matlab';...% civ programs, Matlab version (called by civ.m, option Civprogram/Matlab in the upper menu bar)
43    'close_fig';...% function  activated when a figure is closed
44    'copyfields';...% copy fields between two matlab structures
45    'create_grid';...% called by the GUI geometry_calib to create a physical grid
46    'create_grid.fig';...% GUI corresponding to create_grid.m
47    'dataview';...% function for scanning directories in a campaign
48    'dataview.fig';...% GUI corresponding to dataview
49    'delete_object';...%delete a projection object, defined by its index in the Uvmat list or by its graphic handle
[475]50    'displ_uvmat';...
[357]51    'editxml';...%display and edit xml files using a xls schema
52    'editxml.fig';...%interface for editxml
53    'fileparts_uvmat';...% extracts the root name,field indexes and nomenclature type from an input filename
[497]54    'fill_GUI';...%  fill a GUI with a set of parameters from a Matlab structure
[476]55    'filter_tps';...% find the thin plate spline coefficients for interpolation-smoothing
[357]56    'find_field_indices';...% group the variables of a nc-formated Matlab structure into 'fields' with common dimensions
57    'find_file_series';...%check the content of an input file and find the corresponding file series
58    'fullfile_uvmat';...%creates a file name from a root name and indices.
59    'geometry_calib';...%performs geometric calibration from a set of reference points
60    'geometry_calib.fig';...%interface for geometry_calib
61    'get_field';...% choose and plot a field from a Netcdf file
62    'get_field.fig';...%interface for get_field
[380]63    'get_file_series';...% determine the list of file names and file indices for functions called by 'series'.
64    'get_file_type';...% determine info about a file (image, multimage, civdata,...) .
[357]65    'griddata_uvmat';...%make 2D linear interpolation using griddata, with input appropriate for both Matlab 6.5 and 7
66    'hist_update';...%  update of a current global histogram by inclusion of a new field
67    'imadoc2struct';...%convert the image documentation file ImaDoc into a Matlab structure
68    'keyboard_callback';... % function activated when a key is pressed on the keyboard
69    'ListDir';... scan the structure of the directory tree (for dataview.m)
70    'mouse_down';% function activated when the mouse button is pressed on a figure (callback for 'WindowButtonDownFcn')
71    'mouse_motion';...% permanently called by mouse motion over a figure (callback for 'WindowButtonMotionFcn')
72    'mouse_up';... % function to be activated when the mouse button is released (callback for 'WindowButtonUpFcn')
73    'msgbox_uvmat';... associated with GUI msgbox_uvmat.fig to display message boxes, for error, warning or input calls
74    'msgbox_uvmat.fig';...
75    'nc2struct';...% transform a netcdf file in a corresponding matlab structure
76    'num2stra';...% transform number to the corresponding character string depending on the nomenclature
77    'open_uvmat';...% open with uvmat the  field selected in the list of 'civ/status' or 'series/check_data_files'
78    'peaklock';...%
79    'phys_XYZ';...% transform coordiantes from pixels to phys
80    'px_XYZ';...% transform coordiantes from phys to pixels
81    'plot_field';...%displays a vector field and/or scalar or images
82    'plot_object';...%draws a projection object (points, line, plane...)
83    'proj_field';...%project a field on a projection object (plane, line,...)
84    'read_civxdata';...reads civx data from netcdf files
85    'read_civdata';... reads new civ data from netcdf files
[460]86    'read_image';... read images or video objects
[357]87    'read_get_field';... read the list of selected variables from the GUI get_field (TODO: use read_GUI)
[497]88    'read_GUI';... %read a GUI and provide the data as a Matlab structure
[460]89    'read_image';...%read .civ files (obsolete, but can be adapted to other text documentation files)
[477]90    'read_multimadoc';... %read a set of Imadoc files and compare their timing of different file series
[357]91    'read_xls';...%read excel files containing the list of the experiments
92    'reinit';...% suppress the personal parameter file 'uvmat_perso.mat'
93    'rotate_points';...%'rotate_points': associated with GUI rotate_points.fig to introduce (2D) rotation parameters
94    'rotate_points.fig';...
95    'RUN_STLIN';...% combine 2 displacement fields for stereo PIV
96    'series';...% master function for analysis field series, with interface 'series.fig'
97    'series.fig';...% interface for 'series'
98    'set_col_vec';...% sets the color code for vectors depending on a scalar and input parameters (used for plot_field)
99    'set_grid';...% creates a grid for PIV
100    'set_grid.fig';...% interface for set_grid
101    'set_object.m';...%  edit a projection object
102    'set_object.fig';...% interface for set_object
103    'stra2num';...% transform letters (a, b, A, B,) or numerical strings ('1','2'..) to the corresponding numbers
104    'sub_field';...% combine the two input fields,
105    'struct2nc';...% %write fields in netcdf files
106    'struct2xml';... transform a matlab structure to a xml tree.
107    'tps_coeff';...% calculate the thin plate spline (tps) coefficients
108    'tps_eval';... %calculate the thin plate spline (tps) interpolation at a set of points
109    'tps_eval_dxy';...% calculate the derivatives of thin plate spline (tps) interpolation at a set of points (limited to the 2D case)
110    'translate_points';...% associated with GUI translate_points.fig to display translation parameters
111    'translate_points.fig';...
112    'update_imadoc';...  %update the ImaDoc xml file
113    'update_waitbar';... update the waitbar display, used for ACTION functions in the GUI 'series'
114    'uvmat';...% master function for file scanning and visualisation of 2D fields
115    'uvmat.fig';...  %interface for uvmat
116    'view_field.m';...% function for visualisation of projected fields'
117    'view_field.fig';...%GUI for view_field
118    'write_plot_param';...%update plotting parameters after plot, TODO: change into a general function: fill_GUI
119    'xml2struct';...% read an xml file as a Matlab structure, converts numeric character strings into numbers
120    };
121dir_fct=which('uvmat');% path to uvmat
124%% add the uvmat path to matlab if needed
125if isempty(regexp(path,[pathuvmat '(:|\>)'],'once'))
126    addpath(pathuvmat);
130%% loop on the list of functions in the uvmat package
133for i=1:length(list_fct)
134    dir_fct=which(list_fct{i});% path to fct
135    if isempty(dir_fct)
136        icount=icount+1;
[497]137        checkmsg{icount}=[list_fct{i} ' not found'];% test for function not found
[357]138    else
[497]139        pth=fileparts(dir_fct);
140        if ~isequal(pathuvmat,pth) && ~isequal(fullfile(pathuvmat,'private'),pth)
[357]141            icount=icount+1;
[497]142            checkmsg{icount}=[dir_fct ' overrides the package UVMAT'];% bad path for the function
[357]143        end
144        datfile=dir(dir_fct);
145        if isfield(datfile,'datenum')
146            datnum(i)= datfile.datenum;
147        end
148    end
152%% check svn status
[479]153[status,result]=system('svn --help');
154if status==0
155    svn_info.rep_rev=0;svn_info.cur_rev=0;
156    [tild,result]=system(['svn info ' dir_fct]);
157    t=regexp(result,'\s*:\s*(?<rev>\d+)','names');
158    if ~isempty(t)
[475]159        svn_info.cur_rev=str2double(t.rev);
[357]160    end
[497]161    [tild,result]=system(['svn info -r ''HEAD'' '  pathuvmat]);
[479]162    t=regexp(result,'\s*:\s*(?<rev>\d+)','names');
163    if ~isempty(t)
[497]164        svn_info.rep_rev=str2double(t.rev);
[479]165    end
[497]166    [tild,result]=system(['svn status '  pathuvmat]);
[479]167    svn_info.status=result;
[497]168    checkmsg =[checkmsg {['SVN revision : ' num2str(svn_info.cur_rev)]}];
[479]169    if svn_info.rep_rev>svn_info.cur_rev
[497]170        checkmsg =[checkmsg ...
[479]171            {['Repository now at revision ' num2str(svn_info.rep_rev) '. Please type svn update in uvmat folder']}];
172    end
173    modifications=regexp(svn_info.status,'M\s[^(\n|\>)]+','match');
174    if ~isempty(modifications)
[497]175        for ilist=1:numel(modifications)
176            [tild,FileName,FileExt]=fileparts(modifications{ilist});
177            checkmsg=[checkmsg {[FileName FileExt ' modified']}];
178        end
[479]179    end
[497]181    checkmsg=[checkmsg {'SVN not available'}];
Note: See TracBrowser for help on using the repository browser.