Computational modeling of human vagus nerve stimulation with three-dimensional fascicular morphology.
The 4 matches
- [1] § METHODS › Finite element models of electric currents › Assembled geometry and meshing ↔ scripts/sip_mesher_ds.py, lines 333–369 · score 0.92 · max edge length, minimum edge length, internal change rate, surface change rate, layer elements, max error
- [2] § METHODS › Cable models of nerve fibers ↔ src/neuron/MOD_Files/gaines_internode_FLUTSTIN.mod, lines 1–67 · score 0.55 · McIntyre, internodal, Grill, Richardson, mammalian, NEURON
- [3] § METHODS › Cable models of nerve fibers ↔ src/neuron/MOD_Files/gaines_internode_MYSA.mod, lines 1–67 · score 0.55 · McIntyre, internodal, Grill, Richardson, mammalian, NEURON
- [4] § METHODS › Cable models of nerve fibers ↔ src/neuron/run_controls.py, lines 49–177 · score 0.54 · end excitation, threshold searches, PyFibers, amplitudes, activation
Paper
Loaded from Europe PMC by your browser, not stored by OSCR: doi.org · Europe PMC
The paper is loaded when this pane is shown.
The authors' code
Python · 402 lines · 13 KB · GPL-2.0 · 1 match
- """Created on Tue Sep 7 16:44:25 2021.
- @author: dpm42
- """
- import json
- import math
- import os
- from scanip_api3 import *
- # temp
- # end temp
- sipconfig = App.GetInstance().GetInputValue()
- sipconfig = r'D:\work\threed\config\system/sipmeshconfig.json' if sipconfig == "" else sipconfig
- print(sipconfig)
- with open(sipconfig) as f:
- config = json.load(f)
- masks = ['i', 'p', 'n']
- matpriority = {
- 1: 'endoneurium',
- 2: 'perineurium',
- 3: 'epineurium',
- 4: "conductor",
- 5: "recess",
- 6: "insulator",
- 7: "fill",
- 8: "medium",
- }
- # %% import and generate masks
- doc = App.GetInstance().ImportStackOfImages(
- App.GetInstance().SearchForImages(config['n_imgs']),
- config['um_per_px'] / 1000,
- config['um_per_px'] / 1000,
- config['um_per_slice'] / 1000,
- CommonImportConstraints().SetWindowLevel(0.0, 0.0),
- )
- doc.ImportBackgroundFromStackOfImages(
- App.GetInstance().SearchForImages(config['p_imgs']),
- config['um_per_px'] / 1000,
- config['um_per_px'] / 1000,
- config['um_per_slice'] / 1000,
- CommonImportConstraints().SetWindowLevel(0.0, 0.0),
- )
- doc.ImportBackgroundFromStackOfImages(
- App.GetInstance().SearchForImages(config['i_imgs']),
- config['um_per_px'] / 1000,
- config['um_per_px'] / 1000,
- config['um_per_slice'] / 1000,
- CommonImportConstraints().SetWindowLevel(0.0, 0.0),
- )
- doc.ImportBackgroundFromStackOfImages(
- App.GetInstance().SearchForImages(config['pcap_imgs']),
- config['um_per_px'] / 1000,
- config['um_per_px'] / 1000,
- config['um_per_slice'] / 1000,
- CommonImportConstraints().SetWindowLevel(0.0, 0.0),
- )
- doc.GetBackgroundByName("Stack").SetName('n')
- doc.GetBackgroundByName("Stack (2)").SetName('p')
- doc.GetBackgroundByName("Stack (3)").SetName('i')
- doc.GetBackgroundByName("Stack (4)").SetName('pcap')
- # 2022-02-16 16:47:38 - Combine backgrounds
- doc.ReplaceBackgroundUsingCombineBackgroundsOperation(
- doc.GetBackgroundByName("p"), [doc.GetBackgroundByName("pcap")], doc.GetBackgroundByName("p"), Doc.Maximum
- )
- for mask in masks:
- doc.GetBackgroundByName(mask).Activate()
- App.GetDocument().CopyBackgroundToMask()
- # 2021-10-15 15:24:22 - Flip
- # doc.FlipData(Doc.AxisY) nope
- for position, mask in enumerate(masks):
- # 2021-10-15 15:25:38 - Mask activation
- doc.GetGenericMaskByName(mask).Activate()
- # 2021-10-15 15:25:38 - Movement of mask
- doc.MoveMaskTo(doc.GetActiveGenericMask(), len(masks) - position)
- # 2021-10-15 15:27:55 - Mask activation
- doc.GetGenericMaskByName("n").Activate()
- # 2021-10-15 15:27:56 - Island removal filter
- doc.ApplyIslandRemovalFilter(1000)
- # 2021-10-15 15:29:38 - Fill gaps
- doc.ApplyFillGaps(Doc.MostContactSurface, [doc.GetMaskByName("p"), doc.GetMaskByName("i")], True, 1000)
- # fix for peri too close to epi after end caps
- sep_nerve = config['sep_nerve']
- pixelval = math.floor(config['sep_nerve'] / config['um_per_px'])
- partialval = config['sep_nerve'] / config['um_per_px'] - pixelval
- # 2022-05-18 11:27:33 - Mask activation
- App.GetDocument().GetGenericMaskByName("p").Activate()
- # 2022-05-18 11:27:45 - Mask duplication
- App.GetDocument().GetActiveGenericMask().Duplicate()
- # 2022-05-18 11:27:46 - Mask activation
- App.GetDocument().GetGenericMaskByName("Copy of p").Activate()
- # 2022-05-18 11:28:22 - Morphological filter
- App.GetDocument().ApplyDilateFilter(Doc.TargetMask, pixelval, pixelval, pixelval, partialval)
- # 2022-05-18 11:31:02 - Voxel Boolean
- App.GetDocument().ReplaceMaskUsingBooleanExpression(
- "(n OR \"Copy of p\")",
- App.GetDocument().GetMaskByName("n"),
- App.GetDocument().GetSliceIndices(Doc.OrientationXY),
- Doc.OrientationXY,
- )
- # 2022-05-18 11:32:04 - Mask activation
- App.GetDocument().GetGenericMaskByName("Copy of p").Activate()
- # 2022-05-18 11:32:05 - Mask removal
- App.GetDocument().RemoveMask(App.GetDocument().GetMaskByName("Copy of p"))
- # Get the dimensions of the image volume
- dims = doc.GetDimensions()
- # Store the image-to-global transformation matrix
- i2g_mat = doc.GetImageToGlobalTransformationMatrix()
- # Define a temporary matrix defining the image-to-new-origin
- temp_mat = Matrix.FromTranslation(-dims.GetPhysicalSizeX() / 2, -dims.GetPhysicalSizeY() / 2, 0)
- # Temporarily set the image-to-global, generate and export the mesh
- doc.SetImageToGlobalTransformationMatrix(temp_mat)
- # 2021-09-10 12:57:40 - Import STL file
- path = config["stl_path"]
- with open(path + '/matmap.json') as f:
- matmap = json.load(f)
- matmap["i"] = "endoneurium"
- matmap["p"] = "perineurium"
- matmap["n"] = "epineurium"
- # set material priority
- mat_ind = len(matmap)
- for key in matpriority:
- for k, v in matmap.items():
- if v == matpriority[key]:
- matmap[k] = {"position": mat_ind, "material": v}
- mat_ind -= 1
- stl_files = [x for x in os.listdir(path) if x.endswith('.stl')]
- fromstl = [key for key in matmap.keys() if matmap[key]['material'] in ['fill', 'medium']]
- # get surfaces
- use_nastran = config["mesh"].get("use_nastran", False)
- if use_nastran:
- # 2023-05-11 12:12:16 - Import volume mesh file
- App.GetDocument().ImportVolumeMeshFromFile(path + "/alldomain.nas", 0.001, False)
- # 2023-05-11 12:12:24 - Generation of surface(s) from element set(s)
- App.GetDocument().CopyElementSetsToSurfaces(
- App.GetDocument().GetVolumeMeshByName("alldomain").GetElementSets(), True
- )
- # 2023-05-11 12:16:00 - Element set visibility modification
- App.GetDocument().ToggleElementSetVisibility(App.GetDocument().GetVolumeMeshByName("alldomain").GetElementSets())
- # 2023-05-11 12:17:00 - Volume mesh removal
- App.GetDocument().RemoveVolumeMesh(App.GetDocument().GetVolumeMeshByName("alldomain"))
- # get dommap
- with open(path + '/dommap.json') as f:
- dommap = json.load(f)
- # Rename elements to correct surface names
- for setname, setnums in dommap.items():
- for setnum in setnums:
- App.GetDocument().GetSurfaceByName(f"Element set {setnum} (from mesh)").SetName(setname)
- # 2023-05-15 10:48:28 - Surface object removal (removes medium)
- App.GetDocument().RemoveSurface(App.GetDocument().GetSurfaceByName("Element set 1 (from mesh)"))
- for name in fromstl:
- try:
- # 2023-05-15 10:48:28 - Surface object removal (removes fill)
- App.GetDocument().RemoveSurface(App.GetDocument().GetSurfaceByName(name))
- except:
- pass
- doc.ImportSurfaceFromStlFile(path + '/' + name + '.stl', True, 0.001, False)
- else:
- for file in stl_files:
- doc.ImportSurfaceFromStlFile(path + '/' + file, True, 0.001, False)
- # %% new fill code
- # 2021-12-11 13:30:06 - Pad
- doc.PadData(1000, 1000, 1000, 1000, 0, 0)
- m2s = [key for key in matmap.keys() if matmap[key]['material'] == 'fill']
- # 2021-12-11 13:30:20 - Generation of mask(s) from surface object(s)
- doc.CopySurfacesToMasks([doc.GetSurfaceByName(name) for name in m2s], doc.AccurateManifold, False)
- doc.ShrinkWrapData(Doc.TargetAllMasks, 10, 10, 10, 10, 10, 10)
- # 2021-12-11 13:30:20 - Generation of mask(s) from surface object(s)
- doc.RemoveSurfaces([doc.GetSurfaceByName(name) for name in m2s], False)
- for name in m2s:
- doc.GetGenericMaskByName(name + " (from surface)").SetName(name)
- # %% end fill code
- # %% begin remesh code
- # 2022-05-26 10:01:04 - Remesh surface object
- doc.GetSurfaceByName("medium").Remesh(0.5)
- surfaces = [os.path.splitext(x)[0] for x in stl_files if os.path.splitext(x)[0] not in m2s]
- remsurfs = [s for s in surfaces if s != "medium"]
- print(remsurfs)
- # 2022-06-09 17:10:51 - Surface model creation
- remesh_model = App.GetDocument().CreateSurfaceModel("SurfModel")
- # 2022-06-09 17:10:58 - Objects mode activation
- App.GetDocument().EnableObjectsMode()
- # 2022-06-09 17:11:02 - Part creation
- remesh_model.AddSurfaces([App.GetDocument().GetSurfaceByName(x) for x in remsurfs])
- # 2022-06-09 17:11:03 - Models mode activation
- App.GetDocument().EnableModelsMode()
- # 2022-06-09 17:11:27 - Model activation
- App.GetDocument().SetActiveModel(remesh_model)
- # 2022-06-09 17:11:42 - Model configuration modification
- remesh_model.SetExportType(Model.StlFeCfdCad)
- # 2022-06-09 17:12:12 - Surface generation
- App.GetDocument().GenerateMesh()
- # 2022-06-09 17:15:06 - Conversion of meshed part(s) to surface object(s)
- remesh_model.CreateSurfacesFromParts([remesh_model.GetPartByName(x) for x in remsurfs])
- # 2022-06-09 17:15:09 - Objects mode activation
- App.GetDocument().EnableObjectsMode()
- for surfname in remsurfs:
- # 2022-06-09 17:15:21 - Rename surface object
- App.GetDocument().GetSurfaceByName(surfname).SetName(surfname + "_imported")
- # 2022-06-09 17:15:27 - Rename surface object
- App.GetDocument().GetSurfaceByName(surfname + " (from mesh)").SetName(surfname)
- # %% end remesh code
- # 2021-10-15 15:35:29 - FE model creation
- femod = doc.CreateFeModel("Model 1")
- # 2021-10-15 15:35:35 - Objects mode activation
- doc.EnableObjectsMode()
- # 2021-10-15 15:35:38 - Part creation
- doc.GetModelByName("Model 1").AddMasks(
- [doc.GetGenericMaskByName("n"), doc.GetGenericMaskByName("p"), doc.GetGenericMaskByName("i")]
- )
- # 2021-12-11 13:48:26 - Part creation
- doc.GetModelByName("Model 1").AddMasks([doc.GetGenericMaskByName(name) for name in m2s])
- # 2021-10-15 15:35:38 - Models mode activation
- doc.EnableModelsMode()
- # 2021-10-15 15:35:40 - Objects mode activation
- doc.EnableObjectsMode()
- # 2021-10-15 15:35:49 - Part creation
- femod.AddSurfaces([doc.GetSurfaceByName(surf) for surf in surfaces])
- # 2021-10-15 15:35:49 - Models mode activation
- doc.EnableModelsMode()
- # 2021-10-15 15:36:27 - Model configuration modification
- femod.SetUseSmartMaskSmoothing(True)
- # 2022-07-15 17:47:53 - Model configuration modification
- femod.SetSnapSurfacePartsToModelBounds(True)
- # 2022-07-15 17:47:58 - Model configuration modification\
- femod.SetNumSmartMaskSmoothingIterations(100)
- # 2021-10-15 15:36:30 - Model configuration modification
- femod.SetExportUnits(Model.MicronsUnits)
- # 2021-10-15 15:37:45 - Contact to boundary creation
- femod.AddSurfaceContact(femod.GetPartByName("i"), femod.GetPartByName("medium"))
- # 2021-10-15 15:38:14 - Model configuration modification
- femod.SetExportType(Model.ComsolNasVolume)
- # temp block
- # 2022-07-15 17:57:09 - Model configuration modification
- femod.SetUseSmallestElementImprovement(True)
- # 2022-07-15 18:50:44 - Model configuration modification
- femod.SetAdditionalMeshQualityImprovementMaximumOffSurfaceDistance(0.01)
- # 2022-07-15 17:57:29 - Model configuration modification
- femod.SetSmallestElementImprovementCharacteristicLengthTarget(config['mesh']["max_edge_length"])
- # 2022-07-15 17:57:31 - Model configuration modification
- femod.SetUseLimitMaximumDisplacement(True)
- # 2022-07-15 17:57:37 - Model configuration modification
- femod.SetMaximumDisplacementRatio(0.2)
- # end temp block
- for ob, ob_info in matmap.items():
- # 2021-10-15 15:38:45 - Model configuration modification
- femod.SetEditAdvancedParametersManuallyOnPart(femod.GetPartByName(ob), True)
- if ob_info["material"] == "conductor":
- # 2021-10-15 15:38:52 - Model configuration modification
- femod.SetTargetMinimumEdgeLengthOnPart(femod.GetPartByName(ob), 0.0005)
- else:
- # 2021-10-15 15:38:52 - Model configuration modification
- femod.SetTargetMinimumEdgeLengthOnPart(femod.GetPartByName(ob), config['mesh']['min_edge_length'])
- # 2021-10-15 15:38:55 - Model configuration modification`
- femod.SetTargetMaximumErrorOnPart(femod.GetPartByName(ob), config['mesh']['max_error'])
- # 2021-10-15 15:39:00 - Model configuration modification
- if ob_info["material"] == "conductor":
- femod.SetMaximumEdgeLengthOnPart(femod.GetPartByName(ob), 0.01)
- else:
- femod.SetMaximumEdgeLengthOnPart(femod.GetPartByName(ob), config['mesh']["max_edge_length"])
- # 2021-10-15 15:39:13 - Model configuration modification
- femod.SetInternalChangeRateOnPart(femod.GetPartByName(ob), config['mesh']["internal_change_rate"])
- femod.SetSurfaceChangeRateOnPart(doc.GetActiveModel().GetPartByName(ob), config['mesh']["surface_change_rate"])
- femod.SetTargetNumberElementsAcrossLayerOnPart(
- doc.GetActiveModel().GetPartByName(ob), config['mesh']["n_layer_elements"]
- )
- femod.SetSmoothAgainstBackground(config['mesh']["smooth_against_background"])
- try:
- femod.GetPartsContainer().GetPartByName(ob).MoveTo(ob_info["position"])
- except Exception:
- pass
- femod.GetPartByName(ob).SetMaterial(PlaceholderMaterial(ob_info["material"]))
- # 2022-04-26 16:26:12 - Model configuration modification
- if config['mesh'].get('second_order') is True:
- femod.SetHigherOrder(True)
- femod.SetCurvedEdges(True)
- else:
- print('Warning: Using first order elements')
- # required twice
- for ob, ob_info in matmap.items():
- try:
- femod.GetPartsContainer().GetPartByName(ob).MoveTo(ob_info["position"])
- except Exception:
- pass
- doc.GetGenericMaskByName("p").Activate()
- # 2022-06-13 12:32:23 - Morphological filter
- App.GetDocument().ApplyOpenFilter(Doc.TargetMask, 2, 2, 0, 0.0)
- # 2021-11-02 12:40:33 - Isolated cavity and island removal
- doc.RemoveIsolatedCavitiesAndIslands([doc.GetMaskByName("n"), doc.GetMaskByName("p"), doc.GetMaskByName("i")], 101, 101)
- doc.ShrinkWrapData(Doc.TargetAllMasks, 10, 10, 10, 10, 10, 10)
- doc.SaveAs(config['outpath'] + '/mesh_debug.sip')
- if config["run_type"] == "cluster":
- # 2021-10-26 14:00:20 - Project save
- doc.GenerateMesh()
- # 2021-12-17 08:44:39 - COMSOL export
- doc.ExportComsolNasVolume(config["outpath"] + '/mesh.nas', False)
- # 2021-10-26 14:00:20 - Project save
- doc.SaveAs(config['outpath'] + '/mesh.sip')
sip_mesher_ds.py at commit 3417be7, under GPL-2.0 · at the source
Overview
- Department of Biomedical Engineering, Duke University, Durham, North Carolina 27708, USA
- Department of Biomedical Engineering, Case Western Reserve University, Cleveland, Ohio 44106, USA
- Department of Electrical and Computer Engineering, Duke University, Durham, North Carolina 27708, USA
- Department of Neurosurgery, Duke University School of Medicine, Durham, North Carolina 27708, USA
- Department of Neurobiology, Duke University School of Medicine, Durham, North Carolina 27708, USA
Abstract
Implanted vagus nerve stimulation is FDA-approved to treat epilepsy, depression, and stroke sequelae and is under development for other disorders such as heart failure and rheumatoid arthritis. Anatomically realistic computational models enable the design of electrodes and stimulation parameters that activate nerve fibers that mediate therapeutic responses, and avoid activating fibers that cause side effects. Conventional modeling techniques assume constant longitudinal morphology, extruding a single cross section to define the three-dimensional nerve geometry. However, recent imaging data showed that human vagus nerves have extensive fascicle splitting and merging along their length. Therefore, we developed a pipeline to simulate true three-dimensional (true-3D) models of peripheral nerve stimulation from segmentations of micro-computed tomography imaging. We implemented models of n = 4 human vagus nerves and systematically evaluated extrusion vs true-3D model responses to electrical stimulation across population dose-response relationships, fiber-specific thresholds, recruitment order, and spatial selectivity. Despite the complex morphology of the human vagus nerve, extrusion models replicated the true-3D neural responses if: (1) the nerve morphology was deformed to a circular cross section, as occurs with chronic cuff implants, and (2) the extruded cross section was centered under the depolarizing electrode contact. Our pipeline provides a foundation for advanced modeling of peripheral nerve stimulation and the design of more selective stimulation therapies.
Reproduced under the paper's license (CC BY), from the paper cited above.
Repositories
Its files are read in the Code ↔ Paper reader above, with 4 matches between paragraphs and lines of code.
wmglab-duke/3D_nerve_pipeline
3417be7b0869886e4939e8635230944c6d3db1d7, 19 March 2026Availability: 1 check, the latest on 30 September 2026: the link answers
- 30 September 2026: the link answers
100 files
- config/
system/ , Python, 1 line_version.py - config/
system/ , Shell, 25 linesinstallation/ install.sh - docs/
source/ , Python, 117 linesconf.py - examples/
analysis/ , Python, 30 linesap_loctime.py - examples/
analysis/ , Python, 89 linesconvergence_analysis.py - examples/
analysis/ , Python, 362 linescustom_fiber_dose_respon se_curve.py - examples/
analysis/ , Python, 36 linesdose_response_curve.py - examples/
analysis/ , Python, 34 linesexcel_summary.py - examples/
analysis/ , Python, 257 linesgenerate_templates.py - examples/
analysis/ , Python, 37 linesget_thresholds.py - examples/
analysis/ , Python, 47 linesplot_CNAP.py - examples/
analysis/ , Python, 47 linesplot_SFAPs.py - examples/
analysis/ , Python, 55 linesplot_fiberset.py - examples/
analysis/ , Python, 57 linesplot_sample.py - examples/
analysis/ , Python, 64 linesplot_ve.py - examples/
analysis/ , Python, 46 linesplot_ve_differential.py - examples/
analysis/ , Python, 106 linesplot_video.py - examples/
analysis/ , Python, 61 linesplot_waveform.py - examples/
analysis/ , Python, 37 linesthreshold_comparison_bar chart.py - examples/
analysis/ , Python, 37 linesthreshold_comparison_box plot.py - examples/
analysis/ , Python, 37 linesthreshold_comparison_swa rmplot.py - examples/
analysis/ , Python, 37 linesthreshold_heatmap.py - examples/
analysis/ , Python, 47 linesthreshold_heatmap_facet. py - scripts/
3D_pipeline_ds.py , Python, 1,526 lines - scripts/
__init__.py , Python, 1 line - scripts/
build_dataset.py , Python, 905 lines - scripts/
clean_samples.py , Python, 104 lines - scripts/
cull_vmtime.py , Python, 65 lines - scripts/
edit_config.py , Python, 255 lines - scripts/
env_setup.py , Python, 49 lines - scripts/
import_n_sims.py , Python, 75 lines - scripts/
install.py , Python, 79 lines - scripts/
mock_morphology_generato , Python, 43 linesr.py - scripts/
pipeline.py , Python, 119 lines - scripts/
remap_3d_to_2d_nsim.py , Python, 34 lines - scripts/
sip_deformer_p.py , Python, 112 lines - scripts/
sip_mesher_ds.py , Python, 402 lines, 1 match - scripts/
sip_postdeform.py , Python, 143 lines - scripts/
sip_pp_destep.py , Python, 111 lines - scripts/
tidy_samples.py , Python, 118 lines - src/
__init__.py , Python, 8 lines - src/
comsol_java_api/ , Python, 87 linessrc/ extract_potentials.py - src/
comsol_java_api/ , Python, 36 linessrc/ make_fiber.py - src/
comsol_java_api/ , Python, 31 linessrc/ make_video.py - src/
comsol_java_api/ , Java, 142 linessrc/ model/ IdentifierManager.java - src/
comsol_java_api/ , Java, 40 linessrc/ model/ JSONReader.java - src/
comsol_java_api/ , Java, 28 linessrc/ model/ JSONio.java - src/
comsol_java_api/ , Java, 265 linessrc/ model/ PotentialsExtractor.java - src/
core/ , Python, 41 lines__init__.py - src/
core/ , Python, 314 linesdeformable.py - src/
core/ , Python, 418 linesfascicle.py - src/
core/ , Python, 1,340 linesfiberset.py - src/
core/ , Python, 1 linehocwriter.py - src/
core/ , Python, 233 linesmap.py - src/
core/ , Python, 488 linesmock_sample.py - src/
core/ , Python, 549 linesmodel.py - src/
core/ , Python, 33 linesnerve.py - src/
core/ , Python, 1,198 linesplotter.py - src/
core/ , Python, 1,445 linesquery.py - src/
core/ , Python, 871 linessample.py - src/
core/ , Python, 995 linessimulation.py - src/
core/ , Python, 667 linesslide.py - src/
core/ , Python, 745 linestrace.py - src/
core/ , Python, 505 lineswaveform.py - src/
model/ , Java, 152 linesIdentifierManager.java - src/
model/ , Java, 29 linesJSONio.java - src/
model/ , Java, 216 linesModelClearer.java - src/
model/ , Java, 191 linesModelSearcher.java - src/
model/ , Java, 2,495 linesModelWrapper.java - src/
model/ , Java, 4,196 linesPart.java - src/
neuron/ , NEURON, 32 linesHOC_Files/ Saving_APLocTime_percthr esh.hoc - src/
neuron/ , NEURON, 1 lineHOC_Files/ Wrapper.hoc - src/
neuron/ , Python, 1 line__init__.py - src/
neuron/ , Python, 285 lines, 1 matchrun_controls.py - src/
neuron/ , Python, 320 linessaving.py - src/
neuron/ , Python, 751 linessubmit.py - src/
runner.py , Python, 602 lines - src/
runtools/ , Python, 7 lines__init__.py - src/
runtools/ , Python, 105 lineslist_util.py - src/
runtools/ , Python, 204 linesparse_args.py - src/
runtools/ , Python, 36 lineswelcome.py - src/
threedmodel/ , Java, 148 linesIdentifierManager.java - src/
threedmodel/ , Java, 34 linesJSONio.java - src/
threedmodel/ , Java, 223 linesModelSearcher.java - src/
threedmodel/ , Java, 2,183 linesModelWrapper.java - src/
threedmodel/ , Java, 4,204 linesPart.java - src/
utilities/ , Python, 1 line__init__.py - src/
utilities/ , Python, 388 linesanalyze_morphology.py - src/
utilities/ , Python, 55 linesdestep_postprocess.py - src/
utilities/ , Python, 306 linesthreedclass.py - src/
utils/ , Python, 15 lines__init__.py - src/
utils/ , Python, 208 linesconfigurable.py - src/
utils/ , Python, 382 linesenums.py - src/
utils/ , Python, 46 lineserrors.py - src/
utils/ , Python, 23 linessaveable.py - tests/
__init__.py , Python, 11 lines - tests/
test_trace.py , Python, 44 lines - tests/
test_utils.py , Python, 36 lines - LICENSE, License, 362 lines
- README.md, Text, 57 lines
Zenodo 8298703
Availability: 1 check, the latest on 30 September 2026: the link answers (HTTP 200)
- 30 September 2026: the link answers (HTTP 200)
150 files
- config/
system/ , Python, 1 line_version.py - config/
system/ , Shell, 25 linesinstallation/ install.sh - docs/
source/ , Python, 115 linesconf.py - examples/
analysis/ , Python, 31 linesap_loctime.py - examples/
analysis/ , Python, 94 linesconvergence_analysis.py - examples/
analysis/ , Python, 33 linesdose_response_curve.py - examples/
analysis/ , Python, 36 linesexcel_summary.py - examples/
analysis/ , Python, 41 linesget_thresholds.py - examples/
analysis/ , Python, 55 linesplot_fiberset.py - examples/
analysis/ , Python, 57 linesplot_sample.py - examples/
analysis/ , Python, 64 linesplot_ve.py - examples/
analysis/ , Python, 48 linesplot_ve_differential.py - examples/
analysis/ , Python, 106 linesplot_video.py - examples/
analysis/ , Python, 61 linesplot_waveform.py - examples/
analysis/ , Python, 37 linesthreshold_comparison_bar chart.py - examples/
analysis/ , Python, 37 linesthreshold_comparison_box plot.py - examples/
analysis/ , Python, 37 linesthreshold_comparison_swa rmplot.py - examples/
analysis/ , Python, 35 linesthreshold_heatmap.py - examples/
analysis/ , Python, 47 linesthreshold_heatmap_facet. py - scripts/
__init__.py , Python, 1 line - scripts/
build_dataset.py , Python, 842 lines - scripts/
clean_samples.py , Python, 104 lines - scripts/
env_setup.py , Python, 50 lines - scripts/
import_n_sims.py , Python, 72 lines - scripts/
install.py , Python, 79 lines - scripts/
mock_morphology_generato , Python, 37 linesr.py - scripts/
pipeline.py , Python, 99 lines - scripts/
tidy_samples.py , Python, 111 lines - src/
__init__.py , Python, 8 lines - src/
core/ , Python, 43 lines__init__.py - src/
core/ , Python, 339 linesdeformable.py - src/
core/ , Python, 398 linesfascicle.py - src/
core/ , Python, 929 linesfiberset.py - src/
core/ , Python, 426 lineshocwriter.py - src/
core/ , Python, 236 linesmap.py - src/
core/ , Python, 504 linesmock_sample.py - src/
core/ , Python, 494 linesmodel.py - src/
core/ , Python, 33 linesnerve.py - src/
core/ , Python, 454 linesplotter.py - src/
core/ , Python, 618 linesquery.py - src/
core/ , Python, 865 linessample.py - src/
core/ , Python, 853 linessimulation.py - src/
core/ , Python, 516 linesslide.py - src/
core/ , Python, 778 linestrace.py - src/
core/ , Python, 513 lineswaveform.py - src/
model/ , Java, 152 linesIdentifierManager.java - src/
model/ , Java, 29 linesJSONio.java - src/
model/ , Java, 216 linesModelClearer.java - src/
model/ , Java, 191 linesModelSearcher.java - src/
model/ , Java, 2,374 linesModelWrapper.java - src/
model/ , Java, 4,188 linesPart.java - src/
neuron/ , NEURON, 29 linesHOC_Files/ CreateAxon_CFiber.hoc - src/
neuron/ , NEURON, 292 linesHOC_Files/ CreateAxon_Myel.hoc - src/
neuron/ , NEURON, 45 linesHOC_Files/ ExtracellularStim_Space. hoc - src/
neuron/ , NEURON, 53 linesHOC_Files/ ExtracellularStim_Time.h oc - src/
neuron/ , NEURON, 159 linesHOC_Files/ FindThresh.hoc - src/
neuron/ , NEURON, 68 linesHOC_Files/ GeometryBuilder.hoc - src/
neuron/ , NEURON, 38 linesHOC_Files/ IntracellularStim.hoc - src/
neuron/ , NEURON, 13 linesHOC_Files/ ObjectArray_1d.hoc - src/
neuron/ , NEURON, 136 linesHOC_Files/ Recording.hoc - src/
neuron/ , NEURON, 180 linesHOC_Files/ RunSim.hoc - src/
neuron/ , NEURON, 52 linesHOC_Files/ SaveSpatialDist.hoc - src/
neuron/ , NEURON, 51 linesHOC_Files/ SaveTimeCourse.hoc - src/
neuron/ , NEURON, 85 linesHOC_Files/ Saving.hoc - src/
neuron/ , NEURON, 37 linesHOC_Files/ Saving_APLocTime.hoc - src/
neuron/ , NEURON, 34 linesHOC_Files/ Saving_Activation.hoc - src/
neuron/ , NEURON, 55 linesHOC_Files/ Saving_Ap_end_times.hoc - src/
neuron/ , NEURON, 34 linesHOC_Files/ Saving_Runtime.hoc - src/
neuron/ , NEURON, 34 linesHOC_Files/ Saving_Thresh.hoc - src/
neuron/ , NEURON, 268 linesHOC_Files/ Wrapper.hoc - src/
neuron/ , NEURON, 60 linesHOC_Files/ balanceTigerholm.hoc - src/
neuron/ , NEURON, 213 linesHOC_Files/ cFiberBuilder.hoc - src/
neuron/ , NEURON, 247 linesMOD_Files/ AXNODE_myel.mod - src/
neuron/ , NEURON, 247 linesMOD_Files/ AXNODE_unmyel.mod - src/
neuron/ , NEURON, 57 linesMOD_Files/ CaPump.mod - src/
neuron/ , NEURON, 107 linesMOD_Files/ DNav18.mod - src/
neuron/ , NEURON, 84 linesMOD_Files/ KA14.mod - src/
neuron/ , NEURON, 80 linesMOD_Files/ KA34.mod - src/
neuron/ , NEURON, 81 linesMOD_Files/ NaCaPump.mod - src/
neuron/ , NEURON, 83 linesMOD_Files/ NaV7.mod - src/
neuron/ , NEURON, 86 linesMOD_Files/ NaV9.mod - src/
neuron/ , NEURON, 84 linesMOD_Files/ Nakpump.mod - src/
neuron/ , NEURON, 66 linesMOD_Files/ NakpumpSchild.mod - src/
neuron/ , NEURON, 118 linesMOD_Files/ RattayAberham.mod - src/
neuron/ , NEURON, 73 linesMOD_Files/ SK.mod - src/
neuron/ , NEURON, 55 linesMOD_Files/ caext.mod - src/
neuron/ , NEURON, 79 linesMOD_Files/ caextscale.mod - src/
neuron/ , NEURON, 52 linesMOD_Files/ caextscale_node.mod - src/
neuron/ , NEURON, 51 linesMOD_Files/ caextscale_nonnode.mod - src/
neuron/ , NEURON, 45 linesMOD_Files/ caexttest.mod - src/
neuron/ , NEURON, 64 linesMOD_Files/ caint.mod - src/
neuron/ , NEURON, 76 linesMOD_Files/ caintscale.mod - src/
neuron/ , NEURON, 70 linesMOD_Files/ cainttest.mod - src/
neuron/ , NEURON, 87 linesMOD_Files/ cal.mod - src/
neuron/ , NEURON, 155 linesMOD_Files/ can.mod - src/
neuron/ , NEURON, 128 linesMOD_Files/ cat.mod - src/
neuron/ , NEURON, 34 linesMOD_Files/ extrapump.mod - src/
neuron/ , NEURON, 70 linesMOD_Files/ fpump.mod - src/
neuron/ , NEURON, 185 lines, 1 matchMOD_Files/ gaines_internode_FLUTSTI N.mod - src/
neuron/ , NEURON, 185 lines, 1 matchMOD_Files/ gaines_internode_MYSA.mo d - src/
neuron/ , NEURON, 279 linesMOD_Files/ gaines_node.mod - src/
neuron/ , NEURON, 93 linesMOD_Files/ h.mod - src/
neuron/ , NEURON, 76 linesMOD_Files/ im.mod - src/
neuron/ , NEURON, 54 linesMOD_Files/ k_ion_dynamics.mod - src/
neuron/ , NEURON, 114 linesMOD_Files/ ka.mod - src/
neuron/ , NEURON, 110 linesMOD_Files/ kca.mod - src/
neuron/ , NEURON, 109 linesMOD_Files/ kd.mod - src/
neuron/ , NEURON, 91 linesMOD_Files/ kdr.mod - src/
neuron/ , NEURON, 67 linesMOD_Files/ kdrTiger.mod - src/
neuron/ , NEURON, 111 linesMOD_Files/ kds.mod - src/
neuron/ , NEURON, 29 linesMOD_Files/ kext.mod - src/
neuron/ , NEURON, 54 linesMOD_Files/ kexternal.mod - src/
neuron/ , NEURON, 81 linesMOD_Files/ kf.mod - src/
neuron/ , NEURON, 54 linesMOD_Files/ kld_node.mod - src/
neuron/ , NEURON, 53 linesMOD_Files/ kld_nonnode.mod - src/
neuron/ , NEURON, 50 linesMOD_Files/ kna.mod - src/
neuron/ , NEURON, 76 linesMOD_Files/ ks.mod - src/
neuron/ , NEURON, 46 linesMOD_Files/ leak.mod - src/
neuron/ , NEURON, 57 linesMOD_Files/ leakSchild.mod - src/
neuron/ , NEURON, 55 linesMOD_Files/ na_ion_dynamics.mod - src/
neuron/ , NEURON, 55 linesMOD_Files/ nadifl.mod - src/
neuron/ , NEURON, 28 linesMOD_Files/ naext.mod - src/
neuron/ , NEURON, 142 linesMOD_Files/ naf.mod - src/
neuron/ , NEURON, 115 linesMOD_Files/ naf97.mod - src/
neuron/ , NEURON, 115 linesMOD_Files/ naf97mean.mod - src/
neuron/ , NEURON, 92 linesMOD_Files/ nahh.mod - src/
neuron/ , NEURON, 54 linesMOD_Files/ nald_node.mod - src/
neuron/ , NEURON, 52 linesMOD_Files/ nald_nonnode.mod - src/
neuron/ , NEURON, 114 linesMOD_Files/ nas.mod - src/
neuron/ , NEURON, 112 linesMOD_Files/ nas97.mod - src/
neuron/ , NEURON, 112 linesMOD_Files/ nas97mean.mod - src/
neuron/ , NEURON, 131 linesMOD_Files/ nattxs.mod - src/
neuron/ , NEURON, 142 linesMOD_Files/ nav1p9.mod - src/
neuron/ , NEURON, 58 linesMOD_Files/ train.mod - src/
neuron/ , Python, 855 linessubmit.py - src/
runner.py , Python, 533 lines - src/
runtools/ , Python, 7 lines__init__.py - src/
runtools/ , Python, 103 lineslist_util.py - src/
runtools/ , Python, 185 linesparse_args.py - src/
runtools/ , Python, 36 lineswelcome.py - src/
utils/ , Python, 15 lines__init__.py - src/
utils/ , Python, 206 linesconfigurable.py - src/
utils/ , Python, 374 linesenums.py - src/
utils/ , Python, 58 lineserrors.py - src/
utils/ , Python, 23 linessaveable.py - tests/
__init__.py , Python, 11 lines - tests/
test_trace.py , Python, 45 lines - tests/
test_utils.py , Python, 37 lines - LICENSE, License, 362 lines
- README.md, Text, 43 lines
Zenodo 18475038
Availability: 1 check, the latest on 30 September 2026: the link answers (HTTP 200)
- 30 September 2026: the link answers (HTTP 200)
wmglab-duke/ascent
2e513cd06e9f986ea3b2d56288ac6b9e362c8706, 18 August 2026Availability: 1 check, the latest on 30 September 2026: the link answers
- 30 September 2026: the link answers
79 files
- config/
system/ , Python, 1 line_version.py - config/
system/ , Shell, 26 linesinstallation/ install.sh - docs/
source/ , Python, 117 linesconf.py - examples/
analysis/ , Python, 31 linesap_loctime.py - examples/
analysis/ , Python, 90 linesconvergence_analysis.py - examples/
analysis/ , Python, 362 linescustom_fiber_dose_respon se_curve.py - examples/
analysis/ , Python, 36 linesdose_response_curve.py - examples/
analysis/ , Python, 34 linesexcel_summary.py - examples/
analysis/ , Python, 257 linesgenerate_templates.py - examples/
analysis/ , Python, 37 linesget_thresholds.py - examples/
analysis/ , Python, 47 linesplot_CNAP.py - examples/
analysis/ , Python, 47 linesplot_SFAPs.py - examples/
analysis/ , Python, 56 linesplot_fiberset.py - examples/
analysis/ , Python, 58 linesplot_sample.py - examples/
analysis/ , Python, 65 linesplot_ve.py - examples/
analysis/ , Python, 46 linesplot_ve_differential.py - examples/
analysis/ , Python, 106 linesplot_video.py - examples/
analysis/ , Python, 62 linesplot_waveform.py - examples/
analysis/ , Python, 38 linesthreshold_comparison_bar chart.py - examples/
analysis/ , Python, 38 linesthreshold_comparison_box plot.py - examples/
analysis/ , Python, 38 linesthreshold_comparison_swa rmplot.py - examples/
analysis/ , Python, 38 linesthreshold_heatmap.py - examples/
analysis/ , Python, 48 linesthreshold_heatmap_facet. py - scripts/
__init__.py , Python, 1 line - scripts/
build_dataset.py , Python, 895 lines - scripts/
build_from_input.py , Python, 321 lines - scripts/
clean_samples.py , Python, 104 lines - scripts/
compare.py , Python, 279 lines - scripts/
env_setup.py , Python, 49 lines - scripts/
import_n_sims.py , Python, 79 lines - scripts/
install.py , Python, 79 lines - scripts/
mock_morphology_generato , Python, 43 linesr.py - scripts/
pipeline.py , Python, 196 lines - scripts/
tidy_samples.py , Python, 117 lines - src/
__init__.py , Python, 8 lines - src/
core/ , Python, 41 lines__init__.py - src/
core/ , Python, 316 linesdeformable.py - src/
core/ , Python, 420 linesfascicle.py - src/
core/ , Python, 1,174 linesfiberset.py - src/
core/ , Python, 234 linesmap.py - src/
core/ , Python, 489 linesmock_sample.py - src/
core/ , Python, 572 linesmodel.py - src/
core/ , Python, 33 linesnerve.py - src/
core/ , Python, 490 linesplotter.py - src/
core/ , Python, 855 linesquery.py - src/
core/ , Python, 1,006 linessample.py - src/
core/ , Python, 963 linessimulation.py - src/
core/ , Python, 613 linesslide.py - src/
core/ , Python, 810 linestrace.py - src/
core/ , Python, 506 lineswaveform.py - src/
model/ , Java, 152 linesIdentifierManager.java - src/
model/ , Java, 29 linesJSONio.java - src/
model/ , Java, 216 linesModelClearer.java - src/
model/ , Java, 191 linesModelSearcher.java - src/
model/ , Java, 2,634 linesModelWrapper.java - src/
model/ , Java, 4,199 linesPart.java - src/
neuron/ , Python, 1 line__init__.py - src/
neuron/ , Python, 305 linesrun_controls.py - src/
neuron/ , Python, 322 linessaving.py - src/
neuron/ , Python, 751 linessubmit.py - src/
runner.py , Python, 565 lines - src/
runtools/ , Python, 7 lines__init__.py - src/
runtools/ , Python, 105 lineslist_util.py - src/
runtools/ , Python, 232 linesparse_args.py - src/
runtools/ , Python, 36 lineswelcome.py - src/
utils/ , Python, 15 lines__init__.py - src/
utils/ , Python, 204 linesconfigurable.py - src/
utils/ , Python, 382 linesenums.py - src/
utils/ , Python, 46 lineserrors.py - src/
utils/ , Python, 23 linessaveable.py - tests/
__init__.py , Python, 11 lines - tests/
convert_configs.py , Python, 104 lines - tests/
integration.py , Python, 453 lines - tests/
integration_tests/ , NEURON, 1 line2147483000_tutorial-v140 / models/ 2147483000/ sims/ 2147483000/ n_sims/ 0/ blank.hoc - tests/
integration_tests/ , NEURON, 87 lines2147483000_tutorial-v140 / models/ 2147483000/ sims/ 2147483000/ n_sims/ 0/ launch.hoc - tests/
test_trace.py , Python, 45 lines - tests/
test_utils.py , Python, 37 lines - LICENSE, License, 362 lines
- README.md, Text, 52 lines
The paper's code and data availability statement is in the Data section.
Tracing map
Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.
What the map holds:
- 4 repositories of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
- 323 scripts, each with its path and the digest of its content;
- 4 matches between paragraphs of the paper and lines of the code (method lexical-v1);
- neither the text of the paper nor the code itself.
Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.
Data
No dataset and no data link were found in the paper.
Data availability
The computational pipeline code that underlies the findings of this study is openly available from GitHub at https://
Reproduced under the paper's license (CC BY), from the paper cited above.
Versions
The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.
Version 1, 30 September 2026: the first record
Recorded: type, language, journal, volume, issue, pages, dates, 6 authors, 1 funder, 69 references.
Cite
This paper
Marshall, D. P., Upadhye, A. R., Buyukcelik, O. N., Shoffstall, A. J., Grill, W. M., & Pelot, N. A. (2026). Computational modeling of human vagus nerve stimulation with three-dimensional fascicular morphology. APL bioengineering, 10(1), 016112. https://
BibTeX
@article{marshall2026com
author = {Marshall, Daniel P. and Upadhye, Aniruddha R. and Buyukcelik, Ozge N. and Shoffstall, Andrew J. and Grill, Warren M. and Pelot, Nicole A.},
title = {{Computational modeling of human vagus nerve stimulation with three-dimensional fascicular morphology}},
journal = {APL bioengineering},
year = {2026},
month = mar,
volume = {10},
number = {1},
pages = {016112},
publisher = {American Institute of Physics},
issn = {2473-2877},
doi = {10.1063/
url = {https://
pmid = {41782809},
pmcid = {PMC12956375}
}
RIS
TY - JOUR
AU - Marshall, Daniel P.
AU - Upadhye, Aniruddha R.
AU - Buyukcelik, Ozge N.
AU - Shoffstall, Andrew J.
AU - Grill, Warren M.
AU - Pelot, Nicole A.
TI - Computational modeling of human vagus nerve stimulation with three-dimensional fascicular morphology
T2 - APL bioengineering
J2 - APL Bioeng
PY - 2026
DA - 2026/
VL - 10
IS - 1
SP - 016112
SN - 2473-2877
PB - American Institute of Physics
DO - 10.1063/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1063/
"type": "article-journal",
"title": "Computational modeling of human vagus nerve stimulation with three-dimensional fascicular morphology",
"container-title": "APL bioengineering",
"author": [
{
"family": "Marshall",
"given": "Daniel P."
},
{
"family": "Upadhye",
"given": "Aniruddha R."
},
{
"family": "Buyukcelik",
"given": "Ozge N."
},
{
"family": "Shoffstall",
"given": "Andrew J."
},
{
"family": "Grill",
"given": "Warren M."
},
{
"family": "Pelot",
"given": "Nicole A."
}
],
"container-title-short":
"volume": "10",
"issue": "1",
"page": "016112",
"DOI": "10.1063/
"PMID": "41782809",
"PMCID": "PMC12956375",
"ISSN": "2473-2877",
"publisher": "American Institute of Physics",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
3,
2
]
]
}
}
The tracing map gets a citation of its own once an author has validated it and it has a DOI.
Similar papers
The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.
- [1] doi:10.1016/j.celrep.2026.117420 [code]
- Neural population dynamics of direct electrical stimulation of neocortex.Journal: Cell reportsIn common: OpenCV, scikit-image, Pillow, 5 other tools, 2 references
- [2] doi:10.1038/s43856-026-01695-3 [code]
- Predict neuromuscular performance in human epidural electrical stimulation: phase 1 trial interim results.Journal: Communications medicineIn common: pandas, SciPy, Matplotlib, 1 other tool, computational modeling (no new data), 4 references
- [3] doi:10.1016/j.isci.2026.115488 [code]
- An integrated &
lt;i& gt;i& lt;/ i& gt; & lt;i& gt;n vitro& lt;/ i& gt; platform and biophysical modeling approach for studying synaptic transmission in isolated neuronal pairs. Journal: iScienceIn common: NEURON, OpenCV, Pillow, 5 other tools - [4] doi:10.7554/elife.100880 [code]
- An applicable and efficient retrograde monosynaptic circuit mapping tool for larval zebrafish.Journal: eLifeIn common: NEURON, OpenCV, scikit-image, 5 other tools
- [5] doi:10.3389/fnsys.2026.1822122 [code]
- Convergence-divergence circuits for multimodal integration of innate and learned opponent valences.Journal: Frontiers in systems neuroscienceIn common: NEURON, scikit-image, Pillow, 5 other tools
- [6] doi:10.1016/j.celrep.2026.117793 [code]
- Clustered inputs engage dendritic nonlinearities and calcium signaling to support efficient place-field formation in CA1 pyramidal neurons.Journal: Cell reportsIn common: NEURON, seaborn, pandas, 3 other tools, computational modeling (no new data), 1 reference
- [7] doi:10.1038/s42003-026-10957-8 [code]
- Brain defence by the extracellular matrix protein Cochlin.Journal: Communications biologyIn common: OpenCV, scikit-image, Pillow, 5 other tools
- [8] doi:10.1038/s41467-026-76837-1 [code]
- Drug screen and machine learning predict neuroprotective agents in a preclinical human model of childhood dementia.Journal: Nature communicationsIn common: OpenCV, scikit-image, Pillow, 5 other tools
- [9] doi:10.1371/journal.pcbi.1014571 [code]
- SynAPSeg: A novel dataset and image analysis framework for deep learning-based synapse detection and quantification.Journal: PLoS computational biologyIn common: OpenCV, scikit-image, Pillow, 5 other tools
- [10] doi:10.1002/alz.71649 [code]
- Postmortem brain MRI reveals differential associations of subcortical and limbic volumes with cortical thinning and neurodegenerative pathologies.Journal: Alzheimer's & dementia : the journal of the Alzheimer's AssociationIn common: OpenCV, scikit-image, Pillow, 5 other tools
Contribute
The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.
Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.
Claim this paper
Correct its record
Say what each link of this record is, remove the ones that are not the paper's, add the ones that are missing. The correction becomes a new version of the record, in its Versions section.
Validate its tracing map
You validate the map as this page shows it: 4 repositories of the authors' code, each at its verified commit and with its license, 323 scripts, and 4 matches between paragraphs and code (see the Code and Map sections). It then receives a DOI on Zenodo, with you (your ORCID iD) and OSCR as its creators; the code itself is not deposited.
The map's fingerprint: sha256:d013a852e9144312…
Add the badge to its README
The badge links the code to this page. Copy one of these into the README of the paper's code: only you decide where it goes, and nothing is changed for you.
Markdown
[, paste the snippet at the top, then “Commit changes…” and, to review it first, “Create a new branch and start a pull request”. You open the pull request; OSCR asks for no permission.
Request its removal
To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).
Discussion, reproductions, activity
Discussion: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.
Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.
Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.
