Пример #1
0
    def testCreatingAlreadyExistingGeneset(self):
        """
        Testing that if we try to create an already created geneset
        and annotations have not changed, fail gracefully.
        """

        selected_go_term = self.go_terms[2]

        geneset_response = load_to_tribe(
            self.main_config_file, selected_go_term, self.tribe_token,
            prefer_update=True)

        self.assertEqual(geneset_response['title'],
                         'GO-BP-0000005:premier league')
        self.assertEqual(geneset_response['tip_item_count'], 1)

        # Do not change the annotations, just try to save to Tribe again
        response = load_to_tribe(
            self.main_config_file, selected_go_term, self.tribe_token,
            prefer_update=True)

        self.assertEqual(response['status_code'], 409)
        self.assertEqual(
            response['content'], 'There is already a geneset with the slug '
            '"go0000005-h**o-sapiens" and annotations {\'A0A024R214\': []} '
            'saved in Tribe. A new geneset has not been saved.')
Пример #2
0
    def testCreateNewKEGGVersion(self):
        """
        Test adding one gene to an existing KEGG set
        """

        selected_kegg_term = self.kegg_sets[1]

        geneset_response = load_to_tribe(self.main_config_file,
                                         selected_kegg_term, self.tribe_token,
                                         prefer_update=True)

        self.assertEqual(
            geneset_response['title'], 'KEGG-Pathway-hsa00020: Citrate cycle '
                                       '(TCA cycle) - H**o sapiens (human)')
        self.assertEqual(geneset_response['tip_item_count'], 10)

        # Adding random gene 5432
        selected_kegg_term['annotations'] = {
            1431: [], 1737: [], 1738: [], 1743: [], 2271: [], 3417: [],
            3418: [], 3419: [], 3420: [], 3421: [], 5432: []
        }

        version_response = load_to_tribe(self.main_config_file,
                                         selected_kegg_term, self.tribe_token,
                                         prefer_update=True)

        self.assertEqual(len(version_response['annotations']), 11)
Пример #3
0
    def testLoadGOToTribe(self):
        geneset_response = load_to_tribe(self.main_config_file,
                                         self.go_terms[0], self.tribe_token)

        self.assertEqual(geneset_response['title'],
                         'GO-BP-0000006:la liga')
        self.assertEqual(geneset_response['tip_item_count'], 3)
Пример #4
0
    def testLoadKEGGToTribe(self):
        geneset_response = load_to_tribe(self.main_config_file,
                                         self.kegg_sets[0], self.tribe_token)

        self.assertEqual(
            geneset_response['title'], 'KEGG-Pathway-hsa00010: Glycolysis / '
                                       'Gluconeogenesis - H**o sapiens (human)')
        self.assertEqual(geneset_response['tip_item_count'], 10)
Пример #5
0
    def testCreateNewDOVersion(self):
        """
        Test adding one term and removing one term from an existing DO term
        """

        selected_do_term = self.do_terms[1]

        geneset_response = load_to_tribe(
            self.main_config_file, selected_do_term, self.tribe_token,
            prefer_update=True)

        self.assertEqual(geneset_response['title'],
                         'DO-0014667:disease of metabolism')
        self.assertEqual(geneset_response['tip_item_count'], 6)

        # Remove gene 5468, add random gene 4321
        selected_do_term['annotations'] = {
            4160: [], 8431: [], 51738: [], 5443: [], 6492: [], 4321: []}

        version_response = load_to_tribe(
            self.main_config_file, selected_do_term, self.tribe_token,
            prefer_update=True)

        self.assertEqual(len(version_response['annotations']), 6)
Пример #6
0
    def testCreateNewGOVersion(self):
        """
        Test removing one gene from an existing GO term
        """

        selected_go_term = self.go_terms[1]

        geneset_response = load_to_tribe(
            self.main_config_file, selected_go_term, self.tribe_token,
            prefer_update=True)

        self.assertEqual(geneset_response['title'],
                         'GO-BP-0000007:european team')
        self.assertEqual(geneset_response['tip_item_count'], 4)

        # Remove gene 'A0A024R1V6'
        selected_go_term['annotations'] = {
            'A0A024R214': [], 'A0A024QZP7': [], 'A0A024R216': []}

        version_response = load_to_tribe(
            self.main_config_file, selected_go_term, self.tribe_token,
            prefer_update=True)

        self.assertEqual(len(version_response['annotations']), 3)
Пример #7
0
    def testLoadDOToTribe(self):
        geneset_response = load_to_tribe(self.main_config_file,
                                         self.do_terms[0], self.tribe_token)

        self.assertEqual(geneset_response['title'], 'DO-374:nutrition disease')
        self.assertEqual(geneset_response['tip_item_count'], 6)
Пример #8
0
def main(ini_file_path):

    if not os.path.isfile(ini_file_path):
        logger.error('Main INI configuration file not found in this path: ' +
                     ini_file_path)
        sys.exit(1)

    main_config_file = SafeConfigParser()
    main_config_file.read(ini_file_path)

    if not main_config_file.has_option('download_folder',
                                       'BASE_DOWNLOAD_FOLDER'):
        logger.error('Main configuration file must have a "download_folder" '
                     'section, which must contain a "BASE_DOWNLOAD_FOLDER" '
                     'parameter where download folders will be created for '
                     'each species. Common annotation files for all species'
                     ' will also be saved here.')
        sys.exit(1)

    download_folder = main_config_file.get('download_folder',
                                           'BASE_DOWNLOAD_FOLDER')

    secrets_file = None
    if main_config_file.has_option('main', 'SECRETS_FILE'):
        secrets_file = main_config_file.get('main', 'SECRETS_FILE')

    process_to = main_config_file.get('main', 'PROCESS_TO')

    if main_config_file.has_option('Tribe parameters', 'TRIBE_PUBLIC'):
        tribe_public = main_config_file.getboolean('Tribe parameters',
                                                   'TRIBE_PUBLIC')
    else:
        tribe_public = False

    if main_config_file.has_option('Tribe parameters', 'PREFER_UPDATE'):
        prefer_update = main_config_file.getboolean('Tribe parameters',
                                                    'PREFER_UPDATE')
    else:
        prefer_update = False

    if main_config_file.has_option('Tribe parameters', 'TRIBE_URL'):
        tribe_url = main_config_file.get('Tribe parameters', 'TRIBE_URL')
    else:
        tribe_url = False

    species_dir = main_config_file.get('species files', 'SPECIES_DIR')
    species_files = main_config_file.get('species files', 'SPECIES_FILES')

    # Make a list of the locations of all species files:
    species_files = [filename.strip() for filename in species_files.split(',')]

    for species_file in species_files:

        # Build full species_file path
        species_file = os.path.join(species_dir, species_file)

        all_org_genesets = process_all_organism_genesets(
            species_file, download_folder, secrets_file)

        if process_to == 'Tribe':
            if not tribe_url:
                logger.error('"Tribe parameters" section needs "TRIBE_URL" '
                             'option to be able to save to Tribe.')
                sys.exit(1)

            tribe_token, creator_username = get_oauth_token(
                tribe_url, secrets_file)

            if prefer_update:
                genesets_to_save = get_all_changed_genesets(
                    species_file, all_org_genesets, tribe_token,
                    creator_username)

                if genesets_to_save == []:
                    logger.info(
                        'Annotations have not changed in any gene sets'
                        ' for species_file %s.', species_file)
            else:
                genesets_to_save = all_org_genesets

            logger.info('Starting to save %s gene sets to Tribe',
                        len(genesets_to_save))

            for geneset in genesets_to_save:
                geneset['public'] = tribe_public
                load_to_tribe(ini_file_path,
                              geneset,
                              tribe_token,
                              creator_username,
                              prefer_update=prefer_update)
            logger.info('Finished saving gene sets to Tribe')

        elif process_to == 'JSON file':
            json_filepath = main_config_file.get('main', 'JSON_FILE')

            with open(json_filepath, "w") as outfile:
                json.dump(all_org_genesets, outfile, indent=2)