Cycles being an RGB renderer, cannot calculate wavelength data but only convert it to RGB (wavelength node), except for the MLT patch which is HIGHLY experimental. Also although volumetrics are here, there needs still work to be done to get it working with with other nodes.
I understand what you want, you want NON-LINEAR wavelength profiling with SELECTIVE spectral control.
So the deeper the ray goes, different wavelengths go at DIFFERENT depths affected (your color ramp).
So for now, for realistic non-linear wavelength absorption, you would need to use a spectral renderer like Luxrender, till Cycles will get such features. Also keep in mind that MLT & Co is needed for such an achievment, especially if you want to absorb on only SPECIFIC wavelengths or even beyond of the optical laws into Infrared & UV, which true water also considers.
The final question: is it scientific or artistic. For the latter it is too slow and IMHO not relevant.
You could use my Wavelength Environment node to emit RGB “wavelengths” and use your node setup to use the raylenght absorption.
The setup would be: Image>WavelengthEnvNode>Object>Yournodesetup /w ramp
You can adjust SELECTIVELY the emitted wavelengths so that you can then correctly map the absorption in RGB.
You can even use the node for the Material to fetch the Wavelenght selectively, so you don’t have to use it as an environment. Depends on what you want to do.
Get it here: http://www.blendswap.com/blends/view/71195