123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- # Ajayrama Kumaraswamy, 2017, LMU Munich
- """
- Description: This script is used to generate a parameter file required to run RegMaxSN.py. This parameter file
- should contain a json string of a list of dictionaries. Each dictionary is one Reg-MaxS-N job
- that contains Reg-MaxS-N parameters.
- See core/RegMaxSPars.py for the description of the parameters.
- Usage: python constructRegMaxSNParFile.py
- Action: creates a parameter file for RegMaxSN.py
- Usage guidelines: There are a couple of cases with examples shown below.
- Read the comments therein.
- Essentially edit the values of some variables in this script and run it.
- """
- from numpy import pi, deg2rad
- import os
- import json
- from regmaxsn.core.RegMaxSPars import RegMaxSNParNames
- temp = os.path.split(os.path.abspath(__file__))[0]
- temp1 = os.path.split(temp)[0]
- # **********************************************************************************************************************
- # Default parameters
- # distances in um, angles in radians
- gridSizes = [40.0, 20.0, 10.0]
- transBounds = [[-30, 30], [-30, 30], [-30, 30]]
- transMinRes = 1
- rotBounds = [[-pi / 6, pi / 6], [-pi / 6, pi / 6], [-pi / 6, pi / 6]]
- rotMinRes = deg2rad(1).round(4)
- scaleBounds = [[0.5, 1 / 0.5], [0.5, 1 / 0.5], [0.5, 1 / 0.5]]
- minScaleStepSize = 1.005
- usePartsDir = True
- nCPU = 6
- maxIter = 100
- # **********************************************************************************************************************
- # # User defined parameters. Change these if required
- # # distances in um, angles in radians
- # gridSizes = [40.0, 20.0, 10.0]
- # transBounds = [[-30, 30], [-30, 30], [-30, 30]]
- # transMinRes = 1
- # rotBounds = [[-pi / 6, pi / 6], [-pi / 6, pi / 6], [-pi / 6, pi / 6]]
- # rotMinRes = deg2rad(1).round(4)
- # scaleBounds = [[0.5, 1 / 0.5], [0.5, 1 / 0.5], [0.5, 1 / 0.5]]
- # minScaleStepSize = 1.005
- # nCPU = 6
- # maxIter = 100
- # **********************************************************************************************************************
- # Case 1: Using Default or user defined parameters above and
- # swcList: contains the list of SWCs to register together. This is formed using the list expNames and the directory
- # swcDir
- # initRefSWC: the initial reference SWC. May or may not be one among swcList
- # resDir: directory in which the results are to be created when RegMaxSN.py is run with the parameter file generated by
- # this script.
- # parFile: the parameter file will be generated at this file path by running this script.
- # finallyNormalizeWRT: all SWCs are affinely tranformed together by RegMaxSN.py after completing the registration
- # so that this SWC is brought back to its original form.
- # Usage: Replace initRefSWC, swcDir, expNames, resDir, parFile, finallyNormalizeWRT as required and
- # run this file to generate parFile
- # Then run python <...>/RegMaxSN.py parFile
- # -----------------------------------------------------------------------------------
- # # Example 1
- # initRefSWC = os.path.join(temp1, 'TestFiles', 'HSNL', 'HSN-fluoro02.CNG.swc')
- # swcDir = os.path.join(temp1, 'TestFiles', 'HSNL')
- # expNames = [
- # 'HSN-fluoro02.CNG',
- # 'HSN-fluoro03.CNG',
- # 'HSN-fluoro06.CNG',
- # 'HSN-fluoro08.CNG',
- # 'HSN-fluoro10.CNG',
- # ]
- # swcList = [os.path.join(swcDir, expName + '.swc') for expName in expNames]
- # resDir = os.path.join(temp1, 'Results', 'Reg-MaxS-N', 'HSNL')
- # parFile = os.path.join(temp1, 'ParFiles', 'Reg-MaxS-N', 'HSNL.json')
- # finallyNormalizeWRT = initRefSWC
- #
- # obtains the list of variables in the current work space
- # ns = vars()
- # forms the dictionary of parameters to be saved into the parameter file.
- # pars = [{k: ns[k] for k in RegMaxSNParNames}]
- # -----------------------------------------------------------------------------------
- # Example 2
- initRefSWC = os.path.join(temp1, 'TestFiles', 'LLC', 'Gad1-F-000062.CNG.swc')
- swcDir = os.path.join(temp1, 'TestFiles', 'LLC')
- expNames = [
- 'Gad1-F-000062.CNG',
- 'Cha-F-000012.CNG',
- 'Cha-F-300331.CNG',
- 'Gad1-F-600000.CNG',
- 'Cha-F-000018.CNG',
- 'Cha-F-300051.CNG',
- 'Cha-F-400051.CNG',
- 'Cha-F-200000.CNG'
- ]
- swcList = [os.path.join(swcDir, expName + '.swc') for expName in expNames]
- resDir = os.path.join(temp1, 'Results', 'Reg-MaxS-N', 'LLC')
- parFile = os.path.join(temp1, 'ParFiles', 'Reg-MaxS-N', 'LLC.json')
- finallyNormalizeWRT = initRefSWC
- # obtains the list of variables in the current work space
- ns = vars()
- # forms the dictionary of parameters to be saved into the parameter file.
- pars = [{k: ns[k] for k in RegMaxSNParNames}]
- # -----------------------------------------------------------------------------------
- # **********************************************************************************************************************
- # # Case 2: Using Default or user defined parameters above, and other parameters below.
- # Parameters are same as in Case 1 above, but multiple jobs can be specified in this case.
- # Usage: Replace initRefSWC, swcDir, expNames, resDir, parFile, finallyNormalizeWRT as required for each job and
- # run this file to generate parFile
- # Then run python <...>/RegMaxSN.py parFile
- #
- # pars = []
- # parFile = os.path.join(temp1, 'ParFiles', 'Reg-MaxS-N', 'HSNL-HSNR.json')
- # # -----------------------------------------------------------------------------------
- # # job 1
- # # -----------------------------------------------------------------------------------
- # initRefSWC = os.path.join(temp1, 'TestFiles', 'HSNL', 'HSN-fluoro02.CNG.swc')
- # swcDir = os.path.join(temp1, 'TestFiles', 'HSNL')
- # expNames = [
- # 'HSN-fluoro02.CNG',
- # 'HSN-fluoro03.CNG',
- # 'HSN-fluoro06.CNG',
- # 'HSN-fluoro08.CNG',
- # 'HSN-fluoro10.CNG',
- # ]
- # swcList = [os.path.join(swcDir, expName + '.swc') for expName in expNames]
- # resDir = os.path.join(temp1, 'Results', 'Reg-MaxS-N', 'HSNL')
- # finallyNormalizeWRT = initRefSWC
- #
- # obtains the list of variables in the current work space
- # ns = vars()
- # forms the dictionary of parameters to be saved into the parameter file.
- # pars += [{k: ns[k] for k in RegMaxSNParNames}]
- #
- # # -----------------------------------------------------------------------------------
- # # job 2
- # # -----------------------------------------------------------------------------------
- # initRefSWC = os.path.join(temp1, 'TestFiles', 'HSNR', 'HSN-fluoro01.CNG.swc')
- # swcDir = os.path.join(temp1, 'TestFiles', 'HSNR')
- # expNames = [
- # 'HSN-fluoro01.CNG',
- # 'HSN-fluoro04.CNG',
- # 'HSN-fluoro05.CNG',
- # 'HSN-fluoro07.CNG',
- # 'HSN-fluoro09.CNG',
- # ]
- # swcList = [os.path.join(swcDir, expName + '.swc') for expName in expNames]
- # resDir = os.path.join(temp1, 'Results', 'Reg-MaxS-N', 'HSNR')
- # finallyNormalizeWRT = initRefSWC
- #
- # obtains the list of variables in the current work space
- # ns = vars()
- # forms the dictionary of parameters to be saved into the parameter file.
- # pars += [{k: ns[k] for k in RegMaxSNParNames}]
- # **********************************************************************************************************************
- # write the parameters into the parameter file.
- with open(parFile, 'w') as fle:
- json.dump(pars, fle)
|