The most acidic and basic amino acids in Swiss-Prot were identified by calculating their isoelectric points. Glutamic acid was found to be the most acidic with a pI of 3.22, while lysine was the most basic with a pI of 10.76. Biologically, acidic and basic amino acids are often found on the surface of proteins where they can participate in electrostatic interactions.
The Perforce Web Content Management System development team, lacking a pre-existing solution in PHP, designed and implemented their own object model and record layer to ease the interaction of the system with the Perforce Server. This session will focus on how users can access files in Perforce via a simple CRUD API, the subsystems exposed, and their usage.
vfsStream - a better approach for file system dependent testsFrank Kleine
Have you ever been annoyed by testing classes or functions operating on the file system? Be it tests that rely on presence of physical files, the problem of not cleaning up correctly after the test run or checking that your algorithm creates the correct directories and files with correct file permissions. Then this is for you: vfsStream to the rescue!
The Perforce Web Content Management System development team, lacking a pre-existing solution in PHP, designed and implemented their own object model and record layer to ease the interaction of the system with the Perforce Server. This session will focus on how users can access files in Perforce via a simple CRUD API, the subsystems exposed, and their usage.
vfsStream - a better approach for file system dependent testsFrank Kleine
Have you ever been annoyed by testing classes or functions operating on the file system? Be it tests that rely on presence of physical files, the problem of not cleaning up correctly after the test run or checking that your algorithm creates the correct directories and files with correct file permissions. Then this is for you: vfsStream to the rescue!
This describes a Functional Programming approach to computing AWS Glacier "tree hash" values, hiding the tail-call elimination in Perl5 with a keyword and also shows how to accomplish the same result in Perl6.
This was the talk actually given at YAPC::NA 2016 by Dr. Conway and myself.
Face it, backticks are a pain. BASH $() construct provides a simpler, more effective approach. This talk uses examples from automating git branches and command line processing with getopt(1) to show how $() works in shell scripts.
This is the seventh set of slightly updated slides from a Perl programming course that I held some years ago.
I want to share it with everyone looking for intransitive Perl-knowledge.
A table of content for all presentations can be found at i-can.eu.
The source code for the examples and the presentations in ODP format are on https://github.com/kberov/PerlProgrammingCourse
Building Lithium Apps (Like a Boss) was a workshop presented on the structure and philosophy of the Lithium framework and its applications, and how best to take advantage of them.
This describes a Functional Programming approach to computing AWS Glacier "tree hash" values, hiding the tail-call elimination in Perl5 with a keyword and also shows how to accomplish the same result in Perl6.
This was the talk actually given at YAPC::NA 2016 by Dr. Conway and myself.
Face it, backticks are a pain. BASH $() construct provides a simpler, more effective approach. This talk uses examples from automating git branches and command line processing with getopt(1) to show how $() works in shell scripts.
This is the seventh set of slightly updated slides from a Perl programming course that I held some years ago.
I want to share it with everyone looking for intransitive Perl-knowledge.
A table of content for all presentations can be found at i-can.eu.
The source code for the examples and the presentations in ODP format are on https://github.com/kberov/PerlProgrammingCourse
Building Lithium Apps (Like a Boss) was a workshop presented on the structure and philosophy of the Lithium framework and its applications, and how best to take advantage of them.
Jose María Ordovás-El impacto de las ciencias ómicas en la nutrición, la medi...Fundación Ramón Areces
El 29 de marzo de 2016 celebramos un Simposio Internacional sobre el 'Impacto de las ciencias ómicas en la medicina, nutrición y biotecnología'. Organizado por la Fundación Ramón Areces en colaboración con la Real Academia Nacional de Medicina y BioEuroLatina, abordó cómo un mejor conocimiento del genoma humano está permitiendo notables avances hacia una medicina de precisión.
A talk from Washington Canvas User Group about using the Common Cartridge and QTI formats to import content into Canvas. Code up at https://github.com/drlippman/canvas-scripts
Everyone talks about raising the bar on quality of code, but it's always hard to start implementing it when you have no clue where to start. With this talk I'm shooing that there are many levels developers can improve themselves by using the right tools. In this talk I'll go over each tool with examples how to use them against your codebase. A must attend talk for every developer that wants to scale up their quality. Most PHP developers deploy code that does what the customer requested but they don't have a clue about the quality of the product they deliver. Without this knowledge, maintenance can be a hell and very expensive. In this workshop I cover unit testing, code measuring, performance testing, debugging and profiling and give tips and tricks how to continue after this workshop.
PHP 5.3 has many new features that allow very different paradigms of software development, that may be unfamiliar to many PHP developers. If you want to learn more about functional or aspect-oriented programming, or how to organize your PHP libraries according to the new de facto PHP namespacing standard, don't miss this talk.
Everyone talks about raising the bar on quality of code, but it's always hard to start implementing it when you have no clue where to start. With this talk I'm shooing that there are many levels developers can improve themselves by using the right tools. In this talk I'll go over each tool with examples how to use them against your codebase. A must attend talk for every developer that wants to scale up their quality. Most PHP developers deploy code that does what the customer requested but they don't have a clue about the quality of the product they deliver. Without this knowledge, maintenance can be a hell and very expensive. In this workshop I cover unit testing, code measuring, performance testing, debugging and profiling and give tips and tricks how to continue after this workshop.
Supercharging WordPress Development in 2018Adam Tomat
Slide links:
- PHP-FIG: https://www.php-fig.org/psr
- Timber: https://www.upstatement.com/timber/
- Bedrock: https://roots.io/bedrock/
- Lumberjack: https://github.com/Rareloop/lumberjack
- Lumberjack Core: https://github.com/Rareloop/lumberjack-core
- Collections: https://laravel.com/docs/5.6/collections
- PHP-DI: http://php-di.org/
- Lumberjack Validation: https://github.com/Rareloop/lumberjack-validation
- Sessions: https://github.com/Rareloop/lumberjack-core/tree/ft-session
- Lumberjack Example Repo: https://github.com/Rareloop/lumberjack-example
- Laravel Responsable: https://laravel-news.com/laravel-5-5-responsable
Towards the end of 2015 Rareloop launched their WordPress starter theme Lumberjack, which built on open source tools such as Bedrock and Timber. We wanted to move Lumberjack forward inline with everything we have learnt over the years of using it - which meant completely re-writing it from the ground up. The new Lumberjack is now stable and ready for use!
This talk is aimed at anyone involved in working with WordPress, regardless of how technical you are. The beauty of Lumberjack is that you can use as much or as little as you like, so whether you’re new to web development or a seasoned software engineer there will be something here for you.
Go beyond the documentation and explore some of what's possible if you stretch symfony to its limits. We will look at a number of aspects of symfony 1.4 and Doctrine 1.2 and tease out some powerful functionality you may not have expected to find, but will doubtless be able to use. Topics covered will include routing, forms, the config cache and record listeners. If you're comfortable in symfony and wondering what's next, this session is for you.
This workshop is a hands-on training where a real Zend Framework application is used as an example to start improving QA using tools to test, document and perform software metric calculations to indicate where the software can be improved. I also explain the reports produced by a CI system.
TYPO3 Extension development using new Extbase frameworkChristian Trabold
My presentation for the TYPO3 community day in Tokyo, Japan.
The code is available at https://github.com/ctrabold/t3ski-workshop.
Due to copyright issues I had to remove all pictures of Miffy.
Training on php by cyber security infotech (csi). Cs-infotech is one of the best cyber security and website development company in India. we also provide Network security, software development, Cyber security corporate training and SEO and SMO services.
Our services are Employee Monitoring System,Employee Monitoring Software,Website Audit,Network Security,Network Audit and Information Security.
Biological screening of herbal drugs: Introduction and Need for
Phyto-Pharmacological Screening, New Strategies for evaluating
Natural Products, In vitro evaluation techniques for Antioxidants, Antimicrobial and Anticancer drugs. In vivo evaluation techniques
for Anti-inflammatory, Antiulcer, Anticancer, Wound healing, Antidiabetic, Hepatoprotective, Cardio protective, Diuretics and
Antifertility, Toxicity studies as per OECD guidelines
How to Make a Field invisible in Odoo 17Celine George
It is possible to hide or invisible some fields in odoo. Commonly using “invisible” attribute in the field definition to invisible the fields. This slide will show how to make a field invisible in odoo 17.
Unit 8 - Information and Communication Technology (Paper I).pdfThiyagu K
This slides describes the basic concepts of ICT, basics of Email, Emerging Technology and Digital Initiatives in Education. This presentations aligns with the UGC Paper I syllabus.
Read| The latest issue of The Challenger is here! We are thrilled to announce that our school paper has qualified for the NATIONAL SCHOOLS PRESS CONFERENCE (NSPC) 2024. Thank you for your unwavering support and trust. Dive into the stories that made us stand out!
Honest Reviews of Tim Han LMA Course Program.pptxtimhan337
Personal development courses are widely available today, with each one promising life-changing outcomes. Tim Han’s Life Mastery Achievers (LMA) Course has drawn a lot of interest. In addition to offering my frank assessment of Success Insider’s LMA Course, this piece examines the course’s effects via a variety of Tim Han LMA course reviews and Success Insider comments.
2024.06.01 Introducing a competency framework for languag learning materials ...Sandy Millin
http://sandymillin.wordpress.com/iateflwebinar2024
Published classroom materials form the basis of syllabuses, drive teacher professional development, and have a potentially huge influence on learners, teachers and education systems. All teachers also create their own materials, whether a few sentences on a blackboard, a highly-structured fully-realised online course, or anything in between. Despite this, the knowledge and skills needed to create effective language learning materials are rarely part of teacher training, and are mostly learnt by trial and error.
Knowledge and skills frameworks, generally called competency frameworks, for ELT teachers, trainers and managers have existed for a few years now. However, until I created one for my MA dissertation, there wasn’t one drawing together what we need to know and do to be able to effectively produce language learning materials.
This webinar will introduce you to my framework, highlighting the key competencies I identified from my research. It will also show how anybody involved in language teaching (any language, not just English!), teacher training, managing schools or developing language learning materials can benefit from using the framework.
Embracing GenAI - A Strategic ImperativePeter Windle
Artificial Intelligence (AI) technologies such as Generative AI, Image Generators and Large Language Models have had a dramatic impact on teaching, learning and assessment over the past 18 months. The most immediate threat AI posed was to Academic Integrity with Higher Education Institutes (HEIs) focusing their efforts on combating the use of GenAI in assessment. Guidelines were developed for staff and students, policies put in place too. Innovative educators have forged paths in the use of Generative AI for teaching, learning and assessments leading to pockets of transformation springing up across HEIs, often with little or no top-down guidance, support or direction.
This Gasta posits a strategic approach to integrating AI into HEIs to prepare staff, students and the curriculum for an evolving world and workplace. We will highlight the advantages of working with these technologies beyond the realm of teaching, learning and assessment by considering prompt engineering skills, industry impact, curriculum changes, and the need for staff upskilling. In contrast, not engaging strategically with Generative AI poses risks, including falling behind peers, missed opportunities and failing to ensure our graduates remain employable. The rapid evolution of AI technologies necessitates a proactive and strategic approach if we are to remain relevant.
Instructions for Submissions thorugh G- Classroom.pptxJheel Barad
This presentation provides a briefing on how to upload submissions and documents in Google Classroom. It was prepared as part of an orientation for new Sainik School in-service teacher trainees. As a training officer, my goal is to ensure that you are comfortable and proficient with this essential tool for managing assignments and fostering student engagement.
5. The ‘structure’ of a Hash
• An array looks something like this:
@array =
Index
Value
0 1 2
'val1' 'val2' 'val3'
• A hash looks something like this:
Rob Matt Joe_A
353-7236 353-7122 555-1212
Key (name)
Value
%phone =
6. Sub routine
$a=5;
$b=9;
$sum=Optellen(5,9);
print "The SUM is $sumn";
sub Optellen()
{
$d=@_[0];
$e=@_[1];
#alternatively we could do this:
my($a,$b)=@_;
my($answer)=$d+$e;
return $answer;
}
7. Overview
• Advanced data structures in Perl
• Object-oriented Programming in Perl
• Bioperl: is a large collection of Perl
software for bioinformatics
• Motivation:
– Simple extension: “Multiline parsing“
more difficult than expected
• Goal: to make software modular,
easier to maintain, more reliable, and
easier to reuse
8. Multi-line parsing
use strict;
use Bio::SeqIO;
my $filename="sw.txt";
my $sequence_object;
my $seqio = Bio::SeqIO -> new (
'-format' => 'swiss',
'-file' => $filename
);
while ($sequence_object = $seqio -> next_seq) {
my $sequentie = $sequence_object-> seq();
print $sequentie."n";
}
9. Advanced data structures in Perl
• The scalar, array and hash data
structures are builtin datatypes in Perl
and cover most programming needs
• More complex data structures can be
built from this basic ones
10. References: Scalars
• Advanced data structures depend on
Perl references. A reference is a scalar
variable that “points at” some other
value (the “referent”)
$peptide = “TGDTSGGT”;
$peptideref = $peptide;
Print $peptideref.”n”;
Print $$peptideref.”n”;
13. Anonymous References
Anonymous …
• A value need not be contained in a defined variable to
create a reference
• To create an anonymous array reference, use square
brackets instead of parentheses:
• $a_ref = [20, 30, 50, “hi!!”];
• @a = @$a_ref;
– @a (20, 30, 50, “hi!!”);
• For hash references, use curly brackets instead of
parentheses:
• $h_ref={“sky”=>‘blue’,“grass”=>‘green’}
• %h = %$h_ref;
– %h (“sky” => ‘blue’, “grass” => ‘green’);
15. The key idea
• All data is stored and used by means
of objects, and each object can only be
accessed by means of the defined
subroutines call methods.
• Together, the objects and methods
constitute a class
• Warning: a lot of conflicting
terminology among 00 practitioners
16. Perl 00
• A class is a package
• An object is a reference to a data
structure (usually a hash) in a class
• A method is a subroutine in the class
17. Perl Classes
• Modules/Packages
– A Perl module is a file that uses a package
declaration
– Packages provide a separate namespace for
different parts of program
– A namespace protects the variable of one part of
a program from unwanted modification by
another part of the program
– The module must always have a last line that
evaluates to true, e.g. 1;
– The module must be in “known” directory
(environment variable)
• Eg … site/lib/bio/Sequentie.pm
18. Bioperl.pl
use Bio::Sequentie;
use Data::Dumper;
%sequence_object =
(_id=>"AF001",_name=>"Demo",_seq=>"ATGAT
G");
print Dumper(%sequence_object);
$seqRef = %sequence_object;
Bio::Sequentie::RandomSeq($seqRef,100);
print Dumper($seqRef);
19. .. /site/lib/bio/Sequentie.pm
package Bio::Sequentie;
use strict;
use Data::Dumper;
sub RandomSeq {
my @nucleotides = ('A','C','G','T');
my $self = shift;
#print $self;
print Dumper($self);
my $length = shift || 40;
print $length;
$self->{_id} = "0000";
$self->{_name} = "Random Sequence";
$self->{_seq}="";
for (my $i = 0; $i < $length; $i++) {
my $base = $nucleotides[int(rand(4))];
$self->{_seq} .= $base;
}
#return 1;
}
1;
20. Bless
• Making objects … Bless attaches a
class name to a reference, making it
possible to use references as objects in
a class
21. Bioperl.pl
use Bio::Sequentie;
use Data::Dumper;
%sequence_object =
(_id=>"AF001",_name=>"Demo",_se
q=>"ATGATG");
$seqRef = %sequence_object;
bless ($seqRef,"Bio::Sequentie");
$seqRef->RandomSeq(100);
print Dumper($seqRef);
22. Bless
• Making objects … Bless attaches a
class name to a reference, making it
possible to use references as objects in
a class
• New is the usual name given to the
special method in the class that creates
a new class object (CONSTRUCTOR)
23. Method: NEW (constructor)
sub new {
print "new";
my ($class, $id, $name, $seq) = @_;
my $ref =
{_id=>$id,_name=>$name,_seq=>$se
q};
return bless $ref, $class;
}
24. Random Sequence an OO Way
use Bio::Sequentie;
use Data::Dumper;
$seqRef=Bio::Sequentie-
>new("007","Constructor","it works");
print Dumper($seqRef);
$seqRef->RandomSeq(100);
print Dumper($seqRef);
25. Review
• Three OO rules
– Classes are packages
– Methods are subroutines
– Objects are blessed referents
• Bless ($seq, “Bio::Seq”;)
26. CPAN
• CPAN: The Comprehensive Perl
Archive Network is available at
www.cpan.org and is a very large
respository of Perl modules for all
kind of taks (including bioperl)
27. What is BioPerl?
• An ‘open source’ project
– http://bio.perl.org or http://www.cpan.org
• A loose international collaboration of
biologist/programmers
– Nobody (that I know of) gets paid for this
• A collection of PERL modules and methods for
doing a number of bioinformatics tasks
– Think of it as subroutines to do biology
• Consider it a ‘tool-box’
– There are a lot of nice tools in there, and (usually)
somebody else takes care of fixing parsers when
they break
• BioPerl code is portable - if you give somebody
a script, it will probably work on their system
28. What BioPerl isn’t
• ‘Out of the box’ solutions to problems
– You will have to know a little perl, and you will have
to read documentation
• Particularly well documented
– Yes, there is documentation, but it can be difficult to
see the ‘big picture’ - or sometimes the small picture
• It can be a substantial investment in time to
learn how to use bioperl properly
– Once you get used to it, it is pretty simple to
do some complicated things
29. Installing Modules
Steps for installing modules
Uncompress the module
Gunzip file.tar.gz
Tar –xvf file.tar
perl Makefile.PL
make
make test
make install
30. Bioperl installation
• PPM
• Perl Package Manager
• Search Bioperl
• Install Bioperl
• What is the PPM?
• The Programmer's Package Manager (PPM), formerly known
as the Perl Package Manager, provides a command line
interface for managing your modules and extensions
(packages). PPM is used to access package repositories (or
collections of packages on other machines), install and
remove packages from your system, as well as update
previously installed packages with the latest versions.
• E:PerlBinppm
31. Installation on Windows (ActiveState)
• Using PPM shell to install BioPerl
– Get the number of the BioPerl repository:
– PPM>repository
– Set the BioPerl repository, find BioPerl, install
BioPerl:
– PPM>repository set <BioPerl repository number>
– PPM>search *
– PPM>install <BioPerl package number>
• Download BioPerl in archive form from
– http://www.BioPerl.org/Core/Latest/index.shtml
– Use winzip to uncompress and install
32. Directory Structure
• BioPerl directory structure organization:
– Bio/ BioPerl modules
– models/ UML for BioPerl classes
– t/ Perl built-in tests
– t/data/ Data files used for the tests
– scripts/ Reusable scripts that use BioPerl
– scripts/contributed/ Contributed scripts not
necessarily integrated into BioPerl.
– doc/ "How To" files and the FAQ as XML
33.
34. # Let the code begin
Seq Objects
SeqIO Objects
36. Multi-line parsing
use strict;
use Bio::SeqIO;
my $filename="sw.txt";
my $sequence_object;
my $seqio = Bio::SeqIO -> new (
'-format' => 'swiss',
'-file' => $filename
);
while ($sequence_object = $seqio -> next_seq) {
my $sequentie = $sequence_object-> seq();
print $sequentie."n";
}
37. Live.pl
#!e:Perlbinperl.exe -w
# script for looping over genbank entries, printing out name
use Bio::DB::Genbank;
use Data::Dumper;
$gb = new Bio::DB::GenBank();
$sequence_object = $gb->get_Seq_by_id('MUSIGHBA1');
print Dumper ($sequence_object);
$seq1_id = $sequence_object->display_id();
$seq1_s = $sequence_object->seq();
print "seq1 display id is $seq1_id n";
print "seq1 sequence is $seq1_s n";
38. Live2.pl
#!e:Perlbinperl.exe -w
# script for looping over genbank entries, printing out name
use Bio::DB::Genbank
$gb = new Bio::DB::GenBank();
$sequence_object = $gb->get_Seq_by_id('MUSIGHBA1');
$seq1_id = $sequence_object->display_id();
$seq1_s = $sequence_object->seq();
print "seq1 display id is $seq1_id n";
print "seq1 sequence is $seq1_s n";
$sequence_object = $gb->get_Seq_by_acc('AF303112');
$seq2_id = $sequence_object->display_id();
$seq2_s = $sequence_object->seq();
print "seq2 display id is $seq2_id n";
print "seq2 sequence id is $seq2_s n";
$seqio = $gb->get_Stream_by_id(
[ qw(2981014 J00522 AF303112)]);
$c=0;
while ($sequence_object = $seqio->next_seq()){
$c++;
print "Display id ($c) in stream is ", $sequence_object->display_id() ,"n";
}
39. File converter
#!/opt/perl/bin/perl -w
#genbank_to_fasta.pl
use Bio::SeqIO;
my $input = Bio::SeqIO::new->(‘-file’ => $ARGV[0],
‘-format’ =>
‘GenBank’);
my $output = Bio::SeqIO::new->(‘-file’ => ‘>output.fasta’,
‘-format’ => ‘Fasta’);
while (my $seq = $input->next_seq()){
$output->write_seq($seq)
}
40. Changing Formats (with Filehandles):
#!/opt/perl/bin/perl -w
#genbank_to_fasta_with_filehandles.pl
use Bio::SeqIO;
my $input = Bio::SeqIO::newFh->(‘-file’ => $ARGV[0],
‘-format’ =>
‘GenBank’);
my $output = Bio::SeqIO::newFh->(‘-format’ => ‘Fasta’);
while (<$input>){
print $output $_
}
41. • Bptutorial.pl
• It includes the written tutorial as well
as runnable scripts
• 2 ESSENTIAL TOOLS
– Data::Dumper to find out what class your
in
– Perl bptutorial (100 Bio::Seq) to find the
available methods for that class
42.
43. Oef 1
• Zoek het meest zure en het meest basische aminozuur in Swiss-Prot
door het isoelectrisch punt te berekenen.
• Is er een biologische verklaring voor de gevonden resultaten ?
Uit AAIndex
H ZIMJ680104
D Isoelectric point (Zimmerman et al., 1968)
R LIT:2004109b PMID:5700434
A Zimmerman, J.M., Eliezer, N. and Simha, R.
T The characterization of amino acid sequences in proteins by statistical
methods
J J. Theor. Biol. 21, 170-201 (1968)
C KLEP840101 0.941 FAUJ880111 0.813 FINA910103 0.805
I A/L R/K N/M D/F C/P Q/S E/T G/W H/Y I/V
6.00 10.76 5.41 2.77 5.05 5.65 3.22 5.97 7.59 6.02
5.98 9.74 5.74 5.48 6.30 5.68 5.66 5.89 5.66 5.96
45. Oef 2
• CpG Islands
– Download from ENSEMBL 100 (random) promoters
(3000 bp)
– How many times would you expect to observe CG if all
nucleotides were equipropable
– Count the number op times CG is observed for these 100
genes and make a histogram from these scores
– CG repeats are often methylated. In order to study
methylation patterns bisulfide treatment of DNA is used.
Bisulfide changes every C which is not followed by G
into T. Generate computationally the bisulfide treated
version of DNA.
– How would you find primers that discriminate between
methylated and unmethylated DNA ? Given that the
genome is 3.109 bp how long do you need to make a
primer to avoid mispriming ?
46. So what is BioPerl? (continued…)
• 551 modules (incl. 82 interface
modules)
• 37 module groups
• 79,582 lines of code (223,310 lines
total)
• 144 lines of code per module
• For More info: BioPerl Module
Listing
47. Searching for Sequence Similarity
• BLAST with BioPerl
• Parsing Blast and FASTA Reports
– Search and SearchIO
– BPLite, BPpsilite, BPbl2seq
• Parsing HMM Reports
• Standalone BioPerl BLAST
48. Remote Execution of BLAST
• BioPerl has built in capability of running BLAST
jobs remotely using RemoteBlast.pm
• Runs these jobs at NCBI automatically
– NCBI has dynamic configurations (server side) to
“always” be up and ready
– Automatically updated for new BioPerl Releases
• Convenient for independent researchers who do not
have access to huge computing resources
• Quick submission of Blast jobs without tying up
local resources (especially if working from
standalone workstation)
• Legal Restrictions!!!
49. Example of Remote Blast
A script to run a remote blast would be something like the
following skeleton:
$remote_blast = Bio::Tools::Run::RemoteBlast->new(
'-prog' => 'blastp','-data' => 'ecoli','-expect' => '1e-
10' );
$r = $remote_blast->submit_blast("t/data/ecolitst.fa");
while (@rids = $remote_blast->each_rid ) { foreach
$rid ( @rids ) {$rc = $remote_blast-
>retrieve_blast($rid);}}
In this example we are running a blastp (pairwise comparison)
using the ecoli database and a e-value threshold of 1e-10.
The sequences that are being compared are located in the file
“t/data/ecolist.fa”.
50. Example
It is important to note that all command line options that fall
under the blastall umbrella are available under
BlastRemote.pm.
For example you can change some parameters of the remote job.
Consider the following example:
$Bio::Tools::Run::RemoteBlast::HEADER{'MATRI
X_NAME'} = 'BLOSUM25';
This basically allows you to change the matrix used to BLOSUM
25, rather than the default of BLOSUM 62.
51. Parsing Blast Reports
• One of the strengths of BioPerl is its ability to
parse complex data structures. Like a blast
report.
• Unfortunately, there is a bit of arcane
terminology.
• Also, you have to ‘think like bioperl’, in order
to figure out the syntax.
• This next script might get you started
52. Sample Script to Read and Parse BLAST Report
# Get the report $searchio = new Bio::SearchIO (-format =>
'blast', -file => $blast_report);
$result = $searchio->next_result; # Get info about the entire
report $result->database_name;
$algorithm_type = $result->algorithm;
# get info about the first hit $hit = $result->next_hit;
$hit_name = $hit->name ;
# get info about the first hsp of the first hit $hsp =
$hit->next_hsp;
$hsp_start = $hsp->query->start;
53. Parsing BLAST Using BPlite, BPpsilite, and BPbl2seq
• Similar to Search and SearchIO in
basic functionality
• However:
– Older and will likely be phased out in the
near future
– Substantially limited advanced
functionality compared to Search and
SearchIO
– Important to know about because many
legacy scripts utilize these objects and
either need to be converted
54. Parse BLAST output
#!/opt/perl/bin/perl -w
#bioperl_blast_parse.pl
# program prints out query, and all hits with scores for each blast result
use Bio::SearchIO;
my $record = Bio::SearchIO->new(-format => ‘blast’, -file => $ARGV[0]);
while (my $result = $record->next_result){
print “>”, $result->query_name, “ “, $result->query_description, “n”;
my $seen = 0;
while (my $hit = $result->next_hit){
print “t”, $hit->name, “t”, $hit->bits, “t”, $hit->significance, “n”;
$seen++ }
if ($seen == 0 ) { print “No Hits Foundn” }
}
55. Parse BLAST in a little more detail
#!/opt/perl/bin/perl -w
#bioperl_blast_parse_hsp.pl
# program prints out query, and all hsps with scores for each blast result
use Bio::SearchIO;
my $record = Bio::SearchIO->new(-format => ‘blast’, -file => $ARGV[0]);
while (my $result = $record->next_result){
print “>”, $result->query_name, “ “, $result->query_description, “n”;
my $seen = 0;
while (my $hit = $result->next_hit{
$seen++;
while (my $hsp = $hit->next_hsp){
print “t”, $hit->name, “has an HSP with an evalue of: “,
$hsp->evalue, “n”;}
if ($seen == 0 ) { print “No Hits Foundn” }
}
56. SearchIO parsers:
• SearchIO can parse (and reformat) several
formats containing alignment or similarity
data:
– blast
– xml formatted blast (still a little wonky)
– psi-blast
– exonerate
– WABA
– FASTA
– HMMER
• The interface is the same for all of these,
making your life a little easier.
57. What else is in BioPerl?
– Cluster or Assembly tools
– Protein structure tools
– Graphics
– Database functions
– Phylogeny tools
– Bibliography tools
– …
58. Some advanced BioPerl
• What if you want to draw pretty images of blast
reports? Bio::Graphics to the rescue:
• Input - A blast report (single query):
• Output:
59. Some really advanced BioPerl
• What if you want to display an entire genome with
annotation? Grow your own genome project
– We can do that all in BioPerl (and a mySQL or Oracle
database):
• GBrowse - the Generic Genome Browser
– Allows any feature to be displayed on a reference sequence
– Many different styles of ‘Glyphs’, so all features can be
drawn in a different style
– Allows user to zoom in and out on reference sequence
– User can select which features to display
– User can upload their own features to be displayed on your
reference sequence
– And more!!!
• http://www.bch.msu.edu/cgi-bin/gbrowse
• http://www.gmod.org/