Added source Matlab code for reference
This commit is contained in:
parent
b8af977117
commit
b5d99903d2
186 changed files with 61405 additions and 1 deletions
62
matlab/graph/@phyTree/getMatrix.m
Normal file
62
matlab/graph/@phyTree/getMatrix.m
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
function [cm lab dist] = getmatrix(tr,varargin)
|
||||
%GETMATRIX converts a Phytree Object into a relationship matrix.
|
||||
%
|
||||
% [MATRIX, ID, DISTANCES] = GETMATRIX(T) converts the phylogenetic tree
|
||||
% object T into a logical sparse matrix, where 1's indicate that a branch
|
||||
% node (row index) is connected to its child (column index). The child
|
||||
% can be either another branch node or a leaf node. ID is a list of the
|
||||
% labels that correspond to the rows and columns of MATRIX, first the
|
||||
% leaf nodes from 1 to NUMLEAVES, then the branch nodes from NUMLEAVES+1
|
||||
% to NUMLEAVES+NUMBRANCHES, being the root the last node. DISTANCES is
|
||||
% a column vector with one entry for every nonzero entry in MATRIX
|
||||
% traversed columnwise and representing the distance between the branch
|
||||
% node and the child.
|
||||
%
|
||||
% Example:
|
||||
%
|
||||
% T = phytreeread('pf00002.tree')
|
||||
% [MATRIX ID DIST] = getmatrix(T);
|
||||
%
|
||||
% See also PHYTREE, PHYTREE/GET, PHYTREE/PDIST, PHYTREE/PRUNE, PHYTREETOOL.
|
||||
|
||||
% Copyright 2006 The MathWorks, Inc.
|
||||
% $Revision: 1.1.6.1 $ $Date: 2006/06/16 20:06:43 $
|
||||
|
||||
|
||||
%%% check arguments
|
||||
if nargin > 1
|
||||
if rem(nargin,2) == 0
|
||||
error('Bioinfo:phytree:getmatrix:IncorrectNumberOfArguments',...
|
||||
'Incorrect number of arguments to %s.',mfilename);
|
||||
end
|
||||
okargs = {'no_input_arguments'};
|
||||
for j=1:2:nargin-2
|
||||
pname = varargin{j};
|
||||
pval = varargin{j+1};
|
||||
if(isstruct(pval))
|
||||
error('Bioinfo:phytree:getmatrix:StructParamError',...
|
||||
'parameter cannot be a struct');
|
||||
end
|
||||
k = find(strncmpi(pname, okargs,length(pname)));
|
||||
if isempty(k)
|
||||
error('Bioinfo:phytree:getmatrix:UnknownParameterName',...
|
||||
'Unknown parameter name: %s.',pname);
|
||||
elseif length(k)>1
|
||||
error('Bioinfo:phytree:getmatrix:AmbiguousParameterName',...
|
||||
'Ambiguous parameter name: %s.',pname);
|
||||
else
|
||||
switch(k)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
numLeaves = size(tr.tree,1)+1;
|
||||
numNodes = numLeaves + numLeaves -1;
|
||||
cm = sparse(repmat(numLeaves+1:numNodes,1,2),tr.tree(:),true,numNodes,numNodes);
|
||||
if nargout>1
|
||||
lab = tr.names;
|
||||
end
|
||||
if nargout>2
|
||||
dist = tr.dist;
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue