Place the rice in a colander and rinse under cold running water. Place the rinsed rice in a large bowl and cover with 4 cups of water. Let soak 30 minutes. Drain and reserve the water for cooking.
In a large pot, heat the butter over medium-high heat. Add the onion and cook, stirring, for 3 minutes. Add the garlic and ginger, and cook, stirring, for 45 seconds. Add the cardamom seeds, cinnamon sticks, bay leaf, salt, coriander, pepper, turmeric, cumin, and cayenne, and cook, stirring, until fragrant, about 45 seconds. Add the rice and cook, stirring, for 2 minutes. Add the reserved soaking liquid and raisins, and bring to a boil. Reduce the heat to low, stir, cover and simmer until the water is absorbed and the rice is tender, 20 minutes. Remove from the heat and let sit covered for 15 minutes.
Fluff the rice with a fork and transfer to a large bowl. Combine with the remaining ingredients and remove the cinnamon pieces and bay leaf. Serve warm or at room temperature.
Yield: 6 to 8 servings