The MATLAB command vl_sift (and the command line utility) can bypass the detector and compute the descriptor on custom frames using the Frames option.
For instance, we can compute the descriptor of a SIFT frame centered at position (100,100), of scale 10 and orientation -pi/8 by
fc = [100;100;10;-pi/8] ; [f,d] = vl_sift(I,'frames',fc) ;
Multiple frames fc may be specified as well. In this case they are re-ordered by increasing scale. The Orientations option instructs the program to use the custom position and scale but to compute the keypoint orientations, as in
fc = [100;100;10;0] ; [f,d] = vl_sift(I,'frames',fc,'orientations') ;
Notice that, depending on the local appearance, a keypoint may have multiple orientations. Moreover, a keypoint computed on a constant image region (such as a one pixel region) has no orientations!
checkout http://www.vlfeat.org/overview/sift.html . vl_feat is really really neat, and very easy to use, even easier to install.