California-Planet-Search / rvsearch

RV Planet Search Pipeline Based on RadVel
http://california-planet-search.github.io/rvsearch/
MIT License
10 stars 5 forks source link

Using a basis with logper instead of per throws an error #203

Closed jvanzand closed 1 year ago

jvanzand commented 1 year ago

I ran a basic search using the following basis in my setup file:

fitting_basis = 'logper tc secosw sesinw logk'

This gave an error message:

Traceback (most recent call last):
  File "/Users/judahvz/opt/anaconda3/bin/rvsearch", line 8, in <module>
    sys.exit(main())
  File "/Users/judahvz/opt/anaconda3/lib/python3.7/site-packages/rvsearch/cli.py", line 158, in main
    args.func(args)
  File "/Users/judahvz/opt/anaconda3/lib/python3.7/site-packages/rvsearch/driver.py", line 62, in run_search
    searcher.run_search(outdir=args.output_dir)
  File "/Users/judahvz/opt/anaconda3/lib/python3.7/site-packages/rvsearch/search.py", line 424, in run_search
    self.add_planet()
  File "/Users/judahvz/opt/anaconda3/lib/python3.7/site-packages/rvsearch/search.py", line 195, in add_planet
    fitting_basis=fitting_basis)
  File "/Users/judahvz/opt/anaconda3/lib/python3.7/site-packages/rvsearch/utils.py", line 89, in initialize_default_pars
    params['per1'].vary = False
KeyError: 'per1'

In rvsearch.utils.initialize_default_pars(), the params object is converted from anybasis to fitting_basis, which is then assumed to contain the "per1" param:

params = anybasis_params.basis.to_any_basis(anybasis_params, fitting_basis)

params['secosw1'].vary = False
params['sesinw1'].vary = False
params['per1'].vary = False
params['dvdt'].vary = False
params['curv'].vary = False

Because my basis instead uses "logper," the search fails here.

jvanzand commented 1 year ago

Update: I changed to the basis

fitting_basis = 'per tc secosw sesinw logk'

and got a similar error later on in rvsearch.periodogram.Periodogram.per_bic():

Traceback (most recent call last):
  File "/scr/vanzandt/miniconda3/envs/radvel_fix/bin/rvsearch", line 8, in <module>
    sys.exit(main())
  File "/scr/vanzandt/miniconda3/envs/radvel_fix/lib/python3.7/site-packages/rvsearch/cli.py", line 158, in main
    args.func(args)
  File "/scr/vanzandt/miniconda3/envs/radvel_fix/lib/python3.7/site-packages/rvsearch/driver.py", line 62, in run_search
    searcher.run_search(outdir=args.output_dir)
  File "/scr/vanzandt/miniconda3/envs/radvel_fix/lib/python3.7/site-packages/rvsearch/search.py", line 437, in run_search
    perioder.per_bic()
  File "/scr/vanzandt/miniconda3/envs/radvel_fix/lib/python3.7/site-packages/rvsearch/periodogram.py", line 203, in per_bic
    self.post.params['k{}'.format(self.num_known_planets+1)].vary  = True
KeyError: 'k6'

Looks like there's another assumption that 'k' is in the basis, whereas my basis contains 'logk' instead.

bjfultn commented 1 year ago

I think there is only one rvsearch-compatible basis