Metadata-Version: 2.1
Name: atom2vec
Version: 1.1.0
Summary: A python implement of Atom2Vec: a simple way to describe atoms for machine learning
Author-email: Yuxing Fei <yuxingfei@berkeley.edu>
Project-URL: Repository, https://github.com/idocx/atom2vec
Keywords: material science,machine learning
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: pymatgen>=2022.0.8
Requires-Dist: scikit-learn>=1.3.2
Requires-Dist: scipy>=1.7.3

# Atom2Vec
A python implement of Atom2Vec: a simple way to describe atoms for machine learning

(*Updated 06/21/2021*: We refactored the code with `pymatgen`, you can find old version in branch `old_version`. Now the code is fully typed and tested.)
## Background
Atom2Vec is first proposed on [Zhou Q, Tang P, Liu S, et al. Learning atoms for materials discovery[J]. Proceedings of the National Academy of Sciences, 2018, 115(28): E6411-E6417.](https://www.pnas.org/content/115/28/E6411#page)

## Demo
[![Atom Similarity Demo](docs/atom_sim_vis.png)](https://old.yuxingfei.com/src/similarity.html)

## Installation
```shell
pip install atom2vec
```

## Usage
### Generating atom vectors and atom similarity matrix
We use `pymatgen.core.Structure` to store all the structures. 
```python
from atom2vec import AtomSimilarity
from pymatgen.core import Structure
from typing import List

structures: List[Structure]
atom_similarity = AtomSimilarity.from_structures(structures, 
                                                 k_dim=100, max_elements=3)
```

### Query atom vectors
```python
from atom2vec import AtomSimilarity
from pymatgen.core import Element
from typing import List

atom_similarity: AtomSimilarity
atom_vector: List[float]

atom_vector = atom_similarity.get_atom_vector(1)  # atomic index
atom_vector = atom_similarity.get_atom_vector("H")  # atom's name
atom_vector = atom_similarity.get_atom_vector(Element("H"))  # pymatgen Element Enum
```

### Query atom similarity
```python
from atom2vec import AtomSimilarity
from pymatgen.core import Element

atom_similarity: AtomSimilarity
similarity: float

similarity = atom_similarity["Ca", "Sr"]
```
