From ec01b681d7135918f9e25f7f7131497f2adeb0fe Mon Sep 17 00:00:00 2001 From: Agah Date: Thu, 12 Dec 2024 07:29:03 -0500 Subject: [PATCH] Add markdown and improve myst.yml --- _toc.yml | 2 +- content/figure_2.md | 114 ++++++++++++++++++++++++++++++++++++++++++++ myst.yml | 68 +++++++++++++++++++++----- static/favicon.ico | Bin 0 -> 15086 bytes static/logo.png | Bin 0 -> 4614 bytes 5 files changed, 170 insertions(+), 14 deletions(-) create mode 100644 content/figure_2.md create mode 100644 static/favicon.ico create mode 100644 static/logo.png diff --git a/_toc.yml b/_toc.yml index d2dce8a..69f1882 100644 --- a/_toc.yml +++ b/_toc.yml @@ -2,4 +2,4 @@ format: jb-book root: paper.md chapters: - file: content/figure_1.ipynb - - file: content/figure_2.ipynb \ No newline at end of file + - file: content/figure_2.md \ No newline at end of file diff --git a/content/figure_2.md b/content/figure_2.md new file mode 100644 index 0000000..774978f --- /dev/null +++ b/content/figure_2.md @@ -0,0 +1,114 @@ +--- +kernelspec: + name: python3 + display_name: 'Python 3' +--- + +## Jupyter Notebooks are fun, but... + +> They not necessarily the best format for comparing changes across commits. + +A more diff-friendly way to write your executable content is to use a markdown file with code blocks! + +:::{admonition} Kernel Specification +As you can see at the top of the file, we have a kernel specification in the front matter of the file. This tells MyST builder to use the `python3` kernel for executing the code cells. Needless to say, the specified kernel must be available in your runtime environment (`binder` folder). +::: + +The blow code cell importing libraries wil not be visible in the rendered MyST document, because we have specified the `remove-input` tag. You can find the full documentation on executable markdown files [here](https://mystmd.org/guide/notebooks-with-markdown#kernel-specification). + +```{code-cell} python +:tags: remove-input +import plotly.graph_objects as go +import networkx as nx +import plotly.io as pio +pio.renderers.default = "plotly_mimetype" + +G = nx.random_geometric_graph(200, 0.125) +``` + +Now onto the next code cell, which will be visible in the rendered document. + +```{code-cell} python +edge_x = [] +edge_y = [] +for edge in G.edges(): + x0, y0 = G.nodes[edge[0]]['pos'] + x1, y1 = G.nodes[edge[1]]['pos'] + edge_x.append(x0) + edge_x.append(x1) + edge_x.append(None) + edge_y.append(y0) + edge_y.append(y1) + edge_y.append(None) + +edge_trace = go.Scatter( + x=edge_x, y=edge_y, + line=dict(width=0.5, color='#888'), + hoverinfo='none', + mode='lines') + +node_x = [] +node_y = [] +for node in G.nodes(): + x, y = G.nodes[node]['pos'] + node_x.append(x) + node_y.append(y) + +node_trace = go.Scatter( + x=node_x, y=node_y, + mode='markers', + hoverinfo='text', + marker=dict( + showscale=True, + # colorscale options + #'Greys' | 'YlGnBu' | 'Greens' | 'YlOrRd' | 'Bluered' | 'RdBu' | + #'Reds' | 'Blues' | 'Picnic' | 'Rainbow' | 'Portland' | 'Jet' | + #'Hot' | 'Blackbody' | 'Earth' | 'Electric' | 'Viridis' | + colorscale='YlGnBu', + reversescale=True, + color=[], + size=10, + colorbar=dict( + thickness=15, + title='Node Connections', + xanchor='left', + titleside='right' + ), + line_width=2)) + +node_adjacencies = [] +node_text = [] +for node, adjacencies in enumerate(G.adjacency()): + node_adjacencies.append(len(adjacencies[1])) + node_text.append('# of connections: '+str(len(adjacencies[1]))) + +node_trace.marker.color = node_adjacencies +node_trace.text = node_text +``` + +The next code cell will be generating the output we are interested in! We will `label` it, so that we can embed its output in the body of our main MyST article. That being said, depending on the purpose of your document (e.g., if you'd like to use the `book-theme` for an interactive tutorial) you may not be interested in embedding the output of a code cell. + +```{code-cell} python +#| label: fig2cell + +fig = go.Figure(data=[edge_trace, node_trace], + layout=go.Layout( + height = 600, + title='
Network graph made with Python', + titlefont_size=16, + showlegend=False, + hovermode='closest', + margin=dict(b=20,l=5,r=5,t=40), + annotations=[ dict( + text="Python code: https://plotly.com/python/network-graphs/", + showarrow=False, + xref="paper", yref="paper", + x=0.005, y=-0.002 ) ], + xaxis=dict(showgrid=False, zeroline=False, showticklabels=False), + yaxis=dict(showgrid=False, zeroline=False, showticklabels=False)) + ) +fig.show() +``` + + + diff --git a/myst.yml b/myst.yml index ed87613..89afb5b 100644 --- a/myst.yml +++ b/myst.yml @@ -5,41 +5,83 @@ project: subtitle: A template for reproducible preprints thebe: binder: - url: https://binder-preview.conp.cloud - repo: neurolibre/mystical-article - ref: HEAD + url: https://binder-preview.conp.cloud # NeuroLibre binder URL, production will override this. + repo: neurolibre/mystical-article # Production will override this. + ref: HEAD # Production will override this. authors: - name: Agah Karakuzu orcid: 0000-0001-7283-271X - affiliations: - - NeuroPoly, Polytechnique Montreal, Quebec, Canada - - Montreal Heart Institute, Montreal, Quebec, Canada + affiliations: polymtl; mhi + corresponding: true + email: agah.karakuzu@polymtl.ca + twitter: agahkarakuzu + equal_contributor: true + url: https://agah.dev + github: agahkarakuzu + roles: + - Conceptualization + - Software + - Writing – original draft - name: Robo Neuro - affiliations: - - NeuroLibre, Montreal, Quebec, Canada + affiliations: polymtl + equal_contributor: true + github: roboneurolibre + note: Roboneuro is a friendly publishing bot who fails the Turing test. + roles: + - Project administration + - Writing – review & editing + affiliations: + - id: polymtl + institution: NeuroPoly Lab, Polytechnique Montreal + ror: https://ror.org/05f8d4e86 + isni: 0000 0004 0435 3292 + department: Electrical Engineering + address: 2500 Chem. de Polytechnique + city: Montreal + region: Quebec + country: Canada + postal_code: H3T 1J4 + phone: 1 (514) 340-4711 + - id: mhi + institution: Montreal Heart Institute + ror: https://ror.org/03vs03g62 + isni: 0000 0000 8995 9090 + address: 5000 Rue Belanger + city: Montreal + region: Quebec + country: Canada + postal_code: H1T 1C8 keywords: - reproducible publishing - mystmd - next-gen preprints github: https://github.com/neurolibre/mystical-article banner: static/banner.jpg - venue: Neurolibre - subject: Living Preprint + venue: Neurolibre #Production will override this. + subject: Living Preprint # Production will override this. numbering: headings: true - doi: 10.55458/neurolibre.xxxxx + doi: 10.55458/neurolibre.xxxxx # Production will override this. open_access: true - license: CC-BY-4.0 + license: + - content: CC-BY-4.0 + - code: MIT abbreviations: MyST: Markedly Structured Markdown bibliography: - paper.bib resources: - content/figure1.ipynb - - content/figure2.ipynb + - content/figure2.md site: + template: article-theme # Or book-theme + options: + favicon: static/favicon.ico # Production will override this for branding. + logo: static/logo.png # Production will override this for branding. + twitter: neurolibre template: article-theme +# This section is under development neurolibre: rees: runtime: diff --git a/static/favicon.ico b/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..3c7097c2c786741f702f13711cc5d1f17581d23c GIT binary patch literal 15086 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 BJ6r$& literal 0 HcmV?d00001 diff --git a/static/logo.png b/static/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6e51a5140f7dac010099a8aee14de894a5fc3335 GIT binary patch literal 4614 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