Using Modules PowerPoint PPT Presentation

presentation player overlay
1 / 17
About This Presentation
Transcript and Presenter's Notes

Title: Using Modules


1
Using Modules
2
Module Example
  • Next I will describe a very simple implementation
    of a perl module.
  • This will be the minimum amount of information
    needed to use modules as intended.
  • This is useful for when we attempt to use modules
    (such as FileBasename), we'll have a better
    understanding of what they are.

3
Exporting
  • require Exporter a package written to do
    symbol (variable) exporting
  • _at_ISA qw(Exporter)
  • "is a" is simply an array that specifies to
    perl the classes/packages to search for
    methods/subroutines
  • mechanism for inheritance that we'll come back
    to
  • sufficient to know that if you omit this, perl
    modules will not work as described here
  • Note that on quoted words you may define your
    own boundary chars
  • _at_EXPORT qw(say_hello text)
  • lists the symbols that are exported
  • reference
  • perldoc Exporter

4
Example (use)
  • Silly.pm
  • package Silly package statement
  • require Exporter we now know what this means
  • _at_ISA qw(Exporter) technically we know what
    is going on
  • _at_EXPORT qw(say_hello text)
  • text"" Note, I did not use "my"
  • "my" would make it local to this
    package
  • so even though it is "exported", it
    would
  • not be available to the "main"
  • sub say_hello
  • text _0
  • Why don't I do text shift ????
  • print "Hello text\n"
  • !/usr/bin/perl
  • main.pl
  • require "Silly.pm"
  • Note no quotes, or .pm
  • use Silly
  • my name "Terry"
  • Sillysay_hello(name)
  • We don't know what this SR does yet
  • say_hello(name)
  • Don't know what the value of this is either
  • print "The _text_ in Silly text\n"
  • Hello Terry

5
Example (require)
  • package Silly package statement
  • require Exporter we now know what this means
  • QUESTION why no ".pm" here,
  • that is used in
    main.pl????
  • Answer could have done require Silly
  • (no quotes)
  • _at_ISA qw(Exporter) technically we know what
    is going on
  • _at_EXPORT qw(say_hello text)
  • text"" Note, I did not use "my"
  • "my" would make it local to this
    package
  • so even though it is "exported", it
    would
  • not be available to the "main"
  • sub say_hello
  • text _0
  • !/usr/bin/perl
  • main.pl
  • require "Silly.pm"
  • use Silly
  • my name "Terry"
  • Sillysay_hello(name)
  • say_hello(name)
  • print "The _text_ in Silly Sillytext\n"

6
POD
  • perldoc perlpod
  • NAME
  • perlpod - the Plain Old Documentation format
  • DESCRIPTION
  • Pod is a simple-to-use markup language used for
    writing documentation for Perl, Perl programs,
    and Perl modules.
  • Allows you to intersperse codes and comments (if
    you like).
  • You can also put all of your documentation at the
    end of your code following a __END__

7
POD
  • All command paragraphs (which are typically only
    one line long) start
  • with "", followed by an identifier,
    followed by arbitrary text that
  • the command can use however it pleases.
    Currently recognized commands
  • are
  • head1 Heading Text
  • head2 Heading Text
  • head3 Heading Text
  • head4 Heading Text
  • over indentlevel
  • item stuff
  • back
  • cut
  • pod
  • begin format
  • end format
  • for format text...

8
Process
  • Markup your module
  • podchecker (can check syntax)
  • pod2text (to see your documentation)
  • perldoc NameOfYourModule.pm
  • perldoc Silly-doc.pm

9
Annoyance
  • The formatting markup requires blank spaces
    before/after each line (rather annoying).

10
Example
head1 NAME Silly -- example of a perl
module head1 SYNOPSIS use Silly
say_hello("any text") print "The _text_ in
Silly text\n" head1 DESRIPTION These
routines have no useful function
whatsoever. cut
This is all text that is displayed by perldoc
Marks end of formatting, or the start of real code
11
package Silly package statement require
Exporter we now know what this means _at_ISA
qw/Exporter/ technically we know what is going
on _at_EXPORT qw(say_hello text) text""
Note, I did not use "my" "my" would
make it local to this package so
even though it is "exported", it would
not be available to the "main" over 4 item
say_hello(string) This function takes a string
and simply prints it to the screen proceeded by
the text 'Hello '. The string is also stored
in local variable text cut
Start of itemized List indented by 4 spaces
Item tag followed by description
12
sub say_hello text _0 Why don't I do
text shift ???? print "Hello
text\n" back cut 1
End of itemized list
13
Very Basic Intro to BLAST
  • Basic Local Alignment Search Tool
  • Application to search for 1 sequence against a
    database of sequences
  • Note, that the database of sequences may be a
    single sequence itself, so that BLAST may be used
    to compare 2 sequences
  • Nucleotide to nucleotide
  • Amino acid to amino acid (protein)
  • Nucelotide to aa
  • aa to nt
  • etc.

14
Example
  • http//www.ncbi.nlm.nih.gov/BLAST/

15
Pairwise Sequence Alignment Example
  • Example
  • S1 TTACTTGCC (9 bases)
  • S2 ATGACGAC (8 bases)
  • Scoring (1 possibility)
  • 2 match
  • 0 mismatch
  • -1 gap in either sequence
  • One Possible alignment
  • T T - A C T T G C C
  • A T G A C - - G A C
  • 0 2-1 2 2-1-1 2 0 2 Score 10 3 7

16
Cue to a Data Structure
Gap in S2
Gap in S1
Alignment (match/mismatch)
17
How hard can this be?
  • Brute force approach consider all possible
    alignments, and choose the one with best score
  • 3 choices at each internal branch point
  • Assume n x n comparison. 3n comparisons
  • n 3 ? 33 27 paths
  • n 20 ? 320 3.4 x 109 paths
  • n 200 ? 3200 2.6 x 1095 paths
  • If 1 path takes 1 nanosecond (10-9 secs)
  • 8.4 x 1078 years!
  • But, using data structures cleverly, this can be
    greatly sped up to O(n2)
Write a Comment
User Comments (0)
About PowerShow.com