#!/usr/bin/env jython
# -*- python -*-

from __future__ import nested_scopes

__version__ = "$Revision: 1.2 $"

import sys

import ensembl

import Intron
from metascript import exons_in_intron

from compatibility import *

def unique(items):
    items_dict = {}
    
    for item in items:
        items_dict[item] = None

    return items_dict.keys()

def exons_in_introns(species_list):
    for species in species_list:
        driver = ensembl.drivers[species]

        gene_index = 0
        for gene in driver.all_genes():
            if gene.type == "pseudogene":
                continue

            gene_index += 1
            gene_ensid = gene.accessionID
            print >>sys.stderr, gene_index, gene_ensid

            exons = []
            
            for transcript in gene.transcripts:
                introns = Intron.get_introns(transcript)

                for intron in introns:
                    exons.extend(exons_in_intron(intron.location, driver, gene_ensid))
                    
            if exons:
                other_gene_ensids = unique([exon.gene.accessionID for exon in exons])
                print "\t".join([gene_ensid] + other_gene_ensids)

def main(args):
    exons_in_introns(args)

if __name__ == "__main__":
    sys.exit(main(sys.argv[1:]))
