neighborlist

class javelin.neighborlist.NeighborList(vectors=None)[source]

The NeighborList class

Contains an n x 5 array of neighbor vectors each being [origin_site, target_site, i, j, k].

>>> nl = NeighborList()
>>> print(nl)
      |     site      |    vector
index | origin target |   i   j   k
<BLANKLINE>
>>> nl = NeighborList([[0,1,1,0,0],[0,1,0,1,0],[0,1,0,0,1]])
>>> print(nl)
      |     site      |    vector
index | origin target |   i   j   k
    0 |      0      1 |   1   0   0
    1 |      0      1 |   0   1   0
    2 |      0      1 |   0   0   1

You can slice a NeighborList:

>>> print(nl[0])
      |     site      |    vector
index | origin target |   i   j   k
    0 |      0      1 |   1   0   0
>>> print(nl[-1])
      |     site      |    vector
index | origin target |   i   j   k
    0 |      0      1 |   0   0   1
>>> print(nl[1:3])
      |     site      |    vector
index | origin target |   i   j   k
    0 |      0      1 |   0   1   0
    1 |      0      1 |   0   0   1
>>> print(nl[0,2])
      |     site      |    vector
index | origin target |   i   j   k
    0 |      0      1 |   1   0   0
    1 |      0      1 |   0   0   1

You can set a vector:

>>> nl[0] = [5, 5, 5, 5, 5]
>>> nl[-1] = [2, 2, 2, 2, 2]
>>> print(nl)
      |     site      |    vector
index | origin target |   i   j   k
    0 |      5      5 |   5   5   5
    1 |      0      1 |   0   1   0
    2 |      2      2 |   2   2   2

You can add NeighborLists together:

>>> nl2 = NeighborList([[1,1,1,0,0],[1,1,0,1,0]])
>>> nl3 = nl + nl2
>>> print(nl3)
      |     site      |    vector
index | origin target |   i   j   k
    0 |      5      5 |   5   5   5
    1 |      0      1 |   0   1   0
    2 |      2      2 |   2   2   2
    3 |      1      1 |   1   0   0
    4 |      1      1 |   0   1   0

And finallly you can delete vectors from the NeighborList

>>> del nl3[-1]
>>> print(nl3)
      |     site      |    vector
index | origin target |   i   j   k
    0 |      5      5 |   5   5   5
    1 |      0      1 |   0   1   0
    2 |      2      2 |   2   2   2
    3 |      1      1 |   1   0   0
>>> del nl3[1:3]
>>> print(nl3)
      |     site      |    vector
index | origin target |   i   j   k
    0 |      5      5 |   5   5   5
    1 |      1      1 |   1   0   0
append(vectors)[source]

Append one or more vectors to the NeighborList

>>> nl = NeighborList()
>>> print(nl)
      |     site      |    vector
index | origin target |   i   j   k
<BLANKLINE>
>>> nl.append([0,1,1,0,0])
>>> print(nl)
      |     site      |    vector
index | origin target |   i   j   k
    0 |      0      1 |   1   0   0
>>> nl.append([[0,1,0,1,0],[0,1,0,0,1]])
>>> print(nl)
      |     site      |    vector
index | origin target |   i   j   k
    0 |      0      1 |   1   0   0
    1 |      0      1 |   0   1   0
    2 |      0      1 |   0   0   1
values

Returns the neighbor vectors as a numpy.ndarray

This allows you to directly modify or set the vectors but be careful to maintain an (n, 5) array.

>>> nl = NeighborList([[0,1,1,0,0],[0,1,0,1,0],[0,1,0,0,1]])
>>> print(nl)
      |     site      |    vector
index | origin target |   i   j   k
    0 |      0      1 |   1   0   0
    1 |      0      1 |   0   1   0
    2 |      0      1 |   0   0   1
>>> nl.values
array([[0, 1, 1, 0, 0],
       [0, 1, 0, 1, 0],
       [0, 1, 0, 0, 1]])
>>> nl.values[:,1] = 2
>>> print(nl)
      |     site      |    vector
index | origin target |   i   j   k
    0 |      0      2 |   1   0   0
    1 |      0      2 |   0   1   0
    2 |      0      2 |   0   0   1
Returns:array of neighbor vectors
Return type:numpy.ndarray