More consolidation of Hashtable derived types. #1504
Merged
Commits
Show all changes
34 commits
Select commit
Hold shift + click to select a range
8295782
pulled CountingHash methods back to Hashtable; removed counting.*
ctb 9991ecc
removed hashbits.{cc,hh}
ctb bf9f899
pulled most Countgraph functions back to base in cPython interface
ctb 7371492
cleanup and documentation
ctb 7132983
rename CountingHash file class to ByteStorage
ctb a6040c4
Merge branch 'master' of github.com:dib-lab/khmer into refactor/storage2
ctb 30e1ba4
Merge branch 'master' into refactor/storage2
ctb d28d38b
added stub new type derived from Hashbits
ctb ac0cc3a
interpose Hashgraph type
ctb 29e42ed
move graph-specific methods into KHashgraph_Type
ctb 22942f6
moved all the graph-specific methods onto hashgraph
ctb d021c05
moved methods back to running on Hashtables where possible
ctb a681366
properly updated the inheritance hierarchy
ctb c9fc7c9
extract tablesizes parsing code, add test for bad tablesizes list
ctb a7213b1
introduced Counttable and Nodegraph type data structures
ctb c52c88a
added new Nodetable and Counttable CPython types
ctb bc48a6f
Rename CountingHash to Countgraph and Hashbits to Nodegraph (#1506)
ctb 8a171d4
rename hashbits and counting objects too
ctb 5a532e3
Merge branch 'master' of github.com:dib-lab/khmer into refactor/storage2
ctb 4ebc47f
updated changelog
ctb 6c33e2d
fix ChangeLog indent
ctb 6096ab5
some minimal documentation for hashgraph methods
ctb 12fc7b4
fixed up ChangeLog a bit more
ctb 95ed9f6
added (c) headers to _cpy* include files
ctb c4e2318
move graph classes into hashgraph.cc,hh
ctb a6f896d
Merge branch 'refactor/storage2' into feature/assembly/junction_count…
ctb 651519a
Merge branch 'feature/assembly/junction_count' of github.com:dib-lab/…
ctb 07fc51d
Merge pull request #1508 from dib-lab/feature/assembly/junction_count…
ctb e2f58f1
Merge branch 'master' into refactor/storage2
ctb ad1d7b9
forgot to update one call to hashing fn in _khmer
ctb b9ff3fc
Merge branch 'refactor/storage2' of github.com:dib-lab/khmer into ref…
ctb e112c9e
minor code cleanup
ctb cda6c5f
Merge branch 'master' of github.com:dib-lab/khmer into refactor/storage2
ctb 6303cb8
Merge branch 'master' of github.com:dib-lab/khmer into refactor/storage2
ctb
Jump to file
No files or symbols found.
+21
−0
ChangeLog
ChangeLog
+1
−1
Makefile
Makefile
+2
−2
count-demo.cc
examples/c++-api/count-demo.cc
+20
−0
__init__.py
khmer/__init__.py
+128
−0
_cpy_counttable.hh
khmer/_cpy_counttable.hh
+1,587
−0
_cpy_hashgraph.hh
khmer/_cpy_hashgraph.hh
+131
−0
_cpy_nodetable.hh
khmer/_cpy_nodetable.hh
+548
−1,820
_khmer.cc
khmer/_khmer.cc
+1
−4
Makefile
lib/Makefile
+1
−1
assembler.cc
lib/assembler.cc
+2
−2
assembler.hh
lib/assembler.hh
+0
−282
counting.cc
lib/counting.cc
+0
−84
counting.hh
lib/counting.hh
+0
−67
hashbits.cc
lib/hashbits.cc
+0
−70
hashbits.hh
lib/hashbits.hh
+899
−0
hashgraph.cc
lib/hashgraph.cc
+266
−0
hashgraph.hh
lib/hashgraph.hh
+158
−760
hashtable.cc
lib/hashtable.cc
+34
−174
hashtable.hh
lib/hashtable.hh
+1
−1
kmer_filters.cc
lib/kmer_filters.cc
+1
−2
kmer_filters.hh
lib/kmer_filters.hh
+1
−2
labelhash.cc
lib/labelhash.cc
+1
−1
labelhash.hh
lib/labelhash.hh
+4
−4
read_aligner.hh
lib/read_aligner.hh
+13
−13
storage.cc
lib/storage.cc
+23
−26
storage.hh
lib/storage.hh
+3
−4
subset.cc
lib/subset.cc
+3
−4
subset.hh
lib/subset.hh
+1
−1
test-Colors.cc
lib/test-Colors.cc
+2
−2
test-compile.cc
lib/test-compile.cc
+5
−3
setup.py
setup.py
+7
−0
test_countgraph.py
tests/test_countgraph.py
+64
−0
test_cpython_hierarchy.py
tests/test_cpython_hierarchy.py
+7
−0
test_nodegraph.py
tests/test_nodegraph.py
| @@ -0,0 +1,128 @@ | ||
| +/* | ||
| +This file is part of khmer, https://github.com/dib-lab/khmer/, and is | ||
| +Copyright (C) 2010-2015, Michigan State University. | ||
| +Copyright (C) 2015-2016, The Regents of the University of California. | ||
| + | ||
| +Redistribution and use in source and binary forms, with or without | ||
| +modification, are permitted provided that the following conditions are | ||
| +met: | ||
| + | ||
| + * Redistributions of source code must retain the above copyright | ||
| + notice, this list of conditions and the following disclaimer. | ||
| + | ||
| + * Redistributions in binary form must reproduce the above | ||
| + copyright notice, this list of conditions and the following | ||
| + disclaimer in the documentation and/or other materials provided | ||
| + with the distribution. | ||
| + | ||
| + * Neither the name of the Michigan State University nor the names | ||
| + of its contributors may be used to endorse or promote products | ||
| + derived from this software without specific prior written | ||
| + permission. | ||
| + | ||
| +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||
| +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||
| +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||
| +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||
| +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
| +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||
| +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||
| +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||
| +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
| +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||
| +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
| +LICENSE (END) | ||
| + | ||
| +Contact: khmer-project@idyll.org | ||
| +*/ | ||
| + | ||
| +typedef struct { | ||
| + khmer_KHashtable_Object khashtable; | ||
| + Counttable * counttable; | ||
| +} khmer_KCounttable_Object; | ||
| + | ||
| +static PyObject* khmer_counttable_new(PyTypeObject * type, PyObject * args, | ||
| + PyObject * kwds); | ||
| + | ||
| +static PyTypeObject khmer_KCounttable_Type | ||
| +CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF("khmer_KCounttable_Object") | ||
| += { | ||
| + PyVarObject_HEAD_INIT(NULL, 0) /* init & ob_size */ | ||
| + "_khmer.Counttable", /* tp_name */ | ||
| + sizeof(khmer_KCounttable_Object), /* tp_basicsize */ | ||
| + 0, /* tp_itemsize */ | ||
| + 0, /*tp_dealloc*/ | ||
| + 0, /*tp_print*/ | ||
| + 0, /*tp_getattr*/ | ||
| + 0, /*tp_setattr*/ | ||
| + 0, /*tp_compare*/ | ||
| + 0, /*tp_repr*/ | ||
| + 0, /*tp_as_number*/ | ||
| + 0, /*tp_as_sequence*/ | ||
| + 0, /*tp_as_mapping*/ | ||
| + 0, /*tp_hash */ | ||
| + 0, /*tp_call*/ | ||
| + 0, /*tp_str*/ | ||
| + 0, /*tp_getattro*/ | ||
| + 0, /*tp_setattro*/ | ||
| + 0, /*tp_as_buffer*/ | ||
| + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/ | ||
| + "counttable object", /* tp_doc */ | ||
| + 0, /* tp_traverse */ | ||
| + 0, /* tp_clear */ | ||
| + 0, /* tp_richcompare */ | ||
| + 0, /* tp_weaklistoffset */ | ||
| + 0, /* tp_iter */ | ||
| + 0, /* tp_iternext */ | ||
| + 0, /* tp_methods */ | ||
| + 0, /* tp_members */ | ||
| + 0, /* tp_getset */ | ||
| + 0, /* tp_base */ | ||
| + 0, /* tp_dict */ | ||
| + 0, /* tp_descr_get */ | ||
| + 0, /* tp_descr_set */ | ||
| + 0, /* tp_dictoffset */ | ||
| + 0, /* tp_init */ | ||
| + 0, /* tp_alloc */ | ||
| + khmer_counttable_new, /* tp_new */ | ||
| +}; | ||
| + | ||
| + | ||
| +// | ||
| +// khmer_counttable_new | ||
| +// | ||
| + | ||
| +static PyObject* khmer_counttable_new(PyTypeObject * type, PyObject * args, | ||
| + PyObject * kwds) | ||
| +{ | ||
| + khmer_KCounttable_Object * self; | ||
| + | ||
| + self = (khmer_KCounttable_Object *)type->tp_alloc(type, 0); | ||
| + | ||
| + if (self != NULL) { | ||
| + WordLength k = 0; | ||
| + PyListObject * sizes_list_o = NULL; | ||
betatim
Member
|
||
| + | ||
| + if (!PyArg_ParseTuple(args, "bO!", &k, &PyList_Type, &sizes_list_o)) { | ||
| + Py_DECREF(self); | ||
| + return NULL; | ||
| + } | ||
| + | ||
| + std::vector<uint64_t> sizes; | ||
| + if (!convert_Pytablesizes_to_vector(sizes_list_o, sizes)) { | ||
| + Py_DECREF(self); | ||
| + return NULL; | ||
| + } | ||
| + | ||
| + try { | ||
| + self->counttable = new Counttable(k, sizes); | ||
| + } catch (std::bad_alloc &e) { | ||
| + Py_DECREF(self); | ||
| + return PyErr_NoMemory(); | ||
| + } | ||
| + self->khashtable.hashtable = | ||
| + dynamic_cast<Hashtable*>(self->counttable); | ||
| + } | ||
| + | ||
| + return (PyObject *) self; | ||
| +} | ||
Oops, something went wrong.
Do you know who owns the reference to the list that comes from PyArg_ParseTuple?