Las celdas se puede generar con ctrl+c s, la cual genera el texto:
dentro de este texto se ponen el codigo python.
Para ejecutar la celda se hace: ctrl+c ctrl+c
Al ejecutar se manda el codigo de la celda a una terminal. Esto se maneja a traves de una terminal, la cual conviene tener a la vista, en general suelo hacer ctrl+x 3 para que me parta la ventana emacs en dos columnas y luego en la ventana emacs de la derecha pongo la terminal python (ctrl + right para ir a la ventana, y alt right/left para buscar la terminal entre los buffers).
Para graficar se hace:
plt.savefig(plot_filename) plot_filename
Eso hace que se genere link con la figura y si he puesto el cabezal:
me pondra las figuras embebidas.
Trabajar con orgmode permite tener el codigo estructurado jerarquicamente por lo que
o con shift-tab me va a esconder todo el codigo/celdas y dejar solo los titulos.
Por otro lado tambien tengo las posibilidades de exportar el archivo a latex o html, mezclando con ecuaciones matematicas y demas cuestiones.
Ejemplo de codigo en este formato notebook lo tengo en:
file:///home/pulido/ass/modide/pierre/rnn.html
Esto se puede facilmente utilizar remotamente ya sea con la terminal emacs en el servidor remoto y en ese caso se trabaja directamente en el remoto muy eficientemente (excepto la posiblidad de exportar los graficos) o tambien usando emacs tramp. En este caso se podria transferir los graficos en forma relativamente transparente sin embargo se me cual el emacs numerosas veces (perdiendo lo que no estaba grabado) y no lo recomiendo.
Tambien hay que tener cuidado cuando requiere de mucho tiempo de ejecucion porque en ese caso se queda pensando y no me deja editar ni ese ni otros archivos. Existe la posibilidad de asyncronomous aunque no se si eso se puede utilizar con las sesiones.
Notar que se puede usar multiples sesiones directamente poniendoles un nombre a cada una de ellas (entiendo esto genera un interprete python por cada sesion?).
Si se quiere mirar todos las posibilidades de salida de los resultados se pueden encontrar en el manual de orgmode:
https://orgmode.org/manual/Results-of-Evaluation.html
En el interprete puedo consultar sobre las shape y los valores de variables, por el help y demas.
Por alguna razon he intentado con el ipython como:
sin embargo este no me deja la terminal abierta (no la veo).
Una alternativa seria definir el python interprete de orgmode con python -m ipython aunque no lo he probado.
Generalmente si lo que hay que ejecutar es muy largo conviene que sea asyncronimo async para que se pueda seguir editando. The ob-async package does not support the :session header, but ob-session-async does and it was merged into the standard library as of Org 9.5.
(setq org-edit-src-content-indentation 0) (org-babel-do-load-languages 'org-babel-load-languages '((python . t) (latex . t) (shell . t) (ipython . t))) (setq org-babel-python-command "python3");; (setq org-babel-ipython-command "ipython3");; (defun insert-debug () "Insert debug python." (interactive) (newline-and-indent) (insert "import pdb; pdb.set_trace()") ) (global-set-key "\C-cd" 'insert-debug) ;;;; Para generar una celda python con el begin_src. (add-hook 'org-mode-hook (lambda () ;; keybinding for inserting code blocks (local-set-key (kbd "C-c s") 'org-insert-src-block))) (global-set-key "\C-cs" 'org-insert-src-block) (defun org-insert-src-block () (interactive) (insert "#+BEGIN_SRC python :session :results output """#+END_SRC""" ") (forward-line -3) (goto-char (line-end-position)) ) ;;
Tuve que comentar la indentacion que tenia en python porque me generaba problemas en el org-mode:
;;(custom-set-variables ;; '(python-guess-indent nil) ;; '(python-indent 4))
Se puede exportar los pedazos de codigo a un archivo para ejecutar codigo:
https://orgmode.org/manual/Extracting-Source-Code.html
En ese caso hay que agregar al cabezal: :tangle "init.el"
``