Boost logo

Boost :

Subject: [boost] Gauging interest in new library re: multiscale/multigranular containers
From: nathaniel_at_[hidden]
Date: 2011-06-04 16:55:50


Hi: I would like to submit a library which would allow functionality
related to scale and granularity to be performed on STL-like containers.
Until recently I was in a doctoral program specializing in the philosophy
of science, and I am especially interested in multiscale data modeling and
its applications to e.g. GUI design, code generation, decision procedures,
and DSL implementation. For example, one of my projects involves a DSL
implemented through multiscale graphs in lieu of conventional syntax trees.
 I used to study at Buffalo, which houses the National Center for
Ontological Research -- headed by the quite broad-ranging scholar Barry
Smith -- and has done pioneering work in biomedical ontology and also in
ontological models related to complex or "vague" aggregative structures.
In these structures collections of objects of some base type T can be
defined as aggregates but with varying degrees of looseness or "individual
coherence"; and this aggregation can be iterated to produce multiscaled
structures which can be queried or represented at different granularities.
There are a number of analytic procedures which can be implemented on such
structures, some overlapping with graph theoretic or statistical methods.
These structures also possess alot of internal structure above and beyond
their underlying list of values, so they are suited to memory-optimized C++
code rather than higher-level languages like Java. However, I am not aware
of generic libraries which really incorporate these kind of data structures
and their analysis in a systematic way, although I have come across
non-template libraries which implement some similar features. What I
propose is a library which could be used in a fashion similar to
std::vector or std::set but which support additional functions along the
lines of, e.g., building multigraphs out of T-type nodes; partitions of
T-sets with functions to define or measure e.g. intrapartition relevance;
defining (or extending) a scale metric on T-objects, T-sets, T-arrays, or
other "T- data structures" and using it for rescaling, scale-filter, and
other scale-related transformations; defining iterators or "walks" on
T-collections which take scale and granularity into account; etc. In a
number of cases the algorithms for these kinds of operations have been
described in theoretical form or even already implemented in languages like
Scheme.

I believe that this project is also well-suited to carry over into C++0x,
because new features proposed there (such as Concepts, which I know keep
moving in and out of the specification) have potential to make this library
increasingly generic or "fine-tuneable"; for example, users should be able
to specify custom allocators not only for T's but for aggregates or
connectors between T's which might be recognized as part of the inner
structure of a T-collection.

Thanks in advance for any comments or suggestions.
 


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk