Похожие презентации:
ThermoML_spravkа
1.
ThermoMLкраткая справка по парсингу датасета
XML
JSON
XSD
ThermoML Archive / NIST TRC
2.
1. Что такое ThermoMLThermoML — стандартизованный формат
IUPAC для хранения экспериментальных
термодинамических, теплофизических и
транспортных данных веществ и смесей.
смысл датасета
чистые
вещества
смеси
фазовые
равновесия
свойства
и условия
Это не «таблица значений», а
иерархическое описание публикации,
веществ, состава системы, условий
эксперимента и измеренных свойств.
экспериментальная запись
01
3.
2. XML, JSON и XSD: кто за что отвечаетXML
конкретный файл с
экспериментальными
данными
JSON
альтернативное
представление тех же
данных
структура
XSD
схема, которая
описывает допустимый
XML
Важный принцип: XML и JSON — это не две половины одной записи.
Обычно это две формы представления одной экспериментальной записи.
XSD проверяет именно XML, а не JSON.
ThermoML.xsd
→
проверяет article_1.xml, article_2.xml, ...
02
4.
3. Три разных «дерева» ThermoMLкак не запутаться
1 Дерево архива
2 Дерево документа
3 Дерево схемы
Папки, DOI, имена
XML/JSON-файлов. Нужно,
чтобы понять масштаб и
организовать обход файлов.
Структура одного XML или
JSON: Citation, Compound,
PureOrMixtureData и
численные значения.
То, что разрешено
стандартом XSD: элементы,
типы, обязательность,
повторы, порядок.
03
5.
4. Чем смотреть структуруинструменты
Altova XMLSpy
VS Code + XML
Oxygen / xmllint
Удобен для первого
знакомства с XML/XSD: Grid
View, Schema View, валидация
XML по XSD.
Просмотр, форматирование,
XPath, работа с namespace,
быстрый анализ отдельных
файлов.
Профессиональная работа с
XML/XSD или консольная
проверка файлов в
автоматическом режиме.
04
6.
5. Библиотеки Python для парсингаElementTree
lxml
практика
xmlschema
• ElementTree — базовый парсинг XML
• lxml — XPath, namespace, XSD-валидация
• xmlschema — работа с XSD и преобразование
XML
json
pandas
• json — чтение JSON-представления
• pandas — итоговые таблицы и CSV
• pathlib — обход большого архива файлов
for file in Path("ThermoML").rglob("*.xml"): parse(file)
05
7.
6. RDKit: не для парсинга, а для химииSMILES / ML
ThermoML
RDKit не читает ThermoML
напрямую.
Он полезен после того, как из
ThermoML уже извлечены вещества
и химические идентификаторы:
SMILES, InChI, CAS, названия
соединений.
парсер
SMILES / InChI
Дальше можно
получать:
• дескрипторы
• fingerprints
• граф молекулы
• признаки для ML
RDKit
06
8.
7. Рекомендуемый порядок работыалгоритм
Главное правило
1. Открыть ThermoML.xsd
2. Найти DataReport
3. Открыть один XML
4. Найти Citation и Compound
5. Найти PureOrMixtureData
6. Сравнить XML и JSON
7. Написать парсер на 1 файл
8. Масштабировать на архив
9. Сохранить результат в CSV
Не начинать с обработки
всего архива. Сначала нужно
понять модель данных на
одном-двух небольших
файлах.
07
9.
8. Типичные проблемы при парсингеважно
Namespace
Разные типы данных
Размер архива
root.find("Compound") может
ничего не найти, если в XML
используется пространство
имён.
Нельзя считать, что все XML
устроены одинаково.
ThermoML описывает много
видов экспериментов.
Нужно обрабатывать файл за
файлом и сразу сохранять
результат, а не держать всё в
памяти.
08
10.
https://data.nist.gov/od/id/mds2-24229. Где
DOI: искать справочную информацию
источники
https://doi.org/10.18434/mds2-2422
IUPAC ThermoML Recommendations, 2005
XML-Based IUPAC Standard for Experimental, Predicted, and Critically Evaluated Thermodynamic Property Data
Storage and Capture (ThermoML)
https://www.nist.gov/publications/xml-based-iupac-standard-experimental-predicted-and-critically-evaluatedthermodynamic
IUPAC ThermoML Extension, 2011
Extension of ThermoML: The IUPAC Standard for Thermodynamic Data Communications
https://www.nist.gov/publications/extension-thermoml-iupac-standard-thermodynamic-datacommunications-iupac
ThermoML: Experimental Data
https://www.nist.gov/publications/thermoml-xml-based-approach-standardize-storage-and-exchange09
experimental-and
11.
Документация инструментов10. Python xml.etree.ElementTree — базовая работа с XML в Python
10.
Где искать справочную информацию
источники
https://docs.python.org/3/library/xml.etree.elementtree.html
lxml — XML, XPath, namespaces, XSD https://lxml.de/
Валидация XML/XSD в lxml:
https://lxml.de/validation.html
xmlschema — работа с XSD из Python
https://xmlschema.readthedocs.io/en/stable/
pandas json_normalize()
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.json_normalize.html
RDKit Book
https://www.rdkit.org/docs/RDKit_Book.html
Общая документация RDKit:
https://www.rdkit.org/docs/
Altova XMLSpy Documentation
https://www.altova.com/documentation
XMLSpy Professional Manual:
09