Skip to content

Commit

Permalink
Remove stratum processing, clean HabCam density
Browse files Browse the repository at this point in the history
  • Loading branch information
TCallaghan2 committed Jul 26, 2024
1 parent 53308a7 commit 644b300
Show file tree
Hide file tree
Showing 16 changed files with 242 additions and 711 deletions.
1 change: 0 additions & 1 deletion Configuration/Simulation/Scallop.cfg
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# input file for Scallops
Time steps per Year = 13
Save By Stratum = T
Use HabCam Data = T
# Configuration files are expected to be in the Configuration directory
Mortality Config File = Growth.cfg
Expand Down
24 changes: 0 additions & 24 deletions Data/ScallopPrice.csv

This file was deleted.

14 changes: 6 additions & 8 deletions PreProcess/HabCamData5mmbin.m
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,11 @@ function HabCamData5mmbin(yrStart, yrEnd, domain)
if isOctave
M=csvreadK(dataFile);
if ~strcmp(domain, 'AL')
area = M(:,15);
lon = M(:,lonCol);
if strcmp(domain, 'GB')
j = area == 'GBK';
j = lon > -70.5
else
j = area == 'MAB';
j = lon <= -70.5;
end

%------- new M with just MA or GB ----------------------
Expand All @@ -73,7 +73,9 @@ function HabCamData5mmbin(yrStart, yrEnd, domain)
year = table2array(M(:,yearCol));
sg = table2array(M(:,sqmCol));
end
Detect=.4;
% convert count to density
detect=.4;
M(:,svCol) = (detect * M(:,svCol)) ./ M(:,sqmCol);

for yr=yrStart:yrEnd
X=[];
Expand Down Expand Up @@ -105,8 +107,6 @@ function HabCamData5mmbin(yrStart, yrEnd, domain)
xutm_t = M(j,utmxCol);
yutm_t = M(j,utmyCol);
area_t = M(j,areaCol);
% Compute density
M(j,svCol) = M(j,svCol) ./ M(j,sqmCol);
else
stratum_t = M(j,stratumCol);
is_closed_t = M(j,clopCol);
Expand All @@ -123,8 +123,6 @@ function HabCamData5mmbin(yrStart, yrEnd, domain)
xutm_t = M(j,utmxCol);
yutm_t = M(j,utmyCol);
area_t = M(j,areaCol);
% Compute density
M(j,svCol) = M(j,svCol) ./ M(j,sqmCol);
end

n=find(and(year==yr,sg==3.));
Expand Down
102 changes: 51 additions & 51 deletions PreProcess/ProcessRecruitData.m
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
function ProcessRecruitData(yrStart, yrEnd, domain, useHabCam)
function ProcessRecruitData(yrStart, yrEnd, domain)

isOctave = (exist('OCTAVE_VERSION', 'builtin') ~= 0);
if isOctave
Expand All @@ -8,24 +8,18 @@ function ProcessRecruitData(yrStart, yrEnd, domain, useHabCam)
yrStart = str2num(cell2mat(arg_list(1)));
yrEnd = str2num(cell2mat(arg_list(2)));
domain = cell2mat(arg_list(3));
useHabCam = cell2mat(arg_list(4));
else
yrStart = str2num(yrStart);
yrEnd = str2num(yrEnd);
end
end

useHC = strcmp(useHabCam, 'T');

if ~strcmp(domain, 'GB') & ~strcmp(domain, 'MA') & ~strcmp(domain, 'AL')
fprintf( 'Invalid Domain %s\n', domain);
fprintf( "Use: 'MA' or 'GB' or 'AL'\n" )
return;
end

towArea_sqm = 4516;
T2M2=1./towArea_sqm;

Detect=.4;
DetectRS=.27;
DetectHD=.13;
Expand All @@ -37,17 +31,23 @@ function ProcessRecruitData(yrStart, yrEnd, domain, useHabCam)
dayCol = 3;
latCol = 4;
lonCol = 5;
depthCol = 6;
recrCol = 7
utmxCol = 6;
utmyCol = 7;
depthCol = 8;
recrCol = 9; % recruit units are scallops/m^2
fprintf('Reading from %s\n', flnm)

if isOctave
F=csvreadK(flnm);
year=F(:,yrCol);mon=F(:,monCol);day=F(:,dayCol);
year=F(:,yrCol);
mon=F(:,monCol);
day=F(:,dayCol);
else
warning('OFF', 'MATLAB:table:ModifiedAndSavedVarnames')
F= readtable(flnm,"FileType","text");
year=table2array(F(:,yrCol));mon=table2array(F(:,monCol));day=table2array(F(:,dayCol));
year=table2array(F(:,yrCol));
mon=table2array(F(:,monCol));
day=table2array(F(:,dayCol));
end
% if NAN or blank, i.e. 0
j=find(isnan(mon));mon(j)=6;day(j)=21;% assign missing date to summer solstice
Expand All @@ -61,22 +61,28 @@ function ProcessRecruitData(yrStart, yrEnd, domain, useHabCam)
DecYr=year(:)+( yd(:)/365.25 );

if isOctave
lat=F(:,latCol);lon=F(:,lonCol);
Rec=F(:,recrCol);
lat=F(:,latCol);
lon=F(:,lonCol);
utmx=F(:,utmxCol);
utmy=F(:,utmyCol);
RecM2=F(:,recrCol);
Depth=F(:,depthCol);
else
lat=table2array(F(:,latCol));lon=-table2array(F(:,lonCol));
Rec=table2array(F(:,recrCol));
lat=table2array(F(:,latCol));
lon=table2array(F(:,lonCol));
utmx=table2array(F(:,utmxCol));
utmy=table2array(F(:,utmyCol));
RecM2=table2array(F(:,recrCol));
Depth=table2array(F(:,depthCol));
end

RecM2=Rec*T2M2;
M=[DecYr(:),lat(:),lon(:),Depth(:),RecM2(:)];
j=find(~isnan(sum(M')));M=M(j,:);
M=[DecYr(:),lat(:),lon(:),utmx(:),utmy(:),Depth(:),RecM2(:)];
j=find(~isnan(sum(M')));
M=M(j,:);
flnm='Data/RecruitsUnadjusted.csv';
header='"decmal year", "latitude", "longitude", "bottom depth(m)","recruits per m^2"';
header='"decimal year", "latitude", "longitude", "UTM x", "UTM y", "bottom depth(m)","recruits per m^2"';
fprintf('Writing to %s\n\n', flnm)
writecsv(M,flnm,['%g, %g, %g, %g, %e'],header);
writecsv(M,flnm,['%g, %g, %g, %g, %g, %g, %e'],header);


%XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Expand Down Expand Up @@ -120,7 +126,14 @@ function ProcessRecruitData(yrStart, yrEnd, domain, useHabCam)
F=table2array(readtable(flnm,'PreserveVariableNames', true));
end

[N,five]=size(F);lat=F(:,2);lon=F(:,3);DecYr=F(:,1);Depth=F(:,4);Rec=F(:,5);
[N,five]=size(F);
DecYr=F(:,1);
lat=F(:,2);
lon=F(:,3);
utmx=F(:,4);
utmy=F(:,5);
Depth=F(:,6);
Rec=F(:,7);
G = shaperead('ShapeFiles/Shellfish_Strata.shp');
IsRock=zeros(size(lat));
for k=1:NRS
Expand All @@ -141,11 +154,12 @@ function ProcessRecruitData(yrStart, yrEnd, domain, useHabCam)
j1=find(IsRock==1);
RecA(j0)=Rec(j0)/Detect;
RecA(j1)=Rec(j1)/DetectRS;
M=[DecYr(:),lat(:),lon(:),Depth(:),Rec(:),IsRock(:),RecA(:)];
j=find(~isnan(sum(M')));M=M(j,:);
M=[DecYr(:),lat(:),lon(:),utmx(:),utmy(:),Depth(:),Rec(:),IsRock(:),RecA(:)];
j=find(~isnan(sum(M')));
M=M(j,:);
flnm='Data/RecruitsRockStrataAdjustment.csv';
header='"decmal year", "latitude", "longitude", "bottom depth(m)","recruits per sq m raw","Is Rock Strata","recruits per sq m adjusted"';
writecsv(M,flnm,['%g, %g, %g, %g, %e, %i ,%e' ],header);
header='"decimal year", "latitude", "longitude", "UTM x", "UTM y","bottom depth(m)","recruits per sq m raw","Is Rock Strata","recruits per sq m adjusted"';
writecsv(M,flnm,['%g, %g, %g, %g, %g, %g, %e, %i ,%e' ],header);
fprintf('Writing to %s\n\n', flnm)

close all;
Expand Down Expand Up @@ -179,49 +193,35 @@ function ProcessRecruitData(yrStart, yrEnd, domain, useHabCam)
DecYr=F(:,1);
lat=F(:,2);
lon=F(:,3);
Depth=F(:,4);
rec=F(:,7);
utmx=F(:,4);
utmy=F(:,5);
Depth=F(:,6);
rec=F(:,9);
else
warning('OFF', 'MATLAB:table:ModifiedAndSavedVarnames')
F=readtable(flnm,"FileType","text");
DecYr=table2array(F(:,1));
lat=table2array(F(:,2));
lon=table2array(F(:,3));
Depth=table2array(F(:,4));
rec=table2array(F(:,7));
utmx=table2array(F(:,4));
utmy=table2array(F(:,5));
Depth=table2array(F(:,6));
rec=table2array(F(:,9));
end

if ~strcmp(domain, 'AL')
if strcmp(domain, 'GB')
j = lon>-70.5;
zone=19;
else
j = lon<=-70.5;
zone=18;
end
% preallocate
xx = lat(j);
yy = lon(j);
[xx, yy] = ll2utm(lat(j),lon(j),zone);

M=[DecYr(j), xx, yy, Depth(j), rec(j)];
M=[DecYr(j), utmx(j), utmy(j), Depth(j), rec(j)];
else
% preallocate
xx=lon;
yy=lat;
for i = 1:size(lon,1)
if lon(i)>-70.5
zone=19;
else
zone=18;
end
[xx(i),yy(i)]=ll2utm(lat(i),lon(i),zone);
end
M=[DecYr, xx, yy, Depth, rec];
M=[DecYr, utmx, utmy, Depth, rec];
end

flnm=['Data/Recruits', domain, '.csv'];
header='"decmal year", "x utm", "y utm", "bottom depth(m)","recruits per sq m"';
header='"decimal year", "utm x", "utm y", "bottom depth(m)","recruits per sq m"';
fprintf('Writing to %s\n', flnm)
writecsv(M,flnm,'%g, %f, %f, %f, %e',header);

Expand All @@ -245,7 +245,7 @@ function ProcessRecruitData(yrStart, yrEnd, domain, useHabCam)
M=table2array(F(j,:));
end
flnm=['Data/Recruits',int2str(yr),domain,'.csv'];
header='"decmal year", "x utm", "y utm", "bottom depth(m)","recruits per sq m"';
header='"decimal year", "utm x", "utm y", "bottom depth(m)","recruits per sq m"';
writecsv(M,flnm,'%g, %f, %f, %f, %e',header);
fprintf('Writing to %s. Number of records %d\n', flnm, size(M,1))
end
Expand Down
85 changes: 65 additions & 20 deletions PreProcess/PullOutRecruitData.m
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,13 @@ function PullOutRecruitData(src, useHabCam)
dayCol = find(strcmpi("day", header), 1);
latCol = find(strcmpi("lat" , header), 1);
lonCol = find(strcmpi("lon" , header), 1);
utmxCol = find(strcmpi("xutm" , header), 1);
utmyCol = find(strcmpi("yutm" , header), 1);
zCol = find(strcmpi("setdpth", header), 1);
sgCol = find(strcmpi("sizegrp", header), 1);
svCol = find(strcmpi("surv_n" , header), 1);
sqmCol = find(strcmpi("SQM" , header), 1);
srcText = 0;
srcCol = 16; % not used for HabCam data, srcText force to 0
flnm = 'OriginalData/Habcam_BySegment_2000_2014-2020.csv';
else
header = { "area","subarea","cruise6","year","month","day","time","stratum","tow","station",...
Expand All @@ -65,44 +66,88 @@ function PullOutRecruitData(src, useHabCam)
fprintf('Reading from %s\n', flnm)

if isOctave
F=csvreadK(flnm);
size_grp = F(:,sgCol);
survn = F(:,svCol);
dataSrc = F(:,srcCol);
F=csvreadK(flnm);
size_grp = F(:,sgCol);
survn = F(:,svCol);
if (useHC)
sqm = F(:,sqmCol);
else
dataSrc = F(:,srcCol);
end
else
warning('OFF', 'MATLAB:table:ModifiedAndSavedVarnames')
F= readtable(flnm,"FileType","text");
size_grp = table2array(F(:,sgCol));
survn = table2array(F(:,svCol));
dataSrc = table2array(F(:,srcCol));
warning('OFF', 'MATLAB:table:ModifiedAndSavedVarnames')
F= readtable(flnm,"FileType","text");
size_grp = table2array(F(:,sgCol));
survn = table2array(F(:,svCol));
if (useHC)
sqm = table2array(F(:,sqmCol));
else
dataSrc = table2array(F(:,srcCol));
end
end

if srcText == 0
% Area of survey is determined differently between HabCam and Dredge
% Dredge is a known size determined by width of dredge and tow length
% HabCam is determined from focal length and captured in the survey file in SQM column
if useHC
survn = survn ./ sqm;
n=find(size_grp==3);
recr = zeros(1, numel(n));
for k=1:numel(n)
% sum 3cm to 6 cm
recr(k) = sum(survn(n(k)+1:n(k)+6));
end
else
n=find(size_grp==3 & dataSrc==srcText);
end
recr = zeros(1, numel(n));
for k=1:numel(n)
% sum 3cm to 6 cm
recr(k) = sum(survn(n(k)+1:n(k)+6));
if srcText == 0
n=find(size_grp==3);
else
n=find(size_grp==3 & dataSrc==srcText);
end
recr = zeros(1, numel(n));
for k=1:numel(n)
% sum 3cm to 6 cm
recr(k) = sum(survn(n(k)+1:n(k)+6));
end
% convert recruits from count to density per square meters
towArea_sqm = 4516;
T2M2=1./towArea_sqm;
recr = recr * T2M2;
end

% Need to format file so that it has the same data regardless of source
if isOctave
recr_t = transpose(recr);
else
recr_t = array2table(transpose(recr),'VariableNames',{'rec'});
end

if srcText == 0
j=size_grp==4;
else
j=size_grp==4 & dataSrc==srcText;
end
if ~useHC
if useHC
utmX = F(j, utmxCol);
utmY = F(j, utmyCol);
else
% Correct sign of longitude
F(j,lonCol) = -F(j,lonCol);
lon = F(j,lonCol);
lat = F(j,latCol);

utmX = zeros(size(lon,1),1);
utmY = zeros(size(lon,1),1);

for i = 1:size(lon,1)
if lon(i)>-70.5
zone=19;
else
zone=18;
end
[utmX(i),utmY(i)]=ll2utm(lat(i),lon(i),zone);
end
end
M = [F(j,yearCol) F(j,monCol) F(j,dayCol) F(j,latCol) F(j,lonCol) F(j,zCol) recr_t];

M = [F(j,yearCol) F(j,monCol) F(j,dayCol) F(j,latCol) F(j,lonCol) utmX utmY F(j,zCol) recr_t];

flnm = 'OriginalData/NewRecruits.csv';

Expand Down
Loading

0 comments on commit 644b300

Please sign in to comment.