Исследование вируса птичьего гриппа

В этом примере показано, как вычислить отношения Ka/Ks для восьми генов в H5N1 и вирусных геномах H2N3, и выполнить филогенетический анализ гена HA от вируса H5N1, изолированного от цыплят через Африку и Азию. Для филогенетического анализа вы восстановите соединяющее соседа дерево и создадите 3-D график расстояний последовательности с помощью многомерного масштабирования. Наконец, вы сопоставите географические точки, где каждая последовательность HA была найдена на региональной карте. Последовательности, используемые в этом примере, были выбраны из тематического исследования птичьего гриппа на Вычислительном Веб-сайте Геномики [1]. Примечание: итоговый раздел в этом примере требует Mapping Toolbox™.

Введение

Существует три типа вируса гриппа: Тип A, B и C. Все геномы гриппа состоят из восьми сегментов или генов что код для полимеразы B2 (PB2), полимеразы B1 (PB1), полимераза A (PA), гемагглютинин (HA), нуклеобелок (NP), нейраминидаза (NA), матрица (M1) и неструктурные белки (NS1). Примечание: у вируса Типа C есть эстераза гемагглютинина (HE), гомолог к HA.

Из трех типов гриппа Тип A имеет потенциал, чтобы быть самым разрушительным. Это влияет на птиц (его естественный резервуар), люди и другие млекопитающие и было главной причиной глобальных эпидемий гриппа. Тип B влияет только на людей, вызывающих локальные эпидемии, и Тип C не имеет тенденцию вызывать тяжелую болезнь.

Введите, гриппы далее классифицируются в различные подтипы согласно изменениям последовательностей аминокислот HA (H1-16) и NA (N1-9) белки. Оба белка расположены за пределами вируса. HA присоединяет вирус к клетке - хозяину, затем помогает в процессе вируса, сплавляемого в к ячейке. NA отсекает недавно созданный вирус от клетки - хозяина, таким образом, это может идти дальше к здоровой новой ячейке. Различие в составе аминокислоты в белке и recombination различного HA и белках NA способствует, чтобы Ввести способность гриппов перейти разновидности хоста (i.e. птица людям) и широкий спектр серьезности. Много новых наркотиков проектируются, чтобы предназначаться для HA и белков NA [2,3,4].

В 1 997, подтип H5N1 вируса птичьего гриппа, Тип вирус гриппа, сделал неожиданный скачок людям в Гонконге, вызывающем смертельные случаи шести человек. Чтобы управлять быстро распространяющейся болезнью, вся домашняя птица в Гонконге была уничтожена. Анализ последовательности вируса H5N1 показывают здесь [2,4].

Вычисление Отношения Ka/Ks Для Каждого Гена H5N1

Расследование отношений Ka/Ks для каждого сегмента гена вируса H5N1 обеспечит некоторое понимание, как каждый изменяется в зависимости от времени. Ka/Ks является отношением несинонимичных изменений в синонимичном в последовательности. Для более подробного объяснения отношений Ka/Ks смотрите Анализирующие Синонимичные и Несинонимичные Уровни Замены. Чтобы вычислить Ka/Ks, вам нужна копия гена от двух моментов времени. Можно использовать вирус H5N1, изолированный от цыплят в Гонконге в 1 997 и 2001. Для сравнения можно включать вирус H2N3, изолированный от крякв в Альберте в 1 977 и 1985 [1].

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

Загрузите H5N1 и данные о последовательности H2N3.

load('birdflu.mat','chicken1997','chicken2001','mallard1977','mallard1985')

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

chicken1997 = arrayfun(@(x)getgenbank(x{:}),{chicken1997.Accession});
chicken2001 = arrayfun(@(x)getgenbank(x{:}),{chicken2001.Accession});
mallard1977 = arrayfun(@(x)getgenbank(x{:}),{mallard1977.Accession});
mallard1985 = arrayfun(@(x)getgenbank(x{:}),{mallard1985.Accession});

Можно извлечь только фрагмент кодирования последовательностей нуклеотида с помощью featureparse функция. featureparse функция возвращает структуру с полями, содержащими информацию от раздела Features в файле GenBank включая с полем Sequence, которое содержит только последовательность кодирования.

for ii = 1:numel(chicken1997)
    ntSeq97{ii} = featureparse(chicken1997(ii),'feature','cds','sequence',true);
    ntSeq01{ii} = featureparse(chicken2001(ii),'feature','cds','sequence',true);
    ntSeq77{ii} = featureparse(mallard1977(ii),'feature','cds','sequence',true);
    ntSeq85{ii} = featureparse(mallard1985(ii),'feature','cds','sequence',true);
end

ntSeq97{1}
ans = 

  struct with fields:

                    Location: '<1..>2273'
                     Indices: [1 2273]
    UnknownFeatureBoundaries: 1
                        gene: 'PB2'
                 codon_start: '1'
                     product: 'PB2 protein'
                  protein_id: 'AAF02361.1'
                     db_xref: 'GI:6048850'
                 translation: 'RIKELRDLMSQSRTREILTKTTVDHMAIIKKYTSGRQEKNPALRMKWMMAMKYPITADKRIMEMIPERNEQGQTLWSKTNDAGSDRVMVSPLAVTWWNRNGPTTSTVHYPKVYKTYFEKVERLKHGTFGPVHFRNQVKIRRRVDMNPGHADLSAKEAQDVIMEVVFPNEVGARILTSESQLTITKEKREELKNCNISPLMVAYMLERELVRKTRFLPVAGGTSSVYIEVLHLTQGTCWEQMYTPGGEVRNDDVDQSLIIAARNIVRRATVSADPLASLLEMCHSTQIGGVRMVDILKQNPTEEQAVDICKAAMGLRISSSFSFGGFTFKRTKGFSVKREEEVLTGNLQTLKIQVHEGYEEFTMVGRRATAILRKATRRMIQLIVSGRDEQSIAEAIIVAMVFSQEDCMIKAVRGDLNFVNRANQRLNPMHQLLRHFQKDAKVLFQNWGIEPIDNVMGMIGILPDMTPSTEMSLRGVRVSKMGVDEYSSTERVVVSIDRFLRVRDQQGNVLLSPEEVSETQGMEKLTITYSSSMMWEINGPESVLVNTYQWIIRNWETVKIQWSQEPTMLYNKMEFEPFQSLVPKAARSQYSGFVRTLFQQMRDVLGTFDTVQIIKLLPFAAAPPEQSRMQFSSLTVNVRGSGMRILVRGNSPAFNYNKTTKRLTILGKDAGAITEDPDEGAAGVESAVLRGFLILGKEDKRYGPALSINELSNLTKGEKANVLIGQGDVVLVMKRKRDSSILTDSQTATKRIRMAIN'
                    Sequence: 'agaataaaagaactaagagatttgatgtcgcaatctcgcacacgcgagatactgacaaaaaccactgtggatcatatggccataattaagaagtacacatcaggaagacaggagaagaaccccgctcttagaatgaaatggatgatggcgatgaaatacccgatcacagctgacaaaagaataatggagatgatccctgaaaggaatgagcaaggtcaaactctttggagcaaaacaaatgacgctggatcagacagggtaatggtatcacctctggctgtaacgtggtggaacagaaatggaccaacaacaagtacagtccattatccaaaggtgtataaaacctactttgaaaaggttgaaagattaaaacacggaacctttggccctgttcatttccggaatcaagtcaaaatacgccgcagggttgacatgaaccctggccatgcagatctcagcgctaaagaagcacaagatgtcatcatggaggtcgttttcccaaatgaagttggagccaggatattgacatcagagtcacagctgacaataacaaaggaaaagagggaggaactcaagaattgtaatatttctcctttaatggtggcatatatgttggaaagagaattggttcgcaagaccagattcctaccagtggctggtgggacaagcagcgtatatatagaagtattgcatttgacccaaggaacctgctgggagcagatgtacacaccaggaggggaggtaagaaatgatgatgttgaccaaagtttaatcattgctgctaggaacattgtcaggagagcaacagtatcagcagacccattggcttcactcttggagatgtgccatagcacacaaattggcggagtaagaatggtagacatccttaaacaaaacccaacagaagagcaagctgtagatatatgcaaggcagcaatgggtttaagaatcagctcatccttcagctttggagggttcactttcaaaagaacaaaggggttttctgtcaaaagagaggaagaagtgcttacaggcaacctccaaacattgaagatacaagtacatgaaggatatgaggaattcacaatggttggacgaagagcaacagccattctaagaaaagcaaccagaaggatgatccaactgatagtcagcgggagggacgagcaatcaattgctgaggcaattattgtagcaatggtgttctcacaagaagattgcatgataaaggcagtccgaggtgatttgaatttcgtaaacagagcaaatcaacgactgaaccccatgcaccaactcctgagacacttccaaaaggatgcaaaggtgctgtttcaaaactggggaattgaaccaatcgacaatgtcatggggatgattggaatattgcctgacatgacccccagcacggaaatgtcactaagaggagtgagagttagtaaaatgggggtggatgaatattctagcactgaaagagtggtcgtgagcattgaccgtttcttaagggtccgagatcagcaaggaaatgtactcctatcccctgaagaagttagtgagacacagggaatggaaaagttgacgataacttattcatcgtctatgatgtgggaaattaacggcccagaatcagttctagttaacacataccaatggatcattaggaattgggagactgtaaagatccaatggtcccaagaacccaccatgctatacaataagatggagtttgaaccatttcaatctttagtaccaaaggctgccagaagccaatatagtggatttgtgagaacgctattccagcagatgcgtgatgttttgggaacatttgacactgttcaaataatcaaactactaccatttgcagcagccccacctgaacagagtaggatgcaattttcttctctgactgtgaatgtgaggggatcaggaatgagaatacttgtgagaggtaactcccctgcgtttaactacaacaagacaactaagaggcttacaatacttgggaaggacgcaggtgcaattacagaggacccagatgaaggagcagcaggggtagagtctgcagtattgagagggtttctaattctcggcaaagaagacaaaagatatggaccagcattgagcatcaatgaactgagcaatcttacgaaaggggagaaagctaatgtattgatagggcaaggagacgtggtgttggtaatgaaacggaaacgggactctagcatacttactgacagccagacagcgaccaaaagaattcggatggccatcaatta'

Визуальный осмотр структур последовательности показал, что некоторые гены имеют варианты соединения встык, представленные в файлах GenBank. Поскольку этот анализ находится только на PB2, PB1, PA, HA, NP, НА, M1 и генах NS1, необходимо удалить любые варианты соединения встык.

Удалите варианты соединения встык из 1 997 H5N1

ntSeq97{7}(1) = [];% M2
ntSeq97{8}(1) = [];% NS2

Удалите варианты соединения встык из 1 977 H2N3

ntSeq77{2}(2) = [];% PB1-F2
ntSeq77{7}(1) = [];% M2
ntSeq77{8}(1) = [];% NS2

Удалите варианты соединения встык из 1 985 H2N3

ntSeq85{2}(2) = [];% PB1-F2
ntSeq85{7}(1) = [];% M2
ntSeq85{8}(1) = [];% NS2

Необходимо выровнять последовательности нуклеотида, чтобы вычислить отношение Ka/Ks. Выровняйте последовательности белка для каждого гена (доступный в поле 'перевода') использование nwalign функция, затем вставьте разрывы в последовательность нуклеотида с помощью seqinsertgaps. Используйте функциональный dnds вычислить несинонимичные и синонимичные уровни замены для каждого из этих восьми генов в вирусных геномах. Если вы интересуетесь наблюдением выравниваний последовательности, установите 'многословную' опцию на истину при использовании dnds.

Названия генов гриппа

proteins = {'PB2','PB1','PA','HA','NP','NA','M1','NS1'};

Вирус H5N1

for ii = 1:numel(ntSeq97)
    [sc,align] = nwalign(ntSeq97{ii}.translation,ntSeq01{ii}.translation,'alpha','aa');
    ch97seq = seqinsertgaps(ntSeq97{ii}.Sequence,align(1,:));
    ch01seq = seqinsertgaps(ntSeq01{ii}.Sequence,align(3,:));
    [dn,ds] = dnds(ch97seq,ch01seq);
    H5N1.(proteins{ii}) = dn/ds;
end

Вирус H2N3

for ii = 1:numel(ntSeq77)
    [sc,align] = nwalign(ntSeq77{ii}.translation,ntSeq85{ii}.translation,'alpha','aa');
    ch77seq = seqinsertgaps(ntSeq77{ii}.Sequence,align(1,:));
    ch85seq = seqinsertgaps(ntSeq85{ii}.Sequence,align(3,:));
    [dn,ds] = dnds(ch77seq,ch85seq);
    H2N3.(proteins{ii}) = dn/ds;
end
H5N1
H2N3
H5N1 = 

  struct with fields:

    PB2: 0.0226
    PB1: 0.0240
     PA: 0.0307
     HA: 0.0943
     NP: 0.0517
     NA: 0.1015
     M1: 0.0460
    NS1: 0.3010


H2N3 = 

  struct with fields:

    PB2: 0.0048
    PB1: 0.0021
     PA: 0.0089
     HA: 0.0395
     NP: 0.0071
     NA: 0.0559
     M1: 0
    NS1: 0.1954

Примечание: результаты отношения Ka/Ks могут варьироваться от показанных на [1] из-за вариантов соединения встык последовательности.

Визуализируйте отношения Ka/Ks в 3-D столбчатом графике.

H5N1rates = cellfun(@(x)(H5N1.(x)),proteins);
H2N3rates = cellfun(@(x)(H2N3.(x)),proteins);
bar3([H2N3rates' H5N1rates']);
ax = gca;
ax.XTickLabel = {'H2N3','H5N1'};
ax.YTickLabel = proteins;
zlabel('Ka/Ks');
view(-115,16);
title('Ka/Ks Ratios for H5N1 (Chicken) and H2N3 (Mallard) Viruses');

NS1, HA и NA имеют больше несинонимичный с синонимичными отношениями по сравнению с другими генами и в H5N1 и в H2N3. Изменения последовательности белка в этих генах были приписаны увеличению патогенности H5N1. В частности, изменения в гене HA могут предоставить вирусу способность передать в разновидности других около птиц [2,3].

Выполнение филогенетического анализа белка HA

Вирус H5N1 присоединяет к ячейкам в желудочно-кишечном тракте птиц и дыхательных путях людей. Изменения в белке HA, который помогает связать вирус со здоровой ячейкой и упрощает ее присоединение к ячейке, то, что позволяет вирусу влиять на различные органы в тех же и различных разновидностях. Это может предоставить ему способность спрыгнуть с птиц людям [2,3]. Можно выполнить филогенетический анализ белка HA от вируса H5N1, изолированного от цыплят в разное время (годы) в различных областях Азии и Африки, чтобы исследовать их отношение друг другу.

Загрузите данные о последовательности аминокислот HA из 16 областей/времен из MAT-файла, обеспеченного birdflu.mat или получите актуальные данные о последовательности от репозитория NCBI с помощью getgenpept функция.

load('birdflu.mat','HA')
HA = arrayfun(@(x)getgenpept(x{:}),{HA.Accession});

Создайте новый массив структур, содержащий поля, соответствующие последовательности аминокислот (Последовательность) и информация об источнике (Заголовок). Можно извлечь информацию об источнике из HA с помощью featureparse затем проанализируйте с regexp.

for ii = 1:numel(HA)
    source = featureparse(HA(ii),'feature','source');
    strain = regexp(source.strain,'A/[Cc]hicken/(\w+\s*\w*).*/(\d+)','tokens');
    proteinHA(ii).Header = sprintf('%s_%s',char(strain{1}(1)),char(strain{1}(2)));
    proteinHA(ii).Sequence = HA(ii).Sequence;
end

proteinHA(1)
ans = 

  struct with fields:

      Header: 'Nigeria_2006'
    Sequence: 'mekivllfaivslvksdqicigyhannsteqvdtimeknvtvthaqdilekthngklcdldgvkplilrdcsvagwllgnpmcdeflnvpewsyivekinpandlcypgnfndyeelkhllsrinhfekiqiipksswsdheassgvssacpyqgrssffrnvvwlikkdnayptikrsynntnqedllvlwgihhpndaaeqtrlyqnpttyisvgtstlnqrlvpkiatrskvngqsgrmeffwtilkpndainfesngnfiapenaykivkkgdstimkseleygncntkcqtpigainssmpfhnihpltigecpkyvksnrlvlatglrnspqgerrrkkrglfgaiagfieggwqgmvdgwygyhhsneqgsgyaadkestqkaidgvtnkvnsiidkmntqfeavgrefnnlerrienlnkkmedgfldvwtynaellvlmenertldfhdsnvknlydkvrlqlrdnakelgngcfefyhrcdnecmesvrngtydypqyseearlkreeisgvklesigtyqilsiystvasslalaimvaglslwmcsngslqcrici'

Выровняйте последовательности аминокислот HA с помощью multialign и визуализируйте выравнивание с seqalignviewer.

alignHA = multialign(proteinHA);
seqalignviewer(alignHA);

Вычислите расстояния между последовательностями с помощью seqpdist с методом Jukes-Cantor. Используйте seqneighjoin восстановить филогенетическое дерево с помощью соединяющего соседа метода. Seqneighjoin возвращает phytree объект.

distHA = seqpdist(alignHA,'method','Jukes-Cantor','alpha','aa');
HA_NJtree = seqneighjoin(distHA,'equivar',alignHA);

Используйте view метод сопоставлен с phytree объекты открыть дерево в Инструменте Phylogenetic Tree.

view(HA_NJtree);

Визуализация расстояний последовательности с многомерным масштабированием (MDS)

Другой способ визуализировать отношение между последовательностями состоит в том, чтобы использовать многомерное масштабирование (MDS) с расстояниями, вычисленными для филогенетического дерева. Эта функциональность обеспечивается cmdscale функция в Statistics and Machine Learning Toolbox™.

[Y,eigvals] = cmdscale(distHA);

Можно использовать собственные значения, возвращенные cmdscale помочь вести ваше решение о том, использовать ли первые два или три измерения в вашем графике.

sigVecs = [1:3;eigvals(1:3)';eigvals(1:3)'/max(abs(eigvals))];
report = ['Dimension   Eigenvalues    Normalized' ...
          sprintf('\n    %d\t      %1.4f         %1.4f',sigVecs)];
display(report);
report =

    'Dimension   Eigenvalues    Normalized
         1	      0.0062         1.0000
         2	      0.0028         0.4462
         3	      0.0014         0.2209'

Первые две размерности представляют значительную часть данных, но третье все еще содержит информацию, которая может помочь разрешить кластеры в данных о последовательности. Можно создать трехмерный график рассеивания с помощью plot3 функция.

locations = {proteinHA(:).Header};
figure
plot3(Y(:,1),Y(:,2),Y(:,3),'ok');
text(Y(:,1)+0.002,Y(:,2),Y(:,3)+0.001,locations,'interpreter','no');
title('MDS Plot of HA Sequences');
view(-21,12);

Кластеры, кажется, соответствуют группировкам в филогенетическом дереве. Найдите последовательности, принадлежащие каждому кластеру с помощью subtree метод phytree. Один из subtreeнеобходимые входные параметры являются номером узла (количество листов + количество ветвей), который будет корневым узлом нового поддерева. Для вашего примера кластер, содержащий Хэбэй и Гонконг в графике MDS, эквивалентен поддереву, корневой узел которого является Ветвью 14, который является Узлом 30 (16 листов + 14 ветвей).

cluster1 = get(subtree(HA_NJtree,30),'LeafNames');
cluster2 = get(subtree(HA_NJtree,21),'LeafNames');
cluster3 = get(subtree(HA_NJtree,19),'LeafNames');

Получите индекс для последовательностей, принадлежащих каждому кластеру.

[cl1,cl1_ind] = intersect(locations,cluster1);
[cl2,cl2_ind] = intersect(locations,cluster2);
[cl3,cl3_ind] = intersect(locations,cluster3);
[cl4,cl4_ind] = setdiff(locations,{cl1{:} cl2{:} cl3{:}});

Измените цветные и символы маркера на графике MDS соответствовать каждому кластеру.

h = plot3(Y(cl1_ind,1),Y(cl1_ind,2),Y(cl1_ind,3),'^',...
    Y(cl2_ind,1),Y(cl2_ind,2),Y(cl2_ind,3),'o',...
    Y(cl3_ind,1),Y(cl3_ind,2),Y(cl3_ind,3),'d',...
    Y(cl4_ind,1),Y(cl4_ind,2),Y(cl4_ind,3),'v');
numClusters = 4;
col = autumn(numClusters);
for i = 1:numClusters
    h(i).MarkerFaceColor = col(i,:);
end
set(h(:),'MarkerEdgeColor','k');
text(Y(:,1)+0.002,Y(:,2),Y(:,3),locations,'interpreter','no');
title('MDS Plot of HA Sequences');
view(-21,12);

Для более подробной информации об использовании отношений Ka/Ks филогенетика и MDS для анализа последовательности видят Кристьанини и Хана [5].

Отображение географических областей вируса H5N1 на карте Африки и Азии

ПРИМЕЧАНИЕ: Вам нужен Mapping Toolbox, чтобы произвести следующую фигуру.

Используя инструменты от Mapping Toolbox, можно построить местоположение, где каждый вирус был изолирован на карте Африки и Азии. Для этого вам нужны широта и долгота для каждого местоположения. Для получения информации о нахождении картографических данных в Интернете смотрите, Находят Картографические данные Онлайн. Широта и долгота для столицы каждой географической области, где вирусы были изолированы, обеспечиваются для этого примера.

Создайте структуру геоstruct, regionHA, это содержит географическую информацию для каждой функции или последовательность, чтобы быть отображенным. Геоstruct требуется, чтобы иметь Геометрию, Лэта и поля Лона, которые задают тип функции, широту и долготу. Эта информация используется путем отображения функций в Mapping Toolbox, чтобы отобразить картографические данные.

[regionHA(1:16).Geometry] = deal('Point');
[regionHA(:).Lat] = deal(9.10, 34.31, 15.31, 39.00, 39.00, 39.00, 55.26,...
                        15.56, 34.00, 33.14, 34.20, 23.00, 37.35, 44.00,...
                        22.11, 22.11);
[regionHA(:).Lon] = deal(7.10, 69.08, 32.35, 116.00, 116.00, 116.00,...
                        65.18, 105.48, 114.00, 131.36, 131.40, 113.00,...
                        127.00, 127.00, 114.14, 114.14);

Геоstruct может также иметь поля атрибута, которые содержат дополнительную информацию о каждой функции. Добавьте поля Name и Cluster атрибута в regionHA структура. Поле Cluster содержит кластерный номер последовательности, который вы будете использовать, чтобы идентифицировать кластерное членство последовательностей.

[regionHA(:).Name] = deal(proteinHA.Header);

[regionHA(cl1_ind).Cluster] = deal(1);
[regionHA(cl2_ind).Cluster] = deal(2);
[regionHA(cl3_ind).Cluster] = deal(3);
[regionHA(cl4_ind).Cluster] = deal(4);

regionHA(1)
ans = 

  struct with fields:

    Geometry: 'Point'
         Lat: 9.1000
         Lon: 7.1000
        Name: 'Nigeria_2006'
     Cluster: 3

Создайте структуру с помощью makesymbolspec функция, которая будет содержать маркер и спецификации цветов для каждого маркера, который будет отображен на карте. Вы передадите эту структуру geoshow функция. Маркеры символа и цвета собираются соответствовать кластерам в графике MDS.

clusterSymbols = makesymbolspec('Point',...
   {'Cluster',1,'Marker', '^'},...
   {'Cluster',2,'Marker', 'o'},...
   {'Cluster',3,'Marker', 'd'},...
   {'Cluster',4,'Marker', 'v'},...
   {'Cluster',[1 4],'MarkerFaceColor',autumn(4)},...
   {'Default','MarkerSize', 6},...
   {'Default','MarkerEdgeColor','k'});

Загрузите информацию об отображении и используйте geoshow функционируйте, чтобы построить вирусные местоположения на карте.

load coast
load topo
figure
fig = gcf;
fig.Renderer = 'zbuffer';
worldmap([-45 85],[0 160])
setm(gca,'mapprojection','robinson',...
    'plabellocation',30,'mlabelparallel',-45,'mlabellocation',30)
plotm(lat, long)
geoshow(topo, topolegend, 'DisplayType', 'texturemap')
demcmap(topo)
brighten(.60)

geoshow(regionHA,'SymbolSpec',clusterSymbols);
title('Geographic Locations of HA Sequence in Africa and Asia')

Просмотр географических необходимых областей в земле Google™

ПРИМЕЧАНИЕ: Вам нужен Mapping Toolbox, чтобы экспортировать данные в KML-отформатированный файл.

Используя kmlwrite функция от Mapping Toolbox, можно записать местоположение и информацию об аннотации для каждой последовательности к KML-отформатированному файлу. Google Earth отображает географические данные из файлов KML в его Наземном браузере. kmlwrite Mapping Toolbox функция переводит геоstruct, такой как regionHA, в KML-отформатированный файл, который будет использоваться Google Earth. Для получения дополнительной информации о kmlwrite смотрите Экспортирующие Векторные Данные о Точке к KML.

Можно далее аннотировать каждую последовательность информацией от раздела Features файла GenBank с помощью featureparse функция. Можно затем использовать эту информацию, чтобы заполнить геоstruct, regionHA, и отобразите его в табличной форме как тег описания для каждого placemark в браузере Google Earth. В геоstruct обязательными полями является Геометрия, Лэт и поле Лона. Все другие поля считаются атрибутами placemark.

for i = 1:numel(HA)
    feats = featureparse(HA(i),'Feature','source');
    regionHA(i).Strain = feats.strain;
    if isfield(feats,'country')
        regionHA(i).Country = feats.country;
    else
        regionHA(i).Country = 'N/A';
    end
    year = regexp(regionHA(i).Name,'\d+','match');
    regionHA(i).Year = year{1};
    % Create a link to GenPept record through the accession number
    regionHA(i).AccessionNumber = ...
        ['<a href="http://www.ncbi.nlm.nih.gov/sites/entrez?db=Protein&cmd=search&term=',...
        HA(i).Accession,'">',HA(i).Accession,'</a>'];
end

[regionHA.SequenceLength] = deal(HA.LocusSequenceLength);

Создайте структуру атрибута с помощью makeattribspec функция, которую вы будете использовать, чтобы отформатировать таблицу описания для каждого маркера. Структура атрибута диктует порядок и форматирование каждого атрибута. Можно также использовать его, чтобы не отобразить один из атрибутов в геоstruct, regionHA.

attribStruct = makeattribspec(regionHA);

Удалите Поле имени и переупорядочьте поля в структуре атрибута.

attribStruct = rmfield(attribStruct,'Name');

attribStruct = orderfields(attribStruct,{'AccessionNumber','Strain',...
    'SequenceLength','Country','Year','Cluster'});

regionHA = orderfields(regionHA,{'AccessionNumber','Strain',...
    'SequenceLength','Country','Year','Cluster','Geometry','Lon','Lat',...
    'Name'});

Переформатируйте метки атрибута для отображения в таблице.

attribStruct.AccessionNumber.AttributeLabel = '<b>Accession Number</b>';
attribStruct.Strain.AttributeLabel = '<b>Viral Strain</b>';
attribStruct.SequenceLength.AttributeLabel = '<b>Sequence Length</b>';
attribStruct.Country.AttributeLabel = '<b>Country of Origin</b>';
attribStruct.Year.AttributeLabel = '<b>Year Isolated</b>';
attribStruct.Cluster.AttributeLabel = '<b>Cluster Membership</b>';

Просмотр файла в Google Earth.

Запишите regionHA геоstruct к KML-отформатированному файлу во временной директории.

kmlDirectory = tempdir;
filename = fullfile(kmlDirectory,'HA_geographic_locations.kml');
kmlwrite(filename,regionHA,'Description',attribStruct,'Name',{regionHA.Strain},...
    'Icon','http://maps.google.com/mapfiles/kml/shapes/arrow.png','iconscale',1.5);

Можно отобразить файл KML в браузере Google Earth [6]. Google Earth должен быть установлен в системе. На платформах Windows® отобразите файл KML с:

winopen(filename)

Для пользователей UNIX и пользователей Mac, отобразите файл KML с:

cmd = 'googleearth ';
fullfilename = fullfile(pwd, filename);
system([cmd fullfilename])

В данном примере файл KML был ранее отображен с помощью Google Earth Pro. Изображение Google Earth было затем сохраненным использованием меню "File-> Save Image" Google Earth. Это - то, как данные в вашем файле KML изучают, когда загружено Google Earth. Получить это представление move вокруг и увеличить масштаб области по Азии.

Кликните по placemark, чтобы просмотреть информацию о последовательности. Инвентарный номер в каждой таблице данных является гиперссылкой на файл последовательности GenPept в Базе данных Белка NCBI.

Опционально, удалите новый файл KML из своего KML директория выхода.

delete(filename)
close all

Ссылки

[1] https://computationalgenomics.blogs.bristol.ac.uk/case_studies/birdflu_demo

[2] Лейвер, W.G., Bischofberger, N. и Уэбстер, R.G., "разоружая вирусы гриппа", научный американец, 280 (1):78-87, 1999.

[3] Suzuki, Y. и Masatoshi, N., "Источник и эволюция вирусных генов гемагглютинина гриппа", молекулярная биология и эволюция, 19 (4):501-9, 2002.

[4] Gambaryan, A., и др., "Эволюция приемника обязательный фенотип гриппа вирусы (H5)", Вирусология, 344 (2):432-8, 2006.

[5] Cristianini, N. и Хан, M.W., "Введение в вычислительную геномику: подход тематических исследований", издательство Кембриджского университета, 2007.

[6] Изображения Google Earth были получены с помощью Google Earth Pro. Для получения дополнительной информации о Google Earth и Google Earth Pro, посетите http://earth.google.com /