exponenta event banner

Получение информации из веб-базы данных

Что такое функции?

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

Следующая процедура иллюстрирует создание функции для извлечения информации из базы данных NCBI PubMed и считывания информации в структуру MATLAB. База данных NCBI PubMed содержит ссылки на биомедицинскую литературу и рефераты.

Создание функции getpubmed

В следующей процедуре показано, как создать функцию с именем getpubmed с помощью редактора MATLAB. Эта функция извлекает цитируемую и абстрактную информацию из поиска литературы PubMed и записывает данные в структуру MATLAB.

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

Функция также будет включать пары имя-значение свойства, которые позволяют пользователю функции ограничить поиск по дате публикации и количество возвращаемых записей. Ниже приведено пошаговое руководство по созданию функции с самого начала. Чтобы просмотреть завершенный m-файл, введите edit getpubmed.m.

  1. В MATLAB откройте редактор MATLAB, выбрав Файл > Создать > Функция.

  2. Определите getpubmed функция, ее входные аргументы и возвращаемые значения путем ввода:

    function pmstruct = getpubmed(searchterm,varargin)
    % GETPUBMED Search PubMed database & write results to MATLAB structure
  3. Добавьте код, чтобы выполнить базовую проверку ошибок для требуемого ввода SEARCHTERM.

    % Error checking for required input SEARCHTERM
    if(nargin<1)
        error(message('bioinfo:getpubmed:NotEnoughInputArguments'));
    end
  4. Создайте переменные для двух пар имя-значение свойства и задайте их значения по умолчанию.

    % Set default settings for property name/value pairs, 
    % 'NUMBEROFRECORDS' and 'DATEOFPUBLICATION'
    maxnum = 50; % NUMBEROFRECORDS default is 50
    pubdate = ''; % DATEOFPUBLICATION default is an empty string
  5. Добавьте код для синтаксического анализа двух пар имя-значение свойства, если они предоставляются в качестве входных данных.

    % 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
  6. Доступ к базе данных 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';
  7. Создание переменных, содержащих пять определенных параметров, которые 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)];
    
  8. Создайте переменную, содержащую URL-адрес поиска, из переменных, созданных на предыдущих шагах.

    % Create search URL
    searchURL = [baseSearchURL,dbOpt,termOpt,reportOpt,formatOpt,maxOpt];
  9. Используйте urlread функция для отправки URL поиска, извлечения результатов поиска и возврата результатов (в виде текста в типе отчета MEDLINE) в medlineText, символьный массив.

    medlineText = urlread(searchURL);
    
  10. Использование MATLAB regexp функция и регулярные выражения для анализа и извлечения информации в medlineText в hitsмассив ячеек, где каждая ячейка содержит текст в формате MEDLINE для одной статьи. Первый ввод является массивом символов для поиска, второй ввод является поисковым выражением, которое сообщает regexp функция для поиска всех записей, которые начинаются с PMID-, в то время как третий вход, 'match', говорит regexp функция для возврата фактических записей, а не позиций записей.

    hits = regexp(medlineText,'PMID-.*?(?=PMID|</pre>$)','match');
    
  11. Создать экземпляр pmstruct структура, возвращенная getpubmed содержит шесть полей.

    pmstruct = struct('PubMedID','','PublicationDate','','Title','',...
                 'Abstract','','Authors','','Citation','');
    
  12. Использование 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
  13. Выберите «Файл» > «Сохранить как».

    Когда вы закончите, ваш файл должен выглядеть аналогично getpubmed.m файл, входящий в комплект программного обеспечения Панели инструментов биоинформатики. Файл расположен по адресу:

    matlabroot\toolbox\bioinfo\biodemos\getpubmed.m

    Примечание

    Примечание matlabroot является корневым каталогом MATLAB, который является каталогом, в котором установлено программное обеспечение MATLAB.