Полное руководство по работе c RnDnet
 
×
Меню
Индекс

Описание функций встроенной библиотеки bfj для python

 

Как было рассказано ранее, в

программном модуле вычислительного узла “Compute”

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

 

Разделы главы:

 

Описание библиотеки bfj

 

bfj - модуль для работы с пакетами внутри платформы RnDnet. Данный модуль позволяет обращаться к файлам (пакета) экземпляра, загружать содержимое пакета в память, сохранять пакет. Библиотека bfj включает функции для загрузки данных в скрипт и для сохранения данных из скрипта.

 

Примечание. Чтобы работать с функциями bfj, необходимо его импортировать в созданном программном модуле командой:

import bfj
 

Help по функциям bfj

 
 
 

Загрузка данных в скрипт

 

load_inputs

 
load_inputs ()

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

"Загрузка файла произвольного формата "

.

Чтобы загрузить входные данные в область видимости скрипта, используйте команду:

bfj.load_inputs(global())

. Тогда доступ к загруженным файлам (пакетам), значениям параметров узла или переменным пакета можно получить по их имени.

 

Пример. Считывание данных функцией load_inputs

 

Из пакета "package 1" считаем параметр "content", содержащий текст "Package with the result of plotting a sinusoid" , и выведем его на экран. Код скрипта выглядит следующим образом:

 
#!/usr/bin/env python3
import bfj # импорт библиотеки bfj
 
# Load everything from input package:
bfj.load_inputs(globals())#загрузка входных переменных в область видимости скрипта
 
readParams = content # присваивание переменной "content" к "readParams"
print("readParams",readParams)# вывод на экран
 

Ниже приведён результат вывода на экран переменной "readParams" ( лог-файл) после запуска программного модуля:

Примечание. Запись "arrayX: from server" - показывает, что переменная "arrayX" также считалась из пакета.

 
 

load_package

 
load_package (path, scope = None, load_meta = True)

– функция загрузки данных пакета (загружаются файлы hdf5 и дополнительные атрибуты), которая возвращает его как набор переменных (словарь).

 
path

-  словарь, куда считываются переменные пакетов

scope

- словарь, куда считываются параметры узла. Подробнее про параметры в разделе

"Добавление параметров вычислительного узла Compute"

 

package_meta

 
package_meta(path)

- функция для загрузки атрибутов пакета, которые возвращаются как набор переменных (словарь) вида: имя атрибута - значение.

 

package_label

package_label(path)

- функция для загрузки названия (label) пакета.

 

packages

 
packages()

- функция, которая возвращает список всех входных пакетов экземпляра

 

Пример. Считывание данных функциями packages, package_label, package_meta, load_package

 

На вход подаётся пакет "package 1", который содержит небольшую информацию "content" и большую информацию в формате HDF5 "arrayX", "arrayY". Программный модуль, представленный ниже, считывает и выводит информацию из пакета в лог файл.

#!/usr/bin/env python3
import bfj # импорт библиотеки bfj
 
# Or, loop over input packages:
for pkg,lbl in bfj.packages():
    meta = bfj.package_meta(pkg) # загрузка переменной "content"
    data = bfj.load_package(pkg) # загрузка массивов "arrayX","arrayY"
    label = bfj.package_label(pkg)# загрузка имени пакета "package 1"
   
print("data:", data)# вывод на экран считанных переменных
print("meta:", meta)
print("label:", label)
 

Лог файл, полученный после запуска скрипта, содержит информацию имени пакета (label), массивов "arrayX", "arrayY" (data) и переменной "content" (meta).

 
 

instance_id

 
instance_id()

- функция, которая возвращает идентификатор экземпляра

 
 

read_params

 
read_params(scope, fname = None)

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

scope.get('parameter_name')

или

scope['parameter_name']

.

read_params(globals())

- загружает все параметры узла в видимость срипта.

 

Пример. Считывание параметров функцией read_params

 

Из параметров "Covariation" загрузим "N" и "Td" и сохраним в лог файле. Ниже представлен скрин параметров вычислительного узла. Далее будет приведён программный модуль и результат.

 

Программный модуль:

#!/usr/bin/env python3
import bfj # импорт библиотеки bfj
 
covariation={} # создание словаря "covariation"
bfj.read_params(covariation)# загрузка параметров узла в словарь "covariation"
print("covariation", covariation)# вывод словаря
print("N", covariation['N']) # вывод значения "N" (1 способ)
print("Td", covariation.get('Td'))# вывод значения "Td" по ключу (2 способ)
 

Полученный лог файл:

 
 

Сохранение выходных данных программного модуля

 

save_package

 
save_package (name=None, label=None, data={}, meta={}, image={}, files={}, save_mpl=False)

– функция позволяет создать пакет для хранения результатов скрипта и передачи его далее по графу обработки. Имеет параметры:

 name указывается имя  для пакета  (необязательный параметр),

 label - имя пакета в базе данных,

data - список переменных, которые необходимо сохранить в hdf5-файлах,

meta - список переменных, которые необходимо сохранить в атрибутах (для не больших данных), по умолчанию представлены в JSON формате ,

image - список переменных, которые необходимо сохранить в формате изображения (сохраняет формат .png по умолчанию). Для сохранения изображения формата .mpl необходимо дописать команду до вызова image :

save_mpl = True

,

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

Кроме того, 

bfj.save_package

принимает словарь.

 

Пример . Cохранение данных функцией save_package

 

Представлен программный модуль на языке python, рисующий график синусоиды по созданному массиву значений "x" и вычисленному массива значений "y". Результирующие данные записываются в выходной пакет функцией

save_package библиотеки bfj. Kод скрипта приведён ниже.

 
#!/usr/bin/env python3
import bfj # импорт библиотеки bfj
import numpy as np
import matplotlib.pyplot as plt
 
x = np.arange(0.0, 3.0, 0.01)
y = np.sin(x)
 
# Generate figures with matplotlib:
fig, ax = plt.subplots()
ax.plot(x, y, linewidth = 5, label = 'sin(x)')
content = "Package with the result of plotting a sinusoid"
 
# Save output package:
bfj.save_package(
    label = "output package",            # name of package
    data = dict(arrayX = x, arrayY = y), # variables,  saved to hdf5
    meta = dict(content = content),   # attributes, saved to database
    image = dict(figureSine = fig))      # save image
 

Сформированный пакет под номером "13882" будет выглядеть, как показано ниже. Сверху рисунка изображен график и чуть ниже отображены переменные массивов и содержание, сохранённыe в выходной пакет.

 
 

Надеемся, что библиотека bfj будет радовать простотой использования

 при работе с данными на платформе RnDnet.

 
 
Онлайн помощь создана в Dr.Explain