-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
core silicate (write definitions out) #41
Comments
We have a core mode that is pure segments, SC. The dodgr engine will produce the three table model from any input. vertex, edge, object This is equivalent to the EDGE/PRIMITIVE prototypes currently that will be removed. Other models are PATH, PRIMITIVE0D/1D/2D/[nD] and these don't extend SC but can exist alongside, or exist exclusively. Any operation that changes the vertex or segment sets should propagate throughout the other model tables if present. I'm pretty sure we can invalidate always by default, because recreating these tables is pretty easy. Costly conversions are generating triangulations, but other things are essentially very low cost.
|
SC now
The reduce/join trick doesn't work because edge is "wide". Can we sneakily longify it? Things to consider:
|
we need quads to triangles as well as triangles to segments hypertidy/anglr#36 |
models
Only PATH has a relation between path and object, or path and vertex. Operators that deal with models without non-compulsory entities can simply provide dummy ones. That way grouping is always optional, we can always simplify to a pure graph. It's compelling to keep the path definitions but it ends up being unclear - either an non-normal table with keys on object and path, or the need for another link table between object and path. It's the same with the other models, only objects really need to go with primitives - and if we need paths then we can store that on the object_link_[primitive] table - or create an new model. Ultimately if paths exist but are not recorded they may be inferred by tracing through segments, any non-internal (to an object) edge is a candidate. See here for rough workings that dodgr-tech will sort out for us: http://rpubs.com/cyclemumner/291561 As it stands TRI extends sc with triangles, and silicate wil use decido to generate them. anglr will add DEL model, a specialization of TRI with better quality triangles. If we can get a non-problematic license triangulation library in R then silicate can use that and drop the anglr version. |
Also incorporate (if useful) #46 |
Definitions:
The current definition
Not finalPATH and ARC are implemented, but still under review.
Not implementedPATH and ARC could both be compacted in PATH0 and ARC0 forms by nesting links.
|
With the zero-versions of models we need at the very least round-tripping for each model type, so SC -> SC0 and vice versa SC0 is a root-type, so SC.default can actually convert to SC0 and then put itself together. That means types have to have identity functions e.g. That also means we have a generic model.class method that uses the verbs.
WIP etc. From this plan write tests for every which-way case. I've simplified plot.SC to convert to SC0, you don't get colours by default unless you pass them in (in base way) or they exist on |
A recurring problem with PATH is that subobject/object and subobject_/object_ have been mixed and patchy. Currently I think it should be
But, PATH0 implies that object$path_ currently uses object_/subobject_ and these are integers (that makes sense, but should the "0" imply we stick with integer as per gibble?) In PATH()$path we end up with both sets of columns, so it should always be that subobject is integer, and object_, path_ are character. I think "subobject_" has to go. |
Currently going with never having "subobject_", it's not an identifier but a context grouping - it's easiest to have it there even if degenerate, but it's not a uid. (Requires changes in gibble, but only for the silicate methods). I also just noticed that TRI0 was never finished, so that's first. |
Ah, it is there just needed exposure - the crux is
It could be PATH0->TRI/TRI0 to avoid the extra PATH stuff |
revisit from #117 |
We've established the worker verbs
sc_coord, sc_path, sc_edge, sc_segment, sc_vertex, sc_node, sc_arc, sc_uid
the universal model
SC
and the exemplary models
PATH, ?
Working in pslg branch
The text was updated successfully, but these errors were encountered: