Skip to content

Commit bd746c0

Browse files
committed
update literature page, more subcategories
1 parent d899e14 commit bd746c0

File tree

2 files changed

+209
-190
lines changed

2 files changed

+209
-190
lines changed

docs/bib2md.py

Lines changed: 74 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,26 @@
11
# bib2md.py
2-
"""Generate the markdown literature page from bibtex."""
2+
"""Generate the markdown Literature page from bibtex.
3+
4+
Instructions for updating the Literature page:
5+
6+
1. Add BibTeX entries to `docs/literature.bib`.
7+
- Keep the entries sorted by year, then by author last name.
8+
- Authors should be listed with first-then-last names and separated with
9+
"and": `authors = {{First1 Last1 and First2 Last2}},`.
10+
Enclose multi-word names in braces, for example,
11+
`authors = {{Vincent {{van Gogh}} and Balthasar {{van der Pol}}}},`
12+
- Include a "doi" field if applicable.
13+
- Add a "category" field to indicate which section the reference should be
14+
listed under on this page.
15+
16+
2. Add the Google Scholar IDs of each author who has one to the `scholarIDS`
17+
dictionary in `docs/bib2md.py`. This is the unique part of a Google Scholar
18+
profile page url:
19+
`https://scholar.google.com/citations?user=<GoogleScholarID>&hl=en`
20+
21+
Note that `docs/literature.bib` is generated automatically from this file and
22+
is not tracked by git.
23+
"""
324

425
import re
526
import collections
@@ -13,20 +34,51 @@
1334
# Categories to group the references by.
1435
# These are the options for the `categories` field in literature.bib entries.
1536
categories = {
16-
"origin": "Original Paper",
17-
"survey": "Surveys",
18-
"method": "Methodology",
19-
"structure": "Structure Preservation",
20-
"theory": "Theory",
21-
"software": "Software / Implementation",
22-
"application": "Applications",
23-
"thesis": "Dissertations and Theses",
24-
"other": "Other",
37+
"origin": "## Original Paper",
38+
"survey": "## Surveys",
39+
"nonlinear": "## Methodology\n### Lifting and Nonlinearity",
40+
"reprojection": "### Re-projection",
41+
"structure": "### Structure Preservation",
42+
"parametric": "### Parametric Problems",
43+
"statistical": "### Statistical Methods",
44+
"domaindecomp": "### Domain Decomposition",
45+
"manifolds": "### Nonlinear Manifolds",
46+
"scalable": "### Scalability",
47+
"application": "## Applications",
48+
"thesis": "## Dissertations and Theses",
2549
}
2650

27-
# These categories will be subsubsections, not subsections.
28-
subsubsections = {
29-
"structure",
51+
# Extra text to place under the heading before continuing.
52+
details = {
53+
"nonlinear": """Operator Inference learns reduced-order models with
54+
polynomial structure. The methods developed in the following papers focus on
55+
dealing with non-polynomial nonlinearities through variable transformations
56+
(lifting) and/or coupling Operator Inference methods with other approximation
57+
strategies.""",
58+
"reprojection": """In some cases, if the training data are chosen
59+
judiciously, Operator Inference can recover traditional reduced-order models
60+
defined by intrusive projection. The following papers develop and apply this
61+
idea.""",
62+
"structure": """The methods developed in these works augment Operator
63+
Inference so that the resulting reduced-order models automatically inherit
64+
certain properties from the full-order system, such as block structure,
65+
symmetries, energy conservation, gradient structure, and more.""",
66+
"parametric": """Many systems depend on independent parameters that
67+
describe material properties or other physical characteristics of the
68+
phenomenon being modeled. The following papers develop Operator Inference
69+
approaches that are specifically designed for parametric problems.""",
70+
"statistical": """These papers focus on problems with noisy or missing
71+
data, stochastic systems, and methods for constructing probabilistic
72+
reduced-order models with Operator Inference.""",
73+
"domaindecomp": """The methods in the following papers focus on scalability
74+
and accuracy improvements by decomposition spatial or latent space domains and
75+
learning a coupled system of reduced-order models.""",
76+
"manifolds": """Traditional model reduction methods approximate the
77+
high-dimensional system state with a low-dimensional linear (or affine)
78+
representation. The methods in these papers explore using nonlinear
79+
low-dimensional representations in the context of Operator Inference.""",
80+
"scalable": """These works focus on the computational challenge of applying
81+
Operator Inference to large-scale problems.""",
3082
}
3183

3284
# Author citation IDs (https://scholar.google.com/citation?user=<this ID>)
@@ -106,15 +158,16 @@
106158
HEADER = r"""# Literature
107159
108160
This page lists scholarly publications that develop, extend, or apply
109-
Operator Inference.
161+
Operator Inference, categorized into topics and sorted by publication year,
162+
then by the last name of the first author. Although some could be placed in
163+
multiple categories, each publication is only listed once.
110164
111-
:::{admonition} Add Your Work
165+
:::{admonition} Share Your Work!
112166
:class: hint
113167
114168
Don't see your publication?
115169
[**Click here**](https://forms.gle/BgZK4b4DfuaPsGFd7)
116-
to submit a request to add entries to this page,
117-
or see the [instructions for adding entries with git](lit:add-your-work).
170+
to submit a request to add entries to this page.
118171
:::
119172
"""
120173

@@ -136,43 +189,6 @@
136189
{}
137190
```
138191
:::
139-
140-
(lit:add-your-work)=
141-
## Add Your Work
142-
143-
[**Click here**](https://forms.gle/BgZK4b4DfuaPsGFd7)
144-
to submit a request to add entries to this page.
145-
You can also submit entries yourself through a pull request:
146-
147-
1. Fork and clone the repository (see
148-
[How to Contribute](../contributing/how_to_contribute.md)).
149-
2. On a new branch, add BibTeX entries to `docs/literature.bib`.
150-
- Please keep the entries sorted by year, then by author last name.
151-
- Authors should be listed with first-then-last names and separated with
152-
"and":
153-
154-
`authors = {{First1 Last1 and First2 Last2}},`
155-
156-
Enclose multi-word names in braces, for example,
157-
158-
`authors = {{Vincent {{van Gogh}} and Balthasar {{van der Pol}}}},`
159-
- Include a "doi" field if applicable.
160-
- Add a "category" field to indicate which section the reference should be
161-
listed under on this page. Options include `survey`, `method`,
162-
`structure`, `theory`, `software`, `application`, `thesis`, and `other`.
163-
3. Add the Google Scholar IDs of each author who has one to the `scholarIDS`
164-
dictionary in `docs/bib2md.py`. This is the unique part of a Google Scholar
165-
profile page url:
166-
167-
`https://scholar.google.com/citations?user=<GoogleScholarID>&hl=en`
168-
169-
4. Build the documentation with `make docs`, then open
170-
`docs/_build/html/source/opinf/literature.html`
171-
in a browser to verify the additions.
172-
5. Commit the changes, push to your fork, and make a pull request on GitHub.
173-
174-
Note that this page is generated automatically from `docs/literature.bib` and
175-
`docs/bib2md.py` and is not tracked by git.
176192
"""
177193

178194

@@ -328,8 +344,10 @@ def main(bibfile, mdfile):
328344
for cat in categories:
329345
if cat not in sectiontxt:
330346
continue
331-
prefix = "\n###" if cat in subsubsections else "\n##"
332-
outfile.write(f"{prefix} {categories[cat]}\n")
347+
text = f"\n{categories[cat]}\n\n"
348+
if cat in details:
349+
text = f"{text}{details[cat]}\n\n"
350+
outfile.write(text)
333351
outfile.write("\n <p></p>\n".join(sectiontxt[cat]) + "\n")
334352

335353
footer = FOOTER.format(

0 commit comments

Comments
 (0)