Get all interactions for chemicals on a gene or biological entity (linked to this gene).

        Chemicals can interact on different types of biological entities linked to a gene. A list of allowed
        entities linked to a gene can be retrieved via the attribute :attr:`~.gene_forms`.

        Interactions are classified by a combination of interaction ('affects', 'decreases', 'increases') 
        and actions ('activity', 'expression', ...  ). A complete list of all allowed
        interaction_actions can be retrieved via the attribute :attr:`~.interaction_actions`.

        :param bool as_df: if set to True result returns as `pandas.DataFrame`
        :param str interaction_sentence: sentence describing the interactions 
        :param int organism_id: NCBI TaxTree identifier. Example: 9606 for Human.
        :param str chemical_name: chemical name
        :param str chemical_id: chemical identifier
        :param str cas_rn: CAS registry number
        :param str chemical_definition:
        :param str gene_symbol: HGNC gene symbol
        :param str gene_name: gene name
        :param int gene_id: NCBI Entrez Gene identifier
        :param str gene_form: gene form
        :param str interaction_action: combination of interaction and actions
        :param int limit: maximum number of results
        :rtype: list[models.ChemGeneIxn]


        .. seealso::

            :class:`pyctd.manager.models.ChemGeneIxn` 

            which is linked to:
            :class:`pyctd.manager.models.Chemical`
            :class:`pyctd.manager.models.Gene`
            :class:`pyctd.manager.models.ChemGeneIxnPubmed`

            Available interaction_actions and gene_forms
            :func:`pyctd.manager.database.Query.interaction_actions`
            :func:`pyctd.manager.database.Query.gene_forms`

def get_chem_gene_interaction_actions(self, gene_name=None, gene_symbol=None, gene_id=None, limit=None,
                                          cas_rn=None, chemical_id=None, chemical_name=None, organism_id=None,
                                          interaction_sentence=None, chemical_definition=None,
                                          gene_form=None, interaction_action=None, as_df=False):
        """Get all interactions for chemicals on a gene or biological entity (linked to this gene).

        Chemicals can interact on different types of biological entities linked to a gene. A list of allowed
        entities linked to a gene can be retrieved via the attribute :attr:`~.gene_forms`.

        Interactions are classified by a combination of interaction ('affects', 'decreases', 'increases') 
        and actions ('activity', 'expression', ...  ). A complete list of all allowed
        interaction_actions can be retrieved via the attribute :attr:`~.interaction_actions`.

        :param bool as_df: if set to True result returns as `pandas.DataFrame`
        :param str interaction_sentence: sentence describing the interactions 
        :param int organism_id: NCBI TaxTree identifier. Example: 9606 for Human.
        :param str chemical_name: chemical name
        :param str chemical_id: chemical identifier
        :param str cas_rn: CAS registry number
        :param str chemical_definition:
        :param str gene_symbol: HGNC gene symbol
        :param str gene_name: gene name
        :param int gene_id: NCBI Entrez Gene identifier
        :param str gene_form: gene form
        :param str interaction_action: combination of interaction and actions
        :param int limit: maximum number of results
        :rtype: list[models.ChemGeneIxn]


        .. seealso::

            :class:`pyctd.manager.models.ChemGeneIxn` 

            which is linked to:
            :class:`pyctd.manager.models.Chemical`
            :class:`pyctd.manager.models.Gene`
            :class:`pyctd.manager.models.ChemGeneIxnPubmed`

            Available interaction_actions and gene_forms
            :func:`pyctd.manager.database.Query.interaction_actions`
            :func:`pyctd.manager.database.Query.gene_forms`

        """
        q = self.session.query(models.ChemGeneIxn)

        if organism_id:
            q = q.filter(models.ChemGeneIxn.organism_id == organism_id)

        if interaction_sentence:
            q = q.filter(models.ChemGeneIxn.interaction == interaction_sentence)

        if gene_form:
            q = q.join(models.ChemGeneIxnGeneForm).filter(models.ChemGeneIxnGeneForm.gene_form == gene_form)

        if interaction_action:
            q = q.join(models.ChemGeneIxnInteractionAction) \
                .filter(models.ChemGeneIxnInteractionAction.interaction_action.like(interaction_action))

        q = self._join_gene(query=q, gene_name=gene_name, gene_symbol=gene_symbol, gene_id=gene_id)

        q = self._join_chemical(query=q, cas_rn=cas_rn, chemical_id=chemical_id, chemical_name=chemical_name,
                                chemical_definition=chemical_definition)

        return self._limit_and_df(q, limit, as_df)