Giter Site home page Giter Site logo

Comments (1)

fedarko avatar fedarko commented on June 16, 2024

Coming back to this: a silly property (that I should have thought of earlier) is that these kinds of "cyclic bubbles" (when they are an isolated component of the graph) technically contain a chain from the end to the start node. The figure below shows that, depending on whether you identify the bubble or the chain first, the resulting decomposition looks different:

image

(I didn't draw it out in the figure, but the final step of the right side would be merging the chain and bubble into a cyclic chain. Also, the L and R subscripts indicate node splitting: see #167)

Notably, this is not the case when these bubbles are located within a chain of bubbles (i.e. when the start node has any other incoming edges, and/or when the end node has any other outgoing edges). Because in that case there is no longer a valid chain from the end to the start.

This means that we can't just say "oh, identify the chain first, then find the bubble, etc." -- because this will fail if this cyclic bubble exists in a chain of bubbles. So we have to make a choice -- do we continue to allow cyclic bubbles (which means that their decomposition in isolated components may look like either of the two figures above), or do we reject them completely?

I guess we can continue to allow cyclic bubbles for now. This isn't really a problem per se -- the fact that the decomposition is slightly inconsistent irks me, but it isn't really a bug (you could argue that either decomposition is meaningful -- in both cases we identify a bubble, anyway). My work on this project is already embarrassingly behind schedule as is.

Note that this also impacts cyclic frayed ropes (#242), when the connected end and start nodes have no non-pattern adjacencies. It doesn't impact cyclic chains since the "chain" from the end to the start of the cyclic chain is naturally a part of the cyclic chain anyway.

from metagenomescope.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.