SW/pygolem/golem_data.m

function [tvec, data, d] = golem_data(shot, diagn)
%     Simple interface for GOLEM database
%     Use: [tvec, data] = golem_data(10011, 'loop_voltage')
%           plot(tvec, data)
%      tvec  - time vector Nx1
%      data - data matrix  NxM
%      d - object containing all availible informations
% 
%     Example:
%     [tvec,data,obj1] = golem_data(10689 , 'electron_temperature');
%     [~,~,obj2] = golem_data(10689 , 'spectrometr\temperature');
%     hold all
%     plot(tvec,data)  %    or use object: plot(obj1.tvec, obj1.data)
%     errorbar(obj2.tvec, obj2.data,obj2.data_err(:,1), obj2.data_err(:,2) )
%     xlabel(obj2.ax_labels(1,:))
%     ylabel(obj2.ax_labels(2,:))
%     legend({obj1.name, obj2.name})
%     axis([obj1.plasma_start, obj1.plasma_end, 0, inf])
%     title(obj1.info)
%     hold off
        
    addr_prefix='http://golem.fjfi.cvut.cz/utils/data/';
    temp = 'temp/';
    if ~exist(temp, 'file')
        mkdir(temp);
    end
    local_file = [temp, diagn, '_', int2str(shot), '.mat'];
    remote_file = [addr_prefix, int2str(shot), '/',diagn, '.mat '];
 
    if ~ exist(local_file, 'file')
        urlwrite(remote_file, local_file);
    end
    try
        d = load(local_file);
    catch
        error(['Missing diagnostic ', diagn, ' in shot ', num2str(shot)])
        tvec = []; data=[]; d=[];
        return
    end
    data = d.data;
    if isfield(d, 'tvec')
        tvec = d.tvec;
    elseif isfield(d, 't_start')
        tvec = linspace(d.t_start, d.t_end, length(data))';
    else
        tvec = [];
    end    
    d.tvec = tvec;
end