#!/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;