Skip to content

Commit

Permalink
Merge pull request #360 from EBI-Metagenomics/fix/add-erz-metagenomic…
Browse files Browse the repository at this point in the history
…s-exchange

Add skipping mechanism for list of studies
  • Loading branch information
KateSakharova authored Jun 3, 2024
2 parents ab9f0ec + 4a1c04b commit 0201c09
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 5 deletions.
3 changes: 3 additions & 0 deletions emgapi/management/commands/populate_metagenomics_exchange.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,9 @@ def process_to_index_and_update_records(self, analyses_to_index_and_update):
mgya=annotation_job.accession,
sequence_accession=sequence_accession,
)
if not response:
logging.warning(f"Error occurred {annotation_job}")
continue
if response.ok:
logging.info(f"Successfully added {annotation_job}")
registry_id, metadata_match = self.mgx_api.check_analysis(
Expand Down
16 changes: 11 additions & 5 deletions emgapi/metagenomics_exchange.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

import requests
from django.conf import settings
from requests.exceptions import HTTPError
from requests.exceptions import HTTPError, JSONDecodeError


class MetagenomicsExchangeAPI:
Expand Down Expand Up @@ -108,14 +108,20 @@ def add_analysis(self, mgya: str, sequence_accession: str):
data = self.generate_metadata(mgya, sequence_accession)
try:
response = self.post_request(endpoint="datasets", data=data)
response.raise_for_status() # Ensure we raise for HTTP errors
return response
except HTTPError as http_error:
try:
response_json = http_error.response.json()
logging.error(f"API response content: {response_json}")
except:
pass
raise http_error
return response
except JSONDecodeError: # Catch JSON decoding errors
logging.error(f"Failed to decode JSON from response: {http_error.response.text}")
except Exception as e:
logging.error(f"Unexpected error: {e}")

# Log the HTTP status code and the error message
logging.error(f"HTTPError occurred: {http_error}")
return None

def check_analysis(self, mgya: str, sequence_accession: str, metadata=None):
"""Check if a sequence exists in the M. Exchange
Expand Down

0 comments on commit 0201c09

Please sign in to comment.