tab
is defined for clause atoms, txt
for clauses
.
We want to see how their values hang together.
We use an MQL query to get all clauses with their embedded clauses.
import sys
import collections
import subprocess
from lxml import etree
import laf
from laf.fabric import LafFabric
from etcbc.preprocess import prepare
from etcbc.mql import MQL
fabric = LafFabric()
0.00s This is LAF-Fabric 4.4.7 API reference: http://laf-fabric.readthedocs.org/en/latest/texts/API-reference.html Feature doc: http://shebanq-doc.readthedocs.org/en/latest/texts/welcome.html
API = fabric.load('etcbc4', '--', 'tabtxt', {
"xmlids": {"node": False, "edge": False},
"features": ('''
oid otype monads
tab txt
book chapter verse
''','''
'''),
"prepare": prepare,
}, verbose='DETAIL')
exec(fabric.localnames.format(var='fabric'))
Q = MQL(API)
0.00s LOADING API: please wait ... 0.00s DETAIL: COMPILING m: UP TO DATE 0.00s INFO: USING DATA COMPILED AT: 2014-07-23T09-31-37 0.00s DETAIL: COMPILING a: UP TO DATE 0.01s DETAIL: load main: G.node_anchor_min 0.09s DETAIL: load main: G.node_anchor_max 0.15s DETAIL: load main: G.node_sort 0.20s DETAIL: load main: G.node_sort_inv 0.63s DETAIL: load main: G.edges_from 0.69s DETAIL: load main: G.edges_to 0.77s DETAIL: load main: F.etcbc4_db_monads [node] 1.51s DETAIL: load main: F.etcbc4_db_oid [node] 2.20s DETAIL: load main: F.etcbc4_db_otype [node] 3.20s DETAIL: load main: F.etcbc4_ft_tab [node] 3.25s DETAIL: load main: F.etcbc4_ft_txt [node] 3.29s DETAIL: load main: F.etcbc4_sft_book [node] 3.30s DETAIL: load main: F.etcbc4_sft_chapter [node] 3.32s DETAIL: load main: F.etcbc4_sft_verse [node] 3.33s LOGFILE=/Users/dirk/SURFdrive/laf-fabric-output/etcbc4/tabtxt/__log__tabtxt.txt 3.33s DETAIL: prep prep: G.node_sort 3.40s DETAIL: prep prep: G.node_sort_inv 3.89s INFO: DATA LOADED FROM SOURCE etcbc4 AND ANNOX -- FOR TASK tabtxt AT 2015-04-17T12-35-37
query = '''
select all objects where
[book [chapter [verse
[clause
[clause_atom]
]
]]]
'''
sheaf = Q.mql(query)
outf = outfile('tabtxt.txt')
maxtxt = 0
maxtab = 0
for ((bk, ((ch, ((vs, ((c, ((ca,),)),)),)),)),) in sheaf.results():
txt = F.txt.v(c)
tab = F.tab.v(ca)
ntxt = len(txt)
ntab = int(tab)
if ntxt > maxtxt: maxtxt = ntxt
if ntab > maxtab: maxtab = ntab
passage = '{:<20} {:>3}:{:>3}'.format(F.book.v(bk), F.chapter.v(ch), F.verse.v(vs))
outf.write('{:<28} {:>10}={:<10}\n'.format(passage, txt, tab))
outf.close()
print('max TXT = {}; max TAB = {}'.format(maxtxt, maxtab))
max TXT = 7; max TAB = 29