https://github.com/greenelab/tribe-client
A client for an open-source web app that allows creating, sharing, and analyzing gene sets
https://github.com/greenelab/tribe-client
gene-sets tool
Last synced: 5 days ago
JSON representation
A client for an open-source web app that allows creating, sharing, and analyzing gene sets
- Host: GitHub
- URL: https://github.com/greenelab/tribe-client
- Owner: greenelab
- License: bsd-3-clause
- Created: 2017-08-01T18:28:16.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2017-11-02T20:54:05.000Z (over 8 years ago)
- Last Synced: 2025-10-29T20:59:41.178Z (8 months ago)
- Topics: gene-sets, tool
- Language: Python
- Homepage:
- Size: 134 KB
- Stars: 0
- Watchers: 4
- Forks: 2
- Open Issues: 3
-
Metadata Files:
- Readme: README.rst
- License: LICENSE.txt
Awesome Lists containing this project
README
====================
Tribe-Client
====================
Tribe-client is a portable Python app to connect your bioinformatics server
or tool to the 'Tribe' web service (located at https://tribe.greenelab.com).
This package allows web servers created using
`Django `_ to connect directly
to Tribe and make use of its resources. Users of the client web server or tool
can access their Tribe resources via Tribe `OAuth2 `_
authentication.
Requirements
------------
If you are using tribe-client in a web server that uses Django, we recommend
you use Django version 1.8 or newer.
Download and Install
---------------------
Tribe-client is registered as "tribe-client" in PyPI and is pip
installable:
.. code-block:: shell
pip install tribe-client
Quick Start with Django
------------------------
1. Add ``tribe_client`` to your ``INSTALLED_APPS`` setting:
.. code-block:: python
INSTALLED_APPS = (
...
'tribe_client',
)
2. Include the tribe-client URLconf in your project's URLconf (usually
``urls.py``):
.. code-block:: python
from django.conf.urls import url, patterns, include
urlpatterns = patterns('',
...
(r'^tribe_client/', include('tribe_client.urls')),
)
3. Register your client server at
https://tribe.greenelab.com/oauth2/applications/. Make sure to:
a. Be logged-in using your Tribe account
b. Select "Confidential" under ``Client type`` and
c. Select "Authorization Code" under ``Authorization grant type``
d. Enter your client server's address plus "/tribe_client/get_token" in the ``Redirect uris`` box. If your client server's current address is http://example.com, enter **http://example.com/tribe_client/get_token**
.. note:: Currently, Tribe supports the following ``Authorization grant types``:
* Authorization code
* Resource owner password-based
and does not support the following:
* Implicit
* Client credentials
4. Write down the Client ID in the ``TRIBE_ID`` setting and the Client secret
in the ``TRIBE_SECRET`` setting in your ``settings.py`` file like so:
.. code-block:: python
TRIBE_ID = '*****Tribe Client ID*****'
TRIBE_SECRET = '*****Tribe Client Secret*****'
5. The ``TRIBE_REDIRECT_URI`` setting should be the address of the client
server plus "/tribe_client/get_token".
.. code-block:: python
TRIBE_REDIRECT_URI = 'http://example.com/tribe_client/get_token'
6. Define in your settings the scope that your client server should have
for Tribe resources. The two options are: 'read' and 'write'.The default
is 'read'. **Note:** The 'write' scope includes the 'read' scope access.
.. code-block:: python
TRIBE_SCOPE = 'write' # Or 'read'
7. (Optional) If you want to use tribe_client's templates, make sure you have
a base template (which gets extended by your other templates and contains
the ``{% block content %} {% endblock %}`` statements) that the tribe_client
templates can extend, and specify its name in your settings. The name of this
setting is ``TRIBE_CLIENT_BASE_TEMPLATE``. By default, tribe_client will
look for a template called ``base.html``.
.. code-block:: python
TRIBE_CLIENT_BASE_TEMPLATE = 'name_of_your_main_template.html'
8. (Optional) If you want to use tribe_client's built-in login templates and
urls, make a link that takes the user to the ``connect_to_tribe`` url in your
website. This url will show users the built-in Tribe login page.
Below is an example of this type of link in the webpage's navbar:
.. code-block:: html
9. (Optional) If you want to redirect your users to somewhere other than
the ``/tribe_client/display_genesets`` url after they have logged in,
you can define this in the ``TRIBE_LOGIN_REDIRECT`` setting in your
``settings.py`` file. **Note:** If you are not using the tribe-client
built-in templates (see above), you will need to define this setting so
your users have somewhere to go after they log in.
.. code-block:: python
TRIBE_LOGIN_REDIRECT = '/place-to-go-after-login'
10. (Optional) If you want to redirect your users to somewhere other than
the ``/tribe_client`` url after they log out, you can define this in the
``TRIBE_LOGOUT_REDIRECT`` setting in your ``settings.py`` file.
**Note:** If you are not using the tribe-client built-in templates (see above),
you will need to define this setting so your users have somewhere to go after
they log out.
.. code-block:: python
TRIBE_LOGOUT_REDIRECT = '/place-to-go-after-logout'
11. (Optional) If you want to download and pickle gene sets/collections from
Tribe by using the ``tribe_client_pickle_public_genesets`` management command,
you must customize the following setting in ``settings.py``:
.. code-block:: python
# Location of folder where pickled gene set files will be saved to.
# This can be a subdirectory in your server's path (as shown here),
# or not.
PUBLIC_GENESET_FOLDER = os.path.join(
, )
and run the following management command:
.. code-block:: shell
python manage.py tribe_client_pickle_public_genesets
This will download and pickle all the public Tribe collections for every
organism in your database. This is handy in case you want to do many gene
set enrichment analyses across thousands of gene sets saved in Tribe, or any
other task that would require making frequent, large, time-consuming requests
for gene sets.
A Closer Look
-----------------------------
Under the hood, tribe-client has functions that:
1) Get an access token (via the `OAuth2 `_ protocol) that
allows users to access and create resources in Tribe.
2) Retrieves public and private collections (and their versions) and displays
them on the client server using views and templates included in the package.
3) Allows users to create new collections and versions remotely, from the
client server.