Skip to content

API Documentation

This document provides detailed information about the public API of the brightest-path library.

Search Algorithms

1. AStarSearch

This class implements the A* search algorithm to find the brightest path between two points in a 2D or 3D image.

Parameters

Parameter Type Description Optional
image numpy.ndarray The 2D/3D image on which you will run an A* search. No
start_point numpy.ndarray The 2D/3D coordinates of the start point; For 2D images, the coordinates are of the form (y, x) For 3D images, the coordinates are of the form (z, x, y) No
goal_point numpy.ndarray The 2D/3D coordinates of the goal point; For 2D images, the coordinates are of the form (y, x) For 3D images, the coordinates are of the form (z, x, y) No
scale Tuple The scale of the image; defaults to (1.0, 1.0), i.e, image is not zoomed in/out For 2D images, the scale is of the form (x, y) For 3D images, the scale is of the form (x, y, z) Yes
cost_function Enum The cost function to be used for computing the cost of moving to a new point Default type is CostFunction.RECIPROCAL to use the reciprocal function Yes
heuristic_function Enum The heuristic function to be used to compute the estimated cost of moving from a point to the goal; Default type is HeuristicFunction.EUCLIDEAN to use the euclidean function for cost estimation Yes
open_nodes Queue contains a list of points that are in the open set, being examined for the brightest path; can be used by the calling application to show a visualization of where the algorithm is searching currently; Default value is None Yes

Note: All the parameters except image, start_point, and goal_point are optional.

Attributes

Attribute Type Description
is_canceled Bool should be set to True if the search needs to be stopped; False by default
open_nodes Queue contains a list of points that are in the open set, being examined for the brightest path; can be used by the calling application to show a visualization of where the algorithm is searching currently
result List[numpy ndarray] the result of the A* search containing the list of points that constitute the brightest path between the given start and goal points

Methods

Method Description Return Type
search Runs the A* search algorithm to find the brightest path from start_point to goal_point List[numpy.ndarray]; the list containing the 2D/3D point coordinates that constitute the brightest path

Note: Find the code for this class here.

Exceptions

Exception When is it thrown
TypeError If the image passed is None or start_point is None or goal_point is None
ValueError If the length of the image, start_point or goal_point is 0

We recommend you to catch the exceptions thrown by the library and handle them appropriately.

2. NBAStarSearch

This class implements the NBA* search algorithm to find the brightest path between two points in a 2D or 3D image.

Parameters

Parameter Type Description Optional
image numpy ndarray The 2D/3D image on which you will run an A* search. No
start_point numpy ndarray The 2D/3D coordinates of the start point; For 2D images, the coordinates are of the form (y, x) For 3D images, the coordinates are of the form (z, x, y) No
goal_point numpy ndarray The 2D/3D coordinates of the goal point; For 2D images, the coordinates are of the form (y, x) For 3D images, the coordinates are of the form (z, x, y) No
scale Tuple The scale of the image; defaults to (1.0, 1.0), i.e, image is not zoomed in/out For 2D images, the scale is of the form (x, y) For 3D images, the scale is of the form (x, y, z) Yes
cost_function Enum The cost function to be used for computing the cost of moving to a new point Default type is CostFunction.RECIPROCAL to use the reciprocal function Yes
heuristic_function Enum The heuristic function to be used to compute the estimated cost of moving from a point to the goal; Default type is HeuristicFunction.EUCLIDEAN to use the euclidean function for cost estimation Yes
open_nodes Queue contains a list of points that are in the open set, being examined for the brightest path; can be used by the calling application to show a visualization of where the algorithm is searching currently; Default value is None Yes

Note: All the parameters except image, start_point, and goal_point are optional.

Attributes

Attribute Type Description
is_canceled Bool should be set to True if the search needs to be stopped; False by default
open_nodes Queue contains a list of points that are in the open set, being examined for the brightest path; can be used by the calling application to show a visualization of where the algorithm is searching currently
result List[numpy ndarray] the result of the A* search containing the list of points that constitute the brightest path between the given start and goal points

Methods

Method Description Return Type
search Runs the A* search algorithm to find the brightest path from start_point to goal_point List[numpy.ndarray]; the list containing the 2D/3D point coordinates that constitute the brightest path

Note: Find the code for this class here.

Exceptions

Exception When is it thrown
TypeError If the image passed is None or start_point is None or goal_point is None
ValueError If the length of the image, start_point or goal_point is 0

We recommend you to catch the exceptions thrown by the library and handle them appropriately.

Cost Function

1. Reciprocal

This class implements the reciprocal cost function as the cost to calculate the cost of moving to a point.

The reciprocal function is commonly used as a cost function in pathfinding algorithms. It is calculated as the reciprocal of the intensity of a pixel/voxel at a given location in the image volume.

The intuition behind using the reciprocal function is that we want to give a higher cost to moving to points with lower intensity, as these areas may be less informative or less relevant to the overall goal of the pathfinding task. On the other hand, areas with higher intensity are likely to contain important information and should be favored in the search for the brightest path. Therefore, by taking the reciprocal of the intensity values, we are essentially inverting the cost, so that higher intensity areas have a lower cost, and vice versa. This makes it more likely that the pathfinding algorithm will favor paths that traverse brighter areas of the image volume.

Parameters

Paramater Type Description Optional
min_intensity float The minimum intensity a pixel/voxel can have in a given image No
max_intensity float The maximum intensity a pixel/voxel can have in a given image No

Methods

Method Description Return Type
cost_of_moving_to(intensity_at_new_point: float) calculates the cost of moving to a point float
minimum_step_cost() calculates the minimum step cost float

Find its code here.

Exceptions

Exception When is it thrown
TypeError If the min_intensity or max_intensity is None
ValueError If min_intensity > max_intensity

We recommend you to catch the exceptions thrown by the library and handle them appropriately.

Heuristic Function

1. Euclidean

A heuristic function is used to estimate the cost of moving from a given point to the goal point. The Euclidean distance is a measure of the straight-line distance between two points in a Euclidean space, such as the 2D or 3D space of an image.

Using the Euclidean distance as a heuristic function is effective because it provides an admissible and consistent estimate of the actual cost of moving from a given point to the goal point. An admissible heuristic is one that never overestimates the cost of reaching the goal, and a consistent heuristic is one that satisfies the triangle inequality, i.e., the estimated cost of moving from one point to another is always less than or equal to the sum of the estimated cost of moving from the first point to the goal plus the estimated cost of moving from the second point to the goal. By using a consistent heuristic, we can ensure that the pathfinding algorithm will always find the optimal path from the start point to the goal point.

Parameters

Parameter Type Description Optional
scale Tuple the scale of the image's axes. For example (1.0 1.0) for a 2D image. - for 2D points, the order of scale is: (x, y) - for 3D points, the order of scale is: (x, y, z) No

Methods

Method Description Return Type Note
estimate_cost_to_goal(current_point: numpy.ndarray, goal_point: numpy.ndarray) calculates the cost of moving to a point float If the image is zoomed in or out, then the scale of one of more axes will be more or less than 1.0. For example, if the image is zoomed in to twice its size then the scale of X and Y axes will be 2.0.
By including the scale in the calculation of distance to the goal we can get an accurate cost.
- for 2D points, the order of coordinates is: (y, x) - for 3D points, the order of coordinates is: (z, x, y)

Find its code here.

Exceptions

Exception When is it thrown
TypeError If the current_point or goal_point is None
ValueError If the length of current_point or goal_point is 0