Perl Class Syllabus
Instructor: Darin London, Lead Developer, IGSP-IT
email: darin.london@duke.edu
Introduction
Many people learn enough Perl syntax to write useful scripts, but never progress into some of the more advanced aspects of the language that can increase their productivity. This class is designed to extend your skillset to include a better understanding of the thinking and design involved in the process of text parsing. It then further explores the concepts of Packages and Objects to allow complex processes to be shared among many programs. If you have ever found yourself cutting and pasting text from one script to another, only to find that you need to tweak the code a bit, and need to edit 15 or more files that share the text, Packages and Objects are the solution. The class will take the basic parsing functionality that we design in the initial classes and create Packages and Objects that make it available to any script, but makes it much easier to edit the code should changes be necessary. Then, we will build upon our new ability to make use of perl Packages and Objects by exploring the functionality of some of the Objects made available in the popular BioPerl project. Each 1 hour session will consist of no more than 20 minutes of 'lecture', and 40 minutes of hands-on coding and problem solving. Upon completion of the class, you should have a much better understanding of how to use, write, and debug perl packages and objects.
Class Website
http://perlsOfLondon.pbwiki.com
The place to find this syllabus, and the lecture notes
Day 1
Goals:
* Gain a further understanding of the concept of Parsing
* Understand how to design strategies for parsing based on the questions being asked
* Gain a further understanding of the concept of Data Structures, and how they relate to parsing strategies
* Design a data structure to parse an EMBL Sequence File to facilitate answering a few questions about it
* Write a Perl script which encodes the creation of our data structure, and parses the EMBL file into that structure
Day 2
Goals:
* Gain a better understanding of the concept of a subroutine, and subroutine references
* Understand how data structures, and other arguments are passed into and returned from subroutines
* Learn how to move complex code related to a single function into a subroutine
* Learn how to pass filtering criteria into a subroutine using subrefs
* Modify our EMBL parser to use subroutines to get the next sequence from the file, and write a few new scripts which use that subroutine
Day 3
Goals:
* Gain a better understanding of the perl Package system, and why they are necessary
* Get better acquainted with @INC, PERL5LIB, etc.
* Learn about Package Namespaces
* Discuss strategies for implementing Packages with existing subroutines
* Write an IGSP-Class::SeqPackage package which makes the EMBL parsing subroutine you write on Day 2 available to all of your scripts without cut-and-paste
Day 4
Goals:
* Get a better understanding of Object Oriented Programming
* Learn how to move from writing Packages to writing Objects
* Design and write an IGSP::Seq object instead of the seq hash you have been using in your EMBL parsers
* Modify IGSP-Class::SeqPackage into an IGSP-Class::SeqIO objecct to make it an object called a 'factory' which returns IGSP::Seq objects from the IO stream provided to it at construction
Day 5
Goals:
* Learn about the BioPerl Bio::Seq and Bio::SeqIO systems
* Learn about accessing remote and Local Sequence Databases with Bio::DB
* Learn how to navigate the perldocs, and cpan entries online for Bio::Seq, Bio::SeqIO, and Bio::DB
* Modify our EMBL parsers to use Bio::SeqIO and Bio::Seq instead of IGSP::SeqIO and IGSP::Seq
* Modify our EMBL parsers to use Bio::DB::EMBL to ask for the sequences in the original file by ID
Day 6
Goals:
* Learn about the BioPerl SearchIO and Run systems, and how to run third party software applications from within BioPerl scripts
* Write a perl script to run a blast and answer a few alignment related questions about a series of sequence files
* Write a perl script to run RepeatMasker on some sequences and ask a few questions about the resulting RepeatMasker output
Perl 101 Class Links
Perl 101 Day1
Perl 101 Day2
Perl 101 Day3
Perl 101 Day4
Perl 101 Day5
Perl 101 Day6
Comments (0)
You don't have permission to comment on this page.