def ppxv2density(data, units, notation=None, inplace_units=True, solutes=[]):
    """
    Calculates density of solutes based on their molar concentration (ppmv, ppbv and etc), not
    to be confused with mass concentration (ppm, ppb and etc).

    Uses the relation
    :math:`\\rho_x = \\frac{C p}{\\theta R_x}`

    Parameters
    ----------
    data: pandas.DataFrame
        dataset of micromet variables
    units: dict
        dict of pint units
    notation: pymicra.Notation
        notation to be used here
    inplace_units: bool
        whether or not to treat the dict units in place
    solutes: list or tuple
        solutes to consider when doing this conversion

    Returns
    -------
    pandas.DataFrame
        input data plus calculated density columns
    """
    from . import constants
    from . import algs
    if not solutes:
        raise ValueError('Should specify for which solutes')
    defs = algs.get_notation(notation)
    defsdic = vars(defs)
    data = data.copy()
    cunits = constants.units
    sol_units = {}
    convert_to = {}
    p = data[defs.pressure]
    theta = data[defs.thermodyn_temp]
    for solute in solutes:
        sol_mconc = defsdic['%s_molar_concentration' % solute]
        rho_sol = defsdic['%s_mass_density' % solute]
        data[rho_sol] = data[sol_mconc] * p / (theta * constants.R_spec[solute]
            )
        unit = units[sol_mconc] * units[defs.pressure] / (units[defs.
            thermodyn_temp] * cunits['R_spec'])
        sol_units.update({rho_sol: unit})
        convert_to.update({rho_sol: 'kg/m**3'})
    data = data.convert_cols(convert_to, sol_units, inplace_units=True)
    if inplace_units:
        units.update(sol_units)
        return data
    else:
        return data, unit
