Skip to content

Commit

Permalink
some clean-up
Browse files Browse the repository at this point in the history
  • Loading branch information
xavierr committed Jan 18, 2024
1 parent c052b8e commit 47a7601
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 117 deletions.
4 changes: 2 additions & 2 deletions Utilities/ComputationalGraph/ComputationalGraphPlot.m
Original file line number Diff line number Diff line change
Expand Up @@ -188,12 +188,12 @@

case 'addParents'

nodeinds = getDependencyVarNameInds2(cgp.nodeinds, A);
nodeinds = getDependencyVarNameInds(cgp.nodeinds, A);
cgp.nodeinds = unique(nodeinds);

case 'addChildren'

nodeinds = getDependencyVarNameInds2(cgp.nodeinds, A');
nodeinds = getDependencyVarNameInds(cgp.nodeinds, A');
cgp.nodeinds = unique(nodeinds);

otherwise
Expand Down
2 changes: 1 addition & 1 deletion Utilities/ComputationalGraph/ComputationalGraphTool.m
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ function printDependencyList(cgt, varname)

varnameind = cgt.getVarNameIndex(varname);

[~, propfuncinds, propvarnameinds, staticinds] = getDependencyVarNameInds2(varnameind, A);
[~, propfuncinds, propvarnameinds, staticinds] = getDependencyVarNameInds(varnameind, A);

[staticinds, staticpropinds] = cgt.findStaticVarNameInds(staticinds);

Expand Down
53 changes: 36 additions & 17 deletions Utilities/ComputationalGraph/getDependencyVarNameInds.m
Original file line number Diff line number Diff line change
@@ -1,26 +1,45 @@
function depvarnameinds = getDependencyVarNameInds(varnameinds, A, varargin)
% for given list of index varnameinds, returns a list with index of nodes
function [depvarnameinds, propfuncinds, propvarnameinds, staticinds] = getDependencyVarNameInds(varnameinds, A)

[propfuncinds, propvarnameinds, staticinds] = getDependencyVarNameIndsRecursive(varnameinds, [], [], [], A);

opt = struct('oneParentOnly', false);
opt = merge_options(opt, varargin{:});
depvarnameinds = [staticinds; propvarnameinds];

depvarnameinds = [];
for inode = 1 : numel(varnameinds)
node = varnameinds(inode);
depvarnameinds = vertcat(depvarnameinds, node);
parentnodes = find(A(:, node)');
if any(parentnodes)
if ~(opt.oneParentOnly)
depvarnameinds = vertcat(depvarnameinds, getDependencyVarNameInds(parentnodes, A));
else
depvarnameinds = vertcat(depvarnameinds, parentnodes');
end
end
end
end

function [propfuncinds, propvarnameinds, staticinds] = getDependencyVarNameIndsRecursive(varnameinds, propfuncinds, propvarnameinds, staticinds, A)
% for given list of index varnameinds, returns a list with index of nodes

depvarnameinds = [];

for ivar = 1 : numel(varnameinds)

varnameind = varnameinds(ivar);
c = A(:, varnameind);

if all(c == 0)
% no dependency
staticinds = vertcat(staticinds, varnameind);
else
% the non-zero entry in the column is is unique and give the index of the property function

propfuncind = max(c);

depvarnameinds = vertcat(depvarnameinds, find(c));
propfuncinds = vertcat(propfuncind, propfuncinds);
propvarnameinds = vertcat(varnameind, propvarnameinds);

end

end

if ~isempty(depvarnameinds)

varnameinds = depvarnameinds;
[propfuncinds, propvarnameinds, staticinds] = getDependencyVarNameIndsRecursive(varnameinds, propfuncinds, propvarnameinds, staticinds, A);

end

end


%{
Expand Down
63 changes: 0 additions & 63 deletions Utilities/ComputationalGraph/getDependencyVarNameInds2.m

This file was deleted.

34 changes: 0 additions & 34 deletions Utilities/ComputationalGraph/getDependencyVarNameIndsByName.m

This file was deleted.

0 comments on commit 47a7601

Please sign in to comment.