Ticket #2636 (closed: fixed)

Opened 10 years ago

Last modified 5 years ago

Improve the handling of child algorithms in Python Algorithms

Reported by: Nick Draper Owned by: Janik Zikovsky
Priority: critical Milestone: Release 2.1
Component: Mantid Keywords:
Cc: doucetm@… Blocked By:
Blocking: Tester: Peter Peterson

Description

Make any pythonsimpleAPI call inside a python algorithms a child algorithms by default.

steps:

  1. add a global switch to pythonsimpleAPI to make any subsequent algorithms to be child algs
  2. set and reset that switch either side of PyExec
  3. Add documentation of how to override the switch in case you really want to

Change History

comment:1 Changed 10 years ago by Mathieu Doucet

  • Cc doucetm@… added

Note that turning this feature ON by default may break existing python algorithms. When an algorithm is executed as a sub-algorithm, the output workspace is not added to the ADS. The user has to get it from the executed sub-alg if it is needed after execution.

The following (very common) code would not work:

def PyExec(self):
  input_ws = self.getProperty("InputWorkspace")
  SomeAlgorithm(InputWorkspace=input_ws, OutputWorkspace="tmp_out")
  SomeOtherAlg(InputWorkspace="tmp_out", OutputWorkspace="result")

Tmp_out can't be transferred to the next algorithm in this way with sub-algorithms.

comment:2 Changed 9 years ago by Nick Draper

  • Milestone changed from Iteration 28 to Iteration 29

Bulk move of tickets at the end of iteration 28

comment:3 Changed 9 years ago by Nick Draper

  • Milestone changed from Iteration 29 to Iteration 30

"New" tickets moved at the code freeze of iteration 29

comment:4 Changed 9 years ago by Nick Draper

  • Milestone changed from Iteration 30 to Iteration 31

Bulk move of tickets to iteration 31 at the iteration 30 code freeze

comment:5 Changed 9 years ago by Nick Draper

  • Milestone changed from Iteration 32 to Iteration 33

Moved to iteration 33 at iteration 32 code freeze

comment:6 Changed 9 years ago by Janik Zikovsky

  • Owner changed from Martyn Gigg to Janik Zikovsky
  • Status changed from new to accepted

comment:7 Changed 9 years ago by Janik Zikovsky

Refs #2636, #4752: make python algo's child algorithms set as children

Changeset: 2685a3810c9032b3a82319362f73d6d9c47bbe2c

comment:8 Changed 9 years ago by Janik Zikovsky

Refs #2636, #4752: method for children of python algorithms

Changeset: cb95b77c2142d57d65ce2834ac31a481ce5cc9f4

comment:9 Changed 9 years ago by Janik Zikovsky

Refs #2636, #4752: enabling use of the method for

python algorithm child algos

Changeset: 377a143c163aabdedf25c8cd16da428751b33220

comment:10 Changed 9 years ago by Janik Zikovsky

To work around this problem, I am trying a method to specify that you want the workspaces to be stored in the ADS, and specifying python algorithm's children as children also.

This should fix the incorrect history that these workspaces had, while keeping the existing python algos working.

comment:11 Changed 9 years ago by Janik Zikovsky

  • Status changed from accepted to verify
  • Resolution set to fixed

OK this is an OK though temporary fix. See #4770 for follow-up work.

Message to testers of the future: by the time you test this, the method will likely be gone. See #4770 also.

comment:12 Changed 9 years ago by Janik Zikovsky

Refs #2636: log algorithm info for Python child algorithms.

Also re-enable workspace locking which I accidentally left disabled

Changeset: a52d7ef6a4aa7a578f9dad50031390c215889a5e

comment:13 Changed 8 years ago by Peter Peterson

  • Status changed from verify to verifying
  • Tester set to Peter Peterson

comment:14 Changed 8 years ago by Peter Peterson

  • Status changed from verifying to closed

This ticket is being closed as #5158 covers problems that eventually came up.

comment:15 Changed 5 years ago by Stuart Campbell

This ticket has been transferred to github issue 3483

Note: See TracTickets for help on using tickets.