Skip to content

Commit

Permalink
Add rummagene enrichment analysis
Browse files Browse the repository at this point in the history
  • Loading branch information
u8sand committed Sep 9, 2024
1 parent 2fdfd2b commit ef2138f
Show file tree
Hide file tree
Showing 5 changed files with 116 additions and 1 deletion.
4 changes: 4 additions & 0 deletions components/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -263,6 +263,10 @@ import * as service_regulatoryElementInfo from "./service/regulatoryElementInfo"
import service_regulatoryElementInfo_packageJson from "./service/regulatoryElementInfo/package.json"
metanodes.push(...MetaNodesFromExports(service_regulatoryElementInfo, service_regulatoryElementInfo_packageJson))
components.push("service/regulatoryElementInfo")
import * as service_rummagene from "./service/rummagene"
import service_rummagene_packageJson from "./service/rummagene/package.json"
metanodes.push(...MetaNodesFromExports(service_rummagene, service_rummagene_packageJson))
components.push("service/rummagene")
import * as service_sigcom_lincs from "./service/sigcom-lincs"
import service_sigcom_lincs_packageJson from "./service/sigcom-lincs/package.json"
metanodes.push(...MetaNodesFromExports(service_sigcom_lincs, service_sigcom_lincs_packageJson))
Expand Down
51 changes: 51 additions & 0 deletions components/service/rummagene/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
import { GeneSet } from "@/components/core/set"
import { rummagene_icon } from "@/icons"
import { MetaNode } from "@/spec/metanode"
import { z } from 'zod'

const rummagene_url = 'https://rummagene.com'

export const RummageneGeneSet = MetaNode(`RummageneGeneSet`)
.meta({
label: 'Rummagene Gene Set',
description: 'A gene set uploaded to rummagene',
icon: [rummagene_icon],
})
.codec(z.object({
id: z.string(),
}))
.view(props => (
<div className="flex-grow flex flex-row m-0" style={{ minHeight: 500 }}>
<iframe
className="flex-grow border-0"
src={`${rummagene_url}/enrich?dataset=${props.id}`}
/>
</div>
))
.build()

export const RummageneEnrichmentAnalysis = MetaNode(`RummageneEnrichmentAnalysis`)
.meta({
label: 'Rummagene Enrichment Analysis',
description: 'Use Rummagene to search through gene sets in PubMedCentral supplemental material',
})
.inputs({ gene_set: GeneSet })
.output(RummageneGeneSet)
.resolve(async (props) => {
const req = await fetch(`${rummagene_url}/graphql`, {
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
},
method: 'POST',
body: JSON.stringify({"operationName":"AddUserGeneSet","variables":{"description":`${props.inputs.gene_set.description ?? 'Gene set'} from pwb`,"genes":props.inputs.gene_set.set},"query":"mutation AddUserGeneSet($genes: [String], $description: String = \"\") {\n addUserGeneSet(input: {genes: $genes, description: $description}) {\n userGeneSet {\n id\n __typename\n }\n __typename\n }\n}\n"}),
})
if (!req.ok) throw new Error('Failed to submit gene set to rummagene')
const { data: { addUserGeneSet: { userGeneSet: { id } } } } = await req.json()
return { id }
})
.story(props => ({
abstract: `Papers in Pub Med Central with gene sets significantly overlapping with ${props.inputs?.gene_set?.description ? props.inputs.gene_set.description : 'the gene set'} were identified using Rummagene\\ref{doi:10.1038/s42003-024-06177-7}.`,
legend: `A listing of significantly overlapping gene sets with ${props.inputs?.gene_set?.description ? props.inputs.gene_set.description : 'the gene set'} found from the supplemental material of papers using Rummagene\\ref{doi:10.1038/s42003-024-06177-7}.`,
}))
.build()
13 changes: 13 additions & 0 deletions components/service/rummagene/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"name": "@playbook-partnership/rummagene",
"version": "1.0.0",
"license": "CC-BY-NC-SA-4.0",
"author": "Daniel J. B. Clarke <danieljbclarkemssm@gmail.com>",
"private": true,
"dependencies": {
"react": "^18.2.0"
},
"devDependencies": {
"@types/react": "^18.0.21"
}
}
3 changes: 2 additions & 1 deletion icons/services/index.ts

Large diffs are not rendered by default.

46 changes: 46 additions & 0 deletions icons/services/src/Rummagene.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit ef2138f

Please sign in to comment.