diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml new file mode 100644 index 0000000..9239bb1 --- /dev/null +++ b/.github/workflows/docker.yml @@ -0,0 +1,33 @@ +name: Build and Push Docker image + +on: + push: + branches: + - master + + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ secrets.ACTION_USER }} + password: ${{ secrets.ACTION_TOKEN }} + + - name: Build and push Docker image + uses: docker/build-push-action@v5 + with: + context: . + push: true + tags: ghcr.io/${{ github.repository }}/modelbricks:${{ github.sha.substring(0, 7) }} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 520bef4..3f29912 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ node_modules secrets.js + +.idea/ diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..d57e70b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,20 @@ +# Use an official Node.js runtime as the base image +FROM node:20 + +# Set the working directory in the container to /app +WORKDIR /app + +# Copy package.json and package-lock.json to the working directory +COPY package*.json ./ + +# Install the application dependencies +RUN npm install + +# Copy the rest of the application code to the working directory +COPY . . + +# Expose port 3000 for the application +EXPOSE 3000 + +# Define the command to run the application +CMD [ "npm", "start" ] diff --git a/app.js b/app.js index 155f22a..158abb4 100644 --- a/app.js +++ b/app.js @@ -8,7 +8,7 @@ const path = require("path"); const xml2js = require("xml2js"); const fetch = require("node-fetch"); const aPrs = require("./helpers/annotation-parser.js"); -const PORT = process.env.PORT || 4002; +const PORT = process.env.PORT || 3000; var indexRouter = require("./routes/index"); diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..4db9e01 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,9 @@ +version: '3' +services: + app: + build: . + ports: + - "3000:3000" + volumes: + - .:/app + command: npm start diff --git a/package.json b/package.json index 8c25fa1..712a8b9 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "", "main": "app.js", "scripts": { - "start": "nodemon ./bin/www --ignore 'public/json/*.json'" + "start": "node app.js" }, "author": "Saksham Raghuvanshi", "license": "ISC", diff --git a/public/json/annotations.json b/public/json/annotations.json index 39d006c..0bbdca3 100644 --- a/public/json/annotations.json +++ b/public/json/annotations.json @@ -1 +1 @@ -{"BioModel":{"$":{"name":"PLACEHOLDER"},"math":[],"text":[{"$":{"name":"ReactionStep(IP3R mediated Ca release Cell1)"},"_":"Positive regulation of cytosolic calcium ion concentration"},{"$":{"name":"Species(Ca_cell1)"},"_":"Michaelis-Menten selfactivation of Ca in the cell."},{"$":{"name":"ReactionStep(IP3R Inactive to Shut transtition cell1)"},"_":"inhibition of IP3 receptor activity"},{"$":{"name":"SpeciesContext(IP3R_cell1)"},"_":"IP3 receptor in the surface of ER localize in cell1"},{"$":{"name":"ReactionStep(IP3R independent Ca release Cell1)"},"_":"Release of sequestered calcium ion into cytosol"},{"$":{"name":"ReactionStep(IP3R Open_to_Inactivated_Cell1)"},"_":"negative regulation of IP3 receptor activity"},{"$":{"name":"ReactionStep(ATPase pump mediated Ca release Cell1)"},"_":"positive \n regulation of ATPase-coupled calcium transmembrane transporter activity"},{"$":{"name":"BioModel(CM_PM12779457_MB1::Cell_Ca_oscillation)"},"_":"This \n ModelBroick is based on the curated model which asumes that Ca2+ enters \n the cell either by mediation of IP3 receptor or as leaking, and Ca2+ \n solely leaves the cell by action of ATPase pumps. The \n ModelBrick represents the oscillatory behavior of Ca2+ concentration in \n an uncoupled cell.\n \n \n Bindschadler, \n M., & Sneyd, J. (2001). A bifurcation analysis of two coupled calcium \n oscillators. Chaos: An \n Interdisciplinary Journal Of Nonlinear Science, 11(1), \n 237."},{"$":{"name":"SpeciesContext(Ca_cell1)"},"_":"Ca2+ ion from cell_1"}],"url":{"$011MolecularType(IP3R_cell1)":{"$":{"name":"MolecularType(IP3R_cell1)"},"_":"urn:miriam:uniprot:Q14643","vcid":"MolecularType(IP3R_cell1)","qualifier":"(model) isDescribedBy","literalQualifier":"isDescribedBy"},"$011BioModel(CM_PM12779457_MB1::Cell_Ca_oscillation)":{"$":{"name":"BioModel(CM_PM12779457_MB1::Cell_Ca_oscillation)"},"_":"http://identifiers.org/go/GO:0019722","vcid":"BioModel(CM_PM12779457_MB1::Cell_Ca_oscillation)","qualifier":"(bio) hasPart","literalQualifier":"hasPart"},"$021BioModel(CM_PM12779457_MB1::Cell_Ca_oscillation)":{"$":{"name":"BioModel(CM_PM12779457_MB1::Cell_Ca_oscillation)"},"_":"http://identifiers.org/go/GO:0048016","vcid":"BioModel(CM_PM12779457_MB1::Cell_Ca_oscillation)","qualifier":"(bio) hasPart","literalQualifier":"hasPart"},"$012BioModel(CM_PM12779457_MB1::Cell_Ca_oscillation)":{"$":{"name":"BioModel(CM_PM12779457_MB1::Cell_Ca_oscillation)"},"_":"http://identifiers.org/taxonomy/10116","vcid":"BioModel(CM_PM12779457_MB1::Cell_Ca_oscillation)","qualifier":"(bio) hasTaxon","literalQualifier":"hasTaxon"},"$013BioModel(CM_PM12779457_MB1::Cell_Ca_oscillation)":{"$":{"name":"BioModel(CM_PM12779457_MB1::Cell_Ca_oscillation)"},"_":"http://identifiers.org/kegg.pathway/map04020","vcid":"BioModel(CM_PM12779457_MB1::Cell_Ca_oscillation)","qualifier":"(bio) is","literalQualifier":"is"},"$014BioModel(CM_PM12779457_MB1::Cell_Ca_oscillation)":{"$":{"name":"BioModel(CM_PM12779457_MB1::Cell_Ca_oscillation)"},"_":"http://identifiers.org/bto/BTO:0000028","vcid":"BioModel(CM_PM12779457_MB1::Cell_Ca_oscillation)","qualifier":"(bio) occursIn","literalQualifier":"occursIn"},"$015BioModel(CM_PM12779457_MB1::Cell_Ca_oscillation)":{"$":{"name":"BioModel(CM_PM12779457_MB1::Cell_Ca_oscillation)"},"_":"http://identifiers.org/biomodels.db/MODEL9107330008","vcid":"BioModel(CM_PM12779457_MB1::Cell_Ca_oscillation)","qualifier":"(model) is","literalQualifier":"is"},"$115BioModel(CM_PM12779457_MB1::Cell_Ca_oscillation)":{"$":{"name":"BioModel(CM_PM12779457_MB1::Cell_Ca_oscillation)"},"_":"http://identifiers.org/biomodels.db/BIOMD0000000058","vcid":"BioModel(CM_PM12779457_MB1::Cell_Ca_oscillation)","qualifier":"(model) is","literalQualifier":"is"},"$016BioModel(CM_PM12779457_MB1::Cell_Ca_oscillation)":{"$":{"name":"BioModel(CM_PM12779457_MB1::Cell_Ca_oscillation)"},"_":"http://identifiers.org/biomodels.db/MODEL9200487367","vcid":"BioModel(CM_PM12779457_MB1::Cell_Ca_oscillation)","qualifier":"(model) isDerivedFrom","literalQualifier":"isDerivedFrom"},"$017BioModel(CM_PM12779457_MB1::Cell_Ca_oscillation)":{"$":{"name":"BioModel(CM_PM12779457_MB1::Cell_Ca_oscillation)"},"_":"http://identifiers.org/pubmed/12779457","vcid":"BioModel(CM_PM12779457_MB1::Cell_Ca_oscillation)","qualifier":"(model) isDescribedBy","literalQualifier":"isDescribedBy"},"$011Structure(Cytosol)":{"$":{"name":"Structure(Cytosol)"},"_":"http://identifiers.org/go/GO:0005829","vcid":"Structure(Cytosol)","qualifier":"(bio) is","literalQualifier":"is"},"$011Species(Ca_cell1)":{"$":{"name":"Species(Ca_cell1)"},"_":"http://identifiers.org/chebi/CHEBI:29108","vcid":"Species(Ca_cell1)","qualifier":"(bio) is","literalQualifier":"is"},"$021Species(Ca_cell1)":{"$":{"name":"Species(Ca_cell1)"},"_":"http://identifiers.org/kegg.compound/C00076","vcid":"Species(Ca_cell1)","qualifier":"(bio) is","literalQualifier":"is"},"$011Species(IP3R_cell1)":{"$":{"name":"Species(IP3R_cell1)"},"_":"http://identifiers.org/interpro/IPR000493","vcid":"Species(IP3R_cell1)","qualifier":"(bio) isVersionOf","literalQualifier":"isVersionOf"},"$012Species(IP3R_cell1)":{"$":{"name":"Species(IP3R_cell1)"},"_":"urn:miriam:uniprot:Q14643","vcid":"Species(IP3R_cell1)","qualifier":"(model) isDescribedBy","literalQualifier":"isDescribedBy"},"$011ReactionStep(IP3R mediated Ca release Cell1)":{"$":{"name":"ReactionStep(IP3R mediated Ca release Cell1)"},"_":"http://identifiers.org/go/GO:0005220","vcid":"ReactionStep(IP3R mediated Ca release Cell1)","qualifier":"(bio) is","literalQualifier":"is"},"$012ReactionStep(IP3R mediated Ca release Cell1)":{"$":{"name":"ReactionStep(IP3R mediated Ca release Cell1)"},"_":"http://identifiers.org/go/GO:0007204","vcid":"ReactionStep(IP3R mediated Ca release Cell1)","qualifier":"(bio) isVersionOf","literalQualifier":"isVersionOf"},"$011ReactionStep(ATPase pump mediated Ca release Cell1)":{"$":{"name":"ReactionStep(ATPase pump mediated Ca release Cell1)"},"_":"http://identifiers.org/go/GO:0005388","vcid":"ReactionStep(ATPase pump mediated Ca release Cell1)","qualifier":"(bio) is","literalQualifier":"is"},"$012ReactionStep(ATPase pump mediated Ca release Cell1)":{"$":{"name":"ReactionStep(ATPase pump mediated Ca release Cell1)"},"_":"urn:miriam:reactome:R-HSA-427910","vcid":"ReactionStep(ATPase pump mediated Ca release Cell1)","qualifier":"(bio) isVersionOf","literalQualifier":"isVersionOf"},"$011ReactionStep(IP3R independent Ca release Cell1)":{"$":{"name":"ReactionStep(IP3R independent Ca release Cell1)"},"_":"http://identifiers.org/go/GO:0007204","vcid":"ReactionStep(IP3R independent Ca release Cell1)","qualifier":"(bio) isVersionOf","literalQualifier":"isVersionOf"},"$111ReactionStep(IP3R independent Ca release Cell1)":{"$":{"name":"ReactionStep(IP3R independent Ca release Cell1)"},"_":"http://identifiers.org/go/GO:0051209","vcid":"ReactionStep(IP3R independent Ca release Cell1)","qualifier":"(bio) isVersionOf","literalQualifier":"isVersionOf"},"$011ReactionStep(IP3R Inactive to Shut transtition cell1)":{"$":{"name":"ReactionStep(IP3R Inactive to Shut transtition cell1)"},"_":"http://identifiers.org/go/GO:0031586","vcid":"ReactionStep(IP3R Inactive to Shut transtition cell1)","qualifier":"(bio) isVersionOf","literalQualifier":"isVersionOf"},"$011ReactionStep(IP3R Open_to_Inactivated_Cell1)":{"$":{"name":"ReactionStep(IP3R Open_to_Inactivated_Cell1)"},"_":"http://identifiers.org/go/GO:0031586","vcid":"ReactionStep(IP3R Open_to_Inactivated_Cell1)","qualifier":"(bio) isVersionOf","literalQualifier":"isVersionOf"}},"qualifier":"","literalQualifier":""}} \ No newline at end of file +{"BioModel":{"$":{"name":"PLACEHOLDER"},"math":[],"text":[{"$":{"name":"ReactionStep(activation of Rab7 by GEF7)"},"_":"Activation of RAB7_GDP by its own activated counterpart Rab7_GTP.\n\n \n\n \n\n Authors state that parameter values were sampled from reasonable ranges."},{"$":{"name":"ReactionStep(activation of Rab7 by GEF5)"},"_":"activation of Rab7_GDP catalyzed by activated Rab5_GTP.\n\n \n\n \n\n Authors state that parameter values were sampled from reasonable ranges."},{"$":{"name":"MolecularType(RAB5)"},"_":"Active Rab5 orchestrates the recruitment of a multi-effector protein \n machinery that performs various functions in endosome membrane tethering \n and fusion as well as microtubule- and actin-dependent motility"},{"$":{"name":"ReactionStep(Recruitment of Rab7_GDP)"},"_":"Rab7 is recruited for the proccess. \n\n \n\n \n\n Authors state that parameter values were sampled from reasonable ranges."},{"$":{"name":"Species(Rab7_GTP)"},"_":"GTP-bound Rab7 (active)"},{"$":{"name":"ReactionStep(Hydrolysis of Rab7_GTP)"},"_":"Hydrolysis of GTP to GDP on Rab7. \n\n\n\n \n\n Authors state that parameter values were sampled from reasonable ranges."},{"$":{"name":"BioModel(CM_PM18628746_MB2::Rab7_switch)"},"_":"This \n ModelBrick from the publication \"Membrane identity and GTPase cascades \n regulated by toggle and cut-out switches\" describes Rab activation and \n hydrolysis. According to this model, Rab5 activates Rab7 until Rab7 \n reaches a threshold upon which it inactivates Rab5 through a negative \n feedback loop."},{"$":{"name":"SimulationContext(Deterministic)"},"_":""},{"$":{"name":"MolecularType(GDP)"},"_":"GDP-bound Rab indicates the active form"},{"$":{"name":"Species(Rab5_GTP)"},"_":"Active Rab5 orchestrates the recruitment of a multi-effector protein \n machinery that performs various functions in endosome membrane tethering \n and fusion as well as microtubule- and actin-dependent motility"},{"$":{"name":"SpeciesContext(Rab7_GDP)"},"_":""},{"$":{"name":"MolecularType(GTP)"},"_":"GTP-bound Rab indicates the active form"},{"$":{"name":"ReactionStep(Extraction of Rab7_GDP)"},"_":"Degradation of Rab7_GDP. \n\n\n\n \n\n Authors state that parameter values were sampled from reasonable ranges."},{"$":{"name":"Species(Rab7_GDP)"},"_":"GDP-bound Rab7 (inactive)"}],"url":{"$011MolecularType(RAB5)":{"$":{"name":"MolecularType(RAB5)"},"_":"urn:miriam:uniprot:P20339","vcid":"MolecularType(RAB5)","qualifier":"(bio) is","literalQualifier":"is"},"$011MolecularType(Rab7)":{"$":{"name":"MolecularType(Rab7)"},"_":"urn:miriam:uniprot:P51149","vcid":"MolecularType(Rab7)","qualifier":"(bio) is","literalQualifier":"is"},"$011MolecularType(GTP)":{"$":{"name":"MolecularType(GTP)"},"_":"urn:miriam:chebi:CHEBI%3A15996","vcid":"MolecularType(GTP)","qualifier":"(bio) is","literalQualifier":"is"},"$011MolecularType(GDP)":{"$":{"name":"MolecularType(GDP)"},"_":"urn:miriam:chebi:CHEBI%3A17552","vcid":"MolecularType(GDP)","qualifier":"(bio) is","literalQualifier":"is"},"$011BioModel(CM_PM18628746_MB2::Rab7_switch)":{"$":{"name":"BioModel(CM_PM18628746_MB2::Rab7_switch)"},"_":"http://identifiers.org/mamo/MAMO_0000046","vcid":"BioModel(CM_PM18628746_MB2::Rab7_switch)","qualifier":"(bio) hasProperty","literalQualifier":"hasProperty"},"$012BioModel(CM_PM18628746_MB2::Rab7_switch)":{"$":{"name":"BioModel(CM_PM18628746_MB2::Rab7_switch)"},"_":"http://identifiers.org/taxonomy/9606","vcid":"BioModel(CM_PM18628746_MB2::Rab7_switch)","qualifier":"(bio) hasTaxon","literalQualifier":"hasTaxon"},"$013BioModel(CM_PM18628746_MB2::Rab7_switch)":{"$":{"name":"BioModel(CM_PM18628746_MB2::Rab7_switch)"},"_":"urn:miriam:obo.go:GO%3A0043087","vcid":"BioModel(CM_PM18628746_MB2::Rab7_switch)","qualifier":"(bio) isVersionOf","literalQualifier":"isVersionOf"},"$014BioModel(CM_PM18628746_MB2::Rab7_switch)":{"$":{"name":"BioModel(CM_PM18628746_MB2::Rab7_switch)"},"_":"http://identifiers.org/biomodels.db/BIOMD0000000174","vcid":"BioModel(CM_PM18628746_MB2::Rab7_switch)","qualifier":"(model) is","literalQualifier":"is"},"$114BioModel(CM_PM18628746_MB2::Rab7_switch)":{"$":{"name":"BioModel(CM_PM18628746_MB2::Rab7_switch)"},"_":"http://identifiers.org/biomodels.db/MODEL5937037510","vcid":"BioModel(CM_PM18628746_MB2::Rab7_switch)","qualifier":"(model) is","literalQualifier":"is"},"$015BioModel(CM_PM18628746_MB2::Rab7_switch)":{"$":{"name":"BioModel(CM_PM18628746_MB2::Rab7_switch)"},"_":"http://identifiers.org/pubmed/10591225","vcid":"BioModel(CM_PM18628746_MB2::Rab7_switch)","qualifier":"(model) isDerivedFrom","literalQualifier":"isDerivedFrom"},"$025BioModel(CM_PM18628746_MB2::Rab7_switch)":{"$":{"name":"BioModel(CM_PM18628746_MB2::Rab7_switch)"},"_":"http://identifiers.org/pubmed/16890441","vcid":"BioModel(CM_PM18628746_MB2::Rab7_switch)","qualifier":"(model) isDerivedFrom","literalQualifier":"isDerivedFrom"},"$016BioModel(CM_PM18628746_MB2::Rab7_switch)":{"$":{"name":"BioModel(CM_PM18628746_MB2::Rab7_switch)"},"_":"urn:miriam:doi:10.1038%2Fmsb.2008.45+","vcid":"BioModel(CM_PM18628746_MB2::Rab7_switch)","qualifier":"(model) isDescribedBy","literalQualifier":"isDescribedBy"},"$116BioModel(CM_PM18628746_MB2::Rab7_switch)":{"$":{"name":"BioModel(CM_PM18628746_MB2::Rab7_switch)"},"_":"http://identifiers.org/pubmed/18628746","vcid":"BioModel(CM_PM18628746_MB2::Rab7_switch)","qualifier":"(model) isDescribedBy","literalQualifier":"isDescribedBy"},"$011Structure(endosome)":{"$":{"name":"Structure(endosome)"},"_":"http://identifiers.org/go/GO:0010008","vcid":"Structure(endosome)","qualifier":"(bio) is","literalQualifier":"is"},"$011Species(Rab5_GTP)":{"$":{"name":"Species(Rab5_GTP)"},"_":"urn:miriam:chebi:CHEBI%3A15996","vcid":"Species(Rab5_GTP)","qualifier":"(bio) hasPart","literalQualifier":"hasPart"},"$111Species(Rab5_GTP)":{"$":{"name":"Species(Rab5_GTP)"},"_":"urn:miriam:uniprot:P20339","vcid":"Species(Rab5_GTP)","qualifier":"(bio) hasPart","literalQualifier":"hasPart"},"$012Species(Rab5_GTP)":{"$":{"name":"Species(Rab5_GTP)"},"_":"http://identifiers.org/go/GO:0031225","vcid":"Species(Rab5_GTP)","qualifier":"(bio) is","literalQualifier":"is"},"$011Species(Rab7_GDP)":{"$":{"name":"Species(Rab7_GDP)"},"_":"urn:miriam:uniprot:P51149","vcid":"Species(Rab7_GDP)","qualifier":"(bio) hasPart","literalQualifier":"hasPart"},"$012Species(Rab7_GDP)":{"$":{"name":"Species(Rab7_GDP)"},"_":"http://identifiers.org/go/GO:0031225","vcid":"Species(Rab7_GDP)","qualifier":"(bio) is","literalQualifier":"is"},"$013Species(Rab7_GDP)":{"$":{"name":"Species(Rab7_GDP)"},"_":"urn:miriam:chebi:CHEBI%3A17552","vcid":"Species(Rab7_GDP)","qualifier":"(bio) isVersionOf","literalQualifier":"isVersionOf"},"$011Species(Rab7_GTP)":{"$":{"name":"Species(Rab7_GTP)"},"_":"urn:miriam:uniprot:P51149","vcid":"Species(Rab7_GTP)","qualifier":"(bio) hasPart","literalQualifier":"hasPart"},"$111Species(Rab7_GTP)":{"$":{"name":"Species(Rab7_GTP)"},"_":"urn:miriam:chebi:CHEBI%3A15996","vcid":"Species(Rab7_GTP)","qualifier":"(bio) hasPart","literalQualifier":"hasPart"},"$012Species(Rab7_GTP)":{"$":{"name":"Species(Rab7_GTP)"},"_":"http://identifiers.org/go/GO:0031225","vcid":"Species(Rab7_GTP)","qualifier":"(bio) is","literalQualifier":"is"},"$011ReactionStep(Recruitment of Rab7_GDP)":{"$":{"name":"ReactionStep(Recruitment of Rab7_GDP)"},"_":"http://identifiers.org/go/GO:0045184","vcid":"ReactionStep(Recruitment of Rab7_GDP)","qualifier":"(bio) isVersionOf","literalQualifier":"isVersionOf"},"$011ReactionStep(activation of Rab7 by GEF7)":{"$":{"name":"ReactionStep(activation of Rab7 by GEF7)"},"_":"urn:miriam:reactome:R-HSA-8877451.2","vcid":"ReactionStep(activation of Rab7 by GEF7)","qualifier":"(bio) isPartOf","literalQualifier":"isPartOf"},"$012ReactionStep(activation of Rab7 by GEF7)":{"$":{"name":"ReactionStep(activation of Rab7 by GEF7)"},"_":"http://identifiers.org/go/GO:0017112","vcid":"ReactionStep(activation of Rab7 by GEF7)","qualifier":"(bio) isVersionOf","literalQualifier":"isVersionOf"},"$022ReactionStep(activation of Rab7 by GEF7)":{"$":{"name":"ReactionStep(activation of Rab7 by GEF7)"},"_":"http://identifiers.org/go/GO:0032858","vcid":"ReactionStep(activation of Rab7 by GEF7)","qualifier":"(bio) isVersionOf","literalQualifier":"isVersionOf"},"$011ReactionStep(activation of Rab7 by GEF5)":{"$":{"name":"ReactionStep(activation of Rab7 by GEF5)"},"_":"urn:miriam:reactome:R-HSA-8877451.2","vcid":"ReactionStep(activation of Rab7 by GEF5)","qualifier":"(bio) isPartOf","literalQualifier":"isPartOf"},"$012ReactionStep(activation of Rab7 by GEF5)":{"$":{"name":"ReactionStep(activation of Rab7 by GEF5)"},"_":"http://identifiers.org/go/GO:0032858","vcid":"ReactionStep(activation of Rab7 by GEF5)","qualifier":"(bio) isVersionOf","literalQualifier":"isVersionOf"},"$022ReactionStep(activation of Rab7 by GEF5)":{"$":{"name":"ReactionStep(activation of Rab7 by GEF5)"},"_":"http://identifiers.org/go/GO:0017112","vcid":"ReactionStep(activation of Rab7 by GEF5)","qualifier":"(bio) isVersionOf","literalQualifier":"isVersionOf"},"$011ReactionStep(Hydrolysis of Rab7_GTP)":{"$":{"name":"ReactionStep(Hydrolysis of Rab7_GTP)"},"_":"http://identifiers.org/go/GO:0003924","vcid":"ReactionStep(Hydrolysis of Rab7_GTP)","qualifier":"(bio) isVersionOf","literalQualifier":"isVersionOf"}},"qualifier":"","literalQualifier":""}} \ No newline at end of file