Skip to content

Instantly share code, notes, and snippets.

@rhee
Last active May 16, 2022 01:20
Show Gist options
  • Save rhee/f42aa18c8e3dcb7b6c03c23e750124f7 to your computer and use it in GitHub Desktop.
Save rhee/f42aa18c8e3dcb7b6c03c23e750124f7 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
# coding: utf-8
# // update: 2022-04-15 - single-cell python version
# // gist: https://gist.github.com/rhee/f42aa18c8e3dcb7b6c03c23e750124f7
with open('__nb-convert__.bash', 'w') as fout:
fout.write('''#!/bin/bash
try_nbconvert() {
local prefix="$1"; shift;
if test ! -z "$prefix"
then
if test -x "$prefix/bin/jupyter-nbconvert"
then
exec "$prefix/bin/jupyter" "nbconvert" "$@"
fi
if test -x "$prefix/Scripts/jupyter-nbconvert.exe"
then
exec "$prefix/Scripts/jupyter.exe" "nbconvert" "$@"
fi
fi
}
for prefix in "$CONDA_PREFIX" "$CONDA_PREFIX_1" "$CONDA_PREFIX_2" \
"$CONDA_PREFIX_3" "$CONDA_PREFIX_4" "$CONDA_PREFIX_5" \
"$CONDA_PREFIX_6" "$CONDA_PREFIX_7" "$CONDA_PREFIX_8" \
"$CONDA_PREFIX_9"
do
test -z "$prefix" && break
try_nbconvert "$prefix" "$@"
done
for prefix in "/opt/conda" "/opt/conda/envs/jupyter"
do
try_nbconvert "$prefix" "$@"
done
for prefix in "$(dirname "$CONDA_PYTHON_EXE")" "$(dirname $(dirname "$CONDA_PYTHON_EXE"))"
do
try_nbconvert "$prefix" "$@"
done
echo "nbconvert command not found. abort." 1>&2
exit 1
''')
from IPython.display import display, update_display, clear_output, Javascript
# add flag
display(Javascript('''
window.nb_export_html_flag = true
console.log('nb_export_html_flag set:', window.nb_export_html_flag)
'''),display_id='flag_display')
from os.path import realpath
from socket import gethostname
report_dir = realpath('report/{:s}'.format(gethostname()))+'/'
print('report_dir:',report_dir)
import os
os.makedirs(report_dir,exist_ok=True)
from datetime import datetime
exp_datetime = datetime.now().strftime('%Y%m%d_%H%M%S')
print('exp_datetime:',exp_datetime)
script = '''
require(["base/js/namespace"], function(IPython) {
if (window.nb_export_html_flag) {
const nb_name = IPython.notebook.notebook_name.replace( /\.ipynb$/, '');
console.log('nb_name defined:',nb_name)
//const exp_datetime = new Date().toISOString().replaceAll(':','-')
const save_cmd = '!' +
'bash __nb-convert__.bash --to html --stdout "' + nb_name + '.ipynb"' +
' > "'''+report_dir+'''' + nb_name + '--'''+exp_datetime+'''.html"'
console.log('save_cmd defined:',save_cmd)
IPython.notebook.save_checkpoint().then(function(){
if (window.nb_export_html_flag) {
IPython.notebook.kernel.execute(save_cmd,{
iopub: {
output: function(response) {
console.log(response.content)
//IPython.notebook.kernel.execute('import os; os._exit(0)')
window.nb_export_html_flag = false /// remove flag 1차
const remove_flag_cmd = 'update_display(None, display_id="flag_display") ### /// remove flag 2차'
IPython.notebook.kernel.execute(remove_flag_cmd)
}}})
console.log('save_cmd executed:',save_cmd)
}
})
}
})
'''
# execute nb-convert.bash
display(Javascript(script))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment