Call setup() from elsewhere

is it OK to call setup() from some where else in your program?

Yes, but it would be better to have another function for this. By convention, setup is for once only initialization.

If you need a function to reset stuff from time to time, creating an reset function that you could call from setup and your loop code would be less confusing to other arduino programmers.