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

Что, получают Функции?

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

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

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

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

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

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

  1. Из MATLAB, открытого редактор MATLAB путем выбора File > New > Function.

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

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

    medlineText = urlread(searchURL);
    
  10. Используйте выражения function regexp MATLAB и регулярные выражения, чтобы проанализировать и извлечь информацию в 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. Используйте выражения function regexp MATLAB и регулярные выражения, чтобы циклично выполниться через каждую статью в hits и извлечь PubMed ID, год издания, заголовок, краткий обзор, авторов и цитату. Поместите эту информацию в массив структур 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. Выберите File > Save As.

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

    matlabroot\toolbox\bioinfo\biodemos\getpubmed.m

    Примечание

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