#!/usr/bin/perl -w
use strict;
use warnings;
use Data::Dumper;
use Algorithm::EquivalenceSets;
my %groupOfBact = (
group1 => {
strain1=>1,
strain2=>1,
strain4=>1,
} ,
group2 => {
strain3=>1,
strain4=>1,
strain5=>1,
} ,
group3 => {
strain6=>1,
strain7=>1,
},
);
print Dumper(\%groupOfBact);
my @sets = map { [ keys %{$groupOfBact{$_}} ] } keys %groupOfBact;
print Dumper(\@sets);
my @equiv_sets = equivalence_sets(\@sets);
print Dumper(\@equiv_sets);
####
$VAR1 = {
'group2' => {
'strain5' => 1,
'strain3' => 1,
'strain4' => 1
},
'group1' => {
'strain2' => 1,
'strain4' => 1,
'strain1' => 1
},
'group3' => {
'strain7' => 1,
'strain6' => 1
}
};
$VAR1 = [
[
'strain5',
'strain3',
'strain4'
],
[
'strain2',
'strain4',
'strain1'
],
[
'strain7',
'strain6'
]
];
$VAR1 = [
[
'strain7',
'strain6'
],
[
'strain2',
'strain4',
'strain1',
'strain5',
'strain3'
]
];
####
#!/usr/bin/perl -w
use strict;
use warnings;
use Data::Dumper;
use Graph;
my %groupOfBact = (
group1 => {
strain1=>1,
strain2=>1,
strain4=>1,
} ,
group2 => {
strain3=>1,
strain4=>1,
strain5=>1,
} ,
group3 => {
strain6=>1,
strain7=>1,
},
);
print Dumper(\%groupOfBact);
my $graph = Graph::Undirected->new;
foreach my $group (keys %groupOfBact) {
foreach my $strain (keys %{$groupOfBact{$group}}) {
$graph->add_edge($group, $strain);
}
}
my @cc = $graph->connected_components();
print Dumper(\@cc);
####
$VAR1 = {
'group2' => {
'strain5' => 1,
'strain3' => 1,
'strain4' => 1
},
'group1' => {
'strain2' => 1,
'strain4' => 1,
'strain1' => 1
},
'group3' => {
'strain7' => 1,
'strain6' => 1
}
};
$VAR1 = [
[
'strain7',
'group3',
'strain6'
],
[
'strain3',
'group2',
'strain5',
'strain4',
'group1',
'strain1',
'strain2'
]
];