hashes master

Post on 09-May-2015

386 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Hashes and @ARGV

Paolo Marcatili - Programmazione 08-09

2

Agenda

Today we will see how to> Summary of what we’ve done> Hashes> Keys

Paolo Marcatili - Programmazione 08-09

Task Today

Paolo Marcatili - Programmazione 08-09

4

parsing

Parse a GO fileExtract gene names and function

Paolo Marcatili - Programmazione 08-09

Hashes

Paolo Marcatili - Programmazione 08-09

6

Hashes

> Hashes are like array, they store collections of scalars... but unlike arrays, indexing is by name (just like in real life!!!)

> Two components to each hash entry:> Key example : name> Value example : phone number

> Hashes denoted with %> Example : %phoneDirectory

> Elements are accessed using {} (like [] in arrays)

Paolo Marcatili - Programmazione 08-09

7

Hashes continued ...

> Adding a new key-value pair $phoneDirectory{“Shirly”} = 7267975

> Note the $ to specify “scalar” context!

> Each key can have only one value $phoneDirectory{“Shirly”} = 7265797 # overwrites previous assignment

> Multiple keys can have the same value

> Accessing the value of a key $phoneNumber =$phoneDirectory{“Shirly”};

Paolo Marcatili - Programmazione 08-09

8

Hashes and Foreach> Foreach works in hashes as well!

foreach $person (keys (%phoneDirectory) ) {

print “$person: $phoneDirectory{$person}”;}

> Never depend on the order you put key/values in the hash! Perl has its own magic to make hashes amazingly fast!!

Paolo Marcatili - Programmazione 08-09

9

Hashes and Sorting

> The sort function works with hashes as well

> Sorting on the keysforeach $person (sort keys %phoneDirectory) {

print “$person : $directory{$person}\n”;

}> This will print the phoneDirectory hash table in alphabetical order based on the name of the person, i.e. the key.

Paolo Marcatili - Programmazione 08-09

10

Hash and Sorting cont...

> Sorting by value

foreach $person (sort {$phoneDirectory{$a} <=> $phoneDirectory{$b}} keys %phoneDirectory)

{print “$person :

$phoneDirectory{$person}\n”;

}

> Prints the person and their phone number in the order of their respective phone numbers, i.e. the value.

Paolo Marcatili - Programmazione 08-09

11

Exercise

> Chose your own test or use wget “http://www.quirinale.it/costituzione/costituzi

one.htm”

> Identify the 10 most frequent words

> Identify the 10 most frequent words longer than 5 letters

Paolo Marcatili - Programmazione 08-09

12

Counting Words

my %seen;while (my $l=<F>){

my @w=split (/\s+/, $l);# questa è una funzione nuova…foreach my $word (@w){

$word=~s/[sx]$//;#plurial elimination$seen{$word}++;}

}foreach my $word (sort {$seen{$a}<=>$seen{$b}}

keys %seen){print “Word $word N: $seen{$word}\n”;}

Paolo Marcatili - Programmazione 08-09

@ARGV

Paolo Marcatili - Programmazione 08-09

14

Command Line Arguments

> Command line arguments in Perl are extremely easy.

> @ARGV is the array that holds all arguments passed in from the command line.> Example:

> % ./prog.pl arg1 arg2 arg3> @ARGV would contain ('arg1', arg2', 'arg3)

> $#ARGV returns the number of command line arguments that have been passed. > Remember $#array is the size of the array!

Paolo Marcatili - Programmazione 08-09

15

Quick Program with @ARGV

> Simple program called log.pl that takes in a number and prints the log base 2 of that number;

#!/usr/local/bin/perl -w$log = log($ARGV[0]) / log(2);print “The log base 2 of $ARGV[0] is $log.\n”;

> Run the program as follows:> % log.pl 8

> This will return the following:> The log base 2 of 8 is 3.

Paolo Marcatili - Programmazione 08-09

16

$_

> Perl default scalar value that is used when a variable is not explicitly specified.

> Can be used in> For Loops> File Handling> Regular Expressions

Paolo Marcatili - Programmazione 08-09

17

$_ and For Loops

> Example using $_ in a for loop

@array = ( “Perl”, “C”, “Java” );for(@array) { print $_ . “is a language I know\n”;}

> Output : Perl is a language I know. C is a language I know. Java is a language I know.

Paolo Marcatili - Programmazione 08-09

18

$_ and File Handlers

> Example in using $_ when reading in a file;

while( <> ) { chomp $_; # remove the

newline char @array = split/ /, $_; # split the line

on white space

# and stores data in an array

}

> Note:> The line read in from the file is automatically

store in the default scalar variable $_

Paolo Marcatili - Programmazione 08-09

Opendir, readdir

Paolo Marcatili - Programmazione 08-09

20

Opendir & readdir

> Just like open, but for dirs

# load all files of the "data/" folder into the @files array

opendir(DIR, ”$ARGV[0]");@files = readdir(DIR);closedir(DIR); # build a unsorted list from the @files array:print "<ul>"; foreach $file (@files) { next if ($file eq "." or $file eq ".."); print "<li><a href=\"$file\">$file</a></li>";} print "</ul>";

Paolo Marcatili - Programmazione 08-09

Task

Paolo Marcatili - Programmazione 08-09

22

Malaria proteins annotationsWe’ll do a script that reports all gene with a similar function w.r.t. our query gene.

http://www.biocomputing.it/master_hashes

Paolo Marcatili - Programmazione 08-09

top related