Bioinformatics Toolbox™ включает несколько функций получения, которые извлекают информацию из различных веб-баз данных. Кроме того, с некоторыми базовыми MATLAB® навыки программирования, можно создать свою собственную функцию get для извлечения информации из определенной веб-базы данных.
Следующая процедура иллюстрирует, как создать функцию для извлечения информации из базы данных NCBI PubMed и чтения информации в структуру MATLAB. База данных NCBI PubMed содержит ссылки на биомедицинскую литературу и тезисы.
Следующая процедура показывает, как создать функцию с именем getpubmed
использование редактора MATLAB. Эта функция будет извлекать цитату и абстрактную информацию из поиска литературы PubMed и записывать данные в структуру MATLAB.
В частности, эта функция будет принимать один или несколько условий поиска, отправлять их в базу данных PubMed для поиска, а затем возвращать структуру или массив структуры MATLAB с каждой структурой, содержащей информацию для статьи, найденной поиском. Возвращенная информация будет включать идентификатор PubMed, дату публикации, заголовок, абстракцию, авторов и цитирование.
Функция также будет включать пары "имя-значение" свойства, которые позволяют пользователю функции ограничить поиск по дате публикации и ограничить количество возвращаемых записей. Ниже приведено пошаговое руководство по созданию функции с самого начала. Чтобы увидеть заполненный m-файл, введите edit getpubmed.m
.
В MATLAB откройте Редактор MATLAB, выбрав File > New > Function.
Определите 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®), формат (тип формата, такой как текст) и 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
Выберите File > Save As.
Когда вы сделаны, ваш файл должен выглядеть аналогично getpubmed.m
файл, включенный в программное обеспечение Bioinformatics Toolbox. Файл расположен по адресу:
matlabroot\toolbox\bioinfo\biodemos\getpubmed.m
Примечание
Обозначение matlabroot
- корневая директория MATLAB, являющийся директорией, в котором установлено программное обеспечение MATLAB.