Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Data Handling

Column/Cell Value Formula

...

JIRA

SUMMARY

Description

DETAILS

ORG-20778

Excel like pi product function

Add product Labtalk function which returns the product of a dataset

double product(vector vd)

E.g. column A is filled with 2, 3, 4, 5

In B1 cell, enter = product(A) will get 120, which is 2*3*4*5.

ORG-21992

Excel like LET function

Add LET Labtalk function which pairs values and names and calculates the expression using the names

Easier to write complex formulas, by making it possible to declare and assign values to variables inside a formula

LET(name1, exp1, [name2…], [exp2…], calculation)

exp1 is resolved and assigned to name1, exp2 is resolved and assigned to name2, then assign names to calculation for result. 

LET(x, 1, x+1) -> 2

LET(sum, total(A), n, count(A), sum/n)

ORG-13898

Command Window improvement

Command Window now supports Zoom in/out and auto code complete

support mouse wheel zoom, more support on auto complete

ORG-21926

Introduce new LabTalk command to update pending locks

Improve Labtalk command run -p to update pending locks for active book/sheet.

Code Block
run -p aub;//active book
run -p auw;//active sheet
run -p aubd;//active book and all its descendants
run -p auwd;//active sheet and all its descendants

ORG-21587

LabTalk Access to Dash Definition at Plot Level

Labtalk command set supports setting line dash property.

Syntax: set name -ldf value

Code Block
set %c -ldf  "5 20 10";

ORG-19233

GetN supports dataset elements

GetN Box now supports to assign dataset values.

E.g.

dataset values;
values.setsize(3);
getn (Value 1) values[1] (Value 2) values[2] (Value 3) values[3];

ORG-22214

LT Labtalk control of Box Plots

Add more Labtalk controls to customize Box Plot properties such as statistical lines, labels, etc

layer.plot1.boxchart.line=1,2,3; //show lines in box chart, 1=median,2=mean or 3 both

layer.plot1.boxchart.label=1,2,3;//show label of line, 1=median,2=mean or 3 both

layer.plot.label.font=1; //label font

layer.plot1.label.fsize=20; //label font size

layer.plot1.label.color=2; //label color based on color list, e.g. 1=black, 2=red, etc.

ORG-18101

Sort columns by Long name, etc.

Added Labtalk worksheet method SortCols() to sort columns by Long names

wks.SortCols(L,d);//sort LongName decending

ORG-21874

ORG-22418

ORG-22525

Labtalk access to more plot properties

Add more Labtalk controls to customize plot properties such as symbol overlaps, label properties, etc

Code Block
layer.plot.label.Spec$="0";//to show label at end of plot
layer.plot.label.Spec$="";//turn off show label at specific indices checkbox
layer.plot.label.fsize
layer.plot.label.color
layer.plot.label.form$
layer.plot.symbol.offset = 1; // Symbol Overlapped Arrangement: 0=disable, 1=horizontal, 2=vertical
layer.plot.symbol.oct = 1; // Symbol Overlapped offset center type
layer.plot.contlines = 1; // Enable Contours for surface plot
layer.plot.contmat //specify the index of matrix use for contour line, 0 = self
set/get %c -ccl name //set/get the matrix use for contour line
layer.plot.colorlist$
layer.plot.symbol.size
layer.plot.symbol.kind

ORG-22475

GetNBox focus issue

Increase default GetNBox entry focus time

Changed the default value of @ETG to 1700.

ORG-22313

Skip none-accessible objects in doc looping

doc -e G will skip none-accessible objects in looping graph objects.

When use doc -e G command to loop for all labels and other named objects in the active graph layer, the objects that not accessible from LabTalk will be skipped now.

ORG-21997

Plot Hide Show events from Labtalk

Add a new event “Plot Hide Show” in Object Properties

Open Object Properties dialog, in Programming tab, a new event is added in the Script Run After drop-down list. Choose it and then script will be execution when plot hide/show.

ORG-22606

LT Labtalk Accessing Cells from Another Book

Improve LabTalk accessing cells notation from another book.

  • Support col(A) notation. E.g., =[book1]1!col(A)[1]

  • Book Name support resolving string varaible. E.g., Fill A1 cell with “Book1”, the cell formula =[A1$]1!A1 can refer to A1 cell in the 1st sheet of Book1

  • Support A0 notation. E.g., =[A1$]1!B0

Python

JIRA

SUMMARY

Description

DETAILS

ORG-22062, ORG-21995, ORG-22031, ORG-22106, ORG-22107, ORG-22063, ORG-22556

Introduce originpro module. get/set between pandas DataFrame and Origin worksheet.

Introduce originpro module. Support passing data between pandas DataFrame and Origin worksheet.

We have introduced a new originpro package for easy access to Origin from Python. This package works on a higher level, providing easy access to workbooks, matrices and graphs with very little code. The package also provides higher level access to data frames and numpy arrays.

Several sample Origin projects have been added under \Samples\Python sub folder. These samples have Python code attached as .py files in the project.

Documentation including detailed reference for the orignipro package.

https://www.originlab.com/python/doc/originpro/annotated.html

Code Block
import pandas as pd
import originpro as op
wks=op.find_wsheet()
df = wks.to_df()

wks = op.new_wsheet( 'Test Category' )
wks.from_df( df )

ORG-20980

Update preshipped Python version

Upgrade preshipped Python to 3.8.3

upgrade Python to 3.8.3

ORG-21988, ORG-11812

menu access access to Python

Under menu Connectivity,add new menu Open Untitled.py, Open Default Python Functions, Open examples.py, Open, Python Packages. etc

  1. Under menu Connectivity add new menu Open Untitled.py, Open Default Python Functions, Open examples.py, Open, Python Packages.

  2. In Code Builder, add menu Python Packages under Tools.

  3. Start Debug button on toolbar (F5) to run Python file.

ORG-22488

Import Wizard with Python support

Support data file import with Python in Import Wizard. Import filter now support Python code

ORG-22203

Fitting functions using Python

Support using Python function as fitting function

Define fitting function using Python and fit in Origin

ORG-22024

Wrap text in Python Console

Support auto wrapping text in Python Console

Allow auto wrapping for dir command’s output in Python Console.

ORG-22046

Add new function for Python Object to call LabTalk with return value

Add new method GetNumProp, GetStrProp, SetNumProp, SetStrProp, DoMethod for Python Object to call LabTalk with return value

GetNumProp, GetStrProp, SetNumProp, SetStrProp, DoMethod are added for PyOrigin and OriginExt.

ORG-22075

Remove Python 2 from installation

Stop supporting Python 2.

Stop supporting Python 2.

ORG-21993

Support Python PIP command

Support installing Python packages with PIP command in LabTalk

All pip commands are supported in LabTalk now.

For example, you can use following command to install numpy package directly.

Code Block
pip install numpy;

ORG-22049

Install Packages from Python Packages menu

Support installing Packages from Python Packages menu

Add Python Packages tool to install/uninstall internal python packages.

In Code Builder, select Tools: Python Packages…

In main workspace, select Connectivity: Python Packages…

ORG-22070

OC to call Python functions

Support calling Python functions from Origin C code

OC supports calling Python functions. By default the py file should be placed in the same folder as the c/cpp or XF file, and the name of the py file has to be origin.py.
To change that, you need to

  1. to change working directory

Code Block
Python.OCWD$;//OC Working Directory

2. to change file name(independent of 1)

Code Block
Python.OCWF$;//OC Working Filename

ORG-21996

Labtalk LT to call python functions

Support calling Python functions from Labtalk script

LT supports calling Python functions. By default the py file should be placed in the User Files Folder with name labtalk.py. Call function with syntax

Code Block
aa = py.myfunc(x,y)

We can also specify the file name, for example, signal_utils.py, then we can call the function by

Code Block
aa = py.signal_utils.myfunc(x,y)

Also, you can change the default working directory and default file name by following command,

Code Block
Python.LTWD$;//LT Working Directory
Python.LTWF$;//LT Working Filename

To call Python function in the attached py file in the project, use the py.@ syntax.

Code Block
aa = py.@myfunc(x,y) //if there is a single attached py file
aa = py.@filename.myfunc(x,y) //if there are multiple attached py files, use filename

By default, when calling Python function in LabTalk and Column Formula, function argument is assumed to be list of float, and this can be controlled by system variable @PYFV (Default is 3).

Also, you can specify the argument and return type with function annotations.

Code Block
def f2(a:float, b=1)->float:
    return a+b

An alternative to specify argument and return type is to use docstring, which is more important when function is used in column formula.

Code Block
f = float
F = list of float
s = str
S = list of str
i = int

ORG-22239

Show Python print immediately

Python print() function now output result immediately when executed

Added a system variable @PYO to control if show Python print immediately for Embedded Python.

Code Block
@PYO=1(default):immediate output
@PYO=0:output at the end

For example:

Code Block
import PyOrigin as po
print('before')
po.LT_execute('typ hi')
print('after')

if @PYO=1, will output as

Code Block
before
hi
after

if @PYO=0, will output as

Code Block
hi
before
after

ORG-22158

Support running UTF-8 py file in Origin Python

Support running UTF-8 py file in Origin Python

  1. LT run function allowANSI .py file, for example: run -pyf test.py

  2. Python file created in Code Builder is set as UTF-8 by default.

ORG-22042

Add some basic functions under MatricLayer class in OriginExt and PyOrigin

Add some basic functions under MatricLayer class in OriginExt and PyOrigin: SetShape(), SetNumMats(), GetNumMats()

Added three function in OriginExt and PyOrigin under MatricLayer class:

SetShape(self, nRows, nCols, bKeepData=FALSE)

SetNumMats(self, nMats)

GetNumMats(self)

ORG-22012

Origin COM Improvements 2021

Added following function in COM, OriginExt and PyOrigin: OPY_CLASS(Page)* , LoadPage(const string& strPathName, int options = CREATE_VISIBLE_SAME);

Added following function in COM, OriginExt and PyOrigin.

OPY_CLASS(Page)* LoadPage(const string& strPathName, int options = CREATE_VISIBLE_SAME);

ORG-21990

Improve Using Origin from Outside Python

Added python package OrglabExt for COM calling

Added python package OrglabExt for COM calling

ORG-22282

Prevent Script Window GUI for Python

if use script window to run Python, it shows message box that recommend to use Python Console instead.

Show message box that recommend to use Python Console instead.

ORG-22300

Set column value with Python code

Added Python Function tab in Set Column Value dialog to define Python functions which can be called to set column values.

Add Python Function tab in Set Column Value dialog

ORG-22525

Python control of plot colormap and color list

Added Python control of plot colormap, color list, symbol type and size.

Control over plot colormap and color list.

Code Block
plot.colormap="candy.oth"
plot.colormap="beach.pal"

For example:

Code Block
import originpro as op

wks = op.find_sheet()
graph = op.new_graph(template='scatter')
layer = graph[0]
plot = layer.add_plot(wks, coly=1, colx=0)
layer.rescale()
plot.color = op.color_col(1,'n')
plot.colormap="fire"

Also, control the plot symbol type and size

Code Block
plot.symbol_kind
plot.symbol_size

ORG-22518

Better handling of Date and Time columns

Added methods to originpro WSheet class to set Date and Time format columns:

Added methods to originpro WSheet class to set Date and Time format columns:

Code Block
wks.as_date(col=0, format='yyyy-mm-dd')
wks.as_time(col=0, format='HH:mm:ss')

Where format is Origin date time format specifiers.

ORG-22049

Python Packages tool

Easy way to install Python Packages in Origin from Python Packages menu.

Python Packages dialog to install, upgrade and uninstall packages.

Menus to open the dialog:

  1. In Origin main window, choose Conectivity: Python Packages…

  2. In Code Builder, choose Tools: Python Packages…

We recommend restart Origin after the installation.

ORG-22430

originpro package update-able independently

originpro package can now be updated independent of origin releases using Python Packages Tool in Code Builder’s Tools menu.

originpro package can now be updated independent of origin releases using Python Packages Tool

ORG-22048

Support Intellisense for Python

Support Intellisense for Python coding in Code Builder.

Implemented features:

  1. Auto complete when typing in editor, or when invoked via menu/hotkey. (Ctrl+L)

  2. Go to definition on symbol under cursor. (F11, or context menu)

  3. Find references on symbol under cursor. (Alt+Shift+F, or context menu)

  4. Docstrings shown as a popup window when hover on a symbol.

  5. Signature help window will be shown after typing '(' for function hint, prototype, parameters will be shown in this window

  6. Show symbols in current file (Alt+M, or main menu)

New system variables:

  1. @CI: Enable/disable code intellisense

  2. @CIE: Show LSP error. e.g. when fails to find/run dependency

  3. @CIS: Enable intellisense for script window. default=off

ORG-22193

OriginExt support for originpro -- project level

originpro module is available for external python to call Origin COM by OriginExt.

Use originpro in external python to call Origin COM by OriginExt.

ORG-22316

Python Improvement in Workbook template

  1. Workbook template now detects if necessary Python packages are installed.

  2. Support running Python script saved in a text object in workbook.

  1. Added page property “page.tkey$“ for packages, for example, set page.tkey$ = "py:pandas";for a template, when open this template in Origin, will check if pandas python package is installed.

  2. Support running python code in a button. for example. then there are python in a button named test, just need to run “run -pyb test“.

ORG-22471

Add Python based templates in New Workbook dialog

More Python based workbook templates are added. Hovering mouse over those templates tells if it’s Python sample

Provide some new templates in New Workbook dialog to show how to use Python in Origin.

...