diff --git a/AdjustSEM.m b/AdjustSEM.m
new file mode 100644
index 0000000000000000000000000000000000000000..440009562b2e265b5a2db3e9b3521f0907c5c1a4
--- /dev/null
+++ b/AdjustSEM.m
@@ -0,0 +1,28 @@
+function [SEM] = AdjustSEM(SEM, type, replaceNan)
+
+if nargin<1, type='mean'; end
+if nargin<2, replaceNan=True; end
+
+validSEMs = ~isnan(SEM) & SEM~=0 & ~isinf(SEM);
+
+
+if strcmp(type,'mean')
+    SEMReplace=mean(SEM(validSEMs));
+elseif strcmp(type,'median')
+    SEMReplace=median(SEM(validSEMs));
+else
+    disp('Warning, not a valid selection')
+    invalidSEMs = false(size(SEM));
+    SEMReplace=nan;
+end
+
+if replaceNan
+    invalidSEMs = isnan(SEM) | SEM==0;
+else
+    invalidSEMs = SEM==0;
+end
+
+SEM(invalidSEMs) = SEMreplace;
+
+
+end
\ No newline at end of file
diff --git a/FindLeastSearched.m b/FindLeastSearched.m
new file mode 100644
index 0000000000000000000000000000000000000000..b57ce866e84ea6aac531b14e841d463c363a7328
--- /dev/null
+++ b/FindLeastSearched.m
@@ -0,0 +1,32 @@
+function [t, t2] = FindLeastSearched(path, modelName)
+files=dir(sprintf('%s/**/*%s*mat', path, modelName));
+if ~isempty(files)
+names={files.name}';
+a=regexp(names,'\[(.+)\]','tokens');
+a(cellfun(@isempty,a))=[];
+a = string(a);
+v=strtrim(split(a,',',2));
+t=array2table(v);
+t2=unique(t,'rows');
+v=join(v);
+minV=MinFrequency(v);
+minV = [minV(contains(minV,'min ') & contains(minV,' k')); minV]; %If doing parameter estimation, start with minimization 
+t(~strcmp(v,minV(1)),:)=[];
+t=t(1,:);
+else
+    t=[];
+    disp('no files found')
+end
+
+end
+
+function [minElement] = MinFrequency(variable)
+
+uniqueData = unique(variable);
+[~,w] = ismember(variable,unique(uniqueData));
+cellCount = hist(w,unique(w));
+% [~,indexToMinCellCount] = min(cellCount);
+% minElement = uniqueData(indexToMinCellCount);
+ind = cellCount ==min(cellCount);
+minElement = uniqueData(ind);
+end
\ No newline at end of file