sbioselect

Поиск объектов с заданными ограничениями

Синтаксис

Out = sbioselect('PropertyName', PropertyValue)
Out = sbioselect('Where', 'PropertyName', 'Condition', PropertyValue)
Out = sbioselect(Obj, 'PropertyName', PropertyValue)
Out = sbioselect(Obj, 'Type', 'TypeValue', 'PropertyName', PropertyValue)
Out = sbioselect(Obj, 'Where', 'PropertyName', 'Condition', PropertyValue)
Out = sbioselect(Obj, 'Where', 'PropertyNameCondition', 'PropertyNamePattern', 'Condition', PropertyValue)
Out = sbioselect(Obj, 'Where', 'PropertyName1', 'Condition1', PropertyValue1, 'Where', 'PropertyName2', 'Condition2', PropertyValue2,...)
Out = sbioselect(Obj, 'Where', 'PropertyName1', 'Condition1', PropertyValue1,Bool_Operator, 'Where', 'PropertyName2', 'Condition2', PropertyValue2,...)
Out = sbioselect(Obj, 'Depth', DepthValue,...)

Аргументы

OutОбъект или массив объектов, возвращенных sbioselect функция. Out может содержать смесь типов объектов (для примера, видов и параметров), в зависимости от выбранной вами выборки.

Если PropertyValue является массивом ячеек, затем функция возвращает все объекты со свойством 'PropertyName' который соответствует любому элементу PropertyValue.

ObjSimBiology® объект или массив объектов для поиска. Если объект не задан, sbioselect выполняет поиск по корню.
PropertyNameЛюбое свойство объекта, в котором выполняется поиск.
PropertyValueЗадайте PropertyValue для включения в критерии выбора.
TypeValueТип объекта для включения в выбор, например sbiomodel, species, reaction, или kineticlaw.
ConditionУсловие поиска. Список условий см. в таблице Описание (Description).
PropertyNameConditionУсловие поиска, которое применяется только к свойству name. См. таблицу «Условия для имен» ниже.
PropertyNamePatternВектор символов или строка, используемая для выбора имени свойства в соответствии с условием, накладываемым PropertyNameCondition.
DepthValueУкажите номер глубины для поиска. Допустимые числа являются положительными целыми значениями и inf. Если DepthValue является inf, sbioselect выполняет поиск Obj и всех его детей. Если DepthValue является 1, sbioselect выполняет только поиск Obj а не его детей. По умолчанию DepthValue является inf.

Описание

sbioselect выполняет поиск объектов с заданными ограничениями.

Out = sbioselect('PropertyName', PropertyValue) ищет корневой объект (включая все объекты модели, содержащиеся в корневом объекте) и возвращает объекты с именем свойства (PropertyName) и значение свойства (PropertyValue), содержащийся в корневом объекте.

Out = sbioselect('Where', 'PropertyName', 'Condition', PropertyValue) ищет корневой объект и находит объекты, имеющие имя свойства (PropertyName) и значение (PropertyValue), который соответствует условию (Condition).

Out = sbioselect(Obj, 'PropertyName', PropertyValue) возвращает объекты с именем свойства (PropertyName) и значение свойства (PropertyValue) найдены в любом объекте (Obj). Если имя свойства в паре свойство-значение содержит либо '?' или '*', затем имя автоматически интерпретируется как выражение подстановки, эквивалентное предложению where ('Where', 'wildcard', 'PropertyName', '==', PropertyValue).

Out = sbioselect(Obj, 'Type', 'TypeValue', 'PropertyName', PropertyValue) находит объекты типа (TypeValue), с именем свойства (PropertyName) и значение свойства (PropertyValue) найдены в любом объекте (Obj). TypeValue - тип объекта SimBiology, включаемый в выбор, например species, reaction, или kineticlaw.

Out = sbioselect(Obj, 'Where', 'PropertyName', 'Condition', PropertyValue) находит объекты, которые имеют имя свойства (PropertyName) и значение (PropertyValue), которые соответствуют условию (Condition).

Если вы ищете значение свойства вектора символов, не задавая условия, необходимо использовать тот же формат, что и get возвращает. Для примера, если get возвращает Name как 'MyObject', sbioselect не найдет объект с Name значение свойства 'myobject'. Поэтому для этого примера необходимо задать:

modelObj = sbioselect ('Name', 'MyObject')

Вместо этого, если вы используете условие, можно задать:

modelObj = sbioselect ('Where', 'Name', '==i', 'myobject')
Таким образом, условия позволяют вам контролировать специфику своего выбора.

sbioselect ищет объекты модели в корне в обоих случаях.

Out = sbioselect(Obj, 'Where', 'PropertyNameCondition', 'PropertyNamePattern', 'Condition', PropertyValue) находит объекты с именем свойства, соответствующим шаблону в (PropertyNamePattern) с условием (PropertyNameCondition) и соответствует значению (PropertyValue) с условием (Condition). Используйте этот синтаксис, когда вы хотите условия поиска как для имен свойства, так и для значений свойств.

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

Условия для числовых свойствСинтаксис примера
==

Поиск в объекте модели (modelObj) и возвращают объекты параметров, которые имеют Value равно 0.5. sbioselect возвращает объекты параметров, потому что свойство только объектов параметров называется Value.

parameterObj = sbioselect (modelObj,...
 'Where', 'Value', '==', 0.5)
В случае ==, это эквивалентно исключению условия как показано:
parameterObj = sbioselect (modelObj,...
'Value', 0.5)

Поиск в объекте модели (modelObj) и возвращают объекты параметров, которые имеют ConstantValue false (неконстантные параметры).

parameterObj = sbioselect (modelObj,...
 'Where', 'ConstantValue', '==', false)

~=Поиск в объекте модели (modelObj) и возвращают объекты параметров, которые не имеют Value равно 0.5.
parameterObj = sbioselect (modelObj,...
 'Where', 'Value', '~=', 0.5)
>,<,>=,<=

Поиск в объекте модели (modelObj) и возвращают виды объектов, которые имеют начальное количество (InitialAmount) больше 50.

speciesObj = sbioselect (modelObj, ...
 'Where', 'InitialAmount', '>', 50)

Поиск в объекте модели (modelObj) и возвращают виды объектов, которые имеют начальное количество (InitialAmount) меньше или равно 50.

speciesObj = sbioselect (modelObj,...
 'Where', 'InitialAmount', '<=', 50)

between

Поиск в объекте модели (modelObj) и возвращают виды объектов, которые имеют начальное количество (InitialAmount) между 200 и 300.

speciesObj = sbioselect (modelObj,...
 'Where', 'InitialAmount',...
 'between', [200 300])

~betweenПоиск в объекте модели (modelObj) и возвращают виды объектов, которые имеют начальное количество (InitialAmount), что не находится между 200 и 300.
speciesObj = sbioselect (modelObj,...
 'Where', 'InitialAmount',...
 '~between', [200 300])
equal_and_same_type
Подобно ==, но в сложение требуется, чтобы значение свойства было того же типа.

Поиск в объекте модели (modelObj) и возвращает все объекты, содержащие свойство типа double и значение, равное 0. (Использование '==' также выбирает объекты, содержащие свойство со значением false.)

zeroObj = sbioselect(modelObj, ...
 'Where', '*', 'equal_and_same_type', 0);

unequal_and_same_type
Подобно ~=, но в сложение требуется, чтобы значение свойства было того же типа.

Выберите все объекты, содержащие свойство type double и значение, не равное 0. (Использование '~=' также выбирает объекты, содержащие свойство со значением true.)

nonzeroObj = sbioselect(modelObj, ...
'Where', '*', 'unequal_and_same_type', 0);

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

Условия для именСинтаксис примера
==

Поиск в объекте модели (modelObj) и возвращает видовые объекты с именем 'Glucose'.

speciesObj = sbioselect (modelObj,...
 'Type', 'species', 'Where',...
 'Name', '==', 'Glucose')

~=

Поиск в объекте модели (modelObj) и возвращают виды объектов, которые не называются 'Glucose'.

speciesObj = sbioselect (modelObj,...
 'Type', 'species', 'Where',...
 'Name', '~=', 'Glucose')

==i

То же, что и ==; в сложение это нечувствительно к случаю.

~=i

Поиск в объекте модели (modelObj) и возвращают виды объектов, которые не называются 'Glucose', игнорируя случай.

speciesObj = sbioselect (modelObj,...
 'Type', 'species', 'Where',...
 'Name', '~=i', 'glucose')

regexp. Поддерживает выражения, поддерживаемые функциями regexp и regexpi.

Поиск в объекте модели (modelObj) и возвращают объекты, которые имеют 'ese' или 'ase' в любом месте в имя.

Obj = sbioselect (modelObj, 'Where',...
 'Name', 'regexp', '[ea]se')

Поиск в корне и возврат объектов, имеющих kinase в любом месте в имя.

Obj = sbioselect ('Where',...
 'Name', 'regexp', 'kinase')
Обратите внимание, что этот запрос может привести к смешению типов объектов (для примера, видов и параметров).

regexpi

То же, что и regexp; в сложение это нечувствительно к случаю.

~regexp

Поиск в объекте модели (modelObj) и возвращают объекты, которые не имеют kinase в любом месте в имя.

Obj = sbioselect (modelObj, 'Where',...
 'Name', '~regexp', 'kinase')

~regexpi

То же, что и ~regexp; в сложение это нечувствительно к случаю.

wildcard

Поддерживает DOS-style подстановочные знаки ('?'соответствует любому одному символу,' *'соответствует любому количеству символов, и шаблон должен совпадать с целым вектором символов). Посмотрите regexptranslate для получения дополнительной информации.

wildcardi

То же, что и wildcard; в сложение это нечувствительно к случаю.

~wildcard

Поиск в объекте модели (modelObj) и возвращают объекты, имена которых не начинаются с kin*.

Obj = sbioselect (modelObj, 'Where',...
 'Name', '~wildcard', 'kin*')

~wildcardi

То же, что и ~wildcard; в сложение это нечувствительно к случаю.

Используйте вид условия function для любого свойства. Заданное значение должно быть указателем на функцию, который при применении к значению свойства возвращает логическое значение, указывающее, существует ли соответствие. Следующая таблица показывает пример использования function.

СостояниеСинтаксис примера
'function'

Поиск в объекте модели и возврат объектов реакции, чьи Stoichiometry свойство содержит указанную стехиометрию.

Out = sbioselect(modelObj, 'Where',...
'Stoichiometry', 'function',...
 @(x)any(x>2))
Выберите все объекты с четного числового значения.
iseven = @(x) isnumeric(x)...
 && isvector(x) && mod(x, 2) == 0; 
evenValuedObj = sbioselect(modelObj, ...
'where', 'Value', 'function', iseven); 

Условие 'contains' может использоваться только для тех свойств, значения которых являются массивом объектов SimBiology. Следующая таблица показывает пример использования contains.

СостояниеСинтаксис примера
'contains'

Поиск в объекте модели и возврат объектов реакции, чьи Reactant свойство содержит указанный вид.

Out = sbioselect(modelObj, 'Where',...
'Reactants', 'contains',...
 modelObj.Species(1))

Out = sbioselect(Obj, 'Where', 'PropertyName1', 'Condition1', PropertyValue1, 'Where', 'PropertyName2', 'Condition2', PropertyValue2,...) находит объекты, содержащиеся в Obj который соответствует всем указанным условиям.

Можно объединить любое количество пар имя/значение свойства и условий в sbioselect команда.

Out = sbioselect(Obj, 'Where', 'PropertyName1', 'Condition1', PropertyValue1,Bool_Operator, 'Where', 'PropertyName2', 'Condition2', PropertyValue2,...) находит объекты, содержащиеся в Obj который соответствует всем указанным условиям. Поддерживаемые векторы символов для Bool_Operator являются следующими.

'and'True if ('Where', 'PropertyName1', 'Condition1', PropertyValue1) и ('Where', 'PropertyName2', 'Condition2', PropertyValue2) оба верны.
'or'True, если либо ('Where', 'PropertyName1', 'Condition1', PropertyValue1) или ('Where', 'PropertyName2', 'Condition2', PropertyValue2) верно.
'xor'True, если только один из ('Where', 'PropertyName1', 'Condition1', PropertyValue1) или ('Where', 'PropertyName2', 'Condition2', PropertyValue2) верно.
'not'True if ('Where', 'PropertyName1', 'Condition1', PropertyValue1) верно и ('Where', 'PropertyName2', 'Condition2', PropertyValue2) не соответствует истине.

Поддерживаются составные выражения с несколькими логическими операторами. Приоритет операторов следует порядку операций для логической алгебры not –> and –> xor –> or.

Out = sbioselect(Obj, 'Depth', DepthValue,...) находит объекты с помощью модели search depth of DepthValue.

Примечание

Порядок результатов из sbioselect не гарантируется. Следовательно, не рекомендуется зависеть от порядка результатов.

Примеры

свернуть все

Импортируйте модель.

modelObj = sbmlimport('oscillator');

Найдите и верните объект с именем pA.

pA = sbioselect(modelObj, 'Name', 'pA')
pA = 
   SimBiology Species Array

   Index:    Compartment:    Name:    Value:    Units:
   1         unnamed         pA       100             

Поиск и возврат видов объектов, чьи Name начинается с p и иметь A или B как следующая буква в имени.

speciesObjs = sbioselect(modelObj, 'Type', 'species', 'Where',...
                        'Name', 'regexp', '^p[AB]')
speciesObjs = 
   SimBiology Species Array

   Index:    Compartment:    Name:        Value:    Units:
   1         unnamed         pA           100             
   2         unnamed         pB           0               
   3         unnamed         pA_OpB1      0               
   4         unnamed         pB_OpC1      0               
   5         unnamed         pA_OpB_pA    20              
   6         unnamed         pA_OpB2      0               
   7         unnamed         pB_OpC2      0               
   8         unnamed         pB_OpC_pB    0               

Найдите массив ячеек. Обратите внимание, что значения массива ячеек должны быть заданы в другом массиве ячеек.

modelObj.Species(2).UserData = {'a' 'b'}; 
Obj = sbioselect(modelObj, 'UserData', {{'a' 'b'}})
Obj = 
   SimBiology Species Array

   Index:    Compartment:    Name:    Value:    Units:
   1         unnamed         pB       0               

Поиск и возврат объектов, для которых не заданы модули.

unitlessObj = sbioselect(modelObj, 'Where', 'wildcard', '*Units', '==', '');

Также можно выполнить следующее.

unitlessObj = sbioselect(modelObj, '*Units', '');

См. также

Представлено до R2006a