In [1]:
from goetia import libgoetia
from goetia.data import load_ukhs
from goetia.prometheus import Instrumentation
from goetia.assembly import Assembler
from cppyy.gbl import std
from cppyy import gbl
import cppyy
import difflib


pythonizor: cDBG<goetia::dBG<goetia::storage::SparseppSetStorage,goetia::hashing::RollingHashShifter> > <class goetia.goetia.cdbg.cDBG<goetia::dBG<goetia::storage::SparseppSetStorage,goetia::hashing::RollingHashShifter> > at 0x5648e48e5608>
sub: <class goetia.goetia.cdbg.cDBG<goetia::dBG<goetia::storage::SparseppSetStorage,goetia::hashing::RollingHashShifter> >.cDBG<goetia::dBG<goetia::storage::SparseppSetStorage,goetia::hashing::RollingHashShifter> >::Graph at 0x5648df36ee68>
['K', '__add__', '__assign__', '__bool__', '__class__', '__delattr__', '__destruct__', '__dict__', '__dir__', '__dispatch__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__mul__', '__ne__', '__new__', '__nonzero__', '__python_owns__', '__radd__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__rsub__', '__rtruediv__', '__setattr__', '__sizeof__', '__smartptr__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__weakref__', 'build_dnode', 'build_unode', 'clear_listeners', 'clip_unode', 'dbg', 'delete_dnode', 'delete_unode', 'delete_unodes_from_tags', 'dnodes_begin', 'dnodes_end', 'extend_unode', 'find_connected_components', 'find_dnode_neighbors', 'find_rc_cnode', 'find_unode_neighbors', 'has_dnode', 'has_unode_end', 'lock_nodes', 'merge_unodes', 'metrics', 'n_decision_nodes', 'n_dnodes', 'n_tags', 'n_unitig_ends', 'n_unitig_nodes', 'n_unodes', 'n_updates', 'notify', 'notify_history_clip', 'notify_history_extend', 'notify_history_merge', 'notify_history_new', 'notify_history_split', 'notify_history_split_circular', 'query_cnode', 'query_dnode', 'query_dnodes', 'query_unode_end', 'query_unode_id', 'query_unode_tag', 'recompute_node_meta', 'register_listener', 'split_unode', 'stop_listeners', 'switch_unode_ends', 'traverse_breadth_first', 'unodes_begin', 'unodes_end', 'validate', 'write', 'write_fasta', 'write_gfa1', 'write_graphml']

In [3]:
from goetia.pythonizors import declarations


---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-3-b7b4d897ab3a> in <module>
----> 1 from goetia.pythonizors import declarations

ImportError: cannot import name 'declarations' from 'goetia.pythonizors' (/home/camille/miniconda/envs/libgoetia/lib/python3.7/site-packages/goetia/pythonizors/__init__.py)

In [2]:
instrumentation = Instrumentation('', expose=False)

In [3]:
G = libgoetia.dBG[libgoetia.storage.SparseppSetStorage, libgoetia.hashing.RollingHashShifter].build(27)

In [6]:
cG = libgoetia.cdbg.cDBG[type(G)].Graph(G, instrumentation.Registry)

In [7]:
cG.n_dnodes


Out[7]:
0

In [4]:
cptor = libgoetia.cdbg.StreamingCompactor[type(G)].Compactor.build(G, instrumentation.Registry)


pythonizor:  StreamingCompactor<goetia::dBG<goetia::storage::SparseppSetStorage,goetia::hashing::RollingHashShifter> > <class goetia.goetia.cdbg.StreamingCompactor<goetia::dBG<goetia::storage::SparseppSetStorage,goetia::hashing::RollingHashShifter> > at 0x5648e5ca52f8>

In [5]:
cptor.Graph.n_dnodes


Out[5]:
0

In [14]:
G.insert_sequence(s)


Out[14]:
17

In [15]:
asm = Assembler(G)

In [18]:
seed = std.string(s[:30])

In [19]:
asm.traverser.set_cursor(seed)


---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-19-d68052fdb736> in <module>
----> 1 asm.traverser.set_cursor(seed)

TypeError: cannot resolve method template call for 'set_cursor'

In [9]:
seq,  (r_state, r_end_hash) = asm.assemble_right(s[:31])

In [10]:
seq


Out[10]:
'AAAAAAAAAAAAAAAGAAAGTGTAGAAAAAAGGTTGGGGGGGGGTTT'

In [13]:
state == libgoetia.TraversalState.STOP_FWD


Out[13]:
True

In [24]:
act[100:200]


Out[24]:
'TGTCGGGCAAGAGAAGTGCTCGCCATAAACGAGGGTGGACCTTTTCCTCCATGTTGGGGACAACTGCGCCGTCTGGGACCGGTAGAGTAAGGTCCCGCTC'

In [25]:
exp[100:200]


Out[25]:
'TGTCGGGCAAGAGAAGTGCTCGCCATAAACGAGGGTGGACCTTTTCCTCCGCCGATGTTGGGGACAACTGCTCTGGGACCGGTAGAGTAAGGTCCCGCTC'

In [13]:
act = 'CCTCGGGATTGCATAGGTAAAATAGCATTAGCCAGCAGTTCGGCCTCGGAGCACCCTGTCACCCGCAAGGGCCATCGGTACGACAGGCAGCCGTAGTTATTGTCGGGCAAGAGAAGTGCTCGCCATAAACGAGGGTGGACCTTTTCCTCCATGTTGGGGACAACTGCGCCGTCTGGGACCGGTAGAGTAAGGTCCCGCTCCGGATATCGACGTCTGGGAAACGAGCCGCGTTACGGGTCTCCAATTTCGAACATCACATCACGAGTCGCTACCCTCATGAGCGCAACGGAGATGGTCGGATAGGAACCACAACTCTGCAGAAGTGAATTTATCAGTCGCCTAGACATATGTATTGCAGACTAAATCTGCTAGGTAAACTACCATGTTGCTCATGCACACGAATCATCGAAAAAATGGCGGAACTGTAAACAAGGTCCGCTTGTTTGCAAAATGTACCGGTCTAGCCGGCCCGAAGTCTCCCGATCGAAGTAATTAGAGCT'

exp = 'CCTCGGGATTGCATAGGTAAAATAGCATTAGCCAGCAGTTCGGCCTCGGAGCACCCTGTCACCCGCAAGGGCCATCGGTACGACAGGCAGCCGTAGTTATTGTCGGGCAAGAGAAGTGCTCGCCATAAACGAGGGTGGACCTTTTCCTCCGCCGATGTTGGGGACAACTGCTCTGGGACCGGTAGAGTAAGGTCCCGCTCCGGATATCGACGTCTGGGAAACGAGCCGCGTTACGGGTCTCCAATTTCGAACATCACATCACGAGTCGCTACCCTCATGAGCGCAACGGAGATGGTCGGATAGGAACCACAACTCTGCAGAAGTGAATTTATCAGTCGCCTAGACATATGTATTGCAGACTAAATCTGCTAGGTAAACTACCATGTTGCTCATGCACACGAATCATCGAAAAAATGGCGGAACTGTAAACAAGGTCCGCTTGTTTGCAAAATGTACCGGTCTAGCCGGCCCGAAGTCTCCCGATCGAAGTAATTAGAGCT'

In [5]:
libgoetia.TraversalState.


Out[5]:
<namespace goetia.goetia.TraversalState at 0x556fd5040268>

In [10]:
state == libgoetia.Traverse[type(G)].State.STOP_FWD


---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-10-79c3e5bc1bd3> in <module>
----> 1 state == libgoetia.Traverse[type(G)].State.STOP_FWD

AttributeError: type object 'int' has no attribute 'STOP_FWD'

In [21]:
libgoetia.Traverse[type(G)].State.STOP_FWD


---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-21-adc4c1d0e829> in <module>
----> 1 libgoetia.Traverse[type(G)].State.STOP_FWD

AttributeError: type object 'State' has no attribute 'STOP_FWD'

In [8]:
G.right_degree(s)


Out[8]:
1

In [8]:
G.clone()


Out[8]:
<goetia.goetia.dBG<goetia::storage::SparseppSetStorage,goetia::hashing::RollingHashShifter> object at 0x55ae38767560 held by shared_ptr<goetia::dBG<goetia::storage::SparseppSetStorage,goetia::hashing::RollingHashShifter> > at 0x55ae34f29c00>

In [2]:
storage_t = libgoetia.storage.BitStorage
signature_t = libgoetia.signatures.UnikmerSignature[storage_t]

In [3]:
ukhs = load_ukhs(31, 8)

In [4]:
sig = signature_t.Signature.build(31, 8, ukhs.__smartptr__(), 10000, 4)

In [5]:
proc = std.make_shared[signature_t.Processor](sig.__smartptr__(), 10000, 100000, 100000)

In [6]:
proc


Out[6]:
<goetia.goetia.signatures.UnikmerSignature<goetia::storage::BitStorage>.UnikmerSignature<goetia::storage::BitStorage>::Processor object at 0x55c72107e5e0 held by shared_ptr<goetia::signatures::UnikmerSignature<goetia::storage::BitStorage>::Processor> at 0x55c71d57fd70>

In [16]:
type(G)


Out[16]:
<class goetia.goetia.dBG<goetia::storage::SparseppSetStorage,goetia::hashing::RollingHashShifter> at 0x55ed277bb6c8>

In [12]:
std.pair[std.vector[libgoetia.hashing.kmer_t], std.vector[libgoetia.hashing.kmer_t]]


Out[12]:
<class cppyy.gbl.std.pair<vector<goetia::hashing::kmer_t>,vector<goetia::hashing::kmer_t> > at 0x55ad9f2d2968>

In [6]:
parser = cppyy.gbl.ParserFactory[goetia.parsing.FastxReader].build('/work/draff/results/simulated/ecoli.0._100_180_1.fq')

In [56]:
path = goetia.Path()

In [44]:
shifter = goetia.hashing.RollingHashShifter(7)

In [58]:
for i in range(5):
    path.clear()
    shifter.get_cursor(path)
    print(asm.to_string(path))


GGATTCG
GGATTCG
GGATTCG
GGATTCG
GGATTCG

In [45]:
for i in range(len(s) - 9 + 1):
    kmer = s[i:i+9]
    shifter.set_cursor(kmer) 
    print(shifter.get(), shifter.hash(kmer))
    #print(kmer, int(asm.degree_left()), int(asm.degree_right()))


16928099823363697171 16928099823363697171
17774349600126154739 17774349600126154739
5432234656955854598 5432234656955854598
15864785342952959926 15864785342952959926
807854437867792248 807854437867792248
503930369671869761 503930369671869761
14846359574385085156 14846359574385085156
6910144570189067695 6910144570189067695
8953154543898151736 8953154543898151736
15784469927269168548 15784469927269168548
12000143714024755448 12000143714024755448
10045950146635431439 10045950146635431439
3219486363132302806 3219486363132302806
11146315393402538954 11146315393402538954
17774349600126154739 17774349600126154739
5432234656955854598 5432234656955854598
15864785342952959926 15864785342952959926
807854437867792248 807854437867792248
503930369671869761 503930369671869761
14846359574385085156 14846359574385085156

In [49]:
shifter = goetia.hashing.RollingHashShifter('AAAAAAA', 7)

In [26]:
shifter.update_right('C')


Out[26]:
17896415738016705498

In [27]:
shifter.get()


Out[27]:
17896415738016705498

In [16]:
storages = ['BitStorage', 'ByteStorage', 'NibbleStorage', 'QFStorage', 'SparseppSetStorage']

def storage_decls(template):

    for storage in storages:
        print(template.format(storage))
    print()
    template = 'extern\n' + template
    for storage in storages:
        print(template.format(storage))

In [10]:
storage_decls('template class goetia::dBG<goetia::storage::{},\n'
              '                          goetia::hashing::RollingHashShifter>;')


template class goetia::dBG<goetia::storage::BitStorage,
                          goetia::hashing::RollingHashShifter>;
template class goetia::dBG<goetia::storage::ByteStorage,
                          goetia::hashing::RollingHashShifter>;
template class goetia::dBG<goetia::storage::NibbleStorage,
                          goetia::hashing::RollingHashShifter>;
template class goetia::dBG<goetia::storage::QFStorage,
                          goetia::hashing::RollingHashShifter>;
template class goetia::dBG<goetia::storage::SparseppSetStorage,
                          goetia::hashing::RollingHashShifter>;

extern
template class goetia::dBG<goetia::storage::BitStorage,
                          goetia::hashing::RollingHashShifter>;
extern
template class goetia::dBG<goetia::storage::ByteStorage,
                          goetia::hashing::RollingHashShifter>;
extern
template class goetia::dBG<goetia::storage::NibbleStorage,
                          goetia::hashing::RollingHashShifter>;
extern
template class goetia::dBG<goetia::storage::QFStorage,
                          goetia::hashing::RollingHashShifter>;
extern
template class goetia::dBG<goetia::storage::SparseppSetStorage,
                          goetia::hashing::RollingHashShifter>;

In [11]:
storage_decls('template class goetia::cdbg::cDBG<goetia::dBG<goetia::storage::{},\n'
              '                                            goetia::hashing::RollingHashShifter>>;')


template class goetia::cdbg::cDBG<goetia::dBG<goetia::storage::BitStorage,
                                            goetia::hashing::RollingHashShifter>>;
template class goetia::cdbg::cDBG<goetia::dBG<goetia::storage::ByteStorage,
                                            goetia::hashing::RollingHashShifter>>;
template class goetia::cdbg::cDBG<goetia::dBG<goetia::storage::NibbleStorage,
                                            goetia::hashing::RollingHashShifter>>;
template class goetia::cdbg::cDBG<goetia::dBG<goetia::storage::QFStorage,
                                            goetia::hashing::RollingHashShifter>>;
template class goetia::cdbg::cDBG<goetia::dBG<goetia::storage::SparseppSetStorage,
                                            goetia::hashing::RollingHashShifter>>;

extern
template class goetia::cdbg::cDBG<goetia::dBG<goetia::storage::BitStorage,
                                            goetia::hashing::RollingHashShifter>>;
extern
template class goetia::cdbg::cDBG<goetia::dBG<goetia::storage::ByteStorage,
                                            goetia::hashing::RollingHashShifter>>;
extern
template class goetia::cdbg::cDBG<goetia::dBG<goetia::storage::NibbleStorage,
                                            goetia::hashing::RollingHashShifter>>;
extern
template class goetia::cdbg::cDBG<goetia::dBG<goetia::storage::QFStorage,
                                            goetia::hashing::RollingHashShifter>>;
extern
template class goetia::cdbg::cDBG<goetia::dBG<goetia::storage::SparseppSetStorage,
                                            goetia::hashing::RollingHashShifter>>;

In [15]:
storage_decls('template class goetia::PdBG<goetia::storage::{}>;')


template class goetia::PdBG<goetia::storage::BitStorage>;
template class goetia::PdBG<goetia::storage::ByteStorage>;
template class goetia::PdBG<goetia::storage::NibbleStorage>;
template class goetia::PdBG<goetia::storage::QFStorage>;
template class goetia::PdBG<goetia::storage::SparseppSetStorage>;

extern
template class goetia::PdBG<goetia::storage::BitStorage>;
extern
template class goetia::PdBG<goetia::storage::ByteStorage>;
extern
template class goetia::PdBG<goetia::storage::NibbleStorage>;
extern
template class goetia::PdBG<goetia::storage::QFStorage>;
extern
template class goetia::PdBG<goetia::storage::SparseppSetStorage>;

In [17]:
storage_decls('template struct goetia::Traverse<goetia::dBG<goetia::storage::{},\n'
          '                                               goetia::hashing::RollingHashShifter>>;')


template struct goetia::Traverse<goetia::dBG<goetia::storage::BitStorage,
                                               goetia::hashing::RollingHashShifter>>;
template struct goetia::Traverse<goetia::dBG<goetia::storage::ByteStorage,
                                               goetia::hashing::RollingHashShifter>>;
template struct goetia::Traverse<goetia::dBG<goetia::storage::NibbleStorage,
                                               goetia::hashing::RollingHashShifter>>;
template struct goetia::Traverse<goetia::dBG<goetia::storage::QFStorage,
                                               goetia::hashing::RollingHashShifter>>;
template struct goetia::Traverse<goetia::dBG<goetia::storage::SparseppSetStorage,
                                               goetia::hashing::RollingHashShifter>>;

extern
template struct goetia::Traverse<goetia::dBG<goetia::storage::BitStorage,
                                               goetia::hashing::RollingHashShifter>>;
extern
template struct goetia::Traverse<goetia::dBG<goetia::storage::ByteStorage,
                                               goetia::hashing::RollingHashShifter>>;
extern
template struct goetia::Traverse<goetia::dBG<goetia::storage::NibbleStorage,
                                               goetia::hashing::RollingHashShifter>>;
extern
template struct goetia::Traverse<goetia::dBG<goetia::storage::QFStorage,
                                               goetia::hashing::RollingHashShifter>>;
extern
template struct goetia::Traverse<goetia::dBG<goetia::storage::SparseppSetStorage,
                                               goetia::hashing::RollingHashShifter>>;

In [23]:
storage_decls('template class goetia::FileConsumer<goetia::dBG<goetia::storage::{},\n'
              '                                              goetia::hashing::RollingHashShifter>>;')


template class goetia::FileConsumer<goetia::dBG<goetia::storage::BitStorage,
                                              goetia::hashing::RollingHashShifter>>;
template class goetia::FileConsumer<goetia::dBG<goetia::storage::ByteStorage,
                                              goetia::hashing::RollingHashShifter>>;
template class goetia::FileConsumer<goetia::dBG<goetia::storage::NibbleStorage,
                                              goetia::hashing::RollingHashShifter>>;
template class goetia::FileConsumer<goetia::dBG<goetia::storage::QFStorage,
                                              goetia::hashing::RollingHashShifter>>;
template class goetia::FileConsumer<goetia::dBG<goetia::storage::SparseppSetStorage,
                                              goetia::hashing::RollingHashShifter>>;

extern
template class goetia::FileConsumer<goetia::dBG<goetia::storage::BitStorage,
                                              goetia::hashing::RollingHashShifter>>;
extern
template class goetia::FileConsumer<goetia::dBG<goetia::storage::ByteStorage,
                                              goetia::hashing::RollingHashShifter>>;
extern
template class goetia::FileConsumer<goetia::dBG<goetia::storage::NibbleStorage,
                                              goetia::hashing::RollingHashShifter>>;
extern
template class goetia::FileConsumer<goetia::dBG<goetia::storage::QFStorage,
                                              goetia::hashing::RollingHashShifter>>;
extern
template class goetia::FileConsumer<goetia::dBG<goetia::storage::SparseppSetStorage,
                                              goetia::hashing::RollingHashShifter>>;

In [24]:
storage_decls('template class goetia::DecisionNodeProcessor<goetia::dBG<goetia::storage::{},\n'
              '                                                       goetia::hashing::RollingHashShifter>>;')


template class goetia::DecisionNodeProcessor<goetia::dBG<goetia::storage::BitStorage,
                                                       goetia::hashing::RollingHashShifter>>;
template class goetia::DecisionNodeProcessor<goetia::dBG<goetia::storage::ByteStorage,
                                                       goetia::hashing::RollingHashShifter>>;
template class goetia::DecisionNodeProcessor<goetia::dBG<goetia::storage::NibbleStorage,
                                                       goetia::hashing::RollingHashShifter>>;
template class goetia::DecisionNodeProcessor<goetia::dBG<goetia::storage::QFStorage,
                                                       goetia::hashing::RollingHashShifter>>;
template class goetia::DecisionNodeProcessor<goetia::dBG<goetia::storage::SparseppSetStorage,
                                                       goetia::hashing::RollingHashShifter>>;

extern
template class goetia::DecisionNodeProcessor<goetia::dBG<goetia::storage::BitStorage,
                                                       goetia::hashing::RollingHashShifter>>;
extern
template class goetia::DecisionNodeProcessor<goetia::dBG<goetia::storage::ByteStorage,
                                                       goetia::hashing::RollingHashShifter>>;
extern
template class goetia::DecisionNodeProcessor<goetia::dBG<goetia::storage::NibbleStorage,
                                                       goetia::hashing::RollingHashShifter>>;
extern
template class goetia::DecisionNodeProcessor<goetia::dBG<goetia::storage::QFStorage,
                                                       goetia::hashing::RollingHashShifter>>;
extern
template class goetia::DecisionNodeProcessor<goetia::dBG<goetia::storage::SparseppSetStorage,
                                                       goetia::hashing::RollingHashShifter>>;

In [26]:
storage_decls('template class goetia::cdbg::StreamingCompactor<goetia::dBG<goetia::storage::{},\n'
              '                                               goetia::hashing::RollingHashShifter>>;')


template class goetia::cdbg::StreamingCompactor<goetia::dBG<goetia::storage::BitStorage,
                                               goetia::hashing::RollingHashShifter>>;
template class goetia::cdbg::StreamingCompactor<goetia::dBG<goetia::storage::ByteStorage,
                                               goetia::hashing::RollingHashShifter>>;
template class goetia::cdbg::StreamingCompactor<goetia::dBG<goetia::storage::NibbleStorage,
                                               goetia::hashing::RollingHashShifter>>;
template class goetia::cdbg::StreamingCompactor<goetia::dBG<goetia::storage::QFStorage,
                                               goetia::hashing::RollingHashShifter>>;
template class goetia::cdbg::StreamingCompactor<goetia::dBG<goetia::storage::SparseppSetStorage,
                                               goetia::hashing::RollingHashShifter>>;

extern
template class goetia::cdbg::StreamingCompactor<goetia::dBG<goetia::storage::BitStorage,
                                               goetia::hashing::RollingHashShifter>>;
extern
template class goetia::cdbg::StreamingCompactor<goetia::dBG<goetia::storage::ByteStorage,
                                               goetia::hashing::RollingHashShifter>>;
extern
template class goetia::cdbg::StreamingCompactor<goetia::dBG<goetia::storage::NibbleStorage,
                                               goetia::hashing::RollingHashShifter>>;
extern
template class goetia::cdbg::StreamingCompactor<goetia::dBG<goetia::storage::QFStorage,
                                               goetia::hashing::RollingHashShifter>>;
extern
template class goetia::cdbg::StreamingCompactor<goetia::dBG<goetia::storage::SparseppSetStorage,
                                               goetia::hashing::RollingHashShifter>>;

In [27]:
storage_decls('template class goetia::StreamingCompactorProcessor<goetia::dBG<goetia::storage::{},\n'
              '                                                             goetia::hashing::RollingHashShifter>>;')


template class goetia::StreamingCompactorProcessor<goetia::dBG<goetia::storage::BitStorage,
                                                             goetia::hashing::RollingHashShifter>>;
template class goetia::StreamingCompactorProcessor<goetia::dBG<goetia::storage::ByteStorage,
                                                             goetia::hashing::RollingHashShifter>>;
template class goetia::StreamingCompactorProcessor<goetia::dBG<goetia::storage::NibbleStorage,
                                                             goetia::hashing::RollingHashShifter>>;
template class goetia::StreamingCompactorProcessor<goetia::dBG<goetia::storage::QFStorage,
                                                             goetia::hashing::RollingHashShifter>>;
template class goetia::StreamingCompactorProcessor<goetia::dBG<goetia::storage::SparseppSetStorage,
                                                             goetia::hashing::RollingHashShifter>>;

extern
template class goetia::StreamingCompactorProcessor<goetia::dBG<goetia::storage::BitStorage,
                                                             goetia::hashing::RollingHashShifter>>;
extern
template class goetia::StreamingCompactorProcessor<goetia::dBG<goetia::storage::ByteStorage,
                                                             goetia::hashing::RollingHashShifter>>;
extern
template class goetia::StreamingCompactorProcessor<goetia::dBG<goetia::storage::NibbleStorage,
                                                             goetia::hashing::RollingHashShifter>>;
extern
template class goetia::StreamingCompactorProcessor<goetia::dBG<goetia::storage::QFStorage,
                                                             goetia::hashing::RollingHashShifter>>;
extern
template class goetia::StreamingCompactorProcessor<goetia::dBG<goetia::storage::SparseppSetStorage,
                                                             goetia::hashing::RollingHashShifter>>;

In [29]:
storage_decls('template class goetia::signatures::UnikmerSignature<goetia::storage::{}>;')


template class goetia::signatures::UnikmerSignature<goetia::storage::BitStorage>;
template class goetia::signatures::UnikmerSignature<goetia::storage::ByteStorage>;
template class goetia::signatures::UnikmerSignature<goetia::storage::NibbleStorage>;
template class goetia::signatures::UnikmerSignature<goetia::storage::QFStorage>;
template class goetia::signatures::UnikmerSignature<goetia::storage::SparseppSetStorage>;

extern
template class goetia::signatures::UnikmerSignature<goetia::storage::BitStorage>;
extern
template class goetia::signatures::UnikmerSignature<goetia::storage::ByteStorage>;
extern
template class goetia::signatures::UnikmerSignature<goetia::storage::NibbleStorage>;
extern
template class goetia::signatures::UnikmerSignature<goetia::storage::QFStorage>;
extern
template class goetia::signatures::UnikmerSignature<goetia::storage::SparseppSetStorage>;

In [16]:
storage_decls('template class std::enable_shared_from_this<goetia::dBG<goetia::storage::{},\n'
              '                                                       goetia::hashing::RollingHashShifter>>;')


template class std::enable_shared_from_this<goetia::dBG<goetia::storage::BitStorage,
                                                       goetia::hashing::RollingHashShifter>>;
template class std::enable_shared_from_this<goetia::dBG<goetia::storage::ByteStorage,
                                                       goetia::hashing::RollingHashShifter>>;
template class std::enable_shared_from_this<goetia::dBG<goetia::storage::NibbleStorage,
                                                       goetia::hashing::RollingHashShifter>>;
template class std::enable_shared_from_this<goetia::dBG<goetia::storage::QFStorage,
                                                       goetia::hashing::RollingHashShifter>>;
template class std::enable_shared_from_this<goetia::dBG<goetia::storage::SparseppSetStorage,
                                                       goetia::hashing::RollingHashShifter>>;

extern
template class std::enable_shared_from_this<goetia::dBG<goetia::storage::BitStorage,
                                                       goetia::hashing::RollingHashShifter>>;
extern
template class std::enable_shared_from_this<goetia::dBG<goetia::storage::ByteStorage,
                                                       goetia::hashing::RollingHashShifter>>;
extern
template class std::enable_shared_from_this<goetia::dBG<goetia::storage::NibbleStorage,
                                                       goetia::hashing::RollingHashShifter>>;
extern
template class std::enable_shared_from_this<goetia::dBG<goetia::storage::QFStorage,
                                                       goetia::hashing::RollingHashShifter>>;
extern
template class std::enable_shared_from_this<goetia::dBG<goetia::storage::SparseppSetStorage,
                                                       goetia::hashing::RollingHashShifter>>;

In [15]:
storage_decls('template class std::enable_shared_from_this<goetia::PdBG<goetia::storage::{}>>;')


template class std::enable_shared_from_this<goetia::PdBG<goetia::storage::BitStorage>>;
template class std::enable_shared_from_this<goetia::PdBG<goetia::storage::ByteStorage>>;
template class std::enable_shared_from_this<goetia::PdBG<goetia::storage::NibbleStorage>>;
template class std::enable_shared_from_this<goetia::PdBG<goetia::storage::QFStorage>>;
template class std::enable_shared_from_this<goetia::PdBG<goetia::storage::SparseppSetStorage>>;

extern
template class std::enable_shared_from_this<goetia::PdBG<goetia::storage::BitStorage>>;
extern
template class std::enable_shared_from_this<goetia::PdBG<goetia::storage::ByteStorage>>;
extern
template class std::enable_shared_from_this<goetia::PdBG<goetia::storage::NibbleStorage>>;
extern
template class std::enable_shared_from_this<goetia::PdBG<goetia::storage::QFStorage>>;
extern
template class std::enable_shared_from_this<goetia::PdBG<goetia::storage::SparseppSetStorage>>;

In [ ]: