Put the rice in a bowl, cover with cold water and leave to soak for 1 hr. Meanwhile, heat 2 tbsp oil in a large pan, add the onion and cook for 10 mins, stirring now and then, until caramelised. While the onion cooks, whizz the ginger, garlic, coriander stalks, spices, lemon juice and zest to a paste in the small bowl of a food processor. Tip into the pan and fry for 5 mins more until aromatic. Scoop the paste and onion out of the pan and set aside, then heat 1 tbsp more oil. Add the sliced sprouts and cook for 8-10 mins, stirring, until softened. Add the paste back to the pan and cook everything together for 1 min more.
When the rice has had its soaking time, drain and tip into a pan, cover with fresh water and season with salt. Simmer for 5 mins until just softening, then drain.
Heat oven to 200C/180C fan/gas 6. Put the halved sprouts in a roasting tin with 1 tbsp oil and season well. Roast for 20-25 mins, shaking the pan now and then, until the edges are starting to brown and the sprouts are tender.
Meanwhile, mix the rice in the pan with the sliced sprouts, the onion and paste. Add the pecans and all the cranberries, season and mix well. Heat the butter and remaining oil in the pan you cooked the rice in, then tip in the rice mixture and flatten the surface. Poke 3 steam holes in the rice with a wooden spoon, and turn the heat to almost its lowest setting. Cover the pan with a tea towel, then a lid, and cook for 20 mins until the rice is cooked through - if it is still a little firm to bite, re-cover and cook for a further 5 mins. To serve, tip the cooked rice onto a serving platter, mixing any crunchy bits from the bottom of the pan. Scatter over the roasted sprouts and coriander leaves, and serve with a pot of natural yogurt.