Skip to content

Commit

Permalink
Help output
Browse files Browse the repository at this point in the history
  • Loading branch information
thvitt committed Aug 1, 2018
1 parent 66e057a commit fa6c95b
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 3 deletions.
2 changes: 2 additions & 0 deletions graph.py
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,8 @@ def macrogenesis_graphs() -> MacrogenesisInfo:
cycles = list(nx.simple_cycles(dag))
logger.error('It contains %d simple cycles', len(cycles))

logger.info('Removed %d of the original %d edges', len(all_conflicting_edges), len(working.edges))

closure = nx.transitive_closure(dag)

return MacrogenesisInfo(base, working, dag, closure, conflicts)
Expand Down
3 changes: 2 additions & 1 deletion main.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,15 @@
import sys

import graph
from report import report_components, report_refs, report_missing, report_index, report_conflicts
from report import report_components, report_refs, report_missing, report_index, report_conflicts, report_help
from visualize import render_all

logger = logging.getLogger('main')


def _main(argv=sys.argv):
graphs = graph.macrogenesis_graphs()
report_help()
report_refs(graphs)
report_missing(graphs)
report_components(graphs)
Expand Down
64 changes: 64 additions & 0 deletions report.py
Original file line number Diff line number Diff line change
Expand Up @@ -328,6 +328,7 @@ def report_index():
<a href="conflicts" class="pure-button pure-button-tile">entfernte Relationen</a>
<a href="components" class="pure-button pure-button-tile">Komponenten</a>
<a href="missing" class="pure-button pure-button-tile">Fehlendes</a>
<a href="help" class="pure-button pure-button-tile">Legende</a>
</p>
</article>
Expand All @@ -337,3 +338,66 @@ def report_index():
</section>
"""
write_html(target / "index.php", report)



def report_help():
def demo_graph(u, v, extend=None, **edge_attr) -> nx.MultiDiGraph:
G = nx.MultiDiGraph() if extend is None else extend.copy()
G.add_edge(u, v, **edge_attr)
return G

w1 = Witness({'uri': 'faust://help/wit1', 'sigil': 'Zeuge 1', 'sigil_t': 'Zeuge_1'})
w2 = Witness({'uri': 'faust://help/wit2', 'sigil': 'Zeuge 2', 'sigil_t': 'Zeuge_2'})
d1 = date(1799, 1, 17)
d2 = date(1799, 2, 5)
d3 = date(1799, 1, 28)

g1 = demo_graph(w1, w2, kind='temp-pre', label='Quelle 1')
g1a = g1.copy()
g1a.add_edge(w2, w1, kind='temp-pre', delete=True, label='Quelle 2')
g2 = demo_graph(w1, w2, kind='temp-syn', label='Quelle 2')
g3 = demo_graph(d1 - DAY, w1, kind='not_before', source='Quelle 1')
g3.add_edge(w1, d2+DAY, kind='not_after', source='Quelle 1')
g4 = demo_graph(d1 - DAY, w1, kind='from_', source='Quelle 2')
g4.add_edge(w1, d2+DAY, kind='to_', source='Quelle 2')
g5 = demo_graph(d3 - DAY, w2, kind='when', source='Quelle 2')
g5.add_edge(w2, d3+DAY, kind='when', source='Quelle 2')

help_graphs = dict(pre=g1, conflict=g1a, syn=g2, dating=g3, interval=g4, when=g5)
for name, graph in help_graphs.items():
write_dot(graph, str(target / f'help-{name}.dot'))

report = f"""
<p>Die Graphen repräsentieren Aussagen aus der Literatur zu zeitlichen Verhältnissen von Zeugen.</p>
<p>Die <strong>Zeugen</strong> sind durch Ovale mit der Sigle oder Inskriptionsbezeichnung repräsentiert.
Zeugen, die nicht in der Edition sind, steht <code>siglentyp: </code> voran. Die Zeugenbezeichnungen
sind klickbar und führen zur Makrogeneseseite des entsprechenden Zeugen. Verwenden Sie den Link in der
Spalte <em>Edition</em> der oberen Tabelle, um zur Darstellung des Zeugen in der Dokumentenansicht zu
gelangen.</p>
<p><strong>Pfeile</strong> bedeuten immer <em>zeitlich vor</em>. Im Vergleich zu termini a quo bzw. ad quem
sind die Datumsangaben deshalb um einen Tag versetzt.</p>
<table class="pure-table">
<thead><th>Graph</th><th>Bedeutung</th></thead>
<tbody>
<tr><td><img src="help-pre.svg" /></td>
<td>Laut Quelle 1 entstand {w1} vor {w2}</td></tr>
<tr><td><img src="help-conflict.svg" /></td>
<td>Laut Quelle 1 entstand {w1} vor {w2},
laut Quelle 2 entstand {w2} vor {w1}.
Diese Aussage von Quelle 2 wird nicht berücksichtigt.</td></tr>
<tr><td><img src="help-syn.svg"/></td>
<td>Laut Quelle 2 entstand {w1} etwa zeitgleich zu {w2}.</td></tr>
<tr><td><img src="help-dating.svg"/></td>
<td>Laut Quelle 1 entstand {w1} nicht vor {d1} und nicht nach {d2}.
Der gepunktete Pfeil repräsentiert den Zeitstrahl, er führt immer zum nächsten im Graph repräsentierten Datum.
</td></tr>
<tr><td><img src="help-interval.svg"/></td>
<td>Laut Quelle 2 wurde vom {d1} bis zum {d2} an {w1} gearbeitet.</td></tr>
<tr><td><img src="help-when.svg"/></td>
<td>Laut Quelle 2 entstand {w2} am {d3}.</td></tr>
</tbody>
</table>
"""

write_html(target / 'help.php', report, 'Legende')
5 changes: 3 additions & 2 deletions visualize.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
from datetime import date
from multiprocessing import Queue
from multiprocessing.pool import Pool

import networkx as nx
Expand All @@ -9,8 +8,8 @@
from tqdm import tqdm

from datings import BiblSource, add_timeline_edges
from uris import Reference
from faust_logging import logging
from uris import Reference

logger = logging.getLogger()

Expand Down Expand Up @@ -148,3 +147,5 @@ def render_all():
result = list(tqdm(pool.imap_unordered(render_file, dots), desc='Rendering', total=len(dots), unit=' SVGs'))
failcount = result.count(None)
logger.info('Rendered %d SVGs, %d failed', len(result) - failcount, failcount)


0 comments on commit fa6c95b

Please sign in to comment.