-
Notifications
You must be signed in to change notification settings - Fork 5
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
Infinite bars? #30
Comments
Thanks for pointing this out. I believe a Vietoris–Rips filtration always (except for the empty point cloud) produces a single infinite-persistence feature (of dimension zero), so no information is lost by reporting only the finite-persistence features. That said, and while i tend to think reduced PH should be the default, i agree that the user should be able to get the connected component feature if they want it. I'm not familiar with the C++ source code, which might have evolved in Ripser since it was adapted for this package. Even if Ripser itself returns only reduced homology, it would be easy, within R, to augment the returned 'PHom' object with the connected component feature. And this can be done in the meantime before the source code here is upgraded. |
Thanks for pointing this out. I believe a Vietoris–Rips filtration always (except for the empty point cloud) produces a single infinite-persistence feature (of dimension zero), so no information is lost by reporting only the finite-persistence features. That said, and while i tend to think reduced PH should be the default, i agree that the user should be able to get the connected component feature if they want it.
I'm not familiar with the C++ source code, which might have evolved in Ripser <https://github.com/Ripser/ripser> since it was adapted for this package. Even if Ripser itself returns only reduced homology, it would be easy, within R, to augment the returned 'PHom' object with the connected component feature. And this can be done in the meantime before the source code here is upgraded.
Are we expecting to only ever compute with datasets small enough that we can compute the Vietoris-Rips filtration out to infinity? It doesn't matter if there will ultimately be only one infinite-persistence feature of dimension zero (which is true for point clouds in R^n, because R^n is contractible, and the point cloud at infinity will reflect the ambient space's topology, I believe) - if what we want to compute is best seen at shorter distances.
…--
Mikael Vejdemo-Johansson
***@***.*** ***@***.***>
|
Ah, i see—the core issue is that all features that persist beyond the threshold are omitted from the output. Here's a smaller example: library(ripserr)
pc <- cbind(c(0,1,0), c(0,0,2))
ph <- vietoris_rips(pc)
as.data.frame(ph)
#> dimension birth death
#> 1 0 0 1
#> 2 0 0 2
ph <- vietoris_rips(pc, threshold = 1.5)
as.data.frame(ph)
#> dimension birth death
#> 1 0 0 1 Created on 2022-09-13 by the reprex package (v2.0.1) I agree that it would be more appropriate, at least by default, to include the births of these features, perhaps with |
I am happy with NA representing a missing death time rather than Inf as a death time, if that is easier for y'all to code.
All the best,
--
Mikael Vejdemo-Johansson
***@***.*** ***@***.***>
… On 13Sep, 2022, at 07:00, Cory Brunson ***@***.***> wrote:
Ah, i see—the core issue is that all features that persist beyond the threshold are omitted from the output. Here's a smaller example:
library(ripserr)
pc <- cbind(c(0,1,0), c(0,0,2))
ph <- vietoris_rips(pc)
as.data.frame(ph)
#> dimension birth death
#> 1 0 0 1
#> 2 0 0 2
ph <- vietoris_rips(pc, threshold = 1.5)
as.data.frame(ph)
#> dimension birth death
#> 1 0 0 1
Created on 2022-09-13 by the reprex package <https://reprex.tidyverse.org/> (v2.0.1)
I agree that it would be more appropriate, at least by default, to include the births of these features, perhaps with NA rather than Inf death. (Would you suggest something different?) Though again i don't know if this can be done without upgrading the Ripser code. (That needs to be done anyway, but it ties into other issues and will require some committed time.)
—
Reply to this email directly, view it on GitHub <#30 (comment)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/AAAH6LWHRYHMF25GF2Y5SLTV6BNEHANCNFSM54PXVLNA>.
You are receiving this because you authored the thread.
|
Where are the infinite length persistence bars? I tried out
ripserr
on a simple uniformly random point cloud, and get:Notably,
But unless you are deliberately computing reduced (co)homology, you should expect to see at least one infinite bar in dimension 0. Are you quietly dropping all the infinite bars?!
Another experiment, with a circle point cloud:
but if I restrict max-radius:
I would like to strongly urge you to implement tracking and reporting of infinite bars.
The text was updated successfully, but these errors were encountered: