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

fix: use latest GO api changes #542

Open
wants to merge 2 commits into
base: dev
Choose a base branch
from
Open
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
2 changes: 1 addition & 1 deletion server/lib/genome/importers/api_importers/go/api_client.rb
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ def make_get_request(uri)
end

def gene_lookup_base_url(id)
"https://api.geneontology.org/api/bioentity/function/%22GO:#{id}%22"
"https://api.geneontology.org/api/bioentity/function/GO:#{id}"
end

def params(start, rows)
Expand Down
6 changes: 3 additions & 3 deletions server/lib/genome/importers/api_importers/go/importer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,13 @@ def create_gene_claims
categories.each do |category, go_id|
start = 0
rows = 500
genes = api_client.genes_for_go_id(go_id, start, rows)
while genes.count.positive? do
loop do
genes = api_client.genes_for_go_id(go_id, start, rows)
genes.each do |gene|
create_gene_claim_for_entry(gene, category) if gene['taxon_label'] == 'Homo sapiens'
end
break if genes.count < rows
Copy link
Collaborator

@acoffman acoffman Nov 27, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this fail if the number of rows on the last page happens to be the same as the page size you and run into the raise StandardError in the api client on the subsequent request?

If so, maybe you want to handle that separately.

You can directly check the http response code for 404 (as it is currently doing with 200), or you could match on the response type like this example here if you find that to be cleaner. (Note it will not be redirection as the subclass but NotFound). I could be misunderstanding what's going on though.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah, totally. I was being lazy.

it seems like the GO API returns the same response payload for a bunch of different classes of errors:

{"detail":"Item with ID GO:0008233 not found"}

You get a variation of this ^ if you request a nonexistent entity, but also if you make a request where "start" is beyond the number of records. I was trying to avoid catching 404s because, like, those are nice to know about for other reasons, but maybe we can condition this such that we raise the exception if the initial request with start=0 returns a 404, but we just break the loop once we're starting from a higher number.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's also a good chance that this is a recent bug that will get fixed, but the issue tracker for the GO site has like 50 open PRs and hundreds of open issues, so... idk

start += rows
genes = api_client.genes_for_go_id(go_id, start, rows)
end
end
end
Expand Down