Accurate design of co-assembling multi-component protein nanomaterials