1 / 17

Using Modules

Using Modules. 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.

maida
Download Presentation

Using Modules

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 File::Basename), we'll have a better understanding of what they are.

  3. Exporting • require Exporter; # a package written to do symbol (variable) exporting • @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 • @EXPORT = qw(&say_hello $text); # lists the symbols that are exported • reference: perldoc Exporter

  4. #!/usr/bin/perl # main.pl # #require "Silly.pm"; # Note no quotes, or .pm use Silly; my $name = "Terry"; #Silly::say_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 #The text in Silly = Terry # Silly.pm package Silly; #package statement require Exporter; #we now know what this means @ISA = qw(Exporter); #technically we know what is going on @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"; } 1; Example (use)

  5. #!/usr/bin/perl # main.pl # require "Silly.pm"; #use Silly; my $name = "Terry"; Silly::say_hello($name); #&say_hello($name); print "The _text_ in Silly = $Silly::text\n"; 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) @ISA = qw(Exporter); #technically we know what is going on @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"; } 1; Example (require)

  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 @ISA = qw/Exporter/; #technically we know what is going on @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)

More Related