lecture code viewer
downloads

Code
First Look at Perl
First Look at Perl
Sheldon McKay
#!/usr/local/bin/perl
use strict;
use LWP::Simple;
use HTML::TreeBuilder;
use Pod::Usage;
use Data::Dumper;
use Graph::Undirected;
use GraphViz;
use Getopt::Long;
use vars qw(%CONF);
GetOptions(\%CONF,"chromosome=s");
pod2usage(-verbose=>2) if ! $CONF{chromosome};
my $url = "http://www.mdc-berlin.de/ratgenome/data/MDC-Map-" . sprintf("%02d",$CONF{chromosome}) . ".html";
my %bac_to_yacs;
my $html = get($url);
my $tree = HTML::TreeBuilder->new_from_content($html);
my ($table) = grep($_->attr("rules") eq "none", $tree->find_by_tag_name("table"));
my @rows = $table->find_by_tag_name("tr");
my $nbsp = chr(160);
ROW:
foreach my $row (@rows) {
my @cols = $row->find_by_tag_name("td");
next unless @cols == 7;
(my $contig = $cols[2]->as_text) =~ s/^\s*$nbsp//;
(my $bacname = $cols[3]->as_text) =~ s/^\s*$nbsp//;
my $yacnames = $cols[6]->as_text;
my @yacnames = split(/,/,$yacnames);
map { $_ =~ s/^\s*$nbsp// } @yacnames;
if ($bacname !~ /(RPCI3[12]\.\d{1,3}[a-z]\d{1,2})/) {
print "debug malformed bacname $bacname on chr $CONF{chromosome} ctg $contig\n";
next ROW;
} else {
$bacname = $1;
}
push ( @{$bac_to_yacs{$bacname}}, @yacnames );
print "debug chr $CONF{chromosome} ctg $contig bac $bacname linked to ",scalar(@yacnames)," yacs\n";
}
my $graph = Graph::Undirected->new();
my $graphviz = GraphViz->new(directed=>0,
width=>50,
height=>50,
epsilon=>0.05,
node=>{
width=>0.2,
height=>0.2,
shape=>"circle",
fontsize=>2,
style=>"filled",
fontname=>"/usr/local/fonts/ttf/trebuc.ttf"
},
);
foreach my $bac (keys %bac_to_yacs) {
my @yacs = @{$bac_to_yacs{$bac}};
(my $baclabel = lc $bac) =~ s/^rpci3//;
foreach my $yac (@yacs) {
print "debug adding edge $bac $yac\n";
$graph->add_edge($bac,$yac);
(my $yaclabel = lc $yac) =~ s/^([a-z]).+?\./$1/;
$graphviz->add_edge($baclabel,$yaclabel,minlength=>0.25);
}
}
open(GRAPH,">/home/martink/www/htdocs/tmp/bacyac.png");
print GRAPH $graphviz->as_png;
close(GRAPH);
my @groups = $graph->strongly_connected_components;
foreach my $group_idx (0..@groups-1) {
my @vertices = @{$groups[$group_idx]};
foreach my $vertex_idx (0..@vertices-1) {
printf("%d %d %s\n",$group_idx,$vertex_idx,$vertices[$vertex_idx]);
}
}
|
1 |
First Look at Perl |
0.1.0.1.1
0.1.0.1.1a.p1 |
Processing C Elegans Data
|
Sheldon McKay
|
ppt
0.1.0.1.1a.a1 |
Processing C Elegans Data
|
Sheldon McKay
|
pdf
0.1.0.1.1b.p2 |
Fetching Web Data and Making Graphs
|
Martin Krzywinski
|
ppt
0.1.0.1.1b.a2 |
Fetching Web Data and Making Graphs
|
Martin Krzywinski
|
pdf
0.1.0.1.1.c1 |
altsplice.pl
|
Sheldon McKay
|
code
0.1.0.1.1.c2 |
grabdata
|
Sheldon McKay
|
code
0.1.0.1.1.c3 |
partial.pl
|
Sheldon McKay
|
code
0.1.0.1.1.c4 |
tagger.pl
|
Sheldon McKay
|
code
0.1.0.1.1a.d1 |
First Look at Perl
|
Sheldon McKay
|
data
0.1.0.1.1.d2 |
First Look at Perl
|
Sheldon McKay
|
data
0.1.0.1.1.d3 |
First Look at Perl
|
Sheldon McKay
|
data
0.1.0.1.1.d4 |
First Look at Perl
|
Sheldon McKay
|
data
0.1.0.1.1.d5 |
First Look at Perl
|
Sheldon McKay
|
data
0.1.0.1.1.d6 |
First Look at Perl
|
Sheldon McKay
|
data
0.1.0.1.1.d7 |
First Look at Perl
|
Sheldon McKay
|
data
0.1.0.1.1.d8 |
First Look at Perl
|
Sheldon McKay
|
data
0.1.0.1.1.i1 |
First Look at Perl
|
Sheldon McKay
|
images
0.1.0.1.1.i2 |
First Look at Perl
|
Sheldon McKay
|
images
0.1.0.1.1.i3 |
First Look at Perl
|
Sheldon McKay
|
images
0.1.0.1.1.i4 |
First Look at Perl
|
Sheldon McKay
|
images
0.1.0.1.1.i5 |
First Look at Perl
|
Sheldon McKay
|
images
0.1.0.1.1a.s1 |
Processing C Elegans Data
|
Sheldon McKay
|
slides
0.1.0.1.1b.s1 |
Fetching Web Data and Making Graphs
|
Martin Krzywinski
|
slides
|