Giter Site home page Giter Site logo

medras-mc's Introduction

Medras-MC

This is a Monte Carlo implementation of the MEDRAS (Mechanistic DNA Repair and Survival) model. This model simulates the response of cells to DNA damage following ionising radiation exposure, including DNA repair kinetics, accuracy of repair, and resulting cell fate.

Descriptions of the model and an analytical implementation have been published in (McMahon 2016) and (McMahon 2017). This code presents a Monte Carlo based implementation of the model, which enables the accurate simulation of arbitrary DNA damage distributions, and a more detailed assessment of the resulting DNA alterations which follow from irradiation.

This code is designed to read in DNA damage data stored in the Standard for DNA Damage (Schuemann 2019), which enables the ready exchange of DNA damage data between different simulation codes.

This distribution consists of two components - damagegenerator, which can be used to generate DNA damage distributions based on a simple energy-deposition based model, and repairanalysis, which analyzes repair in input SDD files. These are described briefly below.

damagegenerator

This code implements a simplified model of DNA damage following ionising radiation exposure. This assumes that the average yield of damage within a given volume is proportional to the average energy deposited within that volume, and that these events are randomly distributed. For X-rays this is modelled as simple random damage throughout the nucleus, while for ions this is modelled based on the energy distribution around tracks passing through the nucleus. Damage is flagged as either 'simple' or 'complex' based on a simple probability.

damagegenerator can be used to create a damage distribution as follows:

# Add damagegenerator to path as preferred
from damagegenerator import damageModel

damageModel.basicXandIon()  # Generate an illustrative dataset
damageModel.generateExposure(10.0, 4.58, 1, 1, 10) # Generate event for 10 MeV proton

The full argument list for generateExposure is:

  • Energy (in MeV)
  • LET (in keV/μm)
  • Dose (in Gy)
  • Particle atomic number (Z)
  • Number of exposures to simulate
  • Nucleus radius (μm, default 4.32)
  • Chromosome count (46)
  • Additional Info (string)

These commands will generate SDD files containing the resulting DSB distribution. By default, only the spatial information is meaningful in these data, so the files by default are output in a minimal SDD format, excluding fields which relate to data which are not simulated in this model. Optionally, 'writeSparse' in damageModel.py can be set to false, which will write a fully-detailed SDD file with synthetic data for other features. This may be useful for testing purposes, but should not be taken as biologically meaningful.

repairanalysis

This code implements the MEDRAS repair model for a set of input SDD files. In this approach, the code extracts DSB distributions per exposure from the SDD files, and probabalistically simulates their repair, modelling the stochastic rejoining of different DSB ends. This simulation tracks the yield of misrepaired breaks, and is capable of further sub-analysis including yields of chromosome aberrations, fragment loss, and spatial distributions of misrepair. Several example analyses are available by default.

repairanalysis can be called as follows:

# Add repairanalysis to path as preferred
from repairanalysis import medrasrepair

sddpath = "/path/to/sdd/folder/"
print('Fidelity analysis')
medrasrepair.repairSimulation(sddpath,'Fidelity')

print('\n\nSeparation analysis')
medrasrepair.repairSimulation(sddpath,'Separation')

print('\n\nMisrepair spectrum analysis')
medrasrepair.repairSimulation(sddpath,'Spectrum')

Each of the three options presents a different sub-analysis of the results of repair, summarised below. Options to modify the output of each of these processes are available at the beginning of medrasrepair.py. Common parameters allow for the number of exposures per file to be altered, as well as the number of times the simulation should be repeated for each exposure.

Fidelity

Fidelity (the default approach) summarises the number of breaks, probability of misrepair, and rate of inter-chromosome events when repair is simulated. These will be listed for each individual row as the model proceeds, and then summary data will be presented showing average rates across the whole dataset, as well as data on the kinetics of misrepair. This can either be the time taken to clear DNA DSB repair foci (if addFociDelay is true in medrasrepair.py) or simply the time for physical break rejoining (if addFociDelay is false). The former option provides better agreement with foci data such as γH2AX or 53BP1 analysis, while the latter option provides better agreement with physical measures of DSB repair such as Pulsed Field Gel Electrophoresis.

Separation

Separation summarises the spatial separation between DSBs which misrepair. This is presented as the probability density of misrepair events occurring at different separations through the entire input SDD file, across the entire nucleus volume. This can be useful for identifying regions which provide the greatest contribution to misrepair events.

Spectrum

The misrepair spectrum analysis calculates the types of misrepair event which result from a given exposure. For the requested timepoint (which can be altered by modifying simulationLimit in medrasrepair.py), it calculates the number of residual breaks, the number of misrepaired breaks, 'large' misrepairs (involving movement of more than 3 mega-basepair (MBP) by default), and the number of inter-chromosome misrepairs. It also then summarises the expected chromosome distribution, including the number of chromosomes with 1 or more than 1 chromosome junctions (i.e. inter-chromosome misrepairs), and the number of acentric, normal and multi-centric chromosomes with different structures. Finally, the amount of DNA in small fragments initially and at the final timepoint are presented (in MBP).

In addition, if doPlot is set to true, the model will also generate an mFISH-style plot of the resulting chromosome distribution for each simulated repair, to give a visual illustration of the resulting chromosome alterations.

Requirements

This code is written in python3, and requires the following libraries:

  • numpy
  • scipy
  • openpyxl
  • matplotlib

Update history

21/03/31: Extensive revision to update code and bring into better agreement with analytic model. Key changes:

  • New repair kinetic model, more accurately reproducing structure of analytic model, particularly regarding misrepair range;
  • A number of updates to repair analysis options to enable a number of new analyses to be performed on SDD files;
  • Minor tweaks to SDD writer to clarify code and ensure compliance with SDD format;
  • A number of minor improvements to output clairy

Contacts

For questions/comments/bug reports, please contact stephen.mcmahon (at) qub.ac.uk

References

[McMahon2017] McMahon, S. J., McNamara, A. L., Schuemann, J., Paganetti, H., & Prise, K. M. (2017). A general mechanistic model enables predictions of the biological effectiveness of different qualities of radiation. Scientific Reports, 7(1), 688. http://doi.org/10.1038/s41598-017-10820-1

[McMahon2016] McMahon, S. J., Schuemann, J., Paganetti, H., & Prise, K. M. (2016). Mechanistic Modelling of DNA Repair and Cellular Survival Following Radiation-Induced DNA Damage. Scientific Reports, 6, 33290. http://doi.org/10.1038/srep33290

[Schuemann2019] Schuemann J., McNamara A. L., Warmenhoven J., et al. (55 authors). (2019). A new Standard DNA Damage (SDD) data format. Radiation Research; 191(1):76. PMID: 30407901. PMCID: PMC6407706. https://doi.org/10.1667/RR15209.1

medras-mc's People

Contributors

nicogno avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.