Controlling and exploiting the complexity: hierarchical dependence of porphyrin self-aggregation