Awesome
nu_plugin_vec
A plugin for Nushell, a cross-platform shell and scripting language. This plugin adds support for vector operations.
Installation
Cargo
Get the latest version from crates.io with a local install:
cargo install nu_plugin_vec # Downloads and installs the plugin
plugin add ~/.cargo/bin/nu_plugin_vec # Registers the plugin with Nushell
plugin use vec # Activates the plugin
Manual build
Manual builds can also be used:
git clone https://github.com/PhotonBursted/nu_plugin_vec.git # Clone the repository
cd nu_plugin_vec # Enter the repo folder
cargo build -r # Build a release version of the plugin
plugin add target/release/nu_plugin_vec # Registers the plugin with Nushell
plugin use vec # Activates the plugin
Features
The plugin offers adds some new commands, which aim to make scripting vector-like operations a smoother experience. Below, a few use cases are shown, which outline the difference this plugin makes.
Showcase
Addition and subtraction
# Vanilla Nushell
$vec1 | zip $vec2 | each { |pair| ($pair | first) + ($pair | last) }
# Nushell + nu_plugin_vec
$vec1 | vec add $vec2
Dot product
# Vanilla Nushell
$vec1 | zip $vec2 | each { |pair| ($pair | first) * ($pair | last) } | math sum
# Nushell + nu_plugin_vec
$vec1 | vec dot $vec2
Vector similarity
# Vanilla Nushell
let dot_product = ($vec1 | zip $vec2 | each { |pair| ($pair | first) * ($pair | last) } | math sum)
let magnitude1 = ($vec1 | each { |v| $v * $v } | math sum | math sqrt)
let magnitude2 = ($vec2 | each { |v| $v * $v } | math sum | math sqrt)
$dot_product / ($magnitude1 * $magnitude2)
# Nushell + nu_plugin_vec
$vec1 | vec cos $vec2
Command list
The list of commands currently available is as follows:
vec add
andvec sub
for addition and subtractionvec cos
andvec sin
for angle calculationvec dot
for dot productsvec sqnorm
andvec magnitude
for length measurementsvec normalize
for conversions into unit vectors
For more information, invoke help <command>
in your Nushell session.