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
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
30 changes: 30 additions & 0 deletions .github/workflows/validate.yml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
name: Validate RuleHub Metadata

on:
pull_request:
push:
branches:
- master
- main

jobs:
validate:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Validate metadata
run: node scripts/validate-metadata.js

- name: Regenerate manifest
run: node scripts/generate-manifest.js --root . --output manifest.generated.json

- name: Check manifest is up to date
run: diff -u manifest.json manifest.generated.json
9 changes: 6 additions & 3 deletions AddingModels.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -4,9 +4,12 @@
2. Name is determined by either first author or the contributor, followed by the year of publication or contribution. If there is already a model in either section with that name, add another descriptive keyword (must start with a letter not a number) to the name, e.g., Blinov2006EGFR.
3. Make a directory with the name of the model in the corresponding section.
4. Put all model files and (optionally) associated scripts in this directory.
5. Create a README.md file in the directory based on the template provided in the corresponding model section (Published or Contributed).
6. If there are multiple model files/scripts, provide a table in the README.md file that gives a brief description of each.
7. (optional) Provide additional annotation in each model file based on the annotation keywords provided in ...
5. Create a metadata.yaml file in the directory following the field names documented in metadata-schema.yaml.
6. Create a README.md file in the directory based on the template provided in the corresponding model section (Published or Contributed).
7. If there are multiple model files/scripts, provide a table in the README.md file that gives a brief description of each.
8. If there are multiple BNGL model files in a single directory, include a collection section in metadata.yaml describing the variant type and count.
9. Run node scripts/validate-metadata.js and node scripts/generate-manifest.js --root . --output manifest.json before opening a pull request.
10. (optional) Provide additional annotation in each model file based on the annotation keywords provided in ...

## Guidelines for journal articles linking to RuleHub

Expand Down
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
# akt signaling

Signaling rates

## Provenance

This BNGL example was generated in BNG Playground and curated by Achyudhan.
No external literature citation is associated with this model unless one is added manually.

## Compatibility

- BNG2 compatible: yes
- Simulation methods: ode
- Imported from: ai-generated

## Files

- akt-signaling.bngl

## Tags

akt, signaling, growthfactor, rtk, pi3k, mtorc2, mtorc1, s6k
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
begin model
begin parameters
# Signaling rates
k_bind 1e-3 # RTK-GF binding
k_unbind 1e-4 # GF dissociation
k_rtk_act 0.5 # Autophosphorylation
k_pi3k 0.2 # PI3K recruitment/activation
k_akt_t308 0.5 # PDK1-mediated T308 phos
k_akt_s473 0.3 # mTORC2-mediated S473 phos
k_mtorc1 0.4 # Akt-mediated mTORC1 activation
k_s6k_act 0.2 # mTORC1-mediated S6K phos

# Negative feedback / resetting
k_reset 0.1 # General phosphatase/deactivation
k_fb 0.05 # S6K-mediated inhibition of RTK signaling

# Total concentrations
GF_tot 100
RTK_tot 50
PI3K_tot 40
AKT_tot 100
mTORC2_tot 20
mTORC1_tot 50
S6K_tot 30
end parameters

begin molecule types
GrowthFactor(r)
RTK(l,state~U~P,fb_site~open~closed)
PI3K(state~off~on)
# Akt has two critical phosphorylation sites
AKT(t308~U~P,s473~U~P)
mTORC2(state~on)
mTORC1(state~off~on)
S6K(state~U~P)
end molecule types

begin seed species
GrowthFactor(r) GF_tot
RTK(l,state~U,fb_site~open) RTK_tot
PI3K(state~off) PI3K_tot
AKT(t308~U,s473~U) AKT_tot
mTORC2(state~on) mTORC2_tot
mTORC1(state~off) mTORC1_tot
S6K(state~U) S6K_tot
end seed species

begin observables
# KEY BIOLOGICAL OUTPUTS
Molecules Active_RTK RTK(state~P) # Receptor tyrosine kinase activation
Molecules Active_PI3K PI3K(state~on) # PI3K recruitment to membrane
Molecules pAkt_T308 AKT(t308~P) # PDK1-mediated phosphorylation
Molecules pAkt_S473 AKT(s473~P) # mTORC2-mediated phosphorylation
Molecules Double_pAkt AKT(t308~P,s473~P) # Fully active Akt
Molecules Active_mTORC1 mTORC1(state~on) # Downstream growth effector
end observables

begin reaction rules
## RECEPTOR ACTIVATION & FEEDBACK
# Growth factor binds to open RTK
GrowthFactor(r) + RTK(l,fb_site~open) <-> GrowthFactor(r!1).RTK(l!1,fb_site~open) k_bind,k_unbind

# Ligand-bound RTK becomes active
GrowthFactor(r!1).RTK(l!1,state~U) -> GrowthFactor(r!1).RTK(l!1,state~P) k_rtk_act

## PI3K / AKT PATHWAY
# Active RTK recruits and activates PI3K
RTK(state~P) + PI3K(state~off) -> RTK(state~P) + PI3K(state~on) k_pi3k

# Active PI3K facilitates Akt phosphorylation at T308 (PDK1 proxy)
PI3K(state~on) + AKT(t308~U) -> PI3K(state~on) + AKT(t308~P) k_akt_t308

# Constitutive mTORC2 phosphorylates Akt at S473
mTORC2() + AKT(s473~U) -> mTORC2() + AKT(s473~P) k_akt_s473

## MTOR SIGNALING & FEEDBACK
# Double-phosphorylated Akt activates mTORC1
AKT(t308~P,s473~P) + mTORC1(state~off) -> AKT(t308~P,s473~P) + mTORC1(state~on) k_mtorc1

# mTORC1 activates S6K,which mediates feedback
mTORC1(state~on) + S6K(state~U) -> mTORC1(state~on) + S6K(state~P) k_s6k_act

# Negative feedback: pS6K inhibits RTK ligand binding by "closing" the feedback site
S6K(state~P) + RTK(fb_site~open) -> S6K(state~P) + RTK(fb_site~closed) k_fb

## RESETTING MECHANISMS
RTK(state~P) -> RTK(state~U) k_reset
PI3K(state~on) -> PI3K(state~off) k_reset
AKT(t308~P) -> AKT(t308~U) k_reset
AKT(s473~P) -> AKT(s473~U) k_reset
mTORC1(state~on) -> mTORC1(state~off) k_reset
S6K(state~P) -> S6K(state~U) k_reset
RTK(fb_site~closed) -> RTK(fb_site~open) k_reset
end reaction rules

begin actions
generate_network({overwrite=>1})
simulate({method=>"ode",t_start=>0,t_end=>500,n_steps=>250})
end actions
end model
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
id: "akt-signaling"
name: "akt signaling"
description: "Signaling rates"
contributors:
- name: "Achyudhan"
tags: ["akt", "signaling", "growthfactor", "rtk", "pi3k", "mtorc2", "mtorc1", "s6k"]
category: "signaling"
compatibility:
bng2_compatible: true
simulation_methods: ["ode"]
uses_compartments: false
uses_energy: false
uses_functions: false
nfsim_compatible: false
source:
origin: "ai-generated"
original_format: "bngl"
original_repository: "bionetgen-web-simulator"
source_path: "example-models/akt-signaling.bngl"
playground:
visible: false
gallery_category: "signaling"
featured: false
difficulty: "advanced"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
# allosteric activation

Binding constants

## Provenance

This BNGL example was generated in BNG Playground and curated by Achyudhan.
No external literature citation is associated with this model unless one is added manually.

## Compatibility

- BNG2 compatible: yes
- Simulation methods: ode
- Imported from: ai-generated

## Files

- allosteric-activation.bngl

## Tags

allosteric, activation, enzyme, substrate, activator, product
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
begin model
begin parameters
# Binding constants
k_on_S 2e-3 # Substrate binding to enzyme
k_off_S 5e-4 # Substrate dissociation
k_on_A 1.5e-3 # Activator binding (cooperative step 1)
k_off_A 3e-4 # Activator dissociation

# Catalytic rates
k_cat_basal 0.02 # Catalysis by inactive/partially-active enzyme
k_cat_full 0.25 # Catalysis by fully activated enzyme

# Feedback
k_inh 0.01 # Product-mediated feedback inhibition
end parameters

begin molecule types
# Enzyme has a substrate site (s),two activator sites (a1,a2),and can be inhibited (i)
Enzyme(s,a1,a2,i~off~on)
Substrate(b)
Activator(b)
Product()
end molecule types

begin seed species
Enzyme(s,a1,a2,i~off) 50
Substrate(b) 500
Activator(b) 200
Product() 0
end seed species

begin observables
# KEY BIOLOGICAL OUTPUTS
Molecules Free_Enzyme Enzyme(a1,a2,s,i~off) # Available enzyme
Molecules Single_Bound Enzyme(a1!1,a2).Activator(b!1) # Partially activated
Molecules Double_Bound Enzyme(a1!1,a2!2).Activator(b!1).Activator(b!2) # Fully activated
Molecules Product_Count Product() # Cumulative product
Molecules Inhibited_Enz Enzyme(i~on) # Enzyme sequestered by feedback
end observables

begin reaction rules
## ALLOSTERIC COOPERATIVITY
# First activator binding
Enzyme(a1,i~off) + Activator(b) <-> Enzyme(a1!1,i~off).Activator(b!1) k_on_A,k_off_A

# Second activator binding (cooperative recruitment)
Enzyme(a1!+,a2,i~off) + Activator(b) <-> Enzyme(a1!+,a2!1,i~off).Activator(b!1) k_on_A*2,k_off_A/2

## SUBSTRATE PROCESSING
# Substrate binds to enzyme (any state,but faster if active)
Enzyme(s,i~off) + Substrate(b) <-> Enzyme(s!1,i~off).Substrate(b!1) k_on_S,k_off_S

# Basal catalysis (inactive or partially active)
Enzyme(s!1,a2,i~off).Substrate(b!1) -> Enzyme(s,a2,i~off) + Product() k_cat_basal

# Enhanced catalysis (both allosteric sites bound)
Enzyme(s!1,a1!+,a2!+,i~off).Substrate(b!1) -> Enzyme(s,a1!+,a2!+,i~off) + Product() k_cat_full

## FEEDBACK REGULATION
# Product mediates negative feedback inhibition (e.g.,metabolic control)
Product() + Enzyme(i~off) -> Enzyme(i~on) k_inh
Enzyme(i~on) -> Enzyme(i~off) k_off_S
end reaction rules

begin actions
generate_network({overwrite=>1})
simulate({method=>"ode",t_end=>5000,n_steps=>300})
end actions
end model
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
id: "allosteric-activation"
name: "allosteric activation"
description: "Binding constants"
contributors:
- name: "Achyudhan"
tags: ["allosteric", "activation", "enzyme", "substrate", "activator", "product"]
category: "signaling"
compatibility:
bng2_compatible: true
simulation_methods: ["ode"]
uses_compartments: false
uses_energy: false
uses_functions: false
nfsim_compatible: false
source:
origin: "ai-generated"
original_format: "bngl"
original_repository: "bionetgen-web-simulator"
source_path: "example-models/allosteric-activation.bngl"
playground:
visible: false
gallery_category: "signaling"
featured: false
difficulty: "advanced"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
# ampk signaling

AMPK signaling: The cellular energy sensor.

## Provenance

This BNGL example was generated in BNG Playground and curated by Achyudhan.
No external literature citation is associated with this model unless one is added manually.

## Compatibility

- BNG2 compatible: yes
- Simulation methods: ode
- Imported from: ai-generated

## Files

- ampk-signaling.bngl

## Tags

ampk, signaling, amp, lkb1, ca, sik, crtc
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
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
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
30 changes: 30 additions & 0 deletions .github/workflows/validate.yml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
name: Validate RuleHub Metadata

on:
pull_request:
push:
branches:
- master
- main

jobs:
validate:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Validate metadata
run: node scripts/validate-metadata.js

- name: Regenerate manifest
run: node scripts/generate-manifest.js --root . --output manifest.generated.json

- name: Check manifest is up to date
run: diff -u manifest.json manifest.generated.json
9 changes: 6 additions & 3 deletions AddingModels.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -4,9 +4,12 @@
2. Name is determined by either first author or the contributor, followed by the year of publication or contribution. If there is already a model in either section with that name, add another descriptive keyword (must start with a letter not a number) to the name, e.g., Blinov2006EGFR.
3. Make a directory with the name of the model in the corresponding section.
4. Put all model files and (optionally) associated scripts in this directory.
5. Create a README.md file in the directory based on the template provided in the corresponding model section (Published or Contributed).
6. If there are multiple model files/scripts, provide a table in the README.md file that gives a brief description of each.
7. (optional) Provide additional annotation in each model file based on the annotation keywords provided in ...
5. Create a metadata.yaml file in the directory following the field names documented in metadata-schema.yaml.
6. Create a README.md file in the directory based on the template provided in the corresponding model section (Published or Contributed).
7. If there are multiple model files/scripts, provide a table in the README.md file that gives a brief description of each.
8. If there are multiple BNGL model files in a single directory, include a collection section in metadata.yaml describing the variant type and count.
9. Run node scripts/validate-metadata.js and node scripts/generate-manifest.js --root . --output manifest.json before opening a pull request.
10. (optional) Provide additional annotation in each model file based on the annotation keywords provided in ...

## Guidelines for journal articles linking to RuleHub

Expand Down
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
# akt signaling

Signaling rates

## Provenance

This BNGL example was generated in BNG Playground and curated by Achyudhan.
No external literature citation is associated with this model unless one is added manually.

## Compatibility

- BNG2 compatible: yes
- Simulation methods: ode
- Imported from: ai-generated

## Files

- akt-signaling.bngl

## Tags

akt, signaling, growthfactor, rtk, pi3k, mtorc2, mtorc1, s6k
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
begin model
begin parameters
# Signaling rates
k_bind 1e-3 # RTK-GF binding
k_unbind 1e-4 # GF dissociation
k_rtk_act 0.5 # Autophosphorylation
k_pi3k 0.2 # PI3K recruitment/activation
k_akt_t308 0.5 # PDK1-mediated T308 phos
k_akt_s473 0.3 # mTORC2-mediated S473 phos
k_mtorc1 0.4 # Akt-mediated mTORC1 activation
k_s6k_act 0.2 # mTORC1-mediated S6K phos

# Negative feedback / resetting
k_reset 0.1 # General phosphatase/deactivation
k_fb 0.05 # S6K-mediated inhibition of RTK signaling

# Total concentrations
GF_tot 100
RTK_tot 50
PI3K_tot 40
AKT_tot 100
mTORC2_tot 20
mTORC1_tot 50
S6K_tot 30
end parameters

begin molecule types
GrowthFactor(r)
RTK(l,state~U~P,fb_site~open~closed)
PI3K(state~off~on)
# Akt has two critical phosphorylation sites
AKT(t308~U~P,s473~U~P)
mTORC2(state~on)
mTORC1(state~off~on)
S6K(state~U~P)
end molecule types

begin seed species
GrowthFactor(r) GF_tot
RTK(l,state~U,fb_site~open) RTK_tot
PI3K(state~off) PI3K_tot
AKT(t308~U,s473~U) AKT_tot
mTORC2(state~on) mTORC2_tot
mTORC1(state~off) mTORC1_tot
S6K(state~U) S6K_tot
end seed species

begin observables
# KEY BIOLOGICAL OUTPUTS
Molecules Active_RTK RTK(state~P) # Receptor tyrosine kinase activation
Molecules Active_PI3K PI3K(state~on) # PI3K recruitment to membrane
Molecules pAkt_T308 AKT(t308~P) # PDK1-mediated phosphorylation
Molecules pAkt_S473 AKT(s473~P) # mTORC2-mediated phosphorylation
Molecules Double_pAkt AKT(t308~P,s473~P) # Fully active Akt
Molecules Active_mTORC1 mTORC1(state~on) # Downstream growth effector
end observables

begin reaction rules
## RECEPTOR ACTIVATION & FEEDBACK
# Growth factor binds to open RTK
GrowthFactor(r) + RTK(l,fb_site~open) <-> GrowthFactor(r!1).RTK(l!1,fb_site~open) k_bind,k_unbind

# Ligand-bound RTK becomes active
GrowthFactor(r!1).RTK(l!1,state~U) -> GrowthFactor(r!1).RTK(l!1,state~P) k_rtk_act

## PI3K / AKT PATHWAY
# Active RTK recruits and activates PI3K
RTK(state~P) + PI3K(state~off) -> RTK(state~P) + PI3K(state~on) k_pi3k

# Active PI3K facilitates Akt phosphorylation at T308 (PDK1 proxy)
PI3K(state~on) + AKT(t308~U) -> PI3K(state~on) + AKT(t308~P) k_akt_t308

# Constitutive mTORC2 phosphorylates Akt at S473
mTORC2() + AKT(s473~U) -> mTORC2() + AKT(s473~P) k_akt_s473

## MTOR SIGNALING & FEEDBACK
# Double-phosphorylated Akt activates mTORC1
AKT(t308~P,s473~P) + mTORC1(state~off) -> AKT(t308~P,s473~P) + mTORC1(state~on) k_mtorc1

# mTORC1 activates S6K,which mediates feedback
mTORC1(state~on) + S6K(state~U) -> mTORC1(state~on) + S6K(state~P) k_s6k_act

# Negative feedback: pS6K inhibits RTK ligand binding by "closing" the feedback site
S6K(state~P) + RTK(fb_site~open) -> S6K(state~P) + RTK(fb_site~closed) k_fb

## RESETTING MECHANISMS
RTK(state~P) -> RTK(state~U) k_reset
PI3K(state~on) -> PI3K(state~off) k_reset
AKT(t308~P) -> AKT(t308~U) k_reset
AKT(s473~P) -> AKT(s473~U) k_reset
mTORC1(state~on) -> mTORC1(state~off) k_reset
S6K(state~P) -> S6K(state~U) k_reset
RTK(fb_site~closed) -> RTK(fb_site~open) k_reset
end reaction rules

begin actions
generate_network({overwrite=>1})
simulate({method=>"ode",t_start=>0,t_end=>500,n_steps=>250})
end actions
end model
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
id: "akt-signaling"
name: "akt signaling"
description: "Signaling rates"
contributors:
- name: "Achyudhan"
tags: ["akt", "signaling", "growthfactor", "rtk", "pi3k", "mtorc2", "mtorc1", "s6k"]
category: "signaling"
compatibility:
bng2_compatible: true
simulation_methods: ["ode"]
uses_compartments: false
uses_energy: false
uses_functions: false
nfsim_compatible: false
source:
origin: "ai-generated"
original_format: "bngl"
original_repository: "bionetgen-web-simulator"
source_path: "example-models/akt-signaling.bngl"
playground:
visible: false
gallery_category: "signaling"
featured: false
difficulty: "advanced"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
# allosteric activation

Binding constants

## Provenance

This BNGL example was generated in BNG Playground and curated by Achyudhan.
No external literature citation is associated with this model unless one is added manually.

## Compatibility

- BNG2 compatible: yes
- Simulation methods: ode
- Imported from: ai-generated

## Files

- allosteric-activation.bngl

## Tags

allosteric, activation, enzyme, substrate, activator, product
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
begin model
begin parameters
# Binding constants
k_on_S 2e-3 # Substrate binding to enzyme
k_off_S 5e-4 # Substrate dissociation
k_on_A 1.5e-3 # Activator binding (cooperative step 1)
k_off_A 3e-4 # Activator dissociation

# Catalytic rates
k_cat_basal 0.02 # Catalysis by inactive/partially-active enzyme
k_cat_full 0.25 # Catalysis by fully activated enzyme

# Feedback
k_inh 0.01 # Product-mediated feedback inhibition
end parameters

begin molecule types
# Enzyme has a substrate site (s),two activator sites (a1,a2),and can be inhibited (i)
Enzyme(s,a1,a2,i~off~on)
Substrate(b)
Activator(b)
Product()
end molecule types

begin seed species
Enzyme(s,a1,a2,i~off) 50
Substrate(b) 500
Activator(b) 200
Product() 0
end seed species

begin observables
# KEY BIOLOGICAL OUTPUTS
Molecules Free_Enzyme Enzyme(a1,a2,s,i~off) # Available enzyme
Molecules Single_Bound Enzyme(a1!1,a2).Activator(b!1) # Partially activated
Molecules Double_Bound Enzyme(a1!1,a2!2).Activator(b!1).Activator(b!2) # Fully activated
Molecules Product_Count Product() # Cumulative product
Molecules Inhibited_Enz Enzyme(i~on) # Enzyme sequestered by feedback
end observables

begin reaction rules
## ALLOSTERIC COOPERATIVITY
# First activator binding
Enzyme(a1,i~off) + Activator(b) <-> Enzyme(a1!1,i~off).Activator(b!1) k_on_A,k_off_A

# Second activator binding (cooperative recruitment)
Enzyme(a1!+,a2,i~off) + Activator(b) <-> Enzyme(a1!+,a2!1,i~off).Activator(b!1) k_on_A*2,k_off_A/2

## SUBSTRATE PROCESSING
# Substrate binds to enzyme (any state,but faster if active)
Enzyme(s,i~off) + Substrate(b) <-> Enzyme(s!1,i~off).Substrate(b!1) k_on_S,k_off_S

# Basal catalysis (inactive or partially active)
Enzyme(s!1,a2,i~off).Substrate(b!1) -> Enzyme(s,a2,i~off) + Product() k_cat_basal

# Enhanced catalysis (both allosteric sites bound)
Enzyme(s!1,a1!+,a2!+,i~off).Substrate(b!1) -> Enzyme(s,a1!+,a2!+,i~off) + Product() k_cat_full

## FEEDBACK REGULATION
# Product mediates negative feedback inhibition (e.g.,metabolic control)
Product() + Enzyme(i~off) -> Enzyme(i~on) k_inh
Enzyme(i~on) -> Enzyme(i~off) k_off_S
end reaction rules

begin actions
generate_network({overwrite=>1})
simulate({method=>"ode",t_end=>5000,n_steps=>300})
end actions
end model
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
id: "allosteric-activation"
name: "allosteric activation"
description: "Binding constants"
contributors:
- name: "Achyudhan"
tags: ["allosteric", "activation", "enzyme", "substrate", "activator", "product"]
category: "signaling"
compatibility:
bng2_compatible: true
simulation_methods: ["ode"]
uses_compartments: false
uses_energy: false
uses_functions: false
nfsim_compatible: false
source:
origin: "ai-generated"
original_format: "bngl"
original_repository: "bionetgen-web-simulator"
source_path: "example-models/allosteric-activation.bngl"
playground:
visible: false
gallery_category: "signaling"
featured: false
difficulty: "advanced"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
# ampk signaling

AMPK signaling: The cellular energy sensor.

## Provenance

This BNGL example was generated in BNG Playground and curated by Achyudhan.
No external literature citation is associated with this model unless one is added manually.

## Compatibility

- BNG2 compatible: yes
- Simulation methods: ode
- Imported from: ai-generated

## Files

- ampk-signaling.bngl

## Tags

ampk, signaling, amp, lkb1, ca, sik, crtc
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
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
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
30 changes: 30 additions & 0 deletions .github/workflows/validate.yml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
name: Validate RuleHub Metadata

on:
pull_request:
push:
branches:
- master
- main

jobs:
validate:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Validate metadata
run: node scripts/validate-metadata.js

- name: Regenerate manifest
run: node scripts/generate-manifest.js --root . --output manifest.generated.json

- name: Check manifest is up to date
run: diff -u manifest.json manifest.generated.json
9 changes: 6 additions & 3 deletions AddingModels.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -4,9 +4,12 @@
2. Name is determined by either first author or the contributor, followed by the year of publication or contribution. If there is already a model in either section with that name, add another descriptive keyword (must start with a letter not a number) to the name, e.g., Blinov2006EGFR.
3. Make a directory with the name of the model in the corresponding section.
4. Put all model files and (optionally) associated scripts in this directory.
5. Create a README.md file in the directory based on the template provided in the corresponding model section (Published or Contributed).
6. If there are multiple model files/scripts, provide a table in the README.md file that gives a brief description of each.
7. (optional) Provide additional annotation in each model file based on the annotation keywords provided in ...
5. Create a metadata.yaml file in the directory following the field names documented in metadata-schema.yaml.
6. Create a README.md file in the directory based on the template provided in the corresponding model section (Published or Contributed).
7. If there are multiple model files/scripts, provide a table in the README.md file that gives a brief description of each.
8. If there are multiple BNGL model files in a single directory, include a collection section in metadata.yaml describing the variant type and count.
9. Run node scripts/validate-metadata.js and node scripts/generate-manifest.js --root . --output manifest.json before opening a pull request.
10. (optional) Provide additional annotation in each model file based on the annotation keywords provided in ...

## Guidelines for journal articles linking to RuleHub

Expand Down
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
# akt signaling

Signaling rates

## Provenance

This BNGL example was generated in BNG Playground and curated by Achyudhan.
No external literature citation is associated with this model unless one is added manually.

## Compatibility

- BNG2 compatible: yes
- Simulation methods: ode
- Imported from: ai-generated

## Files

- akt-signaling.bngl

## Tags

akt, signaling, growthfactor, rtk, pi3k, mtorc2, mtorc1, s6k
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
begin model
begin parameters
# Signaling rates
k_bind 1e-3 # RTK-GF binding
k_unbind 1e-4 # GF dissociation
k_rtk_act 0.5 # Autophosphorylation
k_pi3k 0.2 # PI3K recruitment/activation
k_akt_t308 0.5 # PDK1-mediated T308 phos
k_akt_s473 0.3 # mTORC2-mediated S473 phos
k_mtorc1 0.4 # Akt-mediated mTORC1 activation
k_s6k_act 0.2 # mTORC1-mediated S6K phos

# Negative feedback / resetting
k_reset 0.1 # General phosphatase/deactivation
k_fb 0.05 # S6K-mediated inhibition of RTK signaling

# Total concentrations
GF_tot 100
RTK_tot 50
PI3K_tot 40
AKT_tot 100
mTORC2_tot 20
mTORC1_tot 50
S6K_tot 30
end parameters

begin molecule types
GrowthFactor(r)
RTK(l,state~U~P,fb_site~open~closed)
PI3K(state~off~on)
# Akt has two critical phosphorylation sites
AKT(t308~U~P,s473~U~P)
mTORC2(state~on)
mTORC1(state~off~on)
S6K(state~U~P)
end molecule types

begin seed species
GrowthFactor(r) GF_tot
RTK(l,state~U,fb_site~open) RTK_tot
PI3K(state~off) PI3K_tot
AKT(t308~U,s473~U) AKT_tot
mTORC2(state~on) mTORC2_tot
mTORC1(state~off) mTORC1_tot
S6K(state~U) S6K_tot
end seed species

begin observables
# KEY BIOLOGICAL OUTPUTS
Molecules Active_RTK RTK(state~P) # Receptor tyrosine kinase activation
Molecules Active_PI3K PI3K(state~on) # PI3K recruitment to membrane
Molecules pAkt_T308 AKT(t308~P) # PDK1-mediated phosphorylation
Molecules pAkt_S473 AKT(s473~P) # mTORC2-mediated phosphorylation
Molecules Double_pAkt AKT(t308~P,s473~P) # Fully active Akt
Molecules Active_mTORC1 mTORC1(state~on) # Downstream growth effector
end observables

begin reaction rules
## RECEPTOR ACTIVATION & FEEDBACK
# Growth factor binds to open RTK
GrowthFactor(r) + RTK(l,fb_site~open) <-> GrowthFactor(r!1).RTK(l!1,fb_site~open) k_bind,k_unbind

# Ligand-bound RTK becomes active
GrowthFactor(r!1).RTK(l!1,state~U) -> GrowthFactor(r!1).RTK(l!1,state~P) k_rtk_act

## PI3K / AKT PATHWAY
# Active RTK recruits and activates PI3K
RTK(state~P) + PI3K(state~off) -> RTK(state~P) + PI3K(state~on) k_pi3k

# Active PI3K facilitates Akt phosphorylation at T308 (PDK1 proxy)
PI3K(state~on) + AKT(t308~U) -> PI3K(state~on) + AKT(t308~P) k_akt_t308

# Constitutive mTORC2 phosphorylates Akt at S473
mTORC2() + AKT(s473~U) -> mTORC2() + AKT(s473~P) k_akt_s473

## MTOR SIGNALING & FEEDBACK
# Double-phosphorylated Akt activates mTORC1
AKT(t308~P,s473~P) + mTORC1(state~off) -> AKT(t308~P,s473~P) + mTORC1(state~on) k_mtorc1

# mTORC1 activates S6K,which mediates feedback
mTORC1(state~on) + S6K(state~U) -> mTORC1(state~on) + S6K(state~P) k_s6k_act

# Negative feedback: pS6K inhibits RTK ligand binding by "closing" the feedback site
S6K(state~P) + RTK(fb_site~open) -> S6K(state~P) + RTK(fb_site~closed) k_fb

## RESETTING MECHANISMS
RTK(state~P) -> RTK(state~U) k_reset
PI3K(state~on) -> PI3K(state~off) k_reset
AKT(t308~P) -> AKT(t308~U) k_reset
AKT(s473~P) -> AKT(s473~U) k_reset
mTORC1(state~on) -> mTORC1(state~off) k_reset
S6K(state~P) -> S6K(state~U) k_reset
RTK(fb_site~closed) -> RTK(fb_site~open) k_reset
end reaction rules

begin actions
generate_network({overwrite=>1})
simulate({method=>"ode",t_start=>0,t_end=>500,n_steps=>250})
end actions
end model
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
id: "akt-signaling"
name: "akt signaling"
description: "Signaling rates"
contributors:
- name: "Achyudhan"
tags: ["akt", "signaling", "growthfactor", "rtk", "pi3k", "mtorc2", "mtorc1", "s6k"]
category: "signaling"
compatibility:
bng2_compatible: true
simulation_methods: ["ode"]
uses_compartments: false
uses_energy: false
uses_functions: false
nfsim_compatible: false
source:
origin: "ai-generated"
original_format: "bngl"
original_repository: "bionetgen-web-simulator"
source_path: "example-models/akt-signaling.bngl"
playground:
visible: false
gallery_category: "signaling"
featured: false
difficulty: "advanced"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
# allosteric activation

Binding constants

## Provenance

This BNGL example was generated in BNG Playground and curated by Achyudhan.
No external literature citation is associated with this model unless one is added manually.

## Compatibility

- BNG2 compatible: yes
- Simulation methods: ode
- Imported from: ai-generated

## Files

- allosteric-activation.bngl

## Tags

allosteric, activation, enzyme, substrate, activator, product
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
begin model
begin parameters
# Binding constants
k_on_S 2e-3 # Substrate binding to enzyme
k_off_S 5e-4 # Substrate dissociation
k_on_A 1.5e-3 # Activator binding (cooperative step 1)
k_off_A 3e-4 # Activator dissociation

# Catalytic rates
k_cat_basal 0.02 # Catalysis by inactive/partially-active enzyme
k_cat_full 0.25 # Catalysis by fully activated enzyme

# Feedback
k_inh 0.01 # Product-mediated feedback inhibition
end parameters

begin molecule types
# Enzyme has a substrate site (s),two activator sites (a1,a2),and can be inhibited (i)
Enzyme(s,a1,a2,i~off~on)
Substrate(b)
Activator(b)
Product()
end molecule types

begin seed species
Enzyme(s,a1,a2,i~off) 50
Substrate(b) 500
Activator(b) 200
Product() 0
end seed species

begin observables
# KEY BIOLOGICAL OUTPUTS
Molecules Free_Enzyme Enzyme(a1,a2,s,i~off) # Available enzyme
Molecules Single_Bound Enzyme(a1!1,a2).Activator(b!1) # Partially activated
Molecules Double_Bound Enzyme(a1!1,a2!2).Activator(b!1).Activator(b!2) # Fully activated
Molecules Product_Count Product() # Cumulative product
Molecules Inhibited_Enz Enzyme(i~on) # Enzyme sequestered by feedback
end observables

begin reaction rules
## ALLOSTERIC COOPERATIVITY
# First activator binding
Enzyme(a1,i~off) + Activator(b) <-> Enzyme(a1!1,i~off).Activator(b!1) k_on_A,k_off_A

# Second activator binding (cooperative recruitment)
Enzyme(a1!+,a2,i~off) + Activator(b) <-> Enzyme(a1!+,a2!1,i~off).Activator(b!1) k_on_A*2,k_off_A/2

## SUBSTRATE PROCESSING
# Substrate binds to enzyme (any state,but faster if active)
Enzyme(s,i~off) + Substrate(b) <-> Enzyme(s!1,i~off).Substrate(b!1) k_on_S,k_off_S

# Basal catalysis (inactive or partially active)
Enzyme(s!1,a2,i~off).Substrate(b!1) -> Enzyme(s,a2,i~off) + Product() k_cat_basal

# Enhanced catalysis (both allosteric sites bound)
Enzyme(s!1,a1!+,a2!+,i~off).Substrate(b!1) -> Enzyme(s,a1!+,a2!+,i~off) + Product() k_cat_full

## FEEDBACK REGULATION
# Product mediates negative feedback inhibition (e.g.,metabolic control)
Product() + Enzyme(i~off) -> Enzyme(i~on) k_inh
Enzyme(i~on) -> Enzyme(i~off) k_off_S
end reaction rules

begin actions
generate_network({overwrite=>1})
simulate({method=>"ode",t_end=>5000,n_steps=>300})
end actions
end model
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
id: "allosteric-activation"
name: "allosteric activation"
description: "Binding constants"
contributors:
- name: "Achyudhan"
tags: ["allosteric", "activation", "enzyme", "substrate", "activator", "product"]
category: "signaling"
compatibility:
bng2_compatible: true
simulation_methods: ["ode"]
uses_compartments: false
uses_energy: false
uses_functions: false
nfsim_compatible: false
source:
origin: "ai-generated"
original_format: "bngl"
original_repository: "bionetgen-web-simulator"
source_path: "example-models/allosteric-activation.bngl"
playground:
visible: false
gallery_category: "signaling"
featured: false
difficulty: "advanced"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
# ampk signaling

AMPK signaling: The cellular energy sensor.

## Provenance

This BNGL example was generated in BNG Playground and curated by Achyudhan.
No external literature citation is associated with this model unless one is added manually.

## Compatibility

- BNG2 compatible: yes
- Simulation methods: ode
- Imported from: ai-generated

## Files

- ampk-signaling.bngl

## Tags

ampk, signaling, amp, lkb1, ca, sik, crtc
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
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
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
30 changes: 30 additions & 0 deletions .github/workflows/validate.yml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
name: Validate RuleHub Metadata

on:
pull_request:
push:
branches:
- master
- main

jobs:
validate:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Validate metadata
run: node scripts/validate-metadata.js

- name: Regenerate manifest
run: node scripts/generate-manifest.js --root . --output manifest.generated.json

- name: Check manifest is up to date
run: diff -u manifest.json manifest.generated.json
9 changes: 6 additions & 3 deletions AddingModels.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -4,9 +4,12 @@
2. Name is determined by either first author or the contributor, followed by the year of publication or contribution. If there is already a model in either section with that name, add another descriptive keyword (must start with a letter not a number) to the name, e.g., Blinov2006EGFR.
3. Make a directory with the name of the model in the corresponding section.
4. Put all model files and (optionally) associated scripts in this directory.
5. Create a README.md file in the directory based on the template provided in the corresponding model section (Published or Contributed).
6. If there are multiple model files/scripts, provide a table in the README.md file that gives a brief description of each.
7. (optional) Provide additional annotation in each model file based on the annotation keywords provided in ...
5. Create a metadata.yaml file in the directory following the field names documented in metadata-schema.yaml.
6. Create a README.md file in the directory based on the template provided in the corresponding model section (Published or Contributed).
7. If there are multiple model files/scripts, provide a table in the README.md file that gives a brief description of each.
8. If there are multiple BNGL model files in a single directory, include a collection section in metadata.yaml describing the variant type and count.
9. Run node scripts/validate-metadata.js and node scripts/generate-manifest.js --root . --output manifest.json before opening a pull request.
10. (optional) Provide additional annotation in each model file based on the annotation keywords provided in ...

## Guidelines for journal articles linking to RuleHub

Expand Down
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
# akt signaling

Signaling rates

## Provenance

This BNGL example was generated in BNG Playground and curated by Achyudhan.
No external literature citation is associated with this model unless one is added manually.

## Compatibility

- BNG2 compatible: yes
- Simulation methods: ode
- Imported from: ai-generated

## Files

- akt-signaling.bngl

## Tags

akt, signaling, growthfactor, rtk, pi3k, mtorc2, mtorc1, s6k
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
begin model
begin parameters
# Signaling rates
k_bind 1e-3 # RTK-GF binding
k_unbind 1e-4 # GF dissociation
k_rtk_act 0.5 # Autophosphorylation
k_pi3k 0.2 # PI3K recruitment/activation
k_akt_t308 0.5 # PDK1-mediated T308 phos
k_akt_s473 0.3 # mTORC2-mediated S473 phos
k_mtorc1 0.4 # Akt-mediated mTORC1 activation
k_s6k_act 0.2 # mTORC1-mediated S6K phos

# Negative feedback / resetting
k_reset 0.1 # General phosphatase/deactivation
k_fb 0.05 # S6K-mediated inhibition of RTK signaling

# Total concentrations
GF_tot 100
RTK_tot 50
PI3K_tot 40
AKT_tot 100
mTORC2_tot 20
mTORC1_tot 50
S6K_tot 30
end parameters

begin molecule types
GrowthFactor(r)
RTK(l,state~U~P,fb_site~open~closed)
PI3K(state~off~on)
# Akt has two critical phosphorylation sites
AKT(t308~U~P,s473~U~P)
mTORC2(state~on)
mTORC1(state~off~on)
S6K(state~U~P)
end molecule types

begin seed species
GrowthFactor(r) GF_tot
RTK(l,state~U,fb_site~open) RTK_tot
PI3K(state~off) PI3K_tot
AKT(t308~U,s473~U) AKT_tot
mTORC2(state~on) mTORC2_tot
mTORC1(state~off) mTORC1_tot
S6K(state~U) S6K_tot
end seed species

begin observables
# KEY BIOLOGICAL OUTPUTS
Molecules Active_RTK RTK(state~P) # Receptor tyrosine kinase activation
Molecules Active_PI3K PI3K(state~on) # PI3K recruitment to membrane
Molecules pAkt_T308 AKT(t308~P) # PDK1-mediated phosphorylation
Molecules pAkt_S473 AKT(s473~P) # mTORC2-mediated phosphorylation
Molecules Double_pAkt AKT(t308~P,s473~P) # Fully active Akt
Molecules Active_mTORC1 mTORC1(state~on) # Downstream growth effector
end observables

begin reaction rules
## RECEPTOR ACTIVATION & FEEDBACK
# Growth factor binds to open RTK
GrowthFactor(r) + RTK(l,fb_site~open) <-> GrowthFactor(r!1).RTK(l!1,fb_site~open) k_bind,k_unbind

# Ligand-bound RTK becomes active
GrowthFactor(r!1).RTK(l!1,state~U) -> GrowthFactor(r!1).RTK(l!1,state~P) k_rtk_act

## PI3K / AKT PATHWAY
# Active RTK recruits and activates PI3K
RTK(state~P) + PI3K(state~off) -> RTK(state~P) + PI3K(state~on) k_pi3k

# Active PI3K facilitates Akt phosphorylation at T308 (PDK1 proxy)
PI3K(state~on) + AKT(t308~U) -> PI3K(state~on) + AKT(t308~P) k_akt_t308

# Constitutive mTORC2 phosphorylates Akt at S473
mTORC2() + AKT(s473~U) -> mTORC2() + AKT(s473~P) k_akt_s473

## MTOR SIGNALING & FEEDBACK
# Double-phosphorylated Akt activates mTORC1
AKT(t308~P,s473~P) + mTORC1(state~off) -> AKT(t308~P,s473~P) + mTORC1(state~on) k_mtorc1

# mTORC1 activates S6K,which mediates feedback
mTORC1(state~on) + S6K(state~U) -> mTORC1(state~on) + S6K(state~P) k_s6k_act

# Negative feedback: pS6K inhibits RTK ligand binding by "closing" the feedback site
S6K(state~P) + RTK(fb_site~open) -> S6K(state~P) + RTK(fb_site~closed) k_fb

## RESETTING MECHANISMS
RTK(state~P) -> RTK(state~U) k_reset
PI3K(state~on) -> PI3K(state~off) k_reset
AKT(t308~P) -> AKT(t308~U) k_reset
AKT(s473~P) -> AKT(s473~U) k_reset
mTORC1(state~on) -> mTORC1(state~off) k_reset
S6K(state~P) -> S6K(state~U) k_reset
RTK(fb_site~closed) -> RTK(fb_site~open) k_reset
end reaction rules

begin actions
generate_network({overwrite=>1})
simulate({method=>"ode",t_start=>0,t_end=>500,n_steps=>250})
end actions
end model
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
id: "akt-signaling"
name: "akt signaling"
description: "Signaling rates"
contributors:
- name: "Achyudhan"
tags: ["akt", "signaling", "growthfactor", "rtk", "pi3k", "mtorc2", "mtorc1", "s6k"]
category: "signaling"
compatibility:
bng2_compatible: true
simulation_methods: ["ode"]
uses_compartments: false
uses_energy: false
uses_functions: false
nfsim_compatible: false
source:
origin: "ai-generated"
original_format: "bngl"
original_repository: "bionetgen-web-simulator"
source_path: "example-models/akt-signaling.bngl"
playground:
visible: false
gallery_category: "signaling"
featured: false
difficulty: "advanced"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
# allosteric activation

Binding constants

## Provenance

This BNGL example was generated in BNG Playground and curated by Achyudhan.
No external literature citation is associated with this model unless one is added manually.

## Compatibility

- BNG2 compatible: yes
- Simulation methods: ode
- Imported from: ai-generated

## Files

- allosteric-activation.bngl

## Tags

allosteric, activation, enzyme, substrate, activator, product
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
begin model
begin parameters
# Binding constants
k_on_S 2e-3 # Substrate binding to enzyme
k_off_S 5e-4 # Substrate dissociation
k_on_A 1.5e-3 # Activator binding (cooperative step 1)
k_off_A 3e-4 # Activator dissociation

# Catalytic rates
k_cat_basal 0.02 # Catalysis by inactive/partially-active enzyme
k_cat_full 0.25 # Catalysis by fully activated enzyme

# Feedback
k_inh 0.01 # Product-mediated feedback inhibition
end parameters

begin molecule types
# Enzyme has a substrate site (s),two activator sites (a1,a2),and can be inhibited (i)
Enzyme(s,a1,a2,i~off~on)
Substrate(b)
Activator(b)
Product()
end molecule types

begin seed species
Enzyme(s,a1,a2,i~off) 50
Substrate(b) 500
Activator(b) 200
Product() 0
end seed species

begin observables
# KEY BIOLOGICAL OUTPUTS
Molecules Free_Enzyme Enzyme(a1,a2,s,i~off) # Available enzyme
Molecules Single_Bound Enzyme(a1!1,a2).Activator(b!1) # Partially activated
Molecules Double_Bound Enzyme(a1!1,a2!2).Activator(b!1).Activator(b!2) # Fully activated
Molecules Product_Count Product() # Cumulative product
Molecules Inhibited_Enz Enzyme(i~on) # Enzyme sequestered by feedback
end observables

begin reaction rules
## ALLOSTERIC COOPERATIVITY
# First activator binding
Enzyme(a1,i~off) + Activator(b) <-> Enzyme(a1!1,i~off).Activator(b!1) k_on_A,k_off_A

# Second activator binding (cooperative recruitment)
Enzyme(a1!+,a2,i~off) + Activator(b) <-> Enzyme(a1!+,a2!1,i~off).Activator(b!1) k_on_A*2,k_off_A/2

## SUBSTRATE PROCESSING
# Substrate binds to enzyme (any state,but faster if active)
Enzyme(s,i~off) + Substrate(b) <-> Enzyme(s!1,i~off).Substrate(b!1) k_on_S,k_off_S

# Basal catalysis (inactive or partially active)
Enzyme(s!1,a2,i~off).Substrate(b!1) -> Enzyme(s,a2,i~off) + Product() k_cat_basal

# Enhanced catalysis (both allosteric sites bound)
Enzyme(s!1,a1!+,a2!+,i~off).Substrate(b!1) -> Enzyme(s,a1!+,a2!+,i~off) + Product() k_cat_full

## FEEDBACK REGULATION
# Product mediates negative feedback inhibition (e.g.,metabolic control)
Product() + Enzyme(i~off) -> Enzyme(i~on) k_inh
Enzyme(i~on) -> Enzyme(i~off) k_off_S
end reaction rules

begin actions
generate_network({overwrite=>1})
simulate({method=>"ode",t_end=>5000,n_steps=>300})
end actions
end model
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
id: "allosteric-activation"
name: "allosteric activation"
description: "Binding constants"
contributors:
- name: "Achyudhan"
tags: ["allosteric", "activation", "enzyme", "substrate", "activator", "product"]
category: "signaling"
compatibility:
bng2_compatible: true
simulation_methods: ["ode"]
uses_compartments: false
uses_energy: false
uses_functions: false
nfsim_compatible: false
source:
origin: "ai-generated"
original_format: "bngl"
original_repository: "bionetgen-web-simulator"
source_path: "example-models/allosteric-activation.bngl"
playground:
visible: false
gallery_category: "signaling"
featured: false
difficulty: "advanced"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
# ampk signaling

AMPK signaling: The cellular energy sensor.

## Provenance

This BNGL example was generated in BNG Playground and curated by Achyudhan.
No external literature citation is associated with this model unless one is added manually.

## Compatibility

- BNG2 compatible: yes
- Simulation methods: ode
- Imported from: ai-generated

## Files

- ampk-signaling.bngl

## Tags

ampk, signaling, amp, lkb1, ca, sik, crtc
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
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
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
30 changes: 30 additions & 0 deletions .github/workflows/validate.yml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
name: Validate RuleHub Metadata

on:
pull_request:
push:
branches:
- master
- main

jobs:
validate:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Validate metadata
run: node scripts/validate-metadata.js

- name: Regenerate manifest
run: node scripts/generate-manifest.js --root . --output manifest.generated.json

- name: Check manifest is up to date
run: diff -u manifest.json manifest.generated.json
9 changes: 6 additions & 3 deletions AddingModels.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -4,9 +4,12 @@
2. Name is determined by either first author or the contributor, followed by the year of publication or contribution. If there is already a model in either section with that name, add another descriptive keyword (must start with a letter not a number) to the name, e.g., Blinov2006EGFR.
3. Make a directory with the name of the model in the corresponding section.
4. Put all model files and (optionally) associated scripts in this directory.
5. Create a README.md file in the directory based on the template provided in the corresponding model section (Published or Contributed).
6. If there are multiple model files/scripts, provide a table in the README.md file that gives a brief description of each.
7. (optional) Provide additional annotation in each model file based on the annotation keywords provided in ...
5. Create a metadata.yaml file in the directory following the field names documented in metadata-schema.yaml.
6. Create a README.md file in the directory based on the template provided in the corresponding model section (Published or Contributed).
7. If there are multiple model files/scripts, provide a table in the README.md file that gives a brief description of each.
8. If there are multiple BNGL model files in a single directory, include a collection section in metadata.yaml describing the variant type and count.
9. Run node scripts/validate-metadata.js and node scripts/generate-manifest.js --root . --output manifest.json before opening a pull request.
10. (optional) Provide additional annotation in each model file based on the annotation keywords provided in ...

## Guidelines for journal articles linking to RuleHub

Expand Down
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
# akt signaling

Signaling rates

## Provenance

This BNGL example was generated in BNG Playground and curated by Achyudhan.
No external literature citation is associated with this model unless one is added manually.

## Compatibility

- BNG2 compatible: yes
- Simulation methods: ode
- Imported from: ai-generated

## Files

- akt-signaling.bngl

## Tags

akt, signaling, growthfactor, rtk, pi3k, mtorc2, mtorc1, s6k
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
begin model
begin parameters
# Signaling rates
k_bind 1e-3 # RTK-GF binding
k_unbind 1e-4 # GF dissociation
k_rtk_act 0.5 # Autophosphorylation
k_pi3k 0.2 # PI3K recruitment/activation
k_akt_t308 0.5 # PDK1-mediated T308 phos
k_akt_s473 0.3 # mTORC2-mediated S473 phos
k_mtorc1 0.4 # Akt-mediated mTORC1 activation
k_s6k_act 0.2 # mTORC1-mediated S6K phos

# Negative feedback / resetting
k_reset 0.1 # General phosphatase/deactivation
k_fb 0.05 # S6K-mediated inhibition of RTK signaling

# Total concentrations
GF_tot 100
RTK_tot 50
PI3K_tot 40
AKT_tot 100
mTORC2_tot 20
mTORC1_tot 50
S6K_tot 30
end parameters

begin molecule types
GrowthFactor(r)
RTK(l,state~U~P,fb_site~open~closed)
PI3K(state~off~on)
# Akt has two critical phosphorylation sites
AKT(t308~U~P,s473~U~P)
mTORC2(state~on)
mTORC1(state~off~on)
S6K(state~U~P)
end molecule types

begin seed species
GrowthFactor(r) GF_tot
RTK(l,state~U,fb_site~open) RTK_tot
PI3K(state~off) PI3K_tot
AKT(t308~U,s473~U) AKT_tot
mTORC2(state~on) mTORC2_tot
mTORC1(state~off) mTORC1_tot
S6K(state~U) S6K_tot
end seed species

begin observables
# KEY BIOLOGICAL OUTPUTS
Molecules Active_RTK RTK(state~P) # Receptor tyrosine kinase activation
Molecules Active_PI3K PI3K(state~on) # PI3K recruitment to membrane
Molecules pAkt_T308 AKT(t308~P) # PDK1-mediated phosphorylation
Molecules pAkt_S473 AKT(s473~P) # mTORC2-mediated phosphorylation
Molecules Double_pAkt AKT(t308~P,s473~P) # Fully active Akt
Molecules Active_mTORC1 mTORC1(state~on) # Downstream growth effector
end observables

begin reaction rules
## RECEPTOR ACTIVATION & FEEDBACK
# Growth factor binds to open RTK
GrowthFactor(r) + RTK(l,fb_site~open) <-> GrowthFactor(r!1).RTK(l!1,fb_site~open) k_bind,k_unbind

# Ligand-bound RTK becomes active
GrowthFactor(r!1).RTK(l!1,state~U) -> GrowthFactor(r!1).RTK(l!1,state~P) k_rtk_act

## PI3K / AKT PATHWAY
# Active RTK recruits and activates PI3K
RTK(state~P) + PI3K(state~off) -> RTK(state~P) + PI3K(state~on) k_pi3k

# Active PI3K facilitates Akt phosphorylation at T308 (PDK1 proxy)
PI3K(state~on) + AKT(t308~U) -> PI3K(state~on) + AKT(t308~P) k_akt_t308

# Constitutive mTORC2 phosphorylates Akt at S473
mTORC2() + AKT(s473~U) -> mTORC2() + AKT(s473~P) k_akt_s473

## MTOR SIGNALING & FEEDBACK
# Double-phosphorylated Akt activates mTORC1
AKT(t308~P,s473~P) + mTORC1(state~off) -> AKT(t308~P,s473~P) + mTORC1(state~on) k_mtorc1

# mTORC1 activates S6K,which mediates feedback
mTORC1(state~on) + S6K(state~U) -> mTORC1(state~on) + S6K(state~P) k_s6k_act

# Negative feedback: pS6K inhibits RTK ligand binding by "closing" the feedback site
S6K(state~P) + RTK(fb_site~open) -> S6K(state~P) + RTK(fb_site~closed) k_fb

## RESETTING MECHANISMS
RTK(state~P) -> RTK(state~U) k_reset
PI3K(state~on) -> PI3K(state~off) k_reset
AKT(t308~P) -> AKT(t308~U) k_reset
AKT(s473~P) -> AKT(s473~U) k_reset
mTORC1(state~on) -> mTORC1(state~off) k_reset
S6K(state~P) -> S6K(state~U) k_reset
RTK(fb_site~closed) -> RTK(fb_site~open) k_reset
end reaction rules

begin actions
generate_network({overwrite=>1})
simulate({method=>"ode",t_start=>0,t_end=>500,n_steps=>250})
end actions
end model
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
id: "akt-signaling"
name: "akt signaling"
description: "Signaling rates"
contributors:
- name: "Achyudhan"
tags: ["akt", "signaling", "growthfactor", "rtk", "pi3k", "mtorc2", "mtorc1", "s6k"]
category: "signaling"
compatibility:
bng2_compatible: true
simulation_methods: ["ode"]
uses_compartments: false
uses_energy: false
uses_functions: false
nfsim_compatible: false
source:
origin: "ai-generated"
original_format: "bngl"
original_repository: "bionetgen-web-simulator"
source_path: "example-models/akt-signaling.bngl"
playground:
visible: false
gallery_category: "signaling"
featured: false
difficulty: "advanced"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
# allosteric activation

Binding constants

## Provenance

This BNGL example was generated in BNG Playground and curated by Achyudhan.
No external literature citation is associated with this model unless one is added manually.

## Compatibility

- BNG2 compatible: yes
- Simulation methods: ode
- Imported from: ai-generated

## Files

- allosteric-activation.bngl

## Tags

allosteric, activation, enzyme, substrate, activator, product
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
begin model
begin parameters
# Binding constants
k_on_S 2e-3 # Substrate binding to enzyme
k_off_S 5e-4 # Substrate dissociation
k_on_A 1.5e-3 # Activator binding (cooperative step 1)
k_off_A 3e-4 # Activator dissociation

# Catalytic rates
k_cat_basal 0.02 # Catalysis by inactive/partially-active enzyme
k_cat_full 0.25 # Catalysis by fully activated enzyme

# Feedback
k_inh 0.01 # Product-mediated feedback inhibition
end parameters

begin molecule types
# Enzyme has a substrate site (s),two activator sites (a1,a2),and can be inhibited (i)
Enzyme(s,a1,a2,i~off~on)
Substrate(b)
Activator(b)
Product()
end molecule types

begin seed species
Enzyme(s,a1,a2,i~off) 50
Substrate(b) 500
Activator(b) 200
Product() 0
end seed species

begin observables
# KEY BIOLOGICAL OUTPUTS
Molecules Free_Enzyme Enzyme(a1,a2,s,i~off) # Available enzyme
Molecules Single_Bound Enzyme(a1!1,a2).Activator(b!1) # Partially activated
Molecules Double_Bound Enzyme(a1!1,a2!2).Activator(b!1).Activator(b!2) # Fully activated
Molecules Product_Count Product() # Cumulative product
Molecules Inhibited_Enz Enzyme(i~on) # Enzyme sequestered by feedback
end observables

begin reaction rules
## ALLOSTERIC COOPERATIVITY
# First activator binding
Enzyme(a1,i~off) + Activator(b) <-> Enzyme(a1!1,i~off).Activator(b!1) k_on_A,k_off_A

# Second activator binding (cooperative recruitment)
Enzyme(a1!+,a2,i~off) + Activator(b) <-> Enzyme(a1!+,a2!1,i~off).Activator(b!1) k_on_A*2,k_off_A/2

## SUBSTRATE PROCESSING
# Substrate binds to enzyme (any state,but faster if active)
Enzyme(s,i~off) + Substrate(b) <-> Enzyme(s!1,i~off).Substrate(b!1) k_on_S,k_off_S

# Basal catalysis (inactive or partially active)
Enzyme(s!1,a2,i~off).Substrate(b!1) -> Enzyme(s,a2,i~off) + Product() k_cat_basal

# Enhanced catalysis (both allosteric sites bound)
Enzyme(s!1,a1!+,a2!+,i~off).Substrate(b!1) -> Enzyme(s,a1!+,a2!+,i~off) + Product() k_cat_full

## FEEDBACK REGULATION
# Product mediates negative feedback inhibition (e.g.,metabolic control)
Product() + Enzyme(i~off) -> Enzyme(i~on) k_inh
Enzyme(i~on) -> Enzyme(i~off) k_off_S
end reaction rules

begin actions
generate_network({overwrite=>1})
simulate({method=>"ode",t_end=>5000,n_steps=>300})
end actions
end model
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
id: "allosteric-activation"
name: "allosteric activation"
description: "Binding constants"
contributors:
- name: "Achyudhan"
tags: ["allosteric", "activation", "enzyme", "substrate", "activator", "product"]
category: "signaling"
compatibility:
bng2_compatible: true
simulation_methods: ["ode"]
uses_compartments: false
uses_energy: false
uses_functions: false
nfsim_compatible: false
source:
origin: "ai-generated"
original_format: "bngl"
original_repository: "bionetgen-web-simulator"
source_path: "example-models/allosteric-activation.bngl"
playground:
visible: false
gallery_category: "signaling"
featured: false
difficulty: "advanced"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
# ampk signaling

AMPK signaling: The cellular energy sensor.

## Provenance

This BNGL example was generated in BNG Playground and curated by Achyudhan.
No external literature citation is associated with this model unless one is added manually.

## Compatibility

- BNG2 compatible: yes
- Simulation methods: ode
- Imported from: ai-generated

## Files

- ampk-signaling.bngl

## Tags

ampk, signaling, amp, lkb1, ca, sik, crtc
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
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
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
30 changes: 30 additions & 0 deletions .github/workflows/validate.yml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
name: Validate RuleHub Metadata

on:
pull_request:
push:
branches:
- master
- main

jobs:
validate:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Validate metadata
run: node scripts/validate-metadata.js

- name: Regenerate manifest
run: node scripts/generate-manifest.js --root . --output manifest.generated.json

- name: Check manifest is up to date
run: diff -u manifest.json manifest.generated.json
9 changes: 6 additions & 3 deletions AddingModels.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -4,9 +4,12 @@
2. Name is determined by either first author or the contributor, followed by the year of publication or contribution. If there is already a model in either section with that name, add another descriptive keyword (must start with a letter not a number) to the name, e.g., Blinov2006EGFR.
3. Make a directory with the name of the model in the corresponding section.
4. Put all model files and (optionally) associated scripts in this directory.
5. Create a README.md file in the directory based on the template provided in the corresponding model section (Published or Contributed).
6. If there are multiple model files/scripts, provide a table in the README.md file that gives a brief description of each.
7. (optional) Provide additional annotation in each model file based on the annotation keywords provided in ...
5. Create a metadata.yaml file in the directory following the field names documented in metadata-schema.yaml.
6. Create a README.md file in the directory based on the template provided in the corresponding model section (Published or Contributed).
7. If there are multiple model files/scripts, provide a table in the README.md file that gives a brief description of each.
8. If there are multiple BNGL model files in a single directory, include a collection section in metadata.yaml describing the variant type and count.
9. Run node scripts/validate-metadata.js and node scripts/generate-manifest.js --root . --output manifest.json before opening a pull request.
10. (optional) Provide additional annotation in each model file based on the annotation keywords provided in ...

## Guidelines for journal articles linking to RuleHub

Expand Down
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
# akt signaling

Signaling rates

## Provenance

This BNGL example was generated in BNG Playground and curated by Achyudhan.
No external literature citation is associated with this model unless one is added manually.

## Compatibility

- BNG2 compatible: yes
- Simulation methods: ode
- Imported from: ai-generated

## Files

- akt-signaling.bngl

## Tags

akt, signaling, growthfactor, rtk, pi3k, mtorc2, mtorc1, s6k
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
begin model
begin parameters
# Signaling rates
k_bind 1e-3 # RTK-GF binding
k_unbind 1e-4 # GF dissociation
k_rtk_act 0.5 # Autophosphorylation
k_pi3k 0.2 # PI3K recruitment/activation
k_akt_t308 0.5 # PDK1-mediated T308 phos
k_akt_s473 0.3 # mTORC2-mediated S473 phos
k_mtorc1 0.4 # Akt-mediated mTORC1 activation
k_s6k_act 0.2 # mTORC1-mediated S6K phos

# Negative feedback / resetting
k_reset 0.1 # General phosphatase/deactivation
k_fb 0.05 # S6K-mediated inhibition of RTK signaling

# Total concentrations
GF_tot 100
RTK_tot 50
PI3K_tot 40
AKT_tot 100
mTORC2_tot 20
mTORC1_tot 50
S6K_tot 30
end parameters

begin molecule types
GrowthFactor(r)
RTK(l,state~U~P,fb_site~open~closed)
PI3K(state~off~on)
# Akt has two critical phosphorylation sites
AKT(t308~U~P,s473~U~P)
mTORC2(state~on)
mTORC1(state~off~on)
S6K(state~U~P)
end molecule types

begin seed species
GrowthFactor(r) GF_tot
RTK(l,state~U,fb_site~open) RTK_tot
PI3K(state~off) PI3K_tot
AKT(t308~U,s473~U) AKT_tot
mTORC2(state~on) mTORC2_tot
mTORC1(state~off) mTORC1_tot
S6K(state~U) S6K_tot
end seed species

begin observables
# KEY BIOLOGICAL OUTPUTS
Molecules Active_RTK RTK(state~P) # Receptor tyrosine kinase activation
Molecules Active_PI3K PI3K(state~on) # PI3K recruitment to membrane
Molecules pAkt_T308 AKT(t308~P) # PDK1-mediated phosphorylation
Molecules pAkt_S473 AKT(s473~P) # mTORC2-mediated phosphorylation
Molecules Double_pAkt AKT(t308~P,s473~P) # Fully active Akt
Molecules Active_mTORC1 mTORC1(state~on) # Downstream growth effector
end observables

begin reaction rules
## RECEPTOR ACTIVATION & FEEDBACK
# Growth factor binds to open RTK
GrowthFactor(r) + RTK(l,fb_site~open) <-> GrowthFactor(r!1).RTK(l!1,fb_site~open) k_bind,k_unbind

# Ligand-bound RTK becomes active
GrowthFactor(r!1).RTK(l!1,state~U) -> GrowthFactor(r!1).RTK(l!1,state~P) k_rtk_act

## PI3K / AKT PATHWAY
# Active RTK recruits and activates PI3K
RTK(state~P) + PI3K(state~off) -> RTK(state~P) + PI3K(state~on) k_pi3k

# Active PI3K facilitates Akt phosphorylation at T308 (PDK1 proxy)
PI3K(state~on) + AKT(t308~U) -> PI3K(state~on) + AKT(t308~P) k_akt_t308

# Constitutive mTORC2 phosphorylates Akt at S473
mTORC2() + AKT(s473~U) -> mTORC2() + AKT(s473~P) k_akt_s473

## MTOR SIGNALING & FEEDBACK
# Double-phosphorylated Akt activates mTORC1
AKT(t308~P,s473~P) + mTORC1(state~off) -> AKT(t308~P,s473~P) + mTORC1(state~on) k_mtorc1

# mTORC1 activates S6K,which mediates feedback
mTORC1(state~on) + S6K(state~U) -> mTORC1(state~on) + S6K(state~P) k_s6k_act

# Negative feedback: pS6K inhibits RTK ligand binding by "closing" the feedback site
S6K(state~P) + RTK(fb_site~open) -> S6K(state~P) + RTK(fb_site~closed) k_fb

## RESETTING MECHANISMS
RTK(state~P) -> RTK(state~U) k_reset
PI3K(state~on) -> PI3K(state~off) k_reset
AKT(t308~P) -> AKT(t308~U) k_reset
AKT(s473~P) -> AKT(s473~U) k_reset
mTORC1(state~on) -> mTORC1(state~off) k_reset
S6K(state~P) -> S6K(state~U) k_reset
RTK(fb_site~closed) -> RTK(fb_site~open) k_reset
end reaction rules

begin actions
generate_network({overwrite=>1})
simulate({method=>"ode",t_start=>0,t_end=>500,n_steps=>250})
end actions
end model
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
id: "akt-signaling"
name: "akt signaling"
description: "Signaling rates"
contributors:
- name: "Achyudhan"
tags: ["akt", "signaling", "growthfactor", "rtk", "pi3k", "mtorc2", "mtorc1", "s6k"]
category: "signaling"
compatibility:
bng2_compatible: true
simulation_methods: ["ode"]
uses_compartments: false
uses_energy: false
uses_functions: false
nfsim_compatible: false
source:
origin: "ai-generated"
original_format: "bngl"
original_repository: "bionetgen-web-simulator"
source_path: "example-models/akt-signaling.bngl"
playground:
visible: false
gallery_category: "signaling"
featured: false
difficulty: "advanced"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
# allosteric activation

Binding constants

## Provenance

This BNGL example was generated in BNG Playground and curated by Achyudhan.
No external literature citation is associated with this model unless one is added manually.

## Compatibility

- BNG2 compatible: yes
- Simulation methods: ode
- Imported from: ai-generated

## Files

- allosteric-activation.bngl

## Tags

allosteric, activation, enzyme, substrate, activator, product
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
begin model
begin parameters
# Binding constants
k_on_S 2e-3 # Substrate binding to enzyme
k_off_S 5e-4 # Substrate dissociation
k_on_A 1.5e-3 # Activator binding (cooperative step 1)
k_off_A 3e-4 # Activator dissociation

# Catalytic rates
k_cat_basal 0.02 # Catalysis by inactive/partially-active enzyme
k_cat_full 0.25 # Catalysis by fully activated enzyme

# Feedback
k_inh 0.01 # Product-mediated feedback inhibition
end parameters

begin molecule types
# Enzyme has a substrate site (s),two activator sites (a1,a2),and can be inhibited (i)
Enzyme(s,a1,a2,i~off~on)
Substrate(b)
Activator(b)
Product()
end molecule types

begin seed species
Enzyme(s,a1,a2,i~off) 50
Substrate(b) 500
Activator(b) 200
Product() 0
end seed species

begin observables
# KEY BIOLOGICAL OUTPUTS
Molecules Free_Enzyme Enzyme(a1,a2,s,i~off) # Available enzyme
Molecules Single_Bound Enzyme(a1!1,a2).Activator(b!1) # Partially activated
Molecules Double_Bound Enzyme(a1!1,a2!2).Activator(b!1).Activator(b!2) # Fully activated
Molecules Product_Count Product() # Cumulative product
Molecules Inhibited_Enz Enzyme(i~on) # Enzyme sequestered by feedback
end observables

begin reaction rules
## ALLOSTERIC COOPERATIVITY
# First activator binding
Enzyme(a1,i~off) + Activator(b) <-> Enzyme(a1!1,i~off).Activator(b!1) k_on_A,k_off_A

# Second activator binding (cooperative recruitment)
Enzyme(a1!+,a2,i~off) + Activator(b) <-> Enzyme(a1!+,a2!1,i~off).Activator(b!1) k_on_A*2,k_off_A/2

## SUBSTRATE PROCESSING
# Substrate binds to enzyme (any state,but faster if active)
Enzyme(s,i~off) + Substrate(b) <-> Enzyme(s!1,i~off).Substrate(b!1) k_on_S,k_off_S

# Basal catalysis (inactive or partially active)
Enzyme(s!1,a2,i~off).Substrate(b!1) -> Enzyme(s,a2,i~off) + Product() k_cat_basal

# Enhanced catalysis (both allosteric sites bound)
Enzyme(s!1,a1!+,a2!+,i~off).Substrate(b!1) -> Enzyme(s,a1!+,a2!+,i~off) + Product() k_cat_full

## FEEDBACK REGULATION
# Product mediates negative feedback inhibition (e.g.,metabolic control)
Product() + Enzyme(i~off) -> Enzyme(i~on) k_inh
Enzyme(i~on) -> Enzyme(i~off) k_off_S
end reaction rules

begin actions
generate_network({overwrite=>1})
simulate({method=>"ode",t_end=>5000,n_steps=>300})
end actions
end model
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
id: "allosteric-activation"
name: "allosteric activation"
description: "Binding constants"
contributors:
- name: "Achyudhan"
tags: ["allosteric", "activation", "enzyme", "substrate", "activator", "product"]
category: "signaling"
compatibility:
bng2_compatible: true
simulation_methods: ["ode"]
uses_compartments: false
uses_energy: false
uses_functions: false
nfsim_compatible: false
source:
origin: "ai-generated"
original_format: "bngl"
original_repository: "bionetgen-web-simulator"
source_path: "example-models/allosteric-activation.bngl"
playground:
visible: false
gallery_category: "signaling"
featured: false
difficulty: "advanced"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
# ampk signaling

AMPK signaling: The cellular energy sensor.

## Provenance

This BNGL example was generated in BNG Playground and curated by Achyudhan.
No external literature citation is associated with this model unless one is added manually.

## Compatibility

- BNG2 compatible: yes
- Simulation methods: ode
- Imported from: ai-generated

## Files

- ampk-signaling.bngl

## Tags

ampk, signaling, amp, lkb1, ca, sik, crtc
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
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
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
30 changes: 30 additions & 0 deletions .github/workflows/validate.yml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
name: Validate RuleHub Metadata

on:
pull_request:
push:
branches:
- master
- main

jobs:
validate:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Validate metadata
run: node scripts/validate-metadata.js

- name: Regenerate manifest
run: node scripts/generate-manifest.js --root . --output manifest.generated.json

- name: Check manifest is up to date
run: diff -u manifest.json manifest.generated.json
9 changes: 6 additions & 3 deletions AddingModels.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -4,9 +4,12 @@
2. Name is determined by either first author or the contributor, followed by the year of publication or contribution. If there is already a model in either section with that name, add another descriptive keyword (must start with a letter not a number) to the name, e.g., Blinov2006EGFR.
3. Make a directory with the name of the model in the corresponding section.
4. Put all model files and (optionally) associated scripts in this directory.
5. Create a README.md file in the directory based on the template provided in the corresponding model section (Published or Contributed).
6. If there are multiple model files/scripts, provide a table in the README.md file that gives a brief description of each.
7. (optional) Provide additional annotation in each model file based on the annotation keywords provided in ...
5. Create a metadata.yaml file in the directory following the field names documented in metadata-schema.yaml.
6. Create a README.md file in the directory based on the template provided in the corresponding model section (Published or Contributed).
7. If there are multiple model files/scripts, provide a table in the README.md file that gives a brief description of each.
8. If there are multiple BNGL model files in a single directory, include a collection section in metadata.yaml describing the variant type and count.
9. Run node scripts/validate-metadata.js and node scripts/generate-manifest.js --root . --output manifest.json before opening a pull request.
10. (optional) Provide additional annotation in each model file based on the annotation keywords provided in ...

## Guidelines for journal articles linking to RuleHub

Expand Down
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
# akt signaling

Signaling rates

## Provenance

This BNGL example was generated in BNG Playground and curated by Achyudhan.
No external literature citation is associated with this model unless one is added manually.

## Compatibility

- BNG2 compatible: yes
- Simulation methods: ode
- Imported from: ai-generated

## Files

- akt-signaling.bngl

## Tags

akt, signaling, growthfactor, rtk, pi3k, mtorc2, mtorc1, s6k
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
begin model
begin parameters
# Signaling rates
k_bind 1e-3 # RTK-GF binding
k_unbind 1e-4 # GF dissociation
k_rtk_act 0.5 # Autophosphorylation
k_pi3k 0.2 # PI3K recruitment/activation
k_akt_t308 0.5 # PDK1-mediated T308 phos
k_akt_s473 0.3 # mTORC2-mediated S473 phos
k_mtorc1 0.4 # Akt-mediated mTORC1 activation
k_s6k_act 0.2 # mTORC1-mediated S6K phos

# Negative feedback / resetting
k_reset 0.1 # General phosphatase/deactivation
k_fb 0.05 # S6K-mediated inhibition of RTK signaling

# Total concentrations
GF_tot 100
RTK_tot 50
PI3K_tot 40
AKT_tot 100
mTORC2_tot 20
mTORC1_tot 50
S6K_tot 30
end parameters

begin molecule types
GrowthFactor(r)
RTK(l,state~U~P,fb_site~open~closed)
PI3K(state~off~on)
# Akt has two critical phosphorylation sites
AKT(t308~U~P,s473~U~P)
mTORC2(state~on)
mTORC1(state~off~on)
S6K(state~U~P)
end molecule types

begin seed species
GrowthFactor(r) GF_tot
RTK(l,state~U,fb_site~open) RTK_tot
PI3K(state~off) PI3K_tot
AKT(t308~U,s473~U) AKT_tot
mTORC2(state~on) mTORC2_tot
mTORC1(state~off) mTORC1_tot
S6K(state~U) S6K_tot
end seed species

begin observables
# KEY BIOLOGICAL OUTPUTS
Molecules Active_RTK RTK(state~P) # Receptor tyrosine kinase activation
Molecules Active_PI3K PI3K(state~on) # PI3K recruitment to membrane
Molecules pAkt_T308 AKT(t308~P) # PDK1-mediated phosphorylation
Molecules pAkt_S473 AKT(s473~P) # mTORC2-mediated phosphorylation
Molecules Double_pAkt AKT(t308~P,s473~P) # Fully active Akt
Molecules Active_mTORC1 mTORC1(state~on) # Downstream growth effector
end observables

begin reaction rules
## RECEPTOR ACTIVATION & FEEDBACK
# Growth factor binds to open RTK
GrowthFactor(r) + RTK(l,fb_site~open) <-> GrowthFactor(r!1).RTK(l!1,fb_site~open) k_bind,k_unbind

# Ligand-bound RTK becomes active
GrowthFactor(r!1).RTK(l!1,state~U) -> GrowthFactor(r!1).RTK(l!1,state~P) k_rtk_act

## PI3K / AKT PATHWAY
# Active RTK recruits and activates PI3K
RTK(state~P) + PI3K(state~off) -> RTK(state~P) + PI3K(state~on) k_pi3k

# Active PI3K facilitates Akt phosphorylation at T308 (PDK1 proxy)
PI3K(state~on) + AKT(t308~U) -> PI3K(state~on) + AKT(t308~P) k_akt_t308

# Constitutive mTORC2 phosphorylates Akt at S473
mTORC2() + AKT(s473~U) -> mTORC2() + AKT(s473~P) k_akt_s473

## MTOR SIGNALING & FEEDBACK
# Double-phosphorylated Akt activates mTORC1
AKT(t308~P,s473~P) + mTORC1(state~off) -> AKT(t308~P,s473~P) + mTORC1(state~on) k_mtorc1

# mTORC1 activates S6K,which mediates feedback
mTORC1(state~on) + S6K(state~U) -> mTORC1(state~on) + S6K(state~P) k_s6k_act

# Negative feedback: pS6K inhibits RTK ligand binding by "closing" the feedback site
S6K(state~P) + RTK(fb_site~open) -> S6K(state~P) + RTK(fb_site~closed) k_fb

## RESETTING MECHANISMS
RTK(state~P) -> RTK(state~U) k_reset
PI3K(state~on) -> PI3K(state~off) k_reset
AKT(t308~P) -> AKT(t308~U) k_reset
AKT(s473~P) -> AKT(s473~U) k_reset
mTORC1(state~on) -> mTORC1(state~off) k_reset
S6K(state~P) -> S6K(state~U) k_reset
RTK(fb_site~closed) -> RTK(fb_site~open) k_reset
end reaction rules

begin actions
generate_network({overwrite=>1})
simulate({method=>"ode",t_start=>0,t_end=>500,n_steps=>250})
end actions
end model
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
id: "akt-signaling"
name: "akt signaling"
description: "Signaling rates"
contributors:
- name: "Achyudhan"
tags: ["akt", "signaling", "growthfactor", "rtk", "pi3k", "mtorc2", "mtorc1", "s6k"]
category: "signaling"
compatibility:
bng2_compatible: true
simulation_methods: ["ode"]
uses_compartments: false
uses_energy: false
uses_functions: false
nfsim_compatible: false
source:
origin: "ai-generated"
original_format: "bngl"
original_repository: "bionetgen-web-simulator"
source_path: "example-models/akt-signaling.bngl"
playground:
visible: false
gallery_category: "signaling"
featured: false
difficulty: "advanced"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
# allosteric activation

Binding constants

## Provenance

This BNGL example was generated in BNG Playground and curated by Achyudhan.
No external literature citation is associated with this model unless one is added manually.

## Compatibility

- BNG2 compatible: yes
- Simulation methods: ode
- Imported from: ai-generated

## Files

- allosteric-activation.bngl

## Tags

allosteric, activation, enzyme, substrate, activator, product
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
begin model
begin parameters
# Binding constants
k_on_S 2e-3 # Substrate binding to enzyme
k_off_S 5e-4 # Substrate dissociation
k_on_A 1.5e-3 # Activator binding (cooperative step 1)
k_off_A 3e-4 # Activator dissociation

# Catalytic rates
k_cat_basal 0.02 # Catalysis by inactive/partially-active enzyme
k_cat_full 0.25 # Catalysis by fully activated enzyme

# Feedback
k_inh 0.01 # Product-mediated feedback inhibition
end parameters

begin molecule types
# Enzyme has a substrate site (s),two activator sites (a1,a2),and can be inhibited (i)
Enzyme(s,a1,a2,i~off~on)
Substrate(b)
Activator(b)
Product()
end molecule types

begin seed species
Enzyme(s,a1,a2,i~off) 50
Substrate(b) 500
Activator(b) 200
Product() 0
end seed species

begin observables
# KEY BIOLOGICAL OUTPUTS
Molecules Free_Enzyme Enzyme(a1,a2,s,i~off) # Available enzyme
Molecules Single_Bound Enzyme(a1!1,a2).Activator(b!1) # Partially activated
Molecules Double_Bound Enzyme(a1!1,a2!2).Activator(b!1).Activator(b!2) # Fully activated
Molecules Product_Count Product() # Cumulative product
Molecules Inhibited_Enz Enzyme(i~on) # Enzyme sequestered by feedback
end observables

begin reaction rules
## ALLOSTERIC COOPERATIVITY
# First activator binding
Enzyme(a1,i~off) + Activator(b) <-> Enzyme(a1!1,i~off).Activator(b!1) k_on_A,k_off_A

# Second activator binding (cooperative recruitment)
Enzyme(a1!+,a2,i~off) + Activator(b) <-> Enzyme(a1!+,a2!1,i~off).Activator(b!1) k_on_A*2,k_off_A/2

## SUBSTRATE PROCESSING
# Substrate binds to enzyme (any state,but faster if active)
Enzyme(s,i~off) + Substrate(b) <-> Enzyme(s!1,i~off).Substrate(b!1) k_on_S,k_off_S

# Basal catalysis (inactive or partially active)
Enzyme(s!1,a2,i~off).Substrate(b!1) -> Enzyme(s,a2,i~off) + Product() k_cat_basal

# Enhanced catalysis (both allosteric sites bound)
Enzyme(s!1,a1!+,a2!+,i~off).Substrate(b!1) -> Enzyme(s,a1!+,a2!+,i~off) + Product() k_cat_full

## FEEDBACK REGULATION
# Product mediates negative feedback inhibition (e.g.,metabolic control)
Product() + Enzyme(i~off) -> Enzyme(i~on) k_inh
Enzyme(i~on) -> Enzyme(i~off) k_off_S
end reaction rules

begin actions
generate_network({overwrite=>1})
simulate({method=>"ode",t_end=>5000,n_steps=>300})
end actions
end model
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
id: "allosteric-activation"
name: "allosteric activation"
description: "Binding constants"
contributors:
- name: "Achyudhan"
tags: ["allosteric", "activation", "enzyme", "substrate", "activator", "product"]
category: "signaling"
compatibility:
bng2_compatible: true
simulation_methods: ["ode"]
uses_compartments: false
uses_energy: false
uses_functions: false
nfsim_compatible: false
source:
origin: "ai-generated"
original_format: "bngl"
original_repository: "bionetgen-web-simulator"
source_path: "example-models/allosteric-activation.bngl"
playground:
visible: false
gallery_category: "signaling"
featured: false
difficulty: "advanced"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
# ampk signaling

AMPK signaling: The cellular energy sensor.

## Provenance

This BNGL example was generated in BNG Playground and curated by Achyudhan.
No external literature citation is associated with this model unless one is added manually.

## Compatibility

- BNG2 compatible: yes
- Simulation methods: ode
- Imported from: ai-generated

## Files

- ampk-signaling.bngl

## Tags

ampk, signaling, amp, lkb1, ca, sik, crtc
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
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
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
30 changes: 30 additions & 0 deletions .github/workflows/validate.yml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
name: Validate RuleHub Metadata

on:
pull_request:
push:
branches:
- master
- main

jobs:
validate:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Validate metadata
run: node scripts/validate-metadata.js

- name: Regenerate manifest
run: node scripts/generate-manifest.js --root . --output manifest.generated.json

- name: Check manifest is up to date
run: diff -u manifest.json manifest.generated.json
9 changes: 6 additions & 3 deletions AddingModels.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -4,9 +4,12 @@
2. Name is determined by either first author or the contributor, followed by the year of publication or contribution. If there is already a model in either section with that name, add another descriptive keyword (must start with a letter not a number) to the name, e.g., Blinov2006EGFR.
3. Make a directory with the name of the model in the corresponding section.
4. Put all model files and (optionally) associated scripts in this directory.
5. Create a README.md file in the directory based on the template provided in the corresponding model section (Published or Contributed).
6. If there are multiple model files/scripts, provide a table in the README.md file that gives a brief description of each.
7. (optional) Provide additional annotation in each model file based on the annotation keywords provided in ...
5. Create a metadata.yaml file in the directory following the field names documented in metadata-schema.yaml.
6. Create a README.md file in the directory based on the template provided in the corresponding model section (Published or Contributed).
7. If there are multiple model files/scripts, provide a table in the README.md file that gives a brief description of each.
8. If there are multiple BNGL model files in a single directory, include a collection section in metadata.yaml describing the variant type and count.
9. Run node scripts/validate-metadata.js and node scripts/generate-manifest.js --root . --output manifest.json before opening a pull request.
10. (optional) Provide additional annotation in each model file based on the annotation keywords provided in ...

## Guidelines for journal articles linking to RuleHub

Expand Down
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
# akt signaling

Signaling rates

## Provenance

This BNGL example was generated in BNG Playground and curated by Achyudhan.
No external literature citation is associated with this model unless one is added manually.

## Compatibility

- BNG2 compatible: yes
- Simulation methods: ode
- Imported from: ai-generated

## Files

- akt-signaling.bngl

## Tags

akt, signaling, growthfactor, rtk, pi3k, mtorc2, mtorc1, s6k
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
begin model
begin parameters
# Signaling rates
k_bind 1e-3 # RTK-GF binding
k_unbind 1e-4 # GF dissociation
k_rtk_act 0.5 # Autophosphorylation
k_pi3k 0.2 # PI3K recruitment/activation
k_akt_t308 0.5 # PDK1-mediated T308 phos
k_akt_s473 0.3 # mTORC2-mediated S473 phos
k_mtorc1 0.4 # Akt-mediated mTORC1 activation
k_s6k_act 0.2 # mTORC1-mediated S6K phos

# Negative feedback / resetting
k_reset 0.1 # General phosphatase/deactivation
k_fb 0.05 # S6K-mediated inhibition of RTK signaling

# Total concentrations
GF_tot 100
RTK_tot 50
PI3K_tot 40
AKT_tot 100
mTORC2_tot 20
mTORC1_tot 50
S6K_tot 30
end parameters

begin molecule types
GrowthFactor(r)
RTK(l,state~U~P,fb_site~open~closed)
PI3K(state~off~on)
# Akt has two critical phosphorylation sites
AKT(t308~U~P,s473~U~P)
mTORC2(state~on)
mTORC1(state~off~on)
S6K(state~U~P)
end molecule types

begin seed species
GrowthFactor(r) GF_tot
RTK(l,state~U,fb_site~open) RTK_tot
PI3K(state~off) PI3K_tot
AKT(t308~U,s473~U) AKT_tot
mTORC2(state~on) mTORC2_tot
mTORC1(state~off) mTORC1_tot
S6K(state~U) S6K_tot
end seed species

begin observables
# KEY BIOLOGICAL OUTPUTS
Molecules Active_RTK RTK(state~P) # Receptor tyrosine kinase activation
Molecules Active_PI3K PI3K(state~on) # PI3K recruitment to membrane
Molecules pAkt_T308 AKT(t308~P) # PDK1-mediated phosphorylation
Molecules pAkt_S473 AKT(s473~P) # mTORC2-mediated phosphorylation
Molecules Double_pAkt AKT(t308~P,s473~P) # Fully active Akt
Molecules Active_mTORC1 mTORC1(state~on) # Downstream growth effector
end observables

begin reaction rules
## RECEPTOR ACTIVATION & FEEDBACK
# Growth factor binds to open RTK
GrowthFactor(r) + RTK(l,fb_site~open) <-> GrowthFactor(r!1).RTK(l!1,fb_site~open) k_bind,k_unbind

# Ligand-bound RTK becomes active
GrowthFactor(r!1).RTK(l!1,state~U) -> GrowthFactor(r!1).RTK(l!1,state~P) k_rtk_act

## PI3K / AKT PATHWAY
# Active RTK recruits and activates PI3K
RTK(state~P) + PI3K(state~off) -> RTK(state~P) + PI3K(state~on) k_pi3k

# Active PI3K facilitates Akt phosphorylation at T308 (PDK1 proxy)
PI3K(state~on) + AKT(t308~U) -> PI3K(state~on) + AKT(t308~P) k_akt_t308

# Constitutive mTORC2 phosphorylates Akt at S473
mTORC2() + AKT(s473~U) -> mTORC2() + AKT(s473~P) k_akt_s473

## MTOR SIGNALING & FEEDBACK
# Double-phosphorylated Akt activates mTORC1
AKT(t308~P,s473~P) + mTORC1(state~off) -> AKT(t308~P,s473~P) + mTORC1(state~on) k_mtorc1

# mTORC1 activates S6K,which mediates feedback
mTORC1(state~on) + S6K(state~U) -> mTORC1(state~on) + S6K(state~P) k_s6k_act

# Negative feedback: pS6K inhibits RTK ligand binding by "closing" the feedback site
S6K(state~P) + RTK(fb_site~open) -> S6K(state~P) + RTK(fb_site~closed) k_fb

## RESETTING MECHANISMS
RTK(state~P) -> RTK(state~U) k_reset
PI3K(state~on) -> PI3K(state~off) k_reset
AKT(t308~P) -> AKT(t308~U) k_reset
AKT(s473~P) -> AKT(s473~U) k_reset
mTORC1(state~on) -> mTORC1(state~off) k_reset
S6K(state~P) -> S6K(state~U) k_reset
RTK(fb_site~closed) -> RTK(fb_site~open) k_reset
end reaction rules

begin actions
generate_network({overwrite=>1})
simulate({method=>"ode",t_start=>0,t_end=>500,n_steps=>250})
end actions
end model
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
id: "akt-signaling"
name: "akt signaling"
description: "Signaling rates"
contributors:
- name: "Achyudhan"
tags: ["akt", "signaling", "growthfactor", "rtk", "pi3k", "mtorc2", "mtorc1", "s6k"]
category: "signaling"
compatibility:
bng2_compatible: true
simulation_methods: ["ode"]
uses_compartments: false
uses_energy: false
uses_functions: false
nfsim_compatible: false
source:
origin: "ai-generated"
original_format: "bngl"
original_repository: "bionetgen-web-simulator"
source_path: "example-models/akt-signaling.bngl"
playground:
visible: false
gallery_category: "signaling"
featured: false
difficulty: "advanced"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
# allosteric activation

Binding constants

## Provenance

This BNGL example was generated in BNG Playground and curated by Achyudhan.
No external literature citation is associated with this model unless one is added manually.

## Compatibility

- BNG2 compatible: yes
- Simulation methods: ode
- Imported from: ai-generated

## Files

- allosteric-activation.bngl

## Tags

allosteric, activation, enzyme, substrate, activator, product
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
begin model
begin parameters
# Binding constants
k_on_S 2e-3 # Substrate binding to enzyme
k_off_S 5e-4 # Substrate dissociation
k_on_A 1.5e-3 # Activator binding (cooperative step 1)
k_off_A 3e-4 # Activator dissociation

# Catalytic rates
k_cat_basal 0.02 # Catalysis by inactive/partially-active enzyme
k_cat_full 0.25 # Catalysis by fully activated enzyme

# Feedback
k_inh 0.01 # Product-mediated feedback inhibition
end parameters

begin molecule types
# Enzyme has a substrate site (s),two activator sites (a1,a2),and can be inhibited (i)
Enzyme(s,a1,a2,i~off~on)
Substrate(b)
Activator(b)
Product()
end molecule types

begin seed species
Enzyme(s,a1,a2,i~off) 50
Substrate(b) 500
Activator(b) 200
Product() 0
end seed species

begin observables
# KEY BIOLOGICAL OUTPUTS
Molecules Free_Enzyme Enzyme(a1,a2,s,i~off) # Available enzyme
Molecules Single_Bound Enzyme(a1!1,a2).Activator(b!1) # Partially activated
Molecules Double_Bound Enzyme(a1!1,a2!2).Activator(b!1).Activator(b!2) # Fully activated
Molecules Product_Count Product() # Cumulative product
Molecules Inhibited_Enz Enzyme(i~on) # Enzyme sequestered by feedback
end observables

begin reaction rules
## ALLOSTERIC COOPERATIVITY
# First activator binding
Enzyme(a1,i~off) + Activator(b) <-> Enzyme(a1!1,i~off).Activator(b!1) k_on_A,k_off_A

# Second activator binding (cooperative recruitment)
Enzyme(a1!+,a2,i~off) + Activator(b) <-> Enzyme(a1!+,a2!1,i~off).Activator(b!1) k_on_A*2,k_off_A/2

## SUBSTRATE PROCESSING
# Substrate binds to enzyme (any state,but faster if active)
Enzyme(s,i~off) + Substrate(b) <-> Enzyme(s!1,i~off).Substrate(b!1) k_on_S,k_off_S

# Basal catalysis (inactive or partially active)
Enzyme(s!1,a2,i~off).Substrate(b!1) -> Enzyme(s,a2,i~off) + Product() k_cat_basal

# Enhanced catalysis (both allosteric sites bound)
Enzyme(s!1,a1!+,a2!+,i~off).Substrate(b!1) -> Enzyme(s,a1!+,a2!+,i~off) + Product() k_cat_full

## FEEDBACK REGULATION
# Product mediates negative feedback inhibition (e.g.,metabolic control)
Product() + Enzyme(i~off) -> Enzyme(i~on) k_inh
Enzyme(i~on) -> Enzyme(i~off) k_off_S
end reaction rules

begin actions
generate_network({overwrite=>1})
simulate({method=>"ode",t_end=>5000,n_steps=>300})
end actions
end model
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
id: "allosteric-activation"
name: "allosteric activation"
description: "Binding constants"
contributors:
- name: "Achyudhan"
tags: ["allosteric", "activation", "enzyme", "substrate", "activator", "product"]
category: "signaling"
compatibility:
bng2_compatible: true
simulation_methods: ["ode"]
uses_compartments: false
uses_energy: false
uses_functions: false
nfsim_compatible: false
source:
origin: "ai-generated"
original_format: "bngl"
original_repository: "bionetgen-web-simulator"
source_path: "example-models/allosteric-activation.bngl"
playground:
visible: false
gallery_category: "signaling"
featured: false
difficulty: "advanced"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
# ampk signaling

AMPK signaling: The cellular energy sensor.

## Provenance

This BNGL example was generated in BNG Playground and curated by Achyudhan.
No external literature citation is associated with this model unless one is added manually.

## Compatibility

- BNG2 compatible: yes
- Simulation methods: ode
- Imported from: ai-generated

## Files

- ampk-signaling.bngl

## Tags

ampk, signaling, amp, lkb1, ca, sik, crtc
Loading