Skip to content
Snippets Groups Projects
Select Git revision
  • b8078501148558abdce7b71540506f877af7b728
  • master default protected
  • archive
  • v7.14.3
  • v7.14.2
  • v7.14.1
  • v7.14
  • v7.13
  • v7.12
  • v7.11
  • v7.10
  • v7.9
  • v7.8
  • v7.7
  • v7.6
  • v7.5
  • v7.4
  • v7.3
  • v7.3_MultiCellType
  • v7.2
  • v7.2_MultiCell
  • v7.1
  • v7.1_MultiCell
23 results

OpenData.m

Blame
  • OpenData.m 6.09 KiB
    function opened = OpenData()
    %Opens the data file either from a previous state of LEVer or from tracking
    %results.  If the latter, the data will be converted to LEVer's data scheme
    %and save out to a new file.
    
    %--Eric Wait
    
    global Figures Colors CONSTANTS CellFamilies CellHulls HashedCells Costs CellTracks
    if(isempty(Figures))
        fprintf('LEVer ver 4.1\n***DO NOT DISTRIBUTE***\n\n');
    end
    
    if(exist('ColorScheme.mat','file'))
        load 'ColorScheme.mat'
        Colors = colors;
    else
        %the lowercase var is saved out where the capital var the one used
        colors = CreateColors();
        Colors = colors;
        save('ColorScheme','colors');
    end
        
    if (~exist('settings','var') || isempty(settings))
        if (exist('LEVerSettings.mat','file')~=0)
            load('LEVerSettings.mat');
        else
            settings.imagePath = '.\';
            settings.matFilePath = '.\';
        end
    end
    
    filterIndexImage = 0;
    goodLoad = 0;
    opened = 0;
    
    if(~isempty(Figures))
        if(strcmp(get(Figures.cells.menuHandles.saveMenu,'Enable'),'on'))
            choice = questdlg('Save current edits before opening new data?','Closing','Yes','No','Cancel','Cancel');
            switch choice
                case 'Yes'
                    SaveData();
                    set(Figures.cells.menuHandles.saveMenu,'Enable','off');
                case 'Cancel'
                    return
                case 'No'
                    set(Figures.cells.menuHandles.saveMenu,'Enable','off');
                otherwise
                    return
            end
        end
    end
    
    oldCONSTANTS = CONSTANTS;
    
    %find the first image
    imageFilter = [settings.imagePath '*.TIF'];
    while (filterIndexImage==0)
        fprintf('\nSelect first .TIF image...\n\n');
        [settings.imageFile,settings.imagePath,filterIndexImage] = uigetfile(imageFilter,'Open First Image in dataset: ');
        if (filterIndexImage==0)
            CONSTANTS = oldCONSTANTS;
            return
        end
    end
    
    index = strfind(settings.imageFile,'_t');
    if (~isempty(index) && filterIndexImage~=0)
        CONSTANTS.rootImageFolder = settings.imagePath;
        imageDataset = settings.imageFile(1:(index(length(index))-1));
        CONSTANTS.imageDatasetName = imageDataset;
        CONSTANTS.datasetName = imageDataset;
        index2 = strfind(settings.imageFile,'.');
        CONSTANTS.imageSignificantDigits = index2 - index - 2;
        fileName=[CONSTANTS.rootImageFolder imageDataset '_t' SignificantDigits(1) '.TIF'];
    end
    
    while (isempty(index) || ~exist(fileName,'file'))
        fprintf(['Image file name not in correct format: ' CONSTANTS.datasetName '_t' frameT '.TIF\nPlease choose another...\n']);
        [settings.imageFile,settings.imagePath,filterIndexImage] = uigetfile(settings.imagePath,'Open First Image');
        if(filterIndexImage==0)
            CONSTANTS = oldCONSTANTS;
            return
        end
        index = strfind(imageFile,'t');
        CONSTANTS.rootImageFolder = [settings.imagePath '\'];
        imageDataset = imageFile(1:(index(length(index))-2));
        fileName=[CONSTANTS.rootImageFolder imageDataSet '_t' SignificantDigits(t) '.TIF'];
    end
    
    answer = questdlg('Run Segmentation and Tracking or Use Existing Data?','Data Source','Segment & Track','Existing','Existing');
    switch answer
        case 'Segment & Track'
            save('LEVerSettings.mat','settings');
            InitializeConstants();
            SegAndTrack();
        case 'Existing'
            while(~goodLoad)
                fprintf('Select .mat data file...\n');
                [settings.matFile,settings.matFilePath,filterIndexMatFile] = uigetfile([settings.matFilePath '*.mat'],...
                    'Open Data');
                
                if (filterIndexMatFile==0)
                    return
                else
                    fprintf('Opening file...');
                    try
                        %clear out globals so they can rewriten
                        if(ishandle(Figures.cells.handle))
                            close Figures.cells.handle
                        end
                    catch
                    end
    %                 CellFamilies = [];
    %                 CellTracks = [];
    %                 CellHulls = [];
    %                 HashedCells = [];
    %                 Costs = [];
    				rootImageFolder = CONSTANTS.rootImageFolder;
                    imageSignificantDigits = CONSTANTS.imageSignificantDigits;
    				
                    try
                        load([settings.matFilePath settings.matFile]);
                        fprintf('\nFile open.\n\n');
                    catch exception
                        %DEBUG -- Uncomment
                        %disp(exception);
                    end
                end
                
                CONSTANTS.rootImageFolder = rootImageFolder;
                CONSTANTS.imageSignificantDigits = imageSignificantDigits;
                InitializeConstants();
                
                if(exist('objHulls','var'))
                    fprintf('Converting File...');
                    ConvertTrackingData(objHulls,gConnect);
                    fprintf('\nFile Converted.\n');
                    CONSTANTS.datasetName = strtok(matFile,' ');
                    save([settings.matFilePath CONSTANTS.datasetName '_LEVer'],...
                        'CellFamilies','CellHulls','CellTracks','HashedCells','Costs','CONSTANTS');
                    fprintf(['New file saved as:\n' CONSTANTS.datasetName '_LEVer.mat']);
                    goodLoad = 1;
                elseif(exist('CellHulls','var'))
                    goodLoad = 1;
                else
                    errordlg('Data either did not load properly or is not the right format for LEVer.');
                    goodLoad = 0;
                end
            end
            
            %save out settings
            save('LEVerSettings.mat','settings');
            
            Figures.time = 1;
            
            LogAction(['Opened file ' settings.matFile],[],[]);
        otherwise
            return
    end
    
    % Add imagePixels field to CellHulls structure (and resave in place)
    if ( ~isfield(CellHulls, 'imagePixels') )
        fprintf('Adding Image Pixel Information...\n');
        AddImagePixelsField();
        fprintf('Image Information Added\n');
        save([settings.matFilePath settings.matFile],...
            'CellFamilies','CellHulls','CellTracks','HashedCells','Costs','CONSTANTS');
    end
    
    opened = 1;
    
    if (~strcmp(imageDataset,CONSTANTS.datasetName))
        warndlg({'Image file name does not match .mat dataset name' '' 'LEVer may display cells incorectly!'},'Name mismatch','modal');
    end
    
    end