Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add skipping mechanism for list of studies #360

Merged
merged 2 commits into from
Jun 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading