SMS: Self-Assembly of Nanostructures and Patchy Nanoparticles