Out of this world! 5 stellar NASA software freebies

Delve into NASA's offerings, and you'll find machine learning libraries, extensions to Python's IPv6 functionality, and tools for writing highly parallel software

Earlier this week, NASA opened up a bunch of its internal software to the public: physics simulations, operational management, embedded systems control, and many other tasks you'd associate with the space program.

Some of the software is for general-purpose applications, such as machine learning and data processing, that would interest everyone from a 1,000-person enterprise to a startup with highly specific needs.

Here are five of the packages that caught our eye. The page numbers indicate where each item can be found in the catalog, and the links lead to descriptions of each package on the software.nasa.gov site. Note that not all software is available for use outside of the United States, and not all of it is open source.

AutoBayes, Block GP (pp. 119/120)

There are plenty of machine learning and data-analysis projects in the catalog, but these two in particular are worth paying attention to. AutoBayes looks like a cousin to other projects that create software components based on a few rules, as its description states it can can "automatically generate efficient and customized programs for data analysis" via extended Bayesian networks and algorithm schemas.

Block GP provides "scalable Gaussian process regression," another common variety of machine learning activity that NASA says is "an order of magnitude more scalable than existing state-of-the-art nonlinear regression algorithms." It might not work as a drop-in replacement for comparable algorithms in your current toolkit, but it's worth a look if you're up for putting together your own end-to-end solution from scratch.

Mariana: Text Classification System (p. 125)

Text-classification systems are common machine learning projects, so it's no surprise NASA has worked on one. Mariana uses supervised learning and claims to "efficiently [optimize] hyperparameters." That is, it has a degree of self-turning and can use different statistical functions to perform the tuning depending on which would yield the best results for your problem (for example, genetic algorithms vs. Monte Carlo functions).

ACE (Architecture Adaptive Computing Environment) (p. 85)

Interest is spiking in developer tools that work with parallel architectures like multiple cores (Milk, Tapir). NASA's ACE "allows a programmer to more easily write parallel programs for a wide variety of parallel computer architectures." Note that it isn't designed to augment current applications, since it consists of its own language ("a parallel superset of ANSI C"), compiler, and runtime. It's likely that any existing solution would have to be reimplemented in ACE. But those curious about seeing what it can do by starting from scratch should take a look.

Shared Memory Framework for Distributed Processing of Models and Simulation on a Linux Host with Virtual Machines (p. 25)

Details are light about this framework. The description only says that it "implements distributed model processes with shared memory data exchange across virtually hosted operating systems." Based on the description, it seems akin to the big data libraries that use shared memory in VMs to speed up the creation of models from data sets. (Note: Not available outside of the United States.)

IPv6 Python Extension Module (p. 123)

Right now, Python developers have some IPv6 functionality, but not the low-level stuff that can come in handy when using the next-gen networking protocol. This add-on "enable[s] IPv6 features not yet available for any Python versions," such as setting IPv6 flow labels for sockets -- handy if you want to use Python for tinkering, troubleshooting, or white-hat hacking.

Copyright © 2017 IDG Communications, Inc.