-
Notifications
You must be signed in to change notification settings - Fork 18
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
Interface Update v0.4.x #106
Comments
My sense is that the MAIN DECISION to be made is whether the reference implementation should become the de facto standard to be used by this community or just an example implementation that nobody should use. The current proposal is to demote it to an example implementation. Hearing opinions on this point would be particularly welcome - in favour or against either direction. |
I'll start by saying (again, but more publicly) a big THANK YOU 🙏 to @cortner for spearheading this! As I've said privately, I'm generally in agreement with everything and have no major comments, certainly nothing blocking. Regarding the example vs. standard, I've started an attempt to organize some thoughts below (if others chime in I can attempt to summarize other thoughts in edits, too). Personally, I lean towards the "example implementation" option; however, I also think it's unlikely we'll be able to fully "enforce" either option (nor should we) and the likely steady-state will have components of both... In favor of "de facto standard" / against "example implementation"
In favor of "example implementation" / against "de facto standard"
|
Thank you for this. These updates looks good. In the document, I was confused about a few things:
|
I saw that a plural form for each setter function is added. Wouldn't defining singular as well as plural form of interface functions lead to numerous functions in the namespace? There seems to be plural forms defined for the primary interface functions Isn't it better to just use the singular form for the system as well, similar to the current definition? Just a suggestion. |
Thanks for pointing out inconsistencies. I'll clear those up asap and then respond to the other point. |
yes.
I changed everything to
yes. I propose to provide fallback implementations, as described in the document, with functions such as atomic_number(...) = atomic_number(particle_id(...))
atomic_symbol(...) = atomic_symbol(particle_id(...))
atomic_mass(...) = mass(...)
|
yes, but personally I don't see why this should be a problem. If I'm missing something please do point it out.
I personally find it very hard to read I stand by my point and will continue to argue against allowing position.(sys)
position(sys, :) # <= this is maybe my favourite now. Another advantage of For avoidance of any doubt: It is 100% ok to continue to debate this before making a final decision. |
The main problem that I feel is it doesn't feel natural while coding (maybe not a concrete reason). For example, I frequently interchange between using a subset of positions (currently
Can't the position be thought of as a single point in the configuration space, or for an arbitrary property, a single point in the N-dimensional space of whichever property we are looking at :) |
So it just seems to come down to different people having different mental pathways. That's always unfortunate and makes it difficult to decide. Maybe this change needs to be postponed. I would love to hear more opinions from others. |
I had it in my head that The only firm opinion I have is that |
Thanks everyone for the comments so far. As I start working on the PR we can still discuss. For now I won't make the singular/plural change yet. |
Let me start by also issuing a big thank you to @cortner. I think as part of this discussion my general idea of what AtomsBase is for has already sharpened a lot. I am also in general agreement with the proposal modulo some of the details pointed out for discussion in the md document and above. Example versus reference implementationI think we as an ecosystem will long-term need a standard implementation to point people to when they want to expose their data to AtomsBase via conversion. Change of name particle_id
I think type sounds more physics-y than atomic_mass versus massI vote to deprecate singular versus pluralRegarding the different mental pictures between singular and plural. Maybe the compromise here is to make things explicit. In that sense I like the idea of only allowing |
I agree with this.
I'll add a poll below.
based on discussion so far I think what you write may be the best way forward. I will add another poll. |
POLL:
|
POLL: do you agree to deprecate |
POLL: do you agree to
This this motion is defeated then this discussion will be postponed to v0.5.x. |
After using LAMMPS a lot, As for |
For the position proposal, why not a slight variant to what you propose where:
|
Re I'd vs type. We don't have to rush this. Is there a better terminology? I think both are problematic with type maybe Margo ally preferrable?
? |
Thanks for pointing this out. It is actually exactly what I wanted, but you are right I didn't highlight that |
@niklasschmitz also suggested "particle_kind" as an option. Sounds like type but rings different bells for CS people.
Agree ! |
Regarding id, type, kind, category, species: I think the term we choose has to capture the distinction between types of atoms rather than the distinctions between - say - atoms, electrons, etc. |
Doesn't |
I like |
For the chemists here : how does |
I think for the standard use case it works fine. I think only for coarse graining and similar it can create conceptional clashes. @jgreener64 might have some insight on the potential language in this case. |
I would personally be quite comfortable with "species" for a coarse-grained particle. But would be good to hear more views. |
|
It is a bit problematic. Chemistry definition can lead to confusion, as chemical species can mean more than just "atom type". So, I would prever |
I don't see the issue - sounds consistent to me to use the term species here. EDIT: @tjjarvinen -- would be great if you can substantiate your concern. I can then poll people to decide. |
It is not a big issue. It just feels a bit out of context to speak about species, when we are talking about atom types. I somehow expect that when species is used, we are discussing about larger objects like molecules, radicals etc. I guess that this would be the initial reaction of other chemists too. |
I would posit that that could actually be a positive thing – since people might conceivably be doing coarse-grained simulations where a single "particle" could mean a radical, etc. For me, "species" as a single atom is also okay, though, but I recognize it might read differently to different people. |
Yes. Actually reading the wikipedia page makes me think that this term is even more apt for our use case. There a classification of "Chemical species" is made as:
which seems to match what we want. |
Based on the above discussion can I suggest a quick poll please?
|
Thanks everybody. I'll continue with the work and hopefully open the PR soon. |
I invite everyone who has participated in this discussion to look at the PR - #107 |
As I'm wrapping up this PR, I have just a final comment that is relevant to a more general discussion. We made the decision to "hide" the implementations and make them just example implementations. I think in the long term this is not a good solution. If we can all agree on a single or very small set of implementations that cover 99% of use-cases but remain highly performant, then this would be a big advantage to this community. So for the next version 0.5 I would like to propose to turn this around entirely:
|
I agree with you, but I would suggest a different name. How about calling On the In fact this actually poses an important point. Maybe it is a good idea to actually not "hide" the implementation in 0.4, but rather directly move the interface part out into a different package if this is what we want to do in the long run. At least for me this would make the transition 0.3 -> 0.4 -> 0.5 smoother and associated with less code change headaches. What are other people's thoughts ? |
We can also agree for now to still export the reference implementations but revisit this discussion for 0.5. I don't see us solving this immediately. Can be part of the Molssi workshop discussion. |
Closing as #107 merged. |
The following document summarizes a proposed interface update for 0.4.x. Please provide comments by 8 July, after which I will start a new PR that implements this. If you plan to provide comments but after 8 July just let me know here please.
https://hackmd.io/@TQNVbm-8R6mxyDAnh7mzAA/HJgCF-xP0
Short summary
isbits
and therefore computationally efficient but sufficiently flexible for most use cases; Chemical Element #49system[:position, i]
part of an extended interface.mass
#100, Should we addmass
andmomentum
functions? #28, Supporting "arbitrary" properties #43, Utility to access optional AtomsBase keys (e.g. charge) #78, Organizing boundary conditions #5EDIT - just to be clear - we are only talking about 0.4.x. Further evolutions are likely. This need not be the final iteration.
The text was updated successfully, but these errors were encountered: