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

feat: store score components in DB #518

Merged
merged 4 commits into from
Aug 29, 2024
Merged

feat: store score components in DB #518

merged 4 commits into from
Aug 29, 2024

Conversation

jsstevenson
Copy link
Contributor

@jsstevenson jsstevenson commented Aug 27, 2024

support #515

@jsstevenson jsstevenson added the priority:low Low priority label Aug 27, 2024
@jsstevenson jsstevenson changed the base branch from main to dev August 27, 2024 20:49
@jsstevenson jsstevenson marked this pull request as ready for review August 28, 2024 17:27
Comment on lines +54 to 77
def calculate_interaction_score(drug_partners_per_gene = nil, gene_partners_per_drug = nil, update = false)
drug_partners_per_gene = Interaction.group(:gene_id).count if drug_partners_per_gene.nil?
avg_drug_partners_per_gene = drug_partners_per_gene.values.sum / drug_partners_per_gene.values.size.to_f
drug_partners_for_this_gene = drug_partners_per_gene[gene_id]

(self.publications.count + self.sources.count) * average_known_gene_partners_per_drug/known_gene_partners_for_interaction_drug * average_known_drug_partners_per_gene/known_drug_partners_for_interaction_gene
gene_partners_per_drug = Interaction.group(:drug_id).count if gene_partners_per_drug.nil?
avg_gene_partners_per_drug = gene_partners_per_drug.values.sum / gene_partners_per_drug.values.size.to_f
gene_partners_for_this_drug = gene_partners_per_drug[drug_id]

drug_specificity = avg_gene_partners_per_drug / gene_partners_for_this_drug
gene_specificity = avg_drug_partners_per_gene / drug_partners_for_this_gene
evidence_score = publications.count + sources.count
interaction_score = evidence_score * drug_specificity * gene_specificity

if update
self.score = interaction_score
self.drug_specificity = drug_specificity
self.gene_specificity = gene_specificity
self.evidence_score = evidence_score
save!
end

interaction_score
end
Copy link
Contributor

Choose a reason for hiding this comment

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

this looks right, at least as far as https://dgidb.org/about#interaction-scores is concerned. I would like to get @acoffman just to confirm that the ruby isn't doing anything unexpected here

Copy link
Collaborator

Choose a reason for hiding this comment

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

This looks correct to me on first glance. Only "gotcha" I could think of is defaulting to integer division between two ints but it looks like that's covered by the .to_f calls.

@jsstevenson jsstevenson merged commit acbb178 into dev Aug 29, 2024
2 of 3 checks passed
@jsstevenson jsstevenson deleted the int-scores branch August 29, 2024 13:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
priority:low Low priority
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants