Сторінка 1 з 1

PyDataverse: автоматизація збереження метаданих і публікації даних у Dataverse

Додано: П'ят серпня 15, 2025 8:17 am
admin
🐍 PyDataverse: автоматизація збереження метаданих і публікації даних у Dataverse

PyDataverse — це потужна Python-бібліотека для взаємодії з платформою Dataverse через API. Вона дозволяє:
• створювати набори даних,
• завантажувати файли,
• змінювати або зчитувати метадані,
• публікувати та версіонувати дані автоматично.

Цей інструмент особливо корисний для дата-стюардів, лабораторій і проєктів, які потребують автоматизованого управління науковими даними.

--------------------------------------------------------------------------------------

🔧 Встановлення

Код: Виділити все

pip install pydataverse
Документація: https://pydataverse.readthedocs.io

-------------------------------------------------------------------------------------

📦 Приклад: створення нового набору даних із метаданими та файлами

Крок 1: Імпортуємо бібліотеки й авторизуємось

Код: Виділити все

from pyDataverse.api import Api
from pyDataverse.models import Dataset
import json

api = Api("https://dataverse.example.org", "ВАШ_ТОКЕН")
Крок 2: Створюємо метадані

Код: Виділити все

dataset = Dataset()
dataset.set({
    "title": "Дослідження кліматичних умов 2025 року",
    "author": [{"authorName": "Іваненко Ірина"}],
    "datasetContact": [{"datasetContactEmail": "iryna@institute.ua"}],
    "dsDescription": [{"dsDescriptionValue": "Результати польових вимірювань температури і вологості"}],
    "subject": ["Earth and Environmental Sciences"],
    "publisher": "Інститут клімату НАН України"
})
Крок 3: Завантажуємо метадані як чернетку

Код: Виділити все

response = api.create_dataset(':root', dataset.json())
print(response.json())
Крок 4: Завантажуємо файл до набору

Код: Виділити все

dataset_pid = response.json()["data"]["persistentId"]

with open("climate_data.csv", "rb") as file:
    upload = api.upload_file(file, dataset_pid)
print(upload.json())
Крок 5: Публікуємо нову версію

Код: Виділити все

api.publish_dataset(dataset_pid, release_type="major")
--------------------------------------------------------------------------------

📁 Робота з метаданими у JSON

PyDataverse дозволяє:
• зчитувати існуючі метадані (`api.get_dataset(pid)`)
• зберігати метадані у файли `.json`
• імпортувати схеми з шаблонів Dataverse або JSON-файлів

Код: Виділити все

meta = api.get_dataset(dataset_pid).json()
with open("metadata_backup.json", "w") as f:
    json.dump(meta, f, indent=2)
------------------------------------------------------------------------------------------------------

📂 Структура інтеграції у CI/CD

PyDataverse добре інтегрується у GitHub Actions або cron-сценарії, наприклад:
• дані оновлено у `data.csv` → запускається скрипт
• нова версія з DOI створюється автоматично
• changelog додається до README

Приклад командного сценарію:

Код: Виділити все

python update_dataset.py --input new_data.csv --title "Нові дані липня 2025"
---------------------------------------------------------------------------------------------------

📚 Корисні ресурси

Офіційна документація PyDataverse
GitHub репозиторій PyDataverse
Dataverse API Docs
Альтернативна клієнтська бібліотека

---------------------------------------------------------------------------------------------------

📌 Висновки

PyDataverse — це зручний інструмент для автоматизації повного життєвого циклу даних у Dataverse:
• дозволяє працювати з метаданими без браузера,
• легко вбудовується в CI/CD-процеси,
• підтримує відтворюваність, машиночитність і versioning.

💬 Якщо ви вже використовували PyDataverse — поділіться прикладами, помилками або практичними порадами!