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

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

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

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

Создание полученной функции

Следующая процедура показывает, как создать функцию с именем 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 функция будет использовать, а именно, 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)];
    
  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. Выберите File > Save As.

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

    matlabroot\toolbox\bioinfo\biodemos\getpubmed.m

    Примечание

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