Hi Jared,
The problem is one of units. In order to make common arithmetic work like addition, yt requires both arguments going into the addition operator to have the same units.
In your line,
fHI = (recomb * ne) / (gamma_HI + (gamma_c *ne))
you're adding two things (gamma_HI) and (gamma_c*ne) that have different units--in this case, something with (code_mass/code_length**3) units and something with no units defined as (1).
In order to fix this, you can re-assign the appropriate units to different arrays or quantities with the YTArray and YTQuantity classes. In this case, make sure that the two arguments going into the addition have the same units. If you want to recast "ne" to have number density units, you can do this: from yt.units.yt_array import YTQuantity; ne = YTQuantity(ne, 'cm**-3'). For more info on units, check out
http://yt-project.org/docs/dev/analyzing/units/index.html
I hope this helps!
Cameron