ВИЗУАЛИЗАЦИЯ ВНУТРЕННЕГО ПРЕДСТАВЛЕНИЯ ПРОГРАММ НА ЯЗЫКЕ CLOUD SISAL

Д.С. Гордеев

Институт систем информатики им. А.П. Ершова Сибирского отделения Российской академии наук

gds@iis.nsk.su

 

Содержание

1. Введение

2. Язык программирования Cloud Sisal

3. Внутреннее представление IR1

3.1. GraphML представление

3.2. SVG представление

4. Преобразование GraphML в изображение

5. Результаты эксперимента

6. Заключение

Список литературы

 

Аннотация

В статье описывается метод визуализации внутреннего представления программ на языке Cloud Sisal, исследуемого в настоящее время в лаборатории конструирования и оптимизации программ института систем информатики им. А.П. Ершова СО РАН. Cloud Sisal является функциональным языком программирования, предназначенным для научных вычислений. Язык развивается в рамках проекта по созданию системы поддержки параллельного программирования для облачных вычислений в научных и образовательных целях. Развиваемый в настоящее время интерпретатор языка Cloud Sisal в силу реализации на JavaScript позволяет отлаживать программу средствами, доступными в большинстве используемых браузеров. При этом отладка программ на языке Cloud Sisal допустима на задачах малой размерности в рамках клиентского браузера, а отлаженные программы предназначены для исполнения на данных большой размерности с помощью супервычислителя. Программы на языке Cloud Sisal представимы в виде иерархических ориентированных ациклических графов. В качестве выходного представления интерпретатора выбран язык GraphML, предназначенный для описания графов. В данной статье для визуального представления графов программ предлагается использовать язык описания векторной графики SVG. Язык SVG поддерживается браузерами на уровне DOM и при этом является графическим форматом, допускающим построение иерархии элементов. Естественное включение SVG изображений в DOM позволяет при необходимости обеспечить интерактивное взаимодействие с элементами графа. В данной статье предложены формат представления иерархических графов на языке SVG и соответствующее XSLT-преобразование из GraphML и SVG.

 

Ключевые слова: научная визуализация, Sisal, Cloud Sisal, внутреннее представление, параллельные вычисления, функциональное программирование, облачные вычисления, graphml, svg, визуализация графов

 

Работа выполнена при частичной финансовой поддержке Российского фонда фундаментальных исследований (гранты РФФИ № 12-07-00091 и № 15-07-02029).


1. Введение

 

Создание высококачественного, переносимого программного обеспечения для параллельных компьютеров является нетривиальной задачей. Отчасти по причине сложности эффективного переноса программ, разработанных на последовательных компьютерах, на параллельные компьютеры. Отчасти по причине необходимости специфичных навыков, а также необходимости доступа к дорогостоящему оборудованию. Разрабатываемая в ИСИ СО РАН система поддержки параллельного программирования для облачных вычислений [1] призвана преодолеть этот барьер и предоставить широкому кругу прикладных программистов возможность разрабатывать высококачественные переносимые программы на своём рабочем месте. В основе системы поддержки параллельного программирования лежит язык Cloud Sisal [2], являющийся упрощённой версией языка Sisal 3.2 [3]. Язык Sisal разрабатывается как язык функционального программирования, специально ориентированный на параллельную обработку в научных вычислениях и на замену языка Фортран на суперкомпьютерах [1]. В настоящее время реализован транслятор переднего плана, преобразующий программу на языке Sisal во внутреннее представление IR1 [4]. Внутреннее представление IR1 является иерархическим ориентированным ациклическим графом [5], каждой вершине которого сопоставлены два упорядоченных множества входных и выходных портов. Программа на языке Sisal представляет собой описание как минимум одной функции. Вершины графа внутреннего представления соответствуют функциям, описываемым исходной Sisal-программой, а входные и выходные порты вершин, описывают входные параметры и выходные значения соответствующих функций.

В рамках работы над системой поддержки параллельного программирования требуется решить задачу визуализации Sisal-программ в целях обеспечения системы визуальными средствами отладки и в целях поддержки процесса обучения программированию. Визуализация изображения внутреннего представления может быть полезна для всестороннего понимания программ [6], при обучении программированию и поддержки отладочных средств. Построение изображения внутреннего представления может улучшить понимание сложных программ, алгоритмов и структур данных. При визуализации алгоритмов часто речь идёт об отражении динамической информации, позволяющей выразить характеристики алгоритма, связанные со временем исполнения нежели с его статической структурой. Такая информация может быть полезна при разработке и исследовании алгоритмов, для поддержки отладочного процесса и обучения программированию.

Существующие инструментальные средства построения изображений графов представлены преимущественно тремя типами: средства, основанные на встраиваемых браузерных плагинах, таких как Flash, Java-апплеты или Silverlight [21, 22, 23], средства, основанные на использовании JavaScript, SVG, HTML5 Canvas или WebGL [17, 18, 19, 20, 21] и автономные программные средства [24, 25]. Обычно средства визуализации графов позволяют работать с графовой моделью, в которой существуют вершины, дуги и атрибуты для дуг и вершин, а также работать с популярными форматами представления графов. Возможности визуализации иерархических ориентированных графов с портами не представлены.

Таким образом, возможность расширения существующего инструментария для построения интерактивных изображений графов программ и отсутствие удобных инструментальных средств визуализации графов с вершинами, оснащёнными точками входа и точками выхода дуг, определяют актуальность исследования и разработки методов визуализации архитектурно-независимых функционально-потоковых параллельных программ, порождающих такие графы.

Целью данной работы является разработка и исследование методов визуализации графов для применения их при построении интерактивных изображений внутреннего представления программ на языке Cloud Sisal. Интерактивные изображения внутреннего представления программ могут быть полезны как при отладке, так и при обучении программированию на языке Cloud Sisal. Для достижения поставленной цели требуется решить следующие задачи. Выбор и обоснование технологии, позволяющей строить изображения доступные для использования на широком множестве клиентских устройств без использования дополнительного программного обеспечения. Данная задача мотивирована тем, что система Cloud Sisal разрабатывается в виде облачного сервиса с использованием языка JavaScript, поддерживаемого большинством современных браузеров. Разработка методов взаимодействия с изображением, позволяющих получать, обрабатывать и отображать информацию об элементах изображения. Разработка методов динамической визуализации изображения, предназначенных для отражения процесса вычислений соответствующей программы.

С учётом специфических характеристик облачного сервиса поддержки программирования на языке Cloud Sisal решение задачи визуализации внутреннего представления должно обладать следующими свойствами. Граф внутреннего представления является иерархическим ориентированным ациклическим графом, вершины которого имеют выделенные упорядоченные множества точек входа и выхода дуг, входных и выходных портов, соответственно. Порты можно задать с помощью вершин специального типа, но было бы удобно, чтобы визуализатор позволял работать с портами естественным образом. Так как система является облачным сервисом, а значит должна быть доступна клиентским устройствам различного типа, то визуализатор должен обеспечивать технологическую возможность этого. В настоящее время происходит возрождение JavaScript, а также с развитием стандарта HTML5 улучшилась поддержка SVG. Поэтому наиболее предпочтительным вариантом технологического решения являются JavaScript вместе с SVG. Они уже поддерживаются всеми популярными клиентскими браузерами, и не требуют установки дополнительных модулей, таких как Java, Flash или Silverlight. Также визуализатор должен обладать возможностью строить интерактивные изображения, так как наличие такого свойства существенно влияет на качество понимания изображаемой информации.

В данной статье описывается метод визуализации внутреннего представления Cloud Sisal программ, позволяющий строить изображения графов IR1, пригодные для использования в облачной среде.

 

2. Язык программирования Cloud Sisal

 

Входным языком системы является язык Cloud Sisal [2], представляющий собой диалект языка Sisal 3.2 [3], предназначенный для реализации в системе облачных вычислений Cloud Sisal. Аббревиатура Sisal расшифровывается как "Streams and Iteration in a Single Assignment Language" (язык однократного присваивания с потоками и циклами). Изначально язык Sisal проектировался как функциональный высокоуровневый язык общего назначения для научных вычислений с акцентом на параллельное программирование [7].

Язык Sisal имеет следующие особенности. Многословный синтаксис, позволяющий подробно описывать решение задачи в форме программы, что упрощает долгосрочную поддержку. Однократное присваивание, что означает отсутствие переменных, позволяет избежать побочных эффектов и упростить анализ и распараллеливание программ. Циклические выражения, облегчающие запись матричных операций и операций с потоками, при этом нет явного понятия, соответствующего итерации последовательного цикла. Всюду завершающиеся частичные вычисления с использованием выделенных ошибочных значений, что приводит к отсутствию необходимости понятия исключительной ситуации. Поддержка взаимодействия с языком C, что позволяет использовать существующие реализации вычислительных алгоритмов.

Программа на языке Sisal транслируется во внутреннее представление IR1 [4], описываемое графом потока данных. Граф IR1 является иерархическим ориентированным ациклическим графом [5]. Вершины графа имеют упорядоченные множества входных и выходных портов. Вершины графа соответствуют описанным в программе функциям, входные и выходные порты формальным параметрам и значениям функций, соответственно. В языке Sisal функции могут возвращать несколько значений. Дуги графа соединяют порты вершин и описывают передачу данных между функциями, соответствующими этим вершинам графа.

 

3. Внутреннее представление IR1

 

Внутреннее представление программы на языке Sisal может быть описано в виде иерархического ориентированного ациклического графа [4]. Вершины такого графа соответствуют функциям, описанным на языке программирования Sisal. Дуги в таком графе отражают передачу данных между функциями. В рассматриваемых графах также выделяется сущность порта, экземпляры которой следует интерпретировать как аргументы функций или значения функций. Таким образом каждой вершине соответствуют упорядоченные множества входных и выходных портов. Множество входных портов может быть пустым для вершин представляющих константные значения или функции без параметров. Множество выходных портов должно содержать по крайне мере один элемент. Дуги в графе существуют только между выходными и входными портами. Причём из одного выходного порта может выходить несколько дуг, а во входной порт может входить ровно одна дуга. При визуализации вершины обычно представляются геометрическими фигурами, такими как прямоугольники, окружности или более сложные многоугольники. Дуги часто представлены в виде ломаных или гладких кривых. Порты, в зависимости от применения изображения графа, могут отображаться с помощью кругов или квадратов размера меньшего, чем размер фигур, изображающих вершины. Причём обычно порты располагаются на границах многоугольников, представляющих вершины. При формулировке решения задачи с помощью языка программирования часто функции вызывают другие функции. На на графе внутреннего представления это отражается наличием вложенных графов, являющихся метками вершин [5]. Таким образом задаётся иерархия в графе внутреннего представления.

 

3.1. GraphML представление

 

При обработке исходного текста Sisal программ построение внутреннего представления является одним из начальных шагов в решении задачи трансляции. Возникает необходимость передать внутреннее представление между компонентами системы программирования, например, между транслятором переднего плана и транслятором заднего плана. При этом требуется обеспечить независимость от платформы, на которой компоненты реализованы. Для представления графов часто используется известный формат GraphML [8, 9]. GraphML является языком описания графов, основанным на языке XML. В языке GraphML поддерживаются специальные теги для обозначения вершин и дуг. А так как GraphML является подмножеством расширяемого языка XML, в GraphML возможно добавить теги для обозначения портов. Связь в графе IR1 между портами вершин в GraphML представлении выражается с помощью атрибутов тегов, обозначающих дуги. Например, IR1 граф внутреннего представлении функции сложения двух чисел может быть представлен следующим образом.

 

<graphml>
    <graph id="ir1" edgedefault="directed">
        <node id="n0">
            <data key="type">function</data>
            <data key="name">Main</data>
            <graph id="n0:" edgedefault="directed">
                <port name="in0"    />
                <port name="in1"    />
                <port name="out0"    />
                <node id="n0::n0">
                    <data key="type">binary</data>
                    <data key="op">+</data>
                    <port name="in0"    />
                    <port name="in1"    />
                    <port name="out0"    />
                </node>
                <edge source="n0" target="n0::n0" sourceport="in0" targetport="in0" />
                <edge source="n0" target="n0::n0" sourceport="in1" targetport="in1" />
                <edge source="n0::n0" target="n0" sourceport="out0" targetport="out0" />
            </graph>
        </node>
    </graph>
</graphml>

 

Как видно, в этом представлении существует отдельный элемент вершины для обозначения функции Main, содержащий внутри элемент, обозначающий граф. За счёт того, что вершины допускают граф в качестве внутреннего элемента, достигается возможность построения иерархии в представлении графа. Стоит отметить, что выразительная мощность GraphML несколько шире, чем требуется для представления внутреннего представления программ на языке Sisal. В стандарте GraphML допускается наличие дуг между вершинами из разных фрагментов иерархии графа [9]. Кроме того, GraphML допускает задание гипердуг в графах, что также не требуется для представления IR1 графов.

 

3.2. SVG представление

 

Обычно для изображения элементов графов используются различные геометрические фигуры. Для описания двумерной векторной графики существует язык SVG, который также является расширением языка XML [10]. Язык SVG поддерживает такие фигуры как эллипсы, прямоугольники и более сложные фигуры, задаваемые с помощью последовательностей точек. Данный язык поддерживается основными браузерами, что делает его подходящим для представления графов при визуализации в контексте реализации облачного сервиса. Будем строить изображение графов по следующим правилам. Вершины будем представлять с помощью прямоугольников с границей. Порты будем представлять с помощью точек с координатами, заданными относительно содержащих их вершин. Порты вершин будем располагать только на верхних или нижних гранях прямоугольников, изображающих вершины. Координаты вершин также задаются относительно содержащих их вершин-графов. Дуги будем представлять с помощью ломаных линий или кривых Безье. Последние поддерживаются форматом SVG естественным образом [10]. Кроме того, следует отметить, что при использовании SVG изображений в браузерах, изображения естественным образом включаются в DOM модель документа [11]. Данное обстоятельство позволяет использовать стандартные методы для обеспечения интерактивного взаимодействия с построенным изображением. Например, это позволяет с помощью стандартных браузерных событий реализовать сворачивание и разворачивание вершин графа, что облегчает навигацию по изображению. Также естественное включение в DOM позволяет использовать существующие средства для поиска вершин в графе по заданным значениям атрибутов, например, по имени функции.

 

 4. Преобразование GraphML в изображение

 

Для решения задачи визуализации изображения Sisal программ требуется устранить пробел между представлениями в формах GraphML и SVG. Оба представления являются подмножествами языка XML. Это дает возможность использовать стандартные преобразования XSLT [12] для трансформации между форматами. Основной тег формата SVG (<svg>) допускает использование внутри таких же тегов. Это означает, что структура SVG представления допускает построение изображения с иерархией тегов <svg> повторяющей иерархию элементов в GraphML представлении. Разница будет в том, что для SVG изображений потребуются атрибуты обозначающие вершины, а также дополнительные теги и стили [13] для создания, например, изображений, состоящих из сложных элементов разных цветов. Для того, чтобы корректно расположить на плоскости элементы SVG изображения, требуется информация о координатах. Так как SVG представление может сильно меняться со временем, в отличие от GraphML представления, то информацию о координатах требуется задавать именно в GraphML представлении. Так как графы внутреннего представления IR1 являются ациклическими ориентированными, для их укладки обычно используется известный алгоритм Сугиямы [14]. Существуют модификации алгоритма, позволяющие учесть размеры вершин [15]. Следует отметить, что обычно алгоритм Сугиямы не учитывает наличие портов у вершин, что может приводить к недостаткам изображения при изображении дуг, соединяющих порты графа с портами вершин, принадлежащих этому графу. Существуют методы, позволяющие избежать этого недостатка [16]. Стандарт XSLT позволяет сформулировать преобразование из формата GraphML в формат SVG с помощью набора шаблонов, представляющих собой рекурсивные функции. Это даёт возможность вызвать шаблон, осуществляющий трансформацию вложенного графа, из шаблона вершины, содержащей этот граф. Это позволяет естественным образом выразить преобразование иерархии GraphML элементов в иерархию SVG элементов. Ниже приведено описание псевдокода преобразующих функций с использованием конвейерного оператора.

 

function convertGraphMLToSvg(<graphml>)
begin
    return [
         <svg>,
          graphml.graphs |> List.map convertGraphToSvg |> concat ,
         </svg>
    ] |> concat
end

function convertGraphToSvg(<graph>)
begin
    return [
        graph.ports |> List.map convertPortToSvg |> concat ,
        graph.nodes |> List.map convertNodeToSvg |> concat ,
        graph.edges |> List.map convertEdgeToSvg |> concat
    ] |> concat
end

function convertNodeToSvg(<node>)
begin
    return [
        <svg> ,
        graph.ports |> List.map convertPortToSvg |> concat ,
        convertGraphToSvg(node.graph) ,
        </svg>
    ] |> concat
end

function convertPortToSvg(<port>)
begin
    return <circle/>
end

function convertEdgeToSvg(<edge>)
begin
    return <path/>
end

 

Взаимно рекурсивные вызовы преобразующих шаблонов convertGraphToSvg и convertNodeToSvg позволяют построить иерархию тегов SVG.

 

5. Результаты эксперимента

 

XSLT также поддерживается во всех современных браузерах, что позволяет строить изображения внутреннего представления программ только с помощью средств, доступных на стороне клиента. Для поддержки интерактивного взаимодействия, в частности для поддержки сворачивания и разворачивания вершин используются средства JavaScript и CSS [13]. Далее представлены примеры изображений, построенных на основе текста программ, записанных на языке Cloud Sisal.

 

Рис.1. Пример изображения функции перемножения матриц

 

На Рис. 1. представлено изображение функции перемножения двух матриц. Функция Main реализована с помощью двух вложенных циклов. Иерархия вершин, имеющих метки forall, rangeGen и loopReturn, отражает иерархию заданных циклов. Функция принимает пять параметров, две матрицы и три числа, обозначающих границы диапазонов индексов. Функция Main возвращает одно значение, являющееся матрицей.

 

Рис.2. Пример изображения функции генерации массива чисел

 

На Рис. 2. представлено изображение функции генерации массива чисел. Константные вершины с метками 1 и 100, находящиеся внутри вершины rangeGen, участвуют в задании границ индексов результирующего массива с использованием входных параметров функции Main. Константная вершина с меткой 5, находящаяся внутри вершины loopReturn, участвует в задании значений результирующего массива с учётом индекса элемента.

 

Рис.3. Пример изображения функции с арифметическим выражением, использующим аргументы функции

 

На Рис. 3. представлено изображение вычисления арифметического выражения, использованием аргументов функции Main. Для улучшения качества изображения требуются модификации алгоритма укладки графа с тем, чтобы минимизировать количество пересечений дуг за счёт перестановки вершин.

 

Рис.4. Пример изображения функции с арифметическим выражением, не использующим аргументы функции

 

На Рис. 4. представлено изображение вычисления арифметического выражения, без использования аргументов функции Main. Как видно, не существует дуг выходящих из входного порта функции Main. В данном случае отсутствие пересечений дуг достигнуто расстановкой скобок в арифметическом выражении.

 

6. Заключение

 

В статье описан метод генерации интерактивных изображений графов внутреннего представления программ на языке Cloud Sisal с помощью средств векторной графики формата SVG. В силу особенностей формата SVG и метода построения изображений существует возможность использования этого метода на большом множестве клиентских устройств. Особенности формата SVG позволяют осуществлять взаимодействие с интерактивным изображением стандартными средствами современных браузеров. Особенностью описываемого метода является ориентация на современную тенденцию распространения различных облачных сервисов, позволяющих сформулировать решение задачи с помощью языка программирования Cloud Sisal и проверить его без наличия компилятора. Направление дальнейшего исследования включает решение задачи взаимодействия с графом внутреннего представления программы посредством манипуляций с фрагментами соответствующего SVG изображения.

 

Список литературы

 

  1. Касьянов В.Н. Интегрированная визуальная среда поддержки конструирования параллельных программ. Проблемы информатики. 2008. № 1.  С. 51 - 58.
  2. Идрисов Р.И. Облачный сервис для научных вычислений и образования. Информатика в науке и образовании: Сб. науч. тр. Под ред. В. Н. Касьянова. 2012. С. 57-64
  3. Kasyanov V. Sisal 3.2: functional language for scientific parallel programming. Enterprise Information Systems. 2013. Vol. 7, № 2. pp. 227-236
  4. Стасенко А.П. Внутреннее представление системы функционального программирования Sisal 3.0. 2004. 54 с. (Препр. / РАН. Сиб. отд-е. ИСИ; № 110).
  5. Касьянов В. Н., Евстигнеев В. А. Графы в программировании: обработка, визуализация и применение. СПб.: БХВ-Петербург. 2003. 1104 с.
  6. Касьянов В. Н., Касьянова Е. В. Визуализация информации на основе графовых моделей. Научная визуализация. 2014. Т. 6, №. 1. С. 31-50.
  7. Feo J.T., Miller P.J., Skedzielewski S.K., Denton S.M. Sisal 90 user’s guide. Livermore, CA: Lawrence Livermore National Laboratory, Draft 0.96, 1995. 80 p.
  8. Касьянов В.Н. Язык представления графов GraphML: базовые средства. Информатика в науке и образовании: Сб. науч. тр. Под ред. В. Н. Касьянова. Новосибирск, 2012. С. 7-22.
  9. Касьянов В.Н. Язык представления графов GraphML: дополнительные возможности. Информатика в науке и образовании: Сб. науч. тр. Под ред. В. Н. Касьянова. Новосибирск, 2012. С. 23-46.
  10. http://www.w3.org/TR/SVG/
  11. http://www.w3.org/DOM/
  12. http://www.w3.org/TR/xslt/
  13. http://www.w3.org/TR/CSS/
  14. Sugiyama K., Tagawa S., Toda M., Methods for visual understanding of hierarchical systems. IEEE Trans. Syst., Man and Cybern. 1981. Vol. 11. N 2. PP. 109–125.
  15. Eiglsperger M., Siebenhaller M., Kaufmann M. An Efficient Implementation of Sugiyama’s Algorithm for Layered Graph Drawing. Graph Drawing Lecture Notes in Computer Science. 2005. V. 3383. PP. 155-166
  16. Гордеев Д.С. Визуализация внутреннего представления программ в системе функционального программирования SFP. Конструирование и оптимизация параллельных программ. Сб. статей под ред. В. Н. Касьянова. Новосибирск: Ин-т систем информатики имени А. П. Ершова СО РАН. 2008. C. 33-47.
  17. SIGMAJS. “Sigma.js: an open-source lightweight javaScript library,” URL: http://sigmajs.org/.
  18. Bostock M., Ogievetsky V., Heer J. D3: Data-Driven Documents. IEEE Trans. Visualization & Comp. Graphics (Proc. InfoVis), 2011.
  19. Shannon P., Markiel A., Ozier O., Baliga N.S., Wang J.T., Ramage D., et al. Cytoscape: a software environment for integrated models of biomolecular interaction networks. Genome Res. 2003;13:2498–504.
  20. Strathausen P. Dracula graph layout and drawing framework, 2010, URL: http://www.graphdracula.net/
  21. Wiese R., Eiglsperger M., Kaufmann M. yfiles—visualization and automatic layout of graphs. Springer Berlin Heidelberg, 2004. pp. 173-191.
  22. Ellson J. et al. Graphviz — open source graph drawing tools. Graph Drawing. Springer Berlin Heidelberg, 2002. pp. 483-484.
  23. Pietriga E. et al. Zgrviewer, a graphviz/dot viewer. 2009.
  24. Veldhuizen T. UbiGraph: Free dynamic graph visualization software. 2007.
  25. Касьянов В.Н., Золотухин Т.А. Visual Graph - система для визуализации сложно структурированной информации большого объема на основе графовых моделей. Научная визуализация. 2015. Том. 7, № 4. С. 44 - 59.



VISUALIZATION OF INTERNAL REPRESENTATION OF CLOUD SISAL PROGRAMS

D.S. Gordeev

A.P. Ershov Institute of Informatics Systems, Siberian Branch of the Russian Academy of Sciences

gds@iis.nsk.su

 

Abstract

This paper describes a method of visualization of internal representation of Cloud Sisal programs. Programming language Cloud Sisal presently is under development in Program Construction and Optimization Laboratory of A.P. Ershov Institute of Informatics Systems of SB RAS. Cloud Sisal is a functional programming language designed for scientific computing. Research and development of the language are in bounds of project of parallel programming system construction. The goal of the system is to provide tools for cloud computing in scientific and educational purposes. The main component of the system is interpreter of Cloud Sisal language. The interpreter is being implemented with JavaScript. This fact allows using of interpreter and debugging of Cloud Sisal programs in almost all modern browsers. Wherein the debugging of programs is allowable in bounds of client side browser with using of low dimension data. Debugged programs supposed to be executed on supercomputers with using of big dimension data. Cloud Sisal programs can be presented in a form of hierarchical oriented acyclic graphs. Thus GraphML is selected as output data presentation of Cloud Sisal interpreter. GraphML is known XML-based language designed in order to describe different types of graphs. This paper offer to use SVG language in order to describe visual presentation of program internal representation. SVG is XML-based language designed to describe vector graphics. The SVG language is supported in most of modern browsers. Very useful features of SVG are a support of a hierarchical structure of elements and support of an interactivity. This paper describes the format of representation of graph elements hierarchy and according transform from GraphML to SVG.

 

Keywords:  scientific visualization, Sisal, Cloud Sisal, internal representation, parallel computing, functional programming, cloud computing, graphml, svg, graph drawing

 

References

 

  1. Kasyanov V.N. Integrirovannaja vizual'naja sreda podderzhki konstruirovanija parallel'nyh programm [The integrated visual environment to support the construction of parallel programs]. Informatics Problems. 2008. no. 1.  pp. 51 - 58.
  2. Idrisov R.I. Oblachnyj servis dlja nauchnyh vychislenij i obrazovanija [Cloud services for scientific computing and education]. Computing in Science and Education: Proceedings Ed. Kasyanov V.N. 2012. pp. 57-64
  3. Kasyanov V. Sisal 3.2: functional language for scientific parallel programming. Enterprise Information Systems. 2013. Vol. 7, № 2. pp. 227-236
  4. Stasenko A.P. Vnutrennee predstavlenie sistemy funkcional'nogo programmirovanija Sisal 3.0 [Internal representation of functional programming system Sisal 3.0]. Novosibirsk, 2004. 54 с. (Preprint / IIS SB RAS; № 110).
  5. Kasyanov V.N., Evstigneev V.A. Grafy v programmirovanii: obrabotka, vizualizacija i primenenie [Graphs in Programming: Processing, Visulization and Application]. Saint-Peterburg: BHV-Peterburg. 2003. 1104 p.
  6. Kasyanov V.N., Kasyanova E.V. Information visualization based on graph models. Scientific visualization. 2014. Vol. 6, №. 1. pp. 31-50.
  7. Feo J.T., Miller P.J., Skedzielewski S.K., Denton S.M. Sisal 90 user’s guide. Livermore, CA: Lawrence Livermore National Laboratory, Draft 0.96, 1995. 80 p.
  8. Kasyanov V.N. Jazyk predstavlenija grafov GraphML: bazovye sredstva [Graph ML language for graph presentation: basic means]. Informatics in reasearch and education. Ed. Victor Kasyanov. Novosibirsk, 2012. P. 7-22.
  9. Kasyanov V.N. Jazyk predstavlenija grafov GraphML: dopolnitel'nye vozmozhnosti [Graph ML language for graph presentation: additional functionalities]. Informatics in reasearch and education. Ed. Victor Kasyanov. Novosibirsk, 2012. P. 23-46.
  10. http://www.w3.org/TR/SVG/
  11. http://www.w3.org/DOM/
  12. http://www.w3.org/TR/xslt/
  13. http://www.w3.org/TR/CSS/
  14. Sugiyama K., Tagawa S., Toda M. Methods for visual understanding of hierarchical systems. IEEE Trans. Syst., Man and Cybern. 1981. Vol. 11. N 2. PP. 109–125.
  15. Eiglsperger M., Siebenhaller M., Kaufmann M. An Efficient Implementation of Sugiyama’s Algorithm for Layered Graph Drawing. Graph Drawing Lecture Notes in Computer Science. 2005. V. 3383. pp. 155-166
  16. Gordeev D.S. Vizualizacija vnutrennego predstavlenija programm v sisteme funkcional'nogo programmirovanija SFP [Visualization of internal representation in the SFP functional programming system]. Parallel programs construction and optimization. Novosibirsk, 2008. pp. 33-47.
  17. SIGMAJS. “Sigma.js: an open-source lightweight javaScript library,” URL: http://sigmajs.org/.
  18. Bostock M., Ogievetsky V., Heer J. D3: Data-Driven Documents. IEEE Trans. Visualization & Comp. Graphics (Proc. InfoVis), 2011.
  19. Shannon P, Markiel A, Ozier O, Baliga NS, Wang JT, Ramage D, et al. Cytoscape: a software environment for integrated models of biomolecular interaction networks. Genome Res. 2003; 13:2498–504.
  20. Philipp Strathausen. Dracula graph layout and drawing framework, 2010, URL: http://www.graphdracula.net/
  21. Wiese R., Eiglsperger M., Kaufmann M. yfiles—visualization and automatic layout of graphs. Springer Berlin Heidelberg, 2004. pp. 173-191.
  22. Ellson J. et al. Graphviz—open source graph drawing tools. Graph Drawing. Springer Berlin Heidelberg, 2002. pp. 483-484.
  23. Pietriga E. et al. Zgrviewer, a graphviz/dot viewer. 2009.
  24. Veldhuizen T. UbiGraph: Free dynamic graph visualization software. 2007.
  25. Kasyanov V.N., Zolotuhun T.A. Visual Graph — a system for visualization of big size complex structural information on the base of graph models. Scientific visualization. 2015. vol. 7. no 4. pp. 44 - 59.