CellML — это язык разметки на основе XML для описания математических моделей . Хотя теоретически он может описать любую математическую модель, изначально он был создан с учетом проекта Physiome и, следовательно, использовался в первую очередь для описания моделей, относящихся к области биологии. Это отражено в его названии CellML, хотя это просто название, а не аббревиатура. [1] CellML становится все более популярным как переносимый формат описания для вычислительных моделей, и группы по всему миру используют CellML для моделирования или разработки программных инструментов на основе CellML. CellML похож на язык разметки системной биологии SBML , но обеспечивает большие возможности для модульности и повторного использования моделей и не является специфическим для описаний биохимии.
Язык CellML возник из-за необходимости совместного использования моделей динамики сердечных клеток среди исследователей в ряде мест по всему миру. Первоначальная рабочая группа, сформированная в 1998 году, состояла из Дэвида Булливанта, Уоррена Хедли и Пола Нильсена; все трое в то время были членами кафедры инженерных наук Оклендского университета. Язык был приложением спецификации XML, разработанной Консорциумом Всемирной паутины — решение использовать XML было принято на основе рекомендаций Уоррена Хедли и Андре (Дэвида) Никерсона конца 1998 года. Существующие языки на основе XML были использованы для описания математики (контент MathML ), метаданных ( RDF ) и связей между ресурсами ( XLink ). Рабочая группа CellML впервые узнала об усилиях SBML в конце 2000 года, когда Уоррен Хедли посетил 2-й семинар по программным платформам для системной биологии в Токио.
Рабочая группа сотрудничала с рядом исследователей из Physiome Sciences Inc. (в частности, с Мелани Нельсон, Скоттом Леттом, Марком Грехлингером, Прасадом Рамакришной, Джереми Райсом, Адамом Музыкантом и Кам-Чуэном Джимом) для разработки первоначальной спецификации CellML 1.0, которая была опубликована 11 августа 2001 года. За этим первым черновиком последовали спецификации для метаданных CellML и обновление CellML для поддержки структурированного вложения моделей с добавлением элемента <import>. Physiome Sciences Inc. также выпустила первое программное обеспечение, совместимое с CellML. Национальный ресурс по анализу и моделированию клеток (NRCAM) в Медицинском центре Университета Коннектикута также выпустил раннее программное обеспечение, совместимое с CellML, под названием Virtual Cell .
В 2002 году была написана спецификация CellML 1.1, в которую был добавлен импорт. Импорт обеспечивает возможность включения внешних компонентов в модель, позволяя модульное моделирование. Эта спецификация была заморожена в начале 2006 года. Работа над метаданными и другими спецификациями продолжалась.
В июле 2009 года веб-сайт CellML был полностью обновлен, и была выпущена начальная версия нового программного обеспечения репозитория CellML (PMR2).
В июле 2020 года была опубликована спецификация CellML 2.0 [2] , в которую были добавлены сбросы. Сбросы позволяли устанавливать значение переменной на любое значение при выполнении предписанного условия. Направленность между соединениями была удалена, чтобы способствовать повторному использованию компонентов, а определение единиц было ограничено только моделью.
В поддержку спецификации CellML 2.0 в 2015 году был начат проект libCellML, призванный предоставить разработчикам приложений библиотеку API C++ на основе моделей. Библиотека была быстро расширена для поддержки Javascript, Julia и Python. Последняя версия программного обеспечения — версия 0.5.0. Версия 0.5.0 библиотеки поддерживает большую часть спецификации CellML 2.0, а также поддерживает чтение моделей CellML 1.1 и CellML 1.0. Главный интересный момент заключается в том, что библиотека libCellML не поддерживает запись в старые стандарты CellML.
Модель CellML состоит из ряда компонентов, каждый из которых описан в своем собственном компонентном элементе. Компонент может быть полностью концептуальной сущностью, созданной для удобства моделирования, или он может иметь некоторую реальную физическую интерпретацию (например, он может представлять клеточную мембрану).
Каждый компонент содержит ряд переменных, которые должны быть объявлены путем размещения элемента переменной внутри компонента. Например, компонент, представляющий клеточную мембрану, может иметь переменную V, представляющую разность потенциалов (напряжение) на клеточной мембране.
Математические отношения между переменными выражаются внутри компонентов с помощью MathML . MathML используется для создания декларативных выражений (в отличие от процедурных операторов , как в языке программирования ). Однако большинство программ обработки CellML принимают только ограниченный диапазон математики (например, некоторые программы обработки требуют уравнений с одной переменной на одной стороне равенства). Выбор MathML делает CellML особенно подходящим для описания моделей, содержащих дифференциальные уравнения. Механизма для выражения стохастических моделей или любой другой формы случайности не существует.
Компоненты могут быть связаны в других компонентах с помощью элемента соединения, который описывает имя двух компонентов, которые должны быть связаны, и переменные в первом компоненте, которые сопоставлены с переменными во втором компоненте. Такие соединения являются утверждением, что переменная в одном компоненте эквивалентна другой переменной в другом компоненте.
Модели CellML также позволяют выражать отношения между компонентами. Спецификация CellML определяет два типа отношений: инкапсуляцию и включение, однако пользователь может определить и другие. Отношение включения используется для выражения того, что один компонент физически находится внутри другого. Отношение инкапсуляции является особым, поскольку это единственное отношение, которое влияет на интерпретацию остальной части модели. Эффект инкапсуляции заключается в том, что компоненты, инкапсулированные под другими компонентами, являются закрытыми и к ним не может получить доступ, кроме как компонент, расположенный непосредственно выше в дереве инкапсуляции. Разработчик моделей может свободно использовать инкапсуляцию как концептуальный инструмент, и она не обязательно имеет какую-либо физическую интерпретацию.
CellML определяется основными спецификациями, а также дополнительными спецификациями для метаданных, используемых для аннотирования моделей и указания симуляций.
CellML 1.0 была первой финальной спецификацией и используется для описания многих моделей в репозитории моделей CellML.
CellML 1.0 содержит некоторые специфические для биохимии элементы для описания роли переменных в модели реакции.
CellML 1.1 представил возможность импорта компонентов и единиц. Для полной поддержки этой функции переменные в CellML 1.1 принимают имена переменных в качестве начальных значений.
В CellML 2.0 внесены некоторые существенные изменения, перечисленные ниже:
CellML имеет несколько спецификаций метаданных, используемых для аннотирования моделей или предоставления информации для запуска и/или визуализации симуляций моделей.
CellML.org стремится стать точкой фокусировки для сообщества CellML. Участники могут отправлять, просматривать и обновлять модели, а также получать отзывы и помощь от сообщества. Список рассылки для обсуждения CellML можно найти в списке рассылки CellML-discussion. Область действия этого списка рассылки включает все, что связано с разработкой и использованием CellML.
Репозиторий нескольких сотен биологических моделей, закодированных в CellML, можно найти на веб-сайте сообщества CellML по адресу CellML Model Repository. Эти модели активно проходят процесс курирования, направленный на предоставление аннотаций с биологическими онтологиями, такими как Gene Ontology , и на проверку моделей по стандартам баланса единиц и биофизических ограничений, таких как сохранение массы, заряда, энергии и т. д.