From 5d044efaea215b042969331294f4cb674dc4ffa0 Mon Sep 17 00:00:00 2001 From: 1uc Date: Thu, 3 Oct 2024 12:54:13 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20BlueBrai?= =?UTF-8?q?n/nmodl@65a70941f852d3b428b9ea396d363b7916cc51a7=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .doctrees/environment.pickle | Bin 154773 -> 154773 bytes .../notebooks/nmodl-kinetic-schemes.ipynb | 56 +- .../notebooks/nmodl-python-tutorial.ipynb | 160 ++--- .../notebooks/nmodl-sympy-conductance.ipynb | 72 +- .../notebooks/nmodl-sympy-solver-cnexp.ipynb | 64 +- .../nmodl-sympy-solver-derivimplicit.ipynb | 32 +- .../notebooks/nmodl-sympy-solver-sparse.ipynb | 32 +- doxygen/src_2main_8cpp.html | 3 +- doxygen/src_2main_8cpp_source.html | 617 +++++++++--------- doxygen/src_2visitors_2main_8cpp_source.html | 2 +- ...test_2unit_2codegen_2main_8cpp_source.html | 2 +- ...test_2unit_2visitor_2main_8cpp_source.html | 2 +- notebooks/nmodl-kinetic-schemes.ipynb | 56 +- notebooks/nmodl-python-tutorial.ipynb | 160 ++--- notebooks/nmodl-sympy-conductance.ipynb | 72 +- notebooks/nmodl-sympy-solver-cnexp.ipynb | 64 +- .../nmodl-sympy-solver-derivimplicit.ipynb | 32 +- notebooks/nmodl-sympy-solver-sparse.ipynb | 32 +- 18 files changed, 727 insertions(+), 731 deletions(-) diff --git a/.doctrees/environment.pickle b/.doctrees/environment.pickle index d5d705b6ed31e51af1ffe29ef44ef30466447901..35b59897925acba2b89700e7fde408b674389e32 100644 GIT binary patch delta 9817 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 BtkwVk delta 9785 zcmY+Kd0kpOO>B4wAw2DDlNa6Gw&VpPiE#b=bkg?oVn-Dy?JX(8?G&F zSm@pzTFKu8v;vDr-R9?N?jp~hhAwC|@9rtWySt0jtxW^W?lV%7(@n|gX+37loim3N z%X93VgtUb8lsRb@@&4A1VrdUAXrEgN?R_lf`m<7E=O&r3bran~LP|2)9p&~@(6Nri z>?40W1U{m95C2B>V^ik88)r(kn0;lhAHjFB#oQn%COK|yOq|JLu9uJ;YnpE{H&0GU zH%(7TNlfbzH8d=I)KGLK<2Xq;TtaeMdQ1{(jcK?!3Df7MCnU#N%nkK57PH$NQ%vkE zlXYNEpE?7fNsZp%0?@g~7h1&YzPPTDSTR%Pe5wRLZa)v!IYPTe!?PAjE#bg5DO%qmSa zDzw#R$1P*Ow(dv$X&iD|sjqEWW*pX5cGodRQJrYV>{HLZH{3Yjbk1Hs?Szr6qEV);i}#NhHQM^mol0#;Yv>qGh0uc-W_XogAZB z1O>hZ2gQ4VA@ylu(C?h+(BD_Q9z0$I4fYkeqhA!?1&4~uVZI`~e-xC6?ZF+_7D9bd z(f@5xg)Kq`j295@D;g~AC4L+bDz**u6_EqSiFSj0MdpUq;>y5K(J#bT3?7su<_+-` zX9gKUVEb<6?Zmv0P!WLb{~IzzSO)ltL619&4+e*dPQkw7`@y$`=`~-u(Gxld&#+MO z0F5c$;3qbsaW2$XJPC^vHtad`wOL{>j@D{Ow0H~Sd=ge)t{Vm~3Hy*x@#0Wl88QKS zh&RJSMQ(pzd3PEFh-+xH9pEdaft^nu`i4qhqfK2G7nQoktE5rd8lj|7${M3cqjWVU zkw&R%#F0j6YNV4!DQdh=8l|VPinL17Hj+kJY3wGAGSVm^jW*4wteb&1X^&8l|35ryl+(BCR=TlyQa+X_Re77t$!xj3Ck|%ZzZ+D8r05NTcjB zrlL02TsJ+X!HhJ^B1?dgXDuD}5{Ta>xr@Q;TZn }}K4QZO65MZ|~*k&&plb^nM~ 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 w@G3^GJiX)_EnR!59-2;e -

Definition at line 625 of file main.cpp.

+

Definition at line 622 of file main.cpp.

@@ -242,7 +242,6 @@

329  /// whether to update existing symbol table or create new
330  /// one whenever we run symtab visitor.
331  bool update_symtab = false;
-
332 
-
333  /// just visit the ast
-
334  AstVisitor().visit_program(*ast);
-
335 
-
336  {
-
337  logger->info("Running argument renaming visitor");
-
338  RenameFunctionArgumentsVisitor().visit_program(*ast);
-
339  }
-
340 
-
341  /// construct symbol table
-
342  {
-
343  logger->info("Running symtab visitor");
-
344  SymtabVisitor(update_symtab).visit_program(*ast);
-
345  }
-
346 
-
347  /// Check some rules that ast should follow
-
348  {
-
349  logger->info("Running semantic analysis visitor");
-
350  if (SemanticAnalysisVisitor(oacc_backend).check(*ast)) {
-
351  return 1;
-
352  }
-
353  }
-
354 
-
355  /// use cnexp instead of after_cvode solve method
-
356  {
-
357  logger->info("Running CVode to cnexp visitor");
-
358  AfterCVodeToCnexpVisitor().visit_program(*ast);
-
359  ast_to_nmodl(*ast, filepath("after_cvode_to_cnexp"));
-
360  }
-
361 
-
362  /// GLOBAL to RANGE rename visitor
-
363  if (nmodl_global_to_range) {
-
364  // make sure to run perf visitor because code generator
-
365  // looks for read/write counts const/non-const declaration
-
366  PerfVisitor().visit_program(*ast);
-
367  // make sure to run the GlobalToRange visitor after all the
-
368  // reinitializations of Symtab
-
369  logger->info("Running GlobalToRange visitor");
-
370  GlobalToRangeVisitor(*ast).visit_program(*ast);
-
371  SymtabVisitor(update_symtab).visit_program(*ast);
-
372  ast_to_nmodl(*ast, filepath("global_to_range"));
-
373  }
-
374 
-
375  /// LOCAL to ASSIGNED visitor
-
376  if (nmodl_local_to_range) {
-
377  logger->info("Running LOCAL to ASSIGNED visitor");
-
378  PerfVisitor().visit_program(*ast);
-
379  LocalToAssignedVisitor().visit_program(*ast);
-
380  SymtabVisitor(update_symtab).visit_program(*ast);
-
381  ast_to_nmodl(*ast, filepath("local_to_assigned"));
-
382  }
-
383 
-
384  {
-
385  // Compatibility Checking
-
386  logger->info("Running code compatibility checker");
-
387  // run perfvisitor to update read/write counts
-
388  PerfVisitor().visit_program(*ast);
-
389 
-
390  auto compatibility_visitor = CodegenCompatibilityVisitor(simulator_name);
-
391  // If we want to just check compatibility we return the result
-
392  if (only_check_compatibility) {
-
393  return compatibility_visitor.find_unhandled_ast_nodes(*ast);
-
394  }
-
395 
-
396  // If there is an incompatible construct and code generation is not forced exit NMODL
-
397  if (compatibility_visitor.find_unhandled_ast_nodes(*ast) && !force_codegen) {
-
398  return 1;
-
399  }
-
400  }
-
401 
-
402  if (show_symtab) {
-
403  logger->info("Printing symbol table");
-
404  auto symtab = ast->get_model_symbol_table();
-
405  symtab->print(std::cout);
-
406  }
-
407 
-
408  ast_to_nmodl(*ast, filepath("ast"));
-
409 
-
410  if (json_ast) {
-
411  std::filesystem::path file{scratch_dir};
-
412  file /= modfile + ".ast.json";
-
413  logger->info("Writing AST into {}", file.string());
-
414  JSONVisitor(file.string()).write(*ast);
-
415  }
-
416 
-
417  if (verbatim_rename) {
-
418  logger->info("Running verbatim rename visitor");
-
419  VerbatimVarRenameVisitor().visit_program(*ast);
-
420  ast_to_nmodl(*ast, filepath("verbatim_rename"));
-
421  }
-
422 
-
423  if (nmodl_const_folding) {
-
424  logger->info("Running nmodl constant folding visitor");
-
425  ConstantFolderVisitor().visit_program(*ast);
-
426  ast_to_nmodl(*ast, filepath("constfold"));
-
427  }
-
428 
-
429  if (nmodl_unroll) {
-
430  logger->info("Running nmodl loop unroll visitor");
-
431  LoopUnrollVisitor().visit_program(*ast);
-
432  ConstantFolderVisitor().visit_program(*ast);
-
433  ast_to_nmodl(*ast, filepath("unroll"));
-
434  SymtabVisitor(update_symtab).visit_program(*ast);
-
435  }
-
436 
-
437  /// note that we can not symtab visitor in update mode as we
-
438  /// replace kinetic block with derivative block of same name
-
439  /// in global scope
-
440  {
-
441  logger->info("Running KINETIC block visitor");
-
442  auto kineticBlockVisitor = KineticBlockVisitor();
-
443  kineticBlockVisitor.visit_program(*ast);
-
444  SymtabVisitor(update_symtab).visit_program(*ast);
-
445  const auto filename = filepath("kinetic");
-
446  ast_to_nmodl(*ast, filename);
-
447  if (nmodl_ast && kineticBlockVisitor.get_conserve_statement_count()) {
-
448  logger->warn(
-
449  fmt::format("{} presents non-standard CONSERVE statements in DERIVATIVE "
-
450  "blocks. Use it only for debugging/developing",
-
451  filename));
-
452  }
-
453  }
-
454 
-
455  {
-
456  logger->info("Running STEADYSTATE visitor");
-
457  SteadystateVisitor().visit_program(*ast);
-
458  SymtabVisitor(update_symtab).visit_program(*ast);
-
459  ast_to_nmodl(*ast, filepath("steadystate"));
-
460  }
-
461 
-
462  /// Parsing units fron "nrnunits.lib" and mod files
-
463  {
-
464  logger->info("Parsing Units");
-
465  UnitsVisitor(units_dir).visit_program(*ast);
-
466  }
-
467 
-
468  /// once we start modifying (especially removing) older constructs
-
469  /// from ast then we should run symtab visitor in update mode so
-
470  /// that old symbols (e.g. prime variables) are not lost
-
471  update_symtab = true;
-
472 
-
473  if (nmodl_inline) {
-
474  logger->info("Running nmodl inline visitor");
-
475  InlineVisitor().visit_program(*ast);
-
476  SymtabVisitor(update_symtab).visit_program(*ast);
-
477  ast_to_nmodl(*ast, filepath("inline"));
-
478  }
-
479 
-
480  if (local_rename) {
-
481  logger->info("Running local variable rename visitor");
-
482  LocalVarRenameVisitor().visit_program(*ast);
-
483  SymtabVisitor(update_symtab).visit_program(*ast);
-
484  ast_to_nmodl(*ast, filepath("local_rename"));
-
485  }
-
486 
-
487  if (nmodl_localize) {
-
488  // localize pass must follow rename pass to avoid conflict
-
489  logger->info("Running localize visitor");
-
490  LocalizeVisitor(localize_verbatim).visit_program(*ast);
-
491  LocalVarRenameVisitor().visit_program(*ast);
-
492  SymtabVisitor(update_symtab).visit_program(*ast);
-
493  ast_to_nmodl(*ast, filepath("localize"));
-
494  }
-
495 
-
496  const bool sympy_derivimplicit = neuron_code && solver_exists(*ast, "derivimplicit");
-
497  const bool sympy_linear = node_exists(*ast, ast::AstNodeType::LINEAR_BLOCK);
-
498  const bool sympy_sparse = solver_exists(*ast, "sparse");
-
499 
-
500  if (sympy_conductance || sympy_analytic || sympy_sparse || sympy_derivimplicit ||
-
501  sympy_linear) {
- -
503  .api()
- -
505  if (sympy_conductance) {
-
506  logger->info("Running sympy conductance visitor");
-
507  SympyConductanceVisitor().visit_program(*ast);
-
508  SymtabVisitor(update_symtab).visit_program(*ast);
-
509  ast_to_nmodl(*ast, filepath("sympy_conductance"));
-
510  }
-
511 
-
512  if (sympy_analytic || sympy_sparse || sympy_derivimplicit || sympy_linear) {
-
513  if (!sympy_analytic) {
-
514  logger->info("Automatically enabling sympy_analytic.");
-
515  if (sympy_sparse) {
-
516  logger->info("Required by 'SOLVE ... METHOD sparse'.");
-
517  }
-
518 
-
519  if (sympy_derivimplicit) {
-
520  logger->info("Required by 'SOLVE ... METHOD derivimplicit'.");
-
521  }
-
522 
-
523  if (sympy_linear) {
-
524  logger->info("Required by 'LINEAR' block.");
-
525  }
-
526  }
-
527  logger->info("Running sympy solve visitor");
-
528  SympySolverVisitor(sympy_pade, sympy_cse).visit_program(*ast);
-
529  SymtabVisitor(update_symtab).visit_program(*ast);
-
530  ast_to_nmodl(*ast, filepath("sympy_solve"));
-
531  }
- -
533  .api()
- -
535  }
-
536 
-
537  {
-
538  logger->info("Running cnexp visitor");
-
539  NeuronSolveVisitor().visit_program(*ast);
-
540  ast_to_nmodl(*ast, filepath("cnexp"));
-
541  }
-
542 
-
543  {
-
544  SolveBlockVisitor().visit_program(*ast);
-
545  SymtabVisitor(update_symtab).visit_program(*ast);
-
546  ast_to_nmodl(*ast, filepath("solveblock"));
-
547  }
-
548 
-
549  if (json_perfstat) {
-
550  std::string file{scratch_dir};
-
551  file.append("/");
-
552  file.append(modfile);
-
553  file.append(".perf.json");
-
554  logger->info("Writing performance statistics to {}", file);
-
555  PerfVisitor(file).visit_program(*ast);
-
556  }
-
557 
-
558  // Add implicit arguments (like celsius, nt) to NEURON functions (like
-
559  // nrn_ghk, at_time) whose signatures we have to massage.
-
560  ImplicitArgumentVisitor{simulator_name}.visit_program(*ast);
-
561  SymtabVisitor(update_symtab).visit_program(*ast);
-
562 
-
563  {
-
564  // make sure to run perf visitor because code generator
-
565  // looks for read/write counts const/non-const declaration
-
566  PerfVisitor().visit_program(*ast);
-
567  }
-
568 
-
569  {
- -
571  ast_to_nmodl(*ast, filepath("TransformVisitor"));
-
572  SymtabVisitor(update_symtab).visit_program(*ast);
-
573  }
-
574 
-
575  {
-
576  FunctionCallpathVisitor{}.visit_program(*ast);
-
577  ast_to_nmodl(*ast, filepath("FunctionCallpathVisitor"));
-
578  SymtabVisitor(update_symtab).visit_program(*ast);
-
579  }
-
580 
-
581  {
-
582  auto blame_level = detailed_blame ? utils::BlameLevel::Detailed
- -
584  if (coreneuron_code && oacc_backend) {
-
585  logger->info("Running OpenACC backend code generator for CoreNEURON");
-
586  CodegenAccVisitor visitor(modfile,
-
587  output_dir,
-
588  data_type,
-
589  optimize_ionvar_copies_codegen,
-
590  utils::make_blame(blame_line, blame_level));
-
591  visitor.visit_program(*ast);
-
592  }
-
593 
-
594  else if (coreneuron_code && !neuron_code && cpp_backend) {
-
595  logger->info("Running C++ backend code generator for CoreNEURON");
-
596  CodegenCoreneuronCppVisitor visitor(modfile,
-
597  output_dir,
-
598  data_type,
-
599  optimize_ionvar_copies_codegen,
-
600  utils::make_blame(blame_line, blame_level));
-
601  visitor.visit_program(*ast);
-
602  }
-
603 
-
604  else if (neuron_code && cpp_backend) {
-
605  logger->info("Running C++ backend code generator for NEURON");
-
606  CodegenNeuronCppVisitor visitor(modfile,
-
607  output_dir,
-
608  data_type,
-
609  optimize_ionvar_copies_codegen,
-
610  utils::make_blame(blame_line, blame_level));
-
611  visitor.visit_program(*ast);
-
612  }
-
613 
-
614  else {
-
615  throw std::runtime_error(
-
616  "Non valid code generation configuration. Code generation with NMODL is "
-
617  "supported for NEURON with C++ backend or CoreNEURON with C++/OpenACC "
-
618  "backends");
-
619  }
-
620  }
-
621  }
-
622  return EXIT_SUCCESS;
-
623 }
-
624 
-
625 int main(int argc, const char* argv[]) {
-
626  try {
-
627  return run_nmodl(argc, argv);
-
628  } catch (const std::runtime_error& e) {
-
629  std::cerr << "[FATAL] NMODL encountered an unhandled exception.\n";
-
630  std::cerr << " cwd = " << std::filesystem::current_path() << "\n";
-
631  std::cerr << " ";
-
632  for (int i = 0; i < argc; ++i) {
-
633  std::cerr << argv[i] << " ";
-
634  }
-
635  std::cerr << std::endl;
+
332 
+
333  {
+
334  logger->info("Running argument renaming visitor");
+
335  RenameFunctionArgumentsVisitor().visit_program(*ast);
+
336  }
+
337 
+
338  /// construct symbol table
+
339  {
+
340  logger->info("Running symtab visitor");
+
341  SymtabVisitor(update_symtab).visit_program(*ast);
+
342  }
+
343 
+
344  /// Check some rules that ast should follow
+
345  {
+
346  logger->info("Running semantic analysis visitor");
+
347  if (SemanticAnalysisVisitor(oacc_backend).check(*ast)) {
+
348  return 1;
+
349  }
+
350  }
+
351 
+
352  /// use cnexp instead of after_cvode solve method
+
353  {
+
354  logger->info("Running CVode to cnexp visitor");
+
355  AfterCVodeToCnexpVisitor().visit_program(*ast);
+
356  ast_to_nmodl(*ast, filepath("after_cvode_to_cnexp"));
+
357  }
+
358 
+
359  /// GLOBAL to RANGE rename visitor
+
360  if (nmodl_global_to_range) {
+
361  // make sure to run perf visitor because code generator
+
362  // looks for read/write counts const/non-const declaration
+
363  PerfVisitor().visit_program(*ast);
+
364  // make sure to run the GlobalToRange visitor after all the
+
365  // reinitializations of Symtab
+
366  logger->info("Running GlobalToRange visitor");
+
367  GlobalToRangeVisitor(*ast).visit_program(*ast);
+
368  SymtabVisitor(update_symtab).visit_program(*ast);
+
369  ast_to_nmodl(*ast, filepath("global_to_range"));
+
370  }
+
371 
+
372  /// LOCAL to ASSIGNED visitor
+
373  if (nmodl_local_to_range) {
+
374  logger->info("Running LOCAL to ASSIGNED visitor");
+
375  PerfVisitor().visit_program(*ast);
+
376  LocalToAssignedVisitor().visit_program(*ast);
+
377  SymtabVisitor(update_symtab).visit_program(*ast);
+
378  ast_to_nmodl(*ast, filepath("local_to_assigned"));
+
379  }
+
380 
+
381  {
+
382  // Compatibility Checking
+
383  logger->info("Running code compatibility checker");
+
384  // run perfvisitor to update read/write counts
+
385  PerfVisitor().visit_program(*ast);
+
386 
+
387  auto compatibility_visitor = CodegenCompatibilityVisitor(simulator_name);
+
388  // If we want to just check compatibility we return the result
+
389  if (only_check_compatibility) {
+
390  return compatibility_visitor.find_unhandled_ast_nodes(*ast);
+
391  }
+
392 
+
393  // If there is an incompatible construct and code generation is not forced exit NMODL
+
394  if (compatibility_visitor.find_unhandled_ast_nodes(*ast) && !force_codegen) {
+
395  return 1;
+
396  }
+
397  }
+
398 
+
399  if (show_symtab) {
+
400  logger->info("Printing symbol table");
+
401  auto symtab = ast->get_model_symbol_table();
+
402  symtab->print(std::cout);
+
403  }
+
404 
+
405  ast_to_nmodl(*ast, filepath("ast"));
+
406 
+
407  if (json_ast) {
+
408  std::filesystem::path file{scratch_dir};
+
409  file /= modfile + ".ast.json";
+
410  logger->info("Writing AST into {}", file.string());
+
411  JSONVisitor(file.string()).write(*ast);
+
412  }
+
413 
+
414  if (verbatim_rename) {
+
415  logger->info("Running verbatim rename visitor");
+
416  VerbatimVarRenameVisitor().visit_program(*ast);
+
417  ast_to_nmodl(*ast, filepath("verbatim_rename"));
+
418  }
+
419 
+
420  if (nmodl_const_folding) {
+
421  logger->info("Running nmodl constant folding visitor");
+
422  ConstantFolderVisitor().visit_program(*ast);
+
423  ast_to_nmodl(*ast, filepath("constfold"));
+
424  }
+
425 
+
426  if (nmodl_unroll) {
+
427  logger->info("Running nmodl loop unroll visitor");
+
428  LoopUnrollVisitor().visit_program(*ast);
+
429  ConstantFolderVisitor().visit_program(*ast);
+
430  ast_to_nmodl(*ast, filepath("unroll"));
+
431  SymtabVisitor(update_symtab).visit_program(*ast);
+
432  }
+
433 
+
434  /// note that we can not symtab visitor in update mode as we
+
435  /// replace kinetic block with derivative block of same name
+
436  /// in global scope
+
437  {
+
438  logger->info("Running KINETIC block visitor");
+
439  auto kineticBlockVisitor = KineticBlockVisitor();
+
440  kineticBlockVisitor.visit_program(*ast);
+
441  SymtabVisitor(update_symtab).visit_program(*ast);
+
442  const auto filename = filepath("kinetic");
+
443  ast_to_nmodl(*ast, filename);
+
444  if (nmodl_ast && kineticBlockVisitor.get_conserve_statement_count()) {
+
445  logger->warn(
+
446  fmt::format("{} presents non-standard CONSERVE statements in DERIVATIVE "
+
447  "blocks. Use it only for debugging/developing",
+
448  filename));
+
449  }
+
450  }
+
451 
+
452  {
+
453  logger->info("Running STEADYSTATE visitor");
+
454  SteadystateVisitor().visit_program(*ast);
+
455  SymtabVisitor(update_symtab).visit_program(*ast);
+
456  ast_to_nmodl(*ast, filepath("steadystate"));
+
457  }
+
458 
+
459  /// Parsing units fron "nrnunits.lib" and mod files
+
460  {
+
461  logger->info("Parsing Units");
+
462  UnitsVisitor(units_dir).visit_program(*ast);
+
463  }
+
464 
+
465  /// once we start modifying (especially removing) older constructs
+
466  /// from ast then we should run symtab visitor in update mode so
+
467  /// that old symbols (e.g. prime variables) are not lost
+
468  update_symtab = true;
+
469 
+
470  if (nmodl_inline) {
+
471  logger->info("Running nmodl inline visitor");
+
472  InlineVisitor().visit_program(*ast);
+
473  SymtabVisitor(update_symtab).visit_program(*ast);
+
474  ast_to_nmodl(*ast, filepath("inline"));
+
475  }
+
476 
+
477  if (local_rename) {
+
478  logger->info("Running local variable rename visitor");
+
479  LocalVarRenameVisitor().visit_program(*ast);
+
480  SymtabVisitor(update_symtab).visit_program(*ast);
+
481  ast_to_nmodl(*ast, filepath("local_rename"));
+
482  }
+
483 
+
484  if (nmodl_localize) {
+
485  // localize pass must follow rename pass to avoid conflict
+
486  logger->info("Running localize visitor");
+
487  LocalizeVisitor(localize_verbatim).visit_program(*ast);
+
488  LocalVarRenameVisitor().visit_program(*ast);
+
489  SymtabVisitor(update_symtab).visit_program(*ast);
+
490  ast_to_nmodl(*ast, filepath("localize"));
+
491  }
+
492 
+
493  const bool sympy_derivimplicit = neuron_code && solver_exists(*ast, "derivimplicit");
+
494  const bool sympy_linear = node_exists(*ast, ast::AstNodeType::LINEAR_BLOCK);
+
495  const bool sympy_sparse = solver_exists(*ast, "sparse");
+
496 
+
497  if (sympy_conductance || sympy_analytic || sympy_sparse || sympy_derivimplicit ||
+
498  sympy_linear) {
+ +
500  .api()
+ +
502  if (sympy_conductance) {
+
503  logger->info("Running sympy conductance visitor");
+
504  SympyConductanceVisitor().visit_program(*ast);
+
505  SymtabVisitor(update_symtab).visit_program(*ast);
+
506  ast_to_nmodl(*ast, filepath("sympy_conductance"));
+
507  }
+
508 
+
509  if (sympy_analytic || sympy_sparse || sympy_derivimplicit || sympy_linear) {
+
510  if (!sympy_analytic) {
+
511  logger->info("Automatically enabling sympy_analytic.");
+
512  if (sympy_sparse) {
+
513  logger->info("Required by 'SOLVE ... METHOD sparse'.");
+
514  }
+
515 
+
516  if (sympy_derivimplicit) {
+
517  logger->info("Required by 'SOLVE ... METHOD derivimplicit'.");
+
518  }
+
519 
+
520  if (sympy_linear) {
+
521  logger->info("Required by 'LINEAR' block.");
+
522  }
+
523  }
+
524  logger->info("Running sympy solve visitor");
+
525  SympySolverVisitor(sympy_pade, sympy_cse).visit_program(*ast);
+
526  SymtabVisitor(update_symtab).visit_program(*ast);
+
527  ast_to_nmodl(*ast, filepath("sympy_solve"));
+
528  }
+ +
530  .api()
+ +
532  }
+
533 
+
534  {
+
535  logger->info("Running cnexp visitor");
+
536  NeuronSolveVisitor().visit_program(*ast);
+
537  ast_to_nmodl(*ast, filepath("cnexp"));
+
538  }
+
539 
+
540  {
+
541  SolveBlockVisitor().visit_program(*ast);
+
542  SymtabVisitor(update_symtab).visit_program(*ast);
+
543  ast_to_nmodl(*ast, filepath("solveblock"));
+
544  }
+
545 
+
546  if (json_perfstat) {
+
547  std::string file{scratch_dir};
+
548  file.append("/");
+
549  file.append(modfile);
+
550  file.append(".perf.json");
+
551  logger->info("Writing performance statistics to {}", file);
+
552  PerfVisitor(file).visit_program(*ast);
+
553  }
+
554 
+
555  // Add implicit arguments (like celsius, nt) to NEURON functions (like
+
556  // nrn_ghk, at_time) whose signatures we have to massage.
+
557  ImplicitArgumentVisitor{simulator_name}.visit_program(*ast);
+
558  SymtabVisitor(update_symtab).visit_program(*ast);
+
559 
+
560  {
+
561  // make sure to run perf visitor because code generator
+
562  // looks for read/write counts const/non-const declaration
+
563  PerfVisitor().visit_program(*ast);
+
564  }
+
565 
+
566  {
+ +
568  ast_to_nmodl(*ast, filepath("TransformVisitor"));
+
569  SymtabVisitor(update_symtab).visit_program(*ast);
+
570  }
+
571 
+
572  {
+
573  FunctionCallpathVisitor{}.visit_program(*ast);
+
574  ast_to_nmodl(*ast, filepath("FunctionCallpathVisitor"));
+
575  SymtabVisitor(update_symtab).visit_program(*ast);
+
576  }
+
577 
+
578  {
+
579  auto blame_level = detailed_blame ? utils::BlameLevel::Detailed
+ +
581  if (coreneuron_code && oacc_backend) {
+
582  logger->info("Running OpenACC backend code generator for CoreNEURON");
+
583  CodegenAccVisitor visitor(modfile,
+
584  output_dir,
+
585  data_type,
+
586  optimize_ionvar_copies_codegen,
+
587  utils::make_blame(blame_line, blame_level));
+
588  visitor.visit_program(*ast);
+
589  }
+
590 
+
591  else if (coreneuron_code && !neuron_code && cpp_backend) {
+
592  logger->info("Running C++ backend code generator for CoreNEURON");
+
593  CodegenCoreneuronCppVisitor visitor(modfile,
+
594  output_dir,
+
595  data_type,
+
596  optimize_ionvar_copies_codegen,
+
597  utils::make_blame(blame_line, blame_level));
+
598  visitor.visit_program(*ast);
+
599  }
+
600 
+
601  else if (neuron_code && cpp_backend) {
+
602  logger->info("Running C++ backend code generator for NEURON");
+
603  CodegenNeuronCppVisitor visitor(modfile,
+
604  output_dir,
+
605  data_type,
+
606  optimize_ionvar_copies_codegen,
+
607  utils::make_blame(blame_line, blame_level));
+
608  visitor.visit_program(*ast);
+
609  }
+
610 
+
611  else {
+
612  throw std::runtime_error(
+
613  "Non valid code generation configuration. Code generation with NMODL is "
+
614  "supported for NEURON with C++ backend or CoreNEURON with C++/OpenACC "
+
615  "backends");
+
616  }
+
617  }
+
618  }
+
619  return EXIT_SUCCESS;
+
620 }
+
621 
+
622 int main(int argc, const char* argv[]) {
+
623  try {
+
624  return run_nmodl(argc, argv);
+
625  } catch (const std::runtime_error& e) {
+
626  std::cerr << "[FATAL] NMODL encountered an unhandled exception.\n";
+
627  std::cerr << " cwd = " << std::filesystem::current_path() << "\n";
+
628  std::cerr << " ";
+
629  for (int i = 0; i < argc; ++i) {
+
630  std::cerr << argv[i] << " ";
+
631  }
+
632  std::cerr << std::endl;
+
633 
+
634  throw e;
+
635  }
636 
-
637  throw e;
-
638  }
-
639 
-
640  return EXIT_SUCCESS;
-
641 }
+
637  return EXIT_SUCCESS;
+
638 }
symtab::ModelSymbolTable * get_model_symbol_table()
Return global symbol table for the mod file.
Definition: program.hpp:159
@@ -797,7 +794,7 @@
Represents top level AST node for whole NMODL input.
Definition: program.hpp:39
THIS FILE IS GENERATED AT BUILD TIME AND SHALL NOT BE EDITED.
-
int main(int argc, const char *argv[])
Definition: main.cpp:625
+
int main(int argc, const char *argv[])
Definition: main.cpp:622
THIS FILE IS GENERATED AT BUILD TIME AND SHALL NOT BE EDITED.
static std::string get_path()
Return path of units database file.
Definition: config.h:54
bool parse_file(const std::string &filename)
parse Units file
Definition: unit_driver.cpp:29
diff --git a/doxygen/src_2visitors_2main_8cpp_source.html b/doxygen/src_2visitors_2main_8cpp_source.html index 45483630c..d6abf3ae1 100644 --- a/doxygen/src_2visitors_2main_8cpp_source.html +++ b/doxygen/src_2visitors_2main_8cpp_source.html @@ -262,7 +262,7 @@
Version information and units file path.
Represents top level AST node for whole NMODL input.
Definition: program.hpp:39
THIS FILE IS GENERATED AT BUILD TIME AND SHALL NOT BE EDITED.
-
int main(int argc, const char *argv[])
Definition: main.cpp:625
+
int main(int argc, const char *argv[])
Definition: main.cpp:622
THIS FILE IS GENERATED AT BUILD TIME AND SHALL NOT BE EDITED.
static std::string get_path()
Return path of units database file.
Definition: config.h:54
bool parse_file(const std::string &filename)
parse Units file
Definition: unit_driver.cpp:29
diff --git a/doxygen/test_2unit_2codegen_2main_8cpp_source.html b/doxygen/test_2unit_2codegen_2main_8cpp_source.html index e669f16e5..36f667584 100644 --- a/doxygen/test_2unit_2codegen_2main_8cpp_source.html +++ b/doxygen/test_2unit_2codegen_2main_8cpp_source.html @@ -128,7 +128,7 @@
decltype(&finalize_interpreter_func) finalize_interpreter
Definition: wrapper.hpp:49
const pybind_wrap_api & api()
Get a pointer to the pybind_wrap_api struct.
Definition: pyembed.cpp:135
Implement logger based on spdlog library.
-
int main(int argc, const char *argv[])
Definition: main.cpp:625
+
int main(int argc, const char *argv[])
Definition: main.cpp:622
diff --git a/doxygen/test_2unit_2visitor_2main_8cpp_source.html b/doxygen/test_2unit_2visitor_2main_8cpp_source.html index 436e6f6ed..0721d6684 100644 --- a/doxygen/test_2unit_2visitor_2main_8cpp_source.html +++ b/doxygen/test_2unit_2visitor_2main_8cpp_source.html @@ -128,7 +128,7 @@
decltype(&finalize_interpreter_func) finalize_interpreter
Definition: wrapper.hpp:49
const pybind_wrap_api & api()
Get a pointer to the pybind_wrap_api struct.
Definition: pyembed.cpp:135
Implement logger based on spdlog library.
-
int main(int argc, const char *argv[])
Definition: main.cpp:625
+
int main(int argc, const char *argv[])
Definition: main.cpp:622
diff --git a/notebooks/nmodl-kinetic-schemes.ipynb b/notebooks/nmodl-kinetic-schemes.ipynb index 7145a3a67..7965e3257 100644 --- a/notebooks/nmodl-kinetic-schemes.ipynb +++ b/notebooks/nmodl-kinetic-schemes.ipynb @@ -152,10 +152,10 @@ "execution_count": 1, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:37.874229Z", - "iopub.status.busy": "2024-10-03T12:10:37.874037Z", - "iopub.status.idle": "2024-10-03T12:10:38.672948Z", - "shell.execute_reply": "2024-10-03T12:10:38.672048Z" + "iopub.execute_input": "2024-10-03T12:53:30.783426Z", + "iopub.status.busy": "2024-10-03T12:53:30.782953Z", + "iopub.status.idle": "2024-10-03T12:53:31.572588Z", + "shell.execute_reply": "2024-10-03T12:53:31.571844Z" } }, "outputs": [], @@ -169,10 +169,10 @@ "execution_count": 2, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:38.675507Z", - "iopub.status.busy": "2024-10-03T12:10:38.675296Z", - "iopub.status.idle": "2024-10-03T12:10:38.705683Z", - "shell.execute_reply": "2024-10-03T12:10:38.705014Z" + "iopub.execute_input": "2024-10-03T12:53:31.575177Z", + "iopub.status.busy": "2024-10-03T12:53:31.574962Z", + "iopub.status.idle": "2024-10-03T12:53:31.605820Z", + "shell.execute_reply": "2024-10-03T12:53:31.605215Z" } }, "outputs": [], @@ -277,10 +277,10 @@ "execution_count": 3, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:38.708080Z", - "iopub.status.busy": "2024-10-03T12:10:38.707677Z", - "iopub.status.idle": "2024-10-03T12:10:38.712483Z", - "shell.execute_reply": "2024-10-03T12:10:38.711828Z" + "iopub.execute_input": "2024-10-03T12:53:31.608118Z", + "iopub.status.busy": "2024-10-03T12:53:31.607714Z", + "iopub.status.idle": "2024-10-03T12:53:31.612301Z", + "shell.execute_reply": "2024-10-03T12:53:31.611686Z" } }, "outputs": [ @@ -323,10 +323,10 @@ "execution_count": 4, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:38.741994Z", - "iopub.status.busy": "2024-10-03T12:10:38.741603Z", - "iopub.status.idle": "2024-10-03T12:10:38.745634Z", - "shell.execute_reply": "2024-10-03T12:10:38.744987Z" + "iopub.execute_input": "2024-10-03T12:53:31.642481Z", + "iopub.status.busy": "2024-10-03T12:53:31.642036Z", + "iopub.status.idle": "2024-10-03T12:53:31.645765Z", + "shell.execute_reply": "2024-10-03T12:53:31.645211Z" } }, "outputs": [ @@ -367,10 +367,10 @@ "execution_count": 5, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:38.747637Z", - "iopub.status.busy": "2024-10-03T12:10:38.747263Z", - "iopub.status.idle": "2024-10-03T12:10:38.751127Z", - "shell.execute_reply": "2024-10-03T12:10:38.750495Z" + "iopub.execute_input": "2024-10-03T12:53:31.647932Z", + "iopub.status.busy": "2024-10-03T12:53:31.647561Z", + "iopub.status.idle": "2024-10-03T12:53:31.650957Z", + "shell.execute_reply": "2024-10-03T12:53:31.650394Z" }, "scrolled": true }, @@ -412,10 +412,10 @@ "execution_count": 6, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:38.753263Z", - "iopub.status.busy": "2024-10-03T12:10:38.752889Z", - "iopub.status.idle": "2024-10-03T12:10:38.756894Z", - "shell.execute_reply": "2024-10-03T12:10:38.756227Z" + "iopub.execute_input": "2024-10-03T12:53:31.653025Z", + "iopub.status.busy": "2024-10-03T12:53:31.652662Z", + "iopub.status.idle": "2024-10-03T12:53:31.656131Z", + "shell.execute_reply": "2024-10-03T12:53:31.655600Z" }, "scrolled": true }, @@ -459,10 +459,10 @@ "execution_count": 7, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:38.758884Z", - "iopub.status.busy": "2024-10-03T12:10:38.758643Z", - "iopub.status.idle": "2024-10-03T12:10:38.763451Z", - "shell.execute_reply": "2024-10-03T12:10:38.762794Z" + "iopub.execute_input": "2024-10-03T12:53:31.658264Z", + "iopub.status.busy": "2024-10-03T12:53:31.657807Z", + "iopub.status.idle": "2024-10-03T12:53:31.662075Z", + "shell.execute_reply": "2024-10-03T12:53:31.661524Z" } }, "outputs": [ diff --git a/notebooks/nmodl-python-tutorial.ipynb b/notebooks/nmodl-python-tutorial.ipynb index 9b4f8a732..c604c26d2 100644 --- a/notebooks/nmodl-python-tutorial.ipynb +++ b/notebooks/nmodl-python-tutorial.ipynb @@ -30,10 +30,10 @@ "execution_count": 1, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:43.871758Z", - "iopub.status.busy": "2024-10-03T12:10:43.871286Z", - "iopub.status.idle": "2024-10-03T12:10:44.673624Z", - "shell.execute_reply": "2024-10-03T12:10:44.672789Z" + "iopub.execute_input": "2024-10-03T12:53:37.035835Z", + "iopub.status.busy": "2024-10-03T12:53:37.035286Z", + "iopub.status.idle": "2024-10-03T12:53:37.829087Z", + "shell.execute_reply": "2024-10-03T12:53:37.828309Z" } }, "outputs": [], @@ -63,10 +63,10 @@ "execution_count": 2, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:44.676305Z", - "iopub.status.busy": "2024-10-03T12:10:44.675876Z", - "iopub.status.idle": "2024-10-03T12:10:44.704620Z", - "shell.execute_reply": "2024-10-03T12:10:44.703969Z" + "iopub.execute_input": "2024-10-03T12:53:37.831896Z", + "iopub.status.busy": "2024-10-03T12:53:37.831469Z", + "iopub.status.idle": "2024-10-03T12:53:37.860553Z", + "shell.execute_reply": "2024-10-03T12:53:37.859808Z" } }, "outputs": [], @@ -86,10 +86,10 @@ "execution_count": 3, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:44.707090Z", - "iopub.status.busy": "2024-10-03T12:10:44.706697Z", - "iopub.status.idle": "2024-10-03T12:10:44.710139Z", - "shell.execute_reply": "2024-10-03T12:10:44.709613Z" + "iopub.execute_input": "2024-10-03T12:53:37.863221Z", + "iopub.status.busy": "2024-10-03T12:53:37.862820Z", + "iopub.status.idle": "2024-10-03T12:53:37.866302Z", + "shell.execute_reply": "2024-10-03T12:53:37.865735Z" } }, "outputs": [], @@ -152,10 +152,10 @@ "execution_count": 4, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:44.712251Z", - "iopub.status.busy": "2024-10-03T12:10:44.711882Z", - "iopub.status.idle": "2024-10-03T12:10:44.715909Z", - "shell.execute_reply": "2024-10-03T12:10:44.715394Z" + "iopub.execute_input": "2024-10-03T12:53:37.868260Z", + "iopub.status.busy": "2024-10-03T12:53:37.867925Z", + "iopub.status.idle": "2024-10-03T12:53:37.871702Z", + "shell.execute_reply": "2024-10-03T12:53:37.871042Z" } }, "outputs": [], @@ -183,10 +183,10 @@ "execution_count": 5, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:44.717990Z", - "iopub.status.busy": "2024-10-03T12:10:44.717644Z", - "iopub.status.idle": "2024-10-03T12:10:44.721336Z", - "shell.execute_reply": "2024-10-03T12:10:44.720654Z" + "iopub.execute_input": "2024-10-03T12:53:37.873885Z", + "iopub.status.busy": "2024-10-03T12:53:37.873511Z", + "iopub.status.idle": "2024-10-03T12:53:37.877093Z", + "shell.execute_reply": "2024-10-03T12:53:37.876479Z" } }, "outputs": [ @@ -235,10 +235,10 @@ "execution_count": 6, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:44.723587Z", - "iopub.status.busy": "2024-10-03T12:10:44.723129Z", - "iopub.status.idle": "2024-10-03T12:10:44.727013Z", - "shell.execute_reply": "2024-10-03T12:10:44.726505Z" + "iopub.execute_input": "2024-10-03T12:53:37.879163Z", + "iopub.status.busy": "2024-10-03T12:53:37.878705Z", + "iopub.status.idle": "2024-10-03T12:53:37.882649Z", + "shell.execute_reply": "2024-10-03T12:53:37.882015Z" } }, "outputs": [], @@ -260,10 +260,10 @@ "execution_count": 7, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:44.729077Z", - "iopub.status.busy": "2024-10-03T12:10:44.728712Z", - "iopub.status.idle": "2024-10-03T12:10:44.732552Z", - "shell.execute_reply": "2024-10-03T12:10:44.731998Z" + "iopub.execute_input": "2024-10-03T12:53:37.884884Z", + "iopub.status.busy": "2024-10-03T12:53:37.884427Z", + "iopub.status.idle": "2024-10-03T12:53:37.888122Z", + "shell.execute_reply": "2024-10-03T12:53:37.887473Z" } }, "outputs": [ @@ -297,10 +297,10 @@ "execution_count": 8, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:44.734535Z", - "iopub.status.busy": "2024-10-03T12:10:44.734176Z", - "iopub.status.idle": "2024-10-03T12:10:44.741725Z", - "shell.execute_reply": "2024-10-03T12:10:44.741116Z" + "iopub.execute_input": "2024-10-03T12:53:37.890127Z", + "iopub.status.busy": "2024-10-03T12:53:37.889774Z", + "iopub.status.idle": "2024-10-03T12:53:37.896685Z", + "shell.execute_reply": "2024-10-03T12:53:37.896141Z" } }, "outputs": [ @@ -365,10 +365,10 @@ "execution_count": 9, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:44.743523Z", - "iopub.status.busy": "2024-10-03T12:10:44.743328Z", - "iopub.status.idle": "2024-10-03T12:10:44.747881Z", - "shell.execute_reply": "2024-10-03T12:10:44.747336Z" + "iopub.execute_input": "2024-10-03T12:53:37.898764Z", + "iopub.status.busy": "2024-10-03T12:53:37.898388Z", + "iopub.status.idle": "2024-10-03T12:53:37.902560Z", + "shell.execute_reply": "2024-10-03T12:53:37.901902Z" } }, "outputs": [ @@ -416,10 +416,10 @@ "execution_count": 10, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:44.750010Z", - "iopub.status.busy": "2024-10-03T12:10:44.749541Z", - "iopub.status.idle": "2024-10-03T12:10:44.752778Z", - "shell.execute_reply": "2024-10-03T12:10:44.752254Z" + "iopub.execute_input": "2024-10-03T12:53:37.904619Z", + "iopub.status.busy": "2024-10-03T12:53:37.904246Z", + "iopub.status.idle": "2024-10-03T12:53:37.907501Z", + "shell.execute_reply": "2024-10-03T12:53:37.906984Z" } }, "outputs": [], @@ -441,10 +441,10 @@ "execution_count": 11, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:44.754696Z", - "iopub.status.busy": "2024-10-03T12:10:44.754490Z", - "iopub.status.idle": "2024-10-03T12:10:44.758318Z", - "shell.execute_reply": "2024-10-03T12:10:44.757678Z" + "iopub.execute_input": "2024-10-03T12:53:37.909562Z", + "iopub.status.busy": "2024-10-03T12:53:37.909265Z", + "iopub.status.idle": "2024-10-03T12:53:37.912822Z", + "shell.execute_reply": "2024-10-03T12:53:37.912297Z" } }, "outputs": [ @@ -510,10 +510,10 @@ "execution_count": 12, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:44.760294Z", - "iopub.status.busy": "2024-10-03T12:10:44.759921Z", - "iopub.status.idle": "2024-10-03T12:10:44.763093Z", - "shell.execute_reply": "2024-10-03T12:10:44.762563Z" + "iopub.execute_input": "2024-10-03T12:53:37.914881Z", + "iopub.status.busy": "2024-10-03T12:53:37.914499Z", + "iopub.status.idle": "2024-10-03T12:53:37.917949Z", + "shell.execute_reply": "2024-10-03T12:53:37.917382Z" } }, "outputs": [ @@ -548,10 +548,10 @@ "execution_count": 13, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:44.765054Z", - "iopub.status.busy": "2024-10-03T12:10:44.764711Z", - "iopub.status.idle": "2024-10-03T12:10:44.768079Z", - "shell.execute_reply": "2024-10-03T12:10:44.767535Z" + "iopub.execute_input": "2024-10-03T12:53:37.920100Z", + "iopub.status.busy": "2024-10-03T12:53:37.919730Z", + "iopub.status.idle": "2024-10-03T12:53:37.922960Z", + "shell.execute_reply": "2024-10-03T12:53:37.922370Z" } }, "outputs": [ @@ -584,10 +584,10 @@ "execution_count": 14, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:44.770162Z", - "iopub.status.busy": "2024-10-03T12:10:44.769780Z", - "iopub.status.idle": "2024-10-03T12:10:44.773170Z", - "shell.execute_reply": "2024-10-03T12:10:44.772643Z" + "iopub.execute_input": "2024-10-03T12:53:37.925054Z", + "iopub.status.busy": "2024-10-03T12:53:37.924683Z", + "iopub.status.idle": "2024-10-03T12:53:37.928069Z", + "shell.execute_reply": "2024-10-03T12:53:37.927540Z" } }, "outputs": [ @@ -622,10 +622,10 @@ "execution_count": 15, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:44.775293Z", - "iopub.status.busy": "2024-10-03T12:10:44.774919Z", - "iopub.status.idle": "2024-10-03T12:10:44.778777Z", - "shell.execute_reply": "2024-10-03T12:10:44.778239Z" + "iopub.execute_input": "2024-10-03T12:53:37.930066Z", + "iopub.status.busy": "2024-10-03T12:53:37.929689Z", + "iopub.status.idle": "2024-10-03T12:53:37.933528Z", + "shell.execute_reply": "2024-10-03T12:53:37.932976Z" } }, "outputs": [ @@ -669,10 +669,10 @@ "execution_count": 16, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:44.780924Z", - "iopub.status.busy": "2024-10-03T12:10:44.780536Z", - "iopub.status.idle": "2024-10-03T12:10:44.785749Z", - "shell.execute_reply": "2024-10-03T12:10:44.785154Z" + "iopub.execute_input": "2024-10-03T12:53:37.935625Z", + "iopub.status.busy": "2024-10-03T12:53:37.935258Z", + "iopub.status.idle": "2024-10-03T12:53:37.940431Z", + "shell.execute_reply": "2024-10-03T12:53:37.939897Z" } }, "outputs": [ @@ -733,10 +733,10 @@ "execution_count": 17, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:44.787767Z", - "iopub.status.busy": "2024-10-03T12:10:44.787389Z", - "iopub.status.idle": "2024-10-03T12:10:44.790841Z", - "shell.execute_reply": "2024-10-03T12:10:44.790300Z" + "iopub.execute_input": "2024-10-03T12:53:37.942482Z", + "iopub.status.busy": "2024-10-03T12:53:37.942107Z", + "iopub.status.idle": "2024-10-03T12:53:37.945488Z", + "shell.execute_reply": "2024-10-03T12:53:37.944964Z" } }, "outputs": [], @@ -761,10 +761,10 @@ "execution_count": 18, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:44.792914Z", - "iopub.status.busy": "2024-10-03T12:10:44.792545Z", - "iopub.status.idle": "2024-10-03T12:10:44.802665Z", - "shell.execute_reply": "2024-10-03T12:10:44.802085Z" + "iopub.execute_input": "2024-10-03T12:53:37.947538Z", + "iopub.status.busy": "2024-10-03T12:53:37.947168Z", + "iopub.status.idle": "2024-10-03T12:53:37.957213Z", + "shell.execute_reply": "2024-10-03T12:53:37.956695Z" } }, "outputs": [], @@ -857,10 +857,10 @@ "execution_count": 19, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:44.804670Z", - "iopub.status.busy": "2024-10-03T12:10:44.804347Z", - "iopub.status.idle": "2024-10-03T12:10:44.808027Z", - "shell.execute_reply": "2024-10-03T12:10:44.807387Z" + "iopub.execute_input": "2024-10-03T12:53:37.959186Z", + "iopub.status.busy": "2024-10-03T12:53:37.958807Z", + "iopub.status.idle": "2024-10-03T12:53:37.962481Z", + "shell.execute_reply": "2024-10-03T12:53:37.961921Z" } }, "outputs": [ @@ -897,10 +897,10 @@ "execution_count": 20, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:44.810031Z", - "iopub.status.busy": "2024-10-03T12:10:44.809693Z", - "iopub.status.idle": "2024-10-03T12:10:44.815454Z", - "shell.execute_reply": "2024-10-03T12:10:44.814889Z" + "iopub.execute_input": "2024-10-03T12:53:37.964517Z", + "iopub.status.busy": "2024-10-03T12:53:37.964144Z", + "iopub.status.idle": "2024-10-03T12:53:37.969722Z", + "shell.execute_reply": "2024-10-03T12:53:37.969168Z" } }, "outputs": [ diff --git a/notebooks/nmodl-sympy-conductance.ipynb b/notebooks/nmodl-sympy-conductance.ipynb index 73bd917a5..a08e97bd2 100644 --- a/notebooks/nmodl-sympy-conductance.ipynb +++ b/notebooks/nmodl-sympy-conductance.ipynb @@ -86,10 +86,10 @@ "execution_count": 1, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:47.208422Z", - "iopub.status.busy": "2024-10-03T12:10:47.208234Z", - "iopub.status.idle": "2024-10-03T12:10:48.015451Z", - "shell.execute_reply": "2024-10-03T12:10:48.014551Z" + "iopub.execute_input": "2024-10-03T12:53:40.246245Z", + "iopub.status.busy": "2024-10-03T12:53:40.246043Z", + "iopub.status.idle": "2024-10-03T12:53:41.039561Z", + "shell.execute_reply": "2024-10-03T12:53:41.038749Z" } }, "outputs": [], @@ -103,10 +103,10 @@ "execution_count": 2, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:48.017970Z", - "iopub.status.busy": "2024-10-03T12:10:48.017753Z", - "iopub.status.idle": "2024-10-03T12:10:48.049158Z", - "shell.execute_reply": "2024-10-03T12:10:48.048387Z" + "iopub.execute_input": "2024-10-03T12:53:41.042228Z", + "iopub.status.busy": "2024-10-03T12:53:41.041772Z", + "iopub.status.idle": "2024-10-03T12:53:41.071790Z", + "shell.execute_reply": "2024-10-03T12:53:41.071070Z" } }, "outputs": [], @@ -149,10 +149,10 @@ "execution_count": 3, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:48.051647Z", - "iopub.status.busy": "2024-10-03T12:10:48.051392Z", - "iopub.status.idle": "2024-10-03T12:10:48.328469Z", - "shell.execute_reply": "2024-10-03T12:10:48.327705Z" + "iopub.execute_input": "2024-10-03T12:53:41.074355Z", + "iopub.status.busy": "2024-10-03T12:53:41.073856Z", + "iopub.status.idle": "2024-10-03T12:53:41.366199Z", + "shell.execute_reply": "2024-10-03T12:53:41.365502Z" } }, "outputs": [ @@ -196,10 +196,10 @@ "execution_count": 4, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:48.330837Z", - "iopub.status.busy": "2024-10-03T12:10:48.330318Z", - "iopub.status.idle": "2024-10-03T12:10:48.464220Z", - "shell.execute_reply": "2024-10-03T12:10:48.463540Z" + "iopub.execute_input": "2024-10-03T12:53:41.368585Z", + "iopub.status.busy": "2024-10-03T12:53:41.368155Z", + "iopub.status.idle": "2024-10-03T12:53:41.497314Z", + "shell.execute_reply": "2024-10-03T12:53:41.496681Z" } }, "outputs": [ @@ -243,10 +243,10 @@ "execution_count": 5, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:48.466507Z", - "iopub.status.busy": "2024-10-03T12:10:48.466033Z", - "iopub.status.idle": "2024-10-03T12:10:48.473983Z", - "shell.execute_reply": "2024-10-03T12:10:48.473409Z" + "iopub.execute_input": "2024-10-03T12:53:41.499956Z", + "iopub.status.busy": "2024-10-03T12:53:41.499389Z", + "iopub.status.idle": "2024-10-03T12:53:41.507549Z", + "shell.execute_reply": "2024-10-03T12:53:41.507006Z" } }, "outputs": [ @@ -290,10 +290,10 @@ "execution_count": 6, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:48.475797Z", - "iopub.status.busy": "2024-10-03T12:10:48.475601Z", - "iopub.status.idle": "2024-10-03T12:10:48.493262Z", - "shell.execute_reply": "2024-10-03T12:10:48.492590Z" + "iopub.execute_input": "2024-10-03T12:53:41.509388Z", + "iopub.status.busy": "2024-10-03T12:53:41.509191Z", + "iopub.status.idle": "2024-10-03T12:53:41.526364Z", + "shell.execute_reply": "2024-10-03T12:53:41.525804Z" } }, "outputs": [ @@ -337,10 +337,10 @@ "execution_count": 7, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:48.495519Z", - "iopub.status.busy": "2024-10-03T12:10:48.495130Z", - "iopub.status.idle": "2024-10-03T12:10:48.613387Z", - "shell.execute_reply": "2024-10-03T12:10:48.612725Z" + "iopub.execute_input": "2024-10-03T12:53:41.528334Z", + "iopub.status.busy": "2024-10-03T12:53:41.528134Z", + "iopub.status.idle": "2024-10-03T12:53:41.646554Z", + "shell.execute_reply": "2024-10-03T12:53:41.645978Z" } }, "outputs": [ @@ -400,10 +400,10 @@ "execution_count": 8, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:48.615536Z", - "iopub.status.busy": "2024-10-03T12:10:48.615132Z", - "iopub.status.idle": "2024-10-03T12:10:48.708041Z", - "shell.execute_reply": "2024-10-03T12:10:48.707403Z" + "iopub.execute_input": "2024-10-03T12:53:41.648442Z", + "iopub.status.busy": "2024-10-03T12:53:41.648249Z", + "iopub.status.idle": "2024-10-03T12:53:41.741537Z", + "shell.execute_reply": "2024-10-03T12:53:41.740969Z" } }, "outputs": [ @@ -456,10 +456,10 @@ "execution_count": 9, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:48.710205Z", - "iopub.status.busy": "2024-10-03T12:10:48.709808Z", - "iopub.status.idle": "2024-10-03T12:10:48.781793Z", - "shell.execute_reply": "2024-10-03T12:10:48.781134Z" + "iopub.execute_input": "2024-10-03T12:53:41.743421Z", + "iopub.status.busy": "2024-10-03T12:53:41.743226Z", + "iopub.status.idle": "2024-10-03T12:53:41.817242Z", + "shell.execute_reply": "2024-10-03T12:53:41.816596Z" } }, "outputs": [ diff --git a/notebooks/nmodl-sympy-solver-cnexp.ipynb b/notebooks/nmodl-sympy-solver-cnexp.ipynb index e96b3f73c..2f81dcc33 100644 --- a/notebooks/nmodl-sympy-solver-cnexp.ipynb +++ b/notebooks/nmodl-sympy-solver-cnexp.ipynb @@ -62,10 +62,10 @@ "execution_count": 1, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:50.684184Z", - "iopub.status.busy": "2024-10-03T12:10:50.683982Z", - "iopub.status.idle": "2024-10-03T12:10:51.470570Z", - "shell.execute_reply": "2024-10-03T12:10:51.469765Z" + "iopub.execute_input": "2024-10-03T12:53:43.573943Z", + "iopub.status.busy": "2024-10-03T12:53:43.573742Z", + "iopub.status.idle": "2024-10-03T12:53:44.357679Z", + "shell.execute_reply": "2024-10-03T12:53:44.356869Z" } }, "outputs": [], @@ -79,10 +79,10 @@ "execution_count": 2, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:51.472942Z", - "iopub.status.busy": "2024-10-03T12:10:51.472717Z", - "iopub.status.idle": "2024-10-03T12:10:51.503703Z", - "shell.execute_reply": "2024-10-03T12:10:51.503060Z" + "iopub.execute_input": "2024-10-03T12:53:44.360155Z", + "iopub.status.busy": "2024-10-03T12:53:44.359887Z", + "iopub.status.idle": "2024-10-03T12:53:44.390525Z", + "shell.execute_reply": "2024-10-03T12:53:44.389779Z" } }, "outputs": [], @@ -123,10 +123,10 @@ "execution_count": 3, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:51.505921Z", - "iopub.status.busy": "2024-10-03T12:10:51.505596Z", - "iopub.status.idle": "2024-10-03T12:10:51.923469Z", - "shell.execute_reply": "2024-10-03T12:10:51.922780Z" + "iopub.execute_input": "2024-10-03T12:53:44.392893Z", + "iopub.status.busy": "2024-10-03T12:53:44.392379Z", + "iopub.status.idle": "2024-10-03T12:53:44.806243Z", + "shell.execute_reply": "2024-10-03T12:53:44.805540Z" } }, "outputs": [ @@ -165,10 +165,10 @@ "execution_count": 4, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:51.925816Z", - "iopub.status.busy": "2024-10-03T12:10:51.925393Z", - "iopub.status.idle": "2024-10-03T12:10:52.037064Z", - "shell.execute_reply": "2024-10-03T12:10:52.036459Z" + "iopub.execute_input": "2024-10-03T12:53:44.808450Z", + "iopub.status.busy": "2024-10-03T12:53:44.808054Z", + "iopub.status.idle": "2024-10-03T12:53:44.918352Z", + "shell.execute_reply": "2024-10-03T12:53:44.917681Z" } }, "outputs": [ @@ -207,10 +207,10 @@ "execution_count": 5, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:52.039411Z", - "iopub.status.busy": "2024-10-03T12:10:52.039012Z", - "iopub.status.idle": "2024-10-03T12:10:52.237940Z", - "shell.execute_reply": "2024-10-03T12:10:52.237307Z" + "iopub.execute_input": "2024-10-03T12:53:44.920505Z", + "iopub.status.busy": "2024-10-03T12:53:44.920123Z", + "iopub.status.idle": "2024-10-03T12:53:45.119585Z", + "shell.execute_reply": "2024-10-03T12:53:45.119019Z" } }, "outputs": [ @@ -255,10 +255,10 @@ "execution_count": 6, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:52.240132Z", - "iopub.status.busy": "2024-10-03T12:10:52.239729Z", - "iopub.status.idle": "2024-10-03T12:10:52.399368Z", - "shell.execute_reply": "2024-10-03T12:10:52.398691Z" + "iopub.execute_input": "2024-10-03T12:53:45.121727Z", + "iopub.status.busy": "2024-10-03T12:53:45.121332Z", + "iopub.status.idle": "2024-10-03T12:53:45.279371Z", + "shell.execute_reply": "2024-10-03T12:53:45.278824Z" } }, "outputs": [ @@ -303,10 +303,10 @@ "execution_count": 7, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:52.401647Z", - "iopub.status.busy": "2024-10-03T12:10:52.401250Z", - "iopub.status.idle": "2024-10-03T12:10:54.134217Z", - "shell.execute_reply": "2024-10-03T12:10:54.133588Z" + "iopub.execute_input": "2024-10-03T12:53:45.281552Z", + "iopub.status.busy": "2024-10-03T12:53:45.281164Z", + "iopub.status.idle": "2024-10-03T12:53:47.019572Z", + "shell.execute_reply": "2024-10-03T12:53:47.018921Z" } }, "outputs": [ @@ -351,10 +351,10 @@ "execution_count": 8, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:54.136580Z", - "iopub.status.busy": "2024-10-03T12:10:54.136189Z", - "iopub.status.idle": "2024-10-03T12:10:56.358843Z", - "shell.execute_reply": "2024-10-03T12:10:56.358160Z" + "iopub.execute_input": "2024-10-03T12:53:47.021908Z", + "iopub.status.busy": "2024-10-03T12:53:47.021515Z", + "iopub.status.idle": "2024-10-03T12:53:49.225877Z", + "shell.execute_reply": "2024-10-03T12:53:49.225246Z" } }, "outputs": [ diff --git a/notebooks/nmodl-sympy-solver-derivimplicit.ipynb b/notebooks/nmodl-sympy-solver-derivimplicit.ipynb index 0b6073897..78571a3eb 100644 --- a/notebooks/nmodl-sympy-solver-derivimplicit.ipynb +++ b/notebooks/nmodl-sympy-solver-derivimplicit.ipynb @@ -39,10 +39,10 @@ "execution_count": 1, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:58.062040Z", - "iopub.status.busy": "2024-10-03T12:10:58.061841Z", - "iopub.status.idle": "2024-10-03T12:10:58.857615Z", - "shell.execute_reply": "2024-10-03T12:10:58.856804Z" + "iopub.execute_input": "2024-10-03T12:53:50.936877Z", + "iopub.status.busy": "2024-10-03T12:53:50.936699Z", + "iopub.status.idle": "2024-10-03T12:53:51.725504Z", + "shell.execute_reply": "2024-10-03T12:53:51.724618Z" } }, "outputs": [], @@ -56,10 +56,10 @@ "execution_count": 2, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:58.860331Z", - "iopub.status.busy": "2024-10-03T12:10:58.859904Z", - "iopub.status.idle": "2024-10-03T12:10:58.890298Z", - "shell.execute_reply": "2024-10-03T12:10:58.889661Z" + "iopub.execute_input": "2024-10-03T12:53:51.728188Z", + "iopub.status.busy": "2024-10-03T12:53:51.727968Z", + "iopub.status.idle": "2024-10-03T12:53:51.758304Z", + "shell.execute_reply": "2024-10-03T12:53:51.757669Z" } }, "outputs": [], @@ -100,10 +100,10 @@ "execution_count": 3, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:58.892627Z", - "iopub.status.busy": "2024-10-03T12:10:58.892278Z", - "iopub.status.idle": "2024-10-03T12:10:59.378049Z", - "shell.execute_reply": "2024-10-03T12:10:59.377323Z" + "iopub.execute_input": "2024-10-03T12:53:51.760722Z", + "iopub.status.busy": "2024-10-03T12:53:51.760220Z", + "iopub.status.idle": "2024-10-03T12:53:52.247959Z", + "shell.execute_reply": "2024-10-03T12:53:52.247313Z" } }, "outputs": [ @@ -165,10 +165,10 @@ "execution_count": 4, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:10:59.380321Z", - "iopub.status.busy": "2024-10-03T12:10:59.379887Z", - "iopub.status.idle": "2024-10-03T12:10:59.676667Z", - "shell.execute_reply": "2024-10-03T12:10:59.676016Z" + "iopub.execute_input": "2024-10-03T12:53:52.250123Z", + "iopub.status.busy": "2024-10-03T12:53:52.249846Z", + "iopub.status.idle": "2024-10-03T12:53:52.549588Z", + "shell.execute_reply": "2024-10-03T12:53:52.548945Z" } }, "outputs": [ diff --git a/notebooks/nmodl-sympy-solver-sparse.ipynb b/notebooks/nmodl-sympy-solver-sparse.ipynb index 4d80d0a95..36a7903cb 100644 --- a/notebooks/nmodl-sympy-solver-sparse.ipynb +++ b/notebooks/nmodl-sympy-solver-sparse.ipynb @@ -39,10 +39,10 @@ "execution_count": 1, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:11:01.034583Z", - "iopub.status.busy": "2024-10-03T12:11:01.034378Z", - "iopub.status.idle": "2024-10-03T12:11:01.836621Z", - "shell.execute_reply": "2024-10-03T12:11:01.835732Z" + "iopub.execute_input": "2024-10-03T12:53:54.044216Z", + "iopub.status.busy": "2024-10-03T12:53:54.044023Z", + "iopub.status.idle": "2024-10-03T12:53:54.862627Z", + "shell.execute_reply": "2024-10-03T12:53:54.861791Z" } }, "outputs": [], @@ -56,10 +56,10 @@ "execution_count": 2, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:11:01.839640Z", - "iopub.status.busy": "2024-10-03T12:11:01.839124Z", - "iopub.status.idle": "2024-10-03T12:11:01.869534Z", - "shell.execute_reply": "2024-10-03T12:11:01.868891Z" + "iopub.execute_input": "2024-10-03T12:53:54.865140Z", + "iopub.status.busy": "2024-10-03T12:53:54.864902Z", + "iopub.status.idle": "2024-10-03T12:53:54.897021Z", + "shell.execute_reply": "2024-10-03T12:53:54.896211Z" } }, "outputs": [], @@ -100,10 +100,10 @@ "execution_count": 3, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:11:01.871726Z", - "iopub.status.busy": "2024-10-03T12:11:01.871396Z", - "iopub.status.idle": "2024-10-03T12:11:02.361982Z", - "shell.execute_reply": "2024-10-03T12:11:02.361299Z" + "iopub.execute_input": "2024-10-03T12:53:54.899659Z", + "iopub.status.busy": "2024-10-03T12:53:54.899396Z", + "iopub.status.idle": "2024-10-03T12:53:55.389147Z", + "shell.execute_reply": "2024-10-03T12:53:55.388441Z" } }, "outputs": [ @@ -165,10 +165,10 @@ "execution_count": 4, "metadata": { "execution": { - "iopub.execute_input": "2024-10-03T12:11:02.364448Z", - "iopub.status.busy": "2024-10-03T12:11:02.363978Z", - "iopub.status.idle": "2024-10-03T12:11:02.659972Z", - "shell.execute_reply": "2024-10-03T12:11:02.659263Z" + "iopub.execute_input": "2024-10-03T12:53:55.391353Z", + "iopub.status.busy": "2024-10-03T12:53:55.391095Z", + "iopub.status.idle": "2024-10-03T12:53:55.686550Z", + "shell.execute_reply": "2024-10-03T12:53:55.685825Z" } }, "outputs": [