#!/usr/bin/perl use Data::Dumper; use Tree::DAG_Node; use SVG::Graph; use SVG::Graph::Data::Tree; my $lol = [ "START", [ "EUBACTERIA", [ "AQUIFEX*", [ "THERMOTOGA*", "DEINOCOCCUS*", [ [ [ "BACILLUS", [ "BACILLUS" ], "MYCOPLASMA", [ "MYCOPLASMA_PNEUMONIAE", "MYCOPLASMA_GENITALIUM" ] ], "ACTINOBACTERIA", [ "MYCOBACTERIUM*" ] ], [ "SYNECHOCYSTIS*", [ [ "SPIROCHAETALES", [ "SPIROCHAETACEAE", "TREPONEMA*", "BORRELIA*" ], [ "CHLAMYDIA", "CHLAMYDIA*" ] ], [ [ "ALPHA", "RICKETTSIA*" ], [ "GAMMA", [ "ESCHERICHIA", "ESCHERICHIA*", "BUCHNERA*" ], "PSEUDOMONAS*", "VIBRIO*", "HAEMOPHILUS*", "XYLELLA*" ], [ "BETA", "NEISSERIA*" ], [ "EPSILON", "HELICOBACTER*", "CAMPYLOBACTER*" ] ] ] ] ] ] ], "ARCHEA+EUKARYA", [ "ARCHEA", [ [ "DESULFUROCOCCUS", "SULFOLOBUS" ], [ [ "PYROCOCCUS", [ "PYROCOCCUS*" ], "AEROPYRUM*" ], [ "METHANOBACTERIUM*", [ "METHANOCOCCUS*", [ "ARCHAEOGLOBUS*", [ "THERMOPLASMA*", "HALOBACTERIUM*" ] ] ] ] ] ], "EUKARYA", [ "PROTISTA+PLANT [DUBIOUS]", [ [ "GIARDIA", "ENTAMOEBA" ], "PLANTS", [ HUMULUS, ORYZA ] ], "FUNGI+ANIMALS", [ "FUNGI", [ "VERTICILLIUM", "SACCHAROMYCES" ], "METAZOAN", [ "SPONGES", "EPHYDATIA*", "HYDRA*", "LYMNAEA*", "ARTHROPODA", [ [ "IXODES*", "CALPODES*", "ORNITHODOROS" ], "INSECTA", [ "Lepidoptera", [ "GALLERIA*", "MANDUCA*", [ " BOMBYCOIDEA", [ "BOMBYX_MANDARINA", "BOMBYX_MORI", "HYALOPHORA*" ], [ "ANTHERAEA_PERNYI", "ANTHERAEA_YAMAMAI" ] ] ], "NILAPARVATA*", "DIPTERA", [ "MUSCA", [ [ "DROSOPHILA_MELANOGASTER", "DROSOPHILA_SIMULANS" ], "DROSOPHILA_VIRILIS", "DROSOPHILA" ], "NEMATOCERA", [ "CULICOIDEA", [ "AEDES*", "CULEX*", "ANOPHELES*" ], "SCIAROIDEA", [ "RHYNCHOSCIARA*", "CHIRONOMUS*" ] ] ] ], "TIGRIOPUS*", "DAPHNIA*", "PACIFASTACUS*" ], "VERTEBRATE+CELEGANS", [ "CAENORHABDITIS*", "DEUTEROSTOMA", [ "ECHINODERMS", [ "ELEUTHEROZOA" . [ "LYTECHINUS*", "ECHINIDAE" . [ "PARACENTROTUS*", "PSAMMECHINUS*" ] ], "ASTEROZOA", [ "PYCNOPODIA*", "PISASTER*" ] ], "VERTEBRATES", [ "HYPEROARTIA", [ [ "PETROMYZON", "LAMPREY" ] ], "GNATHOSTOMATA", [ "SCYLIORHINUS", "BONYFISHES", [ "OSTARIOPHYSI", [ [ "CATFISH", "ICTALURUS*" ], "CYPRIFORMES", [ "MISGURNUS*", "BARBATULA*", "CYPRINIDAE", [ "CATLA*", [ "ZEBRAFISH", "DANIO*" ], " CARPS", [ [ "COMMONCARP", "CYPRINUS*" ], [ "GRASSCARP", "CTENOPHARYNGODON*" ], "LABEO*" ], [ "GOLDFISH", "CARASSIUS*" ] ] ] ], "EUTELEOSTEI", [ " SALMONIFORMES", [ [ "SALMO*", [ "TROUT", "ONCORHYNCHUS*" ] ], "COREGONUS*" ], "PERCOMORPHA", [ "PARALICHTHYS*", "PERCIFORMES", [ "PERCOIDEI", [ "MORONE*", "SERIOLA*", "LATES*", [ "GILTHEADSEABREAM", "SPARUS*", "PAGRUS*" ] ], [ "TILAPIA*", "OREOCHROMIS*" ], [ "CHIONODRACO*", [ "NOTOTHENIA_ANGUSTATA", "NOTOTHENIA_CORIICEPS" ] ] ], [ [ "FUGU", "TAKIFUGU*" ], "TETRAODON*" ], [ "MEDAKA*", "ORYZIAS*" ] ] ] ], "TRETAPODA", [ "AMPHIBIANS", [ [ [ "FROG", "XENOPUS*" ], "SILURANA*", "RANA" ] ], "AMNIOTA", [ "DABOIA", "BIRDS", [ [ "SERINUS*", "CANARY" ], [ [ "TURKEY", "MELEAGRIS*" ], [ "CHICKEN*", "GALLUS*" ] ], [ [ "DUCK", "ANAS*", "CAIRINA*" ], [ "GOOSE", "ANSER*" ] ] ], "MAMMALS", [ "MONOTREMA", [ "MONOTREMA*" ], "MARSUPIALS", [ "VOMBATUS*", "POSUM" ], "EUTHERIA", [ "groupIII+groupIV", [ "RODENTS+PRIMATES", "groupIII", [ "RODENT/RABBIT", [ "GLIRES", [ [ "RABBIT", "LEPUS*", "ORYCTOLAGUS*" ], "RODENTS", [ [ [ [ [ "COTTONRAT", [ "RAT", "RATTUS*" ] ] , [ "MOUSE", "MUS_MUSCULUS" ] ] , [ "MESOCRICETUS*", "HAMSTER", "CRICETULUS*" ] ] , [ "GLAUCOMYS*", "MARMOT" ] ], "Hystricognathi", [ [ "PORCUPINE", "HYSTRIX*" ] , [ "CAVIA*", "GUINEAPIG" ] ] ] ] ], "PRIMATES", [ "PRIMATES+SHREWS", [ "SHREWS", [ "TUPAIA*", "SHREW", ], "PRIMATES", [ "TARSIUS*", "STREPSIRHINI", [ "OTOLEMUR*", "PROPITHECUS*" ], [ "PLATYRRHINI", [ [ [ [ "CALLITHRIX*", "MARMOSET" ] , [ [ "CEBUS*", "CAPUCHIN" ] , [ "SQUIRRELMONKEY", "SAIMIRI*" ] ] ] , [ "CALLICEBUS*", "AOTUS*" ] ] , [ [ "ATELES_BELZEBUTH", "ATELES_GEOFFROYI" ] , [ "CACAJO*", "PITHECIA*" ] ] , "ALOUATTA*" ] , "CATARRHINI", [ [ "HYLOBATES*", "GIBBON" ] , [ "CERCOPITHECUS*", "CERCOCEBUS*", [ "BABOON", "PAPIO*" ] , [ "RHESUS", "MACACA*" ] ] , [ [ "PONGO*", "ORANGUTAN" ] , [ "GORILLA*", [ [ "CHIMP", "PAN*" ] , [ "HUMAN", "HOMO*" ] ] ] ] ] ] ] ] ] ], "GroupIV", [ "BATS+DERMOPTERA", [ "DERMOPTERA", [ "CYNOCEPHALUS*", ], "BATS", [ [ "CYNOPTERUS*", "PTEROPUS*" ], [ "TAPHOZOUS*", [ [ "MEGADERMA*", "HIPPOSIDEROS*" ] , [ "TONATIA*", [ "TADARIDA*", "MYOTIS*" ] ] ] ] ] ], " DACTYLA+CARNIVORA", [ "CARNIVORA", [ [ "SEAL", "HALICHOERUS*" ], "FISSIPEDIA", [ "MUSTELA*", [ "CAT", "FELIS*" ], [ "CANIS*", "DOG" ] ] ], "DACTYLTHINGS", [ "PERISSODACTYLA", [ [ "RHINOCEROS", "DICEROS*" ], [ [ "HORSE", "EQUUS_ASINUS", "EQUUS_CABALLUS" ] ] ], "ARTIODACTYL+CETACEA", [ "CAMELUS*", "LAMA*", [ [ "PIG", "SUS*" ] , [ "RUMINANTIA", [ [ [ [ [ "BOS_TAURUS", "BOVIN", "COW" ] , "BOS_INDICUS" ] , "BOS_GRUNNIENS" ] , "BUBALUS*" ] , [ [ [ "OVIS*", "SHEEP" ] , [ "GOAT", "CAPRA*" ] ] , "DEER", "GAZELLA*" ] ] , " HIPPO + CETACEA", [ "HIPPOPOTAMUS*", "CETACEA", [ [ "DOLPHIN", "TURSIOPS" ] , [ [ "SPERMWHALE", "PHYSETER*" ] , [ "BLUEWHALE", "MEGAPTERA*" ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ]; my $tree = SVG::Graph::Data::Tree->new; my $root = $tree->root; foreach my $node (@$lol) { if ( ref $node ) { descend( $node, $root ); } else { $root->name($node); } } sub descend { my ( $list, $subroot ) = @_; my $name = ''; my $c = 0; my $d = 0; foreach my $node (@$list) { $c++; if ( !ref($node) ) { $name = $node; if ( $d + 1 == $c ) { next if ref( $list->[$c] ); my $daughter = $tree->new_node( name => $list->[$d] ); $subroot->add_daughter($daughter); } $d = $c; next; } # $subroot->name($name); my $daughter = $tree->new_node( name => $name ); $subroot->add_daughter($daughter); my $grandchildren = descend( $node, $daughter ); } } #warn Dumper($root); my $tree = SVG::Graph::Data::Tree->new( root => $root ); my $graph = SVG::Graph->new( width => 1000, height => 800 ); my $group = $graph->add_frame; $group->add_data($tree); $group->add_glyph('tree'); #print Dumper $graph,"\n"; print $graph->draw;