<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki-pnb.eri.ucsb.edu/index.php?action=history&amp;feed=atom&amp;title=Calspec.m</id>
	<title>Calspec.m - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-pnb.eri.ucsb.edu/index.php?action=history&amp;feed=atom&amp;title=Calspec.m"/>
	<link rel="alternate" type="text/html" href="https://wiki-pnb.eri.ucsb.edu/index.php?title=Calspec.m&amp;action=history"/>
	<updated>2026-06-11T13:31:47Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.34.0</generator>
	<entry>
		<id>https://wiki-pnb.eri.ucsb.edu/index.php?title=Calspec.m&amp;diff=322&amp;oldid=prev</id>
		<title>Eriks at 20:24, 17 March 2011</title>
		<link rel="alternate" type="text/html" href="https://wiki-pnb.eri.ucsb.edu/index.php?title=Calspec.m&amp;diff=322&amp;oldid=prev"/>
		<updated>2011-03-17T20:24:13Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 20:24, 17 March 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l188&quot; &gt;Line 188:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 188:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;%add legends  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;%add legends  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;\&lt;/del&gt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;/&lt;/ins&gt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[calspec]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[calspec]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Eriks</name></author>
		
	</entry>
	<entry>
		<id>https://wiki-pnb.eri.ucsb.edu/index.php?title=Calspec.m&amp;diff=321&amp;oldid=prev</id>
		<title>Eriks: Created page with '&lt;pre&gt; % Title:        CALSPEC.M % Date:         02/2000 % Author:       EB/SRW % Input:        list_file:string % Output:       [returns:dimension] % Files:        list_file(qcal…'</title>
		<link rel="alternate" type="text/html" href="https://wiki-pnb.eri.ucsb.edu/index.php?title=Calspec.m&amp;diff=321&amp;oldid=prev"/>
		<updated>2011-03-17T20:23:49Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;#039;&amp;lt;pre&amp;gt; % Title:        CALSPEC.M % Date:         02/2000 % Author:       EB/SRW % Input:        list_file:string % Output:       [returns:dimension] % Files:        list_file(qcal…&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
% Title:        CALSPEC.M&lt;br /&gt;
% Date:         02/2000&lt;br /&gt;
% Author:       EB/SRW&lt;br /&gt;
% Input:        list_file:string&lt;br /&gt;
% Output:       [returns:dimension]&lt;br /&gt;
% Files:        list_file(qcal.txt), calfile.txt&lt;br /&gt;
% Assumes:      list_file in local dir with file names and intervals,&lt;br /&gt;
%               calibration files are in the local directory,&lt;br /&gt;
%               header of ac9.dat files end with 'aquisition binsize',&lt;br /&gt;
% Purpose:      calculate spectral average of calibration file&lt;br /&gt;
% Calls:        &lt;br /&gt;
% Uses:         ac9 calibration&lt;br /&gt;
% Example:      calsec('qcal.txt')&lt;br /&gt;
% NOTES:        &lt;br /&gt;
% 02/2000&lt;br /&gt;
% Wetlabs recommends calibrating a,c separately therefore this needs&lt;br /&gt;
% to be modified to accomodate ac9.dat files that don't have a or c.&lt;br /&gt;
% Need a channel flag and then place error flags in the unused signal.&lt;br /&gt;
&lt;br /&gt;
%function fig=calspec(list_file,autorun,filetype,prop)&lt;br /&gt;
function fig=calspec(varargin)&lt;br /&gt;
  [ac9calfig,ac9]=ac9cal;&lt;br /&gt;
  %assign command line parameters to local variables&lt;br /&gt;
  narg=length(varargin);&lt;br /&gt;
  nrow=narg/2;&lt;br /&gt;
  if nrow==round(nrow),&lt;br /&gt;
    for iarg=1:2:length(varargin),&lt;br /&gt;
      eval(['ac9.par.' varargin{iarg} '= varargin{iarg+1};']);&lt;br /&gt;
    end&lt;br /&gt;
  else&lt;br /&gt;
    display('calspec: command line pairs not correctly formed');&lt;br /&gt;
    return&lt;br /&gt;
  end&lt;br /&gt;
  if isempty(ac9.par.prop),&lt;br /&gt;
    msgbox('Select an IOP, rerun calspec');&lt;br /&gt;
    return&lt;br /&gt;
  end&lt;br /&gt;
  if isempty(ac9.par.fluid),&lt;br /&gt;
    msgbox('Select a fluid, rerun calspec');&lt;br /&gt;
    return&lt;br /&gt;
  end&lt;br /&gt;
  if ac9.par.fluid, % 1 for water&lt;br /&gt;
    if ~isfield(ac9.par,'instr_num'),&lt;br /&gt;
      msgbox('Select an AC9, rerun calspec');&lt;br /&gt;
      return&lt;br /&gt;
    end&lt;br /&gt;
    if ~isfield(ac9.par,'Tref'),&lt;br /&gt;
      msgbox('Select a factory cal, rerun calspec');&lt;br /&gt;
      return&lt;br /&gt;
    end&lt;br /&gt;
    Tref=ac9.par.Tref;&lt;br /&gt;
    if isempty(Tref),&lt;br /&gt;
      msgbox('Tref is empty, check factory cal, rerun calspec');&lt;br /&gt;
      return&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
  qcal=qcaled_cb('list_load','list_file',ac9.par.list_file)&lt;br /&gt;
&lt;br /&gt;
  fig=calspecplot(0);&lt;br /&gt;
  set(fig,'Userdata',ac9);&lt;br /&gt;
  calspecplot(1);&lt;br /&gt;
  &lt;br /&gt;
  filetext=qcal.FileText.str&lt;br /&gt;
  fileval=qcal.FileText.val&lt;br /&gt;
  channels=ac9.sort_channels;&lt;br /&gt;
  I=ac9.I; %index of channels from .dat file is sorted alphabetically&lt;br /&gt;
  ichannels=ac9.isort_channels; %index of channels in sorted array&lt;br /&gt;
for ifile=1:length(fileval), %size(udata.list.fname,1),&lt;br /&gt;
  if(fileval(ifile)&amp;gt;0),&lt;br /&gt;
    ival=fileval(ifile);&lt;br /&gt;
    file=deblank(qcal.list.fname(ifile,:))&lt;br /&gt;
    if filetext(ival,1)=='#',&lt;br /&gt;
      display('uncomment this file, save and rerun');&lt;br /&gt;
      break;&lt;br /&gt;
    end&lt;br /&gt;
    set(findobj('Tag','FileText'),'Value',ival);&lt;br /&gt;
    if ac9.par.filetype==1&lt;br /&gt;
      temp=read_ac9([file '.dat']);&lt;br /&gt;
      %temp=read_ac9(file);&lt;br /&gt;
      %eval(['temp=read_ac9('''   shrink(file)  '.dat'');']);&lt;br /&gt;
      temp=exciseit(temp,20);&lt;br /&gt;
    else&lt;br /&gt;
      temp=read_strip([file '.da2']);&lt;br /&gt;
      %eval(['temp=readstr('''  shrink(file)  '.da2'');']);&lt;br /&gt;
    end;&lt;br /&gt;
    minmin=str2num(qcal.list.t1(ifile,:)); % in decimal minutes&lt;br /&gt;
    maxmin=str2num(qcal.list.t2(ifile,:));&lt;br /&gt;
    if maxmin==0,&lt;br /&gt;
      maxmin=temp(end,1);&lt;br /&gt;
    end&lt;br /&gt;
    time=temp(:,1)/60000;&lt;br /&gt;
    range=find(time&amp;gt;minmin &amp;amp; time&amp;lt;maxmin);&lt;br /&gt;
    temp2=medfilt1(temp,15);&lt;br /&gt;
    if ac9.par.filetype==1&lt;br /&gt;
      chan2=temp2(range,2:19);&lt;br /&gt;
      ref2=temp2(range,24:41);&lt;br /&gt;
      itemp2=temp2(range,20);&lt;br /&gt;
    else&lt;br /&gt;
      chan2=temp2(range,3:20);&lt;br /&gt;
      ref2=temp2(range,24:41);&lt;br /&gt;
      itemp2=temp2(range,21);&lt;br /&gt;
    end;&lt;br /&gt;
    if ac9.par.fluid,&lt;br /&gt;
      %add wetlabs temperature correction&lt;br /&gt;
      %get Tcal from a list file&lt;br /&gt;
      Tcaldate=qcal.list.date(ifile,:)&lt;br /&gt;
      %Tcalfile=['watertemp_' ac9.par.instr_num '.txt'];&lt;br /&gt;
      Tcalfile=[ac9.par.instr_num ac9.par.Tcalfile];&lt;br /&gt;
      Tcalfile=fullfile(ac9.par.calroot_dir, ac9.par.instr_num, ...&lt;br /&gt;
			ac9.par.Tcaldir, Tcalfile);&lt;br /&gt;
      qcal.list.tcal=read_text(Tcalfile);&lt;br /&gt;
      find( datenum(Tcaldate)==datenum(parse(qcal.list.tcal,1)) );&lt;br /&gt;
      Tcal=0;&lt;br /&gt;
      if ~isempty(ans),&lt;br /&gt;
	Tcal=parse(qcal.list.tcal(ans(1),:),2);&lt;br /&gt;
	%add cal check&lt;br /&gt;
	if ~strcmp(Tcal,'Reserved');&lt;br /&gt;
	  Tcal=str2num(Tcal)&lt;br /&gt;
	else&lt;br /&gt;
	  msgbox('Enter Tcal into line 5 of the qcal.txt and rerun');&lt;br /&gt;
	  close(fig);&lt;br /&gt;
	  return&lt;br /&gt;
	end&lt;br /&gt;
      else&lt;br /&gt;
	qcal.list.tcal&lt;br /&gt;
	disp(['Tcaldate is not in this list, check ' Tcalfile]);&lt;br /&gt;
	return&lt;br /&gt;
      end&lt;br /&gt;
      if Tcal&amp;gt;0,&lt;br /&gt;
	del_ts=ac9.par.sit*(Tcal-ac9.par.Tref);&lt;br /&gt;
	del_ts=[del_ts del_ts];&lt;br /&gt;
	for irow=1:size(chan2,1),&lt;br /&gt;
	  chan2(irow,:)=chan2(irow,:)-del_ts(I);&lt;br /&gt;
	end&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
    chan3=mean(chan2);&lt;br /&gt;
    specdata=mean(chan2);&lt;br /&gt;
    stddata=std(chan2);&lt;br /&gt;
    ndata=size(chan2,1);&lt;br /&gt;
    udata=get(fig,'Userdata');&lt;br /&gt;
    udata.data(ifile).file=file;&lt;br /&gt;
    udata.data(ifile).specdata=specdata(I(ichannels));&lt;br /&gt;
    udata.data(ifile).specdata;&lt;br /&gt;
    udata.data(ifile).nspecdata=udata.data(ifile).specdata - ...&lt;br /&gt;
	udata.data(ifile).specdata(6);&lt;br /&gt;
    udata.data(ifile).stddata=stddata(I(ichannels));&lt;br /&gt;
    udata.data(ifile).inttemp=mean(exciseit(itemp2,0,-1000,1000));&lt;br /&gt;
    udata.data(ifile).ndata=ndata*ones(1,9);&lt;br /&gt;
    set(fig,'Userdata',udata);&lt;br /&gt;
    udata.han=calspecplot(2)&lt;br /&gt;
    set(fig,'Userdata',udata);&lt;br /&gt;
    calspecplot(3)&lt;br /&gt;
    calspecplot(4)&lt;br /&gt;
    leg_names =('');&lt;br /&gt;
    leg_names=strvcat(leg_names,strrep(udata.data(ifile).file,'_','\_'))&lt;br /&gt;
   &lt;br /&gt;
    if ~ac9.par.autorun&lt;br /&gt;
      disp('press return key or go button for next plot');&lt;br /&gt;
      uiwait(fig);&lt;br /&gt;
      if isempty(get(findall(0,'Tag','goBut'),'Userdata')),&lt;br /&gt;
	break&lt;br /&gt;
      end&lt;br /&gt;
    end;&lt;br /&gt;
  end&lt;br /&gt;
end %ifile&lt;br /&gt;
figure(fig);&lt;br /&gt;
udata.leg_names=leg_names;&lt;br /&gt;
a=legend(udata.han,udata.leg_names,-1);&lt;br /&gt;
udata.legend=a;&lt;br /&gt;
set(fig,'Userdata',udata);&lt;br /&gt;
%Query list_file save and write mean value files&lt;br /&gt;
ButtonName=questdlg('Save list_file and write mean value files?');&lt;br /&gt;
switch ButtonName,&lt;br /&gt;
 case 'Yes',&lt;br /&gt;
  qcaled_cb('save');&lt;br /&gt;
  for ifile=1:size(udata.data,2),&lt;br /&gt;
    ispec=[udata.par.wave;&lt;br /&gt;
	   udata.data(ifile).specdata;&lt;br /&gt;
	   udata.data(ifile).stddata;&lt;br /&gt;
 	   udata.data(ifile).ndata];&lt;br /&gt;
    save([udata.data(ifile).file '.txt'],'ispec','-ascii')&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
%TODO&lt;br /&gt;
&lt;br /&gt;
%add legends &lt;br /&gt;
&amp;lt;\pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[calspec]]&lt;/div&gt;</summary>
		<author><name>Eriks</name></author>
		
	</entry>
</feed>