Skip to content
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

visualize by clusters #370

Open
bernstei opened this issue Oct 8, 2024 · 7 comments
Open

visualize by clusters #370

bernstei opened this issue Oct 8, 2024 · 7 comments

Comments

@bernstei
Copy link
Collaborator

bernstei commented Oct 8, 2024

Is there any way to select more than one atom at a time? I'd like to figure out what's in common to the atoms in a particular cluster that I see, and I hoped chemiscope would facilitate that, but other than showing one atom at a time, I don't see any way to map back from the visualized clustering in the PCA (which I'm using a my axes) to the atomic structures.

@ceriottm
Copy link
Contributor

ceriottm commented Oct 8, 2024

There are many ways you could do this. One is opening multiple structure frames so you can compare many structures (click on the "duplicate viewer" icon on the structure panel) Image

another is that - if you define the clustering at the environment level - you can color the atoms by property, see e.g.
https://chemiscope.org/docs/examples/4-colors.html#sphx-glr-examples-4-colors-py

@ceriottm
Copy link
Contributor

ceriottm commented Oct 9, 2024

Do either of these approaches solve your problem or I misunderstood what you were looking for? In case they do, any suggestion on how to make these options more findable?

@bernstei
Copy link
Collaborator Author

bernstei commented Oct 9, 2024

I want to highlight (in the geometry viewer) the 100 that are in one cluster, to distinguish them from the few hundred in the other cluster. The duplicate viewer approach seems like it'd allow me to view maybe 2 or 3 atomic environments at a time, but that doesn't seem like enough.

The clustering at the input file level is an option, but it's not perfect. I'd have to either run a generic clustering algorithm on the reduced coordinates, or perhaps look at the initial visualization and figure out a range of coordinates (box, sphere?), and go back and manually select those to set a new property in the input file, then visualize again and see if the clustering I did corresponds to the clusters I see by eye in the visualizer. That's useful, certainly, but it'd be nice to be able to somehow output all the atoms that correspond to visualized points that are enclosed in a dragged out rectangle. Ideally, I'd like to see them in the chemiscope structure viewer (admittedly you'd have to do something about the fact that they could come from different structures - maybe allow the user to select which structure is being viewed, and show it with the selected atoms highlighted?), or maybe export their indices (so I could go back to my usual geometry viewer and highlight them there).

@Luthaf
Copy link
Contributor

Luthaf commented Oct 9, 2024

We have a couple of issues about sub-selecting points on the map: #3 (which could also be expanded to a manual "lasso" selection), #4, and #53.

Unfortunately, all of them would require a significant amount of work and bookkeeping in chemiscope, which is why nothing has been implemented yet. There was a WIP branch doing some of the rendering work for the map in #113, but did not include the user interface for selecting which points should be "hidden". There is no existing code to do this in the structure viewer, so it would have to be written from scratch.

@bernstei
Copy link
Collaborator Author

bernstei commented Oct 9, 2024

I agree that it seems related to those, although I think it's somewhat distinct in terms of what the user can do. The underlying bookkeeping might be very similar, though.

@ceriottm
Copy link
Contributor

ceriottm commented Oct 9, 2024

Have you tried using chemiscope as a jupyter widget? I think the workflow you discuss here would be much more easily realized having the possibility of just refreshing the viewer quickly without having to go modify->write_input->load.
It might also be possible to use (and extend) the stateful widget to make this more interactive without having to implement a selection UI, that would go far beyond what is possible at present.

@bernstei
Copy link
Collaborator Author

bernstei commented Oct 9, 2024

I agree, it would definitely be better in a more interactive setting like jupyter, so I'll try that. But it still leaves it as solving an inverse problem - guess a possible clustering, see if it corresponds to what you see on the map. Instead of the forward problem I really want - defining the cluster in the visualized map and saving that information somehow.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants