def _add_gene_associations(self, r_id, r_genes, gene_ids, r_tag):
        """Adds all the different kinds of genes into a list."""
        genes = ET.SubElement(
            r_tag, _tag('geneProductAssociation', FBC_V2))
        if isinstance(r_genes, list):
            e = Expression(And(*(Variable(i) for i in r_genes)))
        else:
            e = Expression(r_genes)
        gene_stack = [(e.root, genes)]
        while len(gene_stack) > 0:
            current, parent = gene_stack.pop()
            if isinstance(current, Or):
                gene_tag = ET.SubElement(parent, _tag('or', FBC_V2))
            elif isinstance(current, And):
                gene_tag = ET.SubElement(parent, _tag('and', FBC_V2))
            elif isinstance(current, Variable):
                gene_tag = ET.SubElement(parent, _tag(
                    'geneProductRef', FBC_V2))
                if current.symbol not in gene_ids:
                    id = 'g_' + util.create_unique_id(
                        self._make_safe_id(current.symbol), gene_ids)
                    gene_ids[id] = current.symbol
                    gene_tag.set(_tag('geneProduct', FBC_V2), id)
            if isinstance(current, (Or, And)):
                for item in current:
                    gene_stack.append((item, gene_tag))
def _add_gene_associations ( self , r_id , r_genes , gene_ids , r_tag ) : genes = ET . SubElement ( r_tag , _tag ( 'geneProductAssociation' , FBC_V2 ) ) if isinstance ( r_genes , list ) : e = Expression ( And ( * ( Variable ( i ) for i in r_genes ) ) ) else : e = Expression ( r_genes ) gene_stack = [ ( e . root , genes ) ] while len ( gene_stack ) > 0 : current , parent = gene_stack . pop ( ) if isinstance ( current , Or ) : gene_tag = ET . SubElement ( parent , _tag ( 'or' , FBC_V2 ) ) elif isinstance ( current , And ) : gene_tag = ET . SubElement ( parent , _tag ( 'and' , FBC_V2 ) ) elif isinstance ( current , Variable ) : gene_tag = ET . SubElement ( parent , _tag ( 'geneProductRef' , FBC_V2 ) ) if current . symbol not in gene_ids : id = 'g_' + util . create_unique_id ( self . _make_safe_id ( current . symbol ) , gene_ids ) gene_ids [ id ] = current . symbol gene_tag . set ( _tag ( 'geneProduct' , FBC_V2 ) , id ) if isinstance ( current , ( Or , And ) ) : for item in current : gene_stack . append ( ( item , gene_tag ) )
Adds all the different kinds of genes into a list.