Each element in the periodic table has a _period_ and a _group_ related to its chemical properties. Each row in the periodic table corresponds to a period, whereas each column corresponds to a group. For example: lithium is in period 2, group 1 and helium is in period 2, group 18. Elements of the same group have similar chemical properties. The periodic table contains four _blocks_ ('s', 'p', 'd', and 'f') named after characteristic orbitals. Additionally, there are different categories. For example, the periodic table from LANL uses the following categories: alkali metal, alkaline earth metal, transition metal, post-transition metal, metalloid, lanthanide, actinide, nonmetal, halogen, noble gas (see also the IUPAC recommendations for nomenclature of inorganic chemistry from 2005).
I propose that we add functionality to get period, group, block, and category information for each element as an enhancement for the atomic subpackage. The steps to do this are:
Elements dictionaryElements dictionaryElements dictionaryElements dictionaryperiodic_table_period)periodic_table_group)periodic_table_block)periodic_table_category)The Elements dictionary is in plasmapy/atomic/elements.py. Each function should have a docstring and tests. Different function names would be fine if you can think of something more readable. I did notice some differences in categories from different references, so it'd probably be best to cite what reference we use to get the category information.
Thank you! 馃敩 馃敪
Cross-references because I know too many librarians: #52, #104, #105
Also, there are too few emoji available on GitHub that are related to chemistry.
I think I can help with this, mind if I give it a crack?
Hey @jams2, sure! I'm sure @namurphy would appreciate some help with this. Make sure to coordinate though!
That would be great, @jams2! I'll be working on atomic.py sometime in the next two weeks, but separately from this. Many thanks!
@namurphy happy to help. I'm looking at the functions now, I'm definitely not an expert on the subject matter. Should I anticipate the same range of inputs as atomic_symbol and isotope_symbol (so checking for _is_neutron etc.), or is this a more general case where expected inputs will be atomic number, symbol, element name?