Wash, rinse and soak basmati rice in cold water for at least 30 minutes.
Roast the saffron in a small pan for 15-30 seconds. Then using a pestle or a spoon powder saffron. Add warm milk to it and set it aside until ready to use.
Heat 1tbsp oil in a large saute pan and roast the nuts and raisins until golden, remove into a small bowl. In the same pan heat 2tbsp oil; add the whole garam masala (cloves through shahjeera from the list) and cook for 30-60 seconds or until it starts to smell fragrant.
Add the onions and green chilies and cook until onions turn translucent, about 3-4 minutes.
Add the ginger-garlic paste and cook for another minute.
Next add 2cups of water and the nuts, mix well; bring the mixture to a simmer and add the drained rice. Cover and cook on high heat until almost all of the water is absorbed.
Now lower the heat and stir in the saffron milk; very gently mix it into the rice. Arrange the pats of butter over the rice. Cover and cook on very low heat for 5-7 minutes.
If you feel that the water is not enough to cook the rice, then sprinkle some water on the top and cook covered until done.