Figure A recommendation system for nanoporous materials (NPMs). In this toy NPMadsorption-property matrix, entry (m, p) represents the value of adsorption property p of NPM m. Many entries are unobserved ("?") because measurements are missing. The goal of our NPM recommendation system is to use the observed entries (values depicted by color) to impute the unobserved entries, allowing recommendation of NPMs for various adsorption tasks (requiring a certain adsorption property). This is analogous to commercial recommendation systems that aim to recommend customer-specific products to customers, with NPM : product :: adsorption property :: customer. Thus, we have a large list of candidate NPMs and a list of their adsorption properties we wish to know for their many applications. If this NPMproperty data table were complete, both searching for (i) the optimal NPM for a given application and (ii) the optimal application for a given NPM would be trivial look-up problems. However, in practice, the NPM-property data table, whether constructed from experimental adsorption measurements or molecular simulations of gas adsorption in libraries of NPMs , is likely incomplete because many (NPM, property) values have not been observed. I.e., (i) for any given NPM, only a proportion of its adsorption properties have been measured, and (ii) for any given adsorption property, it has been measured in only a proportion of the NPMs. See Fig. .