이 프레젠테이션에서는 JMP 18의 Python 지원에 대한 새롭고 중요한 업데이트를 소개합니다. 이번 업데이트를 통해 Python과의 통합이 훨씬 강화되었고, Python 중심의 사용자 경험이 크게 향상되었습니다. JMP 18에서는 다음과 같은 기능을 사용할 수 있습니다.
파이썬에서 사용할 수 있는 JMP 기능은 시간이 지남에 따라 확장될 예정이지만, 현재는 핵심 기능과 인메모리 데이터 지원에 중점을 두고 있습니다. 이번 발표에서는 변경 사항과 그 배경에 대해 직접 알아보고, JMP 사용자에게 제공되는 새로운 기능을 살펴보겠습니다. 외부 파이썬 패키지를 활용한 확장성과 데이터 가져오기 기능에 대해 논의하고, 외부 패키지를 사용하여 파이썬 인터페이스를 통해 GPU에 접근하는 방법을 시연합니다.
안녕하세요, 저는 폴 넬슨입니다. JMP, Python, 그리고 저희의 다음 단계에 대해 이야기하려고 합니다. 작년에 진행했던 발표 중 하나를 계기로, 저희는 JMP와 Python을 한 단계 더 발전시켜야겠다고 생각했습니다. 개선의 여지가 있었고, 오늘 제가 말씀드릴 내용은 바로 그 부분입니다.
고객들이 겪었던 가장 큰 어려움은 JMP 14부터 17까지의 파이썬 지원 기능을 제대로 작동시키는 것이었습니다. 만약 작동한다면 아주 잘 작동했을 뿐, 그렇지 않은 경우가 너무 많았습니다. 수많은 파이썬 배포판과 다양한 환경 때문에 테스트가 매우 어려웠습니다.
Anaconda는 윈도우에서 가끔씩 작동했고, Python 가상 환경도 가끔씩 작동했습니다. 하지만 사용자마다 사용하는 Python 버전이 달랐기 때문에 스크립트가 사용자의 환경에서 공통된 Python 버전에 의존할 수조차 없었습니다.
JSON 편집기에서 파이썬 코드를 편집하는 것은 어렵고 불편했습니다. 파이썬은 코드 블록이 공백으로 구분되는 언어인데, 이를 JSL 문자열로 붙여넣어야 하니 작업이 어려웠습니다. 또한, 이전 버전의 JMP는 파이썬에서 발생하는 오류를 제대로 보고하지 않아 파이썬 스크립트를 디버깅하기가 힘들었습니다.
마지막으로, 데이터 테이블과 행렬 전송은 파일 시스템을 통해 이루어졌는데, 데이터 테이블의 경우 CSV 파일 형식으로 전송되어 데이터 양이 많을 경우 속도가 느립니다. 큰 클래스는 문제없이 작동하지만, 데이터 양이 많아질수록 속도가 느려집니다.
저희의 비전은 파이썬 통합이 별도의 설정 없이 바로 작동하도록 하는 것입니다. 이를 위해 파이썬 버전 3.115와 JMP 18.0을 JMP에 포함시켜 설치했습니다. 모든 사용자가 동일한 버전의 파이썬과 JMP를 사용할 수 있는 공통 환경을 구축한 것입니다.
저희는 한 단계 더 나아가 JSL과 Python 간의 데이터 전송이 메모리 내에서 이루어지고 메모리에 대한 복사 접근이 전혀 발생하지 않도록 했습니다. 이를 통해 Python 프로그래머에게 매력적이고 생산적인 환경을 조성했습니다. 또한 코드 색상 표시 및 구문 강조 기능을 갖춘 Python 스크립트 편집기도 제공합니다.
스크립트 편집기에서 순수 Python 스크립트를 직접 실행할 수 있으며, Python 환경 내에서 JMP 데이터와 로그에 직접 접근할 수 있고, JSL을 호출하여 Python에서 데이터에 접근할 수도 있습니다. JMP 로그와 내장 로그에 대한 오류 보고 기능이 크게 향상되었습니다.
이제 공통된 환경이 되었으므로 테스트하고 검증할 수 있습니다. 저희 환경은 여러분이 보시는 것과 동일합니다. 스크립팅 색인에 파이썬 카테고리를 새로 추가하여 JMP 패키지 가져오기 및 기타 유틸리티 패키지에서 사용할 수 있는 기능들을 설명하고 예제를 보여드리겠습니다.
또 다른 장점은 이를 통해 파이썬의 방대한 패키지 라이브러리를 활용하여 JMP의 기능을 확장할 수 있다는 것입니다. 저희는 JSL을 완전히 대체할 수 있는 라이브러리를 만들려는 것이 아니라, JMP 내에서 파이썬 프로그래밍을 위한 친숙하고 생산적인 환경을 제공하고자 합니다.
이번 개편은 현대화이자 전면적인 개편입니다. JMP의 파이썬 통합을 위한 초기 설계 과정에서 몇 가지 제약 사항이 있었습니다. 저희는 이번 변경으로 인한 문제점을 최소화하는 동시에 미래를 위한 강력하고 안정적인 기반을 마련하기 위해 모든 노력을 기울였습니다.
이번 JMP 전환 과정에서 발생하는 문제점은 일시적일 것으로 예상됩니다. 핵심은 이제 JMP와 함께 제공되는 Python 버전만 지원한다는 점입니다. 마치 개인용 JMP 가상 환경과 같다고 생각하시면 됩니다.
스크립트에서 또 다른 변경 사항은 파이썬에서 데이터 테이블을 전송하는 방식이 바뀌었다는 것입니다. 이제 데이터 테이블 객체를 JMP 객체로 생성합니다. 이를 통해 JMP 데이터 테이블에 실시간으로 접근할 수 있습니다. 메모리에 저장된 복사본으로는 기존 테이블을 편집하고 수정할 수 없지만, 이제는 더 이상 복사본이 아닙니다.
JMP 14부터 17까지는 파일 시스템의 임시 CSV 파일을 통해 데이터를 복사하여 pandas DataFrame 객체를 생성했습니다. 대용량 데이터의 경우 CSV로 내보내면 파일 크기가 매우 커지고 처리 속도가 느려지는 문제가 발생합니다. 또한 바이너리 형식을 텍스트 형식으로 변환했다가 다시 바이너리 형식으로 변환하는 과정에서 정밀도 손실이 발생할 가능성도 있습니다.
만약 동일한 기능이 정말 필요하다면, 샘플 파일에 pandas Python용 DT를 제공했습니다. 이 DT는 두 개의 pandas 함수를 제공하며, 이전과 동일한 방식으로 작동합니다. 임시 CSV 파일을 생성하고 pandas에게 해당 CSV 파일을 가져오도록 지시합니다.
또한 JMP 데이터 테이블 객체에서 pandas DataFrame을 메모리에 생성하는 방법을 보여주는 JMP to pandas 샘플도 있습니다. 이 샘플은 JMP의 열을 하나씩 사용하여 pandas의 열을 구축합니다.
파이썬의 Send Matrix 함수도 예전에는 파일 시스템을 통해 데이터를 쓰는 방식이었습니다. NumPy가 읽을 수 있도록 double형 값을 파일에 저장하는 방식이었죠. 하지만 이제는 내부적으로 메모리를 통해 처리되며, 복사본이 아닌 행렬에 대한 실시간 참조를 사용합니다.
JSL 파이썬 API의 대부분은 그대로 유지되었습니다. 변경 사항은 주로 기존 파이썬 지원에서 파이썬 버전을 선택하도록 구성하는 데 사용되었던 더 이상 사용되지 않는 인자와 함수를 제거하는 것이었습니다.
제거된 API는 Matplotlib에서 이미지를 가져오는 Python의 `getgraphics` 함수뿐이었는데, 스크립팅 색인에 JMP가 내부적으로 수행했던 것과 동일한 작업을 JSL과 Python 코드만으로 수행하는 방법을 보여주는 예제가 있습니다. 자, 보여주세요. 어디 보자. 데모를 끝내도록 하죠.
여기 JMP가 있습니다. 보여드리고 싶은 것 중 하나는 툴바에 파이썬 아이콘이 있다는 점입니다. 파일 메뉴에서 JSON 스크립트를 볼 수 있지만, 이제는 파이썬 스크립트도 새로 만들 수 있습니다. 파이썬 스크립트 편집기를 열어 보겠습니다.
내장된 로그를 표시할 수 있습니다. JMP 임포트 패키지가 있습니다. JMP를 임포트합니다. 파이썬 문서 문자열을 추가하여 `help JMP Python` 명령어로 실행할 수 있도록 했습니다. 해당 스크립트를 실행하면 최상위 JMP 임포트 패키지 내의 객체와 함수에 대한 문서가 제공되는 것을 확인할 수 있습니다.
상수들이 많이 있습니다. 대부분의 특수 디렉터리가 모두 표현되어 있죠. 그래서 우리는 할 수 있습니다. 이제 파이썬에서 해볼게요. JMP를 엽니다. JMP, 음, 오늘은 타이핑이 잘 안 되네요. JMP. 샘플 데이터. 플러스. 빅 보스. JSL처럼 코드 줄을 선택해서 스크립트에서 실행할 수 있습니다. 그리고 큰 클래스도 있죠.
자, 이건 복사본이 아닙니다. 우리는 해당 객체를 가져올 수 있습니다. TT equals JMP open이라고 입력하면 참조를 얻을 수 있지만, TT equals JMP.current라고 입력해도 현재 데이터 테이블에 대한 참조를 얻을 수 있습니다.
음, 예를 들어 TT를 출력해 볼 수 있죠. 그러면 큰 클래스라는 걸 알 수 있어요. 5x40 열 크기니까요. 하지만 더 재밌는 방법도 있어요. TT.이름. 파이썬 슬라이스 연산자를 사용하면 되죠. 이름 열에서 0부터 시작해서 하나씩 건너뛰면서 출력하라고 하는 거예요.
파이썬에서 인덱싱은 파이썬에서처럼 0부터 시작합니다. 데이터 테이블의 인덱스는 열 단위입니다. 테이블 형식이 열 우선이기 때문에 이름을 하나씩 건너뛰면서 출력하면 Katie, Jane, Lilly, James, Barbara, Susan, Joe, David 순으로 출력됩니다.
이건 실시간 액세스라서… 이런저런 작업을 할 수 있어요. 예를 들어 TT 같은 것도 할 수 있고, 이름이나 열 인덱스를 사용할 수도 있죠. 열을 출력하면… 선택하라는 메시지가 나옵니다. 여기… 제가 하나 골랐죠, 루이스. 죄송합니다. 000은 케이티입니다. 데이터 테이블이 실시간이니까 케이티라고 할 수 있죠.
잠깐만요. 소문자로. 대소문자 혼합. 이제 내장 로그에 출력 결과가 표시됩니다. 보시다시피 데이터 테이블이 변경되었습니다. 이를 통해 데이터 테이블을 수정하고, 파이썬 방식으로 데이터 테이블에 접근하고, 파이썬에서 데이터 테이블을 생성할 수 있습니다. 이 정도면 충분히 노력한 겁니다.
이제 스크립팅 색인이 있습니다. 제가 보여드릴 내용은… 여기서, 앞서 말씀드린 것처럼 `getgraphics` 함수는 더 이상 사용되지 않습니다. 실제로 JMP에서 더 이상 유효한 함수가 아니지만, 스크립팅 색인의 예제를 통해 기존 방식에서 JMP 내부적으로 이미지를 저장하고 새 창에 이미지를 표시하는 방식으로 전환하는 방법을 알 수 있습니다.
파이썬 중심 환경의 멋진 새 기능 중 하나는 파이썬 카테고리가 따로 마련되어 있다는 점입니다. JMP 임포트 패키지에는 데이터 테이블 객체가 포함되어 있습니다. 각 객체에 대한 예제를 통해 새 열을 만들고, 행을 추가하고, 테이블을 저장할 수 있습니다. 테이블 이름을 가져오는 것과 같은 속성 사용법도 배울 수 있습니다. 이 모든 것이 가능합니다.
이 명령어는 파이썬을 사용하여 새로운 데이터 테이블을 생성합니다. 또한 JMP 유틸리티도 제공합니다. JMP는 자체적으로 격리된 환경을 생성하므로, pip를 사용하여 JMP를 실행할 수 있습니다. 패키지를 설치할 때는 반드시 JMP의 격리된 환경에 설치해야 합니다.
JMP에 있는 패키지가 다른 프로그램이나 다른 Python 설치와 충돌하여 문제가 발생하는 일은 없을 것입니다. 저희는 이를 격리하여 관리하고 있습니다. 따라서, 만약 설치가 필요한 경우를 대비하여 `create jpip` 명령어를 사용하면 Python pip 스크립트를 감싸는 스크립트를 생성하여 패키지를 설치할 수 있습니다. 또는 `gem` 내의 `JMP utils` 클래스에서 직접 실행할 수도 있습니다.
여기서는 `pip list` 명령어를 실행해 보겠습니다. 이 명령어를 실행하면 `pip`를 호출하여 제 파이썬 환경에 설치된 패키지 목록을 반환합니다. 또 다른 예로, 패키지를 설치하는 방법도 보여드리겠습니다. 이 명령어는 JMP에서 바로 실행됩니다.
몇 가지 주의 사항이 있는데, 이것이 바로 create jpip 명령어가 존재하는 이유입니다. NumPy처럼 공유 라이브러리를 사용하는 패키지가 메모리에 로드되는 경우, Windows 시스템에서 해당 패키지의 업데이트를 제한할 수 있습니다. 또한 컴파일이 필요한 패키지도 있는데, 이러한 패키지는 명령줄에서 컴파일해야 할 수도 있습니다.
일부 방법은 작동할 수 있지만, 명령줄에서 실행해야 할 수도 있습니다. 그렇기 때문에 jpip 래퍼 스크립트를 생성하는 것이 좋습니다. 이 스크립트를 실행하면 파일을 저장할 디렉터리를 지정하는 창이 나타나고, 해당 폴더를 선택하면 명령줄에서 실행 가능한 jpip 래퍼 스크립트가 생성됩니다.
실행할 때 설치 후 '-' 사용자 플래그를 사용해야 합니다. 여기서 호출하면 자동으로 처리됩니다. 설치를 실행하는 JSL 함수도 있습니다. Python을 사용한 패키지 설치는 훨씬 간단합니다. JSL 스크립트를 실행하기만 하면 백그라운드에서 pip가 호출되어 JMP의 격리된 환경에 패키지를 설치하는 데 필요한 모든 환경 변수가 올바르게 설정됩니다.
자, 시작해 볼까요? 그럼 다른 데모들을 더 보여드리겠습니다. 이건 쉽고 기본적인 내용입니다. 하지만 저희가 이 모든 과정을 통해 만들고자 했던 또 다른 목표는 JMP를 파이썬에 더 친숙하게 만들고, 추가적인 파이썬 패키지를 통해 JMP의 기능을 훨씬 쉽게 확장할 수 있도록 하는 것이었습니다.
고객들이 가장 많이 요청하는 지원 기능 중 하나는 Parquet 파일 가져오기입니다. 이 데모에서는 제 드라이브에서 테이블 파일을 가져옵니다. 인터넷에서 다운로드한 파일이죠. 맞습니다. 그런 다음 Parquet 파일의 형식을 출력하고, Parquet 파일의 데이터를 기반으로 JMP 데이터 테이블을 열 단위로 생성합니다. 마지막으로 로그를 지웁니다. 제가 직접 하는 모습을 보세요.
스크립트를 실행하지 않았습니다. 제가 뭔가를 잘못 선택했나 봅니다. 이제 됐습니다. 이건 파케트 파일입니다. PQ가 가져올 때 파이로우 파케트 형식을 사용했죠. 파케트 파일 속성을 보면 행이 1,000개입니다. 형태는 13열 1,000행입니다. 스키마에는 열 이름이 표시되어 있습니다.
맨 아래에서 보여드릴 수 있는 또 다른 점은 파이썬 측면에서 개선해야 할 부분이 아직 많이 남아있다는 것입니다. 하지만 그 전까지는 파이썬에서 JSL을 실행할 수 있습니다.
파이썬 코드는 아직 열 너비 설정이나 열 유형 변경과 같은 기능을 지원하지 않습니다. 새 열을 만들 수는 있지만 파이썬에서 해당 열의 유형을 변경할 수는 없습니다. 이러한 기능들을 향후 지원할 예정이지만, 지금은 파이썬 코드 내에서 JSL 스크립트를 실행할 수 있도록 하는 해결 방법을 사용하고 있습니다. 마치 이전에 JSL 코드 내에서 파이썬을 실행할 수 있었던 것처럼 말입니다.
이제 이 향상된 환경을 통해 두 환경 간에 자유롭게 상호 작용할 수 있습니다. Python 환경에서 JSL 스크립트를 실행할 수 있으며, Python 환경에서 실행된 호출은 다시 JSL 환경에서 실행될 수 있습니다. 따라서 호출을 중첩하여 기존에는 불가능했던 작업들을 수행할 수 있습니다. 예를 들어, JMP에서 기본적으로 지원하지 않는 Parquet 형식의 데이터 파일을 사용하는 것도 가능합니다. 하지만 이를 지원하는 Python 패키지를 가져와서 구현했습니다.
제가 좋아하는 것 중 하나입니다. 저는 통계학자는 아니지만 그래픽과 다른 수학 분야에는 조예가 깊습니다. 여기서는 OpenCL(Open Compute Language)을 사용해 보겠습니다. OpenCL 패키지를 불러와서 만델브로트 프랙탈을 생성해 보겠습니다. 먼저 CPU로 실행하는 모습을 보여드리겠습니다. CPU로 실행하면 약 16초 정도 걸립니다.
이건 고통스럽고, JMP 자체도 느리다는 걸 알게 될 겁니다. 파이썬이 이 시점에서 제어권을 갖고 있기 때문에 반응이 느립니다. 반복문 깊숙한 곳에 실행 중인 셀 대기 코드를 넣으면 제어권을 되찾을 수 있습니다. 이 코드는 CPU를 사용하여 프랙탈을 생성합니다.
이제 GPU를 사용하도록 변경하고 스크립트를 실행해 보겠습니다. 짜잔! 이미지를 생성하고 저장한 다음 스크립트에서 열어서 어떤 내용이 나오는지 확인하는 데 몇 초밖에 걸리지 않습니다. GPU를 사용했을 때는 16초가 걸렸는데… 더 이전 시점으로 돌아가 보면, 제가 지금 발표하는 동안 CPU로 실행하는 데 32초가 걸렸습니다.
이제 JMP에서 GPU를 활용하고 싶다면 Python을 통해 바로 가능합니다. PyOpenCL과 PyCuda를 모두 테스트해 보았으므로, NVIDIA 그래픽 카드를 사용하고 CUDA를 사용하는 경우 PyCuda 또는 보다 범용적인 OpenCL을 활용할 수 있습니다. 이를 통해 데스크톱의 처리 능력을 낭비하지 않고 JMP의 연산 능력을 더욱 향상시킬 수 있습니다.
파이썬을 통해 SaaS에도 연결할 수 있습니다. SaaS에는 SaaS y. 패키지가 있고, 저희는 그걸 설치했습니다… 그리고 이 작업 중 일부는 제 동료 중 한 명이 함께 만든 것입니다. 로그를 지우고 나면 제가 뭘 했는지 알 수 있고 스크립트를 실행할 수 있습니다.
정상적으로 정보를 수집하고 있습니다. 자, 시작해 볼까요? 이 부분은 JSL을 사용하여 스크립트 실행에 필요한 모든 Python 패키지가 이미 설치되어 있는지 확인하는 과정입니다. 이 설정은 사용자가 직접 구성할 수 있습니다. 로그에 표시된 내용 중 하나가 바로 이러한 요구 사항이 이미 충족되었다는 것입니다. 다음은 SaaS에 연결하여 스크립트를 실행한 결과입니다. SaaS Python 패키지를 사용했고, 로그를 다시 한번 살펴보겠습니다.
스크립트 내용이 로그에 출력됩니다. 말씀드린 대로, SaaS에 연결하고 제품을 실행하는 연결 정보가 기록됩니다. 저희의 물류 관련 정보죠. 그리고 출력 값과 SaaS 세션 종료 정보가 반환됩니다.
TensorFlow에 관심 있는 사람들이 있다는 얘기를 들었습니다. 아주 간단한 예제를 하나 보여드리겠습니다. 아, 아니네요. 제가 TensorFlow를 설치해서 JSL로 실행하고 있는 거지만, 파이썬으로 바로 실행해도 충분히 될 겁니다.
텐서플로우를 실행해서 합계를 구하는 겁니다. 제가 보여드린 것보다 훨씬 더 복잡한 활용법을 생각해내실 수 있을 거라고 확신합니다. Py digest도 좋은 예입니다. screen이라는 명령어를 사용하면 됩니다. 제가 만든 샘플 코드 중 하나는 JSL을 실행해서 JMP의 `pick directory` 명령어를 이용해 디렉토리를 선택하고, 그 결과를 파이썬 스크립트에서 사용하는 방법을 보여주는 것입니다. 이 모든 것이 순수 파이썬 스크립트로 작성되었습니다. 디렉토리를 선택할 수 있게 해주는 거죠.
이 프로그램은 디렉터리에 있는 모든 파일의 체크섬을 계산합니다. 계산된 체크섬을 SQLite 데이터베이스에 저장하고, 그 데이터베이스에서 JMP 데이터 테이블을 생성합니다. 이를 통해 데이터베이스 프로그래밍, Python을 이용한 JMP 데이터 테이블 생성, 그리고 Python에서 JSL을 실행하는 방법을 배울 수 있습니다.
디렉토리를 선택하세요. 데이터가 많으니, parquet 폴더 또는 select 폴더에서 프레젠테이션을 선택하겠습니다. 이제 체크섬 테이블이 생성되었습니다. 이 테이블은 디렉토리의 모든 파일을 검사하여 파일 경로와 파일 내용의 MD5 체크섬을 제공합니다. 데이터베이스를 구축하고, Python을 사용하여 JMP 데이터 테이블을 만들고, JSL을 사용하여 열 너비를 설정합니다.
다시 말씀드리지만, 아직 구현하지는 않았지만 검토 목록에 있는 기능입니다. 하지만 원하신다면 파이썬에서 JSL을 사용하여 여러 작업을 수행할 수 있습니다.
어떤 사람들은 R을 사용하고 싶어할 수도 있습니다. 하지만 저는 제 컴퓨터와 저희 환경에서 서버를 사용하여 연결을 설정했습니다. Linux WSL 환경에서는 Windows 시스템 내에서 서버를 실행하는 것이 더 쉬웠습니다.
여기 R 서버 데몬이 실행 중입니다. 예약된 클라이언트를 사용하고 있고요. 간단한 R 벡터를 서버에 생성하고, 결과를 합산한 다음 이 스크립트를 실행하는 작업을 하고 있습니다. 서버에 연결되면 벡터를 얻고, 모든 요소를 합산하여 6이라는 값을 얻습니다. 저희 파이썬2에도 관련 예제가 몇 가지 있습니다. 명령줄에서 바로 실행할 수 있는 아주 간단한 예제를 원하신다면, 프로세스를 사용하여 명령줄에서 R을 실행하는 방법에 대한 샘플도 있습니다.
마지막으로, 존 사울의 도움을 받아 HDB 스캔 파이썬 패키지를 사용한 예제를 만들었습니다. Matplotlib에 대해 한 가지 알아둘 점은 Windows용 Matplotlib에는 그래픽 백엔드가 없으므로 출력을 보려면 PyQt5를 사용하는 것이 가장 좋다는 것입니다.
Mac에서 Matplotlib을 사용하는 경우, 설치되어 있지 않다면 그래픽 백엔드가 아닌 AGG를 강제로 사용하게 됩니다. PyQt5 또는 PySide 중 하나를 사용하게 되는데, 이는 Mac에서 Matplotlib이 자동으로 Cocoa 백엔드를 사용하기 때문입니다. 또한 Mac에서 Matplotlib의 마지막 창을 닫으면 JMP가 종료되는 버그가 있습니다.
이를 방지하기 위해, 시스템에 Matplotlib이 설치되어 있고 백엔드가 있는 경우 Matplotlib을 로드하고 Qt 백엔드를 강제로 사용하도록 합니다. 그렇지 않은 경우에는 그래픽 백엔드가 아닌지 확인합니다. 현재 백엔드는 PyQt5로 설정되어 있습니다. 이 예제에서는 HDB 스캔 데이터에 대한 클러스터링을 실행합니다.
이제 내장된 로그를 보여드리겠습니다. 스크립트를 실행하면 Matplotlib 테이블 형식으로 데이터가 생성된 그림이 나타납니다. 여기서 JMP open을 실행하고 DT 참조를 가져온 것을 볼 수 있습니다. 이것들이 제가 가지고 있는 샘플입니다. 믿으세요.
프레젠테이션을 다시 시작하겠습니다. 가까운 미래에 저희의 우선순위는 다음과 같습니다. 지속적인 개선과 향상, 그리고 JMP와 Python 간의 데이터 상호 운용성 증대입니다. 현재 열 수정 편집의 제한 사항은 모든 유형의 열을 생성할 수는 있지만, 숫자 및 문자 열, 표현식 열 또는 상태 열에 대해서만 값을 수정하고 가져올 수 있다는 것입니다. 연결된 테이블 생성은 모두 향후에 구현될 예정입니다.
파이썬 스크립트 편집기는 코드 색상 지정 및 구문 강조 표시를 지원하지만, 아직 자동 들여쓰기 기능은 지원하지 않습니다. 이 부분도 검토해 볼 예정입니다.
현대화 목표는 JMP와 Python 통합을 별도의 설정 없이 바로 사용할 수 있도록 하는 것이었습니다. 즉, 별도의 구성 없이 JMP와 Python을 활용하여 생산성을 높일 수 있어야 한다는 것입니다. 만약 그렇지 않다면 작업에 상당한 어려움이 따를 것입니다. 따라서 Python 프로그래머가 JMP 환경에서 생산성을 발휘하는 데 걸리는 시간을 단축하고, JMP의 기능을 향상시켜 외부 Python 패키지를 활용한 손쉬운 확장을 통해 분석 허브로서의 역할을 수행할 수 있도록 하는 것이 목표였습니다.
다른 사람들이 오랜 시간 공들여 작성한 다양한 데이터 형식, 예를 들어 Parquet 형식(저희도 테스트했습니다)이나 HDF5 형식 등을 불러오는 기능을 개선하고자 합니다. 시중에는 수많은 데이터 형식이 존재하며, 어떤 개발팀도 내부적으로 모든 형식을 지원할 만큼 충분한 시간을 확보할 수 없습니다. 하지만 이 방법을 사용하면 Python 패키지를 가져와 JMP 데이터 테이블로 변환하고 JMP 내에서 강력한 기능을 활용할 수 있습니다.
시간 내주셔서 감사합니다. 저희가 준비한 콘텐츠를 즐겁게 보셨기를 바라며, 피드백 주시면 감사하겠습니다. 감사합니다.