Skip to content

Validating distances against reference implementations #245

Open

Description

@sdmccabe

For each distance we should check that either (i) netrd is the only public implementation of the distance, or (ii) that netrd's implementation of the distance produces similar outputs given the same inputs. We've done this for a bunch of them already, typically when originally implementing the distance, but we should make this process more explicit so that we don't accidentally overlook one.

  • Communicability JSD
  • Degree Divergence
  • Deltacon
  • Distributional NBD
  • DK-series distance
  • Frobenius
  • Hamming
  • Hamming-Ipsen-Mikhailov
  • Ipsen-Mikhailov
  • Jaccard
  • Laplacian Spectral
  • NBD
  • NetLSD
  • NetSimile
  • Onion Divergence
  • Polynomial Dissimilarity
  • Portrait Divergence
  • Quantum JSD
  • Resistance Perturbation

I'll start by checking off the ones I think are novel; I'm reasonably certain that there are more we know are validated.

Activity

  1. sdmccabe commented on Aug 23, 2019

    @sdmccabe
    CollaboratorAuthor

    There are differences in output between our distance and the reference implementation of Portrait Divergence, but the differences are consistently small (the largest I've seen is 0.005, and it's usually more like 0.001). I'll keep investigating but I'd guess it's nothing.

  2. sdmccabe commented on Aug 23, 2019

    @sdmccabe
    CollaboratorAuthor

    We should bump the PyPI version after finishing this.

  3. sdmccabe commented on Aug 23, 2019

    @sdmccabe
    CollaboratorAuthor

    @leotrs I've checked off NBD because I assume the implementations are the same.

  4. sdmccabe commented on Aug 25, 2019

    @sdmccabe
    CollaboratorAuthor

    HIM is producing different outputs from the R NetworkDistance implementation for RGGs (N=200, p=0.26, using the edgelists from the graphwend repo); will need to investigate further.

  5. leotrs commented on Aug 26, 2019

    @leotrs
    Collaborator

    @leotrs I've checked off NBD because I assume the implementations are the same.

    At this point I wouldn't be surprised if netrd's implementation is more updated than mine. However, you can forget about NBD as I am the maintainer of the other one. If the outputs from the two different repos are different, then probably netrd's are correct...

  6. leotrs commented on Aug 26, 2019

    @leotrs
    Collaborator

    For NetSimile, I found this and this. Haven't compared them yet tho.

  7. sdmccabe commented on Aug 26, 2019

    @sdmccabe
    CollaboratorAuthor

    NetSimile is a frustrating one since there isn't a reference implementation in the sense of author's code, so we're assuming the other independent implementations are correct. When I was debugging some NetSimile issues back in the spring I remember comparing the outputs to those from the netcomp library; I don't know if anything has changed since but I believe they were producing similar or identical outputs.

  8. leotrs commented on Aug 26, 2019

    @leotrs
    Collaborator

    We could use it as a touchstone only then. As long as we're in their ballpark, we're good.

  9. leotrs commented on Oct 9, 2019

    @leotrs
    Collaborator

    Frobenius and Jaccard depend on row ordering, yes?

    Unrelatedly, they both seem to be simple enough that we can just check them off?

  10. sdmccabe commented on Oct 9, 2019

    @sdmccabe
    CollaboratorAuthor

    They should depend on row ordering, @jkbren would be able to confirm from his experiments.

    They're probably simple enough to check off, but simplicity can be deceiving; see the issues we had with Jaccard before in #180.

  11. added this to the 1.0 milestone on Oct 29, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions