# HG changeset patch # User earlhaminst # Date 1525947317 14400 # Node ID 817031b8486d6f29a7a32b08649d855908aab96d # Parent 87b6de3ef63eae321e1ee038b8598b85121839b5 planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/ete commit b97aee603b9acf29981719160e963a1efe2946d0 diff -r 87b6de3ef63e -r 817031b8486d ete_homology_classifier.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ete_homology_classifier.py Thu May 10 06:15:17 2018 -0400 @@ -0,0 +1,78 @@ +from __future__ import print_function + +import optparse + +from ete3 import PhyloTree + + +def main(): + usage = "usage: %prog --genetree --speciestree [options]" + parser = optparse.OptionParser(usage=usage) + parser.add_option('--genetree', help='GeneTree in nhx format') + parser.add_option('--out_format', type='string', default='tabular', help='Choose output format') + parser.add_option('--filters', default='', help='Filter families') + + options, args = parser.parse_args() + + if options.genetree is None: + parser.error("--genetree option must be specified, GeneTree in nhx format") + + # reads single gene tree + genetree = PhyloTree(options.genetree) + + leaves_list = genetree.get_leaf_names() + # Genetree nodes are required to be in gene_species format + leaves_list = [_ for _ in leaves_list if '_' in _] + + species_list = [_.split("_")[1] for _ in leaves_list] + + species_dict = {} + for species in species_list: + count = "one" + if species in species_dict: + count = "many" + species_dict[species] = count + + homologies = { + 'one-to-one': [], + 'one-to-many': [], + 'many-to-one': [], + 'many-to-many': [], + 'paralogs': [] + } + + # stores relevant homology types in dict + for i, leaf1 in enumerate(leaves_list): + for leaf2 in leaves_list[i + 1:]: + id1 = leaf1.split(":")[1] if ":" in leaf1 else leaf1 + id2 = leaf2.split(":")[1] if ":" in leaf2 else leaf2 + species1 = id1.split("_")[1] + species2 = id2.split("_")[1] + if species1 == species2: + homology_type = 'paralogs' + else: + homology_type = species_dict[species1] + "-to-" + species_dict[species2] + homologies[homology_type].append((id1, id2)) + + options.filters = options.filters.split(",") + + if options.out_format == 'tabular': + for homology_type, homologs_list in homologies.items(): + # checks if homology type is in filter + if homology_type in options.filters: + for (gene1, gene2) in homologs_list: + print("%s\t%s\t%s" % (gene1, gene2, homology_type)) + elif options.out_format == 'csv': + print_family = True + for homology_type, homologs_list in homologies.items(): + if homologs_list and homology_type not in options.filters: + print_family = False + break + + # prints family if homology type is not found in filter + if print_family: + print(','.join(leaves_list)) + + +if __name__ == "__main__": + main() diff -r 87b6de3ef63e -r 817031b8486d ete_homology_classifier.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ete_homology_classifier.xml Thu May 10 06:15:17 2018 -0400 @@ -0,0 +1,95 @@ + + from a genetree utilising the ETE Toolkit + + ete_macros.xml + + + + + + + + + + + + + $homology + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r 87b6de3ef63e -r 817031b8486d test-data/11_homology.csv --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/11_homology.csv Thu May 10 06:15:17 2018 -0400 @@ -0,0 +1,1 @@ +insr_rattusnorvegicus,insr_musmusculus,insr_homosapiens,insr_pantroglodytes,insr_susscrofa diff -r 87b6de3ef63e -r 817031b8486d test-data/11_homology.tabular --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/11_homology.tabular Thu May 10 06:15:17 2018 -0400 @@ -0,0 +1,253 @@ +insr_rattusnorvegicus insr_musmusculus many-to-many +insr_rattusnorvegicus insr_homosapiens many-to-many +insr_rattusnorvegicus insr_pantroglodytes many-to-many +insr_rattusnorvegicus insr_susscrofa many-to-many +insr_rattusnorvegicus maob_musmusculus many-to-many +insr_rattusnorvegicus maob_homosapiens many-to-many +insr_rattusnorvegicus maob_pantroglodytes many-to-many +insr_rattusnorvegicus maob_susscrofa many-to-many +insr_rattusnorvegicus maob_canisfamiliaris many-to-many +insr_rattusnorvegicus maoa_musmusculus many-to-many +insr_rattusnorvegicus maoa_homosapiens many-to-many +insr_rattusnorvegicus maoa_pantroglodytes many-to-many +insr_rattusnorvegicus maoa_susscrofa many-to-many +insr_rattusnorvegicus maoa_canisfamiliaris many-to-many +insr_rattusnorvegicus brat1_musmusculus many-to-many +insr_rattusnorvegicus brat1_homosapiens many-to-many +insr_rattusnorvegicus brat1_pantroglodytes many-to-many +insr_rattusnorvegicus brat1_susscrofa many-to-many +insr_rattusnorvegicus brat1_canisfamiliaris many-to-many +insr_musmusculus insr_homosapiens many-to-many +insr_musmusculus insr_pantroglodytes many-to-many +insr_musmusculus insr_susscrofa many-to-many +insr_musmusculus maob_rattusnorvegicus many-to-many +insr_musmusculus maob_homosapiens many-to-many +insr_musmusculus maob_pantroglodytes many-to-many +insr_musmusculus maob_susscrofa many-to-many +insr_musmusculus maob_canisfamiliaris many-to-many +insr_musmusculus maoa_rattusnorvegicus many-to-many +insr_musmusculus maoa_homosapiens many-to-many +insr_musmusculus maoa_pantroglodytes many-to-many +insr_musmusculus maoa_susscrofa many-to-many +insr_musmusculus maoa_canisfamiliaris many-to-many +insr_musmusculus brat1_rattusnorvegicus many-to-many +insr_musmusculus brat1_homosapiens many-to-many +insr_musmusculus brat1_pantroglodytes many-to-many +insr_musmusculus brat1_susscrofa many-to-many +insr_musmusculus brat1_canisfamiliaris many-to-many +insr_homosapiens insr_pantroglodytes many-to-many +insr_homosapiens insr_susscrofa many-to-many +insr_homosapiens maob_rattusnorvegicus many-to-many +insr_homosapiens maob_musmusculus many-to-many +insr_homosapiens maob_pantroglodytes many-to-many +insr_homosapiens maob_susscrofa many-to-many +insr_homosapiens maob_canisfamiliaris many-to-many +insr_homosapiens maoa_rattusnorvegicus many-to-many +insr_homosapiens maoa_musmusculus many-to-many +insr_homosapiens maoa_pantroglodytes many-to-many +insr_homosapiens maoa_susscrofa many-to-many +insr_homosapiens maoa_canisfamiliaris many-to-many +insr_homosapiens brat1_rattusnorvegicus many-to-many +insr_homosapiens brat1_musmusculus many-to-many +insr_homosapiens brat1_pantroglodytes many-to-many +insr_homosapiens brat1_susscrofa many-to-many +insr_homosapiens brat1_canisfamiliaris many-to-many +insr_pantroglodytes insr_susscrofa many-to-many +insr_pantroglodytes maob_rattusnorvegicus many-to-many +insr_pantroglodytes maob_musmusculus many-to-many +insr_pantroglodytes maob_homosapiens many-to-many +insr_pantroglodytes maob_susscrofa many-to-many +insr_pantroglodytes maob_canisfamiliaris many-to-many +insr_pantroglodytes maoa_rattusnorvegicus many-to-many +insr_pantroglodytes maoa_musmusculus many-to-many +insr_pantroglodytes maoa_homosapiens many-to-many +insr_pantroglodytes maoa_susscrofa many-to-many +insr_pantroglodytes maoa_canisfamiliaris many-to-many +insr_pantroglodytes brat1_rattusnorvegicus many-to-many +insr_pantroglodytes brat1_musmusculus many-to-many +insr_pantroglodytes brat1_homosapiens many-to-many +insr_pantroglodytes brat1_susscrofa many-to-many +insr_pantroglodytes brat1_canisfamiliaris many-to-many +insr_susscrofa maob_rattusnorvegicus many-to-many +insr_susscrofa maob_musmusculus many-to-many +insr_susscrofa maob_homosapiens many-to-many +insr_susscrofa maob_pantroglodytes many-to-many +insr_susscrofa maob_canisfamiliaris many-to-many +insr_susscrofa maoa_rattusnorvegicus many-to-many +insr_susscrofa maoa_musmusculus many-to-many +insr_susscrofa maoa_homosapiens many-to-many +insr_susscrofa maoa_pantroglodytes many-to-many +insr_susscrofa maoa_canisfamiliaris many-to-many +insr_susscrofa brat1_rattusnorvegicus many-to-many +insr_susscrofa brat1_musmusculus many-to-many +insr_susscrofa brat1_homosapiens many-to-many +insr_susscrofa brat1_pantroglodytes many-to-many +insr_susscrofa brat1_canisfamiliaris many-to-many +maob_rattusnorvegicus maob_musmusculus many-to-many +maob_rattusnorvegicus maob_homosapiens many-to-many +maob_rattusnorvegicus maob_pantroglodytes many-to-many +maob_rattusnorvegicus maob_susscrofa many-to-many +maob_rattusnorvegicus maob_canisfamiliaris many-to-many +maob_rattusnorvegicus maoa_musmusculus many-to-many +maob_rattusnorvegicus maoa_homosapiens many-to-many +maob_rattusnorvegicus maoa_pantroglodytes many-to-many +maob_rattusnorvegicus maoa_susscrofa many-to-many +maob_rattusnorvegicus maoa_canisfamiliaris many-to-many +maob_rattusnorvegicus brat1_musmusculus many-to-many +maob_rattusnorvegicus brat1_homosapiens many-to-many +maob_rattusnorvegicus brat1_pantroglodytes many-to-many +maob_rattusnorvegicus brat1_susscrofa many-to-many +maob_rattusnorvegicus brat1_canisfamiliaris many-to-many +maob_musmusculus maob_homosapiens many-to-many +maob_musmusculus maob_pantroglodytes many-to-many +maob_musmusculus maob_susscrofa many-to-many +maob_musmusculus maob_canisfamiliaris many-to-many +maob_musmusculus maoa_rattusnorvegicus many-to-many +maob_musmusculus maoa_homosapiens many-to-many +maob_musmusculus maoa_pantroglodytes many-to-many +maob_musmusculus maoa_susscrofa many-to-many +maob_musmusculus maoa_canisfamiliaris many-to-many +maob_musmusculus brat1_rattusnorvegicus many-to-many +maob_musmusculus brat1_homosapiens many-to-many +maob_musmusculus brat1_pantroglodytes many-to-many +maob_musmusculus brat1_susscrofa many-to-many +maob_musmusculus brat1_canisfamiliaris many-to-many +maob_homosapiens maob_pantroglodytes many-to-many +maob_homosapiens maob_susscrofa many-to-many +maob_homosapiens maob_canisfamiliaris many-to-many +maob_homosapiens maoa_rattusnorvegicus many-to-many +maob_homosapiens maoa_musmusculus many-to-many +maob_homosapiens maoa_pantroglodytes many-to-many +maob_homosapiens maoa_susscrofa many-to-many +maob_homosapiens maoa_canisfamiliaris many-to-many +maob_homosapiens brat1_rattusnorvegicus many-to-many +maob_homosapiens brat1_musmusculus many-to-many +maob_homosapiens brat1_pantroglodytes many-to-many +maob_homosapiens brat1_susscrofa many-to-many +maob_homosapiens brat1_canisfamiliaris many-to-many +maob_pantroglodytes maob_susscrofa many-to-many +maob_pantroglodytes maob_canisfamiliaris many-to-many +maob_pantroglodytes maoa_rattusnorvegicus many-to-many +maob_pantroglodytes maoa_musmusculus many-to-many +maob_pantroglodytes maoa_homosapiens many-to-many +maob_pantroglodytes maoa_susscrofa many-to-many +maob_pantroglodytes maoa_canisfamiliaris many-to-many +maob_pantroglodytes brat1_rattusnorvegicus many-to-many +maob_pantroglodytes brat1_musmusculus many-to-many +maob_pantroglodytes brat1_homosapiens many-to-many +maob_pantroglodytes brat1_susscrofa many-to-many +maob_pantroglodytes brat1_canisfamiliaris many-to-many +maob_susscrofa maob_canisfamiliaris many-to-many +maob_susscrofa maoa_rattusnorvegicus many-to-many +maob_susscrofa maoa_musmusculus many-to-many +maob_susscrofa maoa_homosapiens many-to-many +maob_susscrofa maoa_pantroglodytes many-to-many +maob_susscrofa maoa_canisfamiliaris many-to-many +maob_susscrofa brat1_rattusnorvegicus many-to-many +maob_susscrofa brat1_musmusculus many-to-many +maob_susscrofa brat1_homosapiens many-to-many +maob_susscrofa brat1_pantroglodytes many-to-many +maob_susscrofa brat1_canisfamiliaris many-to-many +maob_canisfamiliaris maoa_rattusnorvegicus many-to-many +maob_canisfamiliaris maoa_musmusculus many-to-many +maob_canisfamiliaris maoa_homosapiens many-to-many +maob_canisfamiliaris maoa_pantroglodytes many-to-many +maob_canisfamiliaris maoa_susscrofa many-to-many +maob_canisfamiliaris brat1_rattusnorvegicus many-to-many +maob_canisfamiliaris brat1_musmusculus many-to-many +maob_canisfamiliaris brat1_homosapiens many-to-many +maob_canisfamiliaris brat1_pantroglodytes many-to-many +maob_canisfamiliaris brat1_susscrofa many-to-many +maoa_rattusnorvegicus maoa_musmusculus many-to-many +maoa_rattusnorvegicus maoa_homosapiens many-to-many +maoa_rattusnorvegicus maoa_pantroglodytes many-to-many +maoa_rattusnorvegicus maoa_susscrofa many-to-many +maoa_rattusnorvegicus maoa_canisfamiliaris many-to-many +maoa_rattusnorvegicus brat1_musmusculus many-to-many +maoa_rattusnorvegicus brat1_homosapiens many-to-many +maoa_rattusnorvegicus brat1_pantroglodytes many-to-many +maoa_rattusnorvegicus brat1_susscrofa many-to-many +maoa_rattusnorvegicus brat1_canisfamiliaris many-to-many +maoa_musmusculus maoa_homosapiens many-to-many +maoa_musmusculus maoa_pantroglodytes many-to-many +maoa_musmusculus maoa_susscrofa many-to-many +maoa_musmusculus maoa_canisfamiliaris many-to-many +maoa_musmusculus brat1_rattusnorvegicus many-to-many +maoa_musmusculus brat1_homosapiens many-to-many +maoa_musmusculus brat1_pantroglodytes many-to-many +maoa_musmusculus brat1_susscrofa many-to-many +maoa_musmusculus brat1_canisfamiliaris many-to-many +maoa_homosapiens maoa_pantroglodytes many-to-many +maoa_homosapiens maoa_susscrofa many-to-many +maoa_homosapiens maoa_canisfamiliaris many-to-many +maoa_homosapiens brat1_rattusnorvegicus many-to-many +maoa_homosapiens brat1_musmusculus many-to-many +maoa_homosapiens brat1_pantroglodytes many-to-many +maoa_homosapiens brat1_susscrofa many-to-many +maoa_homosapiens brat1_canisfamiliaris many-to-many +maoa_pantroglodytes maoa_susscrofa many-to-many +maoa_pantroglodytes maoa_canisfamiliaris many-to-many +maoa_pantroglodytes brat1_rattusnorvegicus many-to-many +maoa_pantroglodytes brat1_musmusculus many-to-many +maoa_pantroglodytes brat1_homosapiens many-to-many +maoa_pantroglodytes brat1_susscrofa many-to-many +maoa_pantroglodytes brat1_canisfamiliaris many-to-many +maoa_susscrofa maoa_canisfamiliaris many-to-many +maoa_susscrofa brat1_rattusnorvegicus many-to-many +maoa_susscrofa brat1_musmusculus many-to-many +maoa_susscrofa brat1_homosapiens many-to-many +maoa_susscrofa brat1_pantroglodytes many-to-many +maoa_susscrofa brat1_canisfamiliaris many-to-many +maoa_canisfamiliaris brat1_rattusnorvegicus many-to-many +maoa_canisfamiliaris brat1_musmusculus many-to-many +maoa_canisfamiliaris brat1_homosapiens many-to-many +maoa_canisfamiliaris brat1_pantroglodytes many-to-many +maoa_canisfamiliaris brat1_susscrofa many-to-many +brat1_rattusnorvegicus brat1_musmusculus many-to-many +brat1_rattusnorvegicus brat1_homosapiens many-to-many +brat1_rattusnorvegicus brat1_pantroglodytes many-to-many +brat1_rattusnorvegicus brat1_susscrofa many-to-many +brat1_rattusnorvegicus brat1_canisfamiliaris many-to-many +brat1_musmusculus brat1_homosapiens many-to-many +brat1_musmusculus brat1_pantroglodytes many-to-many +brat1_musmusculus brat1_susscrofa many-to-many +brat1_musmusculus brat1_canisfamiliaris many-to-many +brat1_homosapiens brat1_pantroglodytes many-to-many +brat1_homosapiens brat1_susscrofa many-to-many +brat1_homosapiens brat1_canisfamiliaris many-to-many +brat1_pantroglodytes brat1_susscrofa many-to-many +brat1_pantroglodytes brat1_canisfamiliaris many-to-many +brat1_susscrofa brat1_canisfamiliaris many-to-many +insr_rattusnorvegicus maob_rattusnorvegicus paralogs +insr_rattusnorvegicus maoa_rattusnorvegicus paralogs +insr_rattusnorvegicus brat1_rattusnorvegicus paralogs +insr_musmusculus maob_musmusculus paralogs +insr_musmusculus maoa_musmusculus paralogs +insr_musmusculus brat1_musmusculus paralogs +insr_homosapiens maob_homosapiens paralogs +insr_homosapiens maoa_homosapiens paralogs +insr_homosapiens brat1_homosapiens paralogs +insr_pantroglodytes maob_pantroglodytes paralogs +insr_pantroglodytes maoa_pantroglodytes paralogs +insr_pantroglodytes brat1_pantroglodytes paralogs +insr_susscrofa maob_susscrofa paralogs +insr_susscrofa maoa_susscrofa paralogs +insr_susscrofa brat1_susscrofa paralogs +maob_rattusnorvegicus maoa_rattusnorvegicus paralogs +maob_rattusnorvegicus brat1_rattusnorvegicus paralogs +maob_musmusculus maoa_musmusculus paralogs +maob_musmusculus brat1_musmusculus paralogs +maob_homosapiens maoa_homosapiens paralogs +maob_homosapiens brat1_homosapiens paralogs +maob_pantroglodytes maoa_pantroglodytes paralogs +maob_pantroglodytes brat1_pantroglodytes paralogs +maob_susscrofa maoa_susscrofa paralogs +maob_susscrofa brat1_susscrofa paralogs +maob_canisfamiliaris maoa_canisfamiliaris paralogs +maob_canisfamiliaris brat1_canisfamiliaris paralogs +maoa_rattusnorvegicus brat1_rattusnorvegicus paralogs +maoa_musmusculus brat1_musmusculus paralogs +maoa_homosapiens brat1_homosapiens paralogs +maoa_pantroglodytes brat1_pantroglodytes paralogs +maoa_susscrofa brat1_susscrofa paralogs +maoa_canisfamiliaris brat1_canisfamiliaris paralogs