Monkey Mechanics


Monkey TDS

Monkey TDS (Monkey Technical Data System) is my solution to no manufacturer standard existing for technical data sheet(s) (TDS) and the particularly poor TDSs from consumer FFF manufacturers. The primary goal was to create a standard format for storing any TDS data a manufacturer would provide, with the secondary goal of a user interface.

Data Format

Data formatting was broke into two separate entities, the format for storing data, and the format for retrieving data. This is driven by the fact that manufacturers all give different types of information aside from basic physical, mechanical, and chemical properties. This can make it challenging to be able to sort the data by any parameter while also having quick retrieval. A normal database would do something like chunk the data into pre-indexed categories (think manufacturer, polymer, etc.) but when the number and types of parameters are unknown that isn’t feasible for every parameter, and also makes maintenance of the database more expensive.

To get modularity and speed a plain text file format (.mtds) is used which stores all the information for a single filament with the bonus of being easily human interpretable.

# Specification

> Manufacturer
  <
  < Polymaker
  <

> Product Name
  <
  < Fiberon PA6-GF25
  <

> Material
  <
  < PA
  <
  
# Physical Property

> Density
  < ISO 1183 | GB/T 1033
  < 1.20 | at 23 °C
  < g/cm^3

> Glass Transition Temperature
  < DSC | 10 °C/min
  < 70.4
  < °C

# Mechanical Property

> Young's Modulus (In-Plane)
  < ISO 527 | GB/T 1040, dry (annealed 100 C/16 h)
  < 5356.9 ± 211.0
  < MPa

> Young's Modulus (Interlayer)
  < ISO 527 | GB/T 1040, dry
  < 3375.9 ± 142.1
  < MPa

Example .mtds file

The .mtds format encodes information as a vector with 3 elements, method (testing standard), value, and units (in a machine interpretable format so they can be converted). A thorough breakdown of .mtds can be found here.

Query/Retrieval

A custom text parser looking through individual .mtds files does not solve the previously illustrated problems. The next part of MonkeyTDS (really the .mtds format and MonkeyTDS and separate things) is a python script that compiles every .mtds file in a directory into one massive JSON file. This is JSON file is what is used to query on MonkeyTDS. In order to keep things organized the repo only stores the raw .mtds files and then on every release cut a github workflow runs the compilation script and attaches it to the release along with a a release summary. This is nice because any other open source app can use the database simply by querying the materials.json files attached to the latest release on the repo.

Expansion

MonkeyTDS really set out to solve a personal problem, but the dream would be for others to contribute by adding more materials to the database, or create their own systems that utilize the MonkeyTDS database. Currently the fastest way I have found to expand the database is using LLM’s. As the standards for .mtds were rigorously defined by a human (me) they make for great instructions for an LLM to use to scrape web pages and add to the catalog. The accuracy of these additions has not been verified but a scroll through the database shows reasonable looking numbers.

If you would like to contribute to the repo you can do so here.