Этот пример показывает функциональную совместимость между MATLAB® и Биоperl - передающие аргументы от MATLAB до скриптов Perl и отступающих данных о поиске BLAST к MATLAB.
ПРИМЕЧАНИЕ: Perl и модули Биоperl должны быть установлены, чтобы запустить скрипты Perl в этом примере. Начиная с версии 1.4 модули Биоperl имеют зависимость warnings.pm, требующую, по крайней мере, версии 5.6 Perl. Если вы испытываете затруднения при выполнении скриптов Perl, убедитесь, что переменная окружения PERL5LIB включает путь к установке Биоperl, или попытайтесь запуститься из директории установки Биоperl. Смотрите ссылки в http://www.perl.com и http://bioperl.org/ для текущих файлов версии и инструкции по полной установке.
Gleevec™ (STI571 или иматиниб mesylate) был первым утвержденным препаратом, который в частности выключит сигнал известного вызывающего рак белка. Первоначально утвержденный, чтобы обработать хроническую миелогенную лейкемию (CML), это также эффективно для обработки желудочно-кишечных стромальных опухолей (GIST).
Исследование идентифицировало несколько генных целей для Gleevec включая: киназа белка тирозина протоонкогена ABL1 (NP_009297), киназа белка тирозина Протоонкогена Кит (NP_000213) и Выведенный из пластинки альфа-предшественник приемника фактора роста (NP_006197).
target_ABL1 = 'NP_009297'; target_Kit = 'NP_000213'; target_PDGFRA = 'NP_006197';
Можно загрузить информацию о последовательности для этих белков из локальных текстовых файлов GenPept с помощью genpeptread.
ABL1_seq = getfield(genpeptread('ABL1_gp.txt'), 'Sequence'); Kit_seq = getfield(genpeptread('Kit_gp.txt'), 'Sequence'); PDGFRA_seq = getfield(genpeptread('PDGFRA_gp.txt'), 'Sequence');
В качестве альтернативы можно получить информацию о белке непосредственно из онлайновой базы данных GenPept, обеспеченной Национальным Центром информации о Биотехнологии (NCBI).
Запустите эти команды, чтобы загрузить данные из NCBI:
% ABL1_seq = getgenpept(target_ABL1, 'SequenceOnly', true); % Kit_seq = getgenpept(target_Kit, 'SequenceOnly', true); % PDGFRA_seq = getgenpept(target_PDGFRA, 'SequenceOnly', true);
MATLAB, который является командой, дает информацию о размере этих последовательностей.
whos ABL1_seq whos Kit_seq whos PDGFRA_seq
Name Size Bytes Class Attributes ABL1_seq 1x1149 2298 char Name Size Bytes Class Attributes Kit_seq 1x976 1952 char Name Size Bytes Class Attributes PDGFRA_seq 1x1089 2178 char
Из MATLAB можно использовать существующие модули Биоperl, чтобы запустить поиск BLAST на этих последовательностях. MW_BLAST.pl является программой Perl на основе модуля Биоperl RemoteBlast. Это читает последовательности из файлов FASTA, поэтому запустите путем создания файла FASTA для каждой последовательности.
fastawrite('ABL1.fa', 'ABL1 Proto-oncogene tyrosine-protein kinase (NP_009297)', ABL1_seq); fastawrite('Kit.fa', 'Kit Proto-oncogene tyrosine-protein kinase (NP_000213)', Kit_seq); fastawrite('PDGFRA.fa', 'PDGFRA alpha precursor (NP_006197)', PDGFRA_seq);
Поисковые запросы BLAST могут занять много времени, чтобы возвратить результаты и программу Perl, MW_BLAST включает повторяющееся состояние сна, чтобы ждать отчета. Демонстрационные результаты были включены с этим примером, но если вы хотите попытаться запустить поиск BLAST с этими тремя последовательностями, не прокомментировать следующие команды. MW_BLAST.pl сохранит результаты BLAST в трех файлах на вашем диске, ABL1.out, Kit.out и PDGFRA.out. Процесс может занять 15 минут или больше.
% try % perl('MW_BLAST.pl','blastp','pdb','1e-10','ABL1.fa','Kit.fa','PDGFRA.fa'); % catch % error(message('bioinfo:bioperldemo:PerlError')) % end
Вот код Perl для MW_BLAST:
type MW_BLAST.pl
#!/usr/bin/perl -w use Bio::Tools::Run::RemoteBlast; use strict; use 5.006; # A sample Blast program based on the RemoteBlast.pm Bioperl module. Takes # parameters for the BLAST search program, the database, and the expectation # or E-value (defaults: blastp, pdb, 1e-10), followed by a list of FASTA files # containing sequences to search. # Copyright 2003-2004 The MathWorks, Inc. # Retrieve arguments and set parameters my $prog = shift @ARGV; my $db = shift @ARGV; my $e_val= shift @ARGV; my @params = ('-prog' => $prog, '-data' => $db, '-expect' => $e_val, '-readmethod' => 'SearchIO' ); # Create a remote BLAST factory my $factory = Bio::Tools::Run::RemoteBlast->new(@params); # Change a parameter in RemoteBlast $Bio::Tools::Run::RemoteBlast::HEADER{'ENTREZ_QUERY'} = 'Homo sapiens [ORGN]'; # Remove a parameter from RemoteBlast delete $Bio::Tools::Run::RemoteBlast::HEADER{'FILTER'}; # Submit each file while ( defined($ARGV[0])) { my $fa_file = shift @ARGV; my $str = Bio::SeqIO->new(-file=>$fa_file, '-format' => 'fasta' ); my $r = $factory->submit_blast($fa_file); # Wait for the reply and save the output file while ( my @rids = $factory->each_rid ) { foreach my $rid ( @rids ) { my $rc = $factory->retrieve_blast($rid); if( !ref($rc) ) { if( $rc < 0 ) { $factory->remove_rid($rid); } sleep 5; } else { my $result = $rc->next_result(); my $filename = $result->query_name()."\.out"; $factory->save_output($filename); $factory->remove_rid($rid); } } } }
Следующий шаг должен проанализировать выходные отчеты и найти баллы> = 100. Можно затем идентифицировать хиты, найденные больше чем одним белком для дальнейшего исследования, возможно идентифицировав новые цели для медикаментозного лечения.
try protein_list = perl('MW_parse.pl', which('ABL1.out'), which('Kit.out'), which('PDGFRA.out')) catch error(message('bioinfo:bioperldemo:PerlError')) end
protein_list = ' /tmp/BR2019bd_1170825_64229/publish_examples2/tp09112f5a/ex40921867/ABL1.out 1OPL, 2584, 0.0, Chain A, Structural Basis For The Auto-Inhibition Of C-Abl... 1FMK, 923, 1e-100, Crystal Structure Of Human Tyrosine-Protein Kinase C-Src p... 1QCF, 919, 1e-100, Chain A, Crystal Structure Of Hck In Complex With A Src Fa... 1KSW, 916, 1e-100, Chain A, Structure Of Human C-Src Tyrosine Kinase (Thr338g... 1AD5, 883, 6e-96, Chain A, Src Family Kinase Hck-Amp-Pnp Complex pdb|1AD5|B ... 2ABL, 866, 5e-94, Sh3-Sh2 Domain Fragment Of Human Bcr-Abl Tyrosine Kinase 3LCK, 666, 9e-71, The Kinase Domain Of Human Lymphocyte Kinase (Lck), Activa... 1QPE, 666, 9e-71, Chain A, Structural Analysis Of The Lymphocyte-Specific Ki... 1QPD, 656, 1e-69, Chain A, Structural Analysis Of The Lymphocyte-Specific Ki... 1K2P, 620, 2e-65, Chain A, Crystal Structure Of Bruton's Tyrosine Kinase Dom... 1BYG, 592, 3e-62, Chain A, Kinase Domain Of Human C-Terminal Src Kinase (Csk... 1M7N, 561, 1e-58, Chain A, Crystal Structure Of Unactivated Apo Insulin-Like... 1JQH, 560, 2e-58, Chain A, Igf-1 Receptor Kinase Domain pdb|1JQH|B Chain B, ... 1P4O, 560, 2e-58, Chain A, Structure Of Apo Unactivated Igf-1r Kinase Domain... 1K3A, 553, 1e-57, Chain A, Structure Of The Insulin-Like Growth Factor 1 Rec... 1GJO, 550, 2e-57, Chain A, The Fgfr2 Tyrosine Kinase Domain 1FVR, 540, 3e-56, Chain A, Tie2 Kinase Domain pdb|1FVR|B Chain B, Tie2 Kinas... 1AB2, 528, 9e-55, Proto-Oncogene Tyrosine Kinase (E.C.2.7.1.112) (Src Homolo... 1IRK, 525, 2e-54, Insulin Receptor (Tyrosine Kinase Domain) Mutant With Cys ... 1I44, 523, 3e-54, Chain A, Crystallographic Studies Of An Activation Loop Mu... 1IR3, 522, 4e-54, Chain A, Phosphorylated Insulin Receptor Tyrosine Kinase I... 1FGK, 522, 4e-54, Chain A, Crystal Structure Of The Tyrosine Kinase Domain O... 1P14, 521, 6e-54, Chain A, Crystal Structure Of A Catalytic-Loop Mutant Of T... 1M14, 496, 4e-51, Chain A, Tyrosine Kinase Domain From Epidermal Growth Fact... 1PKG, 496, 4e-51, Chain A, Structure Of A C-Kit Kinase Product Complex pdb|1... 1VR2, 463, 3e-47, Chain A, Human Vascular Endothelial Growth Factor Receptor... 1JU5, 330, 8e-32, Chain C, Ternary Complex Of An Crk Sh2 Domain, Crk-Derived... 1BBZ, 317, 3e-30, Chain A, Crystal Structure Of The Abl-Sh3 Domain Complexed... 1AWO, 303, 1e-28, The Solution Nmr Structure Of Abl Sh3 And Its Relationship... 1BBZ, 303, 1e-28, Chain E, Crystal Structure Of The Abl-Sh3 Domain Complexed... 1G83, 287, 8e-27, Chain A, Crystal Structure Of Fyn Sh3-Sh2 pdb|1G83|B Chain... 1LCK, 270, 7e-25, Chain A, Sh3-Sh2 Domain Fragment Of Human P56-Lck Tyrosine... 1MUO, 233, 1e-20, Chain A, Crystal Structure Of Aurora-2, An Oncogenic Serin... 1GRI, 232, 2e-20, Chain A, Grb2 pdb|1GRI|B Chain B, Grb2 1A9U, 220, 4e-19, The Complex Structure Of The Map Kinase P38SB203580 pdb|1B... 1BMK, 213, 3e-18, Chain A, The Complex Structure Of The Map Kinase P38SB2186... 1IAN, 209, 8e-18, Human P38 Map Kinase Inhibitor Complex 1GZ8, 208, 1e-17, Chain A, Human Cyclin Dependent Kinase 2 Complexed With Th... 1OVE, 208, 1e-17, Chain A, The Structure Of P38 Alpha In Complex With A Dihy... 1OIT, 207, 1e-17, Chain A, Imidazopyridines: A Potent And Selective Class Of... 1B38, 206, 2e-17, Chain A, Human Cyclin-Dependent Kinase 2 pdb|1B39|A Chain ... 1OGU, 206, 2e-17, Chain A, Structure Of Human Thr160-Phospho Cdk2CYCLIN A CO... 1E9H, 206, 2e-17, Chain A, Thr 160 Phosphorylated Cdk2 - Human Cyclin A3 Com... 1JST, 206, 2e-17, Chain A, Phosphorylated Cyclin-Dependent Kinase-2 Bound To... 1WFC, 206, 2e-17, Structure Of Apo, Unphosphorylated, P38 Mitogen Activated ... 1QMZ, 206, 2e-17, Chain A, Phosphorylated Cdk2-Cyclyin A-Substrate Peptide C... 1DI8, 206, 2e-17, Chain A, The Structure Of Cyclin-Dependent Kinase 2 (Cdk2)... 1H1P, 206, 2e-17, Chain A, Structure Of Human Thr160-Phospho Cdk2CYCLIN A CO... 1DI9, 205, 2e-17, Chain A, The Structure Of P38 Mitogen-Activated Protein Ki... 1H4L, 202, 5e-17, Chain A, Structure And Regulation Of The Cdk5-P25(Nck5a) C... --------------------- WARNING --------------------- MSG: No HSPs for this minimal Hit (pdb|1H01|A) If using NCBI BLAST, check bits() instead --------------------------------------------------- --------------------- WARNING --------------------- MSG: No HSPs for this minimal Hit (pdb|1OIR|A) If using NCBI BLAST, check bits() instead --------------------------------------------------- --------------------- WARNING --------------------- MSG: No HSPs for this minimal Hit (pdb|1GII|A) If using NCBI BLAST, check bits() instead --------------------------------------------------- --------------------- WARNING --------------------- MSG: No HSPs for this minimal Hit (pdb|1CSY|A) If using NCBI BLAST, check bits() instead --------------------------------------------------- --------------------- WARNING --------------------- MSG: No HSPs for this minimal Hit (pdb|1F3M|C) If using NCBI BLAST, check bits() instead --------------------------------------------------- --------------------- WARNING --------------------- MSG: No HSPs for this minimal Hit (pdb|1A81|A) If using NCBI BLAST, check bits() instead --------------------------------------------------- --------------------- WARNING --------------------- MSG: No HSPs for this minimal Hit (pdb|1H1W|A) If using NCBI BLAST, check bits() instead --------------------------------------------------- --------------------- WARNING --------------------- MSG: No HSPs for this minimal Hit (pdb|1B6C|B) If using NCBI BLAST, check bits() instead --------------------------------------------------- --------------------- WARNING --------------------- MSG: No HSPs for this minimal Hit (pdb|1IG1|A) If using NCBI BLAST, check bits() instead --------------------------------------------------- --------------------- WARNING --------------------- MSG: No HSPs for this minimal Hit (pdb|1JKK|A) If using NCBI BLAST, check bits() instead --------------------------------------------------- --------------------- WARNING --------------------- MSG: No HSPs for this minimal Hit (pdb|1JOW|B) If using NCBI BLAST, check bits() instead --------------------------------------------------- --------------------- WARNING --------------------- MSG: No HSPs for this minimal Hit (pdb|1BI8|A) If using NCBI BLAST, check bits() instead --------------------------------------------------- --------------------- WARNING --------------------- MSG: No HSPs for this minimal Hit (pdb|1O6K|A) If using NCBI BLAST, check bits() instead --------------------------------------------------- --------------------- WARNING --------------------- MSG: No HSPs for this minimal Hit (pdb|1GZK|A) If using NCBI BLAST, check bits() instead --------------------------------------------------- --------------------- WARNING --------------------- MSG: No HSPs for this minimal Hit (pdb|1GZN|A) If using NCBI BLAST, check bits() instead --------------------------------------------------- --------------------- WARNING --------------------- MSG: No HSPs for this minimal Hit (pdb|1O6L|A) If using NCBI BLAST, check bits() instead --------------------------------------------------- --------------------- WARNING --------------------- MSG: No HSPs for this minimal Hit (pdb|1BHF|A) If using NCBI BLAST, check bits() instead --------------------------------------------------- --------------------- WARNING --------------------- MSG: No HSPs for this minimal Hit (pdb|1LCJ|A) If using NCBI BLAST, check bits() instead --------------------------------------------------- --------------------- WARNING --------------------- MSG: No HSPs for this minimal Hit (pdb|1PME|) If using NCBI BLAST, check bits() instead --------------------------------------------------- --------------------- WARNING --------------------- MSG: No HSPs for this minimal Hit (pdb|1CM8|A) If using NCBI BLAST, check bits() instead --------------------------------------------------- --------------------- WARNING --------------------- MSG: No HSPs for this minimal Hit (pdb|1A1A|A) If using NCBI BLAST, check bits() instead --------------------------------------------------- --------------------- WARNING --------------------- MSG: No HSPs for this minimal Hit (pdb|3HCK|) If using NCBI BLAST, check bits() instead --------------------------------------------------- --------------------- WARNING --------------------- MSG: No HSPs for this minimal Hit (pdb|1AOT|F) If using NCBI BLAST, check bits() instead --------------------------------------------------- --------------------- WARNING --------------------- MSG: No HSPs for this minimal Hit (pdb|1PMQ|A) If using NCBI BLAST, check bits() instead --------------------------------------------------- --------------------- WARNING --------------------- MSG: No HSPs for this minimal Hit (pdb|1LKK|A) If using NCBI BLAST, check bits() instead --------------------------------------------------- --------------------- WARNING --------------------- MSG: No HSPs for this minimal Hit (pdb|1JNK|) If using NCBI BLAST, check bits() instead --------------------------------------------------- --------------------- WARNING --------------------- MSG: No HSPs for this minimal Hit (pdb|1SHD|A) If using NCBI BLAST, check bits() instead --------------------------------------------------- --------------------- WARNING --------------------- MSG: No HSPs for this minimal Hit (pdb|1LKL|A) If using NCBI BLAST, check bits() instead --------------------------------------------------- --------------------- WARNING --------------------- MSG: No HSPs for this minimal Hit (pdb|1BM2|A) If using NCBI BLAST, check bits() instead --------------------------------------------------- --------------------- WARNING --------------------- MSG: No HSPs for this minimal Hit (pdb|1BMB|A) If using NCBI BLAST, check bits() instead --------------------------------------------------- --------------------- WARNING --------------------- MSG: No HSPs for this minimal Hit (pdb|1CWD|L) If using NCBI BLAST, check bits() instead --------------------------------------------------- --------------------- WARNING --------------------- MSG: No HSPs for this minimal Hit (pdb|1BHH|B) If using NCBI BLAST, check bits() instead --------------------------------------------------- --------------------- WARNING --------------------- MSG: No HSPs for this minimal Hit (pdb|1IA8|A) If using NCBI BLAST, check bits() instead --------------------------------------------------- --------------------- WARNING --------------------- MSG: No HSPs for this minimal Hit (pdb|1FBZ|A) If using NCBI BLAST, check bits() instead --------------------------------------------------- --------------------- WARNING --------------------- MSG: No HSPs for this minimal Hit (pdb|1IJR|A) If using NCBI BLAST, check bits() instead --------------------------------------------------- /tmp/BR2019bd_1170825_64229/publish_examples2/tp09112f5a/ex40921867/Kit.out 1PKG, 974, 1e-106, Chain A, Structure Of A C-Kit Kinase Product Complex pdb|1... 1VR2, 805, 6e-87, Chain A, Human Vascular Endothelial Growth Factor Receptor... 1GJO, 730, 3e-78, Chain A, The Fgfr2 Tyrosine Kinase Domain 1FGK, 700, 8e-75, Chain A, Crystal Structure Of The Tyrosine Kinase Domain O... 1OPL, 410, 4e-41, Chain A, Structural Basis For The Auto-Inhibition Of C-Abl... 1FVR, 405, 1e-40, Chain A, Tie2 Kinase Domain pdb|1FVR|B Chain B, Tie2 Kinas... 1M7N, 383, 5e-38, Chain A, Crystal Structure Of Unactivated Apo Insulin-Like... 1P4O, 383, 5e-38, Chain A, Structure Of Apo Unactivated Igf-1r Kinase Domain... 1JQH, 381, 8e-38, Chain A, Igf-1 Receptor Kinase Domain pdb|1JQH|B Chain B, ... 1QCF, 377, 2e-37, Chain A, Crystal Structure Of Hck In Complex With A Src Fa... 1K3A, 371, 1e-36, Chain A, Structure Of The Insulin-Like Growth Factor 1 Rec... 1I44, 368, 3e-36, Chain A, Crystallographic Studies Of An Activation Loop Mu... 1IRK, 367, 3e-36, Insulin Receptor (Tyrosine Kinase Domain) Mutant With Cys ... 1P14, 361, 2e-35, Chain A, Crystal Structure Of A Catalytic-Loop Mutant Of T... 1IR3, 361, 2e-35, Chain A, Phosphorylated Insulin Receptor Tyrosine Kinase I... 3LCK, 354, 1e-34, The Kinase Domain Of Human Lymphocyte Kinase (Lck), Activa... 1QPE, 354, 1e-34, Chain A, Structural Analysis Of The Lymphocyte-Specific Ki... 1QPD, 354, 1e-34, Chain A, Structural Analysis Of The Lymphocyte-Specific Ki... 1AD5, 348, 6e-34, Chain A, Src Family Kinase Hck-Amp-Pnp Complex pdb|1AD5|B ... 1KSW, 344, 2e-33, Chain A, Structure Of Human C-Src Tyrosine Kinase (Thr338g... 1FMK, 344, 2e-33, Crystal Structure Of Human Tyrosine-Protein Kinase C-Src p... 1BYG, 342, 3e-33, Chain A, Kinase Domain Of Human C-Terminal Src Kinase (Csk... 1M14, 335, 2e-32, Chain A, Tyrosine Kinase Domain From Epidermal Growth Fact... 1K2P, 294, 1e-27, Chain A, Crystal Structure Of Bruton's Tyrosine Kinase Dom... 1H4L, 167, 5e-13, Chain A, Structure And Regulation Of The Cdk5-P25(Nck5a) C... 1PME, 158, 6e-12, Structure Of Penta Mutant Human Erk2 Map Kinase Complexed ... 1F3M, 156, 1e-11, Chain C, Crystal Structure Of Human SerineTHREONINE KINASE... /tmp/BR2019bd_1170825_64229/publish_examples2/tp09112f5a/ex40921867/PDGFRA.out 1PKG, 625, 5e-66, Chain A, Structure Of A C-Kit Kinase Product Complex pdb|1... 1VR2, 550, 2e-57, Chain A, Human Vascular Endothelial Growth Factor Receptor... 1FGI, 500, 1e-51, Chain A, Crystal Structure Of The Tyrosine Kinase Domain O... 1GJO, 492, 1e-50, Chain A, The Fgfr2 Tyrosine Kinase Domain 1FVR, 419, 4e-42, Chain A, Tie2 Kinase Domain pdb|1FVR|B Chain B, Tie2 Kinas... 1QCF, 380, 1e-37, Chain A, Crystal Structure Of Hck In Complex With A Src Fa... 1QPE, 364, 9e-36, Chain A, Structural Analysis Of The Lymphocyte-Specific Ki... 1QPD, 364, 9e-36, Chain A, Structural Analysis Of The Lymphocyte-Specific Ki... 3LCK, 360, 2e-35, The Kinase Domain Of Human Lymphocyte Kinase (Lck), Activa... 1OPL, 358, 4e-35, Chain A, Structural Basis For The Auto-Inhibition Of C-Abl... 1FMK, 354, 1e-34, Crystal Structure Of Human Tyrosine-Protein Kinase C-Src p... 1KSW, 353, 2e-34, Chain A, Structure Of Human C-Src Tyrosine Kinase (Thr338g... 1AD5, 353, 2e-34, Chain A, Src Family Kinase Hck-Amp-Pnp Complex pdb|1AD5|B ... 1BYG, 352, 2e-34, Chain A, Kinase Domain Of Human C-Terminal Src Kinase (Csk... 1I44, 351, 3e-34, Chain A, Crystallographic Studies Of An Activation Loop Mu... 1IRK, 350, 4e-34, Insulin Receptor (Tyrosine Kinase Domain) Mutant With Cys ... 1M7N, 349, 5e-34, Chain A, Crystal Structure Of Unactivated Apo Insulin-Like... 1JQH, 349, 5e-34, Chain A, Igf-1 Receptor Kinase Domain pdb|1JQH|B Chain B, ... 1P4O, 349, 5e-34, Chain A, Structure Of Apo Unactivated Igf-1r Kinase Domain... 1P14, 344, 2e-33, Chain A, Crystal Structure Of A Catalytic-Loop Mutant Of T... 1IR3, 343, 2e-33, Chain A, Phosphorylated Insulin Receptor Tyrosine Kinase I... 1K3A, 338, 9e-33, Chain A, Structure Of The Insulin-Like Growth Factor 1 Rec... 1M14, 332, 4e-32, Chain A, Tyrosine Kinase Domain From Epidermal Growth Fact... 1K2P, 315, 4e-30, Chain A, Crystal Structure Of Bruton's Tyrosine Kinase Dom... 1PME, 167, 6e-13, Structure Of Penta Mutant Human Erk2 Map Kinase Complexed ... 1JOW, 155, 1e-11, Chain B, Crystal Structure Of A Complex Of Human Cdk6 And ... 1BI8, 155, 1e-11, Chain A, Mechanism Of G1 Cyclin Dependent Kinase Inhibitio... 1F3M, 150, 6e-11, Chain C, Crystal Structure Of Human SerineTHREONINE KINASE... '
Это - код для MW_parse:
type MW_parse.pl
#!/usr/bin/perl use Bio::SearchIO; use strict; use 5.006; # A sample BLAST parsing program based on the SearchIO.pm Bioperl module. Takes # a list of BLAST report files and prints a list of the top hits from each # report based on an arbitrary minimum score. # Copyright 2003-2012 The MathWorks, Inc. # Set a cutoff value for the raw score. my $min_score = 100; # Take each report name and print information about the top hits. my $seq_count = 0; while ( defined($ARGV[0])) { my $breport = shift @ARGV; print "\n$breport\n"; my $in = new Bio::SearchIO(-format => 'blast', -file => $breport); my $num_hit = 0; my $short_desc; while ( my $result = $in->next_result) { while ( my $curr_hit = $result->next_hit ) { if ( $curr_hit->raw_score >= $min_score ) { if (length($curr_hit->description) >= 60) { $short_desc = substr($curr_hit->description, 0, 58)."..."; } else { $short_desc = $curr_hit->description; } print $curr_hit->accession, ", ", $curr_hit->raw_score, ", ", $curr_hit->significance, ", ", $short_desc, "\n"; } $num_hit++; } } $seq_count++; }
Если вы работаете на Windows®, также возможно вызвать функции MATLAB от Perl. Можно запустить MATLAB в режиме Automation Server при помощи переключателя Automation / в команде запуска MATLAB (например, D:\applications\matlab7x\bin\matlab.exe / Автоматизация).
Вот скрипт, чтобы проиллюстрировать процесс запуска сервера автоматизации, вызова функций MATLAB и передающих переменных между Perl и MATLAB.
type MATLAB_from_Perl.pl
#!/usr/bin/perl -w use Win32::OLE; use Win32::OLE::Variant; # Simple perl script to execute commands in Matlab. # Note the name Win32::OLE is misleading and this actually uses COM! # # Use existing instance if Matlab is already running. eval {$matlabApp = Win32::OLE->GetActiveObject('Matlab.Application')}; die "Matlab not installed" if $@; unless (defined $matlabApp) { $matlabApp = Win32::OLE->new('Matlab.Application') or die "Oops, cannot start Matlab"; } # Examples of executing MATLAB commands - these functions execute in # MATLAB and return the status. @exe_commands = ("IRK = pdbread('pdb1irk.ent');", "LCK = pdbread('pdb3lck.ent');", "seqdisp(IRK)", "seqdisp(LCK)", "[Score, Alignment] = swalign(IRK, LCK,'showscore',1);"); # send the commands to Matlab foreach $exe_command (@exe_commands) { $status = &send_to_matlab('Execute', $exe_command); print "Matlab status = ", $status, "\n"; } sub send_to_matlab { my ($call, @command) = @_; my $status = 0; print "\n>> $call( @command )\n"; $result = $matlabApp->Invoke($call, @command); if (defined($result)) { unless ($result =~ s/^.\?{3}/Error:/) { print "$result\n" unless ($result eq ""); } else { print "$result\n"; $status = -1; } } return $status; } # Examples of passing variables between MATLAB and Perl. # # MATLAB supoprts passing character arrays directly with the following syntax: # # PutCharArray([in] BSTR name, [in] BSTR workspace, [in] BSTR string); # GetCharArray([in] BSTR name, [in] BSTR workspace, [out] BSTR string); &send_to_matlab('PutCharArray', 'centralDogma', 'base', 'DNA->RNA->Protein.'); &send_to_matlab('GetCharArray', 'centralDogma', 'base'); # Numeric arrays can be passed by reference in a SAFEARRAY using the # PutFullMatrix and GetFullMatrix functions. # # PutFullMatrix([in] BSTR name, [in] BSTR workspace, [in] BSTR data); # GetFullMatrix([in] BSTR varname, [in] BSTR workspace, [out] BSTR retdata); $mReal = Variant(VT_ARRAY|VT_R8, 4, 4); $mImag = Variant(VT_ARRAY|VT_R8, 4, 4); $mReal->Put([[0,0,0,0], [0,0,0,0], [0,0,0,0], [0,0,0,0]]); print "\n>> PutFullMatrix( 'magicArray', 'base', ",'$mReal, $mImag'," )\n"; $matlabApp->PutFullMatrix('magicArray', 'base', $mReal, $mImag); $matlabApp->Execute('magicArray = magic(4)'); $m2Real = Variant(VT_ARRAY|VT_R8|VT_BYREF,4,4); $m2Imag = Variant(VT_ARRAY|VT_R8|VT_BYREF,4,4); print "\n>> GetFullMatrix( 'magicArray', 'base', ",'$m2Real, $m2Imag'," )\n"; $matlabApp->GetFullMatrix('magicArray', 'base', $m2Real, $m2Imag); for ($i = 0; $i < 4; $i++) { printf "%3d %3d %3d %3d\n", $m2Real->Get($i,0), $m2Real->Get($i,1), $m2Real->Get($i,2), $m2Real->Get($i,3); } # Additionally, you can use Variants to send scalar variables by reference # to MATLAB for all data types except sparse arrays and function handles through # PutWorkspaceData: # PutWorkspaceData([in] BSTR name, [in] BSTR workspace, [in] BSTR data); # # Results are passed back to Perl directly with GetVariable: # HRESULT = GetVariable([in] BSTR Name, [in] BSTR Workspace); # Create and initialize a date Variant. $dnaDate = Variant->new(VT_DATE|VT_BYREF, 'Feb 28, 1953'); &send_to_matlab('PutWorkspaceData', 'dnaDate', 'base', $dnaDate); &send_to_matlab('Execute', 'dnaDate'); # Create and initialize a new string Variant. $aminoString = Variant->new(VT_BSTR|VT_BYREF, 'matlap'); &send_to_matlab('PutWorkspaceData', 'aminoAcids', 'base', $aminoString); # Change the value in MATLAB &send_to_matlab('Execute', "aminoAcids = 'ARNDCQEGHILKMFPSTWYV';"); # Bring the new value back $aa = $matlabApp->GetVariable('aminoAcids', 'base'); printf "Amino acid codes: %s\n", $aa; undef $matlabApp; # close Matlab if we opened it
MATLAB предлагает дополнительные инструменты для анализа белка и дальнейшего исследования с этими белками. Например, чтобы получить доступ к последовательностям и запустить полное выравнивание Смита-лодочника на области киназы тирозина человеческого приемника инсулина (pdb 1IRK) и области киназы человеческой киназы лимфоцита (pdb 3LCK), загрузите данные о последовательности:
IRK = pdbread('pdb1irk.ent'); LCK = pdbread('pdb3lck.ent'); % Run these commands to bring the data from the Internet: % IRK = getpdb('1IRK'); % LCK = getpdb('3LCK');
Теперь выполните локальное выравнивание с алгоритмом Смита-лодочника. MATLAB использует BLOSUM 50 в качестве матрицы выигрыша значения по умолчанию для строк AA со штрафом разрыва 8. Конечно, можно изменить любой из этих параметров.
[Score, Alignment] = swalign(IRK, LCK, 'showscore', true);
showalignment(Alignment);
MATLAB и Bioinformatics Toolbox™ предлагают дополнительные инструменты для исследования нуклеотида и последовательностей аминокислот. Например, pdbdistplot отображает расстояния между атомами и аминокислотами в структуре PDB, в то время как ramachandran генерирует график угла скрученности PHI и угол скрученности PSI последовательности белка. Функция тулбокса proteinplot обеспечивает графический интерфейс пользователя (GUI), чтобы легко импортировать последовательности и построить различные свойства, такие как гидрофобность.