how i can have an adjacency matrix only contains 0 and 1
3 views (last 30 days)
Show older comments
fereshteh izadi
on 9 Jan 2016
Commented: fereshteh izadi
on 11 Jan 2016
hello
i have a data frame, i convert that to an adjacency matrix but the adjacency matrix contains 2 while i need only 1 and 0..how i can have an adjacency matrix only contains 1 and 0 please?
this is my data frame
TFLocus TargetLocus InteractionType
AT5G10140 AT1G65480 -1
AT5G11260 AT1G27480 -1
AT5G11260 AT5G53370 -1
AT5G11260 AT1G03630 -1
AT5G11260 AT1G13600 -1
AT5G11260 AT2G41670 -1
AT5G11260 AT2G05160 -1
AT5G11260 AT2G40170 -1
by this code i have an adjacency matrix contains 0 and 1 and 2 ..
fid = fopen('Ara_GoldST.txt', 'rt');
datacell = textscan(fid, '%s%s%d', 'HeaderLines', 1);
fclose(fid);
TFLocus = datacell{1};
TargetLocus = datacell{2};
all_locus = unique([TFLocus; TargetLocus]);
num_locus = length(all_locus);
[~, TFidx] = ismember(TFLocus, all_locus);
[~, Targidx] = ismember(TargetLocus, all_locus);
adj_matrix = accumarray([TFidx(:), Targidx(:)], datacell{3}, [num_locus, num_locus]);
csvwrite('myfile.txt', adj_matrix);
%max(adj_matrix)
%min(adj_matrix)
thank you
4 Comments
Accepted Answer
Walter Roberson
on 9 Jan 2016
adj_matrix = adj_matrix > 0;
2 Comments
Guillaume
on 10 Jan 2016
Alternatively, you could rewrite the accumarray call to:
adj_matrix = accumarray([TFidx(:), Targidx(:)], 1, [num_locus, num_locus], @(~) 1);
Or to:
adj_matrix = accumarray([TFidx(:), Targidx(:)], 1, [num_locus, num_locus], @prod);
More Answers (0)
See Also
Categories
Find more on Large Files and Big Data in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!