function buildMSTTree(IM)
%MSTTREE=buildMSTTree(IM)
% Побудова координат вершин мінімального остівного дерева
% Вхід:
%    IM - матриця інцидентностей графа
% Вихід:
%    MSTTree - набір координат вершин дерева

if (nargin==0)
    [filename,pathname]=uigetfile(...,
        {'*.tss;*.txt', 'Файл с временными рядами'},'Выберите файл');
    if (filename==0)
        disp 'Не выбран файл и не передана матрица для обработки'
        return;
    end
    % шукаємо кінець розширення файла
    [m,n]=size(filename);
    i=n;
    while (i>1) && (filename(1,i)~='.') i=i-1; end
    % якщо розширення немає - виходимо
    if (i<1) disp 'Файл не имеет расширения'; return; end
    % беремо лише ім"я файла і дописуємо розширення '.nm'
    filename2=[filename(1,1:i) 'nm'];
    DATAS=load([pathname '\' filename]);
    [SYMBOLS,NAMES,SECTORS]=textread([pathname '\' filename2],'%s%s%s','delimiter','\t');
    IM=buildMSTIMatrix(chooseFrameEdges(getEdges(buildD(buildC(DATAS)))));
    [IMNames,IMSectors]=getDiffSectors(SYMBOLS,SECTORS);
end

% визначаємо кількість вузлів (розмір матриці)
[n,n]=size(IM);
% створюємо константи, що знадобляться при роботі програми
INDEX=1; LEVEL=2; SONS=3; PARENT=4; VALUE=5; DEPTH=6;
XCOORD=7; YCOORD=8; START_ANGLE=9; END_ANGLE=10; MIDDLE_ANGLE=11; SECTOR=12;
% Визначаємо вузол із найбільшою кількістю синів і заносимо інформацію про нього
[vMax,iMax]=max(sum(IM~=0));
% БУДУЄМО МАТРИЦЮ З ІНФОРМАЦІЄЮ ПРО ВУЗЛИ
VERTEXES=buildMSTTree_getVInfo(IM,vMax(1,1),iMax(1,1));
% ТЕПЕР МАТРИЦЯ ІНЦИДЕНТНОСТЕЙ ОБРОБЛЕНА І ПОБУДОВАНО МАТРИЦЮ VERTEXES
clear vMax iMax

% ЗНАХОДИМО КООРДИНАТИ ВЕРШИН
XCOORD=1; YCOORD=2; START_ANGLE=3; END_ANGLE=4; MIDDLE_ANGLE=5;

% знаходимо кількість вершин усього
[m,n]=size(VERTEXES);
% створюємо матрицю для зберігання координат усіх вершин
VERTEX_COORDS=zeros(5,n);
VERTEX_COORDS(START_ANGLE,1)=0; VERTEX_COORDS(END_ANGLE,1)=2*pi;

% знаходимо усі вершини наступних рівнів
VERTEX_COORDS=buildMSTTree_getLevelsCoord(VERTEXES,VERTEX_COORDS);
% об"єднуємо матриці VERTEXES та VERTEX_COORD

%MSTTREE=[VERTEXES; VERTEX_COORDS; IMSectors];
%MSTTREE{1}=MSTTREE;
%MSTTREE{2}=IMNames;

MSTTREE=struct('NUMBERS',[VERTEXES; VERTEX_COORDS; IMSectors], 'NAMES',IMNames);

plotMSTTree(MSTTREE);
