stimupy.components.shapes#

Demos#

Functions#

rectangle

Draw a rectangle

triangle

Draw a triangle

cross

Draw a cross

parallelogram

Draw a parallelogram

ellipse

Draw an ellipse

circle

Draw an ellipse

wedge

Draw a wedge, i.e., segment of a disc

annulus

Draw a ring (annulus)

disc

Draw a central disc

ring

Draw a ring (annulus)

rectangle(visual_size=None, ppd=None, shape=None, rectangle_size=None, rectangle_position=None, intensity_rectangle=1.0, intensity_background=0.0, rotation=0.0)[source]#

Draw a rectangle

Parameters:
  • visual_size (Sequence[Number, Number], Number, or None (default)) – visual size [height, width] of image, in degrees visual angle

  • ppd (Sequence[Number, Number], Number, or None (default)) – pixels per degree [vertical, horizontal]

  • shape (Sequence[Number, Number], Number, or None (default)) – shape [height, width] of image, in pixels

  • rectangle_size (Number, Sequence[Number, Number]) – rectangle size [height, width], in degrees visual angle

  • rectangle_position (Number, Sequence[Number, Number], or None (default)) – position of the rectangle, in degrees visual angle. If None, rectangle will be placed in center of image.

  • intensity_rectangle (float, optional) – intensity value for rectangle, by default 1.0

  • intensity_background (float, optional) – intensity value of background, by default 0.0

  • rotation (float, optional) – rotation (in degrees), counterclockwise, by default 0.0 (horizontal)

Returns:

dict with the stimulus (key: “img”), mask with integer index for the shape (key: “rectangle_mask”), and additional keys containing stimulus parameters

Return type:

dict[str, Any]

triangle(visual_size=None, ppd=None, shape=None, triangle_size=None, intensity_triangle=1.0, intensity_background=0.0, include_corners=True, rotation=0.0)[source]#

Draw a triangle

Parameters:
  • visual_size (Sequence[Number, Number], Number, or None (default)) – visual size [height, width] of image, in degrees visual angle

  • ppd (Sequence[Number, Number], Number, or None (default)) – pixels per degree [vertical, horizontal]

  • shape (Sequence[Number, Number], Number, or None (default)) – shape [height, width] of image, in pixels

  • triangle_size (Number, Sequence[Number, Number]) – triangle size [height width], in degrees visual angle

  • intensity_triangle (float, optional) – intensity value for triangle, by default 1.0

  • intensity_background (float, optional) – intensity value of background, by default 0.0

  • rotation (float, optional) – rotation (in degrees), counterclockwise, by default 0.0

Returns:

dict with the stimulus (key: “img”), mask with integer index for the shape (key: “triangle_mask”), and additional keys containing stimulus parameters

Return type:

dict[str, Any]

cross(visual_size=None, ppd=None, shape=None, cross_size=None, cross_thickness=None, cross_arm_ratios=(1.0, 1.0), intensity_cross=1.0, intensity_background=0.0, rotation=0.0)[source]#

Draw a cross

Parameters:
  • visual_size (Sequence[Number, Number], Number, or None (default)) – visual size [height, width] of image, in degrees visual angle

  • ppd (Sequence[Number, Number], Number, or None (default)) – pixels per degree [vertical, horizontal]

  • shape (Sequence[Number, Number], Number, or None (default)) – shape [height, width] of image, in pixels

  • cross_size (Number, Sequence[Number, Number]) – cross size [height, width], in degrees visual angle

  • cross_thickness (Number, Sequence[Number, Number]) – thickness of cross in degrees visual angle

  • cross_arm_ratios (float or (float, float)) – ratio used to create arms (up-down, left-right)

  • intensity_cross (float, optional) – intensity value for cross, by default 1.0

  • intensity_background (float, optional) – intensity value of background, by default 0.0

  • rotation (float, optional) – rotation (in degrees), counterclockwise, by default 0.0

Returns:

dict with the stimulus (key: “img”), mask with integer index for the shape (key: “cross_mask”), and additional keys containing stimulus parameters

Return type:

dict[str, Any]

parallelogram(visual_size=None, ppd=None, shape=None, parallelogram_size=None, intensity_parallelogram=1.0, intensity_background=0.0, rotation=0.0)[source]#

Draw a parallelogram

Parameters:
  • visual_size (Sequence[Number, Number], Number, or None (default)) – visual size [height, width] of image, in degrees visual angle

  • ppd (Sequence[Number, Number], Number, or None (default)) – pixels per degree [vertical, horizontal]

  • shape (Sequence[Number, Number], Number, or None (default)) – shape [height, width] of image, in pixels

  • parallelogram_size ([Number, Number, Number], [Number, Number], Number or None (default)) – parallelogram size [height, width, depth], in degrees visual angle

  • intensity_parallelogram (float, optional) – intensity value for parallelogram, by default 1.0

  • intensity_background (float, optional) – intensity value of background, by default 0.0

  • rotation (float, optional) – rotation (in degrees), counterclockwise, by default 0.0

Returns:

dict with the stimulus (key: “img”), mask with integer index for the shape (key: “parallelogram_mask”), and additional keys containing stimulus parameters

Return type:

dict[str, Any]

ellipse(visual_size=None, ppd=None, shape=None, radius=None, intensity_ellipse=1.0, intensity_background=0.0, rotation=0.0, origin='mean', restrict_size=True)[source]#

Draw an ellipse

Parameters:
  • visual_size (Sequence[Number, Number], Number, or None (default)) – visual size [height, width] of image, in degrees visual angle

  • ppd (Sequence[Number, Number], Number, or None (default)) – pixels per degree [vertical, horizontal]

  • shape (Sequence[Number, Number], Number, or None (default)) – shape [height, width] of image, in pixels

  • radius (Sequence[Number, Number], Number or None (default)) – ellipse radius [ry, rx] in degrees visual angle

  • intensity_ellipse (float, optional) – intensity value for ellipse, by default 1.0

  • intensity_background (float, optional) – intensity value of background, by default 0.0

  • rotation (float, optional) – rotation (in degrees), counterclockwise, by default 0.0

  • origin ("corner", "mean" or "center") – if “corner”: set origin to upper left corner if “mean”: set origin to hypothetical image center (default) if “center”: set origin to real center (closest existing value to mean)

  • restrict_size (Bool) – if False, allow ellipse to reach beyond image size (default: True)

Returns:

dict with the stimulus (key: “img”), mask with integer index for the shape (key: “ellipse_mask”), and additional keys containing stimulus parameters

Return type:

dict[str, Any]

circle(visual_size=None, ppd=None, shape=None, radius=None, intensity_circle=1.0, intensity_background=0.0, origin='mean', restrict_size=True)[source]#

Draw an ellipse

Parameters:
  • visual_size (Sequence[Number, Number], Number, or None (default)) – visual size [height, width] of image, in degrees visual angle

  • ppd (Sequence[Number, Number], Number, or None (default)) – pixels per degree [vertical, horizontal]

  • shape (Sequence[Number, Number], Number, or None (default)) – shape [height, width] of image, in pixels

  • radius (Number or None (default)) – circle radius in degrees visual angle

  • intensity_circle (float, optional) – intensity value for circle, by default 1.0

  • intensity_background (float, optional) – intensity value of background, by default 0.0

  • origin ("corner", "mean" or "center") – if “corner”: set origin to upper left corner if “mean”: set origin to hypothetical image center (default) if “center”: set origin to real center (closest existing value to mean)

  • restrict_size (Bool) – if False, allow circle to reach beyond image size (default: True)

Returns:

dict with the stimulus (key: “img”), mask with integer index for the shape (key: “circle_mask”), and additional keys containing stimulus parameters

Return type:

dict[str, Any]

wedge(visual_size=None, ppd=None, shape=None, angle=None, radius=None, rotation=0.0, inner_radius=0.0, intensity_wedge=1.0, intensity_background=0.0, origin='mean')[source]#

Draw a wedge, i.e., segment of a disc

Parameters:
  • visual_size (Sequence[Number, Number], Number, or None (default)) – visual size [height, width] of image, in degrees

  • ppd (Sequence[Number, Number], Number, or None (default)) – pixels per degree [vertical, horizontal]

  • shape (Sequence[Number, Number], Number, or None (default)) – shape [height, width] of image, in pixels

  • angle (float) – angular-width (in degrees) of segment

  • radius (float) – radius of disc, in degrees visual angle

  • rotation (float, optional) – rotation (in degrees) from 3 o’clock, counterclockwise, by default 0.0

  • inner_radius (float, optional) – inner radius (in degrees visual angle), to turn disc into a ring, by default 0

  • intensity_wedge (float, optional) – intensity value of wedge, by default 1.0

  • intensity_background (float, optional) – intensity value of background, by default 0.0

  • origin ("corner", "mean" or "center") – if “corner”: set origin to upper left corner if “mean”: set origin to hypothetical image center (default) if “center”: set origin to real center (closest existing value to mean)

Returns:

dict with the stimulus (key: “img”), mask with integer index for each segment (key: “wedge_mask”), and additional keys containing stimulus parameters

Return type:

dict[str, Any]

annulus(visual_size=None, ppd=None, shape=None, radii=None, intensity_ring=1.0, intensity_background=0.0, origin='mean')#

Draw a ring (annulus)

Parameters:
  • visual_size (Sequence[Number, Number], Number, or None (default)) – visual size [height, width] of image, in degrees

  • ppd (Sequence[Number, Number], Number, or None (default)) – pixels per degree [vertical, horizontal]

  • shape (Sequence[Number, Number], Number, or None (default)) – shape [height, width] of image, in pixels

  • radii (Sequence[Number, Number]) – inner and outer radius of ring in degree visual angle

  • intensity_ring (Number, optional) – intensity value of ring, by default 1.0

  • intensity_background (float, optional) – intensity value of background, by default 0.0

  • origin ("corner", "mean" or "center", optional) – if “corner”: set origin to upper left corner if “mean”: set origin to hypothetical image center (default) if “center”: set origin to real center (closest existing value to mean)

Returns:

dict with the stimulus (key: “img”), mask with integer index for each ring (key: “ring_mask”), and additional keys containing stimulus parameters

Return type:

dict[str, Any]

Raises:
  • ValueError – if passed in less/more than 2 radii (inner, outer)

  • ValueError – if passed in less/more than 1 intensity

disc(visual_size=None, ppd=None, shape=None, radius=None, intensity_disc=1.0, intensity_background=0.0, origin='mean')[source]#

Draw a central disc

Essentially, dics(radius) is an alias for ring(radii=[0, radius])

Parameters:
  • visual_size (Sequence[Number, Number], Number, or None (default)) – visual size [height, width] of image, in degrees

  • ppd (Sequence[Number, Number], Number, or None (default)) – pixels per degree [vertical, horizontal]

  • shape (Sequence[Number, Number], Number, or None (default)) – shape [height, width] of image, in pixels

  • radius (Number) – outer radius of disc in degree visual angle

  • intensity_disc (Number, optional) – intensity value of disc, by default 1.0

  • intensity_background (float, optional) – intensity value of background, by default 0.0

  • origin ("corner", "mean" or "center", optional) – if “corner”: set origin to upper left corner if “mean”: set origin to hypothetical image center (default) if “center”: set origin to real center (closest existing value to mean)

Returns:

dict with the stimulus (key: “img”), mask with integer index for each ring (key: “ring_mask”), and additional keys containing stimulus parameters

Return type:

dict[str, Any]

ring(visual_size=None, ppd=None, shape=None, radii=None, intensity_ring=1.0, intensity_background=0.0, origin='mean')[source]#

Draw a ring (annulus)

Parameters:
  • visual_size (Sequence[Number, Number], Number, or None (default)) – visual size [height, width] of image, in degrees

  • ppd (Sequence[Number, Number], Number, or None (default)) – pixels per degree [vertical, horizontal]

  • shape (Sequence[Number, Number], Number, or None (default)) – shape [height, width] of image, in pixels

  • radii (Sequence[Number, Number]) – inner and outer radius of ring in degree visual angle

  • intensity_ring (Number, optional) – intensity value of ring, by default 1.0

  • intensity_background (float, optional) – intensity value of background, by default 0.0

  • origin ("corner", "mean" or "center", optional) – if “corner”: set origin to upper left corner if “mean”: set origin to hypothetical image center (default) if “center”: set origin to real center (closest existing value to mean)

Returns:

dict with the stimulus (key: “img”), mask with integer index for each ring (key: “ring_mask”), and additional keys containing stimulus parameters

Return type:

dict[str, Any]

Raises:
  • ValueError – if passed in less/more than 2 radii (inner, outer)

  • ValueError – if passed in less/more than 1 intensity