{"action":"opened","issue":{"url":"https://api.github.com/repos/cjfields/redmine-test/issues/5","labels_url":"https://api.github.com/repos/cjfields/redmine-test/issues/5/labels{/name}","comments_url":"https://api.github.com/repos/cjfields/redmine-test/issues/5/comments","events_url":"https://api.github.com/repos/cjfields/redmine-test/issues/5/events","html_url":"https://github.com/cjfields/redmine-test/issues/5","id":90289552,"number":5,"title":"fixedtopo random tree Bio::Tree::RandomFactory","user":{"login":"cjfields","id":49265,"avatar_url":"https://avatars.githubusercontent.com/u/49265?v=3","gravatar_id":"","url":"https://api.github.com/users/cjfields","html_url":"https://github.com/cjfields","followers_url":"https://api.github.com/users/cjfields/followers","following_url":"https://api.github.com/users/cjfields/following{/other_user}","gists_url":"https://api.github.com/users/cjfields/gists{/gist_id}","starred_url":"https://api.github.com/users/cjfields/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cjfields/subscriptions","organizations_url":"https://api.github.com/users/cjfields/orgs","repos_url":"https://api.github.com/users/cjfields/repos","events_url":"https://api.github.com/users/cjfields/events{/privacy}","received_events_url":"https://api.github.com/users/cjfields/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/cjfields/redmine-test/milestones/2","html_url":"https://github.com/cjfields/redmine-test/milestones/unspecified","labels_url":"https://api.github.com/repos/cjfields/redmine-test/milestones/2/labels","id":1176687,"number":2,"title":"unspecified","description":null,"creator":{"login":"cjfields","id":49265,"avatar_url":"https://avatars.githubusercontent.com/u/49265?v=3","gravatar_id":"","url":"https://api.github.com/users/cjfields","html_url":"https://github.com/cjfields","followers_url":"https://api.github.com/users/cjfields/followers","following_url":"https://api.github.com/users/cjfields/following{/other_user}","gists_url":"https://api.github.com/users/cjfields/gists{/gist_id}","starred_url":"https://api.github.com/users/cjfields/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cjfields/subscriptions","organizations_url":"https://api.github.com/users/cjfields/orgs","repos_url":"https://api.github.com/users/cjfields/repos","events_url":"https://api.github.com/users/cjfields/events{/privacy}","received_events_url":"https://api.github.com/users/cjfields/received_events","type":"User","site_admin":false},"open_issues":2,"closed_issues":0,"state":"open","created_at":"2015-06-23T05:10:00Z","updated_at":"2015-06-23T05:10:03Z","due_on":null,"closed_at":null},"comments":0,"created_at":"2015-06-23T05:10:03Z","updated_at":"2015-06-23T05:10:03Z","closed_at":null,"body":"---\n\n\nAuthor Name: **Albert Vilella** (Albert Vilella)\nOriginal Redmine Issue: 1874, https://redmine.open-bio.org/issues/1874\nOriginal Date: 2005-10-06\nOriginal Assignee: Bioperl Guts\n\n---\n\nA method for a Bio::Tree object that will generate a number of trees\nwith the same topology as the input tree but with random branch\nlengths for each branch given.\n\nOne would call the method with something similar to this:\n\nmy $treeio = new Bio::TreeIO(-format => 'newick', -file =>\n'treefile.dnd');\nmy $tree = $treeio->next_tree;\nmy $out = Bio::TreeIO->new\n    (\n     -format => 'newick',\n     -file   => \">$outfile\"\n    );\nmy $factory = new Bio::Tree::RandomFactory(\n        -tree => $tree,\n        -maxcount => $maxcount,\n        -method => \"fixedtopo\",\n        );\n\nwhile(my $generatedtree = $factory->next_tree) {\n    $out->write_tree($generatedtree);\n}\n\nThere would be something like a \"fixedtopo_maxlen\" so that the random\nlengths fall inside the (0..maxlen) range.\n\nOne can just add code in next_tree to see if tree object is already\nstored and the method is 'fixedtopo', then return trees from that in\nthe same fashion as the rest of the random topos are generated.\n\nTo consider - Branch lengths to be distributed\n\nOne can see how time is applied to each node in the\nrand_birthdeath_backwards_tree() function in the Tree::RandomFactory -\nbut I think I assign brlens first and then build up the tree from that\nso the lengths are distributed properly on each level.\n\nLook at tree generation code from Mike Sanderson's r8s package - one\nmay want to trawl around in the tree building literature to get a\nbetter sense of how to best generate branch lengths.\n\n\n"}}