function callHemoStart(convFiles,callFirst,callViablility,useKnownBounds)
    [startHour, expDate, survivalFile, expBox] = pullFileInfo(convFiles);
    % load expmt struct
    load(convFiles{1});
    survival = readtable(survivalFile);

    % Configuration for hemo transfusion experiments
    xlswrite(survivalFile,{'First_mvmt'},1,'P1');
    xlswrite(survivalFile,{'Auto_notes'},1,'Q1');

    roi_max = size(expmt.Centroid.data,3);
    localT = convertToLocalTime(expmt, startHour);
    expDir = getParentDir(convFiles{1});

    for roi = (1:roi_max) 
        if ~strcmp(survival{roi,'Deets'},'empty') && strcmp(survival{roi,'Rx'},'Injected')
            fig = figure();
            set(fig,'defaultAxesColorOrder',[0 0 0;0 0 0]);
            hold on;
            set(gcf, 'Position',  [0, 50, 1900, 950])

            %Determine min and max y values for flies in row (assumes
            %that at least one fly/row has sampled upper y bound and one
            %has sampled lower y bound
            if useKnownBounds
                currRow = survival{roi,'Row'};
                neighborInd = survival{:,'Row'}==currRow;
                minY = min(min(squeeze(expmt.Centroid.data(:,2,neighborInd))));
                maxY = max(max(squeeze(expmt.Centroid.data(:,2,neighborInd))));
                scaledHt = scaleKnownBoundary(expmt.Centroid.data(:,2,roi),minY,maxY);
            else
                scaledHt = scaleHt(expmt.Centroid.data(:,2,roi));
            end

            plot(scaledHt,'-k');
            ylabel('Y position');
            xlabel('Local time');
            title(num2str(roi));
            xtickangle(90);

            % Set ticks every hour starting from first frame
            set(gca,'xtick',1:3*3600*1:length(expmt.Centroid.data)); 
            set(gca,'xticklabel',round(localT(1),1):1:round(localT(length(expmt.Centroid.data)),1)); % Label ticks with "local time" hours
            xlim([1 length(expmt.Centroid.data)]);
            ylim([0 1]);

            try
                firstMvmt = survival{roi,'First_mvmt'};
                scatter(firstMvmt,1,'g*');
            catch
                firstMvmt = 0;
            end

            if ~callFirst
                mvmtFound = 1;
            else
                mvmtFound = 0;
            end

            while mvmtFound == 0
                answer = questdlg(['Accept ',num2str(firstMvmt),' as time of first mvmt?'],...
                            'Determine first movement',...
                            'Yes','No','Yes');
                switch answer
                    case 'Yes'
                        xlswrite(survivalFile,firstMvmt,1,strcat('P',num2str(roi+1)));
                        mvmtFound = 1;
                    case 'No'
                        pause;
                        firstMvmt = ginput(1);
                        firstMvmt = round(firstMvmt(1));
                        scatter(firstMvmt,1,'g*');
                    case 'Cancel'
                        break;
                end
            end

            if callViablility        
                badTrace = questdlg('Is this fly viable?',...
                                'Viable fly?',...
                                'Yes','No','Yes');
                switch badTrace
                    case 'Yes' 
                    case 'No'
                        xlswrite(survivalFile,{'drop'},1,strcat('Q',num2str(roi+1)));
                        title(strcat(num2str(roi),'-DROP'));
                    case 'Cancel'
                        break;
                end
            else
                if strcmp(survival{roi,'Auto_notes'},'drop')
                    title(strcat(num2str(roi),'-DROP'));
                end   
            end

            set(gcf,'PaperUnits','inches','PaperPosition',[0 0 10 8]);
            print([expDir,'ROI-',num2str(roi)],'-dpng');  
            close();
        end    
    end    
end