# Chess pieces

The package chessboard implements different methods for detecting neighbors. All are derived from the chess game and allow user to define complex moves to create direct edges (links) between nodes (sampling units). The following table provides a description of the chess pieces available in chessboard.

Function 2D network Transect only Quadrat only Description
pawn() Finds neighbors vertically (i.e. along a transect)
fool() Finds neighbors horizontally (i.e. along a quadrat)
rook() Finds neighbors vertically and horizontally
bishop()* Finds neighbors along the two diagonals
knight()* Finds neighbors in ‘L’ shape
queen() Finds neighbors horizontally, vertically, and diagonally
wizard() Finds neighbors in all directions

* These two chess pieces each have two variants: bishop_left(), bishop_right() and knight_left(), knight_right().

In this vignette, we use an extended version (9 transects x 9 quadrats) of the network used in Casajus et al. (2023) to illustrate methods for detecting neighbors implemented in chessboard and the impact of the different arguments.

## Pawn

The pawn can detect neighbors vertically, i.e. among quadrats along a transect.

The function pawn() can be used to detect neighbors (black dots in Fig. 1) of a specific node (red dot in Fig. 1).

pawn(nodes, focus = "5-5", degree = 4, ...)

User can change the default settings (Fig. 1A), by adding directionality (directed = TRUE, Fig. 1B) and reversing the default directionality (directed = TRUE and reverse = TRUE, Fig. 1C).

Figure 2 shows the connectivity matrix of the 9 x 9 network when neighbors of all nodes are detected by the pawn method and with a degree of neighborhood of 4.

create_edge_list(nodes, method = "pawn", degree = 4, ...)

## Fool

The fool can detect neighbors horizontally, i.e. among transects along a quadrat.

The function fool() can be used to detect neighbors (black dots in Fig. 3) of a specific node (red dot in Fig. 3).

fool(nodes, focus = "5-5", degree = 4, ...)

User can change the default settings (Fig. 3A), by adding directionality (directed = TRUE, Fig. 3B) and reversing the default directionality (directed = TRUE and reverse = TRUE, Fig. 3C).

Figure 4 shows the connectivity matrix of the 9 x 9 network when neighbors of all nodes are detected by the fool method and with a degree of neighborhood of 4.

create_edge_list(nodes, method = "fool", degree = 4, ...)

## Rook

The rook can detect neighbors both horizontally and vertically, i.e. among transects along a quadrat and among quadrats along a transect.

The function rook() can be used to detect neighbors (black dots in Fig. 5) of a specific node (red dot in Fig. 5).

rook(nodes, focus = "5-5", degree = 4, ...)

User can change the default settings (Fig. 5A), by adding directionality (directed = TRUE, Fig. 5B) and reversing the default directionality (directed = TRUE and reverse = TRUE, Fig. 5C).

Figure 6 shows the connectivity matrix of the 9 x 9 network when neighbors of all nodes are detected by the rook method and with a degree of neighborhood of 4.

create_edge_list(nodes, method = "rook", degree = 4, ...)

## Bishop

The bishop can detect neighbors diagonally.

The function bishop() can be used to detect neighbors (black dots in Fig. 7) of a specific node (red dot in Fig. 7).

bishop(nodes, focus = "5-5", degree = 4, ...)

User can change the default settings (Fig. 7A), by adding directionality (directed = TRUE, Fig. 7B) and reversing the default directionality (directed = TRUE and reverse = TRUE, Fig. 7C).

Figure 8 shows the connectivity matrix of the 9 x 9 network when neighbors of all nodes are detected by the bishop method and with a degree of neighborhood of 4.

create_edge_list(nodes, method = "bishop", degree = 4, ...)

## Knight

The knight has a complex move, like an ‘L’ shape. It’s the difference between the wizard and the queen.

The function knight() can be used to detect neighbors (black dots in Fig. 9) of a specific node (red dot in Fig. 9).

knight(nodes, focus = "5-5", degree = 4, ...)

User can change the default settings (Fig. 9A), by adding directionality (directed = TRUE, Fig. 9B) and reversing the default directionality (directed = TRUE and reverse = TRUE, Fig. 9C).

Figure 10 shows the connectivity matrix of the 9 x 9 network when neighbors of all nodes are detected by the knight method and with a degree of neighborhood of 4.

create_edge_list(nodes, method = "knight", degree = 4, ...)

## Queen

The queen can detect neighbors horizontally, vertically and diagonally. It’s a combination the rook and the bishop.

The function queen() can be used to detect neighbors (black dots in Fig. 11) of a specific node (red dot in Fig. 11).

queen(nodes, focus = "5-5", degree = 4, ...)

User can change the default settings (Fig. 11A), by adding directionality (directed = TRUE, Fig. 11B) and reversing the default directionality (directed = TRUE and reverse = TRUE, Fig. 11C).

Figure 12 shows the connectivity matrix of the 9 x 9 network when neighbors of all nodes are detected by the queen method and with a degree of neighborhood of 4.

create_edge_list(nodes, method = "queen", degree = 4, ...)

## Wizard

The wizard can detect neighbors in any direction. It’s a combination the queen and the knight.

The function wizard() can be used to detect neighbors (black dots in Fig. 13) of a specific node (red dot in Fig. 13).

wizard(nodes, focus = "5-5", degree = 4, ...)

User can change the default settings (Fig. 13A), by adding directionality (directed = TRUE, Fig. 13B) and reversing the default directionality (directed = TRUE and reverse = TRUE, Fig. 13C).

Figure 14 shows the connectivity matrix of the 9 x 9 network when neighbors of all nodes are detected by the wizard method and with a degree of neighborhood of 4.

create_edge_list(nodes, method = "wizard", degree = 4, ...)

## Custom moves

It’s possible to create any kind of scenarios by combining the previous moves and by changing the values of the arguments degree, directed, and reverse.

## References

Casajus N, Rievrs Borges E, Tabacchi E, Fried G & Mouquet N (2023) chessboard: An R package for creating network connections based on chess moves. R package version 0.1. URL: https://github.com/frbcesab/chessboard.