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
Line 
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.
4%----------------------------------------------------------------------
5% function [checkmsg,date_str,ver]=check_files
6%
7% OUTPUT:
8% checkmsg: error message listing functions whose paths are not in the directory of uvmat.m
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
11
12%AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
13%  Copyright Joel Sommeria, 2008, LEGI / CNRS-UJF-INPG, sommeria@coriolis-legi.org.
14%AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
15%     This file is part of the toolbox UVMAT.
16%
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.
21%
22%     UVMAT is distributed in the hope that it will be useful,
23%     but WITHOUT ANY WARRANTY; without even the implied warranty of
24%     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
25%     GNU General Public License (file UVMAT/COPYING.txt) for more details.
26%AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
27
28function [checkmsg,date_str,svn_info]=check_files
29checkmsg={};%default
30svn_info.rep_rev=[];
31svn_info.cur_rev=[];
32svn_info.status=[];
33list_fct={...
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
50    'displ_uvmat';...
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
54    'fill_GUI';...%  fill a GUI with a set of parameters from a Matlab structure
55    'filter_tps';...% find the thin plate spline coefficients for interpolation-smoothing
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
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,...) .
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
86    'read_image';... read images or video objects
87    'read_get_field';... read the list of selected variables from the GUI get_field (TODO: use read_GUI)
88    'read_GUI';... %read a GUI and provide the data as a Matlab structure
89    'read_image';...%read .civ files (obsolete, but can be adapted to other text documentation files)
90    'read_multimadoc';... %read a set of Imadoc files and compare their timing of different file series
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
122pathuvmat=fileparts(dir_fct);
123
124%% add the uvmat path to matlab if needed
125if isempty(regexp(path,[pathuvmat '(:|\>)'],'once'))
126    addpath(pathuvmat);
127end
128
129
130%% loop on the list of functions in the uvmat package
131icount=0;
132datnum=zeros(1,length(list_fct));
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;
137        checkmsg{icount}=[list_fct{i} ' not found'];% test for function not found
138    else
139        pth=fileparts(dir_fct);
140        if ~isequal(pathuvmat,pth) && ~isequal(fullfile(pathuvmat,'private'),pth)
141            icount=icount+1;
142            checkmsg{icount}=[dir_fct ' overrides the package UVMAT'];% bad path for the function
143        end
144        datfile=dir(dir_fct);
145        if isfield(datfile,'datenum')
146            datnum(i)= datfile.datenum;
147        end
148    end
149end
150date_str=datestr(max(datnum));
151
152%% check svn status
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,'R.vision\s*:\s*(?<rev>\d+)','names');
158    if ~isempty(t)
159        svn_info.cur_rev=str2double(t.rev);
160    end
161    [tild,result]=system(['svn info -r ''HEAD'' '  pathuvmat]);
162    t=regexp(result,'R.vision\s*:\s*(?<rev>\d+)','names');
163    if ~isempty(t)
164        svn_info.rep_rev=str2double(t.rev);
165    end
166    [tild,result]=system(['svn status '  pathuvmat]);
167    svn_info.status=result;
168    checkmsg =[checkmsg {['SVN revision : ' num2str(svn_info.cur_rev)]}];
169    if svn_info.rep_rev>svn_info.cur_rev
170        checkmsg =[checkmsg ...
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)
175        for ilist=1:numel(modifications)
176            [tild,FileName,FileExt]=fileparts(modifications{ilist});
177            checkmsg=[checkmsg {[FileName FileExt ' modified']}];
178        end
179    end
180else
181    checkmsg=[checkmsg {'SVN not available'}];
182end
183checkmsg=checkmsg';
184
Note: See TracBrowser for help on using the repository browser.