cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • DownloadSemiconductor Toolkit: Tools to create wafer maps, add wafer geometry to graphics, explore die defects & compare wafers.
  • Discovery Summit 2026: Early User Edition - September 23-24.Register. It's free.
  • Use JMP Clinical with CDISC-compliant data. Review studies, ID safety and efficacy signals & communicate findings with interactive graphics. Register to see how. Aug. 27, 2 pm US ET.

Discussions

Solve problems, and share tips and tricks with other JMP users.
Choose Language Hide Translation Bar
SDF1
Super User

PINNs in JMP?

Hello All,

  Although this question is a bit more directed at JMP employees, other users might have additional information as well.

  I'm curious if JMP plans to implement any physics-informed neural networks (PINNs) in their NN modeling platform. As a physicist (in industry, not academia), much of the data I analyze has underlying physical constraints that are hard to capture within a standard JMP data table. And although I appreciate the hard work JMP has put into their predictive modeling platforms like XGBoost or NN, or their Pytorch add-in, it's often hard to extract the physical drivers/limits when modeling the data. Sure, in an ideal situation, I can generate my own formula to model data, but in real world situations, we don't have harmonic oscillators that govern the response, it's so much more "messy" than that, and we don't have model formula(s) to work with.

  It would be really cool to add some kind of physics-informed option where a penalization factor can be included in a model so that if a fundamental physical law is violated, that pathway is penalized and vice-versa. Better yet, include multiple physics-informed penalization factors. The statistics is great and all, but with nearly every data set out there, there are some kind of physical laws that apply.

  Just curious.

Thanks!,

DS

2 REPLIES 2

Re: PINNs in JMP?

This is one of the great things that the Python Integration brings to JMP 18 and beyond.  The ability to customize the capabilities of JMP to your needs.  You can implement a solution that directly suits your needs.  A quick google search 'Python packages for PINN physics-informed neural nets'   Resulted in the following responses:

AI Overview
 
 
 
The most popular and comprehensive Python packages for building Physics-Informed Neural Networks (PINNs) fall into two categories: dedicated high-level PINN libraries and low-level core deep learning frameworks.
If you want an out-of-the-box solution with geometry tools, boundary conditions, and PDE solvers already built for you, use a high-level library like DeepXDE. If you want total customization and maximum control over the underlying mathematics, build your PINN using core frameworks like PyTorch or JAX. [1, 2, 3, 4, 5]
 

 
High-Level PINN Libraries
These domain-specific libraries feature built-in routines for spatial-temporal geometry generation, boundary/initial value conditions, and specialized optimizers (like L-BFGS). [1]
  • DeepXDE: The most widely-used, comprehensive framework for scientific machine learning. It supports complex multi-dimensional geometries, custom boundary conditions, and handles forward/inverse problems effortlessly. It operates on top of PyTorch, TensorFlow, JAX, or PaddlePaddle backends. [1, 2, 3, 4, 5]
  • Modulus (by NVIDIA): A high-performance enterprise-grade framework optimized for industrial physics simulation. It seamlessly integrates PINNs with traditional physics workflows and utilizes GPU acceleration for massive scale. [1, 2, 3]
  • SciANN: A wrapper library built on top of Keras and TensorFlow designed specifically for physics-informed deep learning, scientific computing, and data-driven PDE inversion. [1]
  • jinns: A highly flexible, modular, and fast JAX-based library specifically built to handle inverse problems, meta-modeling, and gradient-based optimization utilizing the Optax ecosystem. [1]
  • PinnDE: A unified open-source library built to handle both traditional PINN architectures and Deep Operator Networks (DeepONets) for solving complex systems of differential equations. [1, 2]

Or building something directly using PyTorch, or other underlying libraries.  

Installing DeepXDE into the JMP environment is simply opening a Python script window and 

import jmp
from jmputils import pip
jpip('install', 'DeepXDE')

Then run that script to install DeepXDE and its dependencies.

It installs a lot of python packages.

/*:
Collecting DeepXDE
  Downloading deepxde-1.15.0-py3-none-any.whl.metadata (12 kB)
Collecting matplotlib (from DeepXDE)
  Downloading matplotlib-3.11.1-cp314-cp314-macosx_11_0_arm64.whl.metadata (80 kB)
Requirement already satisfied: numpy in /Users/panels/Library/Application Support/JMP/Python/3.14/lib/python/site-packages (from DeepXDE) (2.5.0)
Collecting scikit-learn (from DeepXDE)
  Downloading scikit_learn-1.9.0-cp314-cp314-macosx_12_0_arm64.whl.metadata (11 kB)
Collecting scikit-optimize>=0.10.2 (from DeepXDE)
  Downloading scikit_optimize-0.10.2-py2.py3-none-any.whl.metadata (9.7 kB)
Collecting scipy (from DeepXDE)
  Downloading scipy-1.18.0-cp314-cp314-macosx_14_0_arm64.whl.metadata (62 kB)
Collecting joblib>=0.11 (from scikit-optimize>=0.10.2->DeepXDE)
  Downloading joblib-1.5.3-py3-none-any.whl.metadata (5.5 kB)
Collecting pyaml>=16.9 (from scikit-optimize>=0.10.2->DeepXDE)
  Downloading pyaml-26.7.0-py3-none-any.whl.metadata (12 kB)
Collecting packaging>=21.3 (from scikit-optimize>=0.10.2->DeepXDE)
  Downloading packaging-26.3-py3-none-any.whl.metadata (3.5 kB)
Collecting PyYAML (from pyaml>=16.9->scikit-optimize>=0.10.2->DeepXDE)
  Downloading pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl.metadata (2.4 kB)
Collecting narwhals>=2.0.1 (from scikit-learn->DeepXDE)
  Downloading narwhals-2.24.0-py3-none-any.whl.metadata (15 kB)
Collecting threadpoolctl>=3.5.0 (from scikit-learn->DeepXDE)
  Downloading threadpoolctl-3.6.0-py3-none-any.whl.metadata (13 kB)
Collecting contourpy>=1.0.1 (from matplotlib->DeepXDE)
  Downloading contourpy-1.3.3-cp314-cp314-macosx_11_0_arm64.whl.metadata (5.5 kB)
Collecting cycler>=0.10 (from matplotlib->DeepXDE)
  Downloading cycler-0.12.1-py3-none-any.whl.metadata (3.8 kB)
Collecting fonttools>=4.28.2 (from matplotlib->DeepXDE)
  Downloading fonttools-4.63.0-cp314-cp314-macosx_10_15_universal2.whl.metadata (118 kB)
Collecting kiwisolver>=1.3.1 (from matplotlib->DeepXDE)
  Downloading kiwisolver-1.5.0-cp314-cp314-macosx_11_0_arm64.whl.metadata (5.1 kB)
Collecting pillow>=9 (from matplotlib->DeepXDE)
  Downloading pillow-12.3.0-cp314-cp314-macosx_11_0_arm64.whl.metadata (9.1 kB)
Collecting pyparsing>=3 (from matplotlib->DeepXDE)
  Downloading pyparsing-3.3.2-py3-none-any.whl.metadata (5.8 kB)
Requirement already satisfied: python-dateutil>=2.7 in /Users/panels/Library/Application Support/JMP/Python/3.14/lib/python/site-packages (from matplotlib->DeepXDE) (2.9.0.post0)
Requirement already satisfied: six>=1.5 in /Users/panels/Library/Application Support/JMP/Python/3.14/lib/python/site-packages (from python-dateutil>=2.7->matplotlib->DeepXDE) (1.17.0)
Downloading deepxde-1.15.0-py3-none-any.whl (195 kB)
Downloading scikit_optimize-0.10.2-py2.py3-none-any.whl (107 kB)
Downloading joblib-1.5.3-py3-none-any.whl (309 kB)
Downloading packaging-26.3-py3-none-any.whl (129 kB)
Downloading pyaml-26.7.0-py3-none-any.whl (27 kB)
Downloading scikit_learn-1.9.0-cp314-cp314-macosx_12_0_arm64.whl (8.2 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8.2/8.2 MB 82.6 MB/s  0:00:00
Downloading narwhals-2.24.0-py3-none-any.whl (461 kB)
Downloading scipy-1.18.0-cp314-cp314-macosx_14_0_arm64.whl (20.4 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 20.4/20.4 MB 96.4 MB/s  0:00:00
Downloading threadpoolctl-3.6.0-py3-none-any.whl (18 kB)
Downloading matplotlib-3.11.1-cp314-cp314-macosx_11_0_arm64.whl (9.3 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 9.3/9.3 MB 94.1 MB/s  0:00:00
Downloading contourpy-1.3.3-cp314-cp314-macosx_11_0_arm64.whl (273 kB)
Downloading cycler-0.12.1-py3-none-any.whl (8.3 kB)
Downloading fonttools-4.63.0-cp314-cp314-macosx_10_15_universal2.whl (2.9 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.9/2.9 MB 75.6 MB/s  0:00:00
Downloading kiwisolver-1.5.0-cp314-cp314-macosx_11_0_arm64.whl (64 kB)
Downloading pillow-12.3.0-cp314-cp314-macosx_11_0_arm64.whl (4.8 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.8/4.8 MB 85.4 MB/s  0:00:00
Downloading pyparsing-3.3.2-py3-none-any.whl (122 kB)
Downloading pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl (173 kB)
Installing collected packages: threadpoolctl, scipy, PyYAML, pyparsing, pillow, packaging, narwhals, kiwisolver, joblib, fonttools, cycler, contourpy, scikit-learn, pyaml, matplotlib, scikit-optimize, DeepXDE

Successfully installed DeepXDE-1.15.0 PyYAML-6.0.3 contourpy-1.3.3 cycler-0.12.1 fonttools-4.63.0 joblib-1.5.3 kiwisolver-1.5.0 matplotlib-3.11.1 narwhals-2.24.0 packaging-26.3 pillow-12.3.0 pyaml-26.7.0 pyparsing-3.3.2 scikit-learn-1.9.0 scikit-optimize-0.10.2 scipy-1.18.0 threadpoolctl-3.6.0

Then once it's installed you use it from

import deepxde

... your python code here ...

DeepXDE docs can be found => https://deepxde.readthedocs.io/en/latest/index.html

With any of the machine learning, torch backed or GPU backed libraries the better your machine, the happier you will be RAM, and especially GPU VRAM and Integrated VRAM such as Apple Silicon or Blackwell based systems is extremely important.  These tools require workstation class hardware to achieve maximum benefit.

The install and import was run on a development build of JMP 19.2, but should work on any version of JMP 18 or newer.

Re: PINNs in JMP?

Note: I was running a local build of JMP 20, but do not expect issues with JMP 18, or 19.  

You also need a backend to be able to import deepxde.

import jmp
from jmputils import jpip
jpip('install','torch')

import os
os.environ['DDE_BACKEND']='pytorch'

import torch
if torch.mps.is_available():
    torch.set_default_device('mps')
  
if torch.cuda.is_available():
    torch.set_default_device('cuda')

import deepxde
help(deepxde)

Note the check above for 'mps' and 'cuda'.  MPS is Apple's Metal Performance Shaders(MPS) and of course CUDA is Nvidia's workhorse on Windows and Linux.  The checks ensure that torch is using a GPU if available.

This ran and provided a lot of output with the help(deepdxe)

import deepxde
help(deepxde)
/*:
Using backend: pytorch
Other supported backends: tensorflow.compat.v1, tensorflow, jax, paddle.
paddle supports more examples now and is recommended.
Matplotlib is building the font cache; this may take a moment.
Help on package deepxde:

NAME
    deepxde

PACKAGE CONTENTS
    _version
    backend (package)
    callbacks
    config
...

DATA
    __all__ = ['backend', 'callbacks', 'data', 'geometry', 'grad', 'icbc',...

VERSION
    1.15.0

FILE
    /Users/panels/Library/Application Support/JMP/Python/3.14/lib/python/site-packages/deepxde/__init__.py

Recommended Articles