Биоинформатика Toolbox™ включает в себя несколько функций получения, которые извлекают информацию из различных веб-баз данных. Кроме того, с помощью некоторых базовых навыков программирования MATLAB ® можно создать собственную функцию получения для извлечения информации из определенной веб-базы данных .
Следующая процедура иллюстрирует создание функции для извлечения информации из базы данных NCBI PubMed и считывания информации в структуру MATLAB. База данных NCBI PubMed содержит ссылки на биомедицинскую литературу и рефераты.

В следующей процедуре показано, как создать функцию с именем getpubmed с помощью редактора MATLAB. Эта функция извлекает цитируемую и абстрактную информацию из поиска литературы PubMed и записывает данные в структуру MATLAB.
В частности, эта функция будет принимать один или несколько поисковых терминов, отправлять их в базу данных PubMed для поиска, а затем возвращать структуру MATLAB или массив структур, причем каждая структура содержит информацию для статьи, найденной при поиске. Возвращенная информация будет включать идентификатор PubMed, дату публикации, заголовок, реферат, авторов и цитирование.
Функция также будет включать пары имя-значение свойства, которые позволяют пользователю функции ограничить поиск по дате публикации и количество возвращаемых записей. Ниже приведено пошаговое руководство по созданию функции с самого начала. Чтобы просмотреть завершенный m-файл, введите edit getpubmed.m.
В MATLAB откройте редактор MATLAB, выбрав Файл > Создать > Функция.
Определите getpubmed функция, ее входные аргументы и возвращаемые значения путем ввода:
function pmstruct = getpubmed(searchterm,varargin) % GETPUBMED Search PubMed database & write results to MATLAB structure
Добавьте код, чтобы выполнить базовую проверку ошибок для требуемого ввода SEARCHTERM.
% Error checking for required input SEARCHTERM if(nargin<1) error(message('bioinfo:getpubmed:NotEnoughInputArguments')); end
Создайте переменные для двух пар имя-значение свойства и задайте их значения по умолчанию.
% Set default settings for property name/value pairs, % 'NUMBEROFRECORDS' and 'DATEOFPUBLICATION' maxnum = 50; % NUMBEROFRECORDS default is 50 pubdate = ''; % DATEOFPUBLICATION default is an empty string
Добавьте код для синтаксического анализа двух пар имя-значение свойства, если они предоставляются в качестве входных данных.
% Parsing the property name/value pairs num_argin = numel(varargin); for n = 1:2:num_argin arg = varargin{n}; switch lower(arg) % If NUMBEROFRECORDS is passed, set MAXNUM case 'numberofrecords' maxnum = varargin{n+1}; % If DATEOFPUBLICATION is passed, set PUBDATE case 'dateofpublication' pubdate = varargin{n+1}; end end
Доступ к базе данных PubMed осуществляется по URL-адресу поиска, который передает поисковый термин и параметры, а затем возвращает результаты поиска в указанном формате. Этот URL поиска состоит из базового URL и определенных параметров. Создайте переменную, содержащую базовый URL-адрес базы данных PubMed на веб-сайте NCBI.
% Create base URL for PubMed db site baseSearchURL = 'https://www.ncbi.nlm.nih.gov/sites/entrez?cmd=search';
Создание переменных, содержащих пять определенных параметров, которые getpubmed функция будет использовать, а именно, db (база данных), term (поисковый термин), report (тип отчета, такой как MEDLINE ®), format (тип формата, такой как текст) и dispmax (максимальное количество отображаемых записей).
% Set db parameter to pubmed dbOpt = '&db=pubmed'; % Set term parameter to SEARCHTERM and PUBDATE % (Default PUBDATE is '') termOpt = ['&term=',searchterm,'+AND+',pubdate]; % Set report parameter to medline reportOpt = '&report=medline'; % Set format parameter to text formatOpt = '&format=text'; % Set dispmax to MAXNUM % (Default MAXNUM is 50) maxOpt = ['&dispmax=',num2str(maxnum)];
Создайте переменную, содержащую URL-адрес поиска, из переменных, созданных на предыдущих шагах.
% Create search URL
searchURL = [baseSearchURL,dbOpt,termOpt,reportOpt,formatOpt,maxOpt];Используйте urlread функция для отправки URL поиска, извлечения результатов поиска и возврата результатов (в виде текста в типе отчета MEDLINE) в medlineText, символьный массив.
medlineText = urlread(searchURL);
Использование MATLAB regexp функция и регулярные выражения для анализа и извлечения информации в medlineText в hitsмассив ячеек, где каждая ячейка содержит текст в формате MEDLINE для одной статьи. Первый ввод является массивом символов для поиска, второй ввод является поисковым выражением, которое сообщает regexp функция для поиска всех записей, которые начинаются с PMID-, в то время как третий вход, 'match', говорит regexp функция для возврата фактических записей, а не позиций записей.
hits = regexp(medlineText,'PMID-.*?(?=PMID|</pre>$)','match');
Создать экземпляр pmstruct структура, возвращенная getpubmed содержит шесть полей.
pmstruct = struct('PubMedID','','PublicationDate','','Title','',...
'Abstract','','Authors','','Citation','');
Использование MATLAB regexp функция и регулярные выражения, чтобы закольцовывать каждую статью в hits и извлечь идентификатор PubMed, дату публикации, название, реферат, авторов и цитирование. Поместить эту информацию в pmstruct структурный массив.
for n = 1:numel(hits)
pmstruct(n).PubMedID = regexp(hits{n},'(?<=PMID- ).*?(?=\n)','match', 'once');
pmstruct(n).PublicationDate = regexp(hits{n},'(?<=DP - ).*?(?=\n)','match', 'once');
pmstruct(n).Title = regexp(hits{n},'(?<=TI - ).*?(?=PG -|AB -)','match', 'once');
pmstruct(n).Abstract = regexp(hits{n},'(?<=AB - ).*?(?=AD -)','match', 'once');
pmstruct(n).Authors = regexp(hits{n},'(?<=AU - ).*?(?=\n)','match');
pmstruct(n).Citation = regexp(hits{n},'(?<=SO - ).*?(?=\n)','match', 'once');
endВыберите «Файл» > «Сохранить как».
Когда вы закончите, ваш файл должен выглядеть аналогично getpubmed.m файл, входящий в комплект программного обеспечения Панели инструментов биоинформатики. Файл расположен по адресу:
matlabroot\toolbox\bioinfo\biodemos\getpubmed.m
Примечание
Примечание matlabroot является корневым каталогом MATLAB, который является каталогом, в котором установлено программное обеспечение MATLAB.