Skip to main content
Question

How to Download Files Generated in TrendMiner Machine Learning Hub (MLHub)

  • September 27, 2026
  • 3 replies
  • 34 views

Hi,

I am working in TrendMiner Machine Learning Hub (MLHub) and need to save/download files generated by a Python notebook, such as Parquet or ZIP files.

I found that files created under /home/jovyan do not persist after a kernel restart. I also tried downloading a generated ZIP file through an IPython FileLink, but this did not work.


Small files can be downloaded from notebook output using a base64 data URI, but a 10 MB generated file does not render the download link. What is the supported way to download larger Python-generated files (such as Parquet/ZIP files) from MLHub, or persist them outside the ephemeral /home/jovyan filesystem?

What is the supported method for either:

  • downloading notebook-generated files to my local computer, or
  • storing them in a persistent MLHub location that survives kernel restarts?

Thank you.

3 replies

Wouter Daniels
Employee
Forum|alt.badge.img

Hi Tim,

Good question. There is no official feature to download files from within MLHub. You already found one workaround which is creating a base64 URI, which has its limits as you experienced. The other workaround known to me is to save the data to a context item attachment, and then download it from there, though this is also limited to a 20MB file size. You can find an example of that in this notebook: https://github.com/TrendMinerCS/mlhub-notebooks/blob/main/Plotting%20examples/cached_plot_example.ipynb

An alternative without file size limit would be to write the file directly to some external system (e.g. a cloud storage) from MLHub, but it would require an outgoing connection, which is likely blocked.

The best option is almost always to run similar code locally, authenticating to TrendMiner from a local Python environment, thus generating the files locally. You can use direct API calls to get the data out of TrendMiner, or use our (still experimental) Python SDK. If you are struggling setting this up, you can let us know what data you need from TrendMiner to generate your file and we could help with an example.

Best regards,

Wouter


  • Author
  • Innovator
  • October 4, 2026

Thanks Wouter.

The local Python option is what I’d like to pursue.

I need to retrieve historical time-series data for specific Cooker 4 tags, including step/state, temperature, cooling valve and discharge valve signals, over defined date ranges, and save the returned data locally while preserving timestamps and returned values exactly.

Could you provide an example using the recommended local Python approach, preferably showing authentication, tag lookup, date-range retrieval, and writing the result locally?

I would also like to understand whether the SDK/API applies any interpolation or resampling by default and how to request the rawest available returned representation.


Wouter Daniels
Employee
Forum|alt.badge.img

Hi TIM,

Apologies for the late response. Our SDK is still in the experimental phase, but you can find the documentation to a preliminary version here: https://trendminercs.github.io/trendminer-interface

The specific example on getting tag data is probably what you need.

The get_data function does a linear interpolation of the tag, getting data at regular timestamps. This has the advantage that we can easily add data for multiple tags (for the same time interval) together in a single DataFrame as their timestamps will match, but the downside that we lose the information on what were the 'real' (index) datapoints. In the future we will also implement a function to get the index datapoints.

Let me know if this is sufficient for you to tackle your data extraction use case!

Wouter