# Magnitude column's name in the fake catalog used with processwitfakesDriver

**URL:** <https://www.rubin.community/t/magnitude-columns-name-in-the-fake-catalog-used-with-processwitfakesdriver/4592>\
**Category:** Rubin Science Platform\
**Created:** [December 8, 2020, 10:40pm UTC](https://www.rubin.community/t/magnitude-columns-name-in-the-fake-catalog-used-with-processwitfakesdriver/4592 "2020-12-08T22:40:44Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![mchbib](https://sea2.discourse-cdn.com/flex002/user_avatar/www.rubin.community/mchbib/32/998_2.png) [@mchbib](https://www.rubin.community/u/mchbib)\
**Post date:** [December 8, 2020, 10:40pm UTC](https://www.rubin.community/t/magnitude-columns-name-in-the-fake-catalog-used-with-processwitfakesdriver/4592/1 "2020-12-08T22:40:44Z")

</div>

Hello all,  
I am creating a csv catalog file to be used with processwitfakesDriver. I am using Z magnitudes from the coadd catalog. The name for the magnitude column in the csv file is zmagVar. I then use this catalog with processwithfakesdriver to insert fakes in visits in different filters: SC-G, Y, I2, … With this, I got the following error when running the processwithfakesdriver on a visit in G filter:

```
*KeyError: 'gmagVar'*
*Traceback (most recent call last):*
* File "/cvmfs/sw.lsst.eu/linux-x86_64/lsst_distrib/v20.0.0/conda/miniconda3-py37_4.8.2/envs/lsst-scipipe-1a1d771/lib/python3.7/site-packages/pandas/core/indexes/base.py", line 4410, in get_value*
* return libindex.get_value_at(s, key)*
* File "pandas/_libs/index.pyx", line 44, in pandas._libs.index.get_value_at*
* File "pandas/_libs/index.pyx", line 45, in pandas._libs.index.get_value_at*
* File "pandas/_libs/util.pxd", line 98, in pandas._libs.util.get_value_at*
* File "pandas/_libs/util.pxd", line 83, in pandas._libs.util.validate_indexer*
*TypeError: 'str' object cannot be interpreted as an integer*
Traceback (most recent call last):
  File "/cvmfs/sw.lsst.eu/linux-x86_64/lsst_distrib/v20.0.0/stack/miniconda3-py37_4.8.2-1a1d771/Linux64/pipe_base/20.0.0/python/lsst/pipe/base/cmdLineTask.py", line 388, in __call__
    result = self.runTask(task, dataRef, kwargs)
  File "/cvmfs/sw.lsst.eu/linux-x86_64/lsst_distrib/v20.0.0/stack/miniconda3-py37_4.8.2-1a1d771/Linux64/pipe_base/20.0.0/python/lsst/pipe/base/cmdLineTask.py", line 447, in runTask
    return task.runDataRef(dataRef, **kwargs)
  File "/cvmfs/sw.lsst.eu/linux-x86_64/lsst_distrib/v20.0.0/stack/miniconda3-py37_4.8.2-1a1d771/Linux64/pipe_drivers/20.0.0/python/lsst/pipe/drivers/processCcdWithFakesDriver.py", line 70, in runDataRef
    result = self.processCcdWithFakes.runDataRef(sensorRef)
  File "/cvmfs/sw.lsst.eu/linux-x86_64/lsst_distrib/v20.0.0/stack/miniconda3-py37_4.8.2-1a1d771/Linux64/pipe_tasks/20.0.0/python/lsst/pipe/tasks/processCcdWithFakes.py", line 272, in runDataRef
    sfdSourceCat=sfdSourceCat)
  File "/cvmfs/sw.lsst.eu/linux-x86_64/lsst_distrib/v20.0.0/stack/miniconda3-py37_4.8.2-1a1d771/Linux64/pipe_tasks/20.0.0/python/lsst/pipe/tasks/processCcdWithFakes.py", line 351, in run
    self.insertFakes.run(fakeCat, exposure, wcs, photoCalib)
  File "/cvmfs/sw.lsst.eu/linux-x86_64/lsst_distrib/v20.0.0/stack/miniconda3-py37_4.8.2-1a1d771/Linux64/pipe_tasks/20.0.0/python/lsst/pipe/tasks/insertFakes.py", line 318, in run
    image = self.addFakeSources(image, starImages, "star")
  File "/cvmfs/sw.lsst.eu/linux-x86_64/lsst_distrib/v20.0.0/stack/miniconda3-py37_4.8.2-1a1d771/Linux64/pipe_tasks/20.0.0/python/lsst/pipe/tasks/insertFakes.py", line 560, in addFakeSources
    for (fakeImage, xy) in fakeImages:
  File "/cvmfs/sw.lsst.eu/linux-x86_64/lsst_distrib/v20.0.0/stack/miniconda3-py37_4.8.2-1a1d771/Linux64/pipe_tasks/20.0.0/python/lsst/pipe/tasks/insertFakes.py", line 506, in mkFakeStars
    flux = photoCalib.magnitudeToInstFlux(row[self.config.magVar % band], xy)
  File "/cvmfs/sw.lsst.eu/linux-x86_64/lsst_distrib/v20.0.0/conda/miniconda3-py37_4.8.2/envs/lsst-scipipe-1a1d771/lib/python3.7/site-packages/pandas/core/series.py", line 871, in __getitem__
    result = self.index.get_value(self, key)
  File "/cvmfs/sw.lsst.eu/linux-x86_64/lsst_distrib/v20.0.0/conda/miniconda3-py37_4.8.2/envs/lsst-scipipe-1a1d771/lib/python3.7/site-packages/pandas/core/indexes/base.py", line 4418, in get_value
    raise e1
  File "/cvmfs/sw.lsst.eu/linux-x86_64/lsst_distrib/v20.0.0/conda/miniconda3-py37_4.8.2/envs/lsst-scipipe-1a1d771/lib/python3.7/site-packages/pandas/core/indexes/base.py", line 4404, in get_value
    return self._engine.get_value(s, k, tz=getattr(series.dtype, "tz", None))
  File "pandas/_libs/index.pyx", line 80, in pandas._libs.index.IndexEngine.get_value
  File "pandas/_libs/index.pyx", line 90, in pandas._libs.index.IndexEngine.get_value
  File "pandas/_libs/index.pyx", line 138, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/hashtable_class_helper.pxi", line 1619, in pandas._libs.hashtable.PyObjectHashTable.get_item
  File "pandas/_libs/hashtable_class_helper.pxi", line 1627, in pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: 'gmagVar'
Traceback (most recent call last):
  File "/cvmfs/sw.lsst.eu/linux-x86_64/lsst_distrib/v20.0.0/conda/miniconda3-py37_4.8.2/envs/lsst-scipipe-1a1d771/lib/python3.7/site-packages/pandas/core/indexes/base.py", line 4410, in get_value
    return libindex.get_value_at(s, key)
  File "pandas/_libs/index.pyx", line 44, in pandas._libs.index.get_value_at
  File "pandas/_libs/index.pyx", line 45, in pandas._libs.index.get_value_at
  File "pandas/_libs/util.pxd", line 98, in pandas._libs.util.get_value_at
  File "pandas/_libs/util.pxd", line 83, in pandas._libs.util.validate_indexer
TypeError: 'str' object cannot be interpreted as an integer

```

how can I solve this issue? Does this mean that if I want to add fakes on visits in G filter, I should create their input catalog with gvarMag, and so yvarMag and ivarMag for HSC-Y and I bands? Thank you in advance for your answer

---

<div class="post-metadata">

**Author:** ![sophiereed](https://sea2.discourse-cdn.com/flex002/user_avatar/www.rubin.community/sophiereed/32/777_2.png) [@sophiereed](https://www.rubin.community/u/sophiereed)\
**Post date:** [December 9, 2020, 1:34am UTC](https://www.rubin.community/t/magnitude-columns-name-in-the-fake-catalog-used-with-processwitfakesdriver/4592/2 "2020-12-09T01:34:33Z")

</div>

You need to give it a magnitude in each band you want to input it in. So if you want to add fakes to a g band image then you need a gmagVar column in your input catalogue. Are you giving it a CSV file or converting to fits?

---

<div class="post-metadata">

**Author:** ![mchbib](https://sea2.discourse-cdn.com/flex002/user_avatar/www.rubin.community/mchbib/32/998_2.png) [@mchbib](https://www.rubin.community/u/mchbib)\
**Post date:** [December 9, 2020, 11:45am UTC](https://www.rubin.community/t/magnitude-columns-name-in-the-fake-catalog-used-with-processwitfakesdriver/4592/3 "2020-12-09T11:45:09Z")

</div>

Hello, thank you for your answer. No I use it with CSV format (I already use it and I had no problems). Is it recommended to convert it to fits?

---

<div class="post-metadata">

**Author:** ![sophiereed](https://sea2.discourse-cdn.com/flex002/user_avatar/www.rubin.community/sophiereed/32/777_2.png) [@sophiereed](https://www.rubin.community/u/sophiereed)\
**Post date:** [December 9, 2020, 8:01pm UTC](https://www.rubin.community/t/magnitude-columns-name-in-the-fake-catalog-used-with-processwitfakesdriver/4592/4 "2020-12-09T20:01:53Z")

</div>

It is expecting a fits file so I am impressed it works with a CSV.

---

<div class="post-metadata">

**Author:** ![sambutle](https://avatars.discourse-cdn.com/v4/letter/s/90db22/32.png) [@sambutle](https://www.rubin.community/u/sambutle)\
**Post date:** [April 27, 2021, 12:56pm UTC](https://www.rubin.community/t/magnitude-columns-name-in-the-fake-catalog-used-with-processwitfakesdriver/4592/5 "2021-04-27T12:56:57Z")

</div>

> [@mchbib](#):
>
> ```auto
> File "pandas/_libs/hashtable_class_helper.pxi", line 1627, in pandas._libs.hashtable.PyObjectHashTable.get_item
> KeyError: 'gmagVar'
> 
> ```

A KeyError means the key you gave pandas isn’t valid. Before doing anything with the data frame, use print(df.columns) to see what keys are available.

`print(df.columns)`

I was getting a similar kind of error in one of my codes. Turns out, that particular index was missing from my data frame as I had dropped the [empty dataframe](http://net-informations.com/ds/pd/emptydf.htm) rows. If this is the case, you can do df.reset\_index(inplace=True) and the error should be resolved.
