Общие вопросы

Здесь собраны статьи, так или иначе связанные с работой на суперкомпьютере "Уран"

Отправка сообщений в telegram

Для оперативной связи с программой, запущенной на суперкомпьютере (сообщение о запуске или завершении, отладочные сообщения), можно использовать telegram.

Данная инструкция описывает создание минимального telegram-бота, который умеет отправлять сообщения хозяину.

Регистрируем бота в телеграмм

Для регистрации бота нужно начать чат с отцом ботов https://t.me/BotFather отправив в чат команду /start

Далее выбираем из меню или пишем в чат команду /newbot в ответ будет предложено ввести имя, под которым бот будет виден у вас в списке пользователей (не обязательно уникальное), и идентификатор, уникальный в рамках всего телеграма и заканчивающийся на _bot. Если идентификатор отвечает этому требованию, то в ответ BotFather пришлет сообщение, содержащее ссылку на бота и token для доступа к API.

Что бы у бота появилась возможность писать вам, вы должны перейти на страничку бота и нажать кнопку "Запустить" (Start)

Как узнать свой ID

Что бы писать себе сообщения нужно знать свой уникальный идентификатор, это можно сделать запустив бота https://t.me/getmyid_bot

Установка бота на суперкомпьютере

Для запуска бота необходимо установить пакеты python3

pip install python-telegram-bot --upgrade --user

после чего можно скопировать пример бота в файл telegram_bot.py, подставив токен api_key и свой user_id. На файл необходимо дать право на выполнение chmod +x telegram_bot.py

#!/usr/bin/env python3.6
import telegram
import sys

api_key = "987654321:XyZwer45Un"
user_id = 1234567890

bot = telegram.Bot(token=api_key)

chunk = sys.stdin.read(4096)
while chunk:
    bot.send_message(user_id, chunk)
    chunk = sys.stdin.read(4096)

Отправка сообщения делается перенаправлением текста на стандартный ввод бота. Можно отправлять несколько строк, но не более 4096 символов за один раз. Более длинные сообщения разбиваются на части по границам кратным этой величине. В примере предполагается, что вы создали файл telegram_bot.py в домашнем каталоге (~).

echo "Test message" | ~/telegram_bot.py

ls | ~/telegram_bot.py

sbatch -n1 -t1 --wrap \
    "bash -c \
         'echo Start |~/telegram_bot.py;\
         my_prog| ~/telegram_bot.py;\
         echo Stop |~/telegram_bot.py'"

Средства визуализации данных

SciDAVis

SciDAVis представляет собой интерактивное приложение, направленное на анализ научных данных и их визуализацию/публикацию. SciDAVis - многоплатформенное - Windows, Linux, MacOS X - свободное программное обеспечение. Данное программное обеспечение совмещает в себе широкую функциональность и интуитивно-понятный интерфейс. SciDAVis позволяет анализировать, обрабатывать и визуализировать экспериментальные данные и аппроксимировать кривые. Поддерживает большое количество аппроксимирующих функций, скрипты, базовые статистики с графиками и визуализацией и многое другое. Основные особенности программы SciDAVis:

  • Генерирование таблиц, матриц, графиков и заметок, собираемых в проекте с удобной организацией.
  • Таблицы для ввода данных напрямую или импорта из ASCII-файлов.
  • Встроенные операции по анализу статистики.
  • Различные форматы публикаций в двухмерном и трехмерном пространствах (включая EPS и PDF). У SciDAVis еще есть функции для расчета корреляции, автокорреляции, свертки и деконволюции.
  • Функции взятия прямого и обратного быстрого преобразования Фурье (БПФ, оно же FFT) и функции для работы со спектрами и сигналами.
  • (С установленной программой Python у вас появляется доступ к объектам.)

 

Список встроенных стандартных функций для создания формул

Стандартные функции:
abs, acos, acosh, asin, asinh, atan, atanh, avg
bessel_i0, bessel_i1, bessel_in, bessel_in_zero, bessel_y0, bessel_y1, bessel_yn, beta
ceil, cos, cosh, erf, erfc, erfz, erfq, exp, floor, gamma, gammaln
hazard, if, ln, log, log10, log2, min, max, mod, pow, rint, sign
sin, sinh, sqrt, sum, tan, tanh, w0, wm1

 

Хранение

SciDAVis хранит все данные в файле своего проекта. В качестве исходных данных программа понимает текстовые файлы, в которых числа записаны столбцами, и файлы, в которых числа разделяются запятыми (CSV). При открытии текстовых файлов в SciDAVis есть возможность указать разделитель между столбцами, разделитель дробной части и символ, отделяющий в больших числах тысячи, миллионы и т.д. для более наглядного вида. Для SciDAVis основная рабочая область – таблица с данными, а графики не привязываются к их расположению на листе, а просто рисуются в отдельных окнах.
Графики могут быть сохранены в нескольких растровых графических форматах файлов, а также в форматах Portable Document Format PDF , Encapsulated PostScript EPS или SVG.

Типы графиков

Программа может рисовать разные типы графиков.

• Исходные точки на графике могут отмечаться какими-нибудь символами. А можно оставить только эти символы без линий и получится так называемый Scatter.
• Графики, у которых точки соединяются только горизонтальными и вертикальными линиями, получаются ступеньки.
• Графики, представляющие собой вертикальные столбики, обычно их называют Bar. Есть отдельный тип графиков, когда кроме вертикального верхнего уровня столбиков задаются еще и нижние уровни.
• Есть отдельные типы графиков для рисования гистограмм.
• График, когда область под графиком закрашивается или заштриховывается.
• Диаграмма в виде долек пирога – Pie Chart.
• График, изобращающий набор векторов. Причем можно задавать координаты начала и конца вектора, а можно задавать координаты начала, его длину и угол поворота.
• Так называемый Box Plot, используемый для отображения статистических данных.
• Линии уровней.
• Можно рисовать различные трехмерные графики.
  • Трехмерные траектории
  • Трехмерные Scatter’ы
  • Графики в виде трехмерной ленты
  • Трехмерные столбцы, положение на плоскости которых задается двумя координатами, а третья координата определяет их высоту.
  • Трехмерные поверхности. Правда, у SciDAVis такой тип графиков получается угловатый. Трехмерные графики в SciDAVis’е можно вращать, приближать и удалять мышкой.

 

Как создать график в SciDAVis

  1. Построим, например, график, используя функцию IF. Откроем меню Файл и выберем команду Новый/Новый график функции (Рис. №1)

    В откывшемся диалоговом окне, зададим функцию и диапазон изменения аргумента х.

     

    Результат:

  2. Создадим таблицу и на основе значений её ячеек построим график. Заполним первый столбец рядом чисел от 1 до 30 по возрастанию с шагом 1:

    a) Выделим 1-ый столбец
    b) Заполним выделенное с помощью Таблица/Fill Selection with/Row Numbers.

    Ко второму столбцу таблицы, предварительно выделив его, применим формулу sin(col("1"))/col("1"), используя для задания формулы списки диалогового окна (см. Рис. №5)


    Выбрав График/Линия вы построите график по табличным данным. К построенному графику добавим еще график с заданием функции (см. Рис. №2):

  3. Построим график функции импортируя текстовый файл.

    • Для построения графика по насчитанным данным, записанным в файл, выполним Файл/Импорт ASCII... и не забудем правильно задать десятичные разделители (Рис. №8). В результате данные заполнят столбцы (Рис. № 9).
    • Ну а теперь знакомыми приёмами построим график, т.е.выделим 2-й столбик и График/Линия(Рис.№10). Далее вы можете делать с ним что угодно, например, сглаживать или сразу из точек вместо линии построитьсплайн (Рис. №11) т.д.

  4. Построим поверхность. Выполним Файл/Новый/Новый график 3D поверхности , в открывшемся диалоговом окне определим поверхность (Рис. №12)

Трехмерные графики в SciDAVis’е можно вращать, приближать и удалять мышкой.

Перечень пунктов меню SciDAVis

Проиллюстрируем пункты меню. Состав пункта Файл мы уже приводили, приведём и другие пункты для знакомства с интерфейсом приложения:

 
 

Официальная страница SciDAVis находится – здесь.

Интерактивная среда построения графиков GNUPLOT

gnuplot — свободная программа для создания двух- и трёхмерных графиков. gnuplot - терминальное интерактивное приложение в среде ОС UNIX. Позволяет выполнять построение 2-х и 3-х мерных графиков функций. Функции могут задаваться как в аналитическом виде, так и в виде табличных данных, хранящихся в файлах. Набор команд для построения некоторого графика (или группы графиков) может быть записан в файл и выполнен одной командой. Для работы с gnuplot необходима установка на клиентской машине графической среды X-Window (В MS Windows можно установить NX Client или MobaXterm).

  • Вызовите gnuplot:

    После исполнения команды вы увидите, что установлен терминал 'X11':

  • Следом за вызовом gnuplot можно задавать команды и просматривать результаты их выполнения, например, команда:
    plot f(x)=sin(x*a),a=0.2,f(x),a=0.4,f(x)

    нарисует график:

  • , а команда splot x*x+y*y создаст эллиптический параболоид :

  • Можно использовать команды заливки, рисования сетки по всем осям,например, для sin(sqrt(x*x+y*y))/sqrt(x*x+y*y

В современных версиях gnuplot, при использовании интерактивных терминалов (x11,wxt) точку зрения можно менять поворачивая изображение при нажатой кнопке мыши.

Работа в gnuplot осуществляется в двух режимах:

  1. Интерактивный. Пользователь общается с программой с помощью командной строки в режиме реального времени (см. рисунки №3, №4 и №5).
  2. Пакетный. Пользователь подготавливает файл, содержащий последовательный набор команд (новая команда начинается с новой строки). При работе в таком режиме командный файл должен находиться в одной директории с исполняемым файлом gnuplot. После установки gnuplot обработка команд содержащихся в файле, например, simpe1.graph, выполняется командой
    $ gnuplot simpe1.graph

      1. Пример содержимого файла simple1.graph:
        set terminal windows
        set parametric
        set encoding koi8r
        set size square
        set xrange [-1:1]
        set yrange [-1:1]
        f(x)=sin(x) g(x)=cos(x)
        plot f(t), g(t) with points ls 3
      2. Пример визуализации данных файла:
        Содержимое командного файла:
        set terminal windows
        set encoding koi8r
        set yrange [0:1]
        set xrange [0:1]
        plot "RMSresult" with lines and points
         
         
         
         
         
         
        Содержимое файла данных
        (RMSresult ):

        0.1 0.61881100
        0.2 0.55289577
        0.3 0.71881100
        0.4 0.55289577
        0.5 0.61881100
        0.6 0.55289577
        0.7 0.61881100
        0.8 0.55289577
        0.9 0.61881100
        1.0 0.55289577
      3. Пример построения графика с помощью пакетного режима. gnuplot выполняет команды из файла и сохраняет график в файле, который можно просмотреть графическим редактором:

        Содержимое командного файла:
        set term postscript eps
        set palette gray
        set view 45,45
        set isosamples 50
        set output "primer1.eps"
        splot (cos(5*acos(y/sqrt(x*x+y*y)))/(1+(x*x+y*y))**0.25) w pm3d
        1. C сайта http://yurae.boom.ru/softest/GnuPlot.htm:

          " GnuPlot может рисовать графики функций, заданных формулой или точками. Это могут быть функции одной (линия на плоскости) или двух (поверхность в пространстве) переменных. Можно строить графики функций, заданных параметрически, рисовать кривые в полярных координатах. Дополнительно можно наносить на рисунок надписи и стрелки. Поддерживаются различные стили линий и точек, шрифты. Возможен вывод на экран или в файлы различного типа. Кроме того, программа позволяет аппроксимировать экспериментальный набор точек кривыми заданного вида. Работать программа может как под управлением Windows, так и под управлением Unix-подобных ОС. При всем этом, программа абсолютно бесплатна".

          Описание языка можно посмотреть на сайте http://jarosh.by.ru/gnuplot/gnuplot_rus.html