diff --git a/JSmol.min.js b/assets/compressed_sensing_2018/JSmol.min.js similarity index 100% rename from JSmol.min.js rename to assets/compressed_sensing_2018/JSmol.min.js diff --git a/data/Logo_MPG.png b/assets/compressed_sensing_2018/Logo_MPG.png similarity index 100% rename from data/Logo_MPG.png rename to assets/compressed_sensing_2018/Logo_MPG.png diff --git a/data/Logo_NOMAD.png b/assets/compressed_sensing_2018/Logo_NOMAD.png similarity index 100% rename from data/Logo_NOMAD.png rename to assets/compressed_sensing_2018/Logo_NOMAD.png diff --git a/j2s/J/Jmol.properties b/assets/compressed_sensing_2018/j2s/J/Jmol.properties similarity index 100% rename from j2s/J/Jmol.properties rename to assets/compressed_sensing_2018/j2s/J/Jmol.properties diff --git a/j2s/J/adapter/readers/aflow/AFLOWReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/aflow/AFLOWReader.js similarity index 100% rename from j2s/J/adapter/readers/aflow/AFLOWReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/aflow/AFLOWReader.js diff --git a/j2s/J/adapter/readers/cif/Cif2DataParser.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/cif/Cif2DataParser.js similarity index 100% rename from j2s/J/adapter/readers/cif/Cif2DataParser.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/cif/Cif2DataParser.js diff --git a/j2s/J/adapter/readers/cif/Cif2Reader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/cif/Cif2Reader.js similarity index 100% rename from j2s/J/adapter/readers/cif/Cif2Reader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/cif/Cif2Reader.js diff --git a/j2s/J/adapter/readers/cif/CifReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/cif/CifReader.js similarity index 100% rename from j2s/J/adapter/readers/cif/CifReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/cif/CifReader.js diff --git a/j2s/J/adapter/readers/cif/MMCifReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/cif/MMCifReader.js similarity index 100% rename from j2s/J/adapter/readers/cif/MMCifReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/cif/MMCifReader.js diff --git a/j2s/J/adapter/readers/cif/MMCifValidationParser.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/cif/MMCifValidationParser.js similarity index 100% rename from j2s/J/adapter/readers/cif/MMCifValidationParser.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/cif/MMCifValidationParser.js diff --git a/j2s/J/adapter/readers/cif/MMTFReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/cif/MMTFReader.js similarity index 100% rename from j2s/J/adapter/readers/cif/MMTFReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/cif/MMTFReader.js diff --git a/j2s/J/adapter/readers/cif/MSCifParser.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/cif/MSCifParser.js similarity index 100% rename from j2s/J/adapter/readers/cif/MSCifParser.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/cif/MSCifParser.js diff --git a/j2s/J/adapter/readers/cif/MSRdr.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/cif/MSRdr.js similarity index 100% rename from j2s/J/adapter/readers/cif/MSRdr.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/cif/MSRdr.js diff --git a/j2s/J/adapter/readers/cif/Subsystem.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/cif/Subsystem.js similarity index 100% rename from j2s/J/adapter/readers/cif/Subsystem.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/cif/Subsystem.js diff --git a/j2s/J/adapter/readers/molxyz/Mol3DReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/molxyz/Mol3DReader.js similarity index 100% rename from j2s/J/adapter/readers/molxyz/Mol3DReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/molxyz/Mol3DReader.js diff --git a/j2s/J/adapter/readers/molxyz/MolReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/molxyz/MolReader.js similarity index 100% rename from j2s/J/adapter/readers/molxyz/MolReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/molxyz/MolReader.js diff --git a/j2s/J/adapter/readers/molxyz/V3000Rdr.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/molxyz/V3000Rdr.js similarity index 100% rename from j2s/J/adapter/readers/molxyz/V3000Rdr.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/molxyz/V3000Rdr.js diff --git a/j2s/J/adapter/readers/molxyz/XyzReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/molxyz/XyzReader.js similarity index 100% rename from j2s/J/adapter/readers/molxyz/XyzReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/molxyz/XyzReader.js diff --git a/j2s/J/adapter/readers/more/BinaryDcdReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/more/BinaryDcdReader.js similarity index 100% rename from j2s/J/adapter/readers/more/BinaryDcdReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/more/BinaryDcdReader.js diff --git a/j2s/J/adapter/readers/more/ForceFieldReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/more/ForceFieldReader.js similarity index 100% rename from j2s/J/adapter/readers/more/ForceFieldReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/more/ForceFieldReader.js diff --git a/j2s/J/adapter/readers/more/GromacsReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/more/GromacsReader.js similarity index 100% rename from j2s/J/adapter/readers/more/GromacsReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/more/GromacsReader.js diff --git a/j2s/J/adapter/readers/more/JcampdxReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/more/JcampdxReader.js similarity index 100% rename from j2s/J/adapter/readers/more/JcampdxReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/more/JcampdxReader.js diff --git a/j2s/J/adapter/readers/more/MdCrdReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/more/MdCrdReader.js similarity index 100% rename from j2s/J/adapter/readers/more/MdCrdReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/more/MdCrdReader.js diff --git a/j2s/J/adapter/readers/more/MdTopReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/more/MdTopReader.js similarity index 100% rename from j2s/J/adapter/readers/more/MdTopReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/more/MdTopReader.js diff --git a/j2s/J/adapter/readers/more/Mol2Reader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/more/Mol2Reader.js similarity index 100% rename from j2s/J/adapter/readers/more/Mol2Reader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/more/Mol2Reader.js diff --git a/j2s/J/adapter/readers/more/TlsDataOnlyReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/more/TlsDataOnlyReader.js similarity index 100% rename from j2s/J/adapter/readers/more/TlsDataOnlyReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/more/TlsDataOnlyReader.js diff --git a/j2s/J/adapter/readers/pdb/JmolDataReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/pdb/JmolDataReader.js similarity index 100% rename from j2s/J/adapter/readers/pdb/JmolDataReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/pdb/JmolDataReader.js diff --git a/j2s/J/adapter/readers/pdb/P2nReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/pdb/P2nReader.js similarity index 100% rename from j2s/J/adapter/readers/pdb/P2nReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/pdb/P2nReader.js diff --git a/j2s/J/adapter/readers/pdb/PdbReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/pdb/PdbReader.js similarity index 100% rename from j2s/J/adapter/readers/pdb/PdbReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/pdb/PdbReader.js diff --git a/j2s/J/adapter/readers/pdb/PqrReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/pdb/PqrReader.js similarity index 100% rename from j2s/J/adapter/readers/pdb/PqrReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/pdb/PqrReader.js diff --git a/j2s/J/adapter/readers/pymol/JmolObject.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/pymol/JmolObject.js similarity index 100% rename from j2s/J/adapter/readers/pymol/JmolObject.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/pymol/JmolObject.js diff --git a/j2s/J/adapter/readers/pymol/PickleReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/pymol/PickleReader.js similarity index 100% rename from j2s/J/adapter/readers/pymol/PickleReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/pymol/PickleReader.js diff --git a/j2s/J/adapter/readers/pymol/PyMOL.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/pymol/PyMOL.js similarity index 100% rename from j2s/J/adapter/readers/pymol/PyMOL.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/pymol/PyMOL.js diff --git a/j2s/J/adapter/readers/pymol/PyMOLGroup.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/pymol/PyMOLGroup.js similarity index 100% rename from j2s/J/adapter/readers/pymol/PyMOLGroup.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/pymol/PyMOLGroup.js diff --git a/j2s/J/adapter/readers/pymol/PyMOLReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/pymol/PyMOLReader.js similarity index 100% rename from j2s/J/adapter/readers/pymol/PyMOLReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/pymol/PyMOLReader.js diff --git a/j2s/J/adapter/readers/pymol/PyMOLScene.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/pymol/PyMOLScene.js similarity index 100% rename from j2s/J/adapter/readers/pymol/PyMOLScene.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/pymol/PyMOLScene.js diff --git a/j2s/J/adapter/readers/quantum/AdfReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/AdfReader.js similarity index 100% rename from j2s/J/adapter/readers/quantum/AdfReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/AdfReader.js diff --git a/j2s/J/adapter/readers/quantum/BasisFunctionReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/BasisFunctionReader.js similarity index 100% rename from j2s/J/adapter/readers/quantum/BasisFunctionReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/BasisFunctionReader.js diff --git a/j2s/J/adapter/readers/quantum/CsfReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/CsfReader.js similarity index 100% rename from j2s/J/adapter/readers/quantum/CsfReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/CsfReader.js diff --git a/j2s/J/adapter/readers/quantum/DgridReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/DgridReader.js similarity index 100% rename from j2s/J/adapter/readers/quantum/DgridReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/DgridReader.js diff --git a/j2s/J/adapter/readers/quantum/GamessReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/GamessReader.js similarity index 100% rename from j2s/J/adapter/readers/quantum/GamessReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/GamessReader.js diff --git a/j2s/J/adapter/readers/quantum/GamessUKReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/GamessUKReader.js similarity index 100% rename from j2s/J/adapter/readers/quantum/GamessUKReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/GamessUKReader.js diff --git a/j2s/J/adapter/readers/quantum/GamessUSReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/GamessUSReader.js similarity index 100% rename from j2s/J/adapter/readers/quantum/GamessUSReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/GamessUSReader.js diff --git a/j2s/J/adapter/readers/quantum/GaussianFchkReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/GaussianFchkReader.js similarity index 100% rename from j2s/J/adapter/readers/quantum/GaussianFchkReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/GaussianFchkReader.js diff --git a/j2s/J/adapter/readers/quantum/GaussianReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/GaussianReader.js similarity index 100% rename from j2s/J/adapter/readers/quantum/GaussianReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/GaussianReader.js diff --git a/j2s/J/adapter/readers/quantum/GaussianWfnReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/GaussianWfnReader.js similarity index 100% rename from j2s/J/adapter/readers/quantum/GaussianWfnReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/GaussianWfnReader.js diff --git a/j2s/J/adapter/readers/quantum/GenNBOReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/GenNBOReader.js similarity index 100% rename from j2s/J/adapter/readers/quantum/GenNBOReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/GenNBOReader.js diff --git a/j2s/J/adapter/readers/quantum/JaguarReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/JaguarReader.js similarity index 100% rename from j2s/J/adapter/readers/quantum/JaguarReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/JaguarReader.js diff --git a/j2s/J/adapter/readers/quantum/MOReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/MOReader.js similarity index 100% rename from j2s/J/adapter/readers/quantum/MOReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/MOReader.js diff --git a/j2s/J/adapter/readers/quantum/MoldenReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/MoldenReader.js similarity index 100% rename from j2s/J/adapter/readers/quantum/MoldenReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/MoldenReader.js diff --git a/j2s/J/adapter/readers/quantum/MopacGraphfReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/MopacGraphfReader.js similarity index 100% rename from j2s/J/adapter/readers/quantum/MopacGraphfReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/MopacGraphfReader.js diff --git a/j2s/J/adapter/readers/quantum/MopacSlaterReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/MopacSlaterReader.js similarity index 100% rename from j2s/J/adapter/readers/quantum/MopacSlaterReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/MopacSlaterReader.js diff --git a/j2s/J/adapter/readers/quantum/NBOParser.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/NBOParser.js similarity index 100% rename from j2s/J/adapter/readers/quantum/NBOParser.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/NBOParser.js diff --git a/j2s/J/adapter/readers/quantum/NWChemReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/NWChemReader.js similarity index 100% rename from j2s/J/adapter/readers/quantum/NWChemReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/NWChemReader.js diff --git a/j2s/J/adapter/readers/quantum/PsiReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/PsiReader.js similarity index 100% rename from j2s/J/adapter/readers/quantum/PsiReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/PsiReader.js diff --git a/j2s/J/adapter/readers/quantum/QCJSONReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/QCJSONReader.js similarity index 100% rename from j2s/J/adapter/readers/quantum/QCJSONReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/QCJSONReader.js diff --git a/j2s/J/adapter/readers/quantum/QchemReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/QchemReader.js similarity index 100% rename from j2s/J/adapter/readers/quantum/QchemReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/QchemReader.js diff --git a/j2s/J/adapter/readers/quantum/SlaterReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/SlaterReader.js similarity index 100% rename from j2s/J/adapter/readers/quantum/SlaterReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/SlaterReader.js diff --git a/j2s/J/adapter/readers/quantum/WebMOReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/WebMOReader.js similarity index 100% rename from j2s/J/adapter/readers/quantum/WebMOReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/quantum/WebMOReader.js diff --git a/j2s/J/adapter/readers/simple/AlchemyReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/simple/AlchemyReader.js similarity index 100% rename from j2s/J/adapter/readers/simple/AlchemyReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/simple/AlchemyReader.js diff --git a/j2s/J/adapter/readers/simple/AmpacReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/simple/AmpacReader.js similarity index 100% rename from j2s/J/adapter/readers/simple/AmpacReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/simple/AmpacReader.js diff --git a/j2s/J/adapter/readers/simple/CubeReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/simple/CubeReader.js similarity index 100% rename from j2s/J/adapter/readers/simple/CubeReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/simple/CubeReader.js diff --git a/j2s/J/adapter/readers/simple/FoldingXyzReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/simple/FoldingXyzReader.js similarity index 100% rename from j2s/J/adapter/readers/simple/FoldingXyzReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/simple/FoldingXyzReader.js diff --git a/j2s/J/adapter/readers/simple/GhemicalMMReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/simple/GhemicalMMReader.js similarity index 100% rename from j2s/J/adapter/readers/simple/GhemicalMMReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/simple/GhemicalMMReader.js diff --git a/j2s/J/adapter/readers/simple/HyperChemReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/simple/HyperChemReader.js similarity index 100% rename from j2s/J/adapter/readers/simple/HyperChemReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/simple/HyperChemReader.js diff --git a/j2s/J/adapter/readers/simple/InputReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/simple/InputReader.js similarity index 100% rename from j2s/J/adapter/readers/simple/InputReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/simple/InputReader.js diff --git a/j2s/J/adapter/readers/simple/JSONReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/simple/JSONReader.js similarity index 100% rename from j2s/J/adapter/readers/simple/JSONReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/simple/JSONReader.js diff --git a/j2s/J/adapter/readers/simple/JmeReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/simple/JmeReader.js similarity index 100% rename from j2s/J/adapter/readers/simple/JmeReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/simple/JmeReader.js diff --git a/j2s/J/adapter/readers/simple/MopacArchiveReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/simple/MopacArchiveReader.js similarity index 100% rename from j2s/J/adapter/readers/simple/MopacArchiveReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/simple/MopacArchiveReader.js diff --git a/j2s/J/adapter/readers/simple/MopacReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/simple/MopacReader.js similarity index 100% rename from j2s/J/adapter/readers/simple/MopacReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/simple/MopacReader.js diff --git a/j2s/J/adapter/readers/simple/TinkerReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/simple/TinkerReader.js similarity index 100% rename from j2s/J/adapter/readers/simple/TinkerReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/simple/TinkerReader.js diff --git a/j2s/J/adapter/readers/spartan/OdysseyReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/spartan/OdysseyReader.js similarity index 100% rename from j2s/J/adapter/readers/spartan/OdysseyReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/spartan/OdysseyReader.js diff --git a/j2s/J/adapter/readers/spartan/SpartanArchive.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/spartan/SpartanArchive.js similarity index 100% rename from j2s/J/adapter/readers/spartan/SpartanArchive.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/spartan/SpartanArchive.js diff --git a/j2s/J/adapter/readers/spartan/SpartanInputReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/spartan/SpartanInputReader.js similarity index 100% rename from j2s/J/adapter/readers/spartan/SpartanInputReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/spartan/SpartanInputReader.js diff --git a/j2s/J/adapter/readers/spartan/SpartanReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/spartan/SpartanReader.js similarity index 100% rename from j2s/J/adapter/readers/spartan/SpartanReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/spartan/SpartanReader.js diff --git a/j2s/J/adapter/readers/spartan/SpartanSmolReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/spartan/SpartanSmolReader.js similarity index 100% rename from j2s/J/adapter/readers/spartan/SpartanSmolReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/spartan/SpartanSmolReader.js diff --git a/j2s/J/adapter/readers/spartan/SpartanUtil.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/spartan/SpartanUtil.js similarity index 100% rename from j2s/J/adapter/readers/spartan/SpartanUtil.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/spartan/SpartanUtil.js diff --git a/j2s/J/adapter/readers/xml/XmlArgusReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/xml/XmlArgusReader.js similarity index 100% rename from j2s/J/adapter/readers/xml/XmlArgusReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/xml/XmlArgusReader.js diff --git a/j2s/J/adapter/readers/xml/XmlChem3dReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/xml/XmlChem3dReader.js similarity index 100% rename from j2s/J/adapter/readers/xml/XmlChem3dReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/xml/XmlChem3dReader.js diff --git a/j2s/J/adapter/readers/xml/XmlCmlReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/xml/XmlCmlReader.js similarity index 100% rename from j2s/J/adapter/readers/xml/XmlCmlReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/xml/XmlCmlReader.js diff --git a/j2s/J/adapter/readers/xml/XmlHandler.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/xml/XmlHandler.js similarity index 100% rename from j2s/J/adapter/readers/xml/XmlHandler.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/xml/XmlHandler.js diff --git a/j2s/J/adapter/readers/xml/XmlMOReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/xml/XmlMOReader.js similarity index 100% rename from j2s/J/adapter/readers/xml/XmlMOReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/xml/XmlMOReader.js diff --git a/j2s/J/adapter/readers/xml/XmlMagResReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/xml/XmlMagResReader.js similarity index 100% rename from j2s/J/adapter/readers/xml/XmlMagResReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/xml/XmlMagResReader.js diff --git a/j2s/J/adapter/readers/xml/XmlMolproReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/xml/XmlMolproReader.js similarity index 100% rename from j2s/J/adapter/readers/xml/XmlMolproReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/xml/XmlMolproReader.js diff --git a/j2s/J/adapter/readers/xml/XmlOdysseyReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/xml/XmlOdysseyReader.js similarity index 100% rename from j2s/J/adapter/readers/xml/XmlOdysseyReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/xml/XmlOdysseyReader.js diff --git a/j2s/J/adapter/readers/xml/XmlQEReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/xml/XmlQEReader.js similarity index 100% rename from j2s/J/adapter/readers/xml/XmlQEReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/xml/XmlQEReader.js diff --git a/j2s/J/adapter/readers/xml/XmlReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/xml/XmlReader.js similarity index 100% rename from j2s/J/adapter/readers/xml/XmlReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/xml/XmlReader.js diff --git a/j2s/J/adapter/readers/xml/XmlVaspReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/xml/XmlVaspReader.js similarity index 100% rename from j2s/J/adapter/readers/xml/XmlVaspReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/xml/XmlVaspReader.js diff --git a/j2s/J/adapter/readers/xml/XmlXsdReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/xml/XmlXsdReader.js similarity index 100% rename from j2s/J/adapter/readers/xml/XmlXsdReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/xml/XmlXsdReader.js diff --git a/j2s/J/adapter/readers/xtal/AbinitReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/AbinitReader.js similarity index 100% rename from j2s/J/adapter/readers/xtal/AbinitReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/AbinitReader.js diff --git a/j2s/J/adapter/readers/xtal/AimsReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/AimsReader.js similarity index 100% rename from j2s/J/adapter/readers/xtal/AimsReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/AimsReader.js diff --git a/j2s/J/adapter/readers/xtal/BilbaoReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/BilbaoReader.js similarity index 100% rename from j2s/J/adapter/readers/xtal/BilbaoReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/BilbaoReader.js diff --git a/j2s/J/adapter/readers/xtal/CastepReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/CastepReader.js similarity index 100% rename from j2s/J/adapter/readers/xtal/CastepReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/CastepReader.js diff --git a/j2s/J/adapter/readers/xtal/CgdReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/CgdReader.js similarity index 100% rename from j2s/J/adapter/readers/xtal/CgdReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/CgdReader.js diff --git a/j2s/J/adapter/readers/xtal/CrystalReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/CrystalReader.js similarity index 100% rename from j2s/J/adapter/readers/xtal/CrystalReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/CrystalReader.js diff --git a/j2s/J/adapter/readers/xtal/DmolReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/DmolReader.js similarity index 100% rename from j2s/J/adapter/readers/xtal/DmolReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/DmolReader.js diff --git a/j2s/J/adapter/readers/xtal/EspressoReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/EspressoReader.js similarity index 100% rename from j2s/J/adapter/readers/xtal/EspressoReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/EspressoReader.js diff --git a/j2s/J/adapter/readers/xtal/GulpReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/GulpReader.js similarity index 100% rename from j2s/J/adapter/readers/xtal/GulpReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/GulpReader.js diff --git a/j2s/J/adapter/readers/xtal/JanaReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/JanaReader.js similarity index 100% rename from j2s/J/adapter/readers/xtal/JanaReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/JanaReader.js diff --git a/j2s/J/adapter/readers/xtal/MagresReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/MagresReader.js similarity index 100% rename from j2s/J/adapter/readers/xtal/MagresReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/MagresReader.js diff --git a/j2s/J/adapter/readers/xtal/ShelxReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/ShelxReader.js similarity index 100% rename from j2s/J/adapter/readers/xtal/ShelxReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/ShelxReader.js diff --git a/j2s/J/adapter/readers/xtal/SiestaReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/SiestaReader.js similarity index 100% rename from j2s/J/adapter/readers/xtal/SiestaReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/SiestaReader.js diff --git a/j2s/J/adapter/readers/xtal/VaspChgcarReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/VaspChgcarReader.js similarity index 100% rename from j2s/J/adapter/readers/xtal/VaspChgcarReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/VaspChgcarReader.js diff --git a/j2s/J/adapter/readers/xtal/VaspOutcarReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/VaspOutcarReader.js similarity index 100% rename from j2s/J/adapter/readers/xtal/VaspOutcarReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/VaspOutcarReader.js diff --git a/j2s/J/adapter/readers/xtal/VaspPoscarReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/VaspPoscarReader.js similarity index 100% rename from j2s/J/adapter/readers/xtal/VaspPoscarReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/VaspPoscarReader.js diff --git a/j2s/J/adapter/readers/xtal/Wien2kReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/Wien2kReader.js similarity index 100% rename from j2s/J/adapter/readers/xtal/Wien2kReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/Wien2kReader.js diff --git a/j2s/J/adapter/readers/xtal/XcrysdenReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/XcrysdenReader.js similarity index 100% rename from j2s/J/adapter/readers/xtal/XcrysdenReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/readers/xtal/XcrysdenReader.js diff --git a/j2s/J/adapter/smarter/Atom.js b/assets/compressed_sensing_2018/j2s/J/adapter/smarter/Atom.js similarity index 100% rename from j2s/J/adapter/smarter/Atom.js rename to assets/compressed_sensing_2018/j2s/J/adapter/smarter/Atom.js diff --git a/j2s/J/adapter/smarter/AtomIterator.js b/assets/compressed_sensing_2018/j2s/J/adapter/smarter/AtomIterator.js similarity index 100% rename from j2s/J/adapter/smarter/AtomIterator.js rename to assets/compressed_sensing_2018/j2s/J/adapter/smarter/AtomIterator.js diff --git a/j2s/J/adapter/smarter/AtomSetCollection.js b/assets/compressed_sensing_2018/j2s/J/adapter/smarter/AtomSetCollection.js similarity index 100% rename from j2s/J/adapter/smarter/AtomSetCollection.js rename to assets/compressed_sensing_2018/j2s/J/adapter/smarter/AtomSetCollection.js diff --git a/j2s/J/adapter/smarter/AtomSetCollectionReader.js b/assets/compressed_sensing_2018/j2s/J/adapter/smarter/AtomSetCollectionReader.js similarity index 100% rename from j2s/J/adapter/smarter/AtomSetCollectionReader.js rename to assets/compressed_sensing_2018/j2s/J/adapter/smarter/AtomSetCollectionReader.js diff --git a/j2s/J/adapter/smarter/AtomSetObject.js b/assets/compressed_sensing_2018/j2s/J/adapter/smarter/AtomSetObject.js similarity index 100% rename from j2s/J/adapter/smarter/AtomSetObject.js rename to assets/compressed_sensing_2018/j2s/J/adapter/smarter/AtomSetObject.js diff --git a/j2s/J/adapter/smarter/Bond.js b/assets/compressed_sensing_2018/j2s/J/adapter/smarter/Bond.js similarity index 100% rename from j2s/J/adapter/smarter/Bond.js rename to assets/compressed_sensing_2018/j2s/J/adapter/smarter/Bond.js diff --git a/j2s/J/adapter/smarter/BondIterator.js b/assets/compressed_sensing_2018/j2s/J/adapter/smarter/BondIterator.js similarity index 100% rename from j2s/J/adapter/smarter/BondIterator.js rename to assets/compressed_sensing_2018/j2s/J/adapter/smarter/BondIterator.js diff --git a/j2s/J/adapter/smarter/MSInterface.js b/assets/compressed_sensing_2018/j2s/J/adapter/smarter/MSInterface.js similarity index 100% rename from j2s/J/adapter/smarter/MSInterface.js rename to assets/compressed_sensing_2018/j2s/J/adapter/smarter/MSInterface.js diff --git a/j2s/J/adapter/smarter/Resolver.js b/assets/compressed_sensing_2018/j2s/J/adapter/smarter/Resolver.js similarity index 100% rename from j2s/J/adapter/smarter/Resolver.js rename to assets/compressed_sensing_2018/j2s/J/adapter/smarter/Resolver.js diff --git a/j2s/J/adapter/smarter/SmarterJmolAdapter.js b/assets/compressed_sensing_2018/j2s/J/adapter/smarter/SmarterJmolAdapter.js similarity index 100% rename from j2s/J/adapter/smarter/SmarterJmolAdapter.js rename to assets/compressed_sensing_2018/j2s/J/adapter/smarter/SmarterJmolAdapter.js diff --git a/j2s/J/adapter/smarter/Structure.js b/assets/compressed_sensing_2018/j2s/J/adapter/smarter/Structure.js similarity index 100% rename from j2s/J/adapter/smarter/Structure.js rename to assets/compressed_sensing_2018/j2s/J/adapter/smarter/Structure.js diff --git a/j2s/J/adapter/smarter/StructureIterator.js b/assets/compressed_sensing_2018/j2s/J/adapter/smarter/StructureIterator.js similarity index 100% rename from j2s/J/adapter/smarter/StructureIterator.js rename to assets/compressed_sensing_2018/j2s/J/adapter/smarter/StructureIterator.js diff --git a/j2s/J/adapter/smarter/XtalSymmetry.js b/assets/compressed_sensing_2018/j2s/J/adapter/smarter/XtalSymmetry.js similarity index 100% rename from j2s/J/adapter/smarter/XtalSymmetry.js rename to assets/compressed_sensing_2018/j2s/J/adapter/smarter/XtalSymmetry.js diff --git a/j2s/J/adapter/writers/QCJSONWriter.js b/assets/compressed_sensing_2018/j2s/J/adapter/writers/QCJSONWriter.js similarity index 100% rename from j2s/J/adapter/writers/QCJSONWriter.js rename to assets/compressed_sensing_2018/j2s/J/adapter/writers/QCJSONWriter.js diff --git a/j2s/J/api/AtomIndexIterator.js b/assets/compressed_sensing_2018/j2s/J/api/AtomIndexIterator.js similarity index 100% rename from j2s/J/api/AtomIndexIterator.js rename to assets/compressed_sensing_2018/j2s/J/api/AtomIndexIterator.js diff --git a/j2s/J/api/GenericGraphics.js b/assets/compressed_sensing_2018/j2s/J/api/GenericGraphics.js similarity index 100% rename from j2s/J/api/GenericGraphics.js rename to assets/compressed_sensing_2018/j2s/J/api/GenericGraphics.js diff --git a/j2s/J/api/Interface.js b/assets/compressed_sensing_2018/j2s/J/api/Interface.js similarity index 100% rename from j2s/J/api/Interface.js rename to assets/compressed_sensing_2018/j2s/J/api/Interface.js diff --git a/j2s/J/api/JSVInterface.js b/assets/compressed_sensing_2018/j2s/J/api/JSVInterface.js similarity index 100% rename from j2s/J/api/JSVInterface.js rename to assets/compressed_sensing_2018/j2s/J/api/JSVInterface.js diff --git a/j2s/J/api/JmolAbstractButton.js b/assets/compressed_sensing_2018/j2s/J/api/JmolAbstractButton.js similarity index 100% rename from j2s/J/api/JmolAbstractButton.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolAbstractButton.js diff --git a/j2s/J/api/JmolAdapter.js b/assets/compressed_sensing_2018/j2s/J/api/JmolAdapter.js similarity index 100% rename from j2s/J/api/JmolAdapter.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolAdapter.js diff --git a/j2s/J/api/JmolAdapterAtomIterator.js b/assets/compressed_sensing_2018/j2s/J/api/JmolAdapterAtomIterator.js similarity index 100% rename from j2s/J/api/JmolAdapterAtomIterator.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolAdapterAtomIterator.js diff --git a/j2s/J/api/JmolAdapterBondIterator.js b/assets/compressed_sensing_2018/j2s/J/api/JmolAdapterBondIterator.js similarity index 100% rename from j2s/J/api/JmolAdapterBondIterator.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolAdapterBondIterator.js diff --git a/j2s/J/api/JmolAdapterStructureIterator.js b/assets/compressed_sensing_2018/j2s/J/api/JmolAdapterStructureIterator.js similarity index 100% rename from j2s/J/api/JmolAdapterStructureIterator.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolAdapterStructureIterator.js diff --git a/j2s/J/api/JmolAnnotationParser.js b/assets/compressed_sensing_2018/j2s/J/api/JmolAnnotationParser.js similarity index 100% rename from j2s/J/api/JmolAnnotationParser.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolAnnotationParser.js diff --git a/j2s/J/api/JmolAppAPI.js b/assets/compressed_sensing_2018/j2s/J/api/JmolAppAPI.js similarity index 100% rename from j2s/J/api/JmolAppAPI.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolAppAPI.js diff --git a/j2s/J/api/JmolAppConsoleInterface.js b/assets/compressed_sensing_2018/j2s/J/api/JmolAppConsoleInterface.js similarity index 100% rename from j2s/J/api/JmolAppConsoleInterface.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolAppConsoleInterface.js diff --git a/j2s/J/api/JmolAppletInterface.js b/assets/compressed_sensing_2018/j2s/J/api/JmolAppletInterface.js similarity index 100% rename from j2s/J/api/JmolAppletInterface.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolAppletInterface.js diff --git a/j2s/J/api/JmolAudioPlayer.js b/assets/compressed_sensing_2018/j2s/J/api/JmolAudioPlayer.js similarity index 100% rename from j2s/J/api/JmolAudioPlayer.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolAudioPlayer.js diff --git a/j2s/J/api/JmolCallbackListener.js b/assets/compressed_sensing_2018/j2s/J/api/JmolCallbackListener.js similarity index 100% rename from j2s/J/api/JmolCallbackListener.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolCallbackListener.js diff --git a/j2s/J/api/JmolDataManager.js b/assets/compressed_sensing_2018/j2s/J/api/JmolDataManager.js similarity index 100% rename from j2s/J/api/JmolDataManager.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolDataManager.js diff --git a/j2s/J/api/JmolDialogInterface.js b/assets/compressed_sensing_2018/j2s/J/api/JmolDialogInterface.js similarity index 100% rename from j2s/J/api/JmolDialogInterface.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolDialogInterface.js diff --git a/j2s/J/api/JmolDomReaderInterface.js b/assets/compressed_sensing_2018/j2s/J/api/JmolDomReaderInterface.js similarity index 100% rename from j2s/J/api/JmolDomReaderInterface.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolDomReaderInterface.js diff --git a/j2s/J/api/JmolDropEditor.js b/assets/compressed_sensing_2018/j2s/J/api/JmolDropEditor.js similarity index 100% rename from j2s/J/api/JmolDropEditor.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolDropEditor.js diff --git a/j2s/J/api/JmolEnvCalc.js b/assets/compressed_sensing_2018/j2s/J/api/JmolEnvCalc.js similarity index 100% rename from j2s/J/api/JmolEnvCalc.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolEnvCalc.js diff --git a/j2s/J/api/JmolFilesReaderInterface.js b/assets/compressed_sensing_2018/j2s/J/api/JmolFilesReaderInterface.js similarity index 100% rename from j2s/J/api/JmolFilesReaderInterface.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolFilesReaderInterface.js diff --git a/j2s/J/api/JmolGestureServerInterface.js b/assets/compressed_sensing_2018/j2s/J/api/JmolGestureServerInterface.js similarity index 100% rename from j2s/J/api/JmolGestureServerInterface.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolGestureServerInterface.js diff --git a/j2s/J/api/JmolGraphicsInterface.js b/assets/compressed_sensing_2018/j2s/J/api/JmolGraphicsInterface.js similarity index 100% rename from j2s/J/api/JmolGraphicsInterface.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolGraphicsInterface.js diff --git a/j2s/J/api/JmolJDXMOLParser.js b/assets/compressed_sensing_2018/j2s/J/api/JmolJDXMOLParser.js similarity index 100% rename from j2s/J/api/JmolJDXMOLParser.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolJDXMOLParser.js diff --git a/j2s/J/api/JmolJDXMOLReader.js b/assets/compressed_sensing_2018/j2s/J/api/JmolJDXMOLReader.js similarity index 100% rename from j2s/J/api/JmolJDXMOLReader.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolJDXMOLReader.js diff --git a/j2s/J/api/JmolJSpecView.js b/assets/compressed_sensing_2018/j2s/J/api/JmolJSpecView.js similarity index 100% rename from j2s/J/api/JmolJSpecView.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolJSpecView.js diff --git a/j2s/J/api/JmolMeasurementClient.js b/assets/compressed_sensing_2018/j2s/J/api/JmolMeasurementClient.js similarity index 100% rename from j2s/J/api/JmolMeasurementClient.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolMeasurementClient.js diff --git a/j2s/J/api/JmolModulationSet.js b/assets/compressed_sensing_2018/j2s/J/api/JmolModulationSet.js similarity index 100% rename from j2s/J/api/JmolModulationSet.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolModulationSet.js diff --git a/j2s/J/api/JmolMovieCreatorInterface.js b/assets/compressed_sensing_2018/j2s/J/api/JmolMovieCreatorInterface.js similarity index 100% rename from j2s/J/api/JmolMovieCreatorInterface.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolMovieCreatorInterface.js diff --git a/j2s/J/api/JmolNMRInterface.js b/assets/compressed_sensing_2018/j2s/J/api/JmolNMRInterface.js similarity index 100% rename from j2s/J/api/JmolNMRInterface.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolNMRInterface.js diff --git a/j2s/J/api/JmolNavigatorInterface.js b/assets/compressed_sensing_2018/j2s/J/api/JmolNavigatorInterface.js similarity index 100% rename from j2s/J/api/JmolNavigatorInterface.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolNavigatorInterface.js diff --git a/j2s/J/api/JmolParallelProcessor.js b/assets/compressed_sensing_2018/j2s/J/api/JmolParallelProcessor.js similarity index 100% rename from j2s/J/api/JmolParallelProcessor.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolParallelProcessor.js diff --git a/j2s/J/api/JmolPatternMatcher.js b/assets/compressed_sensing_2018/j2s/J/api/JmolPatternMatcher.js similarity index 100% rename from j2s/J/api/JmolPatternMatcher.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolPatternMatcher.js diff --git a/j2s/J/api/JmolPdfCreatorInterface.js b/assets/compressed_sensing_2018/j2s/J/api/JmolPdfCreatorInterface.js similarity index 100% rename from j2s/J/api/JmolPdfCreatorInterface.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolPdfCreatorInterface.js diff --git a/j2s/J/api/JmolPropertyManager.js b/assets/compressed_sensing_2018/j2s/J/api/JmolPropertyManager.js similarity index 100% rename from j2s/J/api/JmolPropertyManager.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolPropertyManager.js diff --git a/j2s/J/api/JmolRendererInterface.js b/assets/compressed_sensing_2018/j2s/J/api/JmolRendererInterface.js similarity index 100% rename from j2s/J/api/JmolRendererInterface.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolRendererInterface.js diff --git a/j2s/J/api/JmolRepaintManager.js b/assets/compressed_sensing_2018/j2s/J/api/JmolRepaintManager.js similarity index 100% rename from j2s/J/api/JmolRepaintManager.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolRepaintManager.js diff --git a/j2s/J/api/JmolSceneGenerator.js b/assets/compressed_sensing_2018/j2s/J/api/JmolSceneGenerator.js similarity index 100% rename from j2s/J/api/JmolSceneGenerator.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolSceneGenerator.js diff --git a/j2s/J/api/JmolScriptEditorInterface.js b/assets/compressed_sensing_2018/j2s/J/api/JmolScriptEditorInterface.js similarity index 100% rename from j2s/J/api/JmolScriptEditorInterface.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolScriptEditorInterface.js diff --git a/j2s/J/api/JmolScriptEvaluator.js b/assets/compressed_sensing_2018/j2s/J/api/JmolScriptEvaluator.js similarity index 100% rename from j2s/J/api/JmolScriptEvaluator.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolScriptEvaluator.js diff --git a/j2s/J/api/JmolScriptFunction.js b/assets/compressed_sensing_2018/j2s/J/api/JmolScriptFunction.js similarity index 100% rename from j2s/J/api/JmolScriptFunction.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolScriptFunction.js diff --git a/j2s/J/api/JmolScriptManager.js b/assets/compressed_sensing_2018/j2s/J/api/JmolScriptManager.js similarity index 100% rename from j2s/J/api/JmolScriptManager.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolScriptManager.js diff --git a/j2s/J/api/JmolSelectionListener.js b/assets/compressed_sensing_2018/j2s/J/api/JmolSelectionListener.js similarity index 100% rename from j2s/J/api/JmolSelectionListener.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolSelectionListener.js diff --git a/j2s/J/api/JmolStatusListener.js b/assets/compressed_sensing_2018/j2s/J/api/JmolStatusListener.js similarity index 100% rename from j2s/J/api/JmolStatusListener.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolStatusListener.js diff --git a/j2s/J/api/JmolSyncInterface.js b/assets/compressed_sensing_2018/j2s/J/api/JmolSyncInterface.js similarity index 100% rename from j2s/J/api/JmolSyncInterface.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolSyncInterface.js diff --git a/j2s/J/api/JmolToJSmolInterface.js b/assets/compressed_sensing_2018/j2s/J/api/JmolToJSmolInterface.js similarity index 100% rename from j2s/J/api/JmolToJSmolInterface.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolToJSmolInterface.js diff --git a/j2s/J/api/JmolTouchSimulatorInterface.js b/assets/compressed_sensing_2018/j2s/J/api/JmolTouchSimulatorInterface.js similarity index 100% rename from j2s/J/api/JmolTouchSimulatorInterface.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolTouchSimulatorInterface.js diff --git a/j2s/J/api/JmolViewer.js b/assets/compressed_sensing_2018/j2s/J/api/JmolViewer.js similarity index 100% rename from j2s/J/api/JmolViewer.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolViewer.js diff --git a/j2s/J/api/JmolZipUtilities.js b/assets/compressed_sensing_2018/j2s/J/api/JmolZipUtilities.js similarity index 100% rename from j2s/J/api/JmolZipUtilities.js rename to assets/compressed_sensing_2018/j2s/J/api/JmolZipUtilities.js diff --git a/j2s/J/api/PymolAtomReader.js b/assets/compressed_sensing_2018/j2s/J/api/PymolAtomReader.js similarity index 100% rename from j2s/J/api/PymolAtomReader.js rename to assets/compressed_sensing_2018/j2s/J/api/PymolAtomReader.js diff --git a/j2s/J/api/SmilesMatcherInterface.js b/assets/compressed_sensing_2018/j2s/J/api/SmilesMatcherInterface.js similarity index 100% rename from j2s/J/api/SmilesMatcherInterface.js rename to assets/compressed_sensing_2018/j2s/J/api/SmilesMatcherInterface.js diff --git a/j2s/J/api/SymmetryInterface.js b/assets/compressed_sensing_2018/j2s/J/api/SymmetryInterface.js similarity index 100% rename from j2s/J/api/SymmetryInterface.js rename to assets/compressed_sensing_2018/j2s/J/api/SymmetryInterface.js diff --git a/j2s/J/api/Translator.js b/assets/compressed_sensing_2018/j2s/J/api/Translator.js similarity index 100% rename from j2s/J/api/Translator.js rename to assets/compressed_sensing_2018/j2s/J/api/Translator.js diff --git a/j2s/J/appletjs/Jmol.js b/assets/compressed_sensing_2018/j2s/J/appletjs/Jmol.js similarity index 100% rename from j2s/J/appletjs/Jmol.js rename to assets/compressed_sensing_2018/j2s/J/appletjs/Jmol.js diff --git a/j2s/J/atomdata/AtomData.js b/assets/compressed_sensing_2018/j2s/J/atomdata/AtomData.js similarity index 100% rename from j2s/J/atomdata/AtomData.js rename to assets/compressed_sensing_2018/j2s/J/atomdata/AtomData.js diff --git a/j2s/J/atomdata/AtomDataServer.js b/assets/compressed_sensing_2018/j2s/J/atomdata/AtomDataServer.js similarity index 100% rename from j2s/J/atomdata/AtomDataServer.js rename to assets/compressed_sensing_2018/j2s/J/atomdata/AtomDataServer.js diff --git a/j2s/J/atomdata/RadiusData.js b/assets/compressed_sensing_2018/j2s/J/atomdata/RadiusData.js similarity index 100% rename from j2s/J/atomdata/RadiusData.js rename to assets/compressed_sensing_2018/j2s/J/atomdata/RadiusData.js diff --git a/j2s/J/awtjs/Platform.js b/assets/compressed_sensing_2018/j2s/J/awtjs/Platform.js similarity index 100% rename from j2s/J/awtjs/Platform.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/Platform.js diff --git a/j2s/J/awtjs/swing/AbstractButton.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/AbstractButton.js similarity index 100% rename from j2s/J/awtjs/swing/AbstractButton.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/AbstractButton.js diff --git a/j2s/J/awtjs/swing/AbstractTableModel.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/AbstractTableModel.js similarity index 100% rename from j2s/J/awtjs/swing/AbstractTableModel.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/AbstractTableModel.js diff --git a/j2s/J/awtjs/swing/ButtonGroup.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/ButtonGroup.js similarity index 100% rename from j2s/J/awtjs/swing/ButtonGroup.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/ButtonGroup.js diff --git a/j2s/J/awtjs/swing/Cell.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/Cell.js similarity index 100% rename from j2s/J/awtjs/swing/Cell.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/Cell.js diff --git a/j2s/J/awtjs/swing/ColumnSelectionModel.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/ColumnSelectionModel.js similarity index 100% rename from j2s/J/awtjs/swing/ColumnSelectionModel.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/ColumnSelectionModel.js diff --git a/j2s/J/awtjs/swing/Document.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/Document.js similarity index 100% rename from j2s/J/awtjs/swing/Document.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/Document.js diff --git a/j2s/J/awtjs/swing/FlowLayout.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/FlowLayout.js similarity index 100% rename from j2s/J/awtjs/swing/FlowLayout.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/FlowLayout.js diff --git a/j2s/J/awtjs/swing/Grid.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/Grid.js similarity index 100% rename from j2s/J/awtjs/swing/Grid.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/Grid.js diff --git a/j2s/J/awtjs/swing/GridBagConstraints.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/GridBagConstraints.js similarity index 100% rename from j2s/J/awtjs/swing/GridBagConstraints.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/GridBagConstraints.js diff --git a/j2s/J/awtjs/swing/GridBagLayout.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/GridBagLayout.js similarity index 100% rename from j2s/J/awtjs/swing/GridBagLayout.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/GridBagLayout.js diff --git a/j2s/J/awtjs/swing/HTMLElement.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/HTMLElement.js similarity index 100% rename from j2s/J/awtjs/swing/HTMLElement.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/HTMLElement.js diff --git a/j2s/J/awtjs/swing/HTMLWindowEvent.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/HTMLWindowEvent.js similarity index 100% rename from j2s/J/awtjs/swing/HTMLWindowEvent.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/HTMLWindowEvent.js diff --git a/j2s/J/awtjs/swing/Insets.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/Insets.js similarity index 100% rename from j2s/J/awtjs/swing/Insets.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/Insets.js diff --git a/j2s/J/awtjs/swing/JButton.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/JButton.js similarity index 100% rename from j2s/J/awtjs/swing/JButton.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/JButton.js diff --git a/j2s/J/awtjs/swing/JCheckBox.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/JCheckBox.js similarity index 100% rename from j2s/J/awtjs/swing/JCheckBox.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/JCheckBox.js diff --git a/j2s/J/awtjs/swing/JCheckBoxMenuItem.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/JCheckBoxMenuItem.js similarity index 100% rename from j2s/J/awtjs/swing/JCheckBoxMenuItem.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/JCheckBoxMenuItem.js diff --git a/j2s/J/awtjs/swing/JComboBox.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/JComboBox.js similarity index 100% rename from j2s/J/awtjs/swing/JComboBox.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/JComboBox.js diff --git a/j2s/J/awtjs/swing/JComponent.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/JComponent.js similarity index 100% rename from j2s/J/awtjs/swing/JComponent.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/JComponent.js diff --git a/j2s/J/awtjs/swing/JComponentImp.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/JComponentImp.js similarity index 100% rename from j2s/J/awtjs/swing/JComponentImp.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/JComponentImp.js diff --git a/j2s/J/awtjs/swing/JContentPane.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/JContentPane.js similarity index 100% rename from j2s/J/awtjs/swing/JContentPane.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/JContentPane.js diff --git a/j2s/J/awtjs/swing/JDialog.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/JDialog.js similarity index 100% rename from j2s/J/awtjs/swing/JDialog.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/JDialog.js diff --git a/j2s/J/awtjs/swing/JEditorPane.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/JEditorPane.js similarity index 100% rename from j2s/J/awtjs/swing/JEditorPane.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/JEditorPane.js diff --git a/j2s/J/awtjs/swing/JLabel.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/JLabel.js similarity index 100% rename from j2s/J/awtjs/swing/JLabel.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/JLabel.js diff --git a/j2s/J/awtjs/swing/JMenu.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/JMenu.js similarity index 100% rename from j2s/J/awtjs/swing/JMenu.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/JMenu.js diff --git a/j2s/J/awtjs/swing/JMenuItem.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/JMenuItem.js similarity index 100% rename from j2s/J/awtjs/swing/JMenuItem.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/JMenuItem.js diff --git a/j2s/J/awtjs/swing/JPanel.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/JPanel.js similarity index 100% rename from j2s/J/awtjs/swing/JPanel.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/JPanel.js diff --git a/j2s/J/awtjs/swing/JPopupMenu.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/JPopupMenu.js similarity index 100% rename from j2s/J/awtjs/swing/JPopupMenu.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/JPopupMenu.js diff --git a/j2s/J/awtjs/swing/JRadioButtonMenuItem.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/JRadioButtonMenuItem.js similarity index 100% rename from j2s/J/awtjs/swing/JRadioButtonMenuItem.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/JRadioButtonMenuItem.js diff --git a/j2s/J/awtjs/swing/JScrollPane.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/JScrollPane.js similarity index 100% rename from j2s/J/awtjs/swing/JScrollPane.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/JScrollPane.js diff --git a/j2s/J/awtjs/swing/JSplitPane.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/JSplitPane.js similarity index 100% rename from j2s/J/awtjs/swing/JSplitPane.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/JSplitPane.js diff --git a/j2s/J/awtjs/swing/JTable.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/JTable.js similarity index 100% rename from j2s/J/awtjs/swing/JTable.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/JTable.js diff --git a/j2s/J/awtjs/swing/JTextField.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/JTextField.js similarity index 100% rename from j2s/J/awtjs/swing/JTextField.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/JTextField.js diff --git a/j2s/J/awtjs/swing/JTextPane.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/JTextPane.js similarity index 100% rename from j2s/J/awtjs/swing/JTextPane.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/JTextPane.js diff --git a/j2s/J/awtjs/swing/ListSelectionModel.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/ListSelectionModel.js similarity index 100% rename from j2s/J/awtjs/swing/ListSelectionModel.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/ListSelectionModel.js diff --git a/j2s/J/awtjs/swing/SwingConstants.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/SwingConstants.js similarity index 100% rename from j2s/J/awtjs/swing/SwingConstants.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/SwingConstants.js diff --git a/j2s/J/awtjs/swing/TableCellRenderer.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/TableCellRenderer.js similarity index 100% rename from j2s/J/awtjs/swing/TableCellRenderer.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/TableCellRenderer.js diff --git a/j2s/J/awtjs/swing/TableColumn.js b/assets/compressed_sensing_2018/j2s/J/awtjs/swing/TableColumn.js similarity index 100% rename from j2s/J/awtjs/swing/TableColumn.js rename to assets/compressed_sensing_2018/j2s/J/awtjs/swing/TableColumn.js diff --git a/j2s/J/awtjs2d/Display.js b/assets/compressed_sensing_2018/j2s/J/awtjs2d/Display.js similarity index 100% rename from j2s/J/awtjs2d/Display.js rename to assets/compressed_sensing_2018/j2s/J/awtjs2d/Display.js diff --git a/j2s/J/awtjs2d/Image.js b/assets/compressed_sensing_2018/j2s/J/awtjs2d/Image.js similarity index 100% rename from j2s/J/awtjs2d/Image.js rename to assets/compressed_sensing_2018/j2s/J/awtjs2d/Image.js diff --git a/j2s/J/awtjs2d/JSFile.js b/assets/compressed_sensing_2018/j2s/J/awtjs2d/JSFile.js similarity index 100% rename from j2s/J/awtjs2d/JSFile.js rename to assets/compressed_sensing_2018/j2s/J/awtjs2d/JSFile.js diff --git a/j2s/J/awtjs2d/JSFont.js b/assets/compressed_sensing_2018/j2s/J/awtjs2d/JSFont.js similarity index 100% rename from j2s/J/awtjs2d/JSFont.js rename to assets/compressed_sensing_2018/j2s/J/awtjs2d/JSFont.js diff --git a/j2s/J/awtjs2d/JSModelKitPopup.js b/assets/compressed_sensing_2018/j2s/J/awtjs2d/JSModelKitPopup.js similarity index 100% rename from j2s/J/awtjs2d/JSModelKitPopup.js rename to assets/compressed_sensing_2018/j2s/J/awtjs2d/JSModelKitPopup.js diff --git a/j2s/J/awtjs2d/JmolJSPopup.js b/assets/compressed_sensing_2018/j2s/J/awtjs2d/JmolJSPopup.js similarity index 100% rename from j2s/J/awtjs2d/JmolJSPopup.js rename to assets/compressed_sensing_2018/j2s/J/awtjs2d/JmolJSPopup.js diff --git a/j2s/J/awtjs2d/JsG2D.js b/assets/compressed_sensing_2018/j2s/J/awtjs2d/JsG2D.js similarity index 100% rename from j2s/J/awtjs2d/JsG2D.js rename to assets/compressed_sensing_2018/j2s/J/awtjs2d/JsG2D.js diff --git a/j2s/J/awtjs2d/Mouse.js b/assets/compressed_sensing_2018/j2s/J/awtjs2d/Mouse.js similarity index 100% rename from j2s/J/awtjs2d/Mouse.js rename to assets/compressed_sensing_2018/j2s/J/awtjs2d/Mouse.js diff --git a/j2s/J/awtjs2d/Platform.js b/assets/compressed_sensing_2018/j2s/J/awtjs2d/Platform.js similarity index 100% rename from j2s/J/awtjs2d/Platform.js rename to assets/compressed_sensing_2018/j2s/J/awtjs2d/Platform.js diff --git a/j2s/J/bspt/Bspf.js b/assets/compressed_sensing_2018/j2s/J/bspt/Bspf.js similarity index 100% rename from j2s/J/bspt/Bspf.js rename to assets/compressed_sensing_2018/j2s/J/bspt/Bspf.js diff --git a/j2s/J/bspt/Bspt.js b/assets/compressed_sensing_2018/j2s/J/bspt/Bspt.js similarity index 100% rename from j2s/J/bspt/Bspt.js rename to assets/compressed_sensing_2018/j2s/J/bspt/Bspt.js diff --git a/j2s/J/bspt/CubeIterator.js b/assets/compressed_sensing_2018/j2s/J/bspt/CubeIterator.js similarity index 100% rename from j2s/J/bspt/CubeIterator.js rename to assets/compressed_sensing_2018/j2s/J/bspt/CubeIterator.js diff --git a/j2s/J/bspt/Element.js b/assets/compressed_sensing_2018/j2s/J/bspt/Element.js similarity index 100% rename from j2s/J/bspt/Element.js rename to assets/compressed_sensing_2018/j2s/J/bspt/Element.js diff --git a/j2s/J/bspt/Leaf.js b/assets/compressed_sensing_2018/j2s/J/bspt/Leaf.js similarity index 100% rename from j2s/J/bspt/Leaf.js rename to assets/compressed_sensing_2018/j2s/J/bspt/Leaf.js diff --git a/j2s/J/bspt/Node.js b/assets/compressed_sensing_2018/j2s/J/bspt/Node.js similarity index 100% rename from j2s/J/bspt/Node.js rename to assets/compressed_sensing_2018/j2s/J/bspt/Node.js diff --git a/j2s/J/bspt/PointIterator.js b/assets/compressed_sensing_2018/j2s/J/bspt/PointIterator.js similarity index 100% rename from j2s/J/bspt/PointIterator.js rename to assets/compressed_sensing_2018/j2s/J/bspt/PointIterator.js diff --git a/j2s/J/c/CBK.js b/assets/compressed_sensing_2018/j2s/J/c/CBK.js similarity index 100% rename from j2s/J/c/CBK.js rename to assets/compressed_sensing_2018/j2s/J/c/CBK.js diff --git a/j2s/J/c/FIL.js b/assets/compressed_sensing_2018/j2s/J/c/FIL.js similarity index 100% rename from j2s/J/c/FIL.js rename to assets/compressed_sensing_2018/j2s/J/c/FIL.js diff --git a/j2s/J/c/HB.js b/assets/compressed_sensing_2018/j2s/J/c/HB.js similarity index 100% rename from j2s/J/c/HB.js rename to assets/compressed_sensing_2018/j2s/J/c/HB.js diff --git a/j2s/J/c/PAL.js b/assets/compressed_sensing_2018/j2s/J/c/PAL.js similarity index 100% rename from j2s/J/c/PAL.js rename to assets/compressed_sensing_2018/j2s/J/c/PAL.js diff --git a/j2s/J/c/STER.js b/assets/compressed_sensing_2018/j2s/J/c/STER.js similarity index 100% rename from j2s/J/c/STER.js rename to assets/compressed_sensing_2018/j2s/J/c/STER.js diff --git a/j2s/J/c/STR.js b/assets/compressed_sensing_2018/j2s/J/c/STR.js similarity index 100% rename from j2s/J/c/STR.js rename to assets/compressed_sensing_2018/j2s/J/c/STR.js diff --git a/j2s/J/c/VDW.js b/assets/compressed_sensing_2018/j2s/J/c/VDW.js similarity index 100% rename from j2s/J/c/VDW.js rename to assets/compressed_sensing_2018/j2s/J/c/VDW.js diff --git a/j2s/J/console/GenericConsole.js b/assets/compressed_sensing_2018/j2s/J/console/GenericConsole.js similarity index 100% rename from j2s/J/console/GenericConsole.js rename to assets/compressed_sensing_2018/j2s/J/console/GenericConsole.js diff --git a/j2s/J/console/GenericTextArea.js b/assets/compressed_sensing_2018/j2s/J/console/GenericTextArea.js similarity index 100% rename from j2s/J/console/GenericTextArea.js rename to assets/compressed_sensing_2018/j2s/J/console/GenericTextArea.js diff --git a/j2s/J/consolejs/AppletConsole.js b/assets/compressed_sensing_2018/j2s/J/consolejs/AppletConsole.js similarity index 100% rename from j2s/J/consolejs/AppletConsole.js rename to assets/compressed_sensing_2018/j2s/J/consolejs/AppletConsole.js diff --git a/j2s/J/consolejs/JSConsole.js b/assets/compressed_sensing_2018/j2s/J/consolejs/JSConsole.js similarity index 100% rename from j2s/J/consolejs/JSConsole.js rename to assets/compressed_sensing_2018/j2s/J/consolejs/JSConsole.js diff --git a/j2s/J/dssx/AnnotationParser.js b/assets/compressed_sensing_2018/j2s/J/dssx/AnnotationParser.js similarity index 100% rename from j2s/J/dssx/AnnotationParser.js rename to assets/compressed_sensing_2018/j2s/J/dssx/AnnotationParser.js diff --git a/j2s/J/dssx/Bridge.js b/assets/compressed_sensing_2018/j2s/J/dssx/Bridge.js similarity index 100% rename from j2s/J/dssx/Bridge.js rename to assets/compressed_sensing_2018/j2s/J/dssx/Bridge.js diff --git a/j2s/J/dssx/DSSP.js b/assets/compressed_sensing_2018/j2s/J/dssx/DSSP.js similarity index 100% rename from j2s/J/dssx/DSSP.js rename to assets/compressed_sensing_2018/j2s/J/dssx/DSSP.js diff --git a/j2s/J/dssx/DSSR0.js b/assets/compressed_sensing_2018/j2s/J/dssx/DSSR0.js similarity index 100% rename from j2s/J/dssx/DSSR0.js rename to assets/compressed_sensing_2018/j2s/J/dssx/DSSR0.js diff --git a/j2s/J/dssx/DSSR1.js b/assets/compressed_sensing_2018/j2s/J/dssx/DSSR1.js similarity index 100% rename from j2s/J/dssx/DSSR1.js rename to assets/compressed_sensing_2018/j2s/J/dssx/DSSR1.js diff --git a/j2s/J/export/Export3D.js b/assets/compressed_sensing_2018/j2s/J/export/Export3D.js similarity index 100% rename from j2s/J/export/Export3D.js rename to assets/compressed_sensing_2018/j2s/J/export/Export3D.js diff --git a/j2s/J/export/JSExporter.js b/assets/compressed_sensing_2018/j2s/J/export/JSExporter.js similarity index 100% rename from j2s/J/export/JSExporter.js rename to assets/compressed_sensing_2018/j2s/J/export/JSExporter.js diff --git a/j2s/J/export/MeshData.js b/assets/compressed_sensing_2018/j2s/J/export/MeshData.js similarity index 100% rename from j2s/J/export/MeshData.js rename to assets/compressed_sensing_2018/j2s/J/export/MeshData.js diff --git a/j2s/J/export/UseTable.js b/assets/compressed_sensing_2018/j2s/J/export/UseTable.js similarity index 100% rename from j2s/J/export/UseTable.js rename to assets/compressed_sensing_2018/j2s/J/export/UseTable.js diff --git a/j2s/J/export/_IdtfExporter.js b/assets/compressed_sensing_2018/j2s/J/export/_IdtfExporter.js similarity index 100% rename from j2s/J/export/_IdtfExporter.js rename to assets/compressed_sensing_2018/j2s/J/export/_IdtfExporter.js diff --git a/j2s/J/export/_MayaExporter.js b/assets/compressed_sensing_2018/j2s/J/export/_MayaExporter.js similarity index 100% rename from j2s/J/export/_MayaExporter.js rename to assets/compressed_sensing_2018/j2s/J/export/_MayaExporter.js diff --git a/j2s/J/export/_ObjExporter.js b/assets/compressed_sensing_2018/j2s/J/export/_ObjExporter.js similarity index 100% rename from j2s/J/export/_ObjExporter.js rename to assets/compressed_sensing_2018/j2s/J/export/_ObjExporter.js diff --git a/j2s/J/export/_PovrayExporter.js b/assets/compressed_sensing_2018/j2s/J/export/_PovrayExporter.js similarity index 100% rename from j2s/J/export/_PovrayExporter.js rename to assets/compressed_sensing_2018/j2s/J/export/_PovrayExporter.js diff --git a/j2s/J/export/_StlExporter.js b/assets/compressed_sensing_2018/j2s/J/export/_StlExporter.js similarity index 100% rename from j2s/J/export/_StlExporter.js rename to assets/compressed_sensing_2018/j2s/J/export/_StlExporter.js diff --git a/j2s/J/export/_TachyonExporter.js b/assets/compressed_sensing_2018/j2s/J/export/_TachyonExporter.js similarity index 100% rename from j2s/J/export/_TachyonExporter.js rename to assets/compressed_sensing_2018/j2s/J/export/_TachyonExporter.js diff --git a/j2s/J/export/_VrmlExporter.js b/assets/compressed_sensing_2018/j2s/J/export/_VrmlExporter.js similarity index 100% rename from j2s/J/export/_VrmlExporter.js rename to assets/compressed_sensing_2018/j2s/J/export/_VrmlExporter.js diff --git a/j2s/J/export/_X3dExporter.js b/assets/compressed_sensing_2018/j2s/J/export/_X3dExporter.js similarity index 100% rename from j2s/J/export/_X3dExporter.js rename to assets/compressed_sensing_2018/j2s/J/export/_X3dExporter.js diff --git a/j2s/J/export/__CartesianExporter.js b/assets/compressed_sensing_2018/j2s/J/export/__CartesianExporter.js similarity index 100% rename from j2s/J/export/__CartesianExporter.js rename to assets/compressed_sensing_2018/j2s/J/export/__CartesianExporter.js diff --git a/j2s/J/export/__RayTracerExporter.js b/assets/compressed_sensing_2018/j2s/J/export/__RayTracerExporter.js similarity index 100% rename from j2s/J/export/__RayTracerExporter.js rename to assets/compressed_sensing_2018/j2s/J/export/__RayTracerExporter.js diff --git a/j2s/J/export/___Exporter.js b/assets/compressed_sensing_2018/j2s/J/export/___Exporter.js similarity index 100% rename from j2s/J/export/___Exporter.js rename to assets/compressed_sensing_2018/j2s/J/export/___Exporter.js diff --git a/j2s/J/g3d/CircleRenderer.js b/assets/compressed_sensing_2018/j2s/J/g3d/CircleRenderer.js similarity index 100% rename from j2s/J/g3d/CircleRenderer.js rename to assets/compressed_sensing_2018/j2s/J/g3d/CircleRenderer.js diff --git a/j2s/J/g3d/CylinderRenderer.js b/assets/compressed_sensing_2018/j2s/J/g3d/CylinderRenderer.js similarity index 100% rename from j2s/J/g3d/CylinderRenderer.js rename to assets/compressed_sensing_2018/j2s/J/g3d/CylinderRenderer.js diff --git a/j2s/J/g3d/G3DRenderer.js b/assets/compressed_sensing_2018/j2s/J/g3d/G3DRenderer.js similarity index 100% rename from j2s/J/g3d/G3DRenderer.js rename to assets/compressed_sensing_2018/j2s/J/g3d/G3DRenderer.js diff --git a/j2s/J/g3d/Graphics3D.js b/assets/compressed_sensing_2018/j2s/J/g3d/Graphics3D.js similarity index 100% rename from j2s/J/g3d/Graphics3D.js rename to assets/compressed_sensing_2018/j2s/J/g3d/Graphics3D.js diff --git a/j2s/J/g3d/HermiteRenderer.js b/assets/compressed_sensing_2018/j2s/J/g3d/HermiteRenderer.js similarity index 100% rename from j2s/J/g3d/HermiteRenderer.js rename to assets/compressed_sensing_2018/j2s/J/g3d/HermiteRenderer.js diff --git a/j2s/J/g3d/LineRenderer.js b/assets/compressed_sensing_2018/j2s/J/g3d/LineRenderer.js similarity index 100% rename from j2s/J/g3d/LineRenderer.js rename to assets/compressed_sensing_2018/j2s/J/g3d/LineRenderer.js diff --git a/j2s/J/g3d/Pixelator.js b/assets/compressed_sensing_2018/j2s/J/g3d/Pixelator.js similarity index 100% rename from j2s/J/g3d/Pixelator.js rename to assets/compressed_sensing_2018/j2s/J/g3d/Pixelator.js diff --git a/j2s/J/g3d/PixelatorScreened.js b/assets/compressed_sensing_2018/j2s/J/g3d/PixelatorScreened.js similarity index 100% rename from j2s/J/g3d/PixelatorScreened.js rename to assets/compressed_sensing_2018/j2s/J/g3d/PixelatorScreened.js diff --git a/j2s/J/g3d/PixelatorShaded.js b/assets/compressed_sensing_2018/j2s/J/g3d/PixelatorShaded.js similarity index 100% rename from j2s/J/g3d/PixelatorShaded.js rename to assets/compressed_sensing_2018/j2s/J/g3d/PixelatorShaded.js diff --git a/j2s/J/g3d/PixelatorT.js b/assets/compressed_sensing_2018/j2s/J/g3d/PixelatorT.js similarity index 100% rename from j2s/J/g3d/PixelatorT.js rename to assets/compressed_sensing_2018/j2s/J/g3d/PixelatorT.js diff --git a/j2s/J/g3d/Platform3D.js b/assets/compressed_sensing_2018/j2s/J/g3d/Platform3D.js similarity index 100% rename from j2s/J/g3d/Platform3D.js rename to assets/compressed_sensing_2018/j2s/J/g3d/Platform3D.js diff --git a/j2s/J/g3d/PrecisionRenderer.js b/assets/compressed_sensing_2018/j2s/J/g3d/PrecisionRenderer.js similarity index 100% rename from j2s/J/g3d/PrecisionRenderer.js rename to assets/compressed_sensing_2018/j2s/J/g3d/PrecisionRenderer.js diff --git a/j2s/J/g3d/SphereRenderer.js b/assets/compressed_sensing_2018/j2s/J/g3d/SphereRenderer.js similarity index 100% rename from j2s/J/g3d/SphereRenderer.js rename to assets/compressed_sensing_2018/j2s/J/g3d/SphereRenderer.js diff --git a/j2s/J/g3d/TextRenderer.js b/assets/compressed_sensing_2018/j2s/J/g3d/TextRenderer.js similarity index 100% rename from j2s/J/g3d/TextRenderer.js rename to assets/compressed_sensing_2018/j2s/J/g3d/TextRenderer.js diff --git a/j2s/J/g3d/TextString.js b/assets/compressed_sensing_2018/j2s/J/g3d/TextString.js similarity index 100% rename from j2s/J/g3d/TextString.js rename to assets/compressed_sensing_2018/j2s/J/g3d/TextString.js diff --git a/j2s/J/g3d/TriangleRenderer.js b/assets/compressed_sensing_2018/j2s/J/g3d/TriangleRenderer.js similarity index 100% rename from j2s/J/g3d/TriangleRenderer.js rename to assets/compressed_sensing_2018/j2s/J/g3d/TriangleRenderer.js diff --git a/j2s/J/geodesic/EnvelopeCalculation.js b/assets/compressed_sensing_2018/j2s/J/geodesic/EnvelopeCalculation.js similarity index 100% rename from j2s/J/geodesic/EnvelopeCalculation.js rename to assets/compressed_sensing_2018/j2s/J/geodesic/EnvelopeCalculation.js diff --git a/j2s/J/i18n/GT.js b/assets/compressed_sensing_2018/j2s/J/i18n/GT.js similarity index 100% rename from j2s/J/i18n/GT.js rename to assets/compressed_sensing_2018/j2s/J/i18n/GT.js diff --git a/j2s/J/i18n/Language.js b/assets/compressed_sensing_2018/j2s/J/i18n/Language.js similarity index 100% rename from j2s/J/i18n/Language.js rename to assets/compressed_sensing_2018/j2s/J/i18n/Language.js diff --git a/j2s/J/i18n/Resource.js b/assets/compressed_sensing_2018/j2s/J/i18n/Resource.js similarity index 100% rename from j2s/J/i18n/Resource.js rename to assets/compressed_sensing_2018/j2s/J/i18n/Resource.js diff --git a/j2s/J/image/AviCreator.js b/assets/compressed_sensing_2018/j2s/J/image/AviCreator.js similarity index 100% rename from j2s/J/image/AviCreator.js rename to assets/compressed_sensing_2018/j2s/J/image/AviCreator.js diff --git a/j2s/J/io/DOMReader.js b/assets/compressed_sensing_2018/j2s/J/io/DOMReader.js similarity index 100% rename from j2s/J/io/DOMReader.js rename to assets/compressed_sensing_2018/j2s/J/io/DOMReader.js diff --git a/j2s/J/io/FileReader.js b/assets/compressed_sensing_2018/j2s/J/io/FileReader.js similarity index 100% rename from j2s/J/io/FileReader.js rename to assets/compressed_sensing_2018/j2s/J/io/FileReader.js diff --git a/j2s/J/io/FilesReader.js b/assets/compressed_sensing_2018/j2s/J/io/FilesReader.js similarity index 100% rename from j2s/J/io/FilesReader.js rename to assets/compressed_sensing_2018/j2s/J/io/FilesReader.js diff --git a/j2s/J/io/JmolUtil.js b/assets/compressed_sensing_2018/j2s/J/io/JmolUtil.js similarity index 100% rename from j2s/J/io/JmolUtil.js rename to assets/compressed_sensing_2018/j2s/J/io/JmolUtil.js diff --git a/j2s/J/jsv/JDXMOLParser.js b/assets/compressed_sensing_2018/j2s/J/jsv/JDXMOLParser.js similarity index 100% rename from j2s/J/jsv/JDXMOLParser.js rename to assets/compressed_sensing_2018/j2s/J/jsv/JDXMOLParser.js diff --git a/j2s/J/jsv/JSpecView.js b/assets/compressed_sensing_2018/j2s/J/jsv/JSpecView.js similarity index 100% rename from j2s/J/jsv/JSpecView.js rename to assets/compressed_sensing_2018/j2s/J/jsv/JSpecView.js diff --git a/j2s/J/jvxl/api/MeshDataServer.js b/assets/compressed_sensing_2018/j2s/J/jvxl/api/MeshDataServer.js similarity index 100% rename from j2s/J/jvxl/api/MeshDataServer.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/api/MeshDataServer.js diff --git a/j2s/J/jvxl/api/VertexDataServer.js b/assets/compressed_sensing_2018/j2s/J/jvxl/api/VertexDataServer.js similarity index 100% rename from j2s/J/jvxl/api/VertexDataServer.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/api/VertexDataServer.js diff --git a/j2s/J/jvxl/calc/MarchingCubes.js b/assets/compressed_sensing_2018/j2s/J/jvxl/calc/MarchingCubes.js similarity index 100% rename from j2s/J/jvxl/calc/MarchingCubes.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/calc/MarchingCubes.js diff --git a/j2s/J/jvxl/calc/MarchingSquares.js b/assets/compressed_sensing_2018/j2s/J/jvxl/calc/MarchingSquares.js similarity index 100% rename from j2s/J/jvxl/calc/MarchingSquares.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/calc/MarchingSquares.js diff --git a/j2s/J/jvxl/data/JvxlCoder.js b/assets/compressed_sensing_2018/j2s/J/jvxl/data/JvxlCoder.js similarity index 100% rename from j2s/J/jvxl/data/JvxlCoder.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/data/JvxlCoder.js diff --git a/j2s/J/jvxl/data/JvxlData.js b/assets/compressed_sensing_2018/j2s/J/jvxl/data/JvxlData.js similarity index 100% rename from j2s/J/jvxl/data/JvxlData.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/data/JvxlData.js diff --git a/j2s/J/jvxl/data/MeshData.js b/assets/compressed_sensing_2018/j2s/J/jvxl/data/MeshData.js similarity index 100% rename from j2s/J/jvxl/data/MeshData.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/data/MeshData.js diff --git a/j2s/J/jvxl/data/VolumeData.js b/assets/compressed_sensing_2018/j2s/J/jvxl/data/VolumeData.js similarity index 100% rename from j2s/J/jvxl/data/VolumeData.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/data/VolumeData.js diff --git a/j2s/J/jvxl/readers/ApbsReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/ApbsReader.js similarity index 100% rename from j2s/J/jvxl/readers/ApbsReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/ApbsReader.js diff --git a/j2s/J/jvxl/readers/AtomDataReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/AtomDataReader.js similarity index 100% rename from j2s/J/jvxl/readers/AtomDataReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/AtomDataReader.js diff --git a/j2s/J/jvxl/readers/AtomPropertyMapper.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/AtomPropertyMapper.js similarity index 100% rename from j2s/J/jvxl/readers/AtomPropertyMapper.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/AtomPropertyMapper.js diff --git a/j2s/J/jvxl/readers/BCifDensityReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/BCifDensityReader.js similarity index 100% rename from j2s/J/jvxl/readers/BCifDensityReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/BCifDensityReader.js diff --git a/j2s/J/jvxl/readers/CastepDensityReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/CastepDensityReader.js similarity index 100% rename from j2s/J/jvxl/readers/CastepDensityReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/CastepDensityReader.js diff --git a/j2s/J/jvxl/readers/CifDensityReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/CifDensityReader.js similarity index 100% rename from j2s/J/jvxl/readers/CifDensityReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/CifDensityReader.js diff --git a/j2s/J/jvxl/readers/CubeReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/CubeReader.js similarity index 100% rename from j2s/J/jvxl/readers/CubeReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/CubeReader.js diff --git a/j2s/J/jvxl/readers/DelPhiBinaryReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/DelPhiBinaryReader.js similarity index 100% rename from j2s/J/jvxl/readers/DelPhiBinaryReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/DelPhiBinaryReader.js diff --git a/j2s/J/jvxl/readers/Dsn6BinaryReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/Dsn6BinaryReader.js similarity index 100% rename from j2s/J/jvxl/readers/Dsn6BinaryReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/Dsn6BinaryReader.js diff --git a/j2s/J/jvxl/readers/EfvetReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/EfvetReader.js similarity index 100% rename from j2s/J/jvxl/readers/EfvetReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/EfvetReader.js diff --git a/j2s/J/jvxl/readers/IsoFxyReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/IsoFxyReader.js similarity index 100% rename from j2s/J/jvxl/readers/IsoFxyReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/IsoFxyReader.js diff --git a/j2s/J/jvxl/readers/IsoFxyzReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/IsoFxyzReader.js similarity index 100% rename from j2s/J/jvxl/readers/IsoFxyzReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/IsoFxyzReader.js diff --git a/j2s/J/jvxl/readers/IsoIntersectReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/IsoIntersectReader.js similarity index 100% rename from j2s/J/jvxl/readers/IsoIntersectReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/IsoIntersectReader.js diff --git a/j2s/J/jvxl/readers/IsoMOReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/IsoMOReader.js similarity index 100% rename from j2s/J/jvxl/readers/IsoMOReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/IsoMOReader.js diff --git a/j2s/J/jvxl/readers/IsoMepReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/IsoMepReader.js similarity index 100% rename from j2s/J/jvxl/readers/IsoMepReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/IsoMepReader.js diff --git a/j2s/J/jvxl/readers/IsoMlpReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/IsoMlpReader.js similarity index 100% rename from j2s/J/jvxl/readers/IsoMlpReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/IsoMlpReader.js diff --git a/j2s/J/jvxl/readers/IsoPlaneReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/IsoPlaneReader.js similarity index 100% rename from j2s/J/jvxl/readers/IsoPlaneReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/IsoPlaneReader.js diff --git a/j2s/J/jvxl/readers/IsoShapeReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/IsoShapeReader.js similarity index 100% rename from j2s/J/jvxl/readers/IsoShapeReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/IsoShapeReader.js diff --git a/j2s/J/jvxl/readers/IsoSolventReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/IsoSolventReader.js similarity index 100% rename from j2s/J/jvxl/readers/IsoSolventReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/IsoSolventReader.js diff --git a/j2s/J/jvxl/readers/JaguarReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/JaguarReader.js similarity index 100% rename from j2s/J/jvxl/readers/JaguarReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/JaguarReader.js diff --git a/j2s/J/jvxl/readers/JvxlReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/JvxlReader.js similarity index 100% rename from j2s/J/jvxl/readers/JvxlReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/JvxlReader.js diff --git a/j2s/J/jvxl/readers/JvxlXmlReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/JvxlXmlReader.js similarity index 100% rename from j2s/J/jvxl/readers/JvxlXmlReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/JvxlXmlReader.js diff --git a/j2s/J/jvxl/readers/KinemageReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/KinemageReader.js similarity index 100% rename from j2s/J/jvxl/readers/KinemageReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/KinemageReader.js diff --git a/j2s/J/jvxl/readers/MapFileReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/MapFileReader.js similarity index 100% rename from j2s/J/jvxl/readers/MapFileReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/MapFileReader.js diff --git a/j2s/J/jvxl/readers/MrcBinaryReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/MrcBinaryReader.js similarity index 100% rename from j2s/J/jvxl/readers/MrcBinaryReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/MrcBinaryReader.js diff --git a/j2s/J/jvxl/readers/MsmsReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/MsmsReader.js similarity index 100% rename from j2s/J/jvxl/readers/MsmsReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/MsmsReader.js diff --git a/j2s/J/jvxl/readers/NffReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/NffReader.js similarity index 100% rename from j2s/J/jvxl/readers/NffReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/NffReader.js diff --git a/j2s/J/jvxl/readers/ObjReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/ObjReader.js similarity index 100% rename from j2s/J/jvxl/readers/ObjReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/ObjReader.js diff --git a/j2s/J/jvxl/readers/Parameters.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/Parameters.js similarity index 100% rename from j2s/J/jvxl/readers/Parameters.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/Parameters.js diff --git a/j2s/J/jvxl/readers/PeriodicVolumeFileReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/PeriodicVolumeFileReader.js similarity index 100% rename from j2s/J/jvxl/readers/PeriodicVolumeFileReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/PeriodicVolumeFileReader.js diff --git a/j2s/J/jvxl/readers/PltFormattedReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/PltFormattedReader.js similarity index 100% rename from j2s/J/jvxl/readers/PltFormattedReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/PltFormattedReader.js diff --git a/j2s/J/jvxl/readers/Pmesh4Reader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/Pmesh4Reader.js similarity index 100% rename from j2s/J/jvxl/readers/Pmesh4Reader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/Pmesh4Reader.js diff --git a/j2s/J/jvxl/readers/PmeshReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/PmeshReader.js similarity index 100% rename from j2s/J/jvxl/readers/PmeshReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/PmeshReader.js diff --git a/j2s/J/jvxl/readers/PolygonFileReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/PolygonFileReader.js similarity index 100% rename from j2s/J/jvxl/readers/PolygonFileReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/PolygonFileReader.js diff --git a/j2s/J/jvxl/readers/PyMOLMeshReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/PyMOLMeshReader.js similarity index 100% rename from j2s/J/jvxl/readers/PyMOLMeshReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/PyMOLMeshReader.js diff --git a/j2s/J/jvxl/readers/Ras3DReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/Ras3DReader.js similarity index 100% rename from j2s/J/jvxl/readers/Ras3DReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/Ras3DReader.js diff --git a/j2s/J/jvxl/readers/SurfaceFileReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/SurfaceFileReader.js similarity index 100% rename from j2s/J/jvxl/readers/SurfaceFileReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/SurfaceFileReader.js diff --git a/j2s/J/jvxl/readers/SurfaceGenerator.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/SurfaceGenerator.js similarity index 100% rename from j2s/J/jvxl/readers/SurfaceGenerator.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/SurfaceGenerator.js diff --git a/j2s/J/jvxl/readers/SurfaceReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/SurfaceReader.js similarity index 100% rename from j2s/J/jvxl/readers/SurfaceReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/SurfaceReader.js diff --git a/j2s/J/jvxl/readers/UhbdReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/UhbdReader.js similarity index 100% rename from j2s/J/jvxl/readers/UhbdReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/UhbdReader.js diff --git a/j2s/J/jvxl/readers/VaspChgcarReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/VaspChgcarReader.js similarity index 100% rename from j2s/J/jvxl/readers/VaspChgcarReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/VaspChgcarReader.js diff --git a/j2s/J/jvxl/readers/VolumeDataReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/VolumeDataReader.js similarity index 100% rename from j2s/J/jvxl/readers/VolumeDataReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/VolumeDataReader.js diff --git a/j2s/J/jvxl/readers/VolumeFileReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/VolumeFileReader.js similarity index 100% rename from j2s/J/jvxl/readers/VolumeFileReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/VolumeFileReader.js diff --git a/j2s/J/jvxl/readers/XmlReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/XmlReader.js similarity index 100% rename from j2s/J/jvxl/readers/XmlReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/XmlReader.js diff --git a/j2s/J/jvxl/readers/XplorReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/XplorReader.js similarity index 100% rename from j2s/J/jvxl/readers/XplorReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/XplorReader.js diff --git a/j2s/J/jvxl/readers/XsfReader.js b/assets/compressed_sensing_2018/j2s/J/jvxl/readers/XsfReader.js similarity index 100% rename from j2s/J/jvxl/readers/XsfReader.js rename to assets/compressed_sensing_2018/j2s/J/jvxl/readers/XsfReader.js diff --git a/j2s/J/modelkit/ModelKitPopupResourceBundle.js b/assets/compressed_sensing_2018/j2s/J/modelkit/ModelKitPopupResourceBundle.js similarity index 100% rename from j2s/J/modelkit/ModelKitPopupResourceBundle.js rename to assets/compressed_sensing_2018/j2s/J/modelkit/ModelKitPopupResourceBundle.js diff --git a/j2s/J/modelkit/images/atoms.png b/assets/compressed_sensing_2018/j2s/J/modelkit/images/atoms.png similarity index 100% rename from j2s/J/modelkit/images/atoms.png rename to assets/compressed_sensing_2018/j2s/J/modelkit/images/atoms.png diff --git a/j2s/J/modelkit/images/bonds.png b/assets/compressed_sensing_2018/j2s/J/modelkit/images/bonds.png similarity index 100% rename from j2s/J/modelkit/images/bonds.png rename to assets/compressed_sensing_2018/j2s/J/modelkit/images/bonds.png diff --git a/j2s/J/modelkit/images/dotdotdot.png b/assets/compressed_sensing_2018/j2s/J/modelkit/images/dotdotdot.png similarity index 100% rename from j2s/J/modelkit/images/dotdotdot.png rename to assets/compressed_sensing_2018/j2s/J/modelkit/images/dotdotdot.png diff --git a/j2s/J/modelkit/images/undoButton.gif b/assets/compressed_sensing_2018/j2s/J/modelkit/images/undoButton.gif similarity index 100% rename from j2s/J/modelkit/images/undoButton.gif rename to assets/compressed_sensing_2018/j2s/J/modelkit/images/undoButton.gif diff --git a/j2s/J/navigate/Navigator.js b/assets/compressed_sensing_2018/j2s/J/navigate/Navigator.js similarity index 100% rename from j2s/J/navigate/Navigator.js rename to assets/compressed_sensing_2018/j2s/J/navigate/Navigator.js diff --git a/j2s/J/popup/GenericSwingPopup.js b/assets/compressed_sensing_2018/j2s/J/popup/GenericSwingPopup.js similarity index 100% rename from j2s/J/popup/GenericSwingPopup.js rename to assets/compressed_sensing_2018/j2s/J/popup/GenericSwingPopup.js diff --git a/j2s/J/popup/JSSwingPopupHelper.js b/assets/compressed_sensing_2018/j2s/J/popup/JSSwingPopupHelper.js similarity index 100% rename from j2s/J/popup/JSSwingPopupHelper.js rename to assets/compressed_sensing_2018/j2s/J/popup/JSSwingPopupHelper.js diff --git a/j2s/J/popup/JmolGenericPopup.js b/assets/compressed_sensing_2018/j2s/J/popup/JmolGenericPopup.js similarity index 100% rename from j2s/J/popup/JmolGenericPopup.js rename to assets/compressed_sensing_2018/j2s/J/popup/JmolGenericPopup.js diff --git a/j2s/J/popup/MainPopupResourceBundle.js b/assets/compressed_sensing_2018/j2s/J/popup/MainPopupResourceBundle.js similarity index 100% rename from j2s/J/popup/MainPopupResourceBundle.js rename to assets/compressed_sensing_2018/j2s/J/popup/MainPopupResourceBundle.js diff --git a/j2s/J/popup/PopupHelper.js b/assets/compressed_sensing_2018/j2s/J/popup/PopupHelper.js similarity index 100% rename from j2s/J/popup/PopupHelper.js rename to assets/compressed_sensing_2018/j2s/J/popup/PopupHelper.js diff --git a/j2s/J/popup/PopupResource.js b/assets/compressed_sensing_2018/j2s/J/popup/PopupResource.js similarity index 100% rename from j2s/J/popup/PopupResource.js rename to assets/compressed_sensing_2018/j2s/J/popup/PopupResource.js diff --git a/j2s/J/quantum/MOCalculation.js b/assets/compressed_sensing_2018/j2s/J/quantum/MOCalculation.js similarity index 100% rename from j2s/J/quantum/MOCalculation.js rename to assets/compressed_sensing_2018/j2s/J/quantum/MOCalculation.js diff --git a/j2s/J/quantum/MepCalculation.js b/assets/compressed_sensing_2018/j2s/J/quantum/MepCalculation.js similarity index 100% rename from j2s/J/quantum/MepCalculation.js rename to assets/compressed_sensing_2018/j2s/J/quantum/MepCalculation.js diff --git a/j2s/J/quantum/MlpCalculation.js b/assets/compressed_sensing_2018/j2s/J/quantum/MlpCalculation.js similarity index 100% rename from j2s/J/quantum/MlpCalculation.js rename to assets/compressed_sensing_2018/j2s/J/quantum/MlpCalculation.js diff --git a/j2s/J/quantum/NMRCalculation.js b/assets/compressed_sensing_2018/j2s/J/quantum/NMRCalculation.js similarity index 100% rename from j2s/J/quantum/NMRCalculation.js rename to assets/compressed_sensing_2018/j2s/J/quantum/NMRCalculation.js diff --git a/j2s/J/quantum/NciCalculation.js b/assets/compressed_sensing_2018/j2s/J/quantum/NciCalculation.js similarity index 100% rename from j2s/J/quantum/NciCalculation.js rename to assets/compressed_sensing_2018/j2s/J/quantum/NciCalculation.js diff --git a/j2s/J/quantum/QMAtom.js b/assets/compressed_sensing_2018/j2s/J/quantum/QMAtom.js similarity index 100% rename from j2s/J/quantum/QMAtom.js rename to assets/compressed_sensing_2018/j2s/J/quantum/QMAtom.js diff --git a/j2s/J/quantum/QS.js b/assets/compressed_sensing_2018/j2s/J/quantum/QS.js similarity index 100% rename from j2s/J/quantum/QS.js rename to assets/compressed_sensing_2018/j2s/J/quantum/QS.js diff --git a/j2s/J/quantum/QuantumCalculation.js b/assets/compressed_sensing_2018/j2s/J/quantum/QuantumCalculation.js similarity index 100% rename from j2s/J/quantum/QuantumCalculation.js rename to assets/compressed_sensing_2018/j2s/J/quantum/QuantumCalculation.js diff --git a/j2s/J/quantum/QuantumPlaneCalculation.js b/assets/compressed_sensing_2018/j2s/J/quantum/QuantumPlaneCalculation.js similarity index 100% rename from j2s/J/quantum/QuantumPlaneCalculation.js rename to assets/compressed_sensing_2018/j2s/J/quantum/QuantumPlaneCalculation.js diff --git a/j2s/J/quantum/SlaterData.js b/assets/compressed_sensing_2018/j2s/J/quantum/SlaterData.js similarity index 100% rename from j2s/J/quantum/SlaterData.js rename to assets/compressed_sensing_2018/j2s/J/quantum/SlaterData.js diff --git a/j2s/J/quantum/atomicLipophilicity.txt b/assets/compressed_sensing_2018/j2s/J/quantum/atomicLipophilicity.txt similarity index 100% rename from j2s/J/quantum/atomicLipophilicity.txt rename to assets/compressed_sensing_2018/j2s/J/quantum/atomicLipophilicity.txt diff --git a/j2s/J/quantum/mo/DataAdder.js b/assets/compressed_sensing_2018/j2s/J/quantum/mo/DataAdder.js similarity index 100% rename from j2s/J/quantum/mo/DataAdder.js rename to assets/compressed_sensing_2018/j2s/J/quantum/mo/DataAdder.js diff --git a/j2s/J/quantum/mo/DataAdder11H.js b/assets/compressed_sensing_2018/j2s/J/quantum/mo/DataAdder11H.js similarity index 100% rename from j2s/J/quantum/mo/DataAdder11H.js rename to assets/compressed_sensing_2018/j2s/J/quantum/mo/DataAdder11H.js diff --git a/j2s/J/quantum/mo/DataAdder13I.js b/assets/compressed_sensing_2018/j2s/J/quantum/mo/DataAdder13I.js similarity index 100% rename from j2s/J/quantum/mo/DataAdder13I.js rename to assets/compressed_sensing_2018/j2s/J/quantum/mo/DataAdder13I.js diff --git a/j2s/J/quantum/mo/DataAdder7F.js b/assets/compressed_sensing_2018/j2s/J/quantum/mo/DataAdder7F.js similarity index 100% rename from j2s/J/quantum/mo/DataAdder7F.js rename to assets/compressed_sensing_2018/j2s/J/quantum/mo/DataAdder7F.js diff --git a/j2s/J/quantum/mo/DataAdder9G.js b/assets/compressed_sensing_2018/j2s/J/quantum/mo/DataAdder9G.js similarity index 100% rename from j2s/J/quantum/mo/DataAdder9G.js rename to assets/compressed_sensing_2018/j2s/J/quantum/mo/DataAdder9G.js diff --git a/j2s/J/quantum/mo/DataAdderF.js b/assets/compressed_sensing_2018/j2s/J/quantum/mo/DataAdderF.js similarity index 100% rename from j2s/J/quantum/mo/DataAdderF.js rename to assets/compressed_sensing_2018/j2s/J/quantum/mo/DataAdderF.js diff --git a/j2s/J/quantum/mo/DataAdderG.js b/assets/compressed_sensing_2018/j2s/J/quantum/mo/DataAdderG.js similarity index 100% rename from j2s/J/quantum/mo/DataAdderG.js rename to assets/compressed_sensing_2018/j2s/J/quantum/mo/DataAdderG.js diff --git a/j2s/J/quantum/mo/DataAdderH.js b/assets/compressed_sensing_2018/j2s/J/quantum/mo/DataAdderH.js similarity index 100% rename from j2s/J/quantum/mo/DataAdderH.js rename to assets/compressed_sensing_2018/j2s/J/quantum/mo/DataAdderH.js diff --git a/j2s/J/quantum/mo/DataAdderI.js b/assets/compressed_sensing_2018/j2s/J/quantum/mo/DataAdderI.js similarity index 100% rename from j2s/J/quantum/mo/DataAdderI.js rename to assets/compressed_sensing_2018/j2s/J/quantum/mo/DataAdderI.js diff --git a/j2s/J/quantum/nmr_data.txt b/assets/compressed_sensing_2018/j2s/J/quantum/nmr_data.txt similarity index 100% rename from j2s/J/quantum/nmr_data.txt rename to assets/compressed_sensing_2018/j2s/J/quantum/nmr_data.txt diff --git a/j2s/J/render/AxesRenderer.js b/assets/compressed_sensing_2018/j2s/J/render/AxesRenderer.js similarity index 100% rename from j2s/J/render/AxesRenderer.js rename to assets/compressed_sensing_2018/j2s/J/render/AxesRenderer.js diff --git a/j2s/J/render/BallsRenderer.js b/assets/compressed_sensing_2018/j2s/J/render/BallsRenderer.js similarity index 100% rename from j2s/J/render/BallsRenderer.js rename to assets/compressed_sensing_2018/j2s/J/render/BallsRenderer.js diff --git a/j2s/J/render/BbcageRenderer.js b/assets/compressed_sensing_2018/j2s/J/render/BbcageRenderer.js similarity index 100% rename from j2s/J/render/BbcageRenderer.js rename to assets/compressed_sensing_2018/j2s/J/render/BbcageRenderer.js diff --git a/j2s/J/render/CageRenderer.js b/assets/compressed_sensing_2018/j2s/J/render/CageRenderer.js similarity index 100% rename from j2s/J/render/CageRenderer.js rename to assets/compressed_sensing_2018/j2s/J/render/CageRenderer.js diff --git a/j2s/J/render/EchoRenderer.js b/assets/compressed_sensing_2018/j2s/J/render/EchoRenderer.js similarity index 100% rename from j2s/J/render/EchoRenderer.js rename to assets/compressed_sensing_2018/j2s/J/render/EchoRenderer.js diff --git a/j2s/J/render/FontLineShapeRenderer.js b/assets/compressed_sensing_2018/j2s/J/render/FontLineShapeRenderer.js similarity index 100% rename from j2s/J/render/FontLineShapeRenderer.js rename to assets/compressed_sensing_2018/j2s/J/render/FontLineShapeRenderer.js diff --git a/j2s/J/render/FrankRenderer.js b/assets/compressed_sensing_2018/j2s/J/render/FrankRenderer.js similarity index 100% rename from j2s/J/render/FrankRenderer.js rename to assets/compressed_sensing_2018/j2s/J/render/FrankRenderer.js diff --git a/j2s/J/render/HalosRenderer.js b/assets/compressed_sensing_2018/j2s/J/render/HalosRenderer.js similarity index 100% rename from j2s/J/render/HalosRenderer.js rename to assets/compressed_sensing_2018/j2s/J/render/HalosRenderer.js diff --git a/j2s/J/render/HoverRenderer.js b/assets/compressed_sensing_2018/j2s/J/render/HoverRenderer.js similarity index 100% rename from j2s/J/render/HoverRenderer.js rename to assets/compressed_sensing_2018/j2s/J/render/HoverRenderer.js diff --git a/j2s/J/render/LabelsRenderer.js b/assets/compressed_sensing_2018/j2s/J/render/LabelsRenderer.js similarity index 100% rename from j2s/J/render/LabelsRenderer.js rename to assets/compressed_sensing_2018/j2s/J/render/LabelsRenderer.js diff --git a/j2s/J/render/MeasuresRenderer.js b/assets/compressed_sensing_2018/j2s/J/render/MeasuresRenderer.js similarity index 100% rename from j2s/J/render/MeasuresRenderer.js rename to assets/compressed_sensing_2018/j2s/J/render/MeasuresRenderer.js diff --git a/j2s/J/render/MeshRenderer.js b/assets/compressed_sensing_2018/j2s/J/render/MeshRenderer.js similarity index 100% rename from j2s/J/render/MeshRenderer.js rename to assets/compressed_sensing_2018/j2s/J/render/MeshRenderer.js diff --git a/j2s/J/render/RepaintManager.js b/assets/compressed_sensing_2018/j2s/J/render/RepaintManager.js similarity index 100% rename from j2s/J/render/RepaintManager.js rename to assets/compressed_sensing_2018/j2s/J/render/RepaintManager.js diff --git a/j2s/J/render/ShapeRenderer.js b/assets/compressed_sensing_2018/j2s/J/render/ShapeRenderer.js similarity index 100% rename from j2s/J/render/ShapeRenderer.js rename to assets/compressed_sensing_2018/j2s/J/render/ShapeRenderer.js diff --git a/j2s/J/render/StarsRenderer.js b/assets/compressed_sensing_2018/j2s/J/render/StarsRenderer.js similarity index 100% rename from j2s/J/render/StarsRenderer.js rename to assets/compressed_sensing_2018/j2s/J/render/StarsRenderer.js diff --git a/j2s/J/render/SticksRenderer.js b/assets/compressed_sensing_2018/j2s/J/render/SticksRenderer.js similarity index 100% rename from j2s/J/render/SticksRenderer.js rename to assets/compressed_sensing_2018/j2s/J/render/SticksRenderer.js diff --git a/j2s/J/render/TextRenderer.js b/assets/compressed_sensing_2018/j2s/J/render/TextRenderer.js similarity index 100% rename from j2s/J/render/TextRenderer.js rename to assets/compressed_sensing_2018/j2s/J/render/TextRenderer.js diff --git a/j2s/J/render/UccageRenderer.js b/assets/compressed_sensing_2018/j2s/J/render/UccageRenderer.js similarity index 100% rename from j2s/J/render/UccageRenderer.js rename to assets/compressed_sensing_2018/j2s/J/render/UccageRenderer.js diff --git a/j2s/J/renderbio/BackboneRenderer.js b/assets/compressed_sensing_2018/j2s/J/renderbio/BackboneRenderer.js similarity index 100% rename from j2s/J/renderbio/BackboneRenderer.js rename to assets/compressed_sensing_2018/j2s/J/renderbio/BackboneRenderer.js diff --git a/j2s/J/renderbio/BioMeshRenderer.js b/assets/compressed_sensing_2018/j2s/J/renderbio/BioMeshRenderer.js similarity index 100% rename from j2s/J/renderbio/BioMeshRenderer.js rename to assets/compressed_sensing_2018/j2s/J/renderbio/BioMeshRenderer.js diff --git a/j2s/J/renderbio/BioShapeRenderer.js b/assets/compressed_sensing_2018/j2s/J/renderbio/BioShapeRenderer.js similarity index 100% rename from j2s/J/renderbio/BioShapeRenderer.js rename to assets/compressed_sensing_2018/j2s/J/renderbio/BioShapeRenderer.js diff --git a/j2s/J/renderbio/CartoonRenderer.js b/assets/compressed_sensing_2018/j2s/J/renderbio/CartoonRenderer.js similarity index 100% rename from j2s/J/renderbio/CartoonRenderer.js rename to assets/compressed_sensing_2018/j2s/J/renderbio/CartoonRenderer.js diff --git a/j2s/J/renderbio/MeshRibbonRenderer.js b/assets/compressed_sensing_2018/j2s/J/renderbio/MeshRibbonRenderer.js similarity index 100% rename from j2s/J/renderbio/MeshRibbonRenderer.js rename to assets/compressed_sensing_2018/j2s/J/renderbio/MeshRibbonRenderer.js diff --git a/j2s/J/renderbio/NucleicRenderer.js b/assets/compressed_sensing_2018/j2s/J/renderbio/NucleicRenderer.js similarity index 100% rename from j2s/J/renderbio/NucleicRenderer.js rename to assets/compressed_sensing_2018/j2s/J/renderbio/NucleicRenderer.js diff --git a/j2s/J/renderbio/RibbonsRenderer.js b/assets/compressed_sensing_2018/j2s/J/renderbio/RibbonsRenderer.js similarity index 100% rename from j2s/J/renderbio/RibbonsRenderer.js rename to assets/compressed_sensing_2018/j2s/J/renderbio/RibbonsRenderer.js diff --git a/j2s/J/renderbio/RocketRenderer.js b/assets/compressed_sensing_2018/j2s/J/renderbio/RocketRenderer.js similarity index 100% rename from j2s/J/renderbio/RocketRenderer.js rename to assets/compressed_sensing_2018/j2s/J/renderbio/RocketRenderer.js diff --git a/j2s/J/renderbio/RocketsRenderer.js b/assets/compressed_sensing_2018/j2s/J/renderbio/RocketsRenderer.js similarity index 100% rename from j2s/J/renderbio/RocketsRenderer.js rename to assets/compressed_sensing_2018/j2s/J/renderbio/RocketsRenderer.js diff --git a/j2s/J/renderbio/StrandsRenderer.js b/assets/compressed_sensing_2018/j2s/J/renderbio/StrandsRenderer.js similarity index 100% rename from j2s/J/renderbio/StrandsRenderer.js rename to assets/compressed_sensing_2018/j2s/J/renderbio/StrandsRenderer.js diff --git a/j2s/J/renderbio/TraceRenderer.js b/assets/compressed_sensing_2018/j2s/J/renderbio/TraceRenderer.js similarity index 100% rename from j2s/J/renderbio/TraceRenderer.js rename to assets/compressed_sensing_2018/j2s/J/renderbio/TraceRenderer.js diff --git a/j2s/J/rendercgo/CGORenderer.js b/assets/compressed_sensing_2018/j2s/J/rendercgo/CGORenderer.js similarity index 100% rename from j2s/J/rendercgo/CGORenderer.js rename to assets/compressed_sensing_2018/j2s/J/rendercgo/CGORenderer.js diff --git a/j2s/J/renderspecial/DipolesRenderer.js b/assets/compressed_sensing_2018/j2s/J/renderspecial/DipolesRenderer.js similarity index 100% rename from j2s/J/renderspecial/DipolesRenderer.js rename to assets/compressed_sensing_2018/j2s/J/renderspecial/DipolesRenderer.js diff --git a/j2s/J/renderspecial/DotsRenderer.js b/assets/compressed_sensing_2018/j2s/J/renderspecial/DotsRenderer.js similarity index 100% rename from j2s/J/renderspecial/DotsRenderer.js rename to assets/compressed_sensing_2018/j2s/J/renderspecial/DotsRenderer.js diff --git a/j2s/J/renderspecial/DrawRenderer.js b/assets/compressed_sensing_2018/j2s/J/renderspecial/DrawRenderer.js similarity index 100% rename from j2s/J/renderspecial/DrawRenderer.js rename to assets/compressed_sensing_2018/j2s/J/renderspecial/DrawRenderer.js diff --git a/j2s/J/renderspecial/EllipsoidsRenderer.js b/assets/compressed_sensing_2018/j2s/J/renderspecial/EllipsoidsRenderer.js similarity index 100% rename from j2s/J/renderspecial/EllipsoidsRenderer.js rename to assets/compressed_sensing_2018/j2s/J/renderspecial/EllipsoidsRenderer.js diff --git a/j2s/J/renderspecial/GeoSurfaceRenderer.js b/assets/compressed_sensing_2018/j2s/J/renderspecial/GeoSurfaceRenderer.js similarity index 100% rename from j2s/J/renderspecial/GeoSurfaceRenderer.js rename to assets/compressed_sensing_2018/j2s/J/renderspecial/GeoSurfaceRenderer.js diff --git a/j2s/J/renderspecial/PolyhedraRenderer.js b/assets/compressed_sensing_2018/j2s/J/renderspecial/PolyhedraRenderer.js similarity index 100% rename from j2s/J/renderspecial/PolyhedraRenderer.js rename to assets/compressed_sensing_2018/j2s/J/renderspecial/PolyhedraRenderer.js diff --git a/j2s/J/renderspecial/VectorsRenderer.js b/assets/compressed_sensing_2018/j2s/J/renderspecial/VectorsRenderer.js similarity index 100% rename from j2s/J/renderspecial/VectorsRenderer.js rename to assets/compressed_sensing_2018/j2s/J/renderspecial/VectorsRenderer.js diff --git a/j2s/J/rendersurface/ContactRenderer.js b/assets/compressed_sensing_2018/j2s/J/rendersurface/ContactRenderer.js similarity index 100% rename from j2s/J/rendersurface/ContactRenderer.js rename to assets/compressed_sensing_2018/j2s/J/rendersurface/ContactRenderer.js diff --git a/j2s/J/rendersurface/IsosurfaceRenderer.js b/assets/compressed_sensing_2018/j2s/J/rendersurface/IsosurfaceRenderer.js similarity index 100% rename from j2s/J/rendersurface/IsosurfaceRenderer.js rename to assets/compressed_sensing_2018/j2s/J/rendersurface/IsosurfaceRenderer.js diff --git a/j2s/J/rendersurface/LcaoCartoonRenderer.js b/assets/compressed_sensing_2018/j2s/J/rendersurface/LcaoCartoonRenderer.js similarity index 100% rename from j2s/J/rendersurface/LcaoCartoonRenderer.js rename to assets/compressed_sensing_2018/j2s/J/rendersurface/LcaoCartoonRenderer.js diff --git a/j2s/J/rendersurface/MolecularOrbitalRenderer.js b/assets/compressed_sensing_2018/j2s/J/rendersurface/MolecularOrbitalRenderer.js similarity index 100% rename from j2s/J/rendersurface/MolecularOrbitalRenderer.js rename to assets/compressed_sensing_2018/j2s/J/rendersurface/MolecularOrbitalRenderer.js diff --git a/j2s/J/rendersurface/NBORenderer.js b/assets/compressed_sensing_2018/j2s/J/rendersurface/NBORenderer.js similarity index 100% rename from j2s/J/rendersurface/NBORenderer.js rename to assets/compressed_sensing_2018/j2s/J/rendersurface/NBORenderer.js diff --git a/j2s/J/rendersurface/Plot3DRenderer.js b/assets/compressed_sensing_2018/j2s/J/rendersurface/Plot3DRenderer.js similarity index 100% rename from j2s/J/rendersurface/Plot3DRenderer.js rename to assets/compressed_sensing_2018/j2s/J/rendersurface/Plot3DRenderer.js diff --git a/j2s/J/rendersurface/PmeshRenderer.js b/assets/compressed_sensing_2018/j2s/J/rendersurface/PmeshRenderer.js similarity index 100% rename from j2s/J/rendersurface/PmeshRenderer.js rename to assets/compressed_sensing_2018/j2s/J/rendersurface/PmeshRenderer.js diff --git a/j2s/J/shape/AtomShape.js b/assets/compressed_sensing_2018/j2s/J/shape/AtomShape.js similarity index 100% rename from j2s/J/shape/AtomShape.js rename to assets/compressed_sensing_2018/j2s/J/shape/AtomShape.js diff --git a/j2s/J/shape/Axes.js b/assets/compressed_sensing_2018/j2s/J/shape/Axes.js similarity index 100% rename from j2s/J/shape/Axes.js rename to assets/compressed_sensing_2018/j2s/J/shape/Axes.js diff --git a/j2s/J/shape/Balls.js b/assets/compressed_sensing_2018/j2s/J/shape/Balls.js similarity index 100% rename from j2s/J/shape/Balls.js rename to assets/compressed_sensing_2018/j2s/J/shape/Balls.js diff --git a/j2s/J/shape/Bbcage.js b/assets/compressed_sensing_2018/j2s/J/shape/Bbcage.js similarity index 100% rename from j2s/J/shape/Bbcage.js rename to assets/compressed_sensing_2018/j2s/J/shape/Bbcage.js diff --git a/j2s/J/shape/Echo.js b/assets/compressed_sensing_2018/j2s/J/shape/Echo.js similarity index 100% rename from j2s/J/shape/Echo.js rename to assets/compressed_sensing_2018/j2s/J/shape/Echo.js diff --git a/j2s/J/shape/FontLineShape.js b/assets/compressed_sensing_2018/j2s/J/shape/FontLineShape.js similarity index 100% rename from j2s/J/shape/FontLineShape.js rename to assets/compressed_sensing_2018/j2s/J/shape/FontLineShape.js diff --git a/j2s/J/shape/Frank.js b/assets/compressed_sensing_2018/j2s/J/shape/Frank.js similarity index 100% rename from j2s/J/shape/Frank.js rename to assets/compressed_sensing_2018/j2s/J/shape/Frank.js diff --git a/j2s/J/shape/Halos.js b/assets/compressed_sensing_2018/j2s/J/shape/Halos.js similarity index 100% rename from j2s/J/shape/Halos.js rename to assets/compressed_sensing_2018/j2s/J/shape/Halos.js diff --git a/j2s/J/shape/Hover.js b/assets/compressed_sensing_2018/j2s/J/shape/Hover.js similarity index 100% rename from j2s/J/shape/Hover.js rename to assets/compressed_sensing_2018/j2s/J/shape/Hover.js diff --git a/j2s/J/shape/Labels.js b/assets/compressed_sensing_2018/j2s/J/shape/Labels.js similarity index 100% rename from j2s/J/shape/Labels.js rename to assets/compressed_sensing_2018/j2s/J/shape/Labels.js diff --git a/j2s/J/shape/Measures.js b/assets/compressed_sensing_2018/j2s/J/shape/Measures.js similarity index 100% rename from j2s/J/shape/Measures.js rename to assets/compressed_sensing_2018/j2s/J/shape/Measures.js diff --git a/j2s/J/shape/Mesh.js b/assets/compressed_sensing_2018/j2s/J/shape/Mesh.js similarity index 100% rename from j2s/J/shape/Mesh.js rename to assets/compressed_sensing_2018/j2s/J/shape/Mesh.js diff --git a/j2s/J/shape/MeshCollection.js b/assets/compressed_sensing_2018/j2s/J/shape/MeshCollection.js similarity index 100% rename from j2s/J/shape/MeshCollection.js rename to assets/compressed_sensing_2018/j2s/J/shape/MeshCollection.js diff --git a/j2s/J/shape/Shape.js b/assets/compressed_sensing_2018/j2s/J/shape/Shape.js similarity index 100% rename from j2s/J/shape/Shape.js rename to assets/compressed_sensing_2018/j2s/J/shape/Shape.js diff --git a/j2s/J/shape/Stars.js b/assets/compressed_sensing_2018/j2s/J/shape/Stars.js similarity index 100% rename from j2s/J/shape/Stars.js rename to assets/compressed_sensing_2018/j2s/J/shape/Stars.js diff --git a/j2s/J/shape/Sticks.js b/assets/compressed_sensing_2018/j2s/J/shape/Sticks.js similarity index 100% rename from j2s/J/shape/Sticks.js rename to assets/compressed_sensing_2018/j2s/J/shape/Sticks.js diff --git a/j2s/J/shape/TextShape.js b/assets/compressed_sensing_2018/j2s/J/shape/TextShape.js similarity index 100% rename from j2s/J/shape/TextShape.js rename to assets/compressed_sensing_2018/j2s/J/shape/TextShape.js diff --git a/j2s/J/shape/Uccage.js b/assets/compressed_sensing_2018/j2s/J/shape/Uccage.js similarity index 100% rename from j2s/J/shape/Uccage.js rename to assets/compressed_sensing_2018/j2s/J/shape/Uccage.js diff --git a/j2s/J/shapebio/Backbone.js b/assets/compressed_sensing_2018/j2s/J/shapebio/Backbone.js similarity index 100% rename from j2s/J/shapebio/Backbone.js rename to assets/compressed_sensing_2018/j2s/J/shapebio/Backbone.js diff --git a/j2s/J/shapebio/BioShape.js b/assets/compressed_sensing_2018/j2s/J/shapebio/BioShape.js similarity index 100% rename from j2s/J/shapebio/BioShape.js rename to assets/compressed_sensing_2018/j2s/J/shapebio/BioShape.js diff --git a/j2s/J/shapebio/BioShapeCollection.js b/assets/compressed_sensing_2018/j2s/J/shapebio/BioShapeCollection.js similarity index 100% rename from j2s/J/shapebio/BioShapeCollection.js rename to assets/compressed_sensing_2018/j2s/J/shapebio/BioShapeCollection.js diff --git a/j2s/J/shapebio/Cartoon.js b/assets/compressed_sensing_2018/j2s/J/shapebio/Cartoon.js similarity index 100% rename from j2s/J/shapebio/Cartoon.js rename to assets/compressed_sensing_2018/j2s/J/shapebio/Cartoon.js diff --git a/j2s/J/shapebio/MeshRibbon.js b/assets/compressed_sensing_2018/j2s/J/shapebio/MeshRibbon.js similarity index 100% rename from j2s/J/shapebio/MeshRibbon.js rename to assets/compressed_sensing_2018/j2s/J/shapebio/MeshRibbon.js diff --git a/j2s/J/shapebio/Ribbons.js b/assets/compressed_sensing_2018/j2s/J/shapebio/Ribbons.js similarity index 100% rename from j2s/J/shapebio/Ribbons.js rename to assets/compressed_sensing_2018/j2s/J/shapebio/Ribbons.js diff --git a/j2s/J/shapebio/Rockets.js b/assets/compressed_sensing_2018/j2s/J/shapebio/Rockets.js similarity index 100% rename from j2s/J/shapebio/Rockets.js rename to assets/compressed_sensing_2018/j2s/J/shapebio/Rockets.js diff --git a/j2s/J/shapebio/Strands.js b/assets/compressed_sensing_2018/j2s/J/shapebio/Strands.js similarity index 100% rename from j2s/J/shapebio/Strands.js rename to assets/compressed_sensing_2018/j2s/J/shapebio/Strands.js diff --git a/j2s/J/shapebio/Trace.js b/assets/compressed_sensing_2018/j2s/J/shapebio/Trace.js similarity index 100% rename from j2s/J/shapebio/Trace.js rename to assets/compressed_sensing_2018/j2s/J/shapebio/Trace.js diff --git a/j2s/J/shapecgo/CGO.js b/assets/compressed_sensing_2018/j2s/J/shapecgo/CGO.js similarity index 100% rename from j2s/J/shapecgo/CGO.js rename to assets/compressed_sensing_2018/j2s/J/shapecgo/CGO.js diff --git a/j2s/J/shapecgo/CGOMesh.js b/assets/compressed_sensing_2018/j2s/J/shapecgo/CGOMesh.js similarity index 100% rename from j2s/J/shapecgo/CGOMesh.js rename to assets/compressed_sensing_2018/j2s/J/shapecgo/CGOMesh.js diff --git a/j2s/J/shapespecial/Dipole.js b/assets/compressed_sensing_2018/j2s/J/shapespecial/Dipole.js similarity index 100% rename from j2s/J/shapespecial/Dipole.js rename to assets/compressed_sensing_2018/j2s/J/shapespecial/Dipole.js diff --git a/j2s/J/shapespecial/Dipoles.js b/assets/compressed_sensing_2018/j2s/J/shapespecial/Dipoles.js similarity index 100% rename from j2s/J/shapespecial/Dipoles.js rename to assets/compressed_sensing_2018/j2s/J/shapespecial/Dipoles.js diff --git a/j2s/J/shapespecial/Dots.js b/assets/compressed_sensing_2018/j2s/J/shapespecial/Dots.js similarity index 100% rename from j2s/J/shapespecial/Dots.js rename to assets/compressed_sensing_2018/j2s/J/shapespecial/Dots.js diff --git a/j2s/J/shapespecial/Draw.js b/assets/compressed_sensing_2018/j2s/J/shapespecial/Draw.js similarity index 100% rename from j2s/J/shapespecial/Draw.js rename to assets/compressed_sensing_2018/j2s/J/shapespecial/Draw.js diff --git a/j2s/J/shapespecial/DrawMesh.js b/assets/compressed_sensing_2018/j2s/J/shapespecial/DrawMesh.js similarity index 100% rename from j2s/J/shapespecial/DrawMesh.js rename to assets/compressed_sensing_2018/j2s/J/shapespecial/DrawMesh.js diff --git a/j2s/J/shapespecial/Ellipsoid.js b/assets/compressed_sensing_2018/j2s/J/shapespecial/Ellipsoid.js similarity index 100% rename from j2s/J/shapespecial/Ellipsoid.js rename to assets/compressed_sensing_2018/j2s/J/shapespecial/Ellipsoid.js diff --git a/j2s/J/shapespecial/Ellipsoids.js b/assets/compressed_sensing_2018/j2s/J/shapespecial/Ellipsoids.js similarity index 100% rename from j2s/J/shapespecial/Ellipsoids.js rename to assets/compressed_sensing_2018/j2s/J/shapespecial/Ellipsoids.js diff --git a/j2s/J/shapespecial/GeoSurface.js b/assets/compressed_sensing_2018/j2s/J/shapespecial/GeoSurface.js similarity index 100% rename from j2s/J/shapespecial/GeoSurface.js rename to assets/compressed_sensing_2018/j2s/J/shapespecial/GeoSurface.js diff --git a/j2s/J/shapespecial/Polyhedra.js b/assets/compressed_sensing_2018/j2s/J/shapespecial/Polyhedra.js similarity index 100% rename from j2s/J/shapespecial/Polyhedra.js rename to assets/compressed_sensing_2018/j2s/J/shapespecial/Polyhedra.js diff --git a/j2s/J/shapespecial/Polyhedron.js b/assets/compressed_sensing_2018/j2s/J/shapespecial/Polyhedron.js similarity index 100% rename from j2s/J/shapespecial/Polyhedron.js rename to assets/compressed_sensing_2018/j2s/J/shapespecial/Polyhedron.js diff --git a/j2s/J/shapespecial/Vectors.js b/assets/compressed_sensing_2018/j2s/J/shapespecial/Vectors.js similarity index 100% rename from j2s/J/shapespecial/Vectors.js rename to assets/compressed_sensing_2018/j2s/J/shapespecial/Vectors.js diff --git a/j2s/J/shapesurface/Contact.js b/assets/compressed_sensing_2018/j2s/J/shapesurface/Contact.js similarity index 100% rename from j2s/J/shapesurface/Contact.js rename to assets/compressed_sensing_2018/j2s/J/shapesurface/Contact.js diff --git a/j2s/J/shapesurface/Isosurface.js b/assets/compressed_sensing_2018/j2s/J/shapesurface/Isosurface.js similarity index 100% rename from j2s/J/shapesurface/Isosurface.js rename to assets/compressed_sensing_2018/j2s/J/shapesurface/Isosurface.js diff --git a/j2s/J/shapesurface/IsosurfaceMesh.js b/assets/compressed_sensing_2018/j2s/J/shapesurface/IsosurfaceMesh.js similarity index 100% rename from j2s/J/shapesurface/IsosurfaceMesh.js rename to assets/compressed_sensing_2018/j2s/J/shapesurface/IsosurfaceMesh.js diff --git a/j2s/J/shapesurface/LcaoCartoon.js b/assets/compressed_sensing_2018/j2s/J/shapesurface/LcaoCartoon.js similarity index 100% rename from j2s/J/shapesurface/LcaoCartoon.js rename to assets/compressed_sensing_2018/j2s/J/shapesurface/LcaoCartoon.js diff --git a/j2s/J/shapesurface/MolecularOrbital.js b/assets/compressed_sensing_2018/j2s/J/shapesurface/MolecularOrbital.js similarity index 100% rename from j2s/J/shapesurface/MolecularOrbital.js rename to assets/compressed_sensing_2018/j2s/J/shapesurface/MolecularOrbital.js diff --git a/j2s/J/shapesurface/NBO.js b/assets/compressed_sensing_2018/j2s/J/shapesurface/NBO.js similarity index 100% rename from j2s/J/shapesurface/NBO.js rename to assets/compressed_sensing_2018/j2s/J/shapesurface/NBO.js diff --git a/j2s/J/shapesurface/PMeshWriter.js b/assets/compressed_sensing_2018/j2s/J/shapesurface/PMeshWriter.js similarity index 100% rename from j2s/J/shapesurface/PMeshWriter.js rename to assets/compressed_sensing_2018/j2s/J/shapesurface/PMeshWriter.js diff --git a/j2s/J/shapesurface/Plot3D.js b/assets/compressed_sensing_2018/j2s/J/shapesurface/Plot3D.js similarity index 100% rename from j2s/J/shapesurface/Plot3D.js rename to assets/compressed_sensing_2018/j2s/J/shapesurface/Plot3D.js diff --git a/j2s/J/shapesurface/Pmesh.js b/assets/compressed_sensing_2018/j2s/J/shapesurface/Pmesh.js similarity index 100% rename from j2s/J/shapesurface/Pmesh.js rename to assets/compressed_sensing_2018/j2s/J/shapesurface/Pmesh.js diff --git a/j2s/J/thread/AnimationThread.js b/assets/compressed_sensing_2018/j2s/J/thread/AnimationThread.js similarity index 100% rename from j2s/J/thread/AnimationThread.js rename to assets/compressed_sensing_2018/j2s/J/thread/AnimationThread.js diff --git a/j2s/J/thread/HoverWatcherThread.js b/assets/compressed_sensing_2018/j2s/J/thread/HoverWatcherThread.js similarity index 100% rename from j2s/J/thread/HoverWatcherThread.js rename to assets/compressed_sensing_2018/j2s/J/thread/HoverWatcherThread.js diff --git a/j2s/J/thread/JmolThread.js b/assets/compressed_sensing_2018/j2s/J/thread/JmolThread.js similarity index 100% rename from j2s/J/thread/JmolThread.js rename to assets/compressed_sensing_2018/j2s/J/thread/JmolThread.js diff --git a/j2s/J/thread/MoveToThread.js b/assets/compressed_sensing_2018/j2s/J/thread/MoveToThread.js similarity index 100% rename from j2s/J/thread/MoveToThread.js rename to assets/compressed_sensing_2018/j2s/J/thread/MoveToThread.js diff --git a/j2s/J/thread/SpinThread.js b/assets/compressed_sensing_2018/j2s/J/thread/SpinThread.js similarity index 100% rename from j2s/J/thread/SpinThread.js rename to assets/compressed_sensing_2018/j2s/J/thread/SpinThread.js diff --git a/j2s/J/thread/TimeoutThread.js b/assets/compressed_sensing_2018/j2s/J/thread/TimeoutThread.js similarity index 100% rename from j2s/J/thread/TimeoutThread.js rename to assets/compressed_sensing_2018/j2s/J/thread/TimeoutThread.js diff --git a/j2s/J/thread/VibrationThread.js b/assets/compressed_sensing_2018/j2s/J/thread/VibrationThread.js similarity index 100% rename from j2s/J/thread/VibrationThread.js rename to assets/compressed_sensing_2018/j2s/J/thread/VibrationThread.js diff --git a/j2s/JM/AlphaMonomer.js b/assets/compressed_sensing_2018/j2s/JM/AlphaMonomer.js similarity index 100% rename from j2s/JM/AlphaMonomer.js rename to assets/compressed_sensing_2018/j2s/JM/AlphaMonomer.js diff --git a/j2s/JM/AlphaPolymer.js b/assets/compressed_sensing_2018/j2s/JM/AlphaPolymer.js similarity index 100% rename from j2s/JM/AlphaPolymer.js rename to assets/compressed_sensing_2018/j2s/JM/AlphaPolymer.js diff --git a/j2s/JM/AminoMonomer.js b/assets/compressed_sensing_2018/j2s/JM/AminoMonomer.js similarity index 100% rename from j2s/JM/AminoMonomer.js rename to assets/compressed_sensing_2018/j2s/JM/AminoMonomer.js diff --git a/j2s/JM/AminoPolymer.js b/assets/compressed_sensing_2018/j2s/JM/AminoPolymer.js similarity index 100% rename from j2s/JM/AminoPolymer.js rename to assets/compressed_sensing_2018/j2s/JM/AminoPolymer.js diff --git a/j2s/JM/Annotation.js b/assets/compressed_sensing_2018/j2s/JM/Annotation.js similarity index 100% rename from j2s/JM/Annotation.js rename to assets/compressed_sensing_2018/j2s/JM/Annotation.js diff --git a/j2s/JM/Atom.js b/assets/compressed_sensing_2018/j2s/JM/Atom.js similarity index 100% rename from j2s/JM/Atom.js rename to assets/compressed_sensing_2018/j2s/JM/Atom.js diff --git a/j2s/JM/AtomCollection.js b/assets/compressed_sensing_2018/j2s/JM/AtomCollection.js similarity index 100% rename from j2s/JM/AtomCollection.js rename to assets/compressed_sensing_2018/j2s/JM/AtomCollection.js diff --git a/j2s/JM/AtomIteratorWithinModel.js b/assets/compressed_sensing_2018/j2s/JM/AtomIteratorWithinModel.js similarity index 100% rename from j2s/JM/AtomIteratorWithinModel.js rename to assets/compressed_sensing_2018/j2s/JM/AtomIteratorWithinModel.js diff --git a/j2s/JM/AtomIteratorWithinModelSet.js b/assets/compressed_sensing_2018/j2s/JM/AtomIteratorWithinModelSet.js similarity index 100% rename from j2s/JM/AtomIteratorWithinModelSet.js rename to assets/compressed_sensing_2018/j2s/JM/AtomIteratorWithinModelSet.js diff --git a/j2s/JM/BasePair.js b/assets/compressed_sensing_2018/j2s/JM/BasePair.js similarity index 100% rename from j2s/JM/BasePair.js rename to assets/compressed_sensing_2018/j2s/JM/BasePair.js diff --git a/j2s/JM/BioExt.js b/assets/compressed_sensing_2018/j2s/JM/BioExt.js similarity index 100% rename from j2s/JM/BioExt.js rename to assets/compressed_sensing_2018/j2s/JM/BioExt.js diff --git a/j2s/JM/BioModel.js b/assets/compressed_sensing_2018/j2s/JM/BioModel.js similarity index 100% rename from j2s/JM/BioModel.js rename to assets/compressed_sensing_2018/j2s/JM/BioModel.js diff --git a/j2s/JM/BioModelSet.js b/assets/compressed_sensing_2018/j2s/JM/BioModelSet.js similarity index 100% rename from j2s/JM/BioModelSet.js rename to assets/compressed_sensing_2018/j2s/JM/BioModelSet.js diff --git a/j2s/JM/BioPolymer.js b/assets/compressed_sensing_2018/j2s/JM/BioPolymer.js similarity index 100% rename from j2s/JM/BioPolymer.js rename to assets/compressed_sensing_2018/j2s/JM/BioPolymer.js diff --git a/j2s/JM/BioResolver.js b/assets/compressed_sensing_2018/j2s/JM/BioResolver.js similarity index 100% rename from j2s/JM/BioResolver.js rename to assets/compressed_sensing_2018/j2s/JM/BioResolver.js diff --git a/j2s/JM/Bond.js b/assets/compressed_sensing_2018/j2s/JM/Bond.js similarity index 100% rename from j2s/JM/Bond.js rename to assets/compressed_sensing_2018/j2s/JM/Bond.js diff --git a/j2s/JM/BondCollection.js b/assets/compressed_sensing_2018/j2s/JM/BondCollection.js similarity index 100% rename from j2s/JM/BondCollection.js rename to assets/compressed_sensing_2018/j2s/JM/BondCollection.js diff --git a/j2s/JM/BondIterator.js b/assets/compressed_sensing_2018/j2s/JM/BondIterator.js similarity index 100% rename from j2s/JM/BondIterator.js rename to assets/compressed_sensing_2018/j2s/JM/BondIterator.js diff --git a/j2s/JM/BondIteratorSelected.js b/assets/compressed_sensing_2018/j2s/JM/BondIteratorSelected.js similarity index 100% rename from j2s/JM/BondIteratorSelected.js rename to assets/compressed_sensing_2018/j2s/JM/BondIteratorSelected.js diff --git a/j2s/JM/BondSet.js b/assets/compressed_sensing_2018/j2s/JM/BondSet.js similarity index 100% rename from j2s/JM/BondSet.js rename to assets/compressed_sensing_2018/j2s/JM/BondSet.js diff --git a/j2s/JM/CarbohydrateMonomer.js b/assets/compressed_sensing_2018/j2s/JM/CarbohydrateMonomer.js similarity index 100% rename from j2s/JM/CarbohydrateMonomer.js rename to assets/compressed_sensing_2018/j2s/JM/CarbohydrateMonomer.js diff --git a/j2s/JM/CarbohydratePolymer.js b/assets/compressed_sensing_2018/j2s/JM/CarbohydratePolymer.js similarity index 100% rename from j2s/JM/CarbohydratePolymer.js rename to assets/compressed_sensing_2018/j2s/JM/CarbohydratePolymer.js diff --git a/j2s/JM/Chain.js b/assets/compressed_sensing_2018/j2s/JM/Chain.js similarity index 100% rename from j2s/JM/Chain.js rename to assets/compressed_sensing_2018/j2s/JM/Chain.js diff --git a/j2s/JM/FF/AtomType.js b/assets/compressed_sensing_2018/j2s/JM/FF/AtomType.js similarity index 100% rename from j2s/JM/FF/AtomType.js rename to assets/compressed_sensing_2018/j2s/JM/FF/AtomType.js diff --git a/j2s/JM/FF/Calculation.js b/assets/compressed_sensing_2018/j2s/JM/FF/Calculation.js similarity index 100% rename from j2s/JM/FF/Calculation.js rename to assets/compressed_sensing_2018/j2s/JM/FF/Calculation.js diff --git a/j2s/JM/FF/Calculations.js b/assets/compressed_sensing_2018/j2s/JM/FF/Calculations.js similarity index 100% rename from j2s/JM/FF/Calculations.js rename to assets/compressed_sensing_2018/j2s/JM/FF/Calculations.js diff --git a/j2s/JM/FF/CalculationsMMFF.js b/assets/compressed_sensing_2018/j2s/JM/FF/CalculationsMMFF.js similarity index 100% rename from j2s/JM/FF/CalculationsMMFF.js rename to assets/compressed_sensing_2018/j2s/JM/FF/CalculationsMMFF.js diff --git a/j2s/JM/FF/CalculationsUFF.js b/assets/compressed_sensing_2018/j2s/JM/FF/CalculationsUFF.js similarity index 100% rename from j2s/JM/FF/CalculationsUFF.js rename to assets/compressed_sensing_2018/j2s/JM/FF/CalculationsUFF.js diff --git a/j2s/JM/FF/FFParam.js b/assets/compressed_sensing_2018/j2s/JM/FF/FFParam.js similarity index 100% rename from j2s/JM/FF/FFParam.js rename to assets/compressed_sensing_2018/j2s/JM/FF/FFParam.js diff --git a/j2s/JM/FF/ForceField.js b/assets/compressed_sensing_2018/j2s/JM/FF/ForceField.js similarity index 100% rename from j2s/JM/FF/ForceField.js rename to assets/compressed_sensing_2018/j2s/JM/FF/ForceField.js diff --git a/j2s/JM/FF/ForceFieldMMFF.js b/assets/compressed_sensing_2018/j2s/JM/FF/ForceFieldMMFF.js similarity index 100% rename from j2s/JM/FF/ForceFieldMMFF.js rename to assets/compressed_sensing_2018/j2s/JM/FF/ForceFieldMMFF.js diff --git a/j2s/JM/FF/ForceFieldUFF.js b/assets/compressed_sensing_2018/j2s/JM/FF/ForceFieldUFF.js similarity index 100% rename from j2s/JM/FF/ForceFieldUFF.js rename to assets/compressed_sensing_2018/j2s/JM/FF/ForceFieldUFF.js diff --git a/j2s/JM/FF/MMFFAngleCalc.js b/assets/compressed_sensing_2018/j2s/JM/FF/MMFFAngleCalc.js similarity index 100% rename from j2s/JM/FF/MMFFAngleCalc.js rename to assets/compressed_sensing_2018/j2s/JM/FF/MMFFAngleCalc.js diff --git a/j2s/JM/FF/MMFFDistanceCalc.js b/assets/compressed_sensing_2018/j2s/JM/FF/MMFFDistanceCalc.js similarity index 100% rename from j2s/JM/FF/MMFFDistanceCalc.js rename to assets/compressed_sensing_2018/j2s/JM/FF/MMFFDistanceCalc.js diff --git a/j2s/JM/FF/MMFFESCalc.js b/assets/compressed_sensing_2018/j2s/JM/FF/MMFFESCalc.js similarity index 100% rename from j2s/JM/FF/MMFFESCalc.js rename to assets/compressed_sensing_2018/j2s/JM/FF/MMFFESCalc.js diff --git a/j2s/JM/FF/MMFFOOPCalc.js b/assets/compressed_sensing_2018/j2s/JM/FF/MMFFOOPCalc.js similarity index 100% rename from j2s/JM/FF/MMFFOOPCalc.js rename to assets/compressed_sensing_2018/j2s/JM/FF/MMFFOOPCalc.js diff --git a/j2s/JM/FF/MMFFSBCalc.js b/assets/compressed_sensing_2018/j2s/JM/FF/MMFFSBCalc.js similarity index 100% rename from j2s/JM/FF/MMFFSBCalc.js rename to assets/compressed_sensing_2018/j2s/JM/FF/MMFFSBCalc.js diff --git a/j2s/JM/FF/MMFFTorsionCalc.js b/assets/compressed_sensing_2018/j2s/JM/FF/MMFFTorsionCalc.js similarity index 100% rename from j2s/JM/FF/MMFFTorsionCalc.js rename to assets/compressed_sensing_2018/j2s/JM/FF/MMFFTorsionCalc.js diff --git a/j2s/JM/FF/MMFFVDWCalc.js b/assets/compressed_sensing_2018/j2s/JM/FF/MMFFVDWCalc.js similarity index 100% rename from j2s/JM/FF/MMFFVDWCalc.js rename to assets/compressed_sensing_2018/j2s/JM/FF/MMFFVDWCalc.js diff --git a/j2s/JM/FF/UFFAngleCalc.js b/assets/compressed_sensing_2018/j2s/JM/FF/UFFAngleCalc.js similarity index 100% rename from j2s/JM/FF/UFFAngleCalc.js rename to assets/compressed_sensing_2018/j2s/JM/FF/UFFAngleCalc.js diff --git a/j2s/JM/FF/UFFDistanceCalc.js b/assets/compressed_sensing_2018/j2s/JM/FF/UFFDistanceCalc.js similarity index 100% rename from j2s/JM/FF/UFFDistanceCalc.js rename to assets/compressed_sensing_2018/j2s/JM/FF/UFFDistanceCalc.js diff --git a/j2s/JM/FF/UFFOOPCalc.js b/assets/compressed_sensing_2018/j2s/JM/FF/UFFOOPCalc.js similarity index 100% rename from j2s/JM/FF/UFFOOPCalc.js rename to assets/compressed_sensing_2018/j2s/JM/FF/UFFOOPCalc.js diff --git a/j2s/JM/FF/UFFTorsionCalc.js b/assets/compressed_sensing_2018/j2s/JM/FF/UFFTorsionCalc.js similarity index 100% rename from j2s/JM/FF/UFFTorsionCalc.js rename to assets/compressed_sensing_2018/j2s/JM/FF/UFFTorsionCalc.js diff --git a/j2s/JM/FF/UFFVDWCalc.js b/assets/compressed_sensing_2018/j2s/JM/FF/UFFVDWCalc.js similarity index 100% rename from j2s/JM/FF/UFFVDWCalc.js rename to assets/compressed_sensing_2018/j2s/JM/FF/UFFVDWCalc.js diff --git a/j2s/JM/FF/data/MMFF94-smarts.txt b/assets/compressed_sensing_2018/j2s/JM/FF/data/MMFF94-smarts.txt similarity index 100% rename from j2s/JM/FF/data/MMFF94-smarts.txt rename to assets/compressed_sensing_2018/j2s/JM/FF/data/MMFF94-smarts.txt diff --git a/j2s/JM/FF/data/UFF.txt b/assets/compressed_sensing_2018/j2s/JM/FF/data/UFF.txt similarity index 100% rename from j2s/JM/FF/data/UFF.txt rename to assets/compressed_sensing_2018/j2s/JM/FF/data/UFF.txt diff --git a/j2s/JM/FF/data/mmff94.par.txt b/assets/compressed_sensing_2018/j2s/JM/FF/data/mmff94.par.txt similarity index 100% rename from j2s/JM/FF/data/mmff94.par.txt rename to assets/compressed_sensing_2018/j2s/JM/FF/data/mmff94.par.txt diff --git a/j2s/JM/Group.js b/assets/compressed_sensing_2018/j2s/JM/Group.js similarity index 100% rename from j2s/JM/Group.js rename to assets/compressed_sensing_2018/j2s/JM/Group.js diff --git a/j2s/JM/HBond.js b/assets/compressed_sensing_2018/j2s/JM/HBond.js similarity index 100% rename from j2s/JM/HBond.js rename to assets/compressed_sensing_2018/j2s/JM/HBond.js diff --git a/j2s/JM/Helix.js b/assets/compressed_sensing_2018/j2s/JM/Helix.js similarity index 100% rename from j2s/JM/Helix.js rename to assets/compressed_sensing_2018/j2s/JM/Helix.js diff --git a/j2s/JM/LabelToken.js b/assets/compressed_sensing_2018/j2s/JM/LabelToken.js similarity index 100% rename from j2s/JM/LabelToken.js rename to assets/compressed_sensing_2018/j2s/JM/LabelToken.js diff --git a/j2s/JM/Measurement.js b/assets/compressed_sensing_2018/j2s/JM/Measurement.js similarity index 100% rename from j2s/JM/Measurement.js rename to assets/compressed_sensing_2018/j2s/JM/Measurement.js diff --git a/j2s/JM/MeasurementData.js b/assets/compressed_sensing_2018/j2s/JM/MeasurementData.js similarity index 100% rename from j2s/JM/MeasurementData.js rename to assets/compressed_sensing_2018/j2s/JM/MeasurementData.js diff --git a/j2s/JM/MeasurementPending.js b/assets/compressed_sensing_2018/j2s/JM/MeasurementPending.js similarity index 100% rename from j2s/JM/MeasurementPending.js rename to assets/compressed_sensing_2018/j2s/JM/MeasurementPending.js diff --git a/j2s/JM/MinAngle.js b/assets/compressed_sensing_2018/j2s/JM/MinAngle.js similarity index 100% rename from j2s/JM/MinAngle.js rename to assets/compressed_sensing_2018/j2s/JM/MinAngle.js diff --git a/j2s/JM/MinAtom.js b/assets/compressed_sensing_2018/j2s/JM/MinAtom.js similarity index 100% rename from j2s/JM/MinAtom.js rename to assets/compressed_sensing_2018/j2s/JM/MinAtom.js diff --git a/j2s/JM/MinBond.js b/assets/compressed_sensing_2018/j2s/JM/MinBond.js similarity index 100% rename from j2s/JM/MinBond.js rename to assets/compressed_sensing_2018/j2s/JM/MinBond.js diff --git a/j2s/JM/MinObject.js b/assets/compressed_sensing_2018/j2s/JM/MinObject.js similarity index 100% rename from j2s/JM/MinObject.js rename to assets/compressed_sensing_2018/j2s/JM/MinObject.js diff --git a/j2s/JM/MinPosition.js b/assets/compressed_sensing_2018/j2s/JM/MinPosition.js similarity index 100% rename from j2s/JM/MinPosition.js rename to assets/compressed_sensing_2018/j2s/JM/MinPosition.js diff --git a/j2s/JM/MinTorsion.js b/assets/compressed_sensing_2018/j2s/JM/MinTorsion.js similarity index 100% rename from j2s/JM/MinTorsion.js rename to assets/compressed_sensing_2018/j2s/JM/MinTorsion.js diff --git a/j2s/JM/MinimizationThread.js b/assets/compressed_sensing_2018/j2s/JM/MinimizationThread.js similarity index 100% rename from j2s/JM/MinimizationThread.js rename to assets/compressed_sensing_2018/j2s/JM/MinimizationThread.js diff --git a/j2s/JM/Minimizer.js b/assets/compressed_sensing_2018/j2s/JM/Minimizer.js similarity index 100% rename from j2s/JM/Minimizer.js rename to assets/compressed_sensing_2018/j2s/JM/Minimizer.js diff --git a/j2s/JM/Model.js b/assets/compressed_sensing_2018/j2s/JM/Model.js similarity index 100% rename from j2s/JM/Model.js rename to assets/compressed_sensing_2018/j2s/JM/Model.js diff --git a/j2s/JM/ModelLoader.js b/assets/compressed_sensing_2018/j2s/JM/ModelLoader.js similarity index 100% rename from j2s/JM/ModelLoader.js rename to assets/compressed_sensing_2018/j2s/JM/ModelLoader.js diff --git a/j2s/JM/ModelSet.js b/assets/compressed_sensing_2018/j2s/JM/ModelSet.js similarity index 100% rename from j2s/JM/ModelSet.js rename to assets/compressed_sensing_2018/j2s/JM/ModelSet.js diff --git a/j2s/JM/Monomer.js b/assets/compressed_sensing_2018/j2s/JM/Monomer.js similarity index 100% rename from j2s/JM/Monomer.js rename to assets/compressed_sensing_2018/j2s/JM/Monomer.js diff --git a/j2s/JM/NucleicMonomer.js b/assets/compressed_sensing_2018/j2s/JM/NucleicMonomer.js similarity index 100% rename from j2s/JM/NucleicMonomer.js rename to assets/compressed_sensing_2018/j2s/JM/NucleicMonomer.js diff --git a/j2s/JM/NucleicPolymer.js b/assets/compressed_sensing_2018/j2s/JM/NucleicPolymer.js similarity index 100% rename from j2s/JM/NucleicPolymer.js rename to assets/compressed_sensing_2018/j2s/JM/NucleicPolymer.js diff --git a/j2s/JM/Orientation.js b/assets/compressed_sensing_2018/j2s/JM/Orientation.js similarity index 100% rename from j2s/JM/Orientation.js rename to assets/compressed_sensing_2018/j2s/JM/Orientation.js diff --git a/j2s/JM/PhosphorusMonomer.js b/assets/compressed_sensing_2018/j2s/JM/PhosphorusMonomer.js similarity index 100% rename from j2s/JM/PhosphorusMonomer.js rename to assets/compressed_sensing_2018/j2s/JM/PhosphorusMonomer.js diff --git a/j2s/JM/PhosphorusPolymer.js b/assets/compressed_sensing_2018/j2s/JM/PhosphorusPolymer.js similarity index 100% rename from j2s/JM/PhosphorusPolymer.js rename to assets/compressed_sensing_2018/j2s/JM/PhosphorusPolymer.js diff --git a/j2s/JM/ProteinStructure.js b/assets/compressed_sensing_2018/j2s/JM/ProteinStructure.js similarity index 100% rename from j2s/JM/ProteinStructure.js rename to assets/compressed_sensing_2018/j2s/JM/ProteinStructure.js diff --git a/j2s/JM/Sheet.js b/assets/compressed_sensing_2018/j2s/JM/Sheet.js similarity index 100% rename from j2s/JM/Sheet.js rename to assets/compressed_sensing_2018/j2s/JM/Sheet.js diff --git a/j2s/JM/StateScript.js b/assets/compressed_sensing_2018/j2s/JM/StateScript.js similarity index 100% rename from j2s/JM/StateScript.js rename to assets/compressed_sensing_2018/j2s/JM/StateScript.js diff --git a/j2s/JM/Structure.js b/assets/compressed_sensing_2018/j2s/JM/Structure.js similarity index 100% rename from j2s/JM/Structure.js rename to assets/compressed_sensing_2018/j2s/JM/Structure.js diff --git a/j2s/JM/Text.js b/assets/compressed_sensing_2018/j2s/JM/Text.js similarity index 100% rename from j2s/JM/Text.js rename to assets/compressed_sensing_2018/j2s/JM/Text.js diff --git a/j2s/JM/TickInfo.js b/assets/compressed_sensing_2018/j2s/JM/TickInfo.js similarity index 100% rename from j2s/JM/TickInfo.js rename to assets/compressed_sensing_2018/j2s/JM/TickInfo.js diff --git a/j2s/JM/Trajectory.js b/assets/compressed_sensing_2018/j2s/JM/Trajectory.js similarity index 100% rename from j2s/JM/Trajectory.js rename to assets/compressed_sensing_2018/j2s/JM/Trajectory.js diff --git a/j2s/JM/Turn.js b/assets/compressed_sensing_2018/j2s/JM/Turn.js similarity index 100% rename from j2s/JM/Turn.js rename to assets/compressed_sensing_2018/j2s/JM/Turn.js diff --git a/j2s/JM/Util.js b/assets/compressed_sensing_2018/j2s/JM/Util.js similarity index 100% rename from j2s/JM/Util.js rename to assets/compressed_sensing_2018/j2s/JM/Util.js diff --git a/j2s/JS/CIPChirality.js b/assets/compressed_sensing_2018/j2s/JS/CIPChirality.js similarity index 100% rename from j2s/JS/CIPChirality.js rename to assets/compressed_sensing_2018/j2s/JS/CIPChirality.js diff --git a/j2s/JS/CIPData.js b/assets/compressed_sensing_2018/j2s/JS/CIPData.js similarity index 100% rename from j2s/JS/CIPData.js rename to assets/compressed_sensing_2018/j2s/JS/CIPData.js diff --git a/j2s/JS/CIPDataSmiles.js b/assets/compressed_sensing_2018/j2s/JS/CIPDataSmiles.js similarity index 100% rename from j2s/JS/CIPDataSmiles.js rename to assets/compressed_sensing_2018/j2s/JS/CIPDataSmiles.js diff --git a/j2s/JS/CIPDataTracker.js b/assets/compressed_sensing_2018/j2s/JS/CIPDataTracker.js similarity index 100% rename from j2s/JS/CIPDataTracker.js rename to assets/compressed_sensing_2018/j2s/JS/CIPDataTracker.js diff --git a/j2s/JS/CmdExt.js b/assets/compressed_sensing_2018/j2s/JS/CmdExt.js similarity index 100% rename from j2s/JS/CmdExt.js rename to assets/compressed_sensing_2018/j2s/JS/CmdExt.js diff --git a/j2s/JS/CommandWatcherThread.js b/assets/compressed_sensing_2018/j2s/JS/CommandWatcherThread.js similarity index 100% rename from j2s/JS/CommandWatcherThread.js rename to assets/compressed_sensing_2018/j2s/JS/CommandWatcherThread.js diff --git a/j2s/JS/ContextToken.js b/assets/compressed_sensing_2018/j2s/JS/ContextToken.js similarity index 100% rename from j2s/JS/ContextToken.js rename to assets/compressed_sensing_2018/j2s/JS/ContextToken.js diff --git a/j2s/JS/FileLoadThread.js b/assets/compressed_sensing_2018/j2s/JS/FileLoadThread.js similarity index 100% rename from j2s/JS/FileLoadThread.js rename to assets/compressed_sensing_2018/j2s/JS/FileLoadThread.js diff --git a/j2s/JS/HallInfo.js b/assets/compressed_sensing_2018/j2s/JS/HallInfo.js similarity index 100% rename from j2s/JS/HallInfo.js rename to assets/compressed_sensing_2018/j2s/JS/HallInfo.js diff --git a/j2s/JS/HallRotation.js b/assets/compressed_sensing_2018/j2s/JS/HallRotation.js similarity index 100% rename from j2s/JS/HallRotation.js rename to assets/compressed_sensing_2018/j2s/JS/HallRotation.js diff --git a/j2s/JS/HallRotationTerm.js b/assets/compressed_sensing_2018/j2s/JS/HallRotationTerm.js similarity index 100% rename from j2s/JS/HallRotationTerm.js rename to assets/compressed_sensing_2018/j2s/JS/HallRotationTerm.js diff --git a/j2s/JS/HallTranslation.js b/assets/compressed_sensing_2018/j2s/JS/HallTranslation.js similarity index 100% rename from j2s/JS/HallTranslation.js rename to assets/compressed_sensing_2018/j2s/JS/HallTranslation.js diff --git a/j2s/JS/InvalidSmilesException.js b/assets/compressed_sensing_2018/j2s/JS/InvalidSmilesException.js similarity index 100% rename from j2s/JS/InvalidSmilesException.js rename to assets/compressed_sensing_2018/j2s/JS/InvalidSmilesException.js diff --git a/j2s/JS/IsoExt.js b/assets/compressed_sensing_2018/j2s/JS/IsoExt.js similarity index 100% rename from j2s/JS/IsoExt.js rename to assets/compressed_sensing_2018/j2s/JS/IsoExt.js diff --git a/j2s/JS/MathExt.js b/assets/compressed_sensing_2018/j2s/JS/MathExt.js similarity index 100% rename from j2s/JS/MathExt.js rename to assets/compressed_sensing_2018/j2s/JS/MathExt.js diff --git a/j2s/JS/PointGroup.js b/assets/compressed_sensing_2018/j2s/JS/PointGroup.js similarity index 100% rename from j2s/JS/PointGroup.js rename to assets/compressed_sensing_2018/j2s/JS/PointGroup.js diff --git a/j2s/JS/PolyhedronStereoSorter.js b/assets/compressed_sensing_2018/j2s/JS/PolyhedronStereoSorter.js similarity index 100% rename from j2s/JS/PolyhedronStereoSorter.js rename to assets/compressed_sensing_2018/j2s/JS/PolyhedronStereoSorter.js diff --git a/j2s/JS/SV.js b/assets/compressed_sensing_2018/j2s/JS/SV.js similarity index 100% rename from j2s/JS/SV.js rename to assets/compressed_sensing_2018/j2s/JS/SV.js diff --git a/j2s/JS/ScriptCompiler.js b/assets/compressed_sensing_2018/j2s/JS/ScriptCompiler.js similarity index 100% rename from j2s/JS/ScriptCompiler.js rename to assets/compressed_sensing_2018/j2s/JS/ScriptCompiler.js diff --git a/j2s/JS/ScriptContext.js b/assets/compressed_sensing_2018/j2s/JS/ScriptContext.js similarity index 100% rename from j2s/JS/ScriptContext.js rename to assets/compressed_sensing_2018/j2s/JS/ScriptContext.js diff --git a/j2s/JS/ScriptDelayThread.js b/assets/compressed_sensing_2018/j2s/JS/ScriptDelayThread.js similarity index 100% rename from j2s/JS/ScriptDelayThread.js rename to assets/compressed_sensing_2018/j2s/JS/ScriptDelayThread.js diff --git a/j2s/JS/ScriptError.js b/assets/compressed_sensing_2018/j2s/JS/ScriptError.js similarity index 100% rename from j2s/JS/ScriptError.js rename to assets/compressed_sensing_2018/j2s/JS/ScriptError.js diff --git a/j2s/JS/ScriptEval.js b/assets/compressed_sensing_2018/j2s/JS/ScriptEval.js similarity index 100% rename from j2s/JS/ScriptEval.js rename to assets/compressed_sensing_2018/j2s/JS/ScriptEval.js diff --git a/j2s/JS/ScriptException.js b/assets/compressed_sensing_2018/j2s/JS/ScriptException.js similarity index 100% rename from j2s/JS/ScriptException.js rename to assets/compressed_sensing_2018/j2s/JS/ScriptException.js diff --git a/j2s/JS/ScriptExpr.js b/assets/compressed_sensing_2018/j2s/JS/ScriptExpr.js similarity index 100% rename from j2s/JS/ScriptExpr.js rename to assets/compressed_sensing_2018/j2s/JS/ScriptExpr.js diff --git a/j2s/JS/ScriptExt.js b/assets/compressed_sensing_2018/j2s/JS/ScriptExt.js similarity index 100% rename from j2s/JS/ScriptExt.js rename to assets/compressed_sensing_2018/j2s/JS/ScriptExt.js diff --git a/j2s/JS/ScriptFlowContext.js b/assets/compressed_sensing_2018/j2s/JS/ScriptFlowContext.js similarity index 100% rename from j2s/JS/ScriptFlowContext.js rename to assets/compressed_sensing_2018/j2s/JS/ScriptFlowContext.js diff --git a/j2s/JS/ScriptFunction.js b/assets/compressed_sensing_2018/j2s/JS/ScriptFunction.js similarity index 100% rename from j2s/JS/ScriptFunction.js rename to assets/compressed_sensing_2018/j2s/JS/ScriptFunction.js diff --git a/j2s/JS/ScriptInterruption.js b/assets/compressed_sensing_2018/j2s/JS/ScriptInterruption.js similarity index 100% rename from j2s/JS/ScriptInterruption.js rename to assets/compressed_sensing_2018/j2s/JS/ScriptInterruption.js diff --git a/j2s/JS/ScriptManager.js b/assets/compressed_sensing_2018/j2s/JS/ScriptManager.js similarity index 100% rename from j2s/JS/ScriptManager.js rename to assets/compressed_sensing_2018/j2s/JS/ScriptManager.js diff --git a/j2s/JS/ScriptMathProcessor.js b/assets/compressed_sensing_2018/j2s/JS/ScriptMathProcessor.js similarity index 100% rename from j2s/JS/ScriptMathProcessor.js rename to assets/compressed_sensing_2018/j2s/JS/ScriptMathProcessor.js diff --git a/j2s/JS/ScriptParallelProcessor.js b/assets/compressed_sensing_2018/j2s/JS/ScriptParallelProcessor.js similarity index 100% rename from j2s/JS/ScriptParallelProcessor.js rename to assets/compressed_sensing_2018/j2s/JS/ScriptParallelProcessor.js diff --git a/j2s/JS/ScriptParam.js b/assets/compressed_sensing_2018/j2s/JS/ScriptParam.js similarity index 100% rename from j2s/JS/ScriptParam.js rename to assets/compressed_sensing_2018/j2s/JS/ScriptParam.js diff --git a/j2s/JS/ScriptProcess.js b/assets/compressed_sensing_2018/j2s/JS/ScriptProcess.js similarity index 100% rename from j2s/JS/ScriptProcess.js rename to assets/compressed_sensing_2018/j2s/JS/ScriptProcess.js diff --git a/j2s/JS/ScriptProcessRunnable.js b/assets/compressed_sensing_2018/j2s/JS/ScriptProcessRunnable.js similarity index 100% rename from j2s/JS/ScriptProcessRunnable.js rename to assets/compressed_sensing_2018/j2s/JS/ScriptProcessRunnable.js diff --git a/j2s/JS/ScriptQueueThread.js b/assets/compressed_sensing_2018/j2s/JS/ScriptQueueThread.js similarity index 100% rename from j2s/JS/ScriptQueueThread.js rename to assets/compressed_sensing_2018/j2s/JS/ScriptQueueThread.js diff --git a/j2s/JS/ScriptTokenParser.js b/assets/compressed_sensing_2018/j2s/JS/ScriptTokenParser.js similarity index 100% rename from j2s/JS/ScriptTokenParser.js rename to assets/compressed_sensing_2018/j2s/JS/ScriptTokenParser.js diff --git a/j2s/JS/SmilesAromatic.js b/assets/compressed_sensing_2018/j2s/JS/SmilesAromatic.js similarity index 100% rename from j2s/JS/SmilesAromatic.js rename to assets/compressed_sensing_2018/j2s/JS/SmilesAromatic.js diff --git a/j2s/JS/SmilesAtom.js b/assets/compressed_sensing_2018/j2s/JS/SmilesAtom.js similarity index 100% rename from j2s/JS/SmilesAtom.js rename to assets/compressed_sensing_2018/j2s/JS/SmilesAtom.js diff --git a/j2s/JS/SmilesBond.js b/assets/compressed_sensing_2018/j2s/JS/SmilesBond.js similarity index 100% rename from j2s/JS/SmilesBond.js rename to assets/compressed_sensing_2018/j2s/JS/SmilesBond.js diff --git a/j2s/JS/SmilesExt.js b/assets/compressed_sensing_2018/j2s/JS/SmilesExt.js similarity index 100% rename from j2s/JS/SmilesExt.js rename to assets/compressed_sensing_2018/j2s/JS/SmilesExt.js diff --git a/j2s/JS/SmilesGenerator.js b/assets/compressed_sensing_2018/j2s/JS/SmilesGenerator.js similarity index 100% rename from j2s/JS/SmilesGenerator.js rename to assets/compressed_sensing_2018/j2s/JS/SmilesGenerator.js diff --git a/j2s/JS/SmilesMatcher.js b/assets/compressed_sensing_2018/j2s/JS/SmilesMatcher.js similarity index 100% rename from j2s/JS/SmilesMatcher.js rename to assets/compressed_sensing_2018/j2s/JS/SmilesMatcher.js diff --git a/j2s/JS/SmilesMeasure.js b/assets/compressed_sensing_2018/j2s/JS/SmilesMeasure.js similarity index 100% rename from j2s/JS/SmilesMeasure.js rename to assets/compressed_sensing_2018/j2s/JS/SmilesMeasure.js diff --git a/j2s/JS/SmilesParser.js b/assets/compressed_sensing_2018/j2s/JS/SmilesParser.js similarity index 100% rename from j2s/JS/SmilesParser.js rename to assets/compressed_sensing_2018/j2s/JS/SmilesParser.js diff --git a/j2s/JS/SmilesRing.js b/assets/compressed_sensing_2018/j2s/JS/SmilesRing.js similarity index 100% rename from j2s/JS/SmilesRing.js rename to assets/compressed_sensing_2018/j2s/JS/SmilesRing.js diff --git a/j2s/JS/SmilesRingSet.js b/assets/compressed_sensing_2018/j2s/JS/SmilesRingSet.js similarity index 100% rename from j2s/JS/SmilesRingSet.js rename to assets/compressed_sensing_2018/j2s/JS/SmilesRingSet.js diff --git a/j2s/JS/SmilesSearch.js b/assets/compressed_sensing_2018/j2s/JS/SmilesSearch.js similarity index 100% rename from j2s/JS/SmilesSearch.js rename to assets/compressed_sensing_2018/j2s/JS/SmilesSearch.js diff --git a/j2s/JS/SmilesStereo.js b/assets/compressed_sensing_2018/j2s/JS/SmilesStereo.js similarity index 100% rename from j2s/JS/SmilesStereo.js rename to assets/compressed_sensing_2018/j2s/JS/SmilesStereo.js diff --git a/j2s/JS/SpaceGroup.js b/assets/compressed_sensing_2018/j2s/JS/SpaceGroup.js similarity index 100% rename from j2s/JS/SpaceGroup.js rename to assets/compressed_sensing_2018/j2s/JS/SpaceGroup.js diff --git a/j2s/JS/Symmetry.js b/assets/compressed_sensing_2018/j2s/JS/Symmetry.js similarity index 100% rename from j2s/JS/Symmetry.js rename to assets/compressed_sensing_2018/j2s/JS/Symmetry.js diff --git a/j2s/JS/SymmetryDesc.js b/assets/compressed_sensing_2018/j2s/JS/SymmetryDesc.js similarity index 100% rename from j2s/JS/SymmetryDesc.js rename to assets/compressed_sensing_2018/j2s/JS/SymmetryDesc.js diff --git a/j2s/JS/SymmetryInfo.js b/assets/compressed_sensing_2018/j2s/JS/SymmetryInfo.js similarity index 100% rename from j2s/JS/SymmetryInfo.js rename to assets/compressed_sensing_2018/j2s/JS/SymmetryInfo.js diff --git a/j2s/JS/SymmetryOperation.js b/assets/compressed_sensing_2018/j2s/JS/SymmetryOperation.js similarity index 100% rename from j2s/JS/SymmetryOperation.js rename to assets/compressed_sensing_2018/j2s/JS/SymmetryOperation.js diff --git a/j2s/JS/T.js b/assets/compressed_sensing_2018/j2s/JS/T.js similarity index 100% rename from j2s/JS/T.js rename to assets/compressed_sensing_2018/j2s/JS/T.js diff --git a/j2s/JS/UnitCell.js b/assets/compressed_sensing_2018/j2s/JS/UnitCell.js similarity index 100% rename from j2s/JS/UnitCell.js rename to assets/compressed_sensing_2018/j2s/JS/UnitCell.js diff --git a/j2s/JS/UnitCellIterator.js b/assets/compressed_sensing_2018/j2s/JS/UnitCellIterator.js similarity index 100% rename from j2s/JS/UnitCellIterator.js rename to assets/compressed_sensing_2018/j2s/JS/UnitCellIterator.js diff --git a/j2s/JS/VTemp.js b/assets/compressed_sensing_2018/j2s/JS/VTemp.js similarity index 100% rename from j2s/JS/VTemp.js rename to assets/compressed_sensing_2018/j2s/JS/VTemp.js diff --git a/j2s/JSV/api/AnnotationData.js b/assets/compressed_sensing_2018/j2s/JSV/api/AnnotationData.js similarity index 100% rename from j2s/JSV/api/AnnotationData.js rename to assets/compressed_sensing_2018/j2s/JSV/api/AnnotationData.js diff --git a/j2s/JSV/api/AppletFrame.js b/assets/compressed_sensing_2018/j2s/JSV/api/AppletFrame.js similarity index 100% rename from j2s/JSV/api/AppletFrame.js rename to assets/compressed_sensing_2018/j2s/JSV/api/AppletFrame.js diff --git a/j2s/JSV/api/ExportInterface.js b/assets/compressed_sensing_2018/j2s/JSV/api/ExportInterface.js similarity index 100% rename from j2s/JSV/api/ExportInterface.js rename to assets/compressed_sensing_2018/j2s/JSV/api/ExportInterface.js diff --git a/j2s/JSV/api/JSVAppInterface.js b/assets/compressed_sensing_2018/j2s/JSV/api/JSVAppInterface.js similarity index 100% rename from j2s/JSV/api/JSVAppInterface.js rename to assets/compressed_sensing_2018/j2s/JSV/api/JSVAppInterface.js diff --git a/j2s/JSV/api/JSVAppletInterface.js b/assets/compressed_sensing_2018/j2s/JSV/api/JSVAppletInterface.js similarity index 100% rename from j2s/JSV/api/JSVAppletInterface.js rename to assets/compressed_sensing_2018/j2s/JSV/api/JSVAppletInterface.js diff --git a/j2s/JSV/api/JSVExporter.js b/assets/compressed_sensing_2018/j2s/JSV/api/JSVExporter.js similarity index 100% rename from j2s/JSV/api/JSVExporter.js rename to assets/compressed_sensing_2018/j2s/JSV/api/JSVExporter.js diff --git a/j2s/JSV/api/JSVFileDropper.js b/assets/compressed_sensing_2018/j2s/JSV/api/JSVFileDropper.js similarity index 100% rename from j2s/JSV/api/JSVFileDropper.js rename to assets/compressed_sensing_2018/j2s/JSV/api/JSVFileDropper.js diff --git a/j2s/JSV/api/JSVFileHelper.js b/assets/compressed_sensing_2018/j2s/JSV/api/JSVFileHelper.js similarity index 100% rename from j2s/JSV/api/JSVFileHelper.js rename to assets/compressed_sensing_2018/j2s/JSV/api/JSVFileHelper.js diff --git a/j2s/JSV/api/JSVMainPanel.js b/assets/compressed_sensing_2018/j2s/JSV/api/JSVMainPanel.js similarity index 100% rename from j2s/JSV/api/JSVMainPanel.js rename to assets/compressed_sensing_2018/j2s/JSV/api/JSVMainPanel.js diff --git a/j2s/JSV/api/JSVPanel.js b/assets/compressed_sensing_2018/j2s/JSV/api/JSVPanel.js similarity index 100% rename from j2s/JSV/api/JSVPanel.js rename to assets/compressed_sensing_2018/j2s/JSV/api/JSVPanel.js diff --git a/j2s/JSV/api/JSVPdfWriter.js b/assets/compressed_sensing_2018/j2s/JSV/api/JSVPdfWriter.js similarity index 100% rename from j2s/JSV/api/JSVPdfWriter.js rename to assets/compressed_sensing_2018/j2s/JSV/api/JSVPdfWriter.js diff --git a/j2s/JSV/api/JSVPopupMenu.js b/assets/compressed_sensing_2018/j2s/JSV/api/JSVPopupMenu.js similarity index 100% rename from j2s/JSV/api/JSVPopupMenu.js rename to assets/compressed_sensing_2018/j2s/JSV/api/JSVPopupMenu.js diff --git a/j2s/JSV/api/JSVPrintDialog.js b/assets/compressed_sensing_2018/j2s/JSV/api/JSVPrintDialog.js similarity index 100% rename from j2s/JSV/api/JSVPrintDialog.js rename to assets/compressed_sensing_2018/j2s/JSV/api/JSVPrintDialog.js diff --git a/j2s/JSV/api/JSVTree.js b/assets/compressed_sensing_2018/j2s/JSV/api/JSVTree.js similarity index 100% rename from j2s/JSV/api/JSVTree.js rename to assets/compressed_sensing_2018/j2s/JSV/api/JSVTree.js diff --git a/j2s/JSV/api/JSVTreeNode.js b/assets/compressed_sensing_2018/j2s/JSV/api/JSVTreeNode.js similarity index 100% rename from j2s/JSV/api/JSVTreeNode.js rename to assets/compressed_sensing_2018/j2s/JSV/api/JSVTreeNode.js diff --git a/j2s/JSV/api/JSVTreePath.js b/assets/compressed_sensing_2018/j2s/JSV/api/JSVTreePath.js similarity index 100% rename from j2s/JSV/api/JSVTreePath.js rename to assets/compressed_sensing_2018/j2s/JSV/api/JSVTreePath.js diff --git a/j2s/JSV/api/JSVViewPanel.js b/assets/compressed_sensing_2018/j2s/JSV/api/JSVViewPanel.js similarity index 100% rename from j2s/JSV/api/JSVViewPanel.js rename to assets/compressed_sensing_2018/j2s/JSV/api/JSVViewPanel.js diff --git a/j2s/JSV/api/JSVZipInterface.js b/assets/compressed_sensing_2018/j2s/JSV/api/JSVZipInterface.js similarity index 100% rename from j2s/JSV/api/JSVZipInterface.js rename to assets/compressed_sensing_2018/j2s/JSV/api/JSVZipInterface.js diff --git a/j2s/JSV/api/JSVZipReader.js b/assets/compressed_sensing_2018/j2s/JSV/api/JSVZipReader.js similarity index 100% rename from j2s/JSV/api/JSVZipReader.js rename to assets/compressed_sensing_2018/j2s/JSV/api/JSVZipReader.js diff --git a/j2s/JSV/api/PanelListener.js b/assets/compressed_sensing_2018/j2s/JSV/api/PanelListener.js similarity index 100% rename from j2s/JSV/api/PanelListener.js rename to assets/compressed_sensing_2018/j2s/JSV/api/PanelListener.js diff --git a/j2s/JSV/api/PlatformDialog.js b/assets/compressed_sensing_2018/j2s/JSV/api/PlatformDialog.js similarity index 100% rename from j2s/JSV/api/PlatformDialog.js rename to assets/compressed_sensing_2018/j2s/JSV/api/PlatformDialog.js diff --git a/j2s/JSV/api/ScriptInterface.js b/assets/compressed_sensing_2018/j2s/JSV/api/ScriptInterface.js similarity index 100% rename from j2s/JSV/api/ScriptInterface.js rename to assets/compressed_sensing_2018/j2s/JSV/api/ScriptInterface.js diff --git a/j2s/JSV/api/SourceReader.js b/assets/compressed_sensing_2018/j2s/JSV/api/SourceReader.js similarity index 100% rename from j2s/JSV/api/SourceReader.js rename to assets/compressed_sensing_2018/j2s/JSV/api/SourceReader.js diff --git a/j2s/JSV/api/VisibleInterface.js b/assets/compressed_sensing_2018/j2s/JSV/api/VisibleInterface.js similarity index 100% rename from j2s/JSV/api/VisibleInterface.js rename to assets/compressed_sensing_2018/j2s/JSV/api/VisibleInterface.js diff --git a/j2s/JSV/app/GenericMouse.js b/assets/compressed_sensing_2018/j2s/JSV/app/GenericMouse.js similarity index 100% rename from j2s/JSV/app/GenericMouse.js rename to assets/compressed_sensing_2018/j2s/JSV/app/GenericMouse.js diff --git a/j2s/JSV/app/JSVApp.js b/assets/compressed_sensing_2018/j2s/JSV/app/JSVApp.js similarity index 100% rename from j2s/JSV/app/JSVApp.js rename to assets/compressed_sensing_2018/j2s/JSV/app/JSVApp.js diff --git a/j2s/JSV/app/JSVAppPro.js b/assets/compressed_sensing_2018/j2s/JSV/app/JSVAppPro.js similarity index 100% rename from j2s/JSV/app/JSVAppPro.js rename to assets/compressed_sensing_2018/j2s/JSV/app/JSVAppPro.js diff --git a/j2s/JSV/appletjs/JSVApplet.js b/assets/compressed_sensing_2018/j2s/JSV/appletjs/JSVApplet.js similarity index 100% rename from j2s/JSV/appletjs/JSVApplet.js rename to assets/compressed_sensing_2018/j2s/JSV/appletjs/JSVApplet.js diff --git a/j2s/JSV/appletjs/JSVAppletPro.js b/assets/compressed_sensing_2018/j2s/JSV/appletjs/JSVAppletPro.js similarity index 100% rename from j2s/JSV/appletjs/JSVAppletPro.js rename to assets/compressed_sensing_2018/j2s/JSV/appletjs/JSVAppletPro.js diff --git a/j2s/JSV/common/Annotation.js b/assets/compressed_sensing_2018/j2s/JSV/common/Annotation.js similarity index 100% rename from j2s/JSV/common/Annotation.js rename to assets/compressed_sensing_2018/j2s/JSV/common/Annotation.js diff --git a/j2s/JSV/common/ColorParameters.js b/assets/compressed_sensing_2018/j2s/JSV/common/ColorParameters.js similarity index 100% rename from j2s/JSV/common/ColorParameters.js rename to assets/compressed_sensing_2018/j2s/JSV/common/ColorParameters.js diff --git a/j2s/JSV/common/ColoredAnnotation.js b/assets/compressed_sensing_2018/j2s/JSV/common/ColoredAnnotation.js similarity index 100% rename from j2s/JSV/common/ColoredAnnotation.js rename to assets/compressed_sensing_2018/j2s/JSV/common/ColoredAnnotation.js diff --git a/j2s/JSV/common/CoordComparator.js b/assets/compressed_sensing_2018/j2s/JSV/common/CoordComparator.js similarity index 100% rename from j2s/JSV/common/CoordComparator.js rename to assets/compressed_sensing_2018/j2s/JSV/common/CoordComparator.js diff --git a/j2s/JSV/common/Coordinate.js b/assets/compressed_sensing_2018/j2s/JSV/common/Coordinate.js similarity index 100% rename from j2s/JSV/common/Coordinate.js rename to assets/compressed_sensing_2018/j2s/JSV/common/Coordinate.js diff --git a/j2s/JSV/common/ExportType.js b/assets/compressed_sensing_2018/j2s/JSV/common/ExportType.js similarity index 100% rename from j2s/JSV/common/ExportType.js rename to assets/compressed_sensing_2018/j2s/JSV/common/ExportType.js diff --git a/j2s/JSV/common/GraphSet.js b/assets/compressed_sensing_2018/j2s/JSV/common/GraphSet.js similarity index 100% rename from j2s/JSV/common/GraphSet.js rename to assets/compressed_sensing_2018/j2s/JSV/common/GraphSet.js diff --git a/j2s/JSV/common/ImageView.js b/assets/compressed_sensing_2018/j2s/JSV/common/ImageView.js similarity index 100% rename from j2s/JSV/common/ImageView.js rename to assets/compressed_sensing_2018/j2s/JSV/common/ImageView.js diff --git a/j2s/JSV/common/Integral.js b/assets/compressed_sensing_2018/j2s/JSV/common/Integral.js similarity index 100% rename from j2s/JSV/common/Integral.js rename to assets/compressed_sensing_2018/j2s/JSV/common/Integral.js diff --git a/j2s/JSV/common/IntegralComparator.js b/assets/compressed_sensing_2018/j2s/JSV/common/IntegralComparator.js similarity index 100% rename from j2s/JSV/common/IntegralComparator.js rename to assets/compressed_sensing_2018/j2s/JSV/common/IntegralComparator.js diff --git a/j2s/JSV/common/IntegralData.js b/assets/compressed_sensing_2018/j2s/JSV/common/IntegralData.js similarity index 100% rename from j2s/JSV/common/IntegralData.js rename to assets/compressed_sensing_2018/j2s/JSV/common/IntegralData.js diff --git a/j2s/JSV/common/JSVFileManager.js b/assets/compressed_sensing_2018/j2s/JSV/common/JSVFileManager.js similarity index 100% rename from j2s/JSV/common/JSVFileManager.js rename to assets/compressed_sensing_2018/j2s/JSV/common/JSVFileManager.js diff --git a/j2s/JSV/common/JSVZipFileSequentialReader.js b/assets/compressed_sensing_2018/j2s/JSV/common/JSVZipFileSequentialReader.js similarity index 100% rename from j2s/JSV/common/JSVZipFileSequentialReader.js rename to assets/compressed_sensing_2018/j2s/JSV/common/JSVZipFileSequentialReader.js diff --git a/j2s/JSV/common/JSVZipUtil.js b/assets/compressed_sensing_2018/j2s/JSV/common/JSVZipUtil.js similarity index 100% rename from j2s/JSV/common/JSVZipUtil.js rename to assets/compressed_sensing_2018/j2s/JSV/common/JSVZipUtil.js diff --git a/j2s/JSV/common/JSVersion.js b/assets/compressed_sensing_2018/j2s/JSV/common/JSVersion.js similarity index 100% rename from j2s/JSV/common/JSVersion.js rename to assets/compressed_sensing_2018/j2s/JSV/common/JSVersion.js diff --git a/j2s/JSV/common/JSViewer.js b/assets/compressed_sensing_2018/j2s/JSV/common/JSViewer.js similarity index 100% rename from j2s/JSV/common/JSViewer.js rename to assets/compressed_sensing_2018/j2s/JSV/common/JSViewer.js diff --git a/j2s/JSV/common/Measurement.js b/assets/compressed_sensing_2018/j2s/JSV/common/Measurement.js similarity index 100% rename from j2s/JSV/common/Measurement.js rename to assets/compressed_sensing_2018/j2s/JSV/common/Measurement.js diff --git a/j2s/JSV/common/MeasurementData.js b/assets/compressed_sensing_2018/j2s/JSV/common/MeasurementData.js similarity index 100% rename from j2s/JSV/common/MeasurementData.js rename to assets/compressed_sensing_2018/j2s/JSV/common/MeasurementData.js diff --git a/j2s/JSV/common/PDFWriter.js b/assets/compressed_sensing_2018/j2s/JSV/common/PDFWriter.js similarity index 100% rename from j2s/JSV/common/PDFWriter.js rename to assets/compressed_sensing_2018/j2s/JSV/common/PDFWriter.js diff --git a/j2s/JSV/common/PanelData.js b/assets/compressed_sensing_2018/j2s/JSV/common/PanelData.js similarity index 100% rename from j2s/JSV/common/PanelData.js rename to assets/compressed_sensing_2018/j2s/JSV/common/PanelData.js diff --git a/j2s/JSV/common/PanelNode.js b/assets/compressed_sensing_2018/j2s/JSV/common/PanelNode.js similarity index 100% rename from j2s/JSV/common/PanelNode.js rename to assets/compressed_sensing_2018/j2s/JSV/common/PanelNode.js diff --git a/j2s/JSV/common/Parameters.js b/assets/compressed_sensing_2018/j2s/JSV/common/Parameters.js similarity index 100% rename from j2s/JSV/common/Parameters.js rename to assets/compressed_sensing_2018/j2s/JSV/common/Parameters.js diff --git a/j2s/JSV/common/PeakData.js b/assets/compressed_sensing_2018/j2s/JSV/common/PeakData.js similarity index 100% rename from j2s/JSV/common/PeakData.js rename to assets/compressed_sensing_2018/j2s/JSV/common/PeakData.js diff --git a/j2s/JSV/common/PeakInfo.js b/assets/compressed_sensing_2018/j2s/JSV/common/PeakInfo.js similarity index 100% rename from j2s/JSV/common/PeakInfo.js rename to assets/compressed_sensing_2018/j2s/JSV/common/PeakInfo.js diff --git a/j2s/JSV/common/PeakPick.js b/assets/compressed_sensing_2018/j2s/JSV/common/PeakPick.js similarity index 100% rename from j2s/JSV/common/PeakPick.js rename to assets/compressed_sensing_2018/j2s/JSV/common/PeakPick.js diff --git a/j2s/JSV/common/PeakPickEvent.js b/assets/compressed_sensing_2018/j2s/JSV/common/PeakPickEvent.js similarity index 100% rename from j2s/JSV/common/PeakPickEvent.js rename to assets/compressed_sensing_2018/j2s/JSV/common/PeakPickEvent.js diff --git a/j2s/JSV/common/PlotWidget.js b/assets/compressed_sensing_2018/j2s/JSV/common/PlotWidget.js similarity index 100% rename from j2s/JSV/common/PlotWidget.js rename to assets/compressed_sensing_2018/j2s/JSV/common/PlotWidget.js diff --git a/j2s/JSV/common/PrintLayout.js b/assets/compressed_sensing_2018/j2s/JSV/common/PrintLayout.js similarity index 100% rename from j2s/JSV/common/PrintLayout.js rename to assets/compressed_sensing_2018/j2s/JSV/common/PrintLayout.js diff --git a/j2s/JSV/common/RepaintManager.js b/assets/compressed_sensing_2018/j2s/JSV/common/RepaintManager.js similarity index 100% rename from j2s/JSV/common/RepaintManager.js rename to assets/compressed_sensing_2018/j2s/JSV/common/RepaintManager.js diff --git a/j2s/JSV/common/ScaleData.js b/assets/compressed_sensing_2018/j2s/JSV/common/ScaleData.js similarity index 100% rename from j2s/JSV/common/ScaleData.js rename to assets/compressed_sensing_2018/j2s/JSV/common/ScaleData.js diff --git a/j2s/JSV/common/ScriptToken.js b/assets/compressed_sensing_2018/j2s/JSV/common/ScriptToken.js similarity index 100% rename from j2s/JSV/common/ScriptToken.js rename to assets/compressed_sensing_2018/j2s/JSV/common/ScriptToken.js diff --git a/j2s/JSV/common/ScriptTokenizer.js b/assets/compressed_sensing_2018/j2s/JSV/common/ScriptTokenizer.js similarity index 100% rename from j2s/JSV/common/ScriptTokenizer.js rename to assets/compressed_sensing_2018/j2s/JSV/common/ScriptTokenizer.js diff --git a/j2s/JSV/common/Spectrum.js b/assets/compressed_sensing_2018/j2s/JSV/common/Spectrum.js similarity index 100% rename from j2s/JSV/common/Spectrum.js rename to assets/compressed_sensing_2018/j2s/JSV/common/Spectrum.js diff --git a/j2s/JSV/common/SubSpecChangeEvent.js b/assets/compressed_sensing_2018/j2s/JSV/common/SubSpecChangeEvent.js similarity index 100% rename from j2s/JSV/common/SubSpecChangeEvent.js rename to assets/compressed_sensing_2018/j2s/JSV/common/SubSpecChangeEvent.js diff --git a/j2s/JSV/common/TODO.txt b/assets/compressed_sensing_2018/j2s/JSV/common/TODO.txt similarity index 100% rename from j2s/JSV/common/TODO.txt rename to assets/compressed_sensing_2018/j2s/JSV/common/TODO.txt diff --git a/j2s/JSV/common/ViewData.js b/assets/compressed_sensing_2018/j2s/JSV/common/ViewData.js similarity index 100% rename from j2s/JSV/common/ViewData.js rename to assets/compressed_sensing_2018/j2s/JSV/common/ViewData.js diff --git a/j2s/JSV/common/Visible.js b/assets/compressed_sensing_2018/j2s/JSV/common/Visible.js similarity index 100% rename from j2s/JSV/common/Visible.js rename to assets/compressed_sensing_2018/j2s/JSV/common/Visible.js diff --git a/j2s/JSV/common/XYScaleConverter.js b/assets/compressed_sensing_2018/j2s/JSV/common/XYScaleConverter.js similarity index 100% rename from j2s/JSV/common/XYScaleConverter.js rename to assets/compressed_sensing_2018/j2s/JSV/common/XYScaleConverter.js diff --git a/j2s/JSV/common/ZoomEvent.js b/assets/compressed_sensing_2018/j2s/JSV/common/ZoomEvent.js similarity index 100% rename from j2s/JSV/common/ZoomEvent.js rename to assets/compressed_sensing_2018/j2s/JSV/common/ZoomEvent.js diff --git a/j2s/JSV/dialog/DialogManager.js b/assets/compressed_sensing_2018/j2s/JSV/dialog/DialogManager.js similarity index 100% rename from j2s/JSV/dialog/DialogManager.js rename to assets/compressed_sensing_2018/j2s/JSV/dialog/DialogManager.js diff --git a/j2s/JSV/dialog/DialogParams.js b/assets/compressed_sensing_2018/j2s/JSV/dialog/DialogParams.js similarity index 100% rename from j2s/JSV/dialog/DialogParams.js rename to assets/compressed_sensing_2018/j2s/JSV/dialog/DialogParams.js diff --git a/j2s/JSV/dialog/IntegrationDialog.js b/assets/compressed_sensing_2018/j2s/JSV/dialog/IntegrationDialog.js similarity index 100% rename from j2s/JSV/dialog/IntegrationDialog.js rename to assets/compressed_sensing_2018/j2s/JSV/dialog/IntegrationDialog.js diff --git a/j2s/JSV/dialog/JSVDialog.js b/assets/compressed_sensing_2018/j2s/JSV/dialog/JSVDialog.js similarity index 100% rename from j2s/JSV/dialog/JSVDialog.js rename to assets/compressed_sensing_2018/j2s/JSV/dialog/JSVDialog.js diff --git a/j2s/JSV/dialog/MeasurementsDialog.js b/assets/compressed_sensing_2018/j2s/JSV/dialog/MeasurementsDialog.js similarity index 100% rename from j2s/JSV/dialog/MeasurementsDialog.js rename to assets/compressed_sensing_2018/j2s/JSV/dialog/MeasurementsDialog.js diff --git a/j2s/JSV/dialog/OverlayLegendDialog.js b/assets/compressed_sensing_2018/j2s/JSV/dialog/OverlayLegendDialog.js similarity index 100% rename from j2s/JSV/dialog/OverlayLegendDialog.js rename to assets/compressed_sensing_2018/j2s/JSV/dialog/OverlayLegendDialog.js diff --git a/j2s/JSV/dialog/PeakListDialog.js b/assets/compressed_sensing_2018/j2s/JSV/dialog/PeakListDialog.js similarity index 100% rename from j2s/JSV/dialog/PeakListDialog.js rename to assets/compressed_sensing_2018/j2s/JSV/dialog/PeakListDialog.js diff --git a/j2s/JSV/dialog/ViewsDialog.js b/assets/compressed_sensing_2018/j2s/JSV/dialog/ViewsDialog.js similarity index 100% rename from j2s/JSV/dialog/ViewsDialog.js rename to assets/compressed_sensing_2018/j2s/JSV/dialog/ViewsDialog.js diff --git a/j2s/JSV/exception/JSVException.js b/assets/compressed_sensing_2018/j2s/JSV/exception/JSVException.js similarity index 100% rename from j2s/JSV/exception/JSVException.js rename to assets/compressed_sensing_2018/j2s/JSV/exception/JSVException.js diff --git a/j2s/JSV/export/AMLExporter.js b/assets/compressed_sensing_2018/j2s/JSV/export/AMLExporter.js similarity index 100% rename from j2s/JSV/export/AMLExporter.js rename to assets/compressed_sensing_2018/j2s/JSV/export/AMLExporter.js diff --git a/j2s/JSV/export/CMLExporter.js b/assets/compressed_sensing_2018/j2s/JSV/export/CMLExporter.js similarity index 100% rename from j2s/JSV/export/CMLExporter.js rename to assets/compressed_sensing_2018/j2s/JSV/export/CMLExporter.js diff --git a/j2s/JSV/export/ExportInterface.js b/assets/compressed_sensing_2018/j2s/JSV/export/ExportInterface.js similarity index 100% rename from j2s/JSV/export/ExportInterface.js rename to assets/compressed_sensing_2018/j2s/JSV/export/ExportInterface.js diff --git a/j2s/JSV/export/Exporter.js b/assets/compressed_sensing_2018/j2s/JSV/export/Exporter.js similarity index 100% rename from j2s/JSV/export/Exporter.js rename to assets/compressed_sensing_2018/j2s/JSV/export/Exporter.js diff --git a/j2s/JSV/export/FormContext.js b/assets/compressed_sensing_2018/j2s/JSV/export/FormContext.js similarity index 100% rename from j2s/JSV/export/FormContext.js rename to assets/compressed_sensing_2018/j2s/JSV/export/FormContext.js diff --git a/j2s/JSV/export/FormExporter.js b/assets/compressed_sensing_2018/j2s/JSV/export/FormExporter.js similarity index 100% rename from j2s/JSV/export/FormExporter.js rename to assets/compressed_sensing_2018/j2s/JSV/export/FormExporter.js diff --git a/j2s/JSV/export/JDXCompressor.js b/assets/compressed_sensing_2018/j2s/JSV/export/JDXCompressor.js similarity index 100% rename from j2s/JSV/export/JDXCompressor.js rename to assets/compressed_sensing_2018/j2s/JSV/export/JDXCompressor.js diff --git a/j2s/JSV/export/JDXExporter.js b/assets/compressed_sensing_2018/j2s/JSV/export/JDXExporter.js similarity index 100% rename from j2s/JSV/export/JDXExporter.js rename to assets/compressed_sensing_2018/j2s/JSV/export/JDXExporter.js diff --git a/j2s/JSV/export/SVGExporter.js b/assets/compressed_sensing_2018/j2s/JSV/export/SVGExporter.js similarity index 100% rename from j2s/JSV/export/SVGExporter.js rename to assets/compressed_sensing_2018/j2s/JSV/export/SVGExporter.js diff --git a/j2s/JSV/export/XMLExporter.js b/assets/compressed_sensing_2018/j2s/JSV/export/XMLExporter.js similarity index 100% rename from j2s/JSV/export/XMLExporter.js rename to assets/compressed_sensing_2018/j2s/JSV/export/XMLExporter.js diff --git a/j2s/JSV/export/resources/animl_nmr.vm b/assets/compressed_sensing_2018/j2s/JSV/export/resources/animl_nmr.vm similarity index 100% rename from j2s/JSV/export/resources/animl_nmr.vm rename to assets/compressed_sensing_2018/j2s/JSV/export/resources/animl_nmr.vm diff --git a/j2s/JSV/export/resources/animl_tmp.vm b/assets/compressed_sensing_2018/j2s/JSV/export/resources/animl_tmp.vm similarity index 100% rename from j2s/JSV/export/resources/animl_tmp.vm rename to assets/compressed_sensing_2018/j2s/JSV/export/resources/animl_tmp.vm diff --git a/j2s/JSV/export/resources/cml_nmr.vm b/assets/compressed_sensing_2018/j2s/JSV/export/resources/cml_nmr.vm similarity index 100% rename from j2s/JSV/export/resources/cml_nmr.vm rename to assets/compressed_sensing_2018/j2s/JSV/export/resources/cml_nmr.vm diff --git a/j2s/JSV/export/resources/cml_tmp.vm b/assets/compressed_sensing_2018/j2s/JSV/export/resources/cml_tmp.vm similarity index 100% rename from j2s/JSV/export/resources/cml_tmp.vm rename to assets/compressed_sensing_2018/j2s/JSV/export/resources/cml_tmp.vm diff --git a/j2s/JSV/export/resources/plot.vm b/assets/compressed_sensing_2018/j2s/JSV/export/resources/plot.vm similarity index 100% rename from j2s/JSV/export/resources/plot.vm rename to assets/compressed_sensing_2018/j2s/JSV/export/resources/plot.vm diff --git a/j2s/JSV/export/resources/plot_ink.vm b/assets/compressed_sensing_2018/j2s/JSV/export/resources/plot_ink.vm similarity index 100% rename from j2s/JSV/export/resources/plot_ink.vm rename to assets/compressed_sensing_2018/j2s/JSV/export/resources/plot_ink.vm diff --git a/j2s/JSV/js2d/DialogTableModel.js b/assets/compressed_sensing_2018/j2s/JSV/js2d/DialogTableModel.js similarity index 100% rename from j2s/JSV/js2d/DialogTableModel.js rename to assets/compressed_sensing_2018/j2s/JSV/js2d/DialogTableModel.js diff --git a/j2s/JSV/js2d/Display.js b/assets/compressed_sensing_2018/j2s/JSV/js2d/Display.js similarity index 100% rename from j2s/JSV/js2d/Display.js rename to assets/compressed_sensing_2018/j2s/JSV/js2d/Display.js diff --git a/j2s/JSV/js2d/Image.js b/assets/compressed_sensing_2018/j2s/JSV/js2d/Image.js similarity index 100% rename from j2s/JSV/js2d/Image.js rename to assets/compressed_sensing_2018/j2s/JSV/js2d/Image.js diff --git a/j2s/JSV/js2d/JsDialog.js b/assets/compressed_sensing_2018/j2s/JSV/js2d/JsDialog.js similarity index 100% rename from j2s/JSV/js2d/JsDialog.js rename to assets/compressed_sensing_2018/j2s/JSV/js2d/JsDialog.js diff --git a/j2s/JSV/js2d/JsDialogManager.js b/assets/compressed_sensing_2018/j2s/JSV/js2d/JsDialogManager.js similarity index 100% rename from j2s/JSV/js2d/JsDialogManager.js rename to assets/compressed_sensing_2018/j2s/JSV/js2d/JsDialogManager.js diff --git a/j2s/JSV/js2d/JsFile.js b/assets/compressed_sensing_2018/j2s/JSV/js2d/JsFile.js similarity index 100% rename from j2s/JSV/js2d/JsFile.js rename to assets/compressed_sensing_2018/j2s/JSV/js2d/JsFile.js diff --git a/j2s/JSV/js2d/JsFileHelper.js b/assets/compressed_sensing_2018/j2s/JSV/js2d/JsFileHelper.js similarity index 100% rename from j2s/JSV/js2d/JsFileHelper.js rename to assets/compressed_sensing_2018/j2s/JSV/js2d/JsFileHelper.js diff --git a/j2s/JSV/js2d/JsFont.js b/assets/compressed_sensing_2018/j2s/JSV/js2d/JsFont.js similarity index 100% rename from j2s/JSV/js2d/JsFont.js rename to assets/compressed_sensing_2018/j2s/JSV/js2d/JsFont.js diff --git a/j2s/JSV/js2d/JsG2D.js b/assets/compressed_sensing_2018/j2s/JSV/js2d/JsG2D.js similarity index 100% rename from j2s/JSV/js2d/JsG2D.js rename to assets/compressed_sensing_2018/j2s/JSV/js2d/JsG2D.js diff --git a/j2s/JSV/js2d/JsMainPanel.js b/assets/compressed_sensing_2018/j2s/JSV/js2d/JsMainPanel.js similarity index 100% rename from j2s/JSV/js2d/JsMainPanel.js rename to assets/compressed_sensing_2018/j2s/JSV/js2d/JsMainPanel.js diff --git a/j2s/JSV/js2d/JsPanel.js b/assets/compressed_sensing_2018/j2s/JSV/js2d/JsPanel.js similarity index 100% rename from j2s/JSV/js2d/JsPanel.js rename to assets/compressed_sensing_2018/j2s/JSV/js2d/JsPanel.js diff --git a/j2s/JSV/js2d/JsParameters.js b/assets/compressed_sensing_2018/j2s/JSV/js2d/JsParameters.js similarity index 100% rename from j2s/JSV/js2d/JsParameters.js rename to assets/compressed_sensing_2018/j2s/JSV/js2d/JsParameters.js diff --git a/j2s/JSV/js2d/JsPlatform.js b/assets/compressed_sensing_2018/j2s/JSV/js2d/JsPlatform.js similarity index 100% rename from j2s/JSV/js2d/JsPlatform.js rename to assets/compressed_sensing_2018/j2s/JSV/js2d/JsPlatform.js diff --git a/j2s/JSV/js2d/JsPopup.js b/assets/compressed_sensing_2018/j2s/JSV/js2d/JsPopup.js similarity index 100% rename from j2s/JSV/js2d/JsPopup.js rename to assets/compressed_sensing_2018/j2s/JSV/js2d/JsPopup.js diff --git a/j2s/JSV/popup/JSVGenericPopup.js b/assets/compressed_sensing_2018/j2s/JSV/popup/JSVGenericPopup.js similarity index 100% rename from j2s/JSV/popup/JSVGenericPopup.js rename to assets/compressed_sensing_2018/j2s/JSV/popup/JSVGenericPopup.js diff --git a/j2s/JSV/popup/JSVPopupResourceBundle.js b/assets/compressed_sensing_2018/j2s/JSV/popup/JSVPopupResourceBundle.js similarity index 100% rename from j2s/JSV/popup/JSVPopupResourceBundle.js rename to assets/compressed_sensing_2018/j2s/JSV/popup/JSVPopupResourceBundle.js diff --git a/j2s/JSV/source/AnIMLReader.js b/assets/compressed_sensing_2018/j2s/JSV/source/AnIMLReader.js similarity index 100% rename from j2s/JSV/source/AnIMLReader.js rename to assets/compressed_sensing_2018/j2s/JSV/source/AnIMLReader.js diff --git a/j2s/JSV/source/CMLReader.js b/assets/compressed_sensing_2018/j2s/JSV/source/CMLReader.js similarity index 100% rename from j2s/JSV/source/CMLReader.js rename to assets/compressed_sensing_2018/j2s/JSV/source/CMLReader.js diff --git a/j2s/JSV/source/JDXDataObject.js b/assets/compressed_sensing_2018/j2s/JSV/source/JDXDataObject.js similarity index 100% rename from j2s/JSV/source/JDXDataObject.js rename to assets/compressed_sensing_2018/j2s/JSV/source/JDXDataObject.js diff --git a/j2s/JSV/source/JDXDecompressor.js b/assets/compressed_sensing_2018/j2s/JSV/source/JDXDecompressor.js similarity index 100% rename from j2s/JSV/source/JDXDecompressor.js rename to assets/compressed_sensing_2018/j2s/JSV/source/JDXDecompressor.js diff --git a/j2s/JSV/source/JDXHeader.js b/assets/compressed_sensing_2018/j2s/JSV/source/JDXHeader.js similarity index 100% rename from j2s/JSV/source/JDXHeader.js rename to assets/compressed_sensing_2018/j2s/JSV/source/JDXHeader.js diff --git a/j2s/JSV/source/JDXReader.js b/assets/compressed_sensing_2018/j2s/JSV/source/JDXReader.js similarity index 100% rename from j2s/JSV/source/JDXReader.js rename to assets/compressed_sensing_2018/j2s/JSV/source/JDXReader.js diff --git a/j2s/JSV/source/JDXSource.js b/assets/compressed_sensing_2018/j2s/JSV/source/JDXSource.js similarity index 100% rename from j2s/JSV/source/JDXSource.js rename to assets/compressed_sensing_2018/j2s/JSV/source/JDXSource.js diff --git a/j2s/JSV/source/JDXSourceStreamTokenizer.js b/assets/compressed_sensing_2018/j2s/JSV/source/JDXSourceStreamTokenizer.js similarity index 100% rename from j2s/JSV/source/JDXSourceStreamTokenizer.js rename to assets/compressed_sensing_2018/j2s/JSV/source/JDXSourceStreamTokenizer.js diff --git a/j2s/JSV/source/XMLParser.js b/assets/compressed_sensing_2018/j2s/JSV/source/XMLParser.js similarity index 100% rename from j2s/JSV/source/XMLParser.js rename to assets/compressed_sensing_2018/j2s/JSV/source/XMLParser.js diff --git a/j2s/JSV/source/XMLReader.js b/assets/compressed_sensing_2018/j2s/JSV/source/XMLReader.js similarity index 100% rename from j2s/JSV/source/XMLReader.js rename to assets/compressed_sensing_2018/j2s/JSV/source/XMLReader.js diff --git a/j2s/JSV/tree/SimpleTree.js b/assets/compressed_sensing_2018/j2s/JSV/tree/SimpleTree.js similarity index 100% rename from j2s/JSV/tree/SimpleTree.js rename to assets/compressed_sensing_2018/j2s/JSV/tree/SimpleTree.js diff --git a/j2s/JSV/tree/SimpleTreeEnumeration.js b/assets/compressed_sensing_2018/j2s/JSV/tree/SimpleTreeEnumeration.js similarity index 100% rename from j2s/JSV/tree/SimpleTreeEnumeration.js rename to assets/compressed_sensing_2018/j2s/JSV/tree/SimpleTreeEnumeration.js diff --git a/j2s/JSV/tree/SimpleTreeModel.js b/assets/compressed_sensing_2018/j2s/JSV/tree/SimpleTreeModel.js similarity index 100% rename from j2s/JSV/tree/SimpleTreeModel.js rename to assets/compressed_sensing_2018/j2s/JSV/tree/SimpleTreeModel.js diff --git a/j2s/JSV/tree/SimpleTreeNode.js b/assets/compressed_sensing_2018/j2s/JSV/tree/SimpleTreeNode.js similarity index 100% rename from j2s/JSV/tree/SimpleTreeNode.js rename to assets/compressed_sensing_2018/j2s/JSV/tree/SimpleTreeNode.js diff --git a/j2s/JSV/tree/SimpleTreePath.js b/assets/compressed_sensing_2018/j2s/JSV/tree/SimpleTreePath.js similarity index 100% rename from j2s/JSV/tree/SimpleTreePath.js rename to assets/compressed_sensing_2018/j2s/JSV/tree/SimpleTreePath.js diff --git a/j2s/JU/A4.js b/assets/compressed_sensing_2018/j2s/JU/A4.js similarity index 100% rename from j2s/JU/A4.js rename to assets/compressed_sensing_2018/j2s/JU/A4.js diff --git a/j2s/JU/AU.js b/assets/compressed_sensing_2018/j2s/JU/AU.js similarity index 100% rename from j2s/JU/AU.js rename to assets/compressed_sensing_2018/j2s/JU/AU.js diff --git a/j2s/JU/Adler32.js b/assets/compressed_sensing_2018/j2s/JU/Adler32.js similarity index 100% rename from j2s/JU/Adler32.js rename to assets/compressed_sensing_2018/j2s/JU/Adler32.js diff --git a/j2s/JU/AjaxURLConnection.js b/assets/compressed_sensing_2018/j2s/JU/AjaxURLConnection.js similarity index 100% rename from j2s/JU/AjaxURLConnection.js rename to assets/compressed_sensing_2018/j2s/JU/AjaxURLConnection.js diff --git a/j2s/JU/AjaxURLStreamHandler.js b/assets/compressed_sensing_2018/j2s/JU/AjaxURLStreamHandler.js similarity index 100% rename from j2s/JU/AjaxURLStreamHandler.js rename to assets/compressed_sensing_2018/j2s/JU/AjaxURLStreamHandler.js diff --git a/j2s/JU/AjaxURLStreamHandlerFactory.js b/assets/compressed_sensing_2018/j2s/JU/AjaxURLStreamHandlerFactory.js similarity index 100% rename from j2s/JU/AjaxURLStreamHandlerFactory.js rename to assets/compressed_sensing_2018/j2s/JU/AjaxURLStreamHandlerFactory.js diff --git a/j2s/JU/ArrayDataReader.js b/assets/compressed_sensing_2018/j2s/JU/ArrayDataReader.js similarity index 100% rename from j2s/JU/ArrayDataReader.js rename to assets/compressed_sensing_2018/j2s/JU/ArrayDataReader.js diff --git a/j2s/JU/BArray.js b/assets/compressed_sensing_2018/j2s/JU/BArray.js similarity index 100% rename from j2s/JU/BArray.js rename to assets/compressed_sensing_2018/j2s/JU/BArray.js diff --git a/j2s/JU/BC.js b/assets/compressed_sensing_2018/j2s/JU/BC.js similarity index 100% rename from j2s/JU/BC.js rename to assets/compressed_sensing_2018/j2s/JU/BC.js diff --git a/j2s/JU/BS.js b/assets/compressed_sensing_2018/j2s/JU/BS.js similarity index 100% rename from j2s/JU/BS.js rename to assets/compressed_sensing_2018/j2s/JU/BS.js diff --git a/j2s/JU/BSUtil.js b/assets/compressed_sensing_2018/j2s/JU/BSUtil.js similarity index 100% rename from j2s/JU/BSUtil.js rename to assets/compressed_sensing_2018/j2s/JU/BSUtil.js diff --git a/j2s/JU/BZone.js b/assets/compressed_sensing_2018/j2s/JU/BZone.js similarity index 100% rename from j2s/JU/BZone.js rename to assets/compressed_sensing_2018/j2s/JU/BZone.js diff --git a/j2s/JU/Base64.js b/assets/compressed_sensing_2018/j2s/JU/Base64.js similarity index 100% rename from j2s/JU/Base64.js rename to assets/compressed_sensing_2018/j2s/JU/Base64.js diff --git a/j2s/JU/BinaryDocument.js b/assets/compressed_sensing_2018/j2s/JU/BinaryDocument.js similarity index 100% rename from j2s/JU/BinaryDocument.js rename to assets/compressed_sensing_2018/j2s/JU/BinaryDocument.js diff --git a/j2s/JU/BoxInfo.js b/assets/compressed_sensing_2018/j2s/JU/BoxInfo.js similarity index 100% rename from j2s/JU/BoxInfo.js rename to assets/compressed_sensing_2018/j2s/JU/BoxInfo.js diff --git a/j2s/JU/C.js b/assets/compressed_sensing_2018/j2s/JU/C.js similarity index 100% rename from j2s/JU/C.js rename to assets/compressed_sensing_2018/j2s/JU/C.js diff --git a/j2s/JU/CRC32.js b/assets/compressed_sensing_2018/j2s/JU/CRC32.js similarity index 100% rename from j2s/JU/CRC32.js rename to assets/compressed_sensing_2018/j2s/JU/CRC32.js diff --git a/j2s/JU/CU.js b/assets/compressed_sensing_2018/j2s/JU/CU.js similarity index 100% rename from j2s/JU/CU.js rename to assets/compressed_sensing_2018/j2s/JU/CU.js diff --git a/j2s/JU/Checksum.js b/assets/compressed_sensing_2018/j2s/JU/Checksum.js similarity index 100% rename from j2s/JU/Checksum.js rename to assets/compressed_sensing_2018/j2s/JU/Checksum.js diff --git a/j2s/JU/CifDataParser.js b/assets/compressed_sensing_2018/j2s/JU/CifDataParser.js similarity index 100% rename from j2s/JU/CifDataParser.js rename to assets/compressed_sensing_2018/j2s/JU/CifDataParser.js diff --git a/j2s/JU/ColorEncoder.js b/assets/compressed_sensing_2018/j2s/JU/ColorEncoder.js similarity index 100% rename from j2s/JU/ColorEncoder.js rename to assets/compressed_sensing_2018/j2s/JU/ColorEncoder.js diff --git a/j2s/JU/CommandHistory.js b/assets/compressed_sensing_2018/j2s/JU/CommandHistory.js similarity index 100% rename from j2s/JU/CommandHistory.js rename to assets/compressed_sensing_2018/j2s/JU/CommandHistory.js diff --git a/j2s/JU/CompoundDocDirEntry.js b/assets/compressed_sensing_2018/j2s/JU/CompoundDocDirEntry.js similarity index 100% rename from j2s/JU/CompoundDocDirEntry.js rename to assets/compressed_sensing_2018/j2s/JU/CompoundDocDirEntry.js diff --git a/j2s/JU/CompoundDocHeader.js b/assets/compressed_sensing_2018/j2s/JU/CompoundDocHeader.js similarity index 100% rename from j2s/JU/CompoundDocHeader.js rename to assets/compressed_sensing_2018/j2s/JU/CompoundDocHeader.js diff --git a/j2s/JU/CompoundDocument.js b/assets/compressed_sensing_2018/j2s/JU/CompoundDocument.js similarity index 100% rename from j2s/JU/CompoundDocument.js rename to assets/compressed_sensing_2018/j2s/JU/CompoundDocument.js diff --git a/j2s/JU/ContactPair.js b/assets/compressed_sensing_2018/j2s/JU/ContactPair.js similarity index 100% rename from j2s/JU/ContactPair.js rename to assets/compressed_sensing_2018/j2s/JU/ContactPair.js diff --git a/j2s/JU/DF.js b/assets/compressed_sensing_2018/j2s/JU/DF.js similarity index 100% rename from j2s/JU/DF.js rename to assets/compressed_sensing_2018/j2s/JU/DF.js diff --git a/j2s/JU/DataReader.js b/assets/compressed_sensing_2018/j2s/JU/DataReader.js similarity index 100% rename from j2s/JU/DataReader.js rename to assets/compressed_sensing_2018/j2s/JU/DataReader.js diff --git a/j2s/JU/DebugJS.js b/assets/compressed_sensing_2018/j2s/JU/DebugJS.js similarity index 100% rename from j2s/JU/DebugJS.js rename to assets/compressed_sensing_2018/j2s/JU/DebugJS.js diff --git a/j2s/JU/DefaultLogger.js b/assets/compressed_sensing_2018/j2s/JU/DefaultLogger.js similarity index 100% rename from j2s/JU/DefaultLogger.js rename to assets/compressed_sensing_2018/j2s/JU/DefaultLogger.js diff --git a/j2s/JU/Deflate.js b/assets/compressed_sensing_2018/j2s/JU/Deflate.js similarity index 100% rename from j2s/JU/Deflate.js rename to assets/compressed_sensing_2018/j2s/JU/Deflate.js diff --git a/j2s/JU/Deflater.js b/assets/compressed_sensing_2018/j2s/JU/Deflater.js similarity index 100% rename from j2s/JU/Deflater.js rename to assets/compressed_sensing_2018/j2s/JU/Deflater.js diff --git a/j2s/JU/DeflaterOutputStream.js b/assets/compressed_sensing_2018/j2s/JU/DeflaterOutputStream.js similarity index 100% rename from j2s/JU/DeflaterOutputStream.js rename to assets/compressed_sensing_2018/j2s/JU/DeflaterOutputStream.js diff --git a/j2s/JU/Edge.js b/assets/compressed_sensing_2018/j2s/JU/Edge.js similarity index 100% rename from j2s/JU/Edge.js rename to assets/compressed_sensing_2018/j2s/JU/Edge.js diff --git a/j2s/JU/Eigen.js b/assets/compressed_sensing_2018/j2s/JU/Eigen.js similarity index 100% rename from j2s/JU/Eigen.js rename to assets/compressed_sensing_2018/j2s/JU/Eigen.js diff --git a/j2s/JU/EigenSort.js b/assets/compressed_sensing_2018/j2s/JU/EigenSort.js similarity index 100% rename from j2s/JU/EigenSort.js rename to assets/compressed_sensing_2018/j2s/JU/EigenSort.js diff --git a/j2s/JU/Elements.js b/assets/compressed_sensing_2018/j2s/JU/Elements.js similarity index 100% rename from j2s/JU/Elements.js rename to assets/compressed_sensing_2018/j2s/JU/Elements.js diff --git a/j2s/JU/Encoding.js b/assets/compressed_sensing_2018/j2s/JU/Encoding.js similarity index 100% rename from j2s/JU/Encoding.js rename to assets/compressed_sensing_2018/j2s/JU/Encoding.js diff --git a/j2s/JU/Escape.js b/assets/compressed_sensing_2018/j2s/JU/Escape.js similarity index 100% rename from j2s/JU/Escape.js rename to assets/compressed_sensing_2018/j2s/JU/Escape.js diff --git a/j2s/JU/GData.js b/assets/compressed_sensing_2018/j2s/JU/GData.js similarity index 100% rename from j2s/JU/GData.js rename to assets/compressed_sensing_2018/j2s/JU/GData.js diff --git a/j2s/JU/GZIPException.js b/assets/compressed_sensing_2018/j2s/JU/GZIPException.js similarity index 100% rename from j2s/JU/GZIPException.js rename to assets/compressed_sensing_2018/j2s/JU/GZIPException.js diff --git a/j2s/JU/GZIPHeader.js b/assets/compressed_sensing_2018/j2s/JU/GZIPHeader.js similarity index 100% rename from j2s/JU/GZIPHeader.js rename to assets/compressed_sensing_2018/j2s/JU/GZIPHeader.js diff --git a/j2s/JU/GZIPInputStream.js b/assets/compressed_sensing_2018/j2s/JU/GZIPInputStream.js similarity index 100% rename from j2s/JU/GZIPInputStream.js rename to assets/compressed_sensing_2018/j2s/JU/GZIPInputStream.js diff --git a/j2s/JU/GZIPOutputStream.js b/assets/compressed_sensing_2018/j2s/JU/GZIPOutputStream.js similarity index 100% rename from j2s/JU/GZIPOutputStream.js rename to assets/compressed_sensing_2018/j2s/JU/GZIPOutputStream.js diff --git a/j2s/JU/GenericApplet.js b/assets/compressed_sensing_2018/j2s/JU/GenericApplet.js similarity index 100% rename from j2s/JU/GenericApplet.js rename to assets/compressed_sensing_2018/j2s/JU/GenericApplet.js diff --git a/j2s/JU/Geodesic.js b/assets/compressed_sensing_2018/j2s/JU/Geodesic.js similarity index 100% rename from j2s/JU/Geodesic.js rename to assets/compressed_sensing_2018/j2s/JU/Geodesic.js diff --git a/j2s/JU/InfBlocks.js b/assets/compressed_sensing_2018/j2s/JU/InfBlocks.js similarity index 100% rename from j2s/JU/InfBlocks.js rename to assets/compressed_sensing_2018/j2s/JU/InfBlocks.js diff --git a/j2s/JU/InfCodes.js b/assets/compressed_sensing_2018/j2s/JU/InfCodes.js similarity index 100% rename from j2s/JU/InfCodes.js rename to assets/compressed_sensing_2018/j2s/JU/InfCodes.js diff --git a/j2s/JU/InfTree.js b/assets/compressed_sensing_2018/j2s/JU/InfTree.js similarity index 100% rename from j2s/JU/InfTree.js rename to assets/compressed_sensing_2018/j2s/JU/InfTree.js diff --git a/j2s/JU/Inflate.js b/assets/compressed_sensing_2018/j2s/JU/Inflate.js similarity index 100% rename from j2s/JU/Inflate.js rename to assets/compressed_sensing_2018/j2s/JU/Inflate.js diff --git a/j2s/JU/Inflater.js b/assets/compressed_sensing_2018/j2s/JU/Inflater.js similarity index 100% rename from j2s/JU/Inflater.js rename to assets/compressed_sensing_2018/j2s/JU/Inflater.js diff --git a/j2s/JU/InflaterInputStream.js b/assets/compressed_sensing_2018/j2s/JU/InflaterInputStream.js similarity index 100% rename from j2s/JU/InflaterInputStream.js rename to assets/compressed_sensing_2018/j2s/JU/InflaterInputStream.js diff --git a/j2s/JU/Int2IntHash.js b/assets/compressed_sensing_2018/j2s/JU/Int2IntHash.js similarity index 100% rename from j2s/JU/Int2IntHash.js rename to assets/compressed_sensing_2018/j2s/JU/Int2IntHash.js diff --git a/j2s/JU/JSJSONParser.js b/assets/compressed_sensing_2018/j2s/JU/JSJSONParser.js similarity index 100% rename from j2s/JU/JSJSONParser.js rename to assets/compressed_sensing_2018/j2s/JU/JSJSONParser.js diff --git a/j2s/JU/JSONException.js b/assets/compressed_sensing_2018/j2s/JU/JSONException.js similarity index 100% rename from j2s/JU/JSONException.js rename to assets/compressed_sensing_2018/j2s/JU/JSONException.js diff --git a/j2s/JU/JSONWriter.js b/assets/compressed_sensing_2018/j2s/JU/JSONWriter.js similarity index 100% rename from j2s/JU/JSONWriter.js rename to assets/compressed_sensing_2018/j2s/JU/JSONWriter.js diff --git a/j2s/JU/JZlib.js b/assets/compressed_sensing_2018/j2s/JU/JZlib.js similarity index 100% rename from j2s/JU/JZlib.js rename to assets/compressed_sensing_2018/j2s/JU/JZlib.js diff --git a/j2s/JU/JmolAudio.js b/assets/compressed_sensing_2018/j2s/JU/JmolAudio.js similarity index 100% rename from j2s/JU/JmolAudio.js rename to assets/compressed_sensing_2018/j2s/JU/JmolAudio.js diff --git a/j2s/JU/JmolMolecule.js b/assets/compressed_sensing_2018/j2s/JU/JmolMolecule.js similarity index 100% rename from j2s/JU/JmolMolecule.js rename to assets/compressed_sensing_2018/j2s/JU/JmolMolecule.js diff --git a/j2s/JU/LimitedLineReader.js b/assets/compressed_sensing_2018/j2s/JU/LimitedLineReader.js similarity index 100% rename from j2s/JU/LimitedLineReader.js rename to assets/compressed_sensing_2018/j2s/JU/LimitedLineReader.js diff --git a/j2s/JU/ListDataReader.js b/assets/compressed_sensing_2018/j2s/JU/ListDataReader.js similarity index 100% rename from j2s/JU/ListDataReader.js rename to assets/compressed_sensing_2018/j2s/JU/ListDataReader.js diff --git a/j2s/JU/Logger.js b/assets/compressed_sensing_2018/j2s/JU/Logger.js similarity index 100% rename from j2s/JU/Logger.js rename to assets/compressed_sensing_2018/j2s/JU/Logger.js diff --git a/j2s/JU/LoggerInterface.js b/assets/compressed_sensing_2018/j2s/JU/LoggerInterface.js similarity index 100% rename from j2s/JU/LoggerInterface.js rename to assets/compressed_sensing_2018/j2s/JU/LoggerInterface.js diff --git a/j2s/JU/Lst.js b/assets/compressed_sensing_2018/j2s/JU/Lst.js similarity index 100% rename from j2s/JU/Lst.js rename to assets/compressed_sensing_2018/j2s/JU/Lst.js diff --git a/j2s/JU/M3.js b/assets/compressed_sensing_2018/j2s/JU/M3.js similarity index 100% rename from j2s/JU/M3.js rename to assets/compressed_sensing_2018/j2s/JU/M3.js diff --git a/j2s/JU/M34.js b/assets/compressed_sensing_2018/j2s/JU/M34.js similarity index 100% rename from j2s/JU/M34.js rename to assets/compressed_sensing_2018/j2s/JU/M34.js diff --git a/j2s/JU/M4.js b/assets/compressed_sensing_2018/j2s/JU/M4.js similarity index 100% rename from j2s/JU/M4.js rename to assets/compressed_sensing_2018/j2s/JU/M4.js diff --git a/j2s/JU/Matrix.js b/assets/compressed_sensing_2018/j2s/JU/Matrix.js similarity index 100% rename from j2s/JU/Matrix.js rename to assets/compressed_sensing_2018/j2s/JU/Matrix.js diff --git a/j2s/JU/Measure.js b/assets/compressed_sensing_2018/j2s/JU/Measure.js similarity index 100% rename from j2s/JU/Measure.js rename to assets/compressed_sensing_2018/j2s/JU/Measure.js diff --git a/j2s/JU/MeshCapper.js b/assets/compressed_sensing_2018/j2s/JU/MeshCapper.js similarity index 100% rename from j2s/JU/MeshCapper.js rename to assets/compressed_sensing_2018/j2s/JU/MeshCapper.js diff --git a/j2s/JU/MeshSlicer.js b/assets/compressed_sensing_2018/j2s/JU/MeshSlicer.js similarity index 100% rename from j2s/JU/MeshSlicer.js rename to assets/compressed_sensing_2018/j2s/JU/MeshSlicer.js diff --git a/j2s/JU/MeshSurface.js b/assets/compressed_sensing_2018/j2s/JU/MeshSurface.js similarity index 100% rename from j2s/JU/MeshSurface.js rename to assets/compressed_sensing_2018/j2s/JU/MeshSurface.js diff --git a/j2s/JU/MessagePackReader.js b/assets/compressed_sensing_2018/j2s/JU/MessagePackReader.js similarity index 100% rename from j2s/JU/MessagePackReader.js rename to assets/compressed_sensing_2018/j2s/JU/MessagePackReader.js diff --git a/j2s/JU/Modulation.js b/assets/compressed_sensing_2018/j2s/JU/Modulation.js similarity index 100% rename from j2s/JU/Modulation.js rename to assets/compressed_sensing_2018/j2s/JU/Modulation.js diff --git a/j2s/JU/ModulationSet.js b/assets/compressed_sensing_2018/j2s/JU/ModulationSet.js similarity index 100% rename from j2s/JU/ModulationSet.js rename to assets/compressed_sensing_2018/j2s/JU/ModulationSet.js diff --git a/j2s/JU/Node.js b/assets/compressed_sensing_2018/j2s/JU/Node.js similarity index 100% rename from j2s/JU/Node.js rename to assets/compressed_sensing_2018/j2s/JU/Node.js diff --git a/j2s/JU/Normix.js b/assets/compressed_sensing_2018/j2s/JU/Normix.js similarity index 100% rename from j2s/JU/Normix.js rename to assets/compressed_sensing_2018/j2s/JU/Normix.js diff --git a/j2s/JU/OC.js b/assets/compressed_sensing_2018/j2s/JU/OC.js similarity index 100% rename from j2s/JU/OC.js rename to assets/compressed_sensing_2018/j2s/JU/OC.js diff --git a/j2s/JU/P3.js b/assets/compressed_sensing_2018/j2s/JU/P3.js similarity index 100% rename from j2s/JU/P3.js rename to assets/compressed_sensing_2018/j2s/JU/P3.js diff --git a/j2s/JU/P3i.js b/assets/compressed_sensing_2018/j2s/JU/P3i.js similarity index 100% rename from j2s/JU/P3i.js rename to assets/compressed_sensing_2018/j2s/JU/P3i.js diff --git a/j2s/JU/P4.js b/assets/compressed_sensing_2018/j2s/JU/P4.js similarity index 100% rename from j2s/JU/P4.js rename to assets/compressed_sensing_2018/j2s/JU/P4.js diff --git a/j2s/JU/PT.js b/assets/compressed_sensing_2018/j2s/JU/PT.js similarity index 100% rename from j2s/JU/PT.js rename to assets/compressed_sensing_2018/j2s/JU/PT.js diff --git a/j2s/JU/Parser.js b/assets/compressed_sensing_2018/j2s/JU/Parser.js similarity index 100% rename from j2s/JU/Parser.js rename to assets/compressed_sensing_2018/j2s/JU/Parser.js diff --git a/j2s/JU/PatternMatcher.js b/assets/compressed_sensing_2018/j2s/JU/PatternMatcher.js similarity index 100% rename from j2s/JU/PatternMatcher.js rename to assets/compressed_sensing_2018/j2s/JU/PatternMatcher.js diff --git a/j2s/JU/Point3fi.js b/assets/compressed_sensing_2018/j2s/JU/Point3fi.js similarity index 100% rename from j2s/JU/Point3fi.js rename to assets/compressed_sensing_2018/j2s/JU/Point3fi.js diff --git a/j2s/JU/Quat.js b/assets/compressed_sensing_2018/j2s/JU/Quat.js similarity index 100% rename from j2s/JU/Quat.js rename to assets/compressed_sensing_2018/j2s/JU/Quat.js diff --git a/j2s/JU/Rdr.js b/assets/compressed_sensing_2018/j2s/JU/Rdr.js similarity index 100% rename from j2s/JU/Rdr.js rename to assets/compressed_sensing_2018/j2s/JU/Rdr.js diff --git a/j2s/JU/Rectangle.js b/assets/compressed_sensing_2018/j2s/JU/Rectangle.js similarity index 100% rename from j2s/JU/Rectangle.js rename to assets/compressed_sensing_2018/j2s/JU/Rectangle.js diff --git a/j2s/JU/Rgb16.js b/assets/compressed_sensing_2018/j2s/JU/Rgb16.js similarity index 100% rename from j2s/JU/Rgb16.js rename to assets/compressed_sensing_2018/j2s/JU/Rgb16.js diff --git a/j2s/JU/SB.js b/assets/compressed_sensing_2018/j2s/JU/SB.js similarity index 100% rename from j2s/JU/SB.js rename to assets/compressed_sensing_2018/j2s/JU/SB.js diff --git a/j2s/JU/Shader.js b/assets/compressed_sensing_2018/j2s/JU/Shader.js similarity index 100% rename from j2s/JU/Shader.js rename to assets/compressed_sensing_2018/j2s/JU/Shader.js diff --git a/j2s/JU/SimpleEdge.js b/assets/compressed_sensing_2018/j2s/JU/SimpleEdge.js similarity index 100% rename from j2s/JU/SimpleEdge.js rename to assets/compressed_sensing_2018/j2s/JU/SimpleEdge.js diff --git a/j2s/JU/SimpleNode.js b/assets/compressed_sensing_2018/j2s/JU/SimpleNode.js similarity index 100% rename from j2s/JU/SimpleNode.js rename to assets/compressed_sensing_2018/j2s/JU/SimpleNode.js diff --git a/j2s/JU/SimpleUnitCell.js b/assets/compressed_sensing_2018/j2s/JU/SimpleUnitCell.js similarity index 100% rename from j2s/JU/SimpleUnitCell.js rename to assets/compressed_sensing_2018/j2s/JU/SimpleUnitCell.js diff --git a/j2s/JU/StaticTree.js b/assets/compressed_sensing_2018/j2s/JU/StaticTree.js similarity index 100% rename from j2s/JU/StaticTree.js rename to assets/compressed_sensing_2018/j2s/JU/StaticTree.js diff --git a/j2s/JU/StringDataReader.js b/assets/compressed_sensing_2018/j2s/JU/StringDataReader.js similarity index 100% rename from j2s/JU/StringDataReader.js rename to assets/compressed_sensing_2018/j2s/JU/StringDataReader.js diff --git a/j2s/JU/T3.js b/assets/compressed_sensing_2018/j2s/JU/T3.js similarity index 100% rename from j2s/JU/T3.js rename to assets/compressed_sensing_2018/j2s/JU/T3.js diff --git a/j2s/JU/T3d.js b/assets/compressed_sensing_2018/j2s/JU/T3d.js similarity index 100% rename from j2s/JU/T3d.js rename to assets/compressed_sensing_2018/j2s/JU/T3d.js diff --git a/j2s/JU/T3i.js b/assets/compressed_sensing_2018/j2s/JU/T3i.js similarity index 100% rename from j2s/JU/T3i.js rename to assets/compressed_sensing_2018/j2s/JU/T3i.js diff --git a/j2s/JU/T4.js b/assets/compressed_sensing_2018/j2s/JU/T4.js similarity index 100% rename from j2s/JU/T4.js rename to assets/compressed_sensing_2018/j2s/JU/T4.js diff --git a/j2s/JU/TempArray.js b/assets/compressed_sensing_2018/j2s/JU/TempArray.js similarity index 100% rename from j2s/JU/TempArray.js rename to assets/compressed_sensing_2018/j2s/JU/TempArray.js diff --git a/j2s/JU/Tensor.js b/assets/compressed_sensing_2018/j2s/JU/Tensor.js similarity index 100% rename from j2s/JU/Tensor.js rename to assets/compressed_sensing_2018/j2s/JU/Tensor.js diff --git a/j2s/JU/Tree.js b/assets/compressed_sensing_2018/j2s/JU/Tree.js similarity index 100% rename from j2s/JU/Tree.js rename to assets/compressed_sensing_2018/j2s/JU/Tree.js diff --git a/j2s/JU/TriangleData.js b/assets/compressed_sensing_2018/j2s/JU/TriangleData.js similarity index 100% rename from j2s/JU/TriangleData.js rename to assets/compressed_sensing_2018/j2s/JU/TriangleData.js diff --git a/j2s/JU/Triangulator.js b/assets/compressed_sensing_2018/j2s/JU/Triangulator.js similarity index 100% rename from j2s/JU/Triangulator.js rename to assets/compressed_sensing_2018/j2s/JU/Triangulator.js diff --git a/j2s/JU/Txt.js b/assets/compressed_sensing_2018/j2s/JU/Txt.js similarity index 100% rename from j2s/JU/Txt.js rename to assets/compressed_sensing_2018/j2s/JU/Txt.js diff --git a/j2s/JU/V3.js b/assets/compressed_sensing_2018/j2s/JU/V3.js similarity index 100% rename from j2s/JU/V3.js rename to assets/compressed_sensing_2018/j2s/JU/V3.js diff --git a/j2s/JU/V3d.js b/assets/compressed_sensing_2018/j2s/JU/V3d.js similarity index 100% rename from j2s/JU/V3d.js rename to assets/compressed_sensing_2018/j2s/JU/V3d.js diff --git a/j2s/JU/Vibration.js b/assets/compressed_sensing_2018/j2s/JU/Vibration.js similarity index 100% rename from j2s/JU/Vibration.js rename to assets/compressed_sensing_2018/j2s/JU/Vibration.js diff --git a/j2s/JU/XmlUtil.js b/assets/compressed_sensing_2018/j2s/JU/XmlUtil.js similarity index 100% rename from j2s/JU/XmlUtil.js rename to assets/compressed_sensing_2018/j2s/JU/XmlUtil.js diff --git a/j2s/JU/ZStream.js b/assets/compressed_sensing_2018/j2s/JU/ZStream.js similarity index 100% rename from j2s/JU/ZStream.js rename to assets/compressed_sensing_2018/j2s/JU/ZStream.js diff --git a/j2s/JU/ZStreamException.js b/assets/compressed_sensing_2018/j2s/JU/ZStreamException.js similarity index 100% rename from j2s/JU/ZStreamException.js rename to assets/compressed_sensing_2018/j2s/JU/ZStreamException.js diff --git a/j2s/JU/ZipData.js b/assets/compressed_sensing_2018/j2s/JU/ZipData.js similarity index 100% rename from j2s/JU/ZipData.js rename to assets/compressed_sensing_2018/j2s/JU/ZipData.js diff --git a/j2s/JU/ZipTools.js b/assets/compressed_sensing_2018/j2s/JU/ZipTools.js similarity index 100% rename from j2s/JU/ZipTools.js rename to assets/compressed_sensing_2018/j2s/JU/ZipTools.js diff --git a/j2s/JU/package.js b/assets/compressed_sensing_2018/j2s/JU/package.js similarity index 100% rename from j2s/JU/package.js rename to assets/compressed_sensing_2018/j2s/JU/package.js diff --git a/j2s/JV/ActionManager.js b/assets/compressed_sensing_2018/j2s/JV/ActionManager.js similarity index 100% rename from j2s/JV/ActionManager.js rename to assets/compressed_sensing_2018/j2s/JV/ActionManager.js diff --git a/j2s/JV/AnimationManager.js b/assets/compressed_sensing_2018/j2s/JV/AnimationManager.js similarity index 100% rename from j2s/JV/AnimationManager.js rename to assets/compressed_sensing_2018/j2s/JV/AnimationManager.js diff --git a/j2s/JV/ChimeMessenger.js b/assets/compressed_sensing_2018/j2s/JV/ChimeMessenger.js similarity index 100% rename from j2s/JV/ChimeMessenger.js rename to assets/compressed_sensing_2018/j2s/JV/ChimeMessenger.js diff --git a/j2s/JV/ColorManager.js b/assets/compressed_sensing_2018/j2s/JV/ColorManager.js similarity index 100% rename from j2s/JV/ColorManager.js rename to assets/compressed_sensing_2018/j2s/JV/ColorManager.js diff --git a/j2s/JV/DataManager.js b/assets/compressed_sensing_2018/j2s/JV/DataManager.js similarity index 100% rename from j2s/JV/DataManager.js rename to assets/compressed_sensing_2018/j2s/JV/DataManager.js diff --git a/j2s/JV/FileManager.js b/assets/compressed_sensing_2018/j2s/JV/FileManager.js similarity index 100% rename from j2s/JV/FileManager.js rename to assets/compressed_sensing_2018/j2s/JV/FileManager.js diff --git a/j2s/JV/GlobalSettings.js b/assets/compressed_sensing_2018/j2s/JV/GlobalSettings.js similarity index 100% rename from j2s/JV/GlobalSettings.js rename to assets/compressed_sensing_2018/j2s/JV/GlobalSettings.js diff --git a/j2s/JV/JC.js b/assets/compressed_sensing_2018/j2s/JV/JC.js similarity index 100% rename from j2s/JV/JC.js rename to assets/compressed_sensing_2018/j2s/JV/JC.js diff --git a/j2s/JV/JmolAsyncException.js b/assets/compressed_sensing_2018/j2s/JV/JmolAsyncException.js similarity index 100% rename from j2s/JV/JmolAsyncException.js rename to assets/compressed_sensing_2018/j2s/JV/JmolAsyncException.js diff --git a/j2s/JV/JmolChimeMessenger.js b/assets/compressed_sensing_2018/j2s/JV/JmolChimeMessenger.js similarity index 100% rename from j2s/JV/JmolChimeMessenger.js rename to assets/compressed_sensing_2018/j2s/JV/JmolChimeMessenger.js diff --git a/j2s/JV/JmolStateCreator.js b/assets/compressed_sensing_2018/j2s/JV/JmolStateCreator.js similarity index 100% rename from j2s/JV/JmolStateCreator.js rename to assets/compressed_sensing_2018/j2s/JV/JmolStateCreator.js diff --git a/j2s/JV/ModelManager.js b/assets/compressed_sensing_2018/j2s/JV/ModelManager.js similarity index 100% rename from j2s/JV/ModelManager.js rename to assets/compressed_sensing_2018/j2s/JV/ModelManager.js diff --git a/j2s/JV/MouseState.js b/assets/compressed_sensing_2018/j2s/JV/MouseState.js similarity index 100% rename from j2s/JV/MouseState.js rename to assets/compressed_sensing_2018/j2s/JV/MouseState.js diff --git a/j2s/JV/OutputManager.js b/assets/compressed_sensing_2018/j2s/JV/OutputManager.js similarity index 100% rename from j2s/JV/OutputManager.js rename to assets/compressed_sensing_2018/j2s/JV/OutputManager.js diff --git a/j2s/JV/OutputManagerJS.js b/assets/compressed_sensing_2018/j2s/JV/OutputManagerJS.js similarity index 100% rename from j2s/JV/OutputManagerJS.js rename to assets/compressed_sensing_2018/j2s/JV/OutputManagerJS.js diff --git a/j2s/JV/PropertyManager.js b/assets/compressed_sensing_2018/j2s/JV/PropertyManager.js similarity index 100% rename from j2s/JV/PropertyManager.js rename to assets/compressed_sensing_2018/j2s/JV/PropertyManager.js diff --git a/j2s/JV/SelectionManager.js b/assets/compressed_sensing_2018/j2s/JV/SelectionManager.js similarity index 100% rename from j2s/JV/SelectionManager.js rename to assets/compressed_sensing_2018/j2s/JV/SelectionManager.js diff --git a/j2s/JV/ShapeManager.js b/assets/compressed_sensing_2018/j2s/JV/ShapeManager.js similarity index 100% rename from j2s/JV/ShapeManager.js rename to assets/compressed_sensing_2018/j2s/JV/ShapeManager.js diff --git a/j2s/JV/StateCreator.js b/assets/compressed_sensing_2018/j2s/JV/StateCreator.js similarity index 100% rename from j2s/JV/StateCreator.js rename to assets/compressed_sensing_2018/j2s/JV/StateCreator.js diff --git a/j2s/JV/StateManager.js b/assets/compressed_sensing_2018/j2s/JV/StateManager.js similarity index 100% rename from j2s/JV/StateManager.js rename to assets/compressed_sensing_2018/j2s/JV/StateManager.js diff --git a/j2s/JV/StatusManager.js b/assets/compressed_sensing_2018/j2s/JV/StatusManager.js similarity index 100% rename from j2s/JV/StatusManager.js rename to assets/compressed_sensing_2018/j2s/JV/StatusManager.js diff --git a/j2s/JV/TransformManager.js b/assets/compressed_sensing_2018/j2s/JV/TransformManager.js similarity index 100% rename from j2s/JV/TransformManager.js rename to assets/compressed_sensing_2018/j2s/JV/TransformManager.js diff --git a/j2s/JV/TransformManager4D.js b/assets/compressed_sensing_2018/j2s/JV/TransformManager4D.js similarity index 100% rename from j2s/JV/TransformManager4D.js rename to assets/compressed_sensing_2018/j2s/JV/TransformManager4D.js diff --git a/j2s/JV/Viewer.js b/assets/compressed_sensing_2018/j2s/JV/Viewer.js similarity index 100% rename from j2s/JV/Viewer.js rename to assets/compressed_sensing_2018/j2s/JV/Viewer.js diff --git a/j2s/JV/binding/Binding.js b/assets/compressed_sensing_2018/j2s/JV/binding/Binding.js similarity index 100% rename from j2s/JV/binding/Binding.js rename to assets/compressed_sensing_2018/j2s/JV/binding/Binding.js diff --git a/j2s/JV/binding/DragBinding.js b/assets/compressed_sensing_2018/j2s/JV/binding/DragBinding.js similarity index 100% rename from j2s/JV/binding/DragBinding.js rename to assets/compressed_sensing_2018/j2s/JV/binding/DragBinding.js diff --git a/j2s/JV/binding/JmolBinding.js b/assets/compressed_sensing_2018/j2s/JV/binding/JmolBinding.js similarity index 100% rename from j2s/JV/binding/JmolBinding.js rename to assets/compressed_sensing_2018/j2s/JV/binding/JmolBinding.js diff --git a/j2s/JV/binding/PfaatBinding.js b/assets/compressed_sensing_2018/j2s/JV/binding/PfaatBinding.js similarity index 100% rename from j2s/JV/binding/PfaatBinding.js rename to assets/compressed_sensing_2018/j2s/JV/binding/PfaatBinding.js diff --git a/j2s/JV/binding/RasmolBinding.js b/assets/compressed_sensing_2018/j2s/JV/binding/RasmolBinding.js similarity index 100% rename from j2s/JV/binding/RasmolBinding.js rename to assets/compressed_sensing_2018/j2s/JV/binding/RasmolBinding.js diff --git a/j2s/JV/package.js b/assets/compressed_sensing_2018/j2s/JV/package.js similarity index 100% rename from j2s/JV/package.js rename to assets/compressed_sensing_2018/j2s/JV/package.js diff --git a/j2s/Jmol.properties b/assets/compressed_sensing_2018/j2s/Jmol.properties similarity index 100% rename from j2s/Jmol.properties rename to assets/compressed_sensing_2018/j2s/Jmol.properties diff --git a/j2s/core/corebinary.js b/assets/compressed_sensing_2018/j2s/core/corebinary.js similarity index 100% rename from j2s/core/corebinary.js rename to assets/compressed_sensing_2018/j2s/core/corebinary.js diff --git a/j2s/core/corebinary.z.js b/assets/compressed_sensing_2018/j2s/core/corebinary.z.js similarity index 100% rename from j2s/core/corebinary.z.js rename to assets/compressed_sensing_2018/j2s/core/corebinary.z.js diff --git a/j2s/core/corebio.js b/assets/compressed_sensing_2018/j2s/core/corebio.js similarity index 100% rename from j2s/core/corebio.js rename to assets/compressed_sensing_2018/j2s/core/corebio.js diff --git a/j2s/core/corebio.z.js b/assets/compressed_sensing_2018/j2s/core/corebio.z.js similarity index 100% rename from j2s/core/corebio.z.js rename to assets/compressed_sensing_2018/j2s/core/corebio.z.js diff --git a/j2s/core/coreconsole.js b/assets/compressed_sensing_2018/j2s/core/coreconsole.js similarity index 100% rename from j2s/core/coreconsole.js rename to assets/compressed_sensing_2018/j2s/core/coreconsole.js diff --git a/j2s/core/coreconsole.z.js b/assets/compressed_sensing_2018/j2s/core/coreconsole.z.js similarity index 100% rename from j2s/core/coreconsole.z.js rename to assets/compressed_sensing_2018/j2s/core/coreconsole.z.js diff --git a/j2s/core/corejmol.js b/assets/compressed_sensing_2018/j2s/core/corejmol.js similarity index 100% rename from j2s/core/corejmol.js rename to assets/compressed_sensing_2018/j2s/core/corejmol.js diff --git a/j2s/core/corejmol.z.js b/assets/compressed_sensing_2018/j2s/core/corejmol.z.js similarity index 100% rename from j2s/core/corejmol.z.js rename to assets/compressed_sensing_2018/j2s/core/corejmol.z.js diff --git a/j2s/core/corejmoljsv.js b/assets/compressed_sensing_2018/j2s/core/corejmoljsv.js similarity index 100% rename from j2s/core/corejmoljsv.js rename to assets/compressed_sensing_2018/j2s/core/corejmoljsv.js diff --git a/j2s/core/corejmoljsv.z.js b/assets/compressed_sensing_2018/j2s/core/corejmoljsv.z.js similarity index 100% rename from j2s/core/corejmoljsv.z.js rename to assets/compressed_sensing_2018/j2s/core/corejmoljsv.z.js diff --git a/j2s/core/corejsv.js b/assets/compressed_sensing_2018/j2s/core/corejsv.js similarity index 100% rename from j2s/core/corejsv.js rename to assets/compressed_sensing_2018/j2s/core/corejsv.js diff --git a/j2s/core/corejsv.z.js b/assets/compressed_sensing_2018/j2s/core/corejsv.z.js similarity index 100% rename from j2s/core/corejsv.z.js rename to assets/compressed_sensing_2018/j2s/core/corejsv.z.js diff --git a/j2s/core/corejsvdialog.js b/assets/compressed_sensing_2018/j2s/core/corejsvdialog.js similarity index 100% rename from j2s/core/corejsvdialog.js rename to assets/compressed_sensing_2018/j2s/core/corejsvdialog.js diff --git a/j2s/core/corejsvdialog.z.js b/assets/compressed_sensing_2018/j2s/core/corejsvdialog.z.js similarity index 100% rename from j2s/core/corejsvdialog.z.js rename to assets/compressed_sensing_2018/j2s/core/corejsvdialog.z.js diff --git a/j2s/core/corejsvexport.js b/assets/compressed_sensing_2018/j2s/core/corejsvexport.js similarity index 100% rename from j2s/core/corejsvexport.js rename to assets/compressed_sensing_2018/j2s/core/corejsvexport.js diff --git a/j2s/core/corejsvexport.z.js b/assets/compressed_sensing_2018/j2s/core/corejsvexport.z.js similarity index 100% rename from j2s/core/corejsvexport.z.js rename to assets/compressed_sensing_2018/j2s/core/corejsvexport.z.js diff --git a/j2s/core/corejsvmenu.js b/assets/compressed_sensing_2018/j2s/core/corejsvmenu.js similarity index 100% rename from j2s/core/corejsvmenu.js rename to assets/compressed_sensing_2018/j2s/core/corejsvmenu.js diff --git a/j2s/core/corejsvmenu.z.js b/assets/compressed_sensing_2018/j2s/core/corejsvmenu.z.js similarity index 100% rename from j2s/core/corejsvmenu.z.js rename to assets/compressed_sensing_2018/j2s/core/corejsvmenu.z.js diff --git a/j2s/core/coremenu.js b/assets/compressed_sensing_2018/j2s/core/coremenu.js similarity index 100% rename from j2s/core/coremenu.js rename to assets/compressed_sensing_2018/j2s/core/coremenu.js diff --git a/j2s/core/coremenu.z.js b/assets/compressed_sensing_2018/j2s/core/coremenu.z.js similarity index 100% rename from j2s/core/coremenu.z.js rename to assets/compressed_sensing_2018/j2s/core/coremenu.z.js diff --git a/j2s/core/coremin.js b/assets/compressed_sensing_2018/j2s/core/coremin.js similarity index 100% rename from j2s/core/coremin.js rename to assets/compressed_sensing_2018/j2s/core/coremin.js diff --git a/j2s/core/coremin.z.js b/assets/compressed_sensing_2018/j2s/core/coremin.z.js similarity index 100% rename from j2s/core/coremin.z.js rename to assets/compressed_sensing_2018/j2s/core/coremin.z.js diff --git a/j2s/core/coreprop.js b/assets/compressed_sensing_2018/j2s/core/coreprop.js similarity index 100% rename from j2s/core/coreprop.js rename to assets/compressed_sensing_2018/j2s/core/coreprop.js diff --git a/j2s/core/coreprop.z.js b/assets/compressed_sensing_2018/j2s/core/coreprop.z.js similarity index 100% rename from j2s/core/coreprop.z.js rename to assets/compressed_sensing_2018/j2s/core/coreprop.z.js diff --git a/j2s/core/corepymol.js b/assets/compressed_sensing_2018/j2s/core/corepymol.js similarity index 100% rename from j2s/core/corepymol.js rename to assets/compressed_sensing_2018/j2s/core/corepymol.js diff --git a/j2s/core/corepymol.z.js b/assets/compressed_sensing_2018/j2s/core/corepymol.z.js similarity index 100% rename from j2s/core/corepymol.z.js rename to assets/compressed_sensing_2018/j2s/core/corepymol.z.js diff --git a/j2s/core/corescript.js b/assets/compressed_sensing_2018/j2s/core/corescript.js similarity index 100% rename from j2s/core/corescript.js rename to assets/compressed_sensing_2018/j2s/core/corescript.js diff --git a/j2s/core/corescript.z.js b/assets/compressed_sensing_2018/j2s/core/corescript.z.js similarity index 100% rename from j2s/core/corescript.z.js rename to assets/compressed_sensing_2018/j2s/core/corescript.z.js diff --git a/j2s/core/corescriptcmd.js b/assets/compressed_sensing_2018/j2s/core/corescriptcmd.js similarity index 100% rename from j2s/core/corescriptcmd.js rename to assets/compressed_sensing_2018/j2s/core/corescriptcmd.js diff --git a/j2s/core/corescriptcmd.z.js b/assets/compressed_sensing_2018/j2s/core/corescriptcmd.z.js similarity index 100% rename from j2s/core/corescriptcmd.z.js rename to assets/compressed_sensing_2018/j2s/core/corescriptcmd.z.js diff --git a/j2s/core/corescriptmath.js b/assets/compressed_sensing_2018/j2s/core/corescriptmath.js similarity index 100% rename from j2s/core/corescriptmath.js rename to assets/compressed_sensing_2018/j2s/core/corescriptmath.js diff --git a/j2s/core/corescriptmath.z.js b/assets/compressed_sensing_2018/j2s/core/corescriptmath.z.js similarity index 100% rename from j2s/core/corescriptmath.z.js rename to assets/compressed_sensing_2018/j2s/core/corescriptmath.z.js diff --git a/j2s/core/coresmiles.js b/assets/compressed_sensing_2018/j2s/core/coresmiles.js similarity index 100% rename from j2s/core/coresmiles.js rename to assets/compressed_sensing_2018/j2s/core/coresmiles.js diff --git a/j2s/core/coresmiles.z.js b/assets/compressed_sensing_2018/j2s/core/coresmiles.z.js similarity index 100% rename from j2s/core/coresmiles.z.js rename to assets/compressed_sensing_2018/j2s/core/coresmiles.z.js diff --git a/j2s/core/corestate.js b/assets/compressed_sensing_2018/j2s/core/corestate.js similarity index 100% rename from j2s/core/corestate.js rename to assets/compressed_sensing_2018/j2s/core/corestate.js diff --git a/j2s/core/corestate.z.js b/assets/compressed_sensing_2018/j2s/core/corestate.z.js similarity index 100% rename from j2s/core/corestate.z.js rename to assets/compressed_sensing_2018/j2s/core/corestate.z.js diff --git a/j2s/core/coresurface.js b/assets/compressed_sensing_2018/j2s/core/coresurface.js similarity index 100% rename from j2s/core/coresurface.js rename to assets/compressed_sensing_2018/j2s/core/coresurface.js diff --git a/j2s/core/coresurface.z.js b/assets/compressed_sensing_2018/j2s/core/coresurface.z.js similarity index 100% rename from j2s/core/coresurface.z.js rename to assets/compressed_sensing_2018/j2s/core/coresurface.z.js diff --git a/j2s/core/coreswing.js b/assets/compressed_sensing_2018/j2s/core/coreswing.js similarity index 100% rename from j2s/core/coreswing.js rename to assets/compressed_sensing_2018/j2s/core/coreswing.js diff --git a/j2s/core/coreswing.z.js b/assets/compressed_sensing_2018/j2s/core/coreswing.z.js similarity index 100% rename from j2s/core/coreswing.z.js rename to assets/compressed_sensing_2018/j2s/core/coreswing.z.js diff --git a/j2s/core/coresym.js b/assets/compressed_sensing_2018/j2s/core/coresym.js similarity index 100% rename from j2s/core/coresym.js rename to assets/compressed_sensing_2018/j2s/core/coresym.js diff --git a/j2s/core/coresym.z.js b/assets/compressed_sensing_2018/j2s/core/coresym.z.js similarity index 100% rename from j2s/core/coresym.z.js rename to assets/compressed_sensing_2018/j2s/core/coresym.z.js diff --git a/j2s/core/coretext.js b/assets/compressed_sensing_2018/j2s/core/coretext.js similarity index 100% rename from j2s/core/coretext.js rename to assets/compressed_sensing_2018/j2s/core/coretext.js diff --git a/j2s/core/coretext.z.js b/assets/compressed_sensing_2018/j2s/core/coretext.z.js similarity index 100% rename from j2s/core/coretext.z.js rename to assets/compressed_sensing_2018/j2s/core/coretext.z.js diff --git a/j2s/core/corezip.js b/assets/compressed_sensing_2018/j2s/core/corezip.js similarity index 100% rename from j2s/core/corezip.js rename to assets/compressed_sensing_2018/j2s/core/corezip.js diff --git a/j2s/core/corezip.z.js b/assets/compressed_sensing_2018/j2s/core/corezip.z.js similarity index 100% rename from j2s/core/corezip.z.js rename to assets/compressed_sensing_2018/j2s/core/corezip.z.js diff --git a/j2s/core/package.js b/assets/compressed_sensing_2018/j2s/core/package.js similarity index 100% rename from j2s/core/package.js rename to assets/compressed_sensing_2018/j2s/core/package.js diff --git a/j2s/img/JSmol_spinner.gif b/assets/compressed_sensing_2018/j2s/img/JSmol_spinner.gif similarity index 100% rename from j2s/img/JSmol_spinner.gif rename to assets/compressed_sensing_2018/j2s/img/JSmol_spinner.gif diff --git a/j2s/img/cursor_wait.gif b/assets/compressed_sensing_2018/j2s/img/cursor_wait.gif similarity index 100% rename from j2s/img/cursor_wait.gif rename to assets/compressed_sensing_2018/j2s/img/cursor_wait.gif diff --git a/j2s/img/play_make_live.jpg b/assets/compressed_sensing_2018/j2s/img/play_make_live.jpg similarity index 100% rename from j2s/img/play_make_live.jpg rename to assets/compressed_sensing_2018/j2s/img/play_make_live.jpg diff --git a/j2s/java/awt/Event.js b/assets/compressed_sensing_2018/j2s/java/awt/Event.js similarity index 100% rename from j2s/java/awt/Event.js rename to assets/compressed_sensing_2018/j2s/java/awt/Event.js diff --git a/j2s/java/awt/event/InputEvent.js b/assets/compressed_sensing_2018/j2s/java/awt/event/InputEvent.js similarity index 100% rename from j2s/java/awt/event/InputEvent.js rename to assets/compressed_sensing_2018/j2s/java/awt/event/InputEvent.js diff --git a/j2s/java/awt/event/KeyEvent.js b/assets/compressed_sensing_2018/j2s/java/awt/event/KeyEvent.js similarity index 100% rename from j2s/java/awt/event/KeyEvent.js rename to assets/compressed_sensing_2018/j2s/java/awt/event/KeyEvent.js diff --git a/j2s/java/awt/event/MouseEvent.js b/assets/compressed_sensing_2018/j2s/java/awt/event/MouseEvent.js similarity index 100% rename from j2s/java/awt/event/MouseEvent.js rename to assets/compressed_sensing_2018/j2s/java/awt/event/MouseEvent.js diff --git a/j2s/java/awt/event/MouseWheelEvent.js b/assets/compressed_sensing_2018/j2s/java/awt/event/MouseWheelEvent.js similarity index 100% rename from j2s/java/awt/event/MouseWheelEvent.js rename to assets/compressed_sensing_2018/j2s/java/awt/event/MouseWheelEvent.js diff --git a/j2s/java/error.z.js b/assets/compressed_sensing_2018/j2s/java/error.z.js similarity index 100% rename from j2s/java/error.z.js rename to assets/compressed_sensing_2018/j2s/java/error.z.js diff --git a/j2s/java/io/BufferedInputStream.js b/assets/compressed_sensing_2018/j2s/java/io/BufferedInputStream.js similarity index 100% rename from j2s/java/io/BufferedInputStream.js rename to assets/compressed_sensing_2018/j2s/java/io/BufferedInputStream.js diff --git a/j2s/java/io/BufferedOutputStream.js b/assets/compressed_sensing_2018/j2s/java/io/BufferedOutputStream.js similarity index 100% rename from j2s/java/io/BufferedOutputStream.js rename to assets/compressed_sensing_2018/j2s/java/io/BufferedOutputStream.js diff --git a/j2s/java/io/BufferedReader.js b/assets/compressed_sensing_2018/j2s/java/io/BufferedReader.js similarity index 100% rename from j2s/java/io/BufferedReader.js rename to assets/compressed_sensing_2018/j2s/java/io/BufferedReader.js diff --git a/j2s/java/io/BufferedWriter.js b/assets/compressed_sensing_2018/j2s/java/io/BufferedWriter.js similarity index 100% rename from j2s/java/io/BufferedWriter.js rename to assets/compressed_sensing_2018/j2s/java/io/BufferedWriter.js diff --git a/j2s/java/io/ByteArrayInputStream.js b/assets/compressed_sensing_2018/j2s/java/io/ByteArrayInputStream.js similarity index 100% rename from j2s/java/io/ByteArrayInputStream.js rename to assets/compressed_sensing_2018/j2s/java/io/ByteArrayInputStream.js diff --git a/j2s/java/io/ByteArrayOutputStream.js b/assets/compressed_sensing_2018/j2s/java/io/ByteArrayOutputStream.js similarity index 100% rename from j2s/java/io/ByteArrayOutputStream.js rename to assets/compressed_sensing_2018/j2s/java/io/ByteArrayOutputStream.js diff --git a/j2s/java/io/CharArrayReader.js b/assets/compressed_sensing_2018/j2s/java/io/CharArrayReader.js similarity index 100% rename from j2s/java/io/CharArrayReader.js rename to assets/compressed_sensing_2018/j2s/java/io/CharArrayReader.js diff --git a/j2s/java/io/CharArrayWriter.js b/assets/compressed_sensing_2018/j2s/java/io/CharArrayWriter.js similarity index 100% rename from j2s/java/io/CharArrayWriter.js rename to assets/compressed_sensing_2018/j2s/java/io/CharArrayWriter.js diff --git a/j2s/java/io/CharConversionException.js b/assets/compressed_sensing_2018/j2s/java/io/CharConversionException.js similarity index 100% rename from j2s/java/io/CharConversionException.js rename to assets/compressed_sensing_2018/j2s/java/io/CharConversionException.js diff --git a/j2s/java/io/Closeable.js b/assets/compressed_sensing_2018/j2s/java/io/Closeable.js similarity index 100% rename from j2s/java/io/Closeable.js rename to assets/compressed_sensing_2018/j2s/java/io/Closeable.js diff --git a/j2s/java/io/DataInput.js b/assets/compressed_sensing_2018/j2s/java/io/DataInput.js similarity index 100% rename from j2s/java/io/DataInput.js rename to assets/compressed_sensing_2018/j2s/java/io/DataInput.js diff --git a/j2s/java/io/DataInputStream.js b/assets/compressed_sensing_2018/j2s/java/io/DataInputStream.js similarity index 100% rename from j2s/java/io/DataInputStream.js rename to assets/compressed_sensing_2018/j2s/java/io/DataInputStream.js diff --git a/j2s/java/io/DataOutput.js b/assets/compressed_sensing_2018/j2s/java/io/DataOutput.js similarity index 100% rename from j2s/java/io/DataOutput.js rename to assets/compressed_sensing_2018/j2s/java/io/DataOutput.js diff --git a/j2s/java/io/EOFException.js b/assets/compressed_sensing_2018/j2s/java/io/EOFException.js similarity index 100% rename from j2s/java/io/EOFException.js rename to assets/compressed_sensing_2018/j2s/java/io/EOFException.js diff --git a/j2s/java/io/Externalizable.js b/assets/compressed_sensing_2018/j2s/java/io/Externalizable.js similarity index 100% rename from j2s/java/io/Externalizable.js rename to assets/compressed_sensing_2018/j2s/java/io/Externalizable.js diff --git a/j2s/java/io/FileInputStream.js b/assets/compressed_sensing_2018/j2s/java/io/FileInputStream.js similarity index 100% rename from j2s/java/io/FileInputStream.js rename to assets/compressed_sensing_2018/j2s/java/io/FileInputStream.js diff --git a/j2s/java/io/FileNotFoundException.js b/assets/compressed_sensing_2018/j2s/java/io/FileNotFoundException.js similarity index 100% rename from j2s/java/io/FileNotFoundException.js rename to assets/compressed_sensing_2018/j2s/java/io/FileNotFoundException.js diff --git a/j2s/java/io/FileOutputStream.js b/assets/compressed_sensing_2018/j2s/java/io/FileOutputStream.js similarity index 100% rename from j2s/java/io/FileOutputStream.js rename to assets/compressed_sensing_2018/j2s/java/io/FileOutputStream.js diff --git a/j2s/java/io/FilterInputStream.js b/assets/compressed_sensing_2018/j2s/java/io/FilterInputStream.js similarity index 100% rename from j2s/java/io/FilterInputStream.js rename to assets/compressed_sensing_2018/j2s/java/io/FilterInputStream.js diff --git a/j2s/java/io/FilterOutputStream.js b/assets/compressed_sensing_2018/j2s/java/io/FilterOutputStream.js similarity index 100% rename from j2s/java/io/FilterOutputStream.js rename to assets/compressed_sensing_2018/j2s/java/io/FilterOutputStream.js diff --git a/j2s/java/io/Flushable.js b/assets/compressed_sensing_2018/j2s/java/io/Flushable.js similarity index 100% rename from j2s/java/io/Flushable.js rename to assets/compressed_sensing_2018/j2s/java/io/Flushable.js diff --git a/j2s/java/io/IOException.js b/assets/compressed_sensing_2018/j2s/java/io/IOException.js similarity index 100% rename from j2s/java/io/IOException.js rename to assets/compressed_sensing_2018/j2s/java/io/IOException.js diff --git a/j2s/java/io/InputStream.js b/assets/compressed_sensing_2018/j2s/java/io/InputStream.js similarity index 100% rename from j2s/java/io/InputStream.js rename to assets/compressed_sensing_2018/j2s/java/io/InputStream.js diff --git a/j2s/java/io/InputStreamReader.js b/assets/compressed_sensing_2018/j2s/java/io/InputStreamReader.js similarity index 100% rename from j2s/java/io/InputStreamReader.js rename to assets/compressed_sensing_2018/j2s/java/io/InputStreamReader.js diff --git a/j2s/java/io/InterruptedIOException.js b/assets/compressed_sensing_2018/j2s/java/io/InterruptedIOException.js similarity index 100% rename from j2s/java/io/InterruptedIOException.js rename to assets/compressed_sensing_2018/j2s/java/io/InterruptedIOException.js diff --git a/j2s/java/io/InvalidClassException.js b/assets/compressed_sensing_2018/j2s/java/io/InvalidClassException.js similarity index 100% rename from j2s/java/io/InvalidClassException.js rename to assets/compressed_sensing_2018/j2s/java/io/InvalidClassException.js diff --git a/j2s/java/io/InvalidObjectException.js b/assets/compressed_sensing_2018/j2s/java/io/InvalidObjectException.js similarity index 100% rename from j2s/java/io/InvalidObjectException.js rename to assets/compressed_sensing_2018/j2s/java/io/InvalidObjectException.js diff --git a/j2s/java/io/NotActiveException.js b/assets/compressed_sensing_2018/j2s/java/io/NotActiveException.js similarity index 100% rename from j2s/java/io/NotActiveException.js rename to assets/compressed_sensing_2018/j2s/java/io/NotActiveException.js diff --git a/j2s/java/io/NotSerializableException.js b/assets/compressed_sensing_2018/j2s/java/io/NotSerializableException.js similarity index 100% rename from j2s/java/io/NotSerializableException.js rename to assets/compressed_sensing_2018/j2s/java/io/NotSerializableException.js diff --git a/j2s/java/io/ObjectStreamException.js b/assets/compressed_sensing_2018/j2s/java/io/ObjectStreamException.js similarity index 100% rename from j2s/java/io/ObjectStreamException.js rename to assets/compressed_sensing_2018/j2s/java/io/ObjectStreamException.js diff --git a/j2s/java/io/ObjectStreamField.js b/assets/compressed_sensing_2018/j2s/java/io/ObjectStreamField.js similarity index 100% rename from j2s/java/io/ObjectStreamField.js rename to assets/compressed_sensing_2018/j2s/java/io/ObjectStreamField.js diff --git a/j2s/java/io/OptionalDataException.js b/assets/compressed_sensing_2018/j2s/java/io/OptionalDataException.js similarity index 100% rename from j2s/java/io/OptionalDataException.js rename to assets/compressed_sensing_2018/j2s/java/io/OptionalDataException.js diff --git a/j2s/java/io/OutputStream.js b/assets/compressed_sensing_2018/j2s/java/io/OutputStream.js similarity index 100% rename from j2s/java/io/OutputStream.js rename to assets/compressed_sensing_2018/j2s/java/io/OutputStream.js diff --git a/j2s/java/io/PushbackInputStream.js b/assets/compressed_sensing_2018/j2s/java/io/PushbackInputStream.js similarity index 100% rename from j2s/java/io/PushbackInputStream.js rename to assets/compressed_sensing_2018/j2s/java/io/PushbackInputStream.js diff --git a/j2s/java/io/Reader.js b/assets/compressed_sensing_2018/j2s/java/io/Reader.js similarity index 100% rename from j2s/java/io/Reader.js rename to assets/compressed_sensing_2018/j2s/java/io/Reader.js diff --git a/j2s/java/io/SequenceInputStream.js b/assets/compressed_sensing_2018/j2s/java/io/SequenceInputStream.js similarity index 100% rename from j2s/java/io/SequenceInputStream.js rename to assets/compressed_sensing_2018/j2s/java/io/SequenceInputStream.js diff --git a/j2s/java/io/Serializable.js b/assets/compressed_sensing_2018/j2s/java/io/Serializable.js similarity index 100% rename from j2s/java/io/Serializable.js rename to assets/compressed_sensing_2018/j2s/java/io/Serializable.js diff --git a/j2s/java/io/StreamCorruptedException.js b/assets/compressed_sensing_2018/j2s/java/io/StreamCorruptedException.js similarity index 100% rename from j2s/java/io/StreamCorruptedException.js rename to assets/compressed_sensing_2018/j2s/java/io/StreamCorruptedException.js diff --git a/j2s/java/io/StringBufferInputStream.js b/assets/compressed_sensing_2018/j2s/java/io/StringBufferInputStream.js similarity index 100% rename from j2s/java/io/StringBufferInputStream.js rename to assets/compressed_sensing_2018/j2s/java/io/StringBufferInputStream.js diff --git a/j2s/java/io/StringReader.js b/assets/compressed_sensing_2018/j2s/java/io/StringReader.js similarity index 100% rename from j2s/java/io/StringReader.js rename to assets/compressed_sensing_2018/j2s/java/io/StringReader.js diff --git a/j2s/java/io/StringWriter.js b/assets/compressed_sensing_2018/j2s/java/io/StringWriter.js similarity index 100% rename from j2s/java/io/StringWriter.js rename to assets/compressed_sensing_2018/j2s/java/io/StringWriter.js diff --git a/j2s/java/io/SyncFailedException.js b/assets/compressed_sensing_2018/j2s/java/io/SyncFailedException.js similarity index 100% rename from j2s/java/io/SyncFailedException.js rename to assets/compressed_sensing_2018/j2s/java/io/SyncFailedException.js diff --git a/j2s/java/io/UTFDataFormatException.js b/assets/compressed_sensing_2018/j2s/java/io/UTFDataFormatException.js similarity index 100% rename from j2s/java/io/UTFDataFormatException.js rename to assets/compressed_sensing_2018/j2s/java/io/UTFDataFormatException.js diff --git a/j2s/java/io/UnsupportedEncodingException.js b/assets/compressed_sensing_2018/j2s/java/io/UnsupportedEncodingException.js similarity index 100% rename from j2s/java/io/UnsupportedEncodingException.js rename to assets/compressed_sensing_2018/j2s/java/io/UnsupportedEncodingException.js diff --git a/j2s/java/io/WriteAbortedException.js b/assets/compressed_sensing_2018/j2s/java/io/WriteAbortedException.js similarity index 100% rename from j2s/java/io/WriteAbortedException.js rename to assets/compressed_sensing_2018/j2s/java/io/WriteAbortedException.js diff --git a/j2s/java/io/Writer.js b/assets/compressed_sensing_2018/j2s/java/io/Writer.js similarity index 100% rename from j2s/java/io/Writer.js rename to assets/compressed_sensing_2018/j2s/java/io/Writer.js diff --git a/j2s/java/lang/AbstractMethodError.js b/assets/compressed_sensing_2018/j2s/java/lang/AbstractMethodError.js similarity index 100% rename from j2s/java/lang/AbstractMethodError.js rename to assets/compressed_sensing_2018/j2s/java/lang/AbstractMethodError.js diff --git a/j2s/java/lang/AbstractStringBuilder.js b/assets/compressed_sensing_2018/j2s/java/lang/AbstractStringBuilder.js similarity index 100% rename from j2s/java/lang/AbstractStringBuilder.js rename to assets/compressed_sensing_2018/j2s/java/lang/AbstractStringBuilder.js diff --git a/j2s/java/lang/Appendable.js b/assets/compressed_sensing_2018/j2s/java/lang/Appendable.js similarity index 100% rename from j2s/java/lang/Appendable.js rename to assets/compressed_sensing_2018/j2s/java/lang/Appendable.js diff --git a/j2s/java/lang/ArithmeticException.js b/assets/compressed_sensing_2018/j2s/java/lang/ArithmeticException.js similarity index 100% rename from j2s/java/lang/ArithmeticException.js rename to assets/compressed_sensing_2018/j2s/java/lang/ArithmeticException.js diff --git a/j2s/java/lang/ArrayIndexOutOfBoundsException.js b/assets/compressed_sensing_2018/j2s/java/lang/ArrayIndexOutOfBoundsException.js similarity index 100% rename from j2s/java/lang/ArrayIndexOutOfBoundsException.js rename to assets/compressed_sensing_2018/j2s/java/lang/ArrayIndexOutOfBoundsException.js diff --git a/j2s/java/lang/ArrayStoreException.js b/assets/compressed_sensing_2018/j2s/java/lang/ArrayStoreException.js similarity index 100% rename from j2s/java/lang/ArrayStoreException.js rename to assets/compressed_sensing_2018/j2s/java/lang/ArrayStoreException.js diff --git a/j2s/java/lang/AssertionError.js b/assets/compressed_sensing_2018/j2s/java/lang/AssertionError.js similarity index 100% rename from j2s/java/lang/AssertionError.js rename to assets/compressed_sensing_2018/j2s/java/lang/AssertionError.js diff --git a/j2s/java/lang/Boolean.js b/assets/compressed_sensing_2018/j2s/java/lang/Boolean.js similarity index 100% rename from j2s/java/lang/Boolean.js rename to assets/compressed_sensing_2018/j2s/java/lang/Boolean.js diff --git a/j2s/java/lang/Byte.js b/assets/compressed_sensing_2018/j2s/java/lang/Byte.js similarity index 100% rename from j2s/java/lang/Byte.js rename to assets/compressed_sensing_2018/j2s/java/lang/Byte.js diff --git a/j2s/java/lang/CharSequence.js b/assets/compressed_sensing_2018/j2s/java/lang/CharSequence.js similarity index 100% rename from j2s/java/lang/CharSequence.js rename to assets/compressed_sensing_2018/j2s/java/lang/CharSequence.js diff --git a/j2s/java/lang/Character.js b/assets/compressed_sensing_2018/j2s/java/lang/Character.js similarity index 100% rename from j2s/java/lang/Character.js rename to assets/compressed_sensing_2018/j2s/java/lang/Character.js diff --git a/j2s/java/lang/Class.js b/assets/compressed_sensing_2018/j2s/java/lang/Class.js similarity index 100% rename from j2s/java/lang/Class.js rename to assets/compressed_sensing_2018/j2s/java/lang/Class.js diff --git a/j2s/java/lang/ClassCastException.js b/assets/compressed_sensing_2018/j2s/java/lang/ClassCastException.js similarity index 100% rename from j2s/java/lang/ClassCastException.js rename to assets/compressed_sensing_2018/j2s/java/lang/ClassCastException.js diff --git a/j2s/java/lang/ClassCircularityError.js b/assets/compressed_sensing_2018/j2s/java/lang/ClassCircularityError.js similarity index 100% rename from j2s/java/lang/ClassCircularityError.js rename to assets/compressed_sensing_2018/j2s/java/lang/ClassCircularityError.js diff --git a/j2s/java/lang/ClassExt.js b/assets/compressed_sensing_2018/j2s/java/lang/ClassExt.js similarity index 100% rename from j2s/java/lang/ClassExt.js rename to assets/compressed_sensing_2018/j2s/java/lang/ClassExt.js diff --git a/j2s/java/lang/ClassFormatError.js b/assets/compressed_sensing_2018/j2s/java/lang/ClassFormatError.js similarity index 100% rename from j2s/java/lang/ClassFormatError.js rename to assets/compressed_sensing_2018/j2s/java/lang/ClassFormatError.js diff --git a/j2s/java/lang/ClassLoader.js b/assets/compressed_sensing_2018/j2s/java/lang/ClassLoader.js similarity index 100% rename from j2s/java/lang/ClassLoader.js rename to assets/compressed_sensing_2018/j2s/java/lang/ClassLoader.js diff --git a/j2s/java/lang/ClassLoaderProgressMonitor.js b/assets/compressed_sensing_2018/j2s/java/lang/ClassLoaderProgressMonitor.js similarity index 100% rename from j2s/java/lang/ClassLoaderProgressMonitor.js rename to assets/compressed_sensing_2018/j2s/java/lang/ClassLoaderProgressMonitor.js diff --git a/j2s/java/lang/ClassNotFoundException.js b/assets/compressed_sensing_2018/j2s/java/lang/ClassNotFoundException.js similarity index 100% rename from j2s/java/lang/ClassNotFoundException.js rename to assets/compressed_sensing_2018/j2s/java/lang/ClassNotFoundException.js diff --git a/j2s/java/lang/CloneNotSupportedException.js b/assets/compressed_sensing_2018/j2s/java/lang/CloneNotSupportedException.js similarity index 100% rename from j2s/java/lang/CloneNotSupportedException.js rename to assets/compressed_sensing_2018/j2s/java/lang/CloneNotSupportedException.js diff --git a/j2s/java/lang/Cloneable.js b/assets/compressed_sensing_2018/j2s/java/lang/Cloneable.js similarity index 100% rename from j2s/java/lang/Cloneable.js rename to assets/compressed_sensing_2018/j2s/java/lang/Cloneable.js diff --git a/j2s/java/lang/Comparable.js b/assets/compressed_sensing_2018/j2s/java/lang/Comparable.js similarity index 100% rename from j2s/java/lang/Comparable.js rename to assets/compressed_sensing_2018/j2s/java/lang/Comparable.js diff --git a/j2s/java/lang/Console.js b/assets/compressed_sensing_2018/j2s/java/lang/Console.js similarity index 100% rename from j2s/java/lang/Console.js rename to assets/compressed_sensing_2018/j2s/java/lang/Console.js diff --git a/j2s/java/lang/Double.js b/assets/compressed_sensing_2018/j2s/java/lang/Double.js similarity index 100% rename from j2s/java/lang/Double.js rename to assets/compressed_sensing_2018/j2s/java/lang/Double.js diff --git a/j2s/java/lang/Encoding.js b/assets/compressed_sensing_2018/j2s/java/lang/Encoding.js similarity index 100% rename from j2s/java/lang/Encoding.js rename to assets/compressed_sensing_2018/j2s/java/lang/Encoding.js diff --git a/j2s/java/lang/Enum.js b/assets/compressed_sensing_2018/j2s/java/lang/Enum.js similarity index 100% rename from j2s/java/lang/Enum.js rename to assets/compressed_sensing_2018/j2s/java/lang/Enum.js diff --git a/j2s/java/lang/Error.js b/assets/compressed_sensing_2018/j2s/java/lang/Error.js similarity index 100% rename from j2s/java/lang/Error.js rename to assets/compressed_sensing_2018/j2s/java/lang/Error.js diff --git a/j2s/java/lang/Exception.js b/assets/compressed_sensing_2018/j2s/java/lang/Exception.js similarity index 100% rename from j2s/java/lang/Exception.js rename to assets/compressed_sensing_2018/j2s/java/lang/Exception.js diff --git a/j2s/java/lang/ExceptionInInitializerError.js b/assets/compressed_sensing_2018/j2s/java/lang/ExceptionInInitializerError.js similarity index 100% rename from j2s/java/lang/ExceptionInInitializerError.js rename to assets/compressed_sensing_2018/j2s/java/lang/ExceptionInInitializerError.js diff --git a/j2s/java/lang/Float.js b/assets/compressed_sensing_2018/j2s/java/lang/Float.js similarity index 100% rename from j2s/java/lang/Float.js rename to assets/compressed_sensing_2018/j2s/java/lang/Float.js diff --git a/j2s/java/lang/IllegalAccessError.js b/assets/compressed_sensing_2018/j2s/java/lang/IllegalAccessError.js similarity index 100% rename from j2s/java/lang/IllegalAccessError.js rename to assets/compressed_sensing_2018/j2s/java/lang/IllegalAccessError.js diff --git a/j2s/java/lang/IllegalAccessException.js b/assets/compressed_sensing_2018/j2s/java/lang/IllegalAccessException.js similarity index 100% rename from j2s/java/lang/IllegalAccessException.js rename to assets/compressed_sensing_2018/j2s/java/lang/IllegalAccessException.js diff --git a/j2s/java/lang/IllegalArgumentException.js b/assets/compressed_sensing_2018/j2s/java/lang/IllegalArgumentException.js similarity index 100% rename from j2s/java/lang/IllegalArgumentException.js rename to assets/compressed_sensing_2018/j2s/java/lang/IllegalArgumentException.js diff --git a/j2s/java/lang/IllegalMonitorStateException.js b/assets/compressed_sensing_2018/j2s/java/lang/IllegalMonitorStateException.js similarity index 100% rename from j2s/java/lang/IllegalMonitorStateException.js rename to assets/compressed_sensing_2018/j2s/java/lang/IllegalMonitorStateException.js diff --git a/j2s/java/lang/IllegalStateException.js b/assets/compressed_sensing_2018/j2s/java/lang/IllegalStateException.js similarity index 100% rename from j2s/java/lang/IllegalStateException.js rename to assets/compressed_sensing_2018/j2s/java/lang/IllegalStateException.js diff --git a/j2s/java/lang/IllegalThreadStateException.js b/assets/compressed_sensing_2018/j2s/java/lang/IllegalThreadStateException.js similarity index 100% rename from j2s/java/lang/IllegalThreadStateException.js rename to assets/compressed_sensing_2018/j2s/java/lang/IllegalThreadStateException.js diff --git a/j2s/java/lang/IncompatibleClassChangeError.js b/assets/compressed_sensing_2018/j2s/java/lang/IncompatibleClassChangeError.js similarity index 100% rename from j2s/java/lang/IncompatibleClassChangeError.js rename to assets/compressed_sensing_2018/j2s/java/lang/IncompatibleClassChangeError.js diff --git a/j2s/java/lang/IndexOutOfBoundsException.js b/assets/compressed_sensing_2018/j2s/java/lang/IndexOutOfBoundsException.js similarity index 100% rename from j2s/java/lang/IndexOutOfBoundsException.js rename to assets/compressed_sensing_2018/j2s/java/lang/IndexOutOfBoundsException.js diff --git a/j2s/java/lang/InstantiationError.js b/assets/compressed_sensing_2018/j2s/java/lang/InstantiationError.js similarity index 100% rename from j2s/java/lang/InstantiationError.js rename to assets/compressed_sensing_2018/j2s/java/lang/InstantiationError.js diff --git a/j2s/java/lang/InstantiationException.js b/assets/compressed_sensing_2018/j2s/java/lang/InstantiationException.js similarity index 100% rename from j2s/java/lang/InstantiationException.js rename to assets/compressed_sensing_2018/j2s/java/lang/InstantiationException.js diff --git a/j2s/java/lang/Integer.js b/assets/compressed_sensing_2018/j2s/java/lang/Integer.js similarity index 100% rename from j2s/java/lang/Integer.js rename to assets/compressed_sensing_2018/j2s/java/lang/Integer.js diff --git a/j2s/java/lang/InternalError.js b/assets/compressed_sensing_2018/j2s/java/lang/InternalError.js similarity index 100% rename from j2s/java/lang/InternalError.js rename to assets/compressed_sensing_2018/j2s/java/lang/InternalError.js diff --git a/j2s/java/lang/InterruptedException.js b/assets/compressed_sensing_2018/j2s/java/lang/InterruptedException.js similarity index 100% rename from j2s/java/lang/InterruptedException.js rename to assets/compressed_sensing_2018/j2s/java/lang/InterruptedException.js diff --git a/j2s/java/lang/Iterable.js b/assets/compressed_sensing_2018/j2s/java/lang/Iterable.js similarity index 100% rename from j2s/java/lang/Iterable.js rename to assets/compressed_sensing_2018/j2s/java/lang/Iterable.js diff --git a/j2s/java/lang/LinkageError.js b/assets/compressed_sensing_2018/j2s/java/lang/LinkageError.js similarity index 100% rename from j2s/java/lang/LinkageError.js rename to assets/compressed_sensing_2018/j2s/java/lang/LinkageError.js diff --git a/j2s/java/lang/Long.js b/assets/compressed_sensing_2018/j2s/java/lang/Long.js similarity index 100% rename from j2s/java/lang/Long.js rename to assets/compressed_sensing_2018/j2s/java/lang/Long.js diff --git a/j2s/java/lang/NegativeArraySizeException.js b/assets/compressed_sensing_2018/j2s/java/lang/NegativeArraySizeException.js similarity index 100% rename from j2s/java/lang/NegativeArraySizeException.js rename to assets/compressed_sensing_2018/j2s/java/lang/NegativeArraySizeException.js diff --git a/j2s/java/lang/NoClassDefFoundError.js b/assets/compressed_sensing_2018/j2s/java/lang/NoClassDefFoundError.js similarity index 100% rename from j2s/java/lang/NoClassDefFoundError.js rename to assets/compressed_sensing_2018/j2s/java/lang/NoClassDefFoundError.js diff --git a/j2s/java/lang/NoSuchFieldError.js b/assets/compressed_sensing_2018/j2s/java/lang/NoSuchFieldError.js similarity index 100% rename from j2s/java/lang/NoSuchFieldError.js rename to assets/compressed_sensing_2018/j2s/java/lang/NoSuchFieldError.js diff --git a/j2s/java/lang/NoSuchFieldException.js b/assets/compressed_sensing_2018/j2s/java/lang/NoSuchFieldException.js similarity index 100% rename from j2s/java/lang/NoSuchFieldException.js rename to assets/compressed_sensing_2018/j2s/java/lang/NoSuchFieldException.js diff --git a/j2s/java/lang/NoSuchMethodError.js b/assets/compressed_sensing_2018/j2s/java/lang/NoSuchMethodError.js similarity index 100% rename from j2s/java/lang/NoSuchMethodError.js rename to assets/compressed_sensing_2018/j2s/java/lang/NoSuchMethodError.js diff --git a/j2s/java/lang/NoSuchMethodException.js b/assets/compressed_sensing_2018/j2s/java/lang/NoSuchMethodException.js similarity index 100% rename from j2s/java/lang/NoSuchMethodException.js rename to assets/compressed_sensing_2018/j2s/java/lang/NoSuchMethodException.js diff --git a/j2s/java/lang/NullPointerException.js b/assets/compressed_sensing_2018/j2s/java/lang/NullPointerException.js similarity index 100% rename from j2s/java/lang/NullPointerException.js rename to assets/compressed_sensing_2018/j2s/java/lang/NullPointerException.js diff --git a/j2s/java/lang/Number.js b/assets/compressed_sensing_2018/j2s/java/lang/Number.js similarity index 100% rename from j2s/java/lang/Number.js rename to assets/compressed_sensing_2018/j2s/java/lang/Number.js diff --git a/j2s/java/lang/NumberFormatException.js b/assets/compressed_sensing_2018/j2s/java/lang/NumberFormatException.js similarity index 100% rename from j2s/java/lang/NumberFormatException.js rename to assets/compressed_sensing_2018/j2s/java/lang/NumberFormatException.js diff --git a/j2s/java/lang/OutOfMemoryError.js b/assets/compressed_sensing_2018/j2s/java/lang/OutOfMemoryError.js similarity index 100% rename from j2s/java/lang/OutOfMemoryError.js rename to assets/compressed_sensing_2018/j2s/java/lang/OutOfMemoryError.js diff --git a/j2s/java/lang/Readable.js b/assets/compressed_sensing_2018/j2s/java/lang/Readable.js similarity index 100% rename from j2s/java/lang/Readable.js rename to assets/compressed_sensing_2018/j2s/java/lang/Readable.js diff --git a/j2s/java/lang/Runnable.js b/assets/compressed_sensing_2018/j2s/java/lang/Runnable.js similarity index 100% rename from j2s/java/lang/Runnable.js rename to assets/compressed_sensing_2018/j2s/java/lang/Runnable.js diff --git a/j2s/java/lang/RuntimeException.js b/assets/compressed_sensing_2018/j2s/java/lang/RuntimeException.js similarity index 100% rename from j2s/java/lang/RuntimeException.js rename to assets/compressed_sensing_2018/j2s/java/lang/RuntimeException.js diff --git a/j2s/java/lang/SecurityException.js b/assets/compressed_sensing_2018/j2s/java/lang/SecurityException.js similarity index 100% rename from j2s/java/lang/SecurityException.js rename to assets/compressed_sensing_2018/j2s/java/lang/SecurityException.js diff --git a/j2s/java/lang/Short.js b/assets/compressed_sensing_2018/j2s/java/lang/Short.js similarity index 100% rename from j2s/java/lang/Short.js rename to assets/compressed_sensing_2018/j2s/java/lang/Short.js diff --git a/j2s/java/lang/StackOverflowError.js b/assets/compressed_sensing_2018/j2s/java/lang/StackOverflowError.js similarity index 100% rename from j2s/java/lang/StackOverflowError.js rename to assets/compressed_sensing_2018/j2s/java/lang/StackOverflowError.js diff --git a/j2s/java/lang/StackTraceElement.js b/assets/compressed_sensing_2018/j2s/java/lang/StackTraceElement.js similarity index 100% rename from j2s/java/lang/StackTraceElement.js rename to assets/compressed_sensing_2018/j2s/java/lang/StackTraceElement.js diff --git a/j2s/java/lang/StrictMath.js b/assets/compressed_sensing_2018/j2s/java/lang/StrictMath.js similarity index 100% rename from j2s/java/lang/StrictMath.js rename to assets/compressed_sensing_2018/j2s/java/lang/StrictMath.js diff --git a/j2s/java/lang/String.js b/assets/compressed_sensing_2018/j2s/java/lang/String.js similarity index 100% rename from j2s/java/lang/String.js rename to assets/compressed_sensing_2018/j2s/java/lang/String.js diff --git a/j2s/java/lang/StringBuffer.js b/assets/compressed_sensing_2018/j2s/java/lang/StringBuffer.js similarity index 100% rename from j2s/java/lang/StringBuffer.js rename to assets/compressed_sensing_2018/j2s/java/lang/StringBuffer.js diff --git a/j2s/java/lang/StringBuilder.js b/assets/compressed_sensing_2018/j2s/java/lang/StringBuilder.js similarity index 100% rename from j2s/java/lang/StringBuilder.js rename to assets/compressed_sensing_2018/j2s/java/lang/StringBuilder.js diff --git a/j2s/java/lang/StringBuilder.z.js b/assets/compressed_sensing_2018/j2s/java/lang/StringBuilder.z.js similarity index 100% rename from j2s/java/lang/StringBuilder.z.js rename to assets/compressed_sensing_2018/j2s/java/lang/StringBuilder.z.js diff --git a/j2s/java/lang/StringIndexOutOfBoundsException.js b/assets/compressed_sensing_2018/j2s/java/lang/StringIndexOutOfBoundsException.js similarity index 100% rename from j2s/java/lang/StringIndexOutOfBoundsException.js rename to assets/compressed_sensing_2018/j2s/java/lang/StringIndexOutOfBoundsException.js diff --git a/j2s/java/lang/Thread.js b/assets/compressed_sensing_2018/j2s/java/lang/Thread.js similarity index 100% rename from j2s/java/lang/Thread.js rename to assets/compressed_sensing_2018/j2s/java/lang/Thread.js diff --git a/j2s/java/lang/ThreadDeath.js b/assets/compressed_sensing_2018/j2s/java/lang/ThreadDeath.js similarity index 100% rename from j2s/java/lang/ThreadDeath.js rename to assets/compressed_sensing_2018/j2s/java/lang/ThreadDeath.js diff --git a/j2s/java/lang/ThreadGroup.js b/assets/compressed_sensing_2018/j2s/java/lang/ThreadGroup.js similarity index 100% rename from j2s/java/lang/ThreadGroup.js rename to assets/compressed_sensing_2018/j2s/java/lang/ThreadGroup.js diff --git a/j2s/java/lang/Throwable.js b/assets/compressed_sensing_2018/j2s/java/lang/Throwable.js similarity index 100% rename from j2s/java/lang/Throwable.js rename to assets/compressed_sensing_2018/j2s/java/lang/Throwable.js diff --git a/j2s/java/lang/TypeNotPresentException.js b/assets/compressed_sensing_2018/j2s/java/lang/TypeNotPresentException.js similarity index 100% rename from j2s/java/lang/TypeNotPresentException.js rename to assets/compressed_sensing_2018/j2s/java/lang/TypeNotPresentException.js diff --git a/j2s/java/lang/UnknownError.js b/assets/compressed_sensing_2018/j2s/java/lang/UnknownError.js similarity index 100% rename from j2s/java/lang/UnknownError.js rename to assets/compressed_sensing_2018/j2s/java/lang/UnknownError.js diff --git a/j2s/java/lang/UnsatisfiedLinkError.js b/assets/compressed_sensing_2018/j2s/java/lang/UnsatisfiedLinkError.js similarity index 100% rename from j2s/java/lang/UnsatisfiedLinkError.js rename to assets/compressed_sensing_2018/j2s/java/lang/UnsatisfiedLinkError.js diff --git a/j2s/java/lang/UnsupportedClassVersionError.js b/assets/compressed_sensing_2018/j2s/java/lang/UnsupportedClassVersionError.js similarity index 100% rename from j2s/java/lang/UnsupportedClassVersionError.js rename to assets/compressed_sensing_2018/j2s/java/lang/UnsupportedClassVersionError.js diff --git a/j2s/java/lang/UnsupportedOperationException.js b/assets/compressed_sensing_2018/j2s/java/lang/UnsupportedOperationException.js similarity index 100% rename from j2s/java/lang/UnsupportedOperationException.js rename to assets/compressed_sensing_2018/j2s/java/lang/UnsupportedOperationException.js diff --git a/j2s/java/lang/VerifyError.js b/assets/compressed_sensing_2018/j2s/java/lang/VerifyError.js similarity index 100% rename from j2s/java/lang/VerifyError.js rename to assets/compressed_sensing_2018/j2s/java/lang/VerifyError.js diff --git a/j2s/java/lang/VirtualMachineError.js b/assets/compressed_sensing_2018/j2s/java/lang/VirtualMachineError.js similarity index 100% rename from j2s/java/lang/VirtualMachineError.js rename to assets/compressed_sensing_2018/j2s/java/lang/VirtualMachineError.js diff --git a/j2s/java/lang/Void.js b/assets/compressed_sensing_2018/j2s/java/lang/Void.js similarity index 100% rename from j2s/java/lang/Void.js rename to assets/compressed_sensing_2018/j2s/java/lang/Void.js diff --git a/j2s/java/lang/reflect.z.js b/assets/compressed_sensing_2018/j2s/java/lang/reflect.z.js similarity index 100% rename from j2s/java/lang/reflect.z.js rename to assets/compressed_sensing_2018/j2s/java/lang/reflect.z.js diff --git a/j2s/java/lang/reflect/AccessibleObject.js b/assets/compressed_sensing_2018/j2s/java/lang/reflect/AccessibleObject.js similarity index 100% rename from j2s/java/lang/reflect/AccessibleObject.js rename to assets/compressed_sensing_2018/j2s/java/lang/reflect/AccessibleObject.js diff --git a/j2s/java/lang/reflect/AnnotatedElement.js b/assets/compressed_sensing_2018/j2s/java/lang/reflect/AnnotatedElement.js similarity index 100% rename from j2s/java/lang/reflect/AnnotatedElement.js rename to assets/compressed_sensing_2018/j2s/java/lang/reflect/AnnotatedElement.js diff --git a/j2s/java/lang/reflect/Array.js b/assets/compressed_sensing_2018/j2s/java/lang/reflect/Array.js similarity index 100% rename from j2s/java/lang/reflect/Array.js rename to assets/compressed_sensing_2018/j2s/java/lang/reflect/Array.js diff --git a/j2s/java/lang/reflect/Constructor.js b/assets/compressed_sensing_2018/j2s/java/lang/reflect/Constructor.js similarity index 100% rename from j2s/java/lang/reflect/Constructor.js rename to assets/compressed_sensing_2018/j2s/java/lang/reflect/Constructor.js diff --git a/j2s/java/lang/reflect/Field.js b/assets/compressed_sensing_2018/j2s/java/lang/reflect/Field.js similarity index 100% rename from j2s/java/lang/reflect/Field.js rename to assets/compressed_sensing_2018/j2s/java/lang/reflect/Field.js diff --git a/j2s/java/lang/reflect/GenericDeclaration.js b/assets/compressed_sensing_2018/j2s/java/lang/reflect/GenericDeclaration.js similarity index 100% rename from j2s/java/lang/reflect/GenericDeclaration.js rename to assets/compressed_sensing_2018/j2s/java/lang/reflect/GenericDeclaration.js diff --git a/j2s/java/lang/reflect/GenericSignatureFormatError.js b/assets/compressed_sensing_2018/j2s/java/lang/reflect/GenericSignatureFormatError.js similarity index 100% rename from j2s/java/lang/reflect/GenericSignatureFormatError.js rename to assets/compressed_sensing_2018/j2s/java/lang/reflect/GenericSignatureFormatError.js diff --git a/j2s/java/lang/reflect/InvocationHandler.js b/assets/compressed_sensing_2018/j2s/java/lang/reflect/InvocationHandler.js similarity index 100% rename from j2s/java/lang/reflect/InvocationHandler.js rename to assets/compressed_sensing_2018/j2s/java/lang/reflect/InvocationHandler.js diff --git a/j2s/java/lang/reflect/InvocationTargetException.js b/assets/compressed_sensing_2018/j2s/java/lang/reflect/InvocationTargetException.js similarity index 100% rename from j2s/java/lang/reflect/InvocationTargetException.js rename to assets/compressed_sensing_2018/j2s/java/lang/reflect/InvocationTargetException.js diff --git a/j2s/java/lang/reflect/MalformedParameterizedTypeException.js b/assets/compressed_sensing_2018/j2s/java/lang/reflect/MalformedParameterizedTypeException.js similarity index 100% rename from j2s/java/lang/reflect/MalformedParameterizedTypeException.js rename to assets/compressed_sensing_2018/j2s/java/lang/reflect/MalformedParameterizedTypeException.js diff --git a/j2s/java/lang/reflect/Member.js b/assets/compressed_sensing_2018/j2s/java/lang/reflect/Member.js similarity index 100% rename from j2s/java/lang/reflect/Member.js rename to assets/compressed_sensing_2018/j2s/java/lang/reflect/Member.js diff --git a/j2s/java/lang/reflect/Method.js b/assets/compressed_sensing_2018/j2s/java/lang/reflect/Method.js similarity index 100% rename from j2s/java/lang/reflect/Method.js rename to assets/compressed_sensing_2018/j2s/java/lang/reflect/Method.js diff --git a/j2s/java/lang/reflect/Modifier.js b/assets/compressed_sensing_2018/j2s/java/lang/reflect/Modifier.js similarity index 100% rename from j2s/java/lang/reflect/Modifier.js rename to assets/compressed_sensing_2018/j2s/java/lang/reflect/Modifier.js diff --git a/j2s/java/lang/reflect/Proxy.js b/assets/compressed_sensing_2018/j2s/java/lang/reflect/Proxy.js similarity index 100% rename from j2s/java/lang/reflect/Proxy.js rename to assets/compressed_sensing_2018/j2s/java/lang/reflect/Proxy.js diff --git a/j2s/java/lang/reflect/ReflectPermission.js b/assets/compressed_sensing_2018/j2s/java/lang/reflect/ReflectPermission.js similarity index 100% rename from j2s/java/lang/reflect/ReflectPermission.js rename to assets/compressed_sensing_2018/j2s/java/lang/reflect/ReflectPermission.js diff --git a/j2s/java/lang/reflect/TypeVariable.js b/assets/compressed_sensing_2018/j2s/java/lang/reflect/TypeVariable.js similarity index 100% rename from j2s/java/lang/reflect/TypeVariable.js rename to assets/compressed_sensing_2018/j2s/java/lang/reflect/TypeVariable.js diff --git a/j2s/java/lang/reflect/UndeclaredThrowableException.js b/assets/compressed_sensing_2018/j2s/java/lang/reflect/UndeclaredThrowableException.js similarity index 100% rename from j2s/java/lang/reflect/UndeclaredThrowableException.js rename to assets/compressed_sensing_2018/j2s/java/lang/reflect/UndeclaredThrowableException.js diff --git a/j2s/java/net/MalformedURLException.js b/assets/compressed_sensing_2018/j2s/java/net/MalformedURLException.js similarity index 100% rename from j2s/java/net/MalformedURLException.js rename to assets/compressed_sensing_2018/j2s/java/net/MalformedURLException.js diff --git a/j2s/java/net/Parts.js b/assets/compressed_sensing_2018/j2s/java/net/Parts.js similarity index 100% rename from j2s/java/net/Parts.js rename to assets/compressed_sensing_2018/j2s/java/net/Parts.js diff --git a/j2s/java/net/URL.js b/assets/compressed_sensing_2018/j2s/java/net/URL.js similarity index 100% rename from j2s/java/net/URL.js rename to assets/compressed_sensing_2018/j2s/java/net/URL.js diff --git a/j2s/java/net/URLConnection.js b/assets/compressed_sensing_2018/j2s/java/net/URLConnection.js similarity index 100% rename from j2s/java/net/URLConnection.js rename to assets/compressed_sensing_2018/j2s/java/net/URLConnection.js diff --git a/j2s/java/net/URLDecoder.js b/assets/compressed_sensing_2018/j2s/java/net/URLDecoder.js similarity index 100% rename from j2s/java/net/URLDecoder.js rename to assets/compressed_sensing_2018/j2s/java/net/URLDecoder.js diff --git a/j2s/java/net/URLEncoder.js b/assets/compressed_sensing_2018/j2s/java/net/URLEncoder.js similarity index 100% rename from j2s/java/net/URLEncoder.js rename to assets/compressed_sensing_2018/j2s/java/net/URLEncoder.js diff --git a/j2s/java/net/URLStreamHandler.js b/assets/compressed_sensing_2018/j2s/java/net/URLStreamHandler.js similarity index 100% rename from j2s/java/net/URLStreamHandler.js rename to assets/compressed_sensing_2018/j2s/java/net/URLStreamHandler.js diff --git a/j2s/java/net/URLStreamHandlerFactory.js b/assets/compressed_sensing_2018/j2s/java/net/URLStreamHandlerFactory.js similarity index 100% rename from j2s/java/net/URLStreamHandlerFactory.js rename to assets/compressed_sensing_2018/j2s/java/net/URLStreamHandlerFactory.js diff --git a/j2s/java/net/UnknownServiceException.js b/assets/compressed_sensing_2018/j2s/java/net/UnknownServiceException.js similarity index 100% rename from j2s/java/net/UnknownServiceException.js rename to assets/compressed_sensing_2018/j2s/java/net/UnknownServiceException.js diff --git a/j2s/java/text/Annotation.js b/assets/compressed_sensing_2018/j2s/java/text/Annotation.js similarity index 100% rename from j2s/java/text/Annotation.js rename to assets/compressed_sensing_2018/j2s/java/text/Annotation.js diff --git a/j2s/java/text/MessageFormat.js b/assets/compressed_sensing_2018/j2s/java/text/MessageFormat.js similarity index 100% rename from j2s/java/text/MessageFormat.js rename to assets/compressed_sensing_2018/j2s/java/text/MessageFormat.js diff --git a/j2s/java/util/AbstractCollection.js b/assets/compressed_sensing_2018/j2s/java/util/AbstractCollection.js similarity index 100% rename from j2s/java/util/AbstractCollection.js rename to assets/compressed_sensing_2018/j2s/java/util/AbstractCollection.js diff --git a/j2s/java/util/AbstractList.js b/assets/compressed_sensing_2018/j2s/java/util/AbstractList.js similarity index 100% rename from j2s/java/util/AbstractList.js rename to assets/compressed_sensing_2018/j2s/java/util/AbstractList.js diff --git a/j2s/java/util/AbstractMap.js b/assets/compressed_sensing_2018/j2s/java/util/AbstractMap.js similarity index 100% rename from j2s/java/util/AbstractMap.js rename to assets/compressed_sensing_2018/j2s/java/util/AbstractMap.js diff --git a/j2s/java/util/AbstractQueue.js b/assets/compressed_sensing_2018/j2s/java/util/AbstractQueue.js similarity index 100% rename from j2s/java/util/AbstractQueue.js rename to assets/compressed_sensing_2018/j2s/java/util/AbstractQueue.js diff --git a/j2s/java/util/AbstractSequentialList.js b/assets/compressed_sensing_2018/j2s/java/util/AbstractSequentialList.js similarity index 100% rename from j2s/java/util/AbstractSequentialList.js rename to assets/compressed_sensing_2018/j2s/java/util/AbstractSequentialList.js diff --git a/j2s/java/util/AbstractSet.js b/assets/compressed_sensing_2018/j2s/java/util/AbstractSet.js similarity index 100% rename from j2s/java/util/AbstractSet.js rename to assets/compressed_sensing_2018/j2s/java/util/AbstractSet.js diff --git a/j2s/java/util/ArrayList.js b/assets/compressed_sensing_2018/j2s/java/util/ArrayList.js similarity index 100% rename from j2s/java/util/ArrayList.js rename to assets/compressed_sensing_2018/j2s/java/util/ArrayList.js diff --git a/j2s/java/util/Arrays.js b/assets/compressed_sensing_2018/j2s/java/util/Arrays.js similarity index 100% rename from j2s/java/util/Arrays.js rename to assets/compressed_sensing_2018/j2s/java/util/Arrays.js diff --git a/j2s/java/util/BitSet.js b/assets/compressed_sensing_2018/j2s/java/util/BitSet.js similarity index 100% rename from j2s/java/util/BitSet.js rename to assets/compressed_sensing_2018/j2s/java/util/BitSet.js diff --git a/j2s/java/util/Collection.js b/assets/compressed_sensing_2018/j2s/java/util/Collection.js similarity index 100% rename from j2s/java/util/Collection.js rename to assets/compressed_sensing_2018/j2s/java/util/Collection.js diff --git a/j2s/java/util/Collections.js b/assets/compressed_sensing_2018/j2s/java/util/Collections.js similarity index 100% rename from j2s/java/util/Collections.js rename to assets/compressed_sensing_2018/j2s/java/util/Collections.js diff --git a/j2s/java/util/Comparator.js b/assets/compressed_sensing_2018/j2s/java/util/Comparator.js similarity index 100% rename from j2s/java/util/Comparator.js rename to assets/compressed_sensing_2018/j2s/java/util/Comparator.js diff --git a/j2s/java/util/ConcurrentModificationException.js b/assets/compressed_sensing_2018/j2s/java/util/ConcurrentModificationException.js similarity index 100% rename from j2s/java/util/ConcurrentModificationException.js rename to assets/compressed_sensing_2018/j2s/java/util/ConcurrentModificationException.js diff --git a/j2s/java/util/Date.js b/assets/compressed_sensing_2018/j2s/java/util/Date.js similarity index 100% rename from j2s/java/util/Date.js rename to assets/compressed_sensing_2018/j2s/java/util/Date.js diff --git a/j2s/java/util/Dictionary.js b/assets/compressed_sensing_2018/j2s/java/util/Dictionary.js similarity index 100% rename from j2s/java/util/Dictionary.js rename to assets/compressed_sensing_2018/j2s/java/util/Dictionary.js diff --git a/j2s/java/util/DuplicateFormatFlagsException.js b/assets/compressed_sensing_2018/j2s/java/util/DuplicateFormatFlagsException.js similarity index 100% rename from j2s/java/util/DuplicateFormatFlagsException.js rename to assets/compressed_sensing_2018/j2s/java/util/DuplicateFormatFlagsException.js diff --git a/j2s/java/util/EmptyStackException.js b/assets/compressed_sensing_2018/j2s/java/util/EmptyStackException.js similarity index 100% rename from j2s/java/util/EmptyStackException.js rename to assets/compressed_sensing_2018/j2s/java/util/EmptyStackException.js diff --git a/j2s/java/util/Enumeration.js b/assets/compressed_sensing_2018/j2s/java/util/Enumeration.js similarity index 100% rename from j2s/java/util/Enumeration.js rename to assets/compressed_sensing_2018/j2s/java/util/Enumeration.js diff --git a/j2s/java/util/EventListener.js b/assets/compressed_sensing_2018/j2s/java/util/EventListener.js similarity index 100% rename from j2s/java/util/EventListener.js rename to assets/compressed_sensing_2018/j2s/java/util/EventListener.js diff --git a/j2s/java/util/EventListenerProxy.js b/assets/compressed_sensing_2018/j2s/java/util/EventListenerProxy.js similarity index 100% rename from j2s/java/util/EventListenerProxy.js rename to assets/compressed_sensing_2018/j2s/java/util/EventListenerProxy.js diff --git a/j2s/java/util/EventObject.js b/assets/compressed_sensing_2018/j2s/java/util/EventObject.js similarity index 100% rename from j2s/java/util/EventObject.js rename to assets/compressed_sensing_2018/j2s/java/util/EventObject.js diff --git a/j2s/java/util/FormatFlagsConversionMismatchException.js b/assets/compressed_sensing_2018/j2s/java/util/FormatFlagsConversionMismatchException.js similarity index 100% rename from j2s/java/util/FormatFlagsConversionMismatchException.js rename to assets/compressed_sensing_2018/j2s/java/util/FormatFlagsConversionMismatchException.js diff --git a/j2s/java/util/FormatterClosedException.js b/assets/compressed_sensing_2018/j2s/java/util/FormatterClosedException.js similarity index 100% rename from j2s/java/util/FormatterClosedException.js rename to assets/compressed_sensing_2018/j2s/java/util/FormatterClosedException.js diff --git a/j2s/java/util/HashMap.js b/assets/compressed_sensing_2018/j2s/java/util/HashMap.js similarity index 100% rename from j2s/java/util/HashMap.js rename to assets/compressed_sensing_2018/j2s/java/util/HashMap.js diff --git a/j2s/java/util/HashSet.js b/assets/compressed_sensing_2018/j2s/java/util/HashSet.js similarity index 100% rename from j2s/java/util/HashSet.js rename to assets/compressed_sensing_2018/j2s/java/util/HashSet.js diff --git a/j2s/java/util/Hashtable.js b/assets/compressed_sensing_2018/j2s/java/util/Hashtable.js similarity index 100% rename from j2s/java/util/Hashtable.js rename to assets/compressed_sensing_2018/j2s/java/util/Hashtable.js diff --git a/j2s/java/util/IdentityHashMap.js b/assets/compressed_sensing_2018/j2s/java/util/IdentityHashMap.js similarity index 100% rename from j2s/java/util/IdentityHashMap.js rename to assets/compressed_sensing_2018/j2s/java/util/IdentityHashMap.js diff --git a/j2s/java/util/IllegalFormatCodePointException.js b/assets/compressed_sensing_2018/j2s/java/util/IllegalFormatCodePointException.js similarity index 100% rename from j2s/java/util/IllegalFormatCodePointException.js rename to assets/compressed_sensing_2018/j2s/java/util/IllegalFormatCodePointException.js diff --git a/j2s/java/util/IllegalFormatConversionException.js b/assets/compressed_sensing_2018/j2s/java/util/IllegalFormatConversionException.js similarity index 100% rename from j2s/java/util/IllegalFormatConversionException.js rename to assets/compressed_sensing_2018/j2s/java/util/IllegalFormatConversionException.js diff --git a/j2s/java/util/IllegalFormatException.js b/assets/compressed_sensing_2018/j2s/java/util/IllegalFormatException.js similarity index 100% rename from j2s/java/util/IllegalFormatException.js rename to assets/compressed_sensing_2018/j2s/java/util/IllegalFormatException.js diff --git a/j2s/java/util/IllegalFormatFlagsException.js b/assets/compressed_sensing_2018/j2s/java/util/IllegalFormatFlagsException.js similarity index 100% rename from j2s/java/util/IllegalFormatFlagsException.js rename to assets/compressed_sensing_2018/j2s/java/util/IllegalFormatFlagsException.js diff --git a/j2s/java/util/IllegalFormatPrecisionException.js b/assets/compressed_sensing_2018/j2s/java/util/IllegalFormatPrecisionException.js similarity index 100% rename from j2s/java/util/IllegalFormatPrecisionException.js rename to assets/compressed_sensing_2018/j2s/java/util/IllegalFormatPrecisionException.js diff --git a/j2s/java/util/IllegalFormatWidthException.js b/assets/compressed_sensing_2018/j2s/java/util/IllegalFormatWidthException.js similarity index 100% rename from j2s/java/util/IllegalFormatWidthException.js rename to assets/compressed_sensing_2018/j2s/java/util/IllegalFormatWidthException.js diff --git a/j2s/java/util/InputMismatchException.js b/assets/compressed_sensing_2018/j2s/java/util/InputMismatchException.js similarity index 100% rename from j2s/java/util/InputMismatchException.js rename to assets/compressed_sensing_2018/j2s/java/util/InputMismatchException.js diff --git a/j2s/java/util/InvalidPropertiesFormatException.js b/assets/compressed_sensing_2018/j2s/java/util/InvalidPropertiesFormatException.js similarity index 100% rename from j2s/java/util/InvalidPropertiesFormatException.js rename to assets/compressed_sensing_2018/j2s/java/util/InvalidPropertiesFormatException.js diff --git a/j2s/java/util/Iterator.js b/assets/compressed_sensing_2018/j2s/java/util/Iterator.js similarity index 100% rename from j2s/java/util/Iterator.js rename to assets/compressed_sensing_2018/j2s/java/util/Iterator.js diff --git a/j2s/java/util/LinkedHashMap.js b/assets/compressed_sensing_2018/j2s/java/util/LinkedHashMap.js similarity index 100% rename from j2s/java/util/LinkedHashMap.js rename to assets/compressed_sensing_2018/j2s/java/util/LinkedHashMap.js diff --git a/j2s/java/util/LinkedHashSet.js b/assets/compressed_sensing_2018/j2s/java/util/LinkedHashSet.js similarity index 100% rename from j2s/java/util/LinkedHashSet.js rename to assets/compressed_sensing_2018/j2s/java/util/LinkedHashSet.js diff --git a/j2s/java/util/LinkedList.js b/assets/compressed_sensing_2018/j2s/java/util/LinkedList.js similarity index 100% rename from j2s/java/util/LinkedList.js rename to assets/compressed_sensing_2018/j2s/java/util/LinkedList.js diff --git a/j2s/java/util/List.js b/assets/compressed_sensing_2018/j2s/java/util/List.js similarity index 100% rename from j2s/java/util/List.js rename to assets/compressed_sensing_2018/j2s/java/util/List.js diff --git a/j2s/java/util/ListIterator.js b/assets/compressed_sensing_2018/j2s/java/util/ListIterator.js similarity index 100% rename from j2s/java/util/ListIterator.js rename to assets/compressed_sensing_2018/j2s/java/util/ListIterator.js diff --git a/j2s/java/util/ListResourceBundle.js b/assets/compressed_sensing_2018/j2s/java/util/ListResourceBundle.js similarity index 100% rename from j2s/java/util/ListResourceBundle.js rename to assets/compressed_sensing_2018/j2s/java/util/ListResourceBundle.js diff --git a/j2s/java/util/Locale.js b/assets/compressed_sensing_2018/j2s/java/util/Locale.js similarity index 100% rename from j2s/java/util/Locale.js rename to assets/compressed_sensing_2018/j2s/java/util/Locale.js diff --git a/j2s/java/util/Map.js b/assets/compressed_sensing_2018/j2s/java/util/Map.js similarity index 100% rename from j2s/java/util/Map.js rename to assets/compressed_sensing_2018/j2s/java/util/Map.js diff --git a/j2s/java/util/MapEntry.js b/assets/compressed_sensing_2018/j2s/java/util/MapEntry.js similarity index 100% rename from j2s/java/util/MapEntry.js rename to assets/compressed_sensing_2018/j2s/java/util/MapEntry.js diff --git a/j2s/java/util/MissingFormatArgumentException.js b/assets/compressed_sensing_2018/j2s/java/util/MissingFormatArgumentException.js similarity index 100% rename from j2s/java/util/MissingFormatArgumentException.js rename to assets/compressed_sensing_2018/j2s/java/util/MissingFormatArgumentException.js diff --git a/j2s/java/util/MissingFormatWidthException.js b/assets/compressed_sensing_2018/j2s/java/util/MissingFormatWidthException.js similarity index 100% rename from j2s/java/util/MissingFormatWidthException.js rename to assets/compressed_sensing_2018/j2s/java/util/MissingFormatWidthException.js diff --git a/j2s/java/util/MissingResourceException.js b/assets/compressed_sensing_2018/j2s/java/util/MissingResourceException.js similarity index 100% rename from j2s/java/util/MissingResourceException.js rename to assets/compressed_sensing_2018/j2s/java/util/MissingResourceException.js diff --git a/j2s/java/util/NoSuchElementException.js b/assets/compressed_sensing_2018/j2s/java/util/NoSuchElementException.js similarity index 100% rename from j2s/java/util/NoSuchElementException.js rename to assets/compressed_sensing_2018/j2s/java/util/NoSuchElementException.js diff --git a/j2s/java/util/Observable.js b/assets/compressed_sensing_2018/j2s/java/util/Observable.js similarity index 100% rename from j2s/java/util/Observable.js rename to assets/compressed_sensing_2018/j2s/java/util/Observable.js diff --git a/j2s/java/util/Observer.js b/assets/compressed_sensing_2018/j2s/java/util/Observer.js similarity index 100% rename from j2s/java/util/Observer.js rename to assets/compressed_sensing_2018/j2s/java/util/Observer.js diff --git a/j2s/java/util/Properties.js b/assets/compressed_sensing_2018/j2s/java/util/Properties.js similarity index 100% rename from j2s/java/util/Properties.js rename to assets/compressed_sensing_2018/j2s/java/util/Properties.js diff --git a/j2s/java/util/Queue.js b/assets/compressed_sensing_2018/j2s/java/util/Queue.js similarity index 100% rename from j2s/java/util/Queue.js rename to assets/compressed_sensing_2018/j2s/java/util/Queue.js diff --git a/j2s/java/util/Random.js b/assets/compressed_sensing_2018/j2s/java/util/Random.js similarity index 100% rename from j2s/java/util/Random.js rename to assets/compressed_sensing_2018/j2s/java/util/Random.js diff --git a/j2s/java/util/RandomAccess.js b/assets/compressed_sensing_2018/j2s/java/util/RandomAccess.js similarity index 100% rename from j2s/java/util/RandomAccess.js rename to assets/compressed_sensing_2018/j2s/java/util/RandomAccess.js diff --git a/j2s/java/util/ResourceBundle.js b/assets/compressed_sensing_2018/j2s/java/util/ResourceBundle.js similarity index 100% rename from j2s/java/util/ResourceBundle.js rename to assets/compressed_sensing_2018/j2s/java/util/ResourceBundle.js diff --git a/j2s/java/util/Set.js b/assets/compressed_sensing_2018/j2s/java/util/Set.js similarity index 100% rename from j2s/java/util/Set.js rename to assets/compressed_sensing_2018/j2s/java/util/Set.js diff --git a/j2s/java/util/SortedMap.js b/assets/compressed_sensing_2018/j2s/java/util/SortedMap.js similarity index 100% rename from j2s/java/util/SortedMap.js rename to assets/compressed_sensing_2018/j2s/java/util/SortedMap.js diff --git a/j2s/java/util/SortedSet.js b/assets/compressed_sensing_2018/j2s/java/util/SortedSet.js similarity index 100% rename from j2s/java/util/SortedSet.js rename to assets/compressed_sensing_2018/j2s/java/util/SortedSet.js diff --git a/j2s/java/util/Stack.js b/assets/compressed_sensing_2018/j2s/java/util/Stack.js similarity index 100% rename from j2s/java/util/Stack.js rename to assets/compressed_sensing_2018/j2s/java/util/Stack.js diff --git a/j2s/java/util/StringTokenizer.js b/assets/compressed_sensing_2018/j2s/java/util/StringTokenizer.js similarity index 100% rename from j2s/java/util/StringTokenizer.js rename to assets/compressed_sensing_2018/j2s/java/util/StringTokenizer.js diff --git a/j2s/java/util/TooManyListenersException.js b/assets/compressed_sensing_2018/j2s/java/util/TooManyListenersException.js similarity index 100% rename from j2s/java/util/TooManyListenersException.js rename to assets/compressed_sensing_2018/j2s/java/util/TooManyListenersException.js diff --git a/j2s/java/util/TreeMap.js b/assets/compressed_sensing_2018/j2s/java/util/TreeMap.js similarity index 100% rename from j2s/java/util/TreeMap.js rename to assets/compressed_sensing_2018/j2s/java/util/TreeMap.js diff --git a/j2s/java/util/TreeSet.js b/assets/compressed_sensing_2018/j2s/java/util/TreeSet.js similarity index 100% rename from j2s/java/util/TreeSet.js rename to assets/compressed_sensing_2018/j2s/java/util/TreeSet.js diff --git a/j2s/java/util/UnknownFormatConversionException.js b/assets/compressed_sensing_2018/j2s/java/util/UnknownFormatConversionException.js similarity index 100% rename from j2s/java/util/UnknownFormatConversionException.js rename to assets/compressed_sensing_2018/j2s/java/util/UnknownFormatConversionException.js diff --git a/j2s/java/util/UnknownFormatFlagsException.js b/assets/compressed_sensing_2018/j2s/java/util/UnknownFormatFlagsException.js similarity index 100% rename from j2s/java/util/UnknownFormatFlagsException.js rename to assets/compressed_sensing_2018/j2s/java/util/UnknownFormatFlagsException.js diff --git a/j2s/java/util/Vector.js b/assets/compressed_sensing_2018/j2s/java/util/Vector.js similarity index 100% rename from j2s/java/util/Vector.js rename to assets/compressed_sensing_2018/j2s/java/util/Vector.js diff --git a/j2s/java/util/WeakHashMap.js b/assets/compressed_sensing_2018/j2s/java/util/WeakHashMap.js similarity index 100% rename from j2s/java/util/WeakHashMap.js rename to assets/compressed_sensing_2018/j2s/java/util/WeakHashMap.js diff --git a/j2s/java/util/regex/MatchResult.js b/assets/compressed_sensing_2018/j2s/java/util/regex/MatchResult.js similarity index 100% rename from j2s/java/util/regex/MatchResult.js rename to assets/compressed_sensing_2018/j2s/java/util/regex/MatchResult.js diff --git a/j2s/java/util/regex/Matcher.js b/assets/compressed_sensing_2018/j2s/java/util/regex/Matcher.js similarity index 100% rename from j2s/java/util/regex/Matcher.js rename to assets/compressed_sensing_2018/j2s/java/util/regex/Matcher.js diff --git a/j2s/java/util/regex/Pattern.js b/assets/compressed_sensing_2018/j2s/java/util/regex/Pattern.js similarity index 100% rename from j2s/java/util/regex/Pattern.js rename to assets/compressed_sensing_2018/j2s/java/util/regex/Pattern.js diff --git a/j2s/java/util/regex/PatternSyntaxException.js b/assets/compressed_sensing_2018/j2s/java/util/regex/PatternSyntaxException.js similarity index 100% rename from j2s/java/util/regex/PatternSyntaxException.js rename to assets/compressed_sensing_2018/j2s/java/util/regex/PatternSyntaxException.js diff --git a/j2s/java/util/zip/CRC32.js b/assets/compressed_sensing_2018/j2s/java/util/zip/CRC32.js similarity index 100% rename from j2s/java/util/zip/CRC32.js rename to assets/compressed_sensing_2018/j2s/java/util/zip/CRC32.js diff --git a/j2s/java/util/zip/CheckedInputStream.js b/assets/compressed_sensing_2018/j2s/java/util/zip/CheckedInputStream.js similarity index 100% rename from j2s/java/util/zip/CheckedInputStream.js rename to assets/compressed_sensing_2018/j2s/java/util/zip/CheckedInputStream.js diff --git a/j2s/java/util/zip/Checksum.js b/assets/compressed_sensing_2018/j2s/java/util/zip/Checksum.js similarity index 100% rename from j2s/java/util/zip/Checksum.js rename to assets/compressed_sensing_2018/j2s/java/util/zip/Checksum.js diff --git a/j2s/java/util/zip/Deflater.js b/assets/compressed_sensing_2018/j2s/java/util/zip/Deflater.js similarity index 100% rename from j2s/java/util/zip/Deflater.js rename to assets/compressed_sensing_2018/j2s/java/util/zip/Deflater.js diff --git a/j2s/java/util/zip/DeflaterOutputStream.js b/assets/compressed_sensing_2018/j2s/java/util/zip/DeflaterOutputStream.js similarity index 100% rename from j2s/java/util/zip/DeflaterOutputStream.js rename to assets/compressed_sensing_2018/j2s/java/util/zip/DeflaterOutputStream.js diff --git a/j2s/java/util/zip/GZIPInputStream.js b/assets/compressed_sensing_2018/j2s/java/util/zip/GZIPInputStream.js similarity index 100% rename from j2s/java/util/zip/GZIPInputStream.js rename to assets/compressed_sensing_2018/j2s/java/util/zip/GZIPInputStream.js diff --git a/j2s/java/util/zip/Inflater.js b/assets/compressed_sensing_2018/j2s/java/util/zip/Inflater.js similarity index 100% rename from j2s/java/util/zip/Inflater.js rename to assets/compressed_sensing_2018/j2s/java/util/zip/Inflater.js diff --git a/j2s/java/util/zip/InflaterInputStream.js b/assets/compressed_sensing_2018/j2s/java/util/zip/InflaterInputStream.js similarity index 100% rename from j2s/java/util/zip/InflaterInputStream.js rename to assets/compressed_sensing_2018/j2s/java/util/zip/InflaterInputStream.js diff --git a/j2s/java/util/zip/ZStreamRef.js b/assets/compressed_sensing_2018/j2s/java/util/zip/ZStreamRef.js similarity index 100% rename from j2s/java/util/zip/ZStreamRef.js rename to assets/compressed_sensing_2018/j2s/java/util/zip/ZStreamRef.js diff --git a/j2s/java/util/zip/ZipConstants.js b/assets/compressed_sensing_2018/j2s/java/util/zip/ZipConstants.js similarity index 100% rename from j2s/java/util/zip/ZipConstants.js rename to assets/compressed_sensing_2018/j2s/java/util/zip/ZipConstants.js diff --git a/j2s/java/util/zip/ZipConstants64.js b/assets/compressed_sensing_2018/j2s/java/util/zip/ZipConstants64.js similarity index 100% rename from j2s/java/util/zip/ZipConstants64.js rename to assets/compressed_sensing_2018/j2s/java/util/zip/ZipConstants64.js diff --git a/j2s/java/util/zip/ZipEntry.js b/assets/compressed_sensing_2018/j2s/java/util/zip/ZipEntry.js similarity index 100% rename from j2s/java/util/zip/ZipEntry.js rename to assets/compressed_sensing_2018/j2s/java/util/zip/ZipEntry.js diff --git a/j2s/java/util/zip/ZipException.js b/assets/compressed_sensing_2018/j2s/java/util/zip/ZipException.js similarity index 100% rename from j2s/java/util/zip/ZipException.js rename to assets/compressed_sensing_2018/j2s/java/util/zip/ZipException.js diff --git a/j2s/java/util/zip/ZipInputStream.js b/assets/compressed_sensing_2018/j2s/java/util/zip/ZipInputStream.js similarity index 100% rename from j2s/java/util/zip/ZipInputStream.js rename to assets/compressed_sensing_2018/j2s/java/util/zip/ZipInputStream.js diff --git a/j2s/java/util/zip/ZipOutputStream.js b/assets/compressed_sensing_2018/j2s/java/util/zip/ZipOutputStream.js similarity index 100% rename from j2s/java/util/zip/ZipOutputStream.js rename to assets/compressed_sensing_2018/j2s/java/util/zip/ZipOutputStream.js diff --git a/j2s/javajs/J2SIgnoreImport.js b/assets/compressed_sensing_2018/j2s/javajs/J2SIgnoreImport.js similarity index 100% rename from j2s/javajs/J2SIgnoreImport.js rename to assets/compressed_sensing_2018/j2s/javajs/J2SIgnoreImport.js diff --git a/j2s/javajs/J2SRequireImport.js b/assets/compressed_sensing_2018/j2s/javajs/J2SRequireImport.js similarity index 100% rename from j2s/javajs/J2SRequireImport.js rename to assets/compressed_sensing_2018/j2s/javajs/J2SRequireImport.js diff --git a/j2s/javajs/api/BytePoster.js b/assets/compressed_sensing_2018/j2s/javajs/api/BytePoster.js similarity index 100% rename from j2s/javajs/api/BytePoster.js rename to assets/compressed_sensing_2018/j2s/javajs/api/BytePoster.js diff --git a/j2s/javajs/api/EigenInterface.js b/assets/compressed_sensing_2018/j2s/javajs/api/EigenInterface.js similarity index 100% rename from j2s/javajs/api/EigenInterface.js rename to assets/compressed_sensing_2018/j2s/javajs/api/EigenInterface.js diff --git a/j2s/javajs/api/GenericBinaryDocument.js b/assets/compressed_sensing_2018/j2s/javajs/api/GenericBinaryDocument.js similarity index 100% rename from j2s/javajs/api/GenericBinaryDocument.js rename to assets/compressed_sensing_2018/j2s/javajs/api/GenericBinaryDocument.js diff --git a/j2s/javajs/api/GenericBinaryDocumentReader.js b/assets/compressed_sensing_2018/j2s/javajs/api/GenericBinaryDocumentReader.js similarity index 100% rename from j2s/javajs/api/GenericBinaryDocumentReader.js rename to assets/compressed_sensing_2018/j2s/javajs/api/GenericBinaryDocumentReader.js diff --git a/j2s/javajs/api/GenericCifDataParser.js b/assets/compressed_sensing_2018/j2s/javajs/api/GenericCifDataParser.js similarity index 100% rename from j2s/javajs/api/GenericCifDataParser.js rename to assets/compressed_sensing_2018/j2s/javajs/api/GenericCifDataParser.js diff --git a/j2s/javajs/api/GenericColor.js b/assets/compressed_sensing_2018/j2s/javajs/api/GenericColor.js similarity index 100% rename from j2s/javajs/api/GenericColor.js rename to assets/compressed_sensing_2018/j2s/javajs/api/GenericColor.js diff --git a/j2s/javajs/api/GenericFileInterface.js b/assets/compressed_sensing_2018/j2s/javajs/api/GenericFileInterface.js similarity index 100% rename from j2s/javajs/api/GenericFileInterface.js rename to assets/compressed_sensing_2018/j2s/javajs/api/GenericFileInterface.js diff --git a/j2s/javajs/api/GenericImageEncoder.js b/assets/compressed_sensing_2018/j2s/javajs/api/GenericImageEncoder.js similarity index 100% rename from j2s/javajs/api/GenericImageEncoder.js rename to assets/compressed_sensing_2018/j2s/javajs/api/GenericImageEncoder.js diff --git a/j2s/javajs/api/GenericLineReader.js b/assets/compressed_sensing_2018/j2s/javajs/api/GenericLineReader.js similarity index 100% rename from j2s/javajs/api/GenericLineReader.js rename to assets/compressed_sensing_2018/j2s/javajs/api/GenericLineReader.js diff --git a/j2s/javajs/api/GenericOutputChannel.js b/assets/compressed_sensing_2018/j2s/javajs/api/GenericOutputChannel.js similarity index 100% rename from j2s/javajs/api/GenericOutputChannel.js rename to assets/compressed_sensing_2018/j2s/javajs/api/GenericOutputChannel.js diff --git a/j2s/javajs/api/GenericZipInputStream.js b/assets/compressed_sensing_2018/j2s/javajs/api/GenericZipInputStream.js similarity index 100% rename from j2s/javajs/api/GenericZipInputStream.js rename to assets/compressed_sensing_2018/j2s/javajs/api/GenericZipInputStream.js diff --git a/j2s/javajs/api/GenericZipTools.js b/assets/compressed_sensing_2018/j2s/javajs/api/GenericZipTools.js similarity index 100% rename from j2s/javajs/api/GenericZipTools.js rename to assets/compressed_sensing_2018/j2s/javajs/api/GenericZipTools.js diff --git a/j2s/javajs/api/Interface.js b/assets/compressed_sensing_2018/j2s/javajs/api/Interface.js similarity index 100% rename from j2s/javajs/api/Interface.js rename to assets/compressed_sensing_2018/j2s/javajs/api/Interface.js diff --git a/j2s/javajs/api/JSFunction.js b/assets/compressed_sensing_2018/j2s/javajs/api/JSFunction.js similarity index 100% rename from j2s/javajs/api/JSFunction.js rename to assets/compressed_sensing_2018/j2s/javajs/api/JSFunction.js diff --git a/j2s/javajs/api/JSInterface.js b/assets/compressed_sensing_2018/j2s/javajs/api/JSInterface.js similarity index 100% rename from j2s/javajs/api/JSInterface.js rename to assets/compressed_sensing_2018/j2s/javajs/api/JSInterface.js diff --git a/j2s/javajs/api/JSONEncodable.js b/assets/compressed_sensing_2018/j2s/javajs/api/JSONEncodable.js similarity index 100% rename from j2s/javajs/api/JSONEncodable.js rename to assets/compressed_sensing_2018/j2s/javajs/api/JSONEncodable.js diff --git a/j2s/javajs/api/ZInputStream.js b/assets/compressed_sensing_2018/j2s/javajs/api/ZInputStream.js similarity index 100% rename from j2s/javajs/api/ZInputStream.js rename to assets/compressed_sensing_2018/j2s/javajs/api/ZInputStream.js diff --git a/j2s/javajs/api/js/J2SObjectInterface.js b/assets/compressed_sensing_2018/j2s/javajs/api/js/J2SObjectInterface.js similarity index 100% rename from j2s/javajs/api/js/J2SObjectInterface.js rename to assets/compressed_sensing_2018/j2s/javajs/api/js/J2SObjectInterface.js diff --git a/j2s/javajs/awt/BorderLayout.js b/assets/compressed_sensing_2018/j2s/javajs/awt/BorderLayout.js similarity index 100% rename from j2s/javajs/awt/BorderLayout.js rename to assets/compressed_sensing_2018/j2s/javajs/awt/BorderLayout.js diff --git a/j2s/javajs/awt/Color.js b/assets/compressed_sensing_2018/j2s/javajs/awt/Color.js similarity index 100% rename from j2s/javajs/awt/Color.js rename to assets/compressed_sensing_2018/j2s/javajs/awt/Color.js diff --git a/j2s/javajs/awt/Component.js b/assets/compressed_sensing_2018/j2s/javajs/awt/Component.js similarity index 100% rename from j2s/javajs/awt/Component.js rename to assets/compressed_sensing_2018/j2s/javajs/awt/Component.js diff --git a/j2s/javajs/awt/Container.js b/assets/compressed_sensing_2018/j2s/javajs/awt/Container.js similarity index 100% rename from j2s/javajs/awt/Container.js rename to assets/compressed_sensing_2018/j2s/javajs/awt/Container.js diff --git a/j2s/javajs/awt/Dimension.js b/assets/compressed_sensing_2018/j2s/javajs/awt/Dimension.js similarity index 100% rename from j2s/javajs/awt/Dimension.js rename to assets/compressed_sensing_2018/j2s/javajs/awt/Dimension.js diff --git a/j2s/javajs/awt/EventManager.js b/assets/compressed_sensing_2018/j2s/javajs/awt/EventManager.js similarity index 100% rename from j2s/javajs/awt/EventManager.js rename to assets/compressed_sensing_2018/j2s/javajs/awt/EventManager.js diff --git a/j2s/javajs/awt/Font.js b/assets/compressed_sensing_2018/j2s/javajs/awt/Font.js similarity index 100% rename from j2s/javajs/awt/Font.js rename to assets/compressed_sensing_2018/j2s/javajs/awt/Font.js diff --git a/j2s/javajs/awt/FontManager.js b/assets/compressed_sensing_2018/j2s/javajs/awt/FontManager.js similarity index 100% rename from j2s/javajs/awt/FontManager.js rename to assets/compressed_sensing_2018/j2s/javajs/awt/FontManager.js diff --git a/j2s/javajs/awt/GenericImageDialog.js b/assets/compressed_sensing_2018/j2s/javajs/awt/GenericImageDialog.js similarity index 100% rename from j2s/javajs/awt/GenericImageDialog.js rename to assets/compressed_sensing_2018/j2s/javajs/awt/GenericImageDialog.js diff --git a/j2s/javajs/awt/GenericMenuInterface.js b/assets/compressed_sensing_2018/j2s/javajs/awt/GenericMenuInterface.js similarity index 100% rename from j2s/javajs/awt/GenericMenuInterface.js rename to assets/compressed_sensing_2018/j2s/javajs/awt/GenericMenuInterface.js diff --git a/j2s/javajs/awt/GenericMouseInterface.js b/assets/compressed_sensing_2018/j2s/javajs/awt/GenericMouseInterface.js similarity index 100% rename from j2s/javajs/awt/GenericMouseInterface.js rename to assets/compressed_sensing_2018/j2s/javajs/awt/GenericMouseInterface.js diff --git a/j2s/javajs/awt/GenericPlatform.js b/assets/compressed_sensing_2018/j2s/javajs/awt/GenericPlatform.js similarity index 100% rename from j2s/javajs/awt/GenericPlatform.js rename to assets/compressed_sensing_2018/j2s/javajs/awt/GenericPlatform.js diff --git a/j2s/javajs/awt/LayoutManager.js b/assets/compressed_sensing_2018/j2s/javajs/awt/LayoutManager.js similarity index 100% rename from j2s/javajs/awt/LayoutManager.js rename to assets/compressed_sensing_2018/j2s/javajs/awt/LayoutManager.js diff --git a/j2s/javajs/awt/PlatformViewer.js b/assets/compressed_sensing_2018/j2s/javajs/awt/PlatformViewer.js similarity index 100% rename from j2s/javajs/awt/PlatformViewer.js rename to assets/compressed_sensing_2018/j2s/javajs/awt/PlatformViewer.js diff --git a/j2s/javajs/awt/SC.js b/assets/compressed_sensing_2018/j2s/javajs/awt/SC.js similarity index 100% rename from j2s/javajs/awt/SC.js rename to assets/compressed_sensing_2018/j2s/javajs/awt/SC.js diff --git a/j2s/javajs/awt/event/ActionEvent.js b/assets/compressed_sensing_2018/j2s/javajs/awt/event/ActionEvent.js similarity index 100% rename from j2s/javajs/awt/event/ActionEvent.js rename to assets/compressed_sensing_2018/j2s/javajs/awt/event/ActionEvent.js diff --git a/j2s/javajs/awt/event/ActionListener.js b/assets/compressed_sensing_2018/j2s/javajs/awt/event/ActionListener.js similarity index 100% rename from j2s/javajs/awt/event/ActionListener.js rename to assets/compressed_sensing_2018/j2s/javajs/awt/event/ActionListener.js diff --git a/j2s/javajs/awt/event/Event.js b/assets/compressed_sensing_2018/j2s/javajs/awt/event/Event.js similarity index 100% rename from j2s/javajs/awt/event/Event.js rename to assets/compressed_sensing_2018/j2s/javajs/awt/event/Event.js diff --git a/j2s/javajs/awt/event/ItemEvent.js b/assets/compressed_sensing_2018/j2s/javajs/awt/event/ItemEvent.js similarity index 100% rename from j2s/javajs/awt/event/ItemEvent.js rename to assets/compressed_sensing_2018/j2s/javajs/awt/event/ItemEvent.js diff --git a/j2s/javajs/awt/event/WindowEvent.js b/assets/compressed_sensing_2018/j2s/javajs/awt/event/WindowEvent.js similarity index 100% rename from j2s/javajs/awt/event/WindowEvent.js rename to assets/compressed_sensing_2018/j2s/javajs/awt/event/WindowEvent.js diff --git a/j2s/javajs/awt/event/WindowListener.js b/assets/compressed_sensing_2018/j2s/javajs/awt/event/WindowListener.js similarity index 100% rename from j2s/javajs/awt/event/WindowListener.js rename to assets/compressed_sensing_2018/j2s/javajs/awt/event/WindowListener.js diff --git a/j2s/javajs/export/PDFCreator.js b/assets/compressed_sensing_2018/j2s/javajs/export/PDFCreator.js similarity index 100% rename from j2s/javajs/export/PDFCreator.js rename to assets/compressed_sensing_2018/j2s/javajs/export/PDFCreator.js diff --git a/j2s/javajs/export/PDFObject.js b/assets/compressed_sensing_2018/j2s/javajs/export/PDFObject.js similarity index 100% rename from j2s/javajs/export/PDFObject.js rename to assets/compressed_sensing_2018/j2s/javajs/export/PDFObject.js diff --git a/j2s/javajs/img/BMPDecoder.js b/assets/compressed_sensing_2018/j2s/javajs/img/BMPDecoder.js similarity index 100% rename from j2s/javajs/img/BMPDecoder.js rename to assets/compressed_sensing_2018/j2s/javajs/img/BMPDecoder.js diff --git a/j2s/javajs/img/CRCEncoder.js b/assets/compressed_sensing_2018/j2s/javajs/img/CRCEncoder.js similarity index 100% rename from j2s/javajs/img/CRCEncoder.js rename to assets/compressed_sensing_2018/j2s/javajs/img/CRCEncoder.js diff --git a/j2s/javajs/img/GifEncoder.js b/assets/compressed_sensing_2018/j2s/javajs/img/GifEncoder.js similarity index 100% rename from j2s/javajs/img/GifEncoder.js rename to assets/compressed_sensing_2018/j2s/javajs/img/GifEncoder.js diff --git a/j2s/javajs/img/ImageEncoder.js b/assets/compressed_sensing_2018/j2s/javajs/img/ImageEncoder.js similarity index 100% rename from j2s/javajs/img/ImageEncoder.js rename to assets/compressed_sensing_2018/j2s/javajs/img/ImageEncoder.js diff --git a/j2s/javajs/img/Jpg64Encoder.js b/assets/compressed_sensing_2018/j2s/javajs/img/Jpg64Encoder.js similarity index 100% rename from j2s/javajs/img/Jpg64Encoder.js rename to assets/compressed_sensing_2018/j2s/javajs/img/Jpg64Encoder.js diff --git a/j2s/javajs/img/JpgEncoder.js b/assets/compressed_sensing_2018/j2s/javajs/img/JpgEncoder.js similarity index 100% rename from j2s/javajs/img/JpgEncoder.js rename to assets/compressed_sensing_2018/j2s/javajs/img/JpgEncoder.js diff --git a/j2s/javajs/img/PdfEncoder.js b/assets/compressed_sensing_2018/j2s/javajs/img/PdfEncoder.js similarity index 100% rename from j2s/javajs/img/PdfEncoder.js rename to assets/compressed_sensing_2018/j2s/javajs/img/PdfEncoder.js diff --git a/j2s/javajs/img/PngEncoder.js b/assets/compressed_sensing_2018/j2s/javajs/img/PngEncoder.js similarity index 100% rename from j2s/javajs/img/PngEncoder.js rename to assets/compressed_sensing_2018/j2s/javajs/img/PngEncoder.js diff --git a/j2s/javajs/img/PpmEncoder.js b/assets/compressed_sensing_2018/j2s/javajs/img/PpmEncoder.js similarity index 100% rename from j2s/javajs/img/PpmEncoder.js rename to assets/compressed_sensing_2018/j2s/javajs/img/PpmEncoder.js diff --git a/j2s/javajs/img/package.js b/assets/compressed_sensing_2018/j2s/javajs/img/package.js similarity index 100% rename from j2s/javajs/img/package.js rename to assets/compressed_sensing_2018/j2s/javajs/img/package.js diff --git a/j2s/org/apache/tools/bzip2/BZip2Constants.js b/assets/compressed_sensing_2018/j2s/org/apache/tools/bzip2/BZip2Constants.js similarity index 100% rename from j2s/org/apache/tools/bzip2/BZip2Constants.js rename to assets/compressed_sensing_2018/j2s/org/apache/tools/bzip2/BZip2Constants.js diff --git a/j2s/org/apache/tools/bzip2/CBZip2InputStream.js b/assets/compressed_sensing_2018/j2s/org/apache/tools/bzip2/CBZip2InputStream.js similarity index 100% rename from j2s/org/apache/tools/bzip2/CBZip2InputStream.js rename to assets/compressed_sensing_2018/j2s/org/apache/tools/bzip2/CBZip2InputStream.js diff --git a/j2s/org/apache/tools/bzip2/CBZip2InputStreamFactory.js b/assets/compressed_sensing_2018/j2s/org/apache/tools/bzip2/CBZip2InputStreamFactory.js similarity index 100% rename from j2s/org/apache/tools/bzip2/CBZip2InputStreamFactory.js rename to assets/compressed_sensing_2018/j2s/org/apache/tools/bzip2/CBZip2InputStreamFactory.js diff --git a/j2s/org/apache/tools/bzip2/CRC.js b/assets/compressed_sensing_2018/j2s/org/apache/tools/bzip2/CRC.js similarity index 100% rename from j2s/org/apache/tools/bzip2/CRC.js rename to assets/compressed_sensing_2018/j2s/org/apache/tools/bzip2/CRC.js diff --git a/compressed_sensing.ipynb b/compressed_sensing.ipynb deleted file mode 100644 index 4c13d0a504b48291b3b0021f97491b471242079c..0000000000000000000000000000000000000000 --- a/compressed_sensing.ipynb +++ /dev/null @@ -1,5743 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "pycharm": {} - }, - "source": [ - "<div id=\"teaser\" style=' background-position: right center; background-size: 00px; background-repeat: no-repeat; \n", - " padding-top: 20px;\n", - " padding-right: 10px;\n", - " padding-bottom: 170px;\n", - " padding-left: 10px;\n", - " border-bottom: 14px double #333;\n", - " border-top: 14px double #333;' > \n", - "\n", - " \n", - " <div style=\"text-align:center\">\n", - " <b><font size=\"6.4\">Compressed sensing for identifying materials descriptors</font></b> \n", - " </div>\n", - " \n", - "<p>\n", - " created by:\n", - " Emre Ahmetcik<sup>1</sup>, \n", - " Angelo Ziletti<sup>1</sup>,\n", - " Runhai Ouyang<sup> 1</sup>,\n", - " Luca Ghiringhelli<sup> 1</sup>,\n", - " and Matthias Scheffler<sup>1</sup> <br><br>\n", - " \n", - "<sup>1</sup> Fritz Haber Institute of the Max Planck Society, Faradayweg 4-6, D-14195 Berlin, Germany <br>\n", - "<span class=\"nomad--last-updated\" data-version=\"v1.0.0\">[Last updated: April 5, 2019]</span>\n", - "</p>\n", - "\n", - " \n", - "<div> \n", - "<img style=\"float: left;\" src=\"data/Logo_MPG.png\" width=\"200\"> \n", - "<img style=\"float: right;\" src=\"data/Logo_NOMAD.png\" width=\"250\">\n", - "</div>\n", - "</p>\n", - "\n", - "</div>\n", - "\n", - "\n", - "\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "pycharm": {} - }, - "source": [ - "This tutorial shows how to find descriptive parameters (short formulas) to predict materials properties using compressed sensing tools. As an example we adress the prediction of the relative stability of 82 zincblende (ZB) versus rocksalt (RS) octet binary materials.\n", - "\n", - "The idea of using compressed sensing tools: Starting from simple physical quantities (\"building blocks\", here properties of the constituent free atoms such as orbital radii), millions (or billions) of candidate formulas are generated by applying arithmetic operations combining building blocks, for example forming sums and products of them. These candidate formulas constitute the so-called \"feature space\". Then a compressed sensing based method is used to select only a few of these formulas that explain the data, as introduced in \n", - "<div style=\"padding: 1ex; margin-top: 1ex; margin-bottom: 1ex; border-style: dotted; border-width: 1pt; border-color: blue; border-radius: 3px;\">\n", - "L. M. Ghiringhelli, J. Vybiral, S. V. Levchenko, C. Draxl, M. Scheffler: <span style=\"font-style: italic;\">Big Data of Materials Science: Critical Role of the Descriptor</span>, Phys. Rev. Lett. 114, 105503 (2015) <a href=\"http://journals.aps.org/prl/abstract/10.1103/PhysRevLett.114.105503\" target=\"_blank\">[PDF]</a>.</div>\n", - "In this tutorial we use the Sure Independence Screening and Sparsifying Operator (SISSO) as proposed in\n", - "<div style=\"padding: 1ex; margin-top: 1ex; margin-bottom: 1ex; border-style: dotted; border-width: 1pt; border-color: blue; border-radius: 3px;\">\n", - "R. Ouyang, S. Curtarolo, E. Ahmetcik, M. Scheffler, L. M. Ghiringhelli: <span style=\"font-style: italic;\">SISSO: a compressed-sensing method for identifying the best low-dimensional descriptor in an immensity of offered candidates</span>, Phys. Rev. Materials 2, 083802 (2018) <a href=\"https://journals.aps.org/prmaterials/abstract/10.1103/PhysRevMaterials.2.083802\" target=\"_blank\">[PDF]</a> .\n", - "</div>\n", - "\n", - "# Introduction to the compressed sensing methods\n", - "\n", - "The feature space is generated by creating a list of analytical expressions (the derived features), obtained by combining the primary features and arithmetic operations. We put all $m$ derived features into a descriptor matrix $\\mathbf{D} \\in \\mathbb{R}^{82 \\times m}$ where each column stands for a derived feature and each row for a compound. An $\\ell_0$-regularization \n", - "\n", - "$\\text{argmin}_{\\mathbf{c} \\in \\mathbb{R}^{m}} \\{\\|\\mathbf{P} - \\mathbf{D}\\mathbf{c}\\|^2_2 +\\lambda \\|\\mathbf{c}\\|_0\\}$\n", - "\n", - "determines those few feature columns which approximate a property vector $\\mathbf{P} \\in \\mathbb{R}^{82}$ (i.e RS vs. ZB energy differences) best. The subscript 0 stands for the $\\ell_0$-quasinorm, that counts the number of non-zero elements of $\\mathbf{c}$ and $\\lambda > 0$ is called the regularization parameter. Performing the $\\ell_0$-regularization becomes fast computational infeasable and often approximations (i.e. LASSO, orthogonal matching pursuit) are needed since in practice the $\\ell_0$-regularization needs to be solved combinatorial: All singletons, pairs, triplets, ... $n$-tuples (up to the selected maximum dimension of the descriptor) are listed and for each set a least-square regression is performed. The $n$-tuple that gives the lowest mean square error for the least-square regression fit is selected as the resulting $n$-dimensional descriptor.\n", - "\n", - "### The LASSO method\n", - "A convex optimization problem can be introduced by the Least Absolute Shrinkage and Selection Operator (LASSO):\n", - "\n", - "$\\text{argmin}_{\\mathbf{c} \\in \\mathbb{R}^{m}} \\{\\|\\mathbf{P} - \\mathbf{D}\\mathbf{c}\\|^2_2 +\\lambda \\|\\mathbf{c}\\|_1\\}$.\n", - "\n", - "Under certain conditions it can find a good approximation to the $\\ell_0$-regularization.\n", - "\n", - "\n", - "### The SISSO method\n", - "SISSO works iteratively. In the first iteration, a number $k$ of features is collected that have the largest correlation (scalar product) with $\\mathbf{P}$. The feature with the largest correlation is simply the 1D descriptor. Next, a residual is constructed as the error made in the first iteration. A new set of $k$ features is now selected as those having the largest correlation with the residual. The 2D descriptor is the pair of features that yield the smallest fitting error upon least-square regression, among all possible pairs contained in the union of the sets selected in this and the first iteration. In each next iteration a new residual is constructed as the error made in the previous iteration, then a new set of $k$ features is extracted as those that have largest correlation with each new residual. The $n$D descriptor is the $n$-tuple of features that yield the smallest fitting error upon least square regression, among all possible $n$-tuples contained in the union of the sets obtained in each new iteration and all the previous iterations. If $k=1$ the method collapses to the so-called orthogonal matching pursuit.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "pycharm": {} - }, - "source": [ - "# Import required modules" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "pycharm": {} - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " <div class=\"bk-root\">\n", - " <a href=\"https://bokeh.pydata.org\" target=\"_blank\" class=\"bk-logo bk-logo-small bk-logo-notebook\"></a>\n", - " <span id=\"1001\">Loading BokehJS ...</span>\n", - " </div>" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/javascript": [ - "\n", - "(function(root) {\n", - " function now() {\n", - " return new Date();\n", - " }\n", - "\n", - " var force = true;\n", - "\n", - " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n", - " root._bokeh_onload_callbacks = [];\n", - " root._bokeh_is_loading = undefined;\n", - " }\n", - "\n", - " var JS_MIME_TYPE = 'application/javascript';\n", - " var HTML_MIME_TYPE = 'text/html';\n", - " var EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", - " var CLASS_NAME = 'output_bokeh rendered_html';\n", - "\n", - " /**\n", - " * Render data to the DOM node\n", - " */\n", - " function render(props, node) {\n", - " var script = document.createElement(\"script\");\n", - " node.appendChild(script);\n", - " }\n", - "\n", - " /**\n", - " * Handle when an output is cleared or removed\n", - " */\n", - " function handleClearOutput(event, handle) {\n", - " var cell = handle.cell;\n", - "\n", - " var id = cell.output_area._bokeh_element_id;\n", - " var server_id = cell.output_area._bokeh_server_id;\n", - " // Clean up Bokeh references\n", - " if (id != null && id in Bokeh.index) {\n", - " Bokeh.index[id].model.document.clear();\n", - " delete Bokeh.index[id];\n", - " }\n", - "\n", - " if (server_id !== undefined) {\n", - " // Clean up Bokeh references\n", - " var cmd = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n", - " cell.notebook.kernel.execute(cmd, {\n", - " iopub: {\n", - " output: function(msg) {\n", - " var id = msg.content.text.trim();\n", - " if (id in Bokeh.index) {\n", - " Bokeh.index[id].model.document.clear();\n", - " delete Bokeh.index[id];\n", - " }\n", - " }\n", - " }\n", - " });\n", - " // Destroy server and session\n", - " var cmd = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", - " cell.notebook.kernel.execute(cmd);\n", - " }\n", - " }\n", - "\n", - " /**\n", - " * Handle when a new output is added\n", - " */\n", - " function handleAddOutput(event, handle) {\n", - " var output_area = handle.output_area;\n", - " var output = handle.output;\n", - "\n", - " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n", - " if ((output.output_type != \"display_data\") || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n", - " return\n", - " }\n", - "\n", - " var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", - "\n", - " if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n", - " toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n", - " // store reference to embed id on output_area\n", - " output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", - " }\n", - " if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", - " var bk_div = document.createElement(\"div\");\n", - " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", - " var script_attrs = bk_div.children[0].attributes;\n", - " for (var i = 0; i < script_attrs.length; i++) {\n", - " toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n", - " }\n", - " // store reference to server id on output_area\n", - " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", - " }\n", - " }\n", - "\n", - " function register_renderer(events, OutputArea) {\n", - "\n", - " function append_mime(data, metadata, element) {\n", - " // create a DOM node to render to\n", - " var toinsert = this.create_output_subarea(\n", - " metadata,\n", - " CLASS_NAME,\n", - " EXEC_MIME_TYPE\n", - " );\n", - " this.keyboard_manager.register_events(toinsert);\n", - " // Render to node\n", - " var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", - " render(props, toinsert[toinsert.length - 1]);\n", - " element.append(toinsert);\n", - " return toinsert\n", - " }\n", - "\n", - " /* Handle when an output is cleared or removed */\n", - " events.on('clear_output.CodeCell', handleClearOutput);\n", - " events.on('delete.Cell', handleClearOutput);\n", - "\n", - " /* Handle when a new output is added */\n", - " events.on('output_added.OutputArea', handleAddOutput);\n", - "\n", - " /**\n", - " * Register the mime type and append_mime function with output_area\n", - " */\n", - " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", - " /* Is output safe? */\n", - " safe: true,\n", - " /* Index of renderer in `output_area.display_order` */\n", - " index: 0\n", - " });\n", - " }\n", - "\n", - " // register the mime type if in Jupyter Notebook environment and previously unregistered\n", - " if (root.Jupyter !== undefined) {\n", - " var events = require('base/js/events');\n", - " var OutputArea = require('notebook/js/outputarea').OutputArea;\n", - "\n", - " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", - " register_renderer(events, OutputArea);\n", - " }\n", - " }\n", - "\n", - " \n", - " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", - " root._bokeh_timeout = Date.now() + 5000;\n", - " root._bokeh_failed_load = false;\n", - " }\n", - "\n", - " var NB_LOAD_WARNING = {'data': {'text/html':\n", - " \"<div style='background-color: #fdd'>\\n\"+\n", - " \"<p>\\n\"+\n", - " \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n", - " \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n", - " \"</p>\\n\"+\n", - " \"<ul>\\n\"+\n", - " \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n", - " \"<li>use INLINE resources instead, as so:</li>\\n\"+\n", - " \"</ul>\\n\"+\n", - " \"<code>\\n\"+\n", - " \"from bokeh.resources import INLINE\\n\"+\n", - " \"output_notebook(resources=INLINE)\\n\"+\n", - " \"</code>\\n\"+\n", - " \"</div>\"}};\n", - "\n", - " function display_loaded() {\n", - " var el = document.getElementById(\"1001\");\n", - " if (el != null) {\n", - " el.textContent = \"BokehJS is loading...\";\n", - " }\n", - " if (root.Bokeh !== undefined) {\n", - " if (el != null) {\n", - " el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n", - " }\n", - " } else if (Date.now() < root._bokeh_timeout) {\n", - " setTimeout(display_loaded, 100)\n", - " }\n", - " }\n", - "\n", - "\n", - " function run_callbacks() {\n", - " try {\n", - " root._bokeh_onload_callbacks.forEach(function(callback) {\n", - " if (callback != null)\n", - " callback();\n", - " });\n", - " } finally {\n", - " delete root._bokeh_onload_callbacks\n", - " }\n", - " console.debug(\"Bokeh: all callbacks have finished\");\n", - " }\n", - "\n", - " function load_libs(css_urls, js_urls, callback) {\n", - " if (css_urls == null) css_urls = [];\n", - " if (js_urls == null) js_urls = [];\n", - "\n", - " root._bokeh_onload_callbacks.push(callback);\n", - " if (root._bokeh_is_loading > 0) {\n", - " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", - " return null;\n", - " }\n", - " if (js_urls == null || js_urls.length === 0) {\n", - " run_callbacks();\n", - " return null;\n", - " }\n", - " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", - " root._bokeh_is_loading = css_urls.length + js_urls.length;\n", - "\n", - " function on_load() {\n", - " root._bokeh_is_loading--;\n", - " if (root._bokeh_is_loading === 0) {\n", - " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", - " run_callbacks()\n", - " }\n", - " }\n", - "\n", - " function on_error() {\n", - " console.error(\"failed to load \" + url);\n", - " }\n", - "\n", - " for (var i = 0; i < css_urls.length; i++) {\n", - " var url = css_urls[i];\n", - " const element = document.createElement(\"link\");\n", - " element.onload = on_load;\n", - " element.onerror = on_error;\n", - " element.rel = \"stylesheet\";\n", - " element.type = \"text/css\";\n", - " element.href = url;\n", - " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", - " document.body.appendChild(element);\n", - " }\n", - "\n", - " for (var i = 0; i < js_urls.length; i++) {\n", - " var url = js_urls[i];\n", - " var element = document.createElement('script');\n", - " element.onload = on_load;\n", - " element.onerror = on_error;\n", - " element.async = false;\n", - " element.src = url;\n", - " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", - " document.head.appendChild(element);\n", - " }\n", - " };var element = document.getElementById(\"1001\");\n", - " if (element == null) {\n", - " console.error(\"Bokeh: ERROR: autoload.js configured with elementid '1001' but no matching script tag was found. \")\n", - " return false;\n", - " }\n", - "\n", - " function inject_raw_css(css) {\n", - " const element = document.createElement(\"style\");\n", - " element.appendChild(document.createTextNode(css));\n", - " document.body.appendChild(element);\n", - " }\n", - "\n", - " var js_urls = [\"https://cdn.pydata.org/bokeh/release/bokeh-1.1.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-1.1.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-tables-1.1.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-gl-1.1.0.min.js\"];\n", - " var css_urls = [\"https://cdn.pydata.org/bokeh/release/bokeh-1.1.0.min.css\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-1.1.0.min.css\", \"https://cdn.pydata.org/bokeh/release/bokeh-tables-1.1.0.min.css\"];\n", - "\n", - " var inline_js = [\n", - " function(Bokeh) {\n", - " Bokeh.set_log_level(\"info\");\n", - " },\n", - " \n", - " function(Bokeh) {\n", - " \n", - " },\n", - " function(Bokeh) {} // ensure no trailing comma for IE\n", - " ];\n", - "\n", - " function run_inline_js() {\n", - " \n", - " if ((root.Bokeh !== undefined) || (force === true)) {\n", - " for (var i = 0; i < inline_js.length; i++) {\n", - " inline_js[i].call(root, root.Bokeh);\n", - " }if (force === true) {\n", - " display_loaded();\n", - " }} else if (Date.now() < root._bokeh_timeout) {\n", - " setTimeout(run_inline_js, 100);\n", - " } else if (!root._bokeh_failed_load) {\n", - " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", - " root._bokeh_failed_load = true;\n", - " } else if (force !== true) {\n", - " var cell = $(document.getElementById(\"1001\")).parents('.cell').data().cell;\n", - " cell.output_area.append_execute_result(NB_LOAD_WARNING)\n", - " }\n", - "\n", - " }\n", - "\n", - " if (root._bokeh_is_loading === 0) {\n", - " console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n", - " run_inline_js();\n", - " } else {\n", - " load_libs(css_urls, js_urls, function() {\n", - " console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", - " run_inline_js();\n", - " });\n", - " }\n", - "}(window));" - ], - "application/vnd.bokehjs_load.v0+json": "\n(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n \n\n \n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n var NB_LOAD_WARNING = {'data': {'text/html':\n \"<div style='background-color: #fdd'>\\n\"+\n \"<p>\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"</p>\\n\"+\n \"<ul>\\n\"+\n \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n \"<li>use INLINE resources instead, as so:</li>\\n\"+\n \"</ul>\\n\"+\n \"<code>\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"</code>\\n\"+\n \"</div>\"}};\n\n function display_loaded() {\n var el = document.getElementById(\"1001\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error() {\n console.error(\"failed to load \" + url);\n }\n\n for (var i = 0; i < css_urls.length; i++) {\n var url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error;\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (var i = 0; i < js_urls.length; i++) {\n var url = js_urls[i];\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };var element = document.getElementById(\"1001\");\n if (element == null) {\n console.error(\"Bokeh: ERROR: autoload.js configured with elementid '1001' but no matching script tag was found. \")\n return false;\n }\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n var js_urls = [\"https://cdn.pydata.org/bokeh/release/bokeh-1.1.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-1.1.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-tables-1.1.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-gl-1.1.0.min.js\"];\n var css_urls = [\"https://cdn.pydata.org/bokeh/release/bokeh-1.1.0.min.css\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-1.1.0.min.css\", \"https://cdn.pydata.org/bokeh/release/bokeh-tables-1.1.0.min.css\"];\n\n var inline_js = [\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n \n function(Bokeh) {\n \n },\n function(Bokeh) {} // ensure no trailing comma for IE\n ];\n\n function run_inline_js() {\n \n if ((root.Bokeh !== undefined) || (force === true)) {\n for (var i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n var cell = $(document.getElementById(\"1001\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));" - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import os\n", - "import pandas as pd\n", - "import numpy as np\n", - "from itertools import combinations\n", - "from time import time\n", - "import matplotlib.pyplot as plt \n", - "from sklearn.linear_model import Lasso\n", - "import scipy.stats as ss\n", - "import warnings\n", - "from collections import Counter\n", - "from sklearn.kernel_ridge import KernelRidge\n", - "from sklearn.model_selection import GridSearchCV, LeaveOneOut\n", - "\n", - "from modules.sisso import SissoRegressor\n", - "from modules.combine_features import combine_features\n", - "from modules.viewer import show_structure, show_map\n", - "\n", - "# set display options for the notebook \n", - "%matplotlib inline\n", - "warnings.filterwarnings('ignore')" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "pycharm": {} - }, - "outputs": [], - "source": [ - "# Create writable directory for storing temporary files \n", - "# Note: works only with relative path \n", - "tmpdir='../../tmp/'\n", - "if not os.path.exists(tmpdir):\n", - " os.mkdir(tmpdir)\n", - " " - ] - }, - { - "cell_type": "markdown", - "metadata": { - "pycharm": {} - }, - "source": [ - "# Get the data\n", - "Let us load the data from the file data/data.pkl into a data frame. The data was downloaded from the NOMAD archive and the NOMAD atomic data collection. It consists of RS-ZB energy differences (in eV/atom) of the 82 octet binary compounds, structure objects containing the atomic positions of the materials and properties of the atomic constituents. The following atomic features are considered:\n", - "\n", - "<div >\n", - " <ul>\n", - " <li>Z: atomic number</li>\n", - " <li>period: period in the periodic table</li>\n", - " <li>IP: electron affinity</li>\n", - " <li>EA: ionization potential</li> \n", - " <li>E_HOMO: HOMO</li>\n", - " <li>E_LUMO: LUMO</li> \n", - " <li>r_(s, p, d): radius at the maximum of the s, p or d orbital.</li>\n", - " </ul>\n", - "</div>" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "pycharm": {} - }, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>energy_RS</th>\n", - " <th>energy_ZB</th>\n", - " <th>energy_diff</th>\n", - " <th>min_struc_type</th>\n", - " <th>Z(A)</th>\n", - " <th>Z(B)</th>\n", - " <th>period(A)</th>\n", - " <th>period(B)</th>\n", - " <th>IP(A)</th>\n", - " <th>IP(B)</th>\n", - " <th>...</th>\n", - " <th>E_HOMO(A)</th>\n", - " <th>E_HOMO(B)</th>\n", - " <th>E_LUMO(A)</th>\n", - " <th>E_LUMO(B)</th>\n", - " <th>r_s(A)</th>\n", - " <th>r_s(B)</th>\n", - " <th>r_p(A)</th>\n", - " <th>r_p(B)</th>\n", - " <th>r_d(A)</th>\n", - " <th>r_d(B)</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>AgBr</th>\n", - " <td>-108781.333959</td>\n", - " <td>-108781.303925</td>\n", - " <td>-0.030033</td>\n", - " <td>RS</td>\n", - " <td>47.0</td>\n", - " <td>35.0</td>\n", - " <td>5.0</td>\n", - " <td>4.0</td>\n", - " <td>-8.0581</td>\n", - " <td>-12.649600</td>\n", - " <td>...</td>\n", - " <td>-4.710</td>\n", - " <td>-8.001</td>\n", - " <td>-0.479</td>\n", - " <td>0.708</td>\n", - " <td>1.32</td>\n", - " <td>0.75</td>\n", - " <td>1.88</td>\n", - " <td>0.88</td>\n", - " <td>2.97</td>\n", - " <td>1.87</td>\n", - " </tr>\n", - " <tr>\n", - " <th>AgCl</th>\n", - " <td>-79397.451083</td>\n", - " <td>-79397.408285</td>\n", - " <td>-0.042797</td>\n", - " <td>RS</td>\n", - " <td>47.0</td>\n", - " <td>17.0</td>\n", - " <td>5.0</td>\n", - " <td>3.0</td>\n", - " <td>-8.0581</td>\n", - " <td>-13.901800</td>\n", - " <td>...</td>\n", - " <td>-4.710</td>\n", - " <td>-8.700</td>\n", - " <td>-0.479</td>\n", - " <td>0.574</td>\n", - " <td>1.32</td>\n", - " <td>0.68</td>\n", - " <td>1.88</td>\n", - " <td>0.76</td>\n", - " <td>2.97</td>\n", - " <td>1.67</td>\n", - " </tr>\n", - " <tr>\n", - " <th>AgF</th>\n", - " <td>-74477.428165</td>\n", - " <td>-74477.274407</td>\n", - " <td>-0.153758</td>\n", - " <td>RS</td>\n", - " <td>47.0</td>\n", - " <td>9.0</td>\n", - " <td>5.0</td>\n", - " <td>2.0</td>\n", - " <td>-8.0581</td>\n", - " <td>-19.404301</td>\n", - " <td>...</td>\n", - " <td>-4.710</td>\n", - " <td>-11.294</td>\n", - " <td>-0.479</td>\n", - " <td>1.251</td>\n", - " <td>1.32</td>\n", - " <td>0.41</td>\n", - " <td>1.88</td>\n", - " <td>0.37</td>\n", - " <td>2.97</td>\n", - " <td>1.43</td>\n", - " </tr>\n", - " <tr>\n", - " <th>AgI</th>\n", - " <td>-171339.208181</td>\n", - " <td>-171339.245107</td>\n", - " <td>0.036925</td>\n", - " <td>ZB</td>\n", - " <td>47.0</td>\n", - " <td>53.0</td>\n", - " <td>5.0</td>\n", - " <td>5.0</td>\n", - " <td>-8.0581</td>\n", - " <td>-11.257100</td>\n", - " <td>...</td>\n", - " <td>-4.710</td>\n", - " <td>-7.236</td>\n", - " <td>-0.479</td>\n", - " <td>0.213</td>\n", - " <td>1.32</td>\n", - " <td>0.90</td>\n", - " <td>1.88</td>\n", - " <td>1.07</td>\n", - " <td>2.97</td>\n", - " <td>1.72</td>\n", - " </tr>\n", - " <tr>\n", - " <th>AlAs</th>\n", - " <td>-34200.077513</td>\n", - " <td>-34200.290775</td>\n", - " <td>0.213262</td>\n", - " <td>ZB</td>\n", - " <td>13.0</td>\n", - " <td>33.0</td>\n", - " <td>3.0</td>\n", - " <td>4.0</td>\n", - " <td>-5.7805</td>\n", - " <td>-9.261900</td>\n", - " <td>...</td>\n", - " <td>-2.784</td>\n", - " <td>-5.341</td>\n", - " <td>0.695</td>\n", - " <td>0.064</td>\n", - " <td>1.09</td>\n", - " <td>0.85</td>\n", - " <td>1.39</td>\n", - " <td>1.04</td>\n", - " <td>1.94</td>\n", - " <td>2.02</td>\n", - " </tr>\n", - " <tr>\n", - " <th>AlN</th>\n", - " <td>-4036.429049</td>\n", - " <td>-4036.501998</td>\n", - " <td>0.072949</td>\n", - " <td>ZB</td>\n", - " <td>13.0</td>\n", - " <td>7.0</td>\n", - " <td>3.0</td>\n", - " <td>2.0</td>\n", - " <td>-5.7805</td>\n", - " <td>-13.585200</td>\n", - " <td>...</td>\n", - " <td>-2.784</td>\n", - " <td>-7.239</td>\n", - " <td>0.695</td>\n", - " <td>3.057</td>\n", - " <td>1.09</td>\n", - " <td>0.54</td>\n", - " <td>1.39</td>\n", - " <td>0.51</td>\n", - " <td>1.94</td>\n", - " <td>1.54</td>\n", - " </tr>\n", - " <tr>\n", - " <th>AlP</th>\n", - " <td>-7940.862745</td>\n", - " <td>-7941.081704</td>\n", - " <td>0.218958</td>\n", - " <td>ZB</td>\n", - " <td>13.0</td>\n", - " <td>15.0</td>\n", - " <td>3.0</td>\n", - " <td>3.0</td>\n", - " <td>-5.7805</td>\n", - " <td>-9.750600</td>\n", - " <td>...</td>\n", - " <td>-2.784</td>\n", - " <td>-5.596</td>\n", - " <td>0.695</td>\n", - " <td>0.183</td>\n", - " <td>1.09</td>\n", - " <td>0.83</td>\n", - " <td>1.39</td>\n", - " <td>0.97</td>\n", - " <td>1.94</td>\n", - " <td>1.77</td>\n", - " </tr>\n", - " <tr>\n", - " <th>AlSb</th>\n", - " <td>-92644.192004</td>\n", - " <td>-92644.348873</td>\n", - " <td>0.156869</td>\n", - " <td>ZB</td>\n", - " <td>13.0</td>\n", - " <td>51.0</td>\n", - " <td>3.0</td>\n", - " <td>5.0</td>\n", - " <td>-5.7805</td>\n", - " <td>-8.468300</td>\n", - " <td>...</td>\n", - " <td>-2.784</td>\n", - " <td>-4.991</td>\n", - " <td>0.695</td>\n", - " <td>0.105</td>\n", - " <td>1.09</td>\n", - " <td>1.00</td>\n", - " <td>1.39</td>\n", - " <td>1.23</td>\n", - " <td>1.94</td>\n", - " <td>2.06</td>\n", - " </tr>\n", - " <tr>\n", - " <th>AsGa</th>\n", - " <td>-57457.679958</td>\n", - " <td>-57457.954236</td>\n", - " <td>0.274278</td>\n", - " <td>ZB</td>\n", - " <td>31.0</td>\n", - " <td>33.0</td>\n", - " <td>4.0</td>\n", - " <td>4.0</td>\n", - " <td>-5.8182</td>\n", - " <td>-9.261900</td>\n", - " <td>...</td>\n", - " <td>-2.732</td>\n", - " <td>-5.341</td>\n", - " <td>0.130</td>\n", - " <td>0.064</td>\n", - " <td>0.99</td>\n", - " <td>0.85</td>\n", - " <td>1.33</td>\n", - " <td>1.04</td>\n", - " <td>2.16</td>\n", - " <td>2.02</td>\n", - " </tr>\n", - " <tr>\n", - " <th>BAs</th>\n", - " <td>-31239.347344</td>\n", - " <td>-31240.222322</td>\n", - " <td>0.874978</td>\n", - " <td>ZB</td>\n", - " <td>5.0</td>\n", - " <td>33.0</td>\n", - " <td>2.0</td>\n", - " <td>4.0</td>\n", - " <td>-8.1900</td>\n", - " <td>-9.261900</td>\n", - " <td>...</td>\n", - " <td>-3.715</td>\n", - " <td>-5.341</td>\n", - " <td>2.248</td>\n", - " <td>0.064</td>\n", - " <td>0.81</td>\n", - " <td>0.85</td>\n", - " <td>0.83</td>\n", - " <td>1.04</td>\n", - " <td>1.95</td>\n", - " <td>2.02</td>\n", - " </tr>\n", - " <tr>\n", - " <th>BN</th>\n", - " <td>-1075.033415</td>\n", - " <td>-1076.745496</td>\n", - " <td>1.712080</td>\n", - " <td>ZB</td>\n", - " <td>5.0</td>\n", - " <td>7.0</td>\n", - " <td>2.0</td>\n", - " <td>2.0</td>\n", - " <td>-8.1900</td>\n", - " <td>-13.585200</td>\n", - " <td>...</td>\n", - " <td>-3.715</td>\n", - " <td>-7.239</td>\n", - " <td>2.248</td>\n", - " <td>3.057</td>\n", - " <td>0.81</td>\n", - " <td>0.54</td>\n", - " <td>0.83</td>\n", - " <td>0.51</td>\n", - " <td>1.95</td>\n", - " <td>1.54</td>\n", - " </tr>\n", - " <tr>\n", - " <th>BP</th>\n", - " <td>-4980.272420</td>\n", - " <td>-4981.291645</td>\n", - " <td>1.019225</td>\n", - " <td>ZB</td>\n", - " <td>5.0</td>\n", - " <td>15.0</td>\n", - " <td>2.0</td>\n", - " <td>3.0</td>\n", - " <td>-8.1900</td>\n", - " <td>-9.750600</td>\n", - " <td>...</td>\n", - " <td>-3.715</td>\n", - " <td>-5.596</td>\n", - " <td>2.248</td>\n", - " <td>0.183</td>\n", - " <td>0.81</td>\n", - " <td>0.83</td>\n", - " <td>0.83</td>\n", - " <td>0.97</td>\n", - " <td>1.95</td>\n", - " <td>1.77</td>\n", - " </tr>\n", - " <tr>\n", - " <th>BSb</th>\n", - " <td>-89683.613701</td>\n", - " <td>-89684.194551</td>\n", - " <td>0.580849</td>\n", - " <td>ZB</td>\n", - " <td>5.0</td>\n", - " <td>51.0</td>\n", - " <td>2.0</td>\n", - " <td>5.0</td>\n", - " <td>-8.1900</td>\n", - " <td>-8.468300</td>\n", - " <td>...</td>\n", - " <td>-3.715</td>\n", - " <td>-4.991</td>\n", - " <td>2.248</td>\n", - " <td>0.105</td>\n", - " <td>0.81</td>\n", - " <td>1.00</td>\n", - " <td>0.83</td>\n", - " <td>1.23</td>\n", - " <td>1.95</td>\n", - " <td>2.06</td>\n", - " </tr>\n", - " <tr>\n", - " <th>BaO</th>\n", - " <td>-113504.826963</td>\n", - " <td>-113504.733965</td>\n", - " <td>-0.092999</td>\n", - " <td>RS</td>\n", - " <td>56.0</td>\n", - " <td>8.0</td>\n", - " <td>6.0</td>\n", - " <td>2.0</td>\n", - " <td>-5.5157</td>\n", - " <td>-16.433201</td>\n", - " <td>...</td>\n", - " <td>-3.346</td>\n", - " <td>-9.197</td>\n", - " <td>-2.129</td>\n", - " <td>2.541</td>\n", - " <td>2.15</td>\n", - " <td>0.46</td>\n", - " <td>2.63</td>\n", - " <td>0.43</td>\n", - " <td>1.35</td>\n", - " <td>2.22</td>\n", - " </tr>\n", - " <tr>\n", - " <th>BaS</th>\n", - " <td>-117910.270940</td>\n", - " <td>-117909.951178</td>\n", - " <td>-0.319762</td>\n", - " <td>RS</td>\n", - " <td>56.0</td>\n", - " <td>16.0</td>\n", - " <td>6.0</td>\n", - " <td>3.0</td>\n", - " <td>-5.5157</td>\n", - " <td>-11.795100</td>\n", - " <td>...</td>\n", - " <td>-3.346</td>\n", - " <td>-7.106</td>\n", - " <td>-2.129</td>\n", - " <td>0.642</td>\n", - " <td>2.15</td>\n", - " <td>0.74</td>\n", - " <td>2.63</td>\n", - " <td>0.85</td>\n", - " <td>1.35</td>\n", - " <td>2.37</td>\n", - " </tr>\n", - " <tr>\n", - " <th>BaSe</th>\n", - " <td>-145716.769672</td>\n", - " <td>-145716.426227</td>\n", - " <td>-0.343445</td>\n", - " <td>RS</td>\n", - " <td>56.0</td>\n", - " <td>34.0</td>\n", - " <td>6.0</td>\n", - " <td>4.0</td>\n", - " <td>-5.5157</td>\n", - " <td>-10.946000</td>\n", - " <td>...</td>\n", - " <td>-3.346</td>\n", - " <td>-6.654</td>\n", - " <td>-2.129</td>\n", - " <td>1.316</td>\n", - " <td>2.15</td>\n", - " <td>0.80</td>\n", - " <td>2.63</td>\n", - " <td>0.95</td>\n", - " <td>1.35</td>\n", - " <td>2.18</td>\n", - " </tr>\n", - " <tr>\n", - " <th>BaTe</th>\n", - " <td>-206204.229045</td>\n", - " <td>-206203.853659</td>\n", - " <td>-0.375387</td>\n", - " <td>RS</td>\n", - " <td>56.0</td>\n", - " <td>52.0</td>\n", - " <td>6.0</td>\n", - " <td>5.0</td>\n", - " <td>-5.5157</td>\n", - " <td>-9.866700</td>\n", - " <td>...</td>\n", - " <td>-3.346</td>\n", - " <td>-6.109</td>\n", - " <td>-2.129</td>\n", - " <td>0.099</td>\n", - " <td>2.15</td>\n", - " <td>0.94</td>\n", - " <td>2.63</td>\n", - " <td>1.14</td>\n", - " <td>1.35</td>\n", - " <td>1.83</td>\n", - " </tr>\n", - " <tr>\n", - " <th>BeO</th>\n", - " <td>-1218.439958</td>\n", - " <td>-1219.131796</td>\n", - " <td>0.691838</td>\n", - " <td>ZB</td>\n", - " <td>4.0</td>\n", - " <td>8.0</td>\n", - " <td>2.0</td>\n", - " <td>2.0</td>\n", - " <td>-9.4594</td>\n", - " <td>-16.433201</td>\n", - " <td>...</td>\n", - " <td>-5.600</td>\n", - " <td>-9.197</td>\n", - " <td>-2.098</td>\n", - " <td>2.541</td>\n", - " <td>1.08</td>\n", - " <td>0.46</td>\n", - " <td>1.21</td>\n", - " <td>0.43</td>\n", - " <td>2.88</td>\n", - " <td>2.22</td>\n", - " </tr>\n", - " <tr>\n", - " <th>BeS</th>\n", - " <td>-5622.515539</td>\n", - " <td>-5623.021867</td>\n", - " <td>0.506328</td>\n", - " <td>ZB</td>\n", - " <td>4.0</td>\n", - " <td>16.0</td>\n", - " <td>2.0</td>\n", - " <td>3.0</td>\n", - " <td>-9.4594</td>\n", - " <td>-11.795100</td>\n", - " <td>...</td>\n", - " <td>-5.600</td>\n", - " <td>-7.106</td>\n", - " <td>-2.098</td>\n", - " <td>0.642</td>\n", - " <td>1.08</td>\n", - " <td>0.74</td>\n", - " <td>1.21</td>\n", - " <td>0.85</td>\n", - " <td>2.88</td>\n", - " <td>2.37</td>\n", - " </tr>\n", - " <tr>\n", - " <th>BeSe</th>\n", - " <td>-33428.796762</td>\n", - " <td>-33429.291703</td>\n", - " <td>0.494940</td>\n", - " <td>ZB</td>\n", - " <td>4.0</td>\n", - " <td>34.0</td>\n", - " <td>2.0</td>\n", - " <td>4.0</td>\n", - " <td>-9.4594</td>\n", - " <td>-10.946000</td>\n", - " <td>...</td>\n", - " <td>-5.600</td>\n", - " <td>-6.654</td>\n", - " <td>-2.098</td>\n", - " <td>1.316</td>\n", - " <td>1.08</td>\n", - " <td>0.80</td>\n", - " <td>1.21</td>\n", - " <td>0.95</td>\n", - " <td>2.88</td>\n", - " <td>2.18</td>\n", - " </tr>\n", - " <tr>\n", - " <th>BeTe</th>\n", - " <td>-93916.104186</td>\n", - " <td>-93916.572772</td>\n", - " <td>0.468586</td>\n", - " <td>ZB</td>\n", - " <td>4.0</td>\n", - " <td>52.0</td>\n", - " <td>2.0</td>\n", - " <td>5.0</td>\n", - " <td>-9.4594</td>\n", - " <td>-9.866700</td>\n", - " <td>...</td>\n", - " <td>-5.600</td>\n", - " <td>-6.109</td>\n", - " <td>-2.098</td>\n", - " <td>0.099</td>\n", - " <td>1.08</td>\n", - " <td>0.94</td>\n", - " <td>1.21</td>\n", - " <td>1.14</td>\n", - " <td>2.88</td>\n", - " <td>1.83</td>\n", - " </tr>\n", - " <tr>\n", - " <th>C2</th>\n", - " <td>-1026.548820</td>\n", - " <td>-1029.177424</td>\n", - " <td>2.628604</td>\n", - " <td>ZB</td>\n", - " <td>6.0</td>\n", - " <td>6.0</td>\n", - " <td>2.0</td>\n", - " <td>2.0</td>\n", - " <td>-10.8517</td>\n", - " <td>-10.851700</td>\n", - " <td>...</td>\n", - " <td>-5.416</td>\n", - " <td>-5.416</td>\n", - " <td>1.992</td>\n", - " <td>1.992</td>\n", - " <td>0.64</td>\n", - " <td>0.64</td>\n", - " <td>0.63</td>\n", - " <td>0.63</td>\n", - " <td>1.63</td>\n", - " <td>1.63</td>\n", - " </tr>\n", - " <tr>\n", - " <th>CaO</th>\n", - " <td>-10276.901085</td>\n", - " <td>-10276.635866</td>\n", - " <td>-0.265219</td>\n", - " <td>RS</td>\n", - " <td>20.0</td>\n", - " <td>8.0</td>\n", - " <td>4.0</td>\n", - " <td>2.0</td>\n", - " <td>-6.4280</td>\n", - " <td>-16.433201</td>\n", - " <td>...</td>\n", - " <td>-3.864</td>\n", - " <td>-9.197</td>\n", - " <td>-2.133</td>\n", - " <td>2.541</td>\n", - " <td>1.76</td>\n", - " <td>0.46</td>\n", - " <td>2.32</td>\n", - " <td>0.43</td>\n", - " <td>0.68</td>\n", - " <td>2.22</td>\n", - " </tr>\n", - " <tr>\n", - " <th>CaS</th>\n", - " <td>-14681.946741</td>\n", - " <td>-14681.577608</td>\n", - " <td>-0.369133</td>\n", - " <td>RS</td>\n", - " <td>20.0</td>\n", - " <td>16.0</td>\n", - " <td>4.0</td>\n", - " <td>3.0</td>\n", - " <td>-6.4280</td>\n", - " <td>-11.795100</td>\n", - " <td>...</td>\n", - " <td>-3.864</td>\n", - " <td>-7.106</td>\n", - " <td>-2.133</td>\n", - " <td>0.642</td>\n", - " <td>1.76</td>\n", - " <td>0.74</td>\n", - " <td>2.32</td>\n", - " <td>0.85</td>\n", - " <td>0.68</td>\n", - " <td>2.37</td>\n", - " </tr>\n", - " <tr>\n", - " <th>CaSe</th>\n", - " <td>-42488.352920</td>\n", - " <td>-42487.992122</td>\n", - " <td>-0.360798</td>\n", - " <td>RS</td>\n", - " <td>20.0</td>\n", - " <td>34.0</td>\n", - " <td>4.0</td>\n", - " <td>4.0</td>\n", - " <td>-6.4280</td>\n", - " <td>-10.946000</td>\n", - " <td>...</td>\n", - " <td>-3.864</td>\n", - " <td>-6.654</td>\n", - " <td>-2.133</td>\n", - " <td>1.316</td>\n", - " <td>1.76</td>\n", - " <td>0.80</td>\n", - " <td>2.32</td>\n", - " <td>0.95</td>\n", - " <td>0.68</td>\n", - " <td>2.18</td>\n", - " </tr>\n", - " <tr>\n", - " <th>CaTe</th>\n", - " <td>-102975.696119</td>\n", - " <td>-102975.345663</td>\n", - " <td>-0.350456</td>\n", - " <td>RS</td>\n", - " <td>20.0</td>\n", - " <td>52.0</td>\n", - " <td>4.0</td>\n", - " <td>5.0</td>\n", - " <td>-6.4280</td>\n", - " <td>-9.866700</td>\n", - " <td>...</td>\n", - " <td>-3.864</td>\n", - " <td>-6.109</td>\n", - " <td>-2.133</td>\n", - " <td>0.099</td>\n", - " <td>1.76</td>\n", - " <td>0.94</td>\n", - " <td>2.32</td>\n", - " <td>1.14</td>\n", - " <td>0.68</td>\n", - " <td>1.83</td>\n", - " </tr>\n", - " <tr>\n", - " <th>CdO</th>\n", - " <td>-78015.168309</td>\n", - " <td>-78015.084148</td>\n", - " <td>-0.084161</td>\n", - " <td>RS</td>\n", - " <td>48.0</td>\n", - " <td>8.0</td>\n", - " <td>5.0</td>\n", - " <td>2.0</td>\n", - " <td>-9.5814</td>\n", - " <td>-16.433201</td>\n", - " <td>...</td>\n", - " <td>-5.952</td>\n", - " <td>-9.197</td>\n", - " <td>-1.309</td>\n", - " <td>2.541</td>\n", - " <td>1.23</td>\n", - " <td>0.46</td>\n", - " <td>1.74</td>\n", - " <td>0.43</td>\n", - " <td>2.60</td>\n", - " <td>2.22</td>\n", - " </tr>\n", - " <tr>\n", - " <th>CdS</th>\n", - " <td>-82420.563362</td>\n", - " <td>-82420.636035</td>\n", - " <td>0.072673</td>\n", - " <td>ZB</td>\n", - " <td>48.0</td>\n", - " <td>16.0</td>\n", - " <td>5.0</td>\n", - " <td>3.0</td>\n", - " <td>-9.5814</td>\n", - " <td>-11.795100</td>\n", - " <td>...</td>\n", - " <td>-5.952</td>\n", - " <td>-7.106</td>\n", - " <td>-1.309</td>\n", - " <td>0.642</td>\n", - " <td>1.23</td>\n", - " <td>0.74</td>\n", - " <td>1.74</td>\n", - " <td>0.85</td>\n", - " <td>2.60</td>\n", - " <td>2.37</td>\n", - " </tr>\n", - " <tr>\n", - " <th>CdSe</th>\n", - " <td>-110227.061261</td>\n", - " <td>-110227.144833</td>\n", - " <td>0.083572</td>\n", - " <td>ZB</td>\n", - " <td>48.0</td>\n", - " <td>34.0</td>\n", - " <td>5.0</td>\n", - " <td>4.0</td>\n", - " <td>-9.5814</td>\n", - " <td>-10.946000</td>\n", - " <td>...</td>\n", - " <td>-5.952</td>\n", - " <td>-6.654</td>\n", - " <td>-1.309</td>\n", - " <td>1.316</td>\n", - " <td>1.23</td>\n", - " <td>0.80</td>\n", - " <td>1.74</td>\n", - " <td>0.95</td>\n", - " <td>2.60</td>\n", - " <td>2.18</td>\n", - " </tr>\n", - " <tr>\n", - " <th>CdTe</th>\n", - " <td>-170714.589312</td>\n", - " <td>-170714.703852</td>\n", - " <td>0.114540</td>\n", - " <td>ZB</td>\n", - " <td>48.0</td>\n", - " <td>52.0</td>\n", - " <td>5.0</td>\n", - " <td>5.0</td>\n", - " <td>-9.5814</td>\n", - " <td>-9.866700</td>\n", - " <td>...</td>\n", - " <td>-5.952</td>\n", - " <td>-6.109</td>\n", - " <td>-1.309</td>\n", - " <td>0.099</td>\n", - " <td>1.23</td>\n", - " <td>0.94</td>\n", - " <td>1.74</td>\n", - " <td>1.14</td>\n", - " <td>2.60</td>\n", - " <td>1.83</td>\n", - " </tr>\n", - " <tr>\n", - " <th>...</th>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>LiBr</th>\n", - " <td>-35758.254037</td>\n", - " <td>-35758.221290</td>\n", - " <td>-0.032746</td>\n", - " <td>RS</td>\n", - " <td>3.0</td>\n", - " <td>35.0</td>\n", - " <td>2.0</td>\n", - " <td>4.0</td>\n", - " <td>-5.3291</td>\n", - " <td>-12.649600</td>\n", - " <td>...</td>\n", - " <td>-2.874</td>\n", - " <td>-8.001</td>\n", - " <td>-0.978</td>\n", - " <td>0.708</td>\n", - " <td>1.65</td>\n", - " <td>0.75</td>\n", - " <td>2.00</td>\n", - " <td>0.88</td>\n", - " <td>6.93</td>\n", - " <td>1.87</td>\n", - " </tr>\n", - " <tr>\n", - " <th>LiCl</th>\n", - " <td>-6374.542821</td>\n", - " <td>-6374.504440</td>\n", - " <td>-0.038381</td>\n", - " <td>RS</td>\n", - " <td>3.0</td>\n", - " <td>17.0</td>\n", - " <td>2.0</td>\n", - " <td>3.0</td>\n", - " <td>-5.3291</td>\n", - " <td>-13.901800</td>\n", - " <td>...</td>\n", - " <td>-2.874</td>\n", - " <td>-8.700</td>\n", - " <td>-0.978</td>\n", - " <td>0.574</td>\n", - " <td>1.65</td>\n", - " <td>0.68</td>\n", - " <td>2.00</td>\n", - " <td>0.76</td>\n", - " <td>6.93</td>\n", - " <td>1.67</td>\n", - " </tr>\n", - " <tr>\n", - " <th>LiF</th>\n", - " <td>-1455.242231</td>\n", - " <td>-1455.182743</td>\n", - " <td>-0.059488</td>\n", - " <td>RS</td>\n", - " <td>3.0</td>\n", - " <td>9.0</td>\n", - " <td>2.0</td>\n", - " <td>2.0</td>\n", - " <td>-5.3291</td>\n", - " <td>-19.404301</td>\n", - " <td>...</td>\n", - " <td>-2.874</td>\n", - " <td>-11.294</td>\n", - " <td>-0.978</td>\n", - " <td>1.251</td>\n", - " <td>1.65</td>\n", - " <td>0.41</td>\n", - " <td>2.00</td>\n", - " <td>0.37</td>\n", - " <td>6.93</td>\n", - " <td>1.43</td>\n", - " </tr>\n", - " <tr>\n", - " <th>LiI</th>\n", - " <td>-98315.905042</td>\n", - " <td>-98315.883382</td>\n", - " <td>-0.021661</td>\n", - " <td>RS</td>\n", - " <td>3.0</td>\n", - " <td>53.0</td>\n", - " <td>2.0</td>\n", - " <td>5.0</td>\n", - " <td>-5.3291</td>\n", - " <td>-11.257100</td>\n", - " <td>...</td>\n", - " <td>-2.874</td>\n", - " <td>-7.236</td>\n", - " <td>-0.978</td>\n", - " <td>0.213</td>\n", - " <td>1.65</td>\n", - " <td>0.90</td>\n", - " <td>2.00</td>\n", - " <td>1.07</td>\n", - " <td>6.93</td>\n", - " <td>1.72</td>\n", - " </tr>\n", - " <tr>\n", - " <th>MgO</th>\n", - " <td>-3737.074745</td>\n", - " <td>-3736.842470</td>\n", - " <td>-0.232275</td>\n", - " <td>RS</td>\n", - " <td>12.0</td>\n", - " <td>8.0</td>\n", - " <td>3.0</td>\n", - " <td>2.0</td>\n", - " <td>-8.0371</td>\n", - " <td>-16.433201</td>\n", - " <td>...</td>\n", - " <td>-4.782</td>\n", - " <td>-9.197</td>\n", - " <td>-1.358</td>\n", - " <td>2.541</td>\n", - " <td>1.33</td>\n", - " <td>0.46</td>\n", - " <td>1.90</td>\n", - " <td>0.43</td>\n", - " <td>3.17</td>\n", - " <td>2.22</td>\n", - " </tr>\n", - " <tr>\n", - " <th>MgS</th>\n", - " <td>-8141.593383</td>\n", - " <td>-8141.506684</td>\n", - " <td>-0.086700</td>\n", - " <td>RS</td>\n", - " <td>12.0</td>\n", - " <td>16.0</td>\n", - " <td>3.0</td>\n", - " <td>3.0</td>\n", - " <td>-8.0371</td>\n", - " <td>-11.795100</td>\n", - " <td>...</td>\n", - " <td>-4.782</td>\n", - " <td>-7.106</td>\n", - " <td>-1.358</td>\n", - " <td>0.642</td>\n", - " <td>1.33</td>\n", - " <td>0.74</td>\n", - " <td>1.90</td>\n", - " <td>0.85</td>\n", - " <td>3.17</td>\n", - " <td>2.37</td>\n", - " </tr>\n", - " <tr>\n", - " <th>MgSe</th>\n", - " <td>-35947.940031</td>\n", - " <td>-35947.884729</td>\n", - " <td>-0.055302</td>\n", - " <td>RS</td>\n", - " <td>12.0</td>\n", - " <td>34.0</td>\n", - " <td>3.0</td>\n", - " <td>4.0</td>\n", - " <td>-8.0371</td>\n", - " <td>-10.946000</td>\n", - " <td>...</td>\n", - " <td>-4.782</td>\n", - " <td>-6.654</td>\n", - " <td>-1.358</td>\n", - " <td>1.316</td>\n", - " <td>1.33</td>\n", - " <td>0.80</td>\n", - " <td>1.90</td>\n", - " <td>0.95</td>\n", - " <td>3.17</td>\n", - " <td>2.18</td>\n", - " </tr>\n", - " <tr>\n", - " <th>MgTe</th>\n", - " <td>-96435.238354</td>\n", - " <td>-96435.233762</td>\n", - " <td>-0.004591</td>\n", - " <td>RS</td>\n", - " <td>12.0</td>\n", - " <td>52.0</td>\n", - " <td>3.0</td>\n", - " <td>5.0</td>\n", - " <td>-8.0371</td>\n", - " <td>-9.866700</td>\n", - " <td>...</td>\n", - " <td>-4.782</td>\n", - " <td>-6.109</td>\n", - " <td>-1.358</td>\n", - " <td>0.099</td>\n", - " <td>1.33</td>\n", - " <td>0.94</td>\n", - " <td>1.90</td>\n", - " <td>1.14</td>\n", - " <td>3.17</td>\n", - " <td>1.83</td>\n", - " </tr>\n", - " <tr>\n", - " <th>NaBr</th>\n", - " <td>-37859.126083</td>\n", - " <td>-37858.999655</td>\n", - " <td>-0.126429</td>\n", - " <td>RS</td>\n", - " <td>11.0</td>\n", - " <td>35.0</td>\n", - " <td>3.0</td>\n", - " <td>4.0</td>\n", - " <td>-5.2231</td>\n", - " <td>-12.649600</td>\n", - " <td>...</td>\n", - " <td>-2.819</td>\n", - " <td>-8.001</td>\n", - " <td>-0.718</td>\n", - " <td>0.708</td>\n", - " <td>1.71</td>\n", - " <td>0.75</td>\n", - " <td>2.60</td>\n", - " <td>0.88</td>\n", - " <td>6.57</td>\n", - " <td>1.87</td>\n", - " </tr>\n", - " <tr>\n", - " <th>NaCl</th>\n", - " <td>-8475.373434</td>\n", - " <td>-8475.240442</td>\n", - " <td>-0.132992</td>\n", - " <td>RS</td>\n", - " <td>11.0</td>\n", - " <td>17.0</td>\n", - " <td>3.0</td>\n", - " <td>3.0</td>\n", - " <td>-5.2231</td>\n", - " <td>-13.901800</td>\n", - " <td>...</td>\n", - " <td>-2.819</td>\n", - " <td>-8.700</td>\n", - " <td>-0.718</td>\n", - " <td>0.574</td>\n", - " <td>1.71</td>\n", - " <td>0.68</td>\n", - " <td>2.60</td>\n", - " <td>0.76</td>\n", - " <td>6.57</td>\n", - " <td>1.67</td>\n", - " </tr>\n", - " <tr>\n", - " <th>NaF</th>\n", - " <td>-3555.843406</td>\n", - " <td>-3555.697618</td>\n", - " <td>-0.145788</td>\n", - " <td>RS</td>\n", - " <td>11.0</td>\n", - " <td>9.0</td>\n", - " <td>3.0</td>\n", - " <td>2.0</td>\n", - " <td>-5.2231</td>\n", - " <td>-19.404301</td>\n", - " <td>...</td>\n", - " <td>-2.819</td>\n", - " <td>-11.294</td>\n", - " <td>-0.718</td>\n", - " <td>1.251</td>\n", - " <td>1.71</td>\n", - " <td>0.41</td>\n", - " <td>2.60</td>\n", - " <td>0.37</td>\n", - " <td>6.57</td>\n", - " <td>1.43</td>\n", - " </tr>\n", - " <tr>\n", - " <th>NaI</th>\n", - " <td>-100416.816231</td>\n", - " <td>-100416.701393</td>\n", - " <td>-0.114838</td>\n", - " <td>RS</td>\n", - " <td>11.0</td>\n", - " <td>53.0</td>\n", - " <td>3.0</td>\n", - " <td>5.0</td>\n", - " <td>-5.2231</td>\n", - " <td>-11.257100</td>\n", - " <td>...</td>\n", - " <td>-2.819</td>\n", - " <td>-7.236</td>\n", - " <td>-0.718</td>\n", - " <td>0.213</td>\n", - " <td>1.71</td>\n", - " <td>0.90</td>\n", - " <td>2.60</td>\n", - " <td>1.07</td>\n", - " <td>6.57</td>\n", - " <td>1.72</td>\n", - " </tr>\n", - " <tr>\n", - " <th>RbBr</th>\n", - " <td>-76473.689393</td>\n", - " <td>-76473.525572</td>\n", - " <td>-0.163821</td>\n", - " <td>RS</td>\n", - " <td>37.0</td>\n", - " <td>35.0</td>\n", - " <td>5.0</td>\n", - " <td>4.0</td>\n", - " <td>-4.2889</td>\n", - " <td>-12.649600</td>\n", - " <td>...</td>\n", - " <td>-2.360</td>\n", - " <td>-8.001</td>\n", - " <td>-0.705</td>\n", - " <td>0.708</td>\n", - " <td>2.24</td>\n", - " <td>0.75</td>\n", - " <td>3.20</td>\n", - " <td>0.88</td>\n", - " <td>1.96</td>\n", - " <td>1.87</td>\n", - " </tr>\n", - " <tr>\n", - " <th>RbCl</th>\n", - " <td>-47089.892923</td>\n", - " <td>-47089.732419</td>\n", - " <td>-0.160504</td>\n", - " <td>RS</td>\n", - " <td>37.0</td>\n", - " <td>17.0</td>\n", - " <td>5.0</td>\n", - " <td>3.0</td>\n", - " <td>-4.2889</td>\n", - " <td>-13.901800</td>\n", - " <td>...</td>\n", - " <td>-2.360</td>\n", - " <td>-8.700</td>\n", - " <td>-0.705</td>\n", - " <td>0.574</td>\n", - " <td>2.24</td>\n", - " <td>0.68</td>\n", - " <td>3.20</td>\n", - " <td>0.76</td>\n", - " <td>1.96</td>\n", - " <td>1.67</td>\n", - " </tr>\n", - " <tr>\n", - " <th>RbF</th>\n", - " <td>-42170.183659</td>\n", - " <td>-42170.048063</td>\n", - " <td>-0.135596</td>\n", - " <td>RS</td>\n", - " <td>37.0</td>\n", - " <td>9.0</td>\n", - " <td>5.0</td>\n", - " <td>2.0</td>\n", - " <td>-4.2889</td>\n", - " <td>-19.404301</td>\n", - " <td>...</td>\n", - " <td>-2.360</td>\n", - " <td>-11.294</td>\n", - " <td>-0.705</td>\n", - " <td>1.251</td>\n", - " <td>2.24</td>\n", - " <td>0.41</td>\n", - " <td>3.20</td>\n", - " <td>0.37</td>\n", - " <td>1.96</td>\n", - " <td>1.43</td>\n", - " </tr>\n", - " <tr>\n", - " <th>RbI</th>\n", - " <td>-139031.425413</td>\n", - " <td>-139031.258212</td>\n", - " <td>-0.167201</td>\n", - " <td>RS</td>\n", - " <td>37.0</td>\n", - " <td>53.0</td>\n", - " <td>5.0</td>\n", - " <td>5.0</td>\n", - " <td>-4.2889</td>\n", - " <td>-11.257100</td>\n", - " <td>...</td>\n", - " <td>-2.360</td>\n", - " <td>-7.236</td>\n", - " <td>-0.705</td>\n", - " <td>0.213</td>\n", - " <td>2.24</td>\n", - " <td>0.90</td>\n", - " <td>3.20</td>\n", - " <td>1.07</td>\n", - " <td>1.96</td>\n", - " <td>1.72</td>\n", - " </tr>\n", - " <tr>\n", - " <th>Si2</th>\n", - " <td>-7873.897162</td>\n", - " <td>-7874.176328</td>\n", - " <td>0.279166</td>\n", - " <td>ZB</td>\n", - " <td>14.0</td>\n", - " <td>14.0</td>\n", - " <td>3.0</td>\n", - " <td>3.0</td>\n", - " <td>-7.7577</td>\n", - " <td>-7.757700</td>\n", - " <td>...</td>\n", - " <td>-4.163</td>\n", - " <td>-4.163</td>\n", - " <td>0.440</td>\n", - " <td>0.440</td>\n", - " <td>0.94</td>\n", - " <td>0.94</td>\n", - " <td>1.13</td>\n", - " <td>1.13</td>\n", - " <td>1.89</td>\n", - " <td>1.89</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SiC</th>\n", - " <td>-4451.285599</td>\n", - " <td>-4451.954622</td>\n", - " <td>0.669024</td>\n", - " <td>ZB</td>\n", - " <td>14.0</td>\n", - " <td>6.0</td>\n", - " <td>3.0</td>\n", - " <td>2.0</td>\n", - " <td>-7.7577</td>\n", - " <td>-10.851700</td>\n", - " <td>...</td>\n", - " <td>-4.163</td>\n", - " <td>-5.416</td>\n", - " <td>0.440</td>\n", - " <td>1.992</td>\n", - " <td>0.94</td>\n", - " <td>0.64</td>\n", - " <td>1.13</td>\n", - " <td>0.63</td>\n", - " <td>1.89</td>\n", - " <td>1.63</td>\n", - " </tr>\n", - " <tr>\n", - " <th>Sn2</th>\n", - " <td>-170215.350592</td>\n", - " <td>-170215.367556</td>\n", - " <td>0.016964</td>\n", - " <td>ZB</td>\n", - " <td>50.0</td>\n", - " <td>50.0</td>\n", - " <td>5.0</td>\n", - " <td>5.0</td>\n", - " <td>-7.0428</td>\n", - " <td>-7.042800</td>\n", - " <td>...</td>\n", - " <td>-3.866</td>\n", - " <td>-3.866</td>\n", - " <td>0.008</td>\n", - " <td>0.008</td>\n", - " <td>1.06</td>\n", - " <td>1.06</td>\n", - " <td>1.34</td>\n", - " <td>1.34</td>\n", - " <td>2.03</td>\n", - " <td>2.03</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SnC</th>\n", - " <td>-85621.035409</td>\n", - " <td>-85621.488947</td>\n", - " <td>0.453538</td>\n", - " <td>ZB</td>\n", - " <td>50.0</td>\n", - " <td>6.0</td>\n", - " <td>5.0</td>\n", - " <td>2.0</td>\n", - " <td>-7.0428</td>\n", - " <td>-10.851700</td>\n", - " <td>...</td>\n", - " <td>-3.866</td>\n", - " <td>-5.416</td>\n", - " <td>0.008</td>\n", - " <td>1.992</td>\n", - " <td>1.06</td>\n", - " <td>0.64</td>\n", - " <td>1.34</td>\n", - " <td>0.63</td>\n", - " <td>2.03</td>\n", - " <td>1.63</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SnGe</th>\n", - " <td>-113787.450287</td>\n", - " <td>-113787.531950</td>\n", - " <td>0.081663</td>\n", - " <td>ZB</td>\n", - " <td>50.0</td>\n", - " <td>32.0</td>\n", - " <td>5.0</td>\n", - " <td>4.0</td>\n", - " <td>-7.0428</td>\n", - " <td>-7.567000</td>\n", - " <td>...</td>\n", - " <td>-3.866</td>\n", - " <td>-4.046</td>\n", - " <td>0.008</td>\n", - " <td>2.175</td>\n", - " <td>1.06</td>\n", - " <td>0.92</td>\n", - " <td>1.34</td>\n", - " <td>1.16</td>\n", - " <td>2.03</td>\n", - " <td>2.37</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SnSi</th>\n", - " <td>-89044.495403</td>\n", - " <td>-89044.630512</td>\n", - " <td>0.135109</td>\n", - " <td>ZB</td>\n", - " <td>50.0</td>\n", - " <td>14.0</td>\n", - " <td>5.0</td>\n", - " <td>3.0</td>\n", - " <td>-7.0428</td>\n", - " <td>-7.757700</td>\n", - " <td>...</td>\n", - " <td>-3.866</td>\n", - " <td>-4.163</td>\n", - " <td>0.008</td>\n", - " <td>0.440</td>\n", - " <td>1.06</td>\n", - " <td>0.94</td>\n", - " <td>1.34</td>\n", - " <td>1.13</td>\n", - " <td>2.03</td>\n", - " <td>1.89</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SrO</th>\n", - " <td>-44570.361722</td>\n", - " <td>-44570.141416</td>\n", - " <td>-0.220307</td>\n", - " <td>RS</td>\n", - " <td>38.0</td>\n", - " <td>8.0</td>\n", - " <td>5.0</td>\n", - " <td>2.0</td>\n", - " <td>-6.0316</td>\n", - " <td>-16.433201</td>\n", - " <td>...</td>\n", - " <td>-3.641</td>\n", - " <td>-9.197</td>\n", - " <td>-1.379</td>\n", - " <td>2.541</td>\n", - " <td>1.91</td>\n", - " <td>0.46</td>\n", - " <td>2.55</td>\n", - " <td>0.43</td>\n", - " <td>1.20</td>\n", - " <td>2.22</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SrS</th>\n", - " <td>-48975.635583</td>\n", - " <td>-48975.267149</td>\n", - " <td>-0.368434</td>\n", - " <td>RS</td>\n", - " <td>38.0</td>\n", - " <td>16.0</td>\n", - " <td>5.0</td>\n", - " <td>3.0</td>\n", - " <td>-6.0316</td>\n", - " <td>-11.795100</td>\n", - " <td>...</td>\n", - " <td>-3.641</td>\n", - " <td>-7.106</td>\n", - " <td>-1.379</td>\n", - " <td>0.642</td>\n", - " <td>1.91</td>\n", - " <td>0.74</td>\n", - " <td>2.55</td>\n", - " <td>0.85</td>\n", - " <td>1.20</td>\n", - " <td>2.37</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SrSe</th>\n", - " <td>-76782.088429</td>\n", - " <td>-76781.713918</td>\n", - " <td>-0.374511</td>\n", - " <td>RS</td>\n", - " <td>38.0</td>\n", - " <td>34.0</td>\n", - " <td>5.0</td>\n", - " <td>4.0</td>\n", - " <td>-6.0316</td>\n", - " <td>-10.946000</td>\n", - " <td>...</td>\n", - " <td>-3.641</td>\n", - " <td>-6.654</td>\n", - " <td>-1.379</td>\n", - " <td>1.316</td>\n", - " <td>1.91</td>\n", - " <td>0.80</td>\n", - " <td>2.55</td>\n", - " <td>0.95</td>\n", - " <td>1.20</td>\n", - " <td>2.18</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SrTe</th>\n", - " <td>-137269.487147</td>\n", - " <td>-137269.107853</td>\n", - " <td>-0.379295</td>\n", - " <td>RS</td>\n", - " <td>38.0</td>\n", - " <td>52.0</td>\n", - " <td>5.0</td>\n", - " <td>5.0</td>\n", - " <td>-6.0316</td>\n", - " <td>-9.866700</td>\n", - " <td>...</td>\n", - " <td>-3.641</td>\n", - " <td>-6.109</td>\n", - " <td>-1.379</td>\n", - " <td>0.099</td>\n", - " <td>1.91</td>\n", - " <td>0.94</td>\n", - " <td>2.55</td>\n", - " <td>1.14</td>\n", - " <td>1.20</td>\n", - " <td>1.83</td>\n", - " </tr>\n", - " <tr>\n", - " <th>ZnO</th>\n", - " <td>-25540.809205</td>\n", - " <td>-25540.911173</td>\n", - " <td>0.101968</td>\n", - " <td>ZB</td>\n", - " <td>30.0</td>\n", - " <td>8.0</td>\n", - " <td>4.0</td>\n", - " <td>2.0</td>\n", - " <td>-10.1355</td>\n", - " <td>-16.433201</td>\n", - " <td>...</td>\n", - " <td>-6.217</td>\n", - " <td>-9.197</td>\n", - " <td>-1.194</td>\n", - " <td>2.541</td>\n", - " <td>1.10</td>\n", - " <td>0.46</td>\n", - " <td>1.55</td>\n", - " <td>0.43</td>\n", - " <td>2.25</td>\n", - " <td>2.22</td>\n", - " </tr>\n", - " <tr>\n", - " <th>ZnS</th>\n", - " <td>-29945.889373</td>\n", - " <td>-29946.165186</td>\n", - " <td>0.275813</td>\n", - " <td>ZB</td>\n", - " <td>30.0</td>\n", - " <td>16.0</td>\n", - " <td>4.0</td>\n", - " <td>3.0</td>\n", - " <td>-10.1355</td>\n", - " <td>-11.795100</td>\n", - " <td>...</td>\n", - " <td>-6.217</td>\n", - " <td>-7.106</td>\n", - " <td>-1.194</td>\n", - " <td>0.642</td>\n", - " <td>1.10</td>\n", - " <td>0.74</td>\n", - " <td>1.55</td>\n", - " <td>0.85</td>\n", - " <td>2.25</td>\n", - " <td>2.37</td>\n", - " </tr>\n", - " <tr>\n", - " <th>ZnSe</th>\n", - " <td>-57752.319875</td>\n", - " <td>-57752.583012</td>\n", - " <td>0.263137</td>\n", - " <td>ZB</td>\n", - " <td>30.0</td>\n", - " <td>34.0</td>\n", - " <td>4.0</td>\n", - " <td>4.0</td>\n", - " <td>-10.1355</td>\n", - " <td>-10.946000</td>\n", - " <td>...</td>\n", - " <td>-6.217</td>\n", - " <td>-6.654</td>\n", - " <td>-1.194</td>\n", - " <td>1.316</td>\n", - " <td>1.10</td>\n", - " <td>0.80</td>\n", - " <td>1.55</td>\n", - " <td>0.95</td>\n", - " <td>2.25</td>\n", - " <td>2.18</td>\n", - " </tr>\n", - " <tr>\n", - " <th>ZnTe</th>\n", - " <td>-118239.807676</td>\n", - " <td>-118240.052677</td>\n", - " <td>0.245001</td>\n", - " <td>ZB</td>\n", - " <td>30.0</td>\n", - " <td>52.0</td>\n", - " <td>4.0</td>\n", - " <td>5.0</td>\n", - " <td>-10.1355</td>\n", - " <td>-9.866700</td>\n", - " <td>...</td>\n", - " <td>-6.217</td>\n", - " <td>-6.109</td>\n", - " <td>-1.194</td>\n", - " <td>0.099</td>\n", - " <td>1.10</td>\n", - " <td>0.94</td>\n", - " <td>1.55</td>\n", - " <td>1.14</td>\n", - " <td>2.25</td>\n", - " <td>1.83</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "<p>82 rows × 22 columns</p>\n", - "</div>" - ], - "text/plain": [ - " energy_RS energy_ZB energy_diff min_struc_type Z(A) Z(B) \\\n", - "AgBr -108781.333959 -108781.303925 -0.030033 RS 47.0 35.0 \n", - "AgCl -79397.451083 -79397.408285 -0.042797 RS 47.0 17.0 \n", - "AgF -74477.428165 -74477.274407 -0.153758 RS 47.0 9.0 \n", - "AgI -171339.208181 -171339.245107 0.036925 ZB 47.0 53.0 \n", - "AlAs -34200.077513 -34200.290775 0.213262 ZB 13.0 33.0 \n", - "AlN -4036.429049 -4036.501998 0.072949 ZB 13.0 7.0 \n", - "AlP -7940.862745 -7941.081704 0.218958 ZB 13.0 15.0 \n", - "AlSb -92644.192004 -92644.348873 0.156869 ZB 13.0 51.0 \n", - "AsGa -57457.679958 -57457.954236 0.274278 ZB 31.0 33.0 \n", - "BAs -31239.347344 -31240.222322 0.874978 ZB 5.0 33.0 \n", - "BN -1075.033415 -1076.745496 1.712080 ZB 5.0 7.0 \n", - "BP -4980.272420 -4981.291645 1.019225 ZB 5.0 15.0 \n", - "BSb -89683.613701 -89684.194551 0.580849 ZB 5.0 51.0 \n", - "BaO -113504.826963 -113504.733965 -0.092999 RS 56.0 8.0 \n", - "BaS -117910.270940 -117909.951178 -0.319762 RS 56.0 16.0 \n", - "BaSe -145716.769672 -145716.426227 -0.343445 RS 56.0 34.0 \n", - "BaTe -206204.229045 -206203.853659 -0.375387 RS 56.0 52.0 \n", - "BeO -1218.439958 -1219.131796 0.691838 ZB 4.0 8.0 \n", - "BeS -5622.515539 -5623.021867 0.506328 ZB 4.0 16.0 \n", - "BeSe -33428.796762 -33429.291703 0.494940 ZB 4.0 34.0 \n", - "BeTe -93916.104186 -93916.572772 0.468586 ZB 4.0 52.0 \n", - "C2 -1026.548820 -1029.177424 2.628604 ZB 6.0 6.0 \n", - "CaO -10276.901085 -10276.635866 -0.265219 RS 20.0 8.0 \n", - "CaS -14681.946741 -14681.577608 -0.369133 RS 20.0 16.0 \n", - "CaSe -42488.352920 -42487.992122 -0.360798 RS 20.0 34.0 \n", - "CaTe -102975.696119 -102975.345663 -0.350456 RS 20.0 52.0 \n", - "CdO -78015.168309 -78015.084148 -0.084161 RS 48.0 8.0 \n", - "CdS -82420.563362 -82420.636035 0.072673 ZB 48.0 16.0 \n", - "CdSe -110227.061261 -110227.144833 0.083572 ZB 48.0 34.0 \n", - "CdTe -170714.589312 -170714.703852 0.114540 ZB 48.0 52.0 \n", - "... ... ... ... ... ... ... \n", - "LiBr -35758.254037 -35758.221290 -0.032746 RS 3.0 35.0 \n", - "LiCl -6374.542821 -6374.504440 -0.038381 RS 3.0 17.0 \n", - "LiF -1455.242231 -1455.182743 -0.059488 RS 3.0 9.0 \n", - "LiI -98315.905042 -98315.883382 -0.021661 RS 3.0 53.0 \n", - "MgO -3737.074745 -3736.842470 -0.232275 RS 12.0 8.0 \n", - "MgS -8141.593383 -8141.506684 -0.086700 RS 12.0 16.0 \n", - "MgSe -35947.940031 -35947.884729 -0.055302 RS 12.0 34.0 \n", - "MgTe -96435.238354 -96435.233762 -0.004591 RS 12.0 52.0 \n", - "NaBr -37859.126083 -37858.999655 -0.126429 RS 11.0 35.0 \n", - "NaCl -8475.373434 -8475.240442 -0.132992 RS 11.0 17.0 \n", - "NaF -3555.843406 -3555.697618 -0.145788 RS 11.0 9.0 \n", - "NaI -100416.816231 -100416.701393 -0.114838 RS 11.0 53.0 \n", - "RbBr -76473.689393 -76473.525572 -0.163821 RS 37.0 35.0 \n", - "RbCl -47089.892923 -47089.732419 -0.160504 RS 37.0 17.0 \n", - "RbF -42170.183659 -42170.048063 -0.135596 RS 37.0 9.0 \n", - "RbI -139031.425413 -139031.258212 -0.167201 RS 37.0 53.0 \n", - "Si2 -7873.897162 -7874.176328 0.279166 ZB 14.0 14.0 \n", - "SiC -4451.285599 -4451.954622 0.669024 ZB 14.0 6.0 \n", - "Sn2 -170215.350592 -170215.367556 0.016964 ZB 50.0 50.0 \n", - "SnC -85621.035409 -85621.488947 0.453538 ZB 50.0 6.0 \n", - "SnGe -113787.450287 -113787.531950 0.081663 ZB 50.0 32.0 \n", - "SnSi -89044.495403 -89044.630512 0.135109 ZB 50.0 14.0 \n", - "SrO -44570.361722 -44570.141416 -0.220307 RS 38.0 8.0 \n", - "SrS -48975.635583 -48975.267149 -0.368434 RS 38.0 16.0 \n", - "SrSe -76782.088429 -76781.713918 -0.374511 RS 38.0 34.0 \n", - "SrTe -137269.487147 -137269.107853 -0.379295 RS 38.0 52.0 \n", - "ZnO -25540.809205 -25540.911173 0.101968 ZB 30.0 8.0 \n", - "ZnS -29945.889373 -29946.165186 0.275813 ZB 30.0 16.0 \n", - "ZnSe -57752.319875 -57752.583012 0.263137 ZB 30.0 34.0 \n", - "ZnTe -118239.807676 -118240.052677 0.245001 ZB 30.0 52.0 \n", - "\n", - " period(A) period(B) IP(A) IP(B) ... E_HOMO(A) E_HOMO(B) \\\n", - "AgBr 5.0 4.0 -8.0581 -12.649600 ... -4.710 -8.001 \n", - "AgCl 5.0 3.0 -8.0581 -13.901800 ... -4.710 -8.700 \n", - "AgF 5.0 2.0 -8.0581 -19.404301 ... -4.710 -11.294 \n", - "AgI 5.0 5.0 -8.0581 -11.257100 ... -4.710 -7.236 \n", - "AlAs 3.0 4.0 -5.7805 -9.261900 ... -2.784 -5.341 \n", - "AlN 3.0 2.0 -5.7805 -13.585200 ... -2.784 -7.239 \n", - "AlP 3.0 3.0 -5.7805 -9.750600 ... -2.784 -5.596 \n", - "AlSb 3.0 5.0 -5.7805 -8.468300 ... -2.784 -4.991 \n", - "AsGa 4.0 4.0 -5.8182 -9.261900 ... -2.732 -5.341 \n", - "BAs 2.0 4.0 -8.1900 -9.261900 ... -3.715 -5.341 \n", - "BN 2.0 2.0 -8.1900 -13.585200 ... -3.715 -7.239 \n", - "BP 2.0 3.0 -8.1900 -9.750600 ... -3.715 -5.596 \n", - "BSb 2.0 5.0 -8.1900 -8.468300 ... -3.715 -4.991 \n", - "BaO 6.0 2.0 -5.5157 -16.433201 ... -3.346 -9.197 \n", - "BaS 6.0 3.0 -5.5157 -11.795100 ... -3.346 -7.106 \n", - "BaSe 6.0 4.0 -5.5157 -10.946000 ... -3.346 -6.654 \n", - "BaTe 6.0 5.0 -5.5157 -9.866700 ... -3.346 -6.109 \n", - "BeO 2.0 2.0 -9.4594 -16.433201 ... -5.600 -9.197 \n", - "BeS 2.0 3.0 -9.4594 -11.795100 ... -5.600 -7.106 \n", - "BeSe 2.0 4.0 -9.4594 -10.946000 ... -5.600 -6.654 \n", - "BeTe 2.0 5.0 -9.4594 -9.866700 ... -5.600 -6.109 \n", - "C2 2.0 2.0 -10.8517 -10.851700 ... -5.416 -5.416 \n", - "CaO 4.0 2.0 -6.4280 -16.433201 ... -3.864 -9.197 \n", - "CaS 4.0 3.0 -6.4280 -11.795100 ... -3.864 -7.106 \n", - "CaSe 4.0 4.0 -6.4280 -10.946000 ... -3.864 -6.654 \n", - "CaTe 4.0 5.0 -6.4280 -9.866700 ... -3.864 -6.109 \n", - "CdO 5.0 2.0 -9.5814 -16.433201 ... -5.952 -9.197 \n", - "CdS 5.0 3.0 -9.5814 -11.795100 ... -5.952 -7.106 \n", - "CdSe 5.0 4.0 -9.5814 -10.946000 ... -5.952 -6.654 \n", - "CdTe 5.0 5.0 -9.5814 -9.866700 ... -5.952 -6.109 \n", - "... ... ... ... ... ... ... ... \n", - "LiBr 2.0 4.0 -5.3291 -12.649600 ... -2.874 -8.001 \n", - "LiCl 2.0 3.0 -5.3291 -13.901800 ... -2.874 -8.700 \n", - "LiF 2.0 2.0 -5.3291 -19.404301 ... -2.874 -11.294 \n", - "LiI 2.0 5.0 -5.3291 -11.257100 ... -2.874 -7.236 \n", - "MgO 3.0 2.0 -8.0371 -16.433201 ... -4.782 -9.197 \n", - "MgS 3.0 3.0 -8.0371 -11.795100 ... -4.782 -7.106 \n", - "MgSe 3.0 4.0 -8.0371 -10.946000 ... -4.782 -6.654 \n", - "MgTe 3.0 5.0 -8.0371 -9.866700 ... -4.782 -6.109 \n", - "NaBr 3.0 4.0 -5.2231 -12.649600 ... -2.819 -8.001 \n", - "NaCl 3.0 3.0 -5.2231 -13.901800 ... -2.819 -8.700 \n", - "NaF 3.0 2.0 -5.2231 -19.404301 ... -2.819 -11.294 \n", - "NaI 3.0 5.0 -5.2231 -11.257100 ... -2.819 -7.236 \n", - "RbBr 5.0 4.0 -4.2889 -12.649600 ... -2.360 -8.001 \n", - "RbCl 5.0 3.0 -4.2889 -13.901800 ... -2.360 -8.700 \n", - "RbF 5.0 2.0 -4.2889 -19.404301 ... -2.360 -11.294 \n", - "RbI 5.0 5.0 -4.2889 -11.257100 ... -2.360 -7.236 \n", - "Si2 3.0 3.0 -7.7577 -7.757700 ... -4.163 -4.163 \n", - "SiC 3.0 2.0 -7.7577 -10.851700 ... -4.163 -5.416 \n", - "Sn2 5.0 5.0 -7.0428 -7.042800 ... -3.866 -3.866 \n", - "SnC 5.0 2.0 -7.0428 -10.851700 ... -3.866 -5.416 \n", - "SnGe 5.0 4.0 -7.0428 -7.567000 ... -3.866 -4.046 \n", - "SnSi 5.0 3.0 -7.0428 -7.757700 ... -3.866 -4.163 \n", - "SrO 5.0 2.0 -6.0316 -16.433201 ... -3.641 -9.197 \n", - "SrS 5.0 3.0 -6.0316 -11.795100 ... -3.641 -7.106 \n", - "SrSe 5.0 4.0 -6.0316 -10.946000 ... -3.641 -6.654 \n", - "SrTe 5.0 5.0 -6.0316 -9.866700 ... -3.641 -6.109 \n", - "ZnO 4.0 2.0 -10.1355 -16.433201 ... -6.217 -9.197 \n", - "ZnS 4.0 3.0 -10.1355 -11.795100 ... -6.217 -7.106 \n", - "ZnSe 4.0 4.0 -10.1355 -10.946000 ... -6.217 -6.654 \n", - "ZnTe 4.0 5.0 -10.1355 -9.866700 ... -6.217 -6.109 \n", - "\n", - " E_LUMO(A) E_LUMO(B) r_s(A) r_s(B) r_p(A) r_p(B) r_d(A) r_d(B) \n", - "AgBr -0.479 0.708 1.32 0.75 1.88 0.88 2.97 1.87 \n", - "AgCl -0.479 0.574 1.32 0.68 1.88 0.76 2.97 1.67 \n", - "AgF -0.479 1.251 1.32 0.41 1.88 0.37 2.97 1.43 \n", - "AgI -0.479 0.213 1.32 0.90 1.88 1.07 2.97 1.72 \n", - "AlAs 0.695 0.064 1.09 0.85 1.39 1.04 1.94 2.02 \n", - "AlN 0.695 3.057 1.09 0.54 1.39 0.51 1.94 1.54 \n", - "AlP 0.695 0.183 1.09 0.83 1.39 0.97 1.94 1.77 \n", - "AlSb 0.695 0.105 1.09 1.00 1.39 1.23 1.94 2.06 \n", - "AsGa 0.130 0.064 0.99 0.85 1.33 1.04 2.16 2.02 \n", - "BAs 2.248 0.064 0.81 0.85 0.83 1.04 1.95 2.02 \n", - "BN 2.248 3.057 0.81 0.54 0.83 0.51 1.95 1.54 \n", - "BP 2.248 0.183 0.81 0.83 0.83 0.97 1.95 1.77 \n", - "BSb 2.248 0.105 0.81 1.00 0.83 1.23 1.95 2.06 \n", - "BaO -2.129 2.541 2.15 0.46 2.63 0.43 1.35 2.22 \n", - "BaS -2.129 0.642 2.15 0.74 2.63 0.85 1.35 2.37 \n", - "BaSe -2.129 1.316 2.15 0.80 2.63 0.95 1.35 2.18 \n", - "BaTe -2.129 0.099 2.15 0.94 2.63 1.14 1.35 1.83 \n", - "BeO -2.098 2.541 1.08 0.46 1.21 0.43 2.88 2.22 \n", - "BeS -2.098 0.642 1.08 0.74 1.21 0.85 2.88 2.37 \n", - "BeSe -2.098 1.316 1.08 0.80 1.21 0.95 2.88 2.18 \n", - "BeTe -2.098 0.099 1.08 0.94 1.21 1.14 2.88 1.83 \n", - "C2 1.992 1.992 0.64 0.64 0.63 0.63 1.63 1.63 \n", - "CaO -2.133 2.541 1.76 0.46 2.32 0.43 0.68 2.22 \n", - "CaS -2.133 0.642 1.76 0.74 2.32 0.85 0.68 2.37 \n", - "CaSe -2.133 1.316 1.76 0.80 2.32 0.95 0.68 2.18 \n", - "CaTe -2.133 0.099 1.76 0.94 2.32 1.14 0.68 1.83 \n", - "CdO -1.309 2.541 1.23 0.46 1.74 0.43 2.60 2.22 \n", - "CdS -1.309 0.642 1.23 0.74 1.74 0.85 2.60 2.37 \n", - "CdSe -1.309 1.316 1.23 0.80 1.74 0.95 2.60 2.18 \n", - "CdTe -1.309 0.099 1.23 0.94 1.74 1.14 2.60 1.83 \n", - "... ... ... ... ... ... ... ... ... \n", - "LiBr -0.978 0.708 1.65 0.75 2.00 0.88 6.93 1.87 \n", - "LiCl -0.978 0.574 1.65 0.68 2.00 0.76 6.93 1.67 \n", - "LiF -0.978 1.251 1.65 0.41 2.00 0.37 6.93 1.43 \n", - "LiI -0.978 0.213 1.65 0.90 2.00 1.07 6.93 1.72 \n", - "MgO -1.358 2.541 1.33 0.46 1.90 0.43 3.17 2.22 \n", - "MgS -1.358 0.642 1.33 0.74 1.90 0.85 3.17 2.37 \n", - "MgSe -1.358 1.316 1.33 0.80 1.90 0.95 3.17 2.18 \n", - "MgTe -1.358 0.099 1.33 0.94 1.90 1.14 3.17 1.83 \n", - "NaBr -0.718 0.708 1.71 0.75 2.60 0.88 6.57 1.87 \n", - "NaCl -0.718 0.574 1.71 0.68 2.60 0.76 6.57 1.67 \n", - "NaF -0.718 1.251 1.71 0.41 2.60 0.37 6.57 1.43 \n", - "NaI -0.718 0.213 1.71 0.90 2.60 1.07 6.57 1.72 \n", - "RbBr -0.705 0.708 2.24 0.75 3.20 0.88 1.96 1.87 \n", - "RbCl -0.705 0.574 2.24 0.68 3.20 0.76 1.96 1.67 \n", - "RbF -0.705 1.251 2.24 0.41 3.20 0.37 1.96 1.43 \n", - "RbI -0.705 0.213 2.24 0.90 3.20 1.07 1.96 1.72 \n", - "Si2 0.440 0.440 0.94 0.94 1.13 1.13 1.89 1.89 \n", - "SiC 0.440 1.992 0.94 0.64 1.13 0.63 1.89 1.63 \n", - "Sn2 0.008 0.008 1.06 1.06 1.34 1.34 2.03 2.03 \n", - "SnC 0.008 1.992 1.06 0.64 1.34 0.63 2.03 1.63 \n", - "SnGe 0.008 2.175 1.06 0.92 1.34 1.16 2.03 2.37 \n", - "SnSi 0.008 0.440 1.06 0.94 1.34 1.13 2.03 1.89 \n", - "SrO -1.379 2.541 1.91 0.46 2.55 0.43 1.20 2.22 \n", - "SrS -1.379 0.642 1.91 0.74 2.55 0.85 1.20 2.37 \n", - "SrSe -1.379 1.316 1.91 0.80 2.55 0.95 1.20 2.18 \n", - "SrTe -1.379 0.099 1.91 0.94 2.55 1.14 1.20 1.83 \n", - "ZnO -1.194 2.541 1.10 0.46 1.55 0.43 2.25 2.22 \n", - "ZnS -1.194 0.642 1.10 0.74 1.55 0.85 2.25 2.37 \n", - "ZnSe -1.194 1.316 1.10 0.80 1.55 0.95 2.25 2.18 \n", - "ZnTe -1.194 0.099 1.10 0.94 1.55 1.14 2.25 1.83 \n", - "\n", - "[82 rows x 22 columns]" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# load data\n", - "df = pd.read_pickle(\"data/data.pkl\")\n", - "\n", - "# print data without structure objects\n", - "df.drop(['struc_obj_RS', 'struc_obj_ZB', 'struc_obj_min'], axis=1)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "pycharm": {} - }, - "outputs": [ - { - "data": { - "text/html": [ - "<!DOCTYPE html>\n", - " <html>\n", - " <body>\n", - " <!-- load JSmol; relative path works, absolute fails, might be access rights related -->\n", - " <script type=\"text/javascript\" src=\"JSmol.min.js\"></script> \n", - " <script type=\"text/javascript\">\n", - " \n", - " Jmol.setDocument(false);\n", - " \n", - " \n", - " var jmolApplet0;\n", - " var info = {\n", - " width: 400,\n", - " height: 300,\n", - " use: \"HTML5\",\n", - " j2spath: \"./j2s\",\n", - " script: 'load ../../tmp/example_structure.in'\n", - " };\n", - " \n", - " $(document).ready(function() {\n", - " $(\"#appdiv\").html(Jmol.getAppletHtml(\"jmolApplet0\", info))\n", - " });\n", - "\n", - "\n", - " </script>\n", - " \n", - " <div style=\"display: table; margin: 0 auto;\" id=\"appdiv\"></div> \n", - " </body>\n", - " </html>\n", - " " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# demonstrate 3x3x3 supercell of one example structure\n", - "example_structure = df.loc['AgBr', 'struc_obj_RS'] * [3, 3, 3]\n", - "show_structure(example_structure, filename=tmpdir + 'example_structure.in')" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "pycharm": {} - }, - "source": [ - "Let us look at the distribution of the energy differences." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "pycharm": {} - }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "<Figure size 432x288 with 1 Axes>" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Standard deviation: 0.448 eV/atom\n" - ] - } - ], - "source": [ - "plt.hist(df['energy_diff'].tolist(), bins=30)\n", - "plt.xlabel('$\\Delta E$')\n", - "plt.ylabel('Counts')\n", - "plt.show()\n", - "print('Standard deviation: %.3f eV/atom' % df['energy_diff'].values.std())" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "pycharm": {} - }, - "source": [ - "With the SISSO method, we are able to predict the energy differences from the atomic features with an accuracy of 0.035 eV/atom. However, due to computational limit we will target an accuracy of around 0.1 eV/atom in this tutorial. \n", - "\n", - "Now let us define a function get_data that uses the data frame df_data to define the target vector $\\mathbf{P}$ of energy differences and construct the desriptor matrix $\\mathbf{D}$ of combined features. The arguments selected_feature_list and allowed_operations specify which primary features and which arithmetic operations should be used to build the new derived features." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "pycharm": {} - }, - "outputs": [], - "source": [ - "def get_data(selected_feature_list, allowed_operations):\n", - " # add both '(A)', '(B)' to each feature\n", - " selected_featureAB_list = [f+A_or_B for f in selected_feature_list for A_or_B in ['(A)', '(B)']]\n", - " \n", - " # extract energy differences and selected features from df_data \n", - " P = df['energy_diff'].values\n", - " df_features = df[selected_featureAB_list]\n", - " \n", - " \n", - " # derive new features using allowed_operations\n", - " df_combined = combine_features(df=df_features, allowed_operations=allowed_operations)\n", - " return P, df_combined" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "pycharm": {}, - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Selected operations:\n", - " ['+']\n", - "Number of total features generated: 10\n" - ] - }, - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>r_s(A)</th>\n", - " <th>r_s(B)</th>\n", - " <th>r_p(A)</th>\n", - " <th>r_p(B)</th>\n", - " <th>(r_s(A)+r_s(B))</th>\n", - " <th>(r_s(A)+r_p(A))</th>\n", - " <th>(r_s(A)+r_p(B))</th>\n", - " <th>(r_s(B)+r_p(A))</th>\n", - " <th>(r_s(B)+r_p(B))</th>\n", - " <th>(r_p(A)+r_p(B))</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>AgBr</th>\n", - " <td>1.32</td>\n", - " <td>0.75</td>\n", - " <td>1.88</td>\n", - " <td>0.88</td>\n", - " <td>2.07</td>\n", - " <td>3.20</td>\n", - " <td>2.20</td>\n", - " <td>2.63</td>\n", - " <td>1.63</td>\n", - " <td>2.76</td>\n", - " </tr>\n", - " <tr>\n", - " <th>AgCl</th>\n", - " <td>1.32</td>\n", - " <td>0.68</td>\n", - " <td>1.88</td>\n", - " <td>0.76</td>\n", - " <td>2.00</td>\n", - " <td>3.20</td>\n", - " <td>2.08</td>\n", - " <td>2.56</td>\n", - " <td>1.44</td>\n", - " <td>2.64</td>\n", - " </tr>\n", - " <tr>\n", - " <th>AgF</th>\n", - " <td>1.32</td>\n", - " <td>0.41</td>\n", - " <td>1.88</td>\n", - " <td>0.37</td>\n", - " <td>1.73</td>\n", - " <td>3.20</td>\n", - " <td>1.69</td>\n", - " <td>2.29</td>\n", - " <td>0.78</td>\n", - " <td>2.25</td>\n", - " </tr>\n", - " <tr>\n", - " <th>AgI</th>\n", - " <td>1.32</td>\n", - " <td>0.90</td>\n", - " <td>1.88</td>\n", - " <td>1.07</td>\n", - " <td>2.22</td>\n", - " <td>3.20</td>\n", - " <td>2.39</td>\n", - " <td>2.78</td>\n", - " <td>1.97</td>\n", - " <td>2.95</td>\n", - " </tr>\n", - " <tr>\n", - " <th>AlAs</th>\n", - " <td>1.09</td>\n", - " <td>0.85</td>\n", - " <td>1.39</td>\n", - " <td>1.04</td>\n", - " <td>1.94</td>\n", - " <td>2.48</td>\n", - " <td>2.13</td>\n", - " <td>2.24</td>\n", - " <td>1.89</td>\n", - " <td>2.43</td>\n", - " </tr>\n", - " <tr>\n", - " <th>AlN</th>\n", - " <td>1.09</td>\n", - " <td>0.54</td>\n", - " <td>1.39</td>\n", - " <td>0.51</td>\n", - " <td>1.63</td>\n", - " <td>2.48</td>\n", - " <td>1.60</td>\n", - " <td>1.93</td>\n", - " <td>1.05</td>\n", - " <td>1.90</td>\n", - " </tr>\n", - " <tr>\n", - " <th>AlP</th>\n", - " <td>1.09</td>\n", - " <td>0.83</td>\n", - " <td>1.39</td>\n", - " <td>0.97</td>\n", - " <td>1.92</td>\n", - " <td>2.48</td>\n", - " <td>2.06</td>\n", - " <td>2.22</td>\n", - " <td>1.80</td>\n", - " <td>2.36</td>\n", - " </tr>\n", - " <tr>\n", - " <th>AlSb</th>\n", - " <td>1.09</td>\n", - " <td>1.00</td>\n", - " <td>1.39</td>\n", - " <td>1.23</td>\n", - " <td>2.09</td>\n", - " <td>2.48</td>\n", - " <td>2.32</td>\n", - " <td>2.39</td>\n", - " <td>2.23</td>\n", - " <td>2.62</td>\n", - " </tr>\n", - " <tr>\n", - " <th>AsGa</th>\n", - " <td>0.99</td>\n", - " <td>0.85</td>\n", - " <td>1.33</td>\n", - " <td>1.04</td>\n", - " <td>1.84</td>\n", - " <td>2.32</td>\n", - " <td>2.03</td>\n", - " <td>2.18</td>\n", - " <td>1.89</td>\n", - " <td>2.37</td>\n", - " </tr>\n", - " <tr>\n", - " <th>BAs</th>\n", - " <td>0.81</td>\n", - " <td>0.85</td>\n", - " <td>0.83</td>\n", - " <td>1.04</td>\n", - " <td>1.66</td>\n", - " <td>1.64</td>\n", - " <td>1.85</td>\n", - " <td>1.68</td>\n", - " <td>1.89</td>\n", - " <td>1.87</td>\n", - " </tr>\n", - " <tr>\n", - " <th>BN</th>\n", - " <td>0.81</td>\n", - " <td>0.54</td>\n", - " <td>0.83</td>\n", - " <td>0.51</td>\n", - " <td>1.35</td>\n", - " <td>1.64</td>\n", - " <td>1.32</td>\n", - " <td>1.37</td>\n", - " <td>1.05</td>\n", - " <td>1.34</td>\n", - " </tr>\n", - " <tr>\n", - " <th>BP</th>\n", - " <td>0.81</td>\n", - " <td>0.83</td>\n", - " <td>0.83</td>\n", - " <td>0.97</td>\n", - " <td>1.64</td>\n", - " <td>1.64</td>\n", - " <td>1.78</td>\n", - " <td>1.66</td>\n", - " <td>1.80</td>\n", - " <td>1.80</td>\n", - " </tr>\n", - " <tr>\n", - " <th>BSb</th>\n", - " <td>0.81</td>\n", - " <td>1.00</td>\n", - " <td>0.83</td>\n", - " <td>1.23</td>\n", - " <td>1.81</td>\n", - " <td>1.64</td>\n", - " <td>2.04</td>\n", - " <td>1.83</td>\n", - " <td>2.23</td>\n", - " <td>2.06</td>\n", - " </tr>\n", - " <tr>\n", - " <th>BaO</th>\n", - " <td>2.15</td>\n", - " <td>0.46</td>\n", - " <td>2.63</td>\n", - " <td>0.43</td>\n", - " <td>2.61</td>\n", - " <td>4.78</td>\n", - " <td>2.58</td>\n", - " <td>3.09</td>\n", - " <td>0.89</td>\n", - " <td>3.06</td>\n", - " </tr>\n", - " <tr>\n", - " <th>BaS</th>\n", - " <td>2.15</td>\n", - " <td>0.74</td>\n", - " <td>2.63</td>\n", - " <td>0.85</td>\n", - " <td>2.89</td>\n", - " <td>4.78</td>\n", - " <td>3.00</td>\n", - " <td>3.37</td>\n", - " <td>1.59</td>\n", - " <td>3.48</td>\n", - " </tr>\n", - " <tr>\n", - " <th>BaSe</th>\n", - " <td>2.15</td>\n", - " <td>0.80</td>\n", - " <td>2.63</td>\n", - " <td>0.95</td>\n", - " <td>2.95</td>\n", - " <td>4.78</td>\n", - " <td>3.10</td>\n", - " <td>3.43</td>\n", - " <td>1.75</td>\n", - " <td>3.58</td>\n", - " </tr>\n", - " <tr>\n", - " <th>BaTe</th>\n", - " <td>2.15</td>\n", - " <td>0.94</td>\n", - " <td>2.63</td>\n", - " <td>1.14</td>\n", - " <td>3.09</td>\n", - " <td>4.78</td>\n", - " <td>3.29</td>\n", - " <td>3.57</td>\n", - " <td>2.08</td>\n", - " <td>3.77</td>\n", - " </tr>\n", - " <tr>\n", - " <th>BeO</th>\n", - " <td>1.08</td>\n", - " <td>0.46</td>\n", - " <td>1.21</td>\n", - " <td>0.43</td>\n", - " <td>1.54</td>\n", - " <td>2.29</td>\n", - " <td>1.51</td>\n", - " <td>1.67</td>\n", - " <td>0.89</td>\n", - " <td>1.64</td>\n", - " </tr>\n", - " <tr>\n", - " <th>BeS</th>\n", - " <td>1.08</td>\n", - " <td>0.74</td>\n", - " <td>1.21</td>\n", - " <td>0.85</td>\n", - " <td>1.82</td>\n", - " <td>2.29</td>\n", - " <td>1.93</td>\n", - " <td>1.95</td>\n", - " <td>1.59</td>\n", - " <td>2.06</td>\n", - " </tr>\n", - " <tr>\n", - " <th>BeSe</th>\n", - " <td>1.08</td>\n", - " <td>0.80</td>\n", - " <td>1.21</td>\n", - " <td>0.95</td>\n", - " <td>1.88</td>\n", - " <td>2.29</td>\n", - " <td>2.03</td>\n", - " <td>2.01</td>\n", - " <td>1.75</td>\n", - " <td>2.16</td>\n", - " </tr>\n", - " <tr>\n", - " <th>BeTe</th>\n", - " <td>1.08</td>\n", - " <td>0.94</td>\n", - " <td>1.21</td>\n", - " <td>1.14</td>\n", - " <td>2.02</td>\n", - " <td>2.29</td>\n", - " <td>2.22</td>\n", - " <td>2.15</td>\n", - " <td>2.08</td>\n", - " <td>2.35</td>\n", - " </tr>\n", - " <tr>\n", - " <th>C2</th>\n", - " <td>0.64</td>\n", - " <td>0.64</td>\n", - " <td>0.63</td>\n", - " <td>0.63</td>\n", - " <td>1.28</td>\n", - " <td>1.27</td>\n", - " <td>1.27</td>\n", - " <td>1.27</td>\n", - " <td>1.27</td>\n", - " <td>1.26</td>\n", - " </tr>\n", - " <tr>\n", - " <th>CaO</th>\n", - " <td>1.76</td>\n", - " <td>0.46</td>\n", - " <td>2.32</td>\n", - " <td>0.43</td>\n", - " <td>2.22</td>\n", - " <td>4.08</td>\n", - " <td>2.19</td>\n", - " <td>2.78</td>\n", - " <td>0.89</td>\n", - " <td>2.75</td>\n", - " </tr>\n", - " <tr>\n", - " <th>CaS</th>\n", - " <td>1.76</td>\n", - " <td>0.74</td>\n", - " <td>2.32</td>\n", - " <td>0.85</td>\n", - " <td>2.50</td>\n", - " <td>4.08</td>\n", - " <td>2.61</td>\n", - " <td>3.06</td>\n", - " <td>1.59</td>\n", - " <td>3.17</td>\n", - " </tr>\n", - " <tr>\n", - " <th>CaSe</th>\n", - " <td>1.76</td>\n", - " <td>0.80</td>\n", - " <td>2.32</td>\n", - " <td>0.95</td>\n", - " <td>2.56</td>\n", - " <td>4.08</td>\n", - " <td>2.71</td>\n", - " <td>3.12</td>\n", - " <td>1.75</td>\n", - " <td>3.27</td>\n", - " </tr>\n", - " <tr>\n", - " <th>CaTe</th>\n", - " <td>1.76</td>\n", - " <td>0.94</td>\n", - " <td>2.32</td>\n", - " <td>1.14</td>\n", - " <td>2.70</td>\n", - " <td>4.08</td>\n", - " <td>2.90</td>\n", - " <td>3.26</td>\n", - " <td>2.08</td>\n", - " <td>3.46</td>\n", - " </tr>\n", - " <tr>\n", - " <th>CdO</th>\n", - " <td>1.23</td>\n", - " <td>0.46</td>\n", - " <td>1.74</td>\n", - " <td>0.43</td>\n", - " <td>1.69</td>\n", - " <td>2.97</td>\n", - " <td>1.66</td>\n", - " <td>2.20</td>\n", - " <td>0.89</td>\n", - " <td>2.17</td>\n", - " </tr>\n", - " <tr>\n", - " <th>CdS</th>\n", - " <td>1.23</td>\n", - " <td>0.74</td>\n", - " <td>1.74</td>\n", - " <td>0.85</td>\n", - " <td>1.97</td>\n", - " <td>2.97</td>\n", - " <td>2.08</td>\n", - " <td>2.48</td>\n", - " <td>1.59</td>\n", - " <td>2.59</td>\n", - " </tr>\n", - " <tr>\n", - " <th>CdSe</th>\n", - " <td>1.23</td>\n", - " <td>0.80</td>\n", - " <td>1.74</td>\n", - " <td>0.95</td>\n", - " <td>2.03</td>\n", - " <td>2.97</td>\n", - " <td>2.18</td>\n", - " <td>2.54</td>\n", - " <td>1.75</td>\n", - " <td>2.69</td>\n", - " </tr>\n", - " <tr>\n", - " <th>CdTe</th>\n", - " <td>1.23</td>\n", - " <td>0.94</td>\n", - " <td>1.74</td>\n", - " <td>1.14</td>\n", - " <td>2.17</td>\n", - " <td>2.97</td>\n", - " <td>2.37</td>\n", - " <td>2.68</td>\n", - " <td>2.08</td>\n", - " <td>2.88</td>\n", - " </tr>\n", - " <tr>\n", - " <th>...</th>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>LiBr</th>\n", - " <td>1.65</td>\n", - " <td>0.75</td>\n", - " <td>2.00</td>\n", - " <td>0.88</td>\n", - " <td>2.40</td>\n", - " <td>3.65</td>\n", - " <td>2.53</td>\n", - " <td>2.75</td>\n", - " <td>1.63</td>\n", - " <td>2.88</td>\n", - " </tr>\n", - " <tr>\n", - " <th>LiCl</th>\n", - " <td>1.65</td>\n", - " <td>0.68</td>\n", - " <td>2.00</td>\n", - " <td>0.76</td>\n", - " <td>2.33</td>\n", - " <td>3.65</td>\n", - " <td>2.41</td>\n", - " <td>2.68</td>\n", - " <td>1.44</td>\n", - " <td>2.76</td>\n", - " </tr>\n", - " <tr>\n", - " <th>LiF</th>\n", - " <td>1.65</td>\n", - " <td>0.41</td>\n", - " <td>2.00</td>\n", - " <td>0.37</td>\n", - " <td>2.06</td>\n", - " <td>3.65</td>\n", - " <td>2.02</td>\n", - " <td>2.41</td>\n", - " <td>0.78</td>\n", - " <td>2.37</td>\n", - " </tr>\n", - " <tr>\n", - " <th>LiI</th>\n", - " <td>1.65</td>\n", - " <td>0.90</td>\n", - " <td>2.00</td>\n", - " <td>1.07</td>\n", - " <td>2.55</td>\n", - " <td>3.65</td>\n", - " <td>2.72</td>\n", - " <td>2.90</td>\n", - " <td>1.97</td>\n", - " <td>3.07</td>\n", - " </tr>\n", - " <tr>\n", - " <th>MgO</th>\n", - " <td>1.33</td>\n", - " <td>0.46</td>\n", - " <td>1.90</td>\n", - " <td>0.43</td>\n", - " <td>1.79</td>\n", - " <td>3.23</td>\n", - " <td>1.76</td>\n", - " <td>2.36</td>\n", - " <td>0.89</td>\n", - " <td>2.33</td>\n", - " </tr>\n", - " <tr>\n", - " <th>MgS</th>\n", - " <td>1.33</td>\n", - " <td>0.74</td>\n", - " <td>1.90</td>\n", - " <td>0.85</td>\n", - " <td>2.07</td>\n", - " <td>3.23</td>\n", - " <td>2.18</td>\n", - " <td>2.64</td>\n", - " <td>1.59</td>\n", - " <td>2.75</td>\n", - " </tr>\n", - " <tr>\n", - " <th>MgSe</th>\n", - " <td>1.33</td>\n", - " <td>0.80</td>\n", - " <td>1.90</td>\n", - " <td>0.95</td>\n", - " <td>2.13</td>\n", - " <td>3.23</td>\n", - " <td>2.28</td>\n", - " <td>2.70</td>\n", - " <td>1.75</td>\n", - " <td>2.85</td>\n", - " </tr>\n", - " <tr>\n", - " <th>MgTe</th>\n", - " <td>1.33</td>\n", - " <td>0.94</td>\n", - " <td>1.90</td>\n", - " <td>1.14</td>\n", - " <td>2.27</td>\n", - " <td>3.23</td>\n", - " <td>2.47</td>\n", - " <td>2.84</td>\n", - " <td>2.08</td>\n", - " <td>3.04</td>\n", - " </tr>\n", - " <tr>\n", - " <th>NaBr</th>\n", - " <td>1.71</td>\n", - " <td>0.75</td>\n", - " <td>2.60</td>\n", - " <td>0.88</td>\n", - " <td>2.46</td>\n", - " <td>4.31</td>\n", - " <td>2.59</td>\n", - " <td>3.35</td>\n", - " <td>1.63</td>\n", - " <td>3.48</td>\n", - " </tr>\n", - " <tr>\n", - " <th>NaCl</th>\n", - " <td>1.71</td>\n", - " <td>0.68</td>\n", - " <td>2.60</td>\n", - " <td>0.76</td>\n", - " <td>2.39</td>\n", - " <td>4.31</td>\n", - " <td>2.47</td>\n", - " <td>3.28</td>\n", - " <td>1.44</td>\n", - " <td>3.36</td>\n", - " </tr>\n", - " <tr>\n", - " <th>NaF</th>\n", - " <td>1.71</td>\n", - " <td>0.41</td>\n", - " <td>2.60</td>\n", - " <td>0.37</td>\n", - " <td>2.12</td>\n", - " <td>4.31</td>\n", - " <td>2.08</td>\n", - " <td>3.01</td>\n", - " <td>0.78</td>\n", - " <td>2.97</td>\n", - " </tr>\n", - " <tr>\n", - " <th>NaI</th>\n", - " <td>1.71</td>\n", - " <td>0.90</td>\n", - " <td>2.60</td>\n", - " <td>1.07</td>\n", - " <td>2.61</td>\n", - " <td>4.31</td>\n", - " <td>2.78</td>\n", - " <td>3.50</td>\n", - " <td>1.97</td>\n", - " <td>3.67</td>\n", - " </tr>\n", - " <tr>\n", - " <th>RbBr</th>\n", - " <td>2.24</td>\n", - " <td>0.75</td>\n", - " <td>3.20</td>\n", - " <td>0.88</td>\n", - " <td>2.99</td>\n", - " <td>5.44</td>\n", - " <td>3.12</td>\n", - " <td>3.95</td>\n", - " <td>1.63</td>\n", - " <td>4.08</td>\n", - " </tr>\n", - " <tr>\n", - " <th>RbCl</th>\n", - " <td>2.24</td>\n", - " <td>0.68</td>\n", - " <td>3.20</td>\n", - " <td>0.76</td>\n", - " <td>2.92</td>\n", - " <td>5.44</td>\n", - " <td>3.00</td>\n", - " <td>3.88</td>\n", - " <td>1.44</td>\n", - " <td>3.96</td>\n", - " </tr>\n", - " <tr>\n", - " <th>RbF</th>\n", - " <td>2.24</td>\n", - " <td>0.41</td>\n", - " <td>3.20</td>\n", - " <td>0.37</td>\n", - " <td>2.65</td>\n", - " <td>5.44</td>\n", - " <td>2.61</td>\n", - " <td>3.61</td>\n", - " <td>0.78</td>\n", - " <td>3.57</td>\n", - " </tr>\n", - " <tr>\n", - " <th>RbI</th>\n", - " <td>2.24</td>\n", - " <td>0.90</td>\n", - " <td>3.20</td>\n", - " <td>1.07</td>\n", - " <td>3.14</td>\n", - " <td>5.44</td>\n", - " <td>3.31</td>\n", - " <td>4.10</td>\n", - " <td>1.97</td>\n", - " <td>4.27</td>\n", - " </tr>\n", - " <tr>\n", - " <th>Si2</th>\n", - " <td>0.94</td>\n", - " <td>0.94</td>\n", - " <td>1.13</td>\n", - " <td>1.13</td>\n", - " <td>1.88</td>\n", - " <td>2.07</td>\n", - " <td>2.07</td>\n", - " <td>2.07</td>\n", - " <td>2.07</td>\n", - " <td>2.26</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SiC</th>\n", - " <td>0.94</td>\n", - " <td>0.64</td>\n", - " <td>1.13</td>\n", - " <td>0.63</td>\n", - " <td>1.58</td>\n", - " <td>2.07</td>\n", - " <td>1.57</td>\n", - " <td>1.77</td>\n", - " <td>1.27</td>\n", - " <td>1.76</td>\n", - " </tr>\n", - " <tr>\n", - " <th>Sn2</th>\n", - " <td>1.06</td>\n", - " <td>1.06</td>\n", - " <td>1.34</td>\n", - " <td>1.34</td>\n", - " <td>2.12</td>\n", - " <td>2.40</td>\n", - " <td>2.40</td>\n", - " <td>2.40</td>\n", - " <td>2.40</td>\n", - " <td>2.68</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SnC</th>\n", - " <td>1.06</td>\n", - " <td>0.64</td>\n", - " <td>1.34</td>\n", - " <td>0.63</td>\n", - " <td>1.70</td>\n", - " <td>2.40</td>\n", - " <td>1.69</td>\n", - " <td>1.98</td>\n", - " <td>1.27</td>\n", - " <td>1.97</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SnGe</th>\n", - " <td>1.06</td>\n", - " <td>0.92</td>\n", - " <td>1.34</td>\n", - " <td>1.16</td>\n", - " <td>1.98</td>\n", - " <td>2.40</td>\n", - " <td>2.22</td>\n", - " <td>2.26</td>\n", - " <td>2.08</td>\n", - " <td>2.50</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SnSi</th>\n", - " <td>1.06</td>\n", - " <td>0.94</td>\n", - " <td>1.34</td>\n", - " <td>1.13</td>\n", - " <td>2.00</td>\n", - " <td>2.40</td>\n", - " <td>2.19</td>\n", - " <td>2.28</td>\n", - " <td>2.07</td>\n", - " <td>2.47</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SrO</th>\n", - " <td>1.91</td>\n", - " <td>0.46</td>\n", - " <td>2.55</td>\n", - " <td>0.43</td>\n", - " <td>2.37</td>\n", - " <td>4.46</td>\n", - " <td>2.34</td>\n", - " <td>3.01</td>\n", - " <td>0.89</td>\n", - " <td>2.98</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SrS</th>\n", - " <td>1.91</td>\n", - " <td>0.74</td>\n", - " <td>2.55</td>\n", - " <td>0.85</td>\n", - " <td>2.65</td>\n", - " <td>4.46</td>\n", - " <td>2.76</td>\n", - " <td>3.29</td>\n", - " <td>1.59</td>\n", - " <td>3.40</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SrSe</th>\n", - " <td>1.91</td>\n", - " <td>0.80</td>\n", - " <td>2.55</td>\n", - " <td>0.95</td>\n", - " <td>2.71</td>\n", - " <td>4.46</td>\n", - " <td>2.86</td>\n", - " <td>3.35</td>\n", - " <td>1.75</td>\n", - " <td>3.50</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SrTe</th>\n", - " <td>1.91</td>\n", - " <td>0.94</td>\n", - " <td>2.55</td>\n", - " <td>1.14</td>\n", - " <td>2.85</td>\n", - " <td>4.46</td>\n", - " <td>3.05</td>\n", - " <td>3.49</td>\n", - " <td>2.08</td>\n", - " <td>3.69</td>\n", - " </tr>\n", - " <tr>\n", - " <th>ZnO</th>\n", - " <td>1.10</td>\n", - " <td>0.46</td>\n", - " <td>1.55</td>\n", - " <td>0.43</td>\n", - " <td>1.56</td>\n", - " <td>2.65</td>\n", - " <td>1.53</td>\n", - " <td>2.01</td>\n", - " <td>0.89</td>\n", - " <td>1.98</td>\n", - " </tr>\n", - " <tr>\n", - " <th>ZnS</th>\n", - " <td>1.10</td>\n", - " <td>0.74</td>\n", - " <td>1.55</td>\n", - " <td>0.85</td>\n", - " <td>1.84</td>\n", - " <td>2.65</td>\n", - " <td>1.95</td>\n", - " <td>2.29</td>\n", - " <td>1.59</td>\n", - " <td>2.40</td>\n", - " </tr>\n", - " <tr>\n", - " <th>ZnSe</th>\n", - " <td>1.10</td>\n", - " <td>0.80</td>\n", - " <td>1.55</td>\n", - " <td>0.95</td>\n", - " <td>1.90</td>\n", - " <td>2.65</td>\n", - " <td>2.05</td>\n", - " <td>2.35</td>\n", - " <td>1.75</td>\n", - " <td>2.50</td>\n", - " </tr>\n", - " <tr>\n", - " <th>ZnTe</th>\n", - " <td>1.10</td>\n", - " <td>0.94</td>\n", - " <td>1.55</td>\n", - " <td>1.14</td>\n", - " <td>2.04</td>\n", - " <td>2.65</td>\n", - " <td>2.24</td>\n", - " <td>2.49</td>\n", - " <td>2.08</td>\n", - " <td>2.69</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "<p>82 rows × 10 columns</p>\n", - "</div>" - ], - "text/plain": [ - " r_s(A) r_s(B) r_p(A) r_p(B) (r_s(A)+r_s(B)) (r_s(A)+r_p(A)) \\\n", - "AgBr 1.32 0.75 1.88 0.88 2.07 3.20 \n", - "AgCl 1.32 0.68 1.88 0.76 2.00 3.20 \n", - "AgF 1.32 0.41 1.88 0.37 1.73 3.20 \n", - "AgI 1.32 0.90 1.88 1.07 2.22 3.20 \n", - "AlAs 1.09 0.85 1.39 1.04 1.94 2.48 \n", - "AlN 1.09 0.54 1.39 0.51 1.63 2.48 \n", - "AlP 1.09 0.83 1.39 0.97 1.92 2.48 \n", - "AlSb 1.09 1.00 1.39 1.23 2.09 2.48 \n", - "AsGa 0.99 0.85 1.33 1.04 1.84 2.32 \n", - "BAs 0.81 0.85 0.83 1.04 1.66 1.64 \n", - "BN 0.81 0.54 0.83 0.51 1.35 1.64 \n", - "BP 0.81 0.83 0.83 0.97 1.64 1.64 \n", - "BSb 0.81 1.00 0.83 1.23 1.81 1.64 \n", - "BaO 2.15 0.46 2.63 0.43 2.61 4.78 \n", - "BaS 2.15 0.74 2.63 0.85 2.89 4.78 \n", - "BaSe 2.15 0.80 2.63 0.95 2.95 4.78 \n", - "BaTe 2.15 0.94 2.63 1.14 3.09 4.78 \n", - "BeO 1.08 0.46 1.21 0.43 1.54 2.29 \n", - "BeS 1.08 0.74 1.21 0.85 1.82 2.29 \n", - "BeSe 1.08 0.80 1.21 0.95 1.88 2.29 \n", - "BeTe 1.08 0.94 1.21 1.14 2.02 2.29 \n", - "C2 0.64 0.64 0.63 0.63 1.28 1.27 \n", - "CaO 1.76 0.46 2.32 0.43 2.22 4.08 \n", - "CaS 1.76 0.74 2.32 0.85 2.50 4.08 \n", - "CaSe 1.76 0.80 2.32 0.95 2.56 4.08 \n", - "CaTe 1.76 0.94 2.32 1.14 2.70 4.08 \n", - "CdO 1.23 0.46 1.74 0.43 1.69 2.97 \n", - "CdS 1.23 0.74 1.74 0.85 1.97 2.97 \n", - "CdSe 1.23 0.80 1.74 0.95 2.03 2.97 \n", - "CdTe 1.23 0.94 1.74 1.14 2.17 2.97 \n", - "... ... ... ... ... ... ... \n", - "LiBr 1.65 0.75 2.00 0.88 2.40 3.65 \n", - "LiCl 1.65 0.68 2.00 0.76 2.33 3.65 \n", - "LiF 1.65 0.41 2.00 0.37 2.06 3.65 \n", - "LiI 1.65 0.90 2.00 1.07 2.55 3.65 \n", - "MgO 1.33 0.46 1.90 0.43 1.79 3.23 \n", - "MgS 1.33 0.74 1.90 0.85 2.07 3.23 \n", - "MgSe 1.33 0.80 1.90 0.95 2.13 3.23 \n", - "MgTe 1.33 0.94 1.90 1.14 2.27 3.23 \n", - "NaBr 1.71 0.75 2.60 0.88 2.46 4.31 \n", - "NaCl 1.71 0.68 2.60 0.76 2.39 4.31 \n", - "NaF 1.71 0.41 2.60 0.37 2.12 4.31 \n", - "NaI 1.71 0.90 2.60 1.07 2.61 4.31 \n", - "RbBr 2.24 0.75 3.20 0.88 2.99 5.44 \n", - "RbCl 2.24 0.68 3.20 0.76 2.92 5.44 \n", - "RbF 2.24 0.41 3.20 0.37 2.65 5.44 \n", - "RbI 2.24 0.90 3.20 1.07 3.14 5.44 \n", - "Si2 0.94 0.94 1.13 1.13 1.88 2.07 \n", - "SiC 0.94 0.64 1.13 0.63 1.58 2.07 \n", - "Sn2 1.06 1.06 1.34 1.34 2.12 2.40 \n", - "SnC 1.06 0.64 1.34 0.63 1.70 2.40 \n", - "SnGe 1.06 0.92 1.34 1.16 1.98 2.40 \n", - "SnSi 1.06 0.94 1.34 1.13 2.00 2.40 \n", - "SrO 1.91 0.46 2.55 0.43 2.37 4.46 \n", - "SrS 1.91 0.74 2.55 0.85 2.65 4.46 \n", - "SrSe 1.91 0.80 2.55 0.95 2.71 4.46 \n", - "SrTe 1.91 0.94 2.55 1.14 2.85 4.46 \n", - "ZnO 1.10 0.46 1.55 0.43 1.56 2.65 \n", - "ZnS 1.10 0.74 1.55 0.85 1.84 2.65 \n", - "ZnSe 1.10 0.80 1.55 0.95 1.90 2.65 \n", - "ZnTe 1.10 0.94 1.55 1.14 2.04 2.65 \n", - "\n", - " (r_s(A)+r_p(B)) (r_s(B)+r_p(A)) (r_s(B)+r_p(B)) (r_p(A)+r_p(B)) \n", - "AgBr 2.20 2.63 1.63 2.76 \n", - "AgCl 2.08 2.56 1.44 2.64 \n", - "AgF 1.69 2.29 0.78 2.25 \n", - "AgI 2.39 2.78 1.97 2.95 \n", - "AlAs 2.13 2.24 1.89 2.43 \n", - "AlN 1.60 1.93 1.05 1.90 \n", - "AlP 2.06 2.22 1.80 2.36 \n", - "AlSb 2.32 2.39 2.23 2.62 \n", - "AsGa 2.03 2.18 1.89 2.37 \n", - "BAs 1.85 1.68 1.89 1.87 \n", - "BN 1.32 1.37 1.05 1.34 \n", - "BP 1.78 1.66 1.80 1.80 \n", - "BSb 2.04 1.83 2.23 2.06 \n", - "BaO 2.58 3.09 0.89 3.06 \n", - "BaS 3.00 3.37 1.59 3.48 \n", - "BaSe 3.10 3.43 1.75 3.58 \n", - "BaTe 3.29 3.57 2.08 3.77 \n", - "BeO 1.51 1.67 0.89 1.64 \n", - "BeS 1.93 1.95 1.59 2.06 \n", - "BeSe 2.03 2.01 1.75 2.16 \n", - "BeTe 2.22 2.15 2.08 2.35 \n", - "C2 1.27 1.27 1.27 1.26 \n", - "CaO 2.19 2.78 0.89 2.75 \n", - "CaS 2.61 3.06 1.59 3.17 \n", - "CaSe 2.71 3.12 1.75 3.27 \n", - "CaTe 2.90 3.26 2.08 3.46 \n", - "CdO 1.66 2.20 0.89 2.17 \n", - "CdS 2.08 2.48 1.59 2.59 \n", - "CdSe 2.18 2.54 1.75 2.69 \n", - "CdTe 2.37 2.68 2.08 2.88 \n", - "... ... ... ... ... \n", - "LiBr 2.53 2.75 1.63 2.88 \n", - "LiCl 2.41 2.68 1.44 2.76 \n", - "LiF 2.02 2.41 0.78 2.37 \n", - "LiI 2.72 2.90 1.97 3.07 \n", - "MgO 1.76 2.36 0.89 2.33 \n", - "MgS 2.18 2.64 1.59 2.75 \n", - "MgSe 2.28 2.70 1.75 2.85 \n", - "MgTe 2.47 2.84 2.08 3.04 \n", - "NaBr 2.59 3.35 1.63 3.48 \n", - "NaCl 2.47 3.28 1.44 3.36 \n", - "NaF 2.08 3.01 0.78 2.97 \n", - "NaI 2.78 3.50 1.97 3.67 \n", - "RbBr 3.12 3.95 1.63 4.08 \n", - "RbCl 3.00 3.88 1.44 3.96 \n", - "RbF 2.61 3.61 0.78 3.57 \n", - "RbI 3.31 4.10 1.97 4.27 \n", - "Si2 2.07 2.07 2.07 2.26 \n", - "SiC 1.57 1.77 1.27 1.76 \n", - "Sn2 2.40 2.40 2.40 2.68 \n", - "SnC 1.69 1.98 1.27 1.97 \n", - "SnGe 2.22 2.26 2.08 2.50 \n", - "SnSi 2.19 2.28 2.07 2.47 \n", - "SrO 2.34 3.01 0.89 2.98 \n", - "SrS 2.76 3.29 1.59 3.40 \n", - "SrSe 2.86 3.35 1.75 3.50 \n", - "SrTe 3.05 3.49 2.08 3.69 \n", - "ZnO 1.53 2.01 0.89 1.98 \n", - "ZnS 1.95 2.29 1.59 2.40 \n", - "ZnSe 2.05 2.35 1.75 2.50 \n", - "ZnTe 2.24 2.49 2.08 2.69 \n", - "\n", - "[82 rows x 10 columns]" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# selected_feature_list = ['IP', 'EA', 'E_HOMO', 'E_LUMO', 'r_s', 'r_p', 'r_d', 'Z', 'period', 'd']\n", - "selected_feature_list = ['r_s', 'r_p']\n", - "\n", - "# allowed_operations = ['+', '-', '|-|', '*', '/' '^2', '^3', 'exp']\n", - "allowed_operations = ['+']\n", - "\n", - "P, df_D = get_data(selected_feature_list, allowed_operations)\n", - "\n", - "# print derived features\n", - "df_D" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "pycharm": {} - }, - "source": [ - "# Determining low-dimensional descriptors with the $\\ell_0$ method\n", - "\n", - "<div style=\"list-style:disc; margin: 2px;padding: 10px;border: 0px;border:8px double green; font-size:16px;padding-left: 32px;padding-right: 22px; width:89%\">\n", - "<li> Perform an $\\ell_0$-regularization to identify the best low dimensional descriptors using the primary features.</li>\n", - "<li> Show that non-linear functions of the primary features improve the models significantly. </li>\n", - "<li> See that the $\\ell_0$-regularization can rapidly become computational infeasible.</li>\n", - "</div>\n", - "\n", - "Our target is to find the best low dimensional descriptor for a linear model. The $\\ell_0$ regularization\n", - "\n", - "$\\text{argmin}_{\\mathbf{c} \\in \\mathbb{R}^{m}} \\{\\|\\mathbf{P} - \\mathbf{D}\\mathbf{c}\\|^2_2 +\\lambda \\|\\mathbf{c}\\|_0\\}$\n", - "\n", - "provides exactly what we want. It is defined in the follwing and solved combinatorial:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "pycharm": {} - }, - "outputs": [], - "source": [ - "def L0(P, D, dimension):\n", - " n_rows, n_columns = D.shape\n", - " D = np.column_stack((D, np.ones(n_rows)))\n", - " SE_min = np.inner(P ,P)\n", - " coef_min, permu_min = None, None\n", - " for permu in combinations(range(n_columns), dimension):\n", - " D_ls = D[:, permu + (-1,)]\n", - " coef, SE, __1, __2 = np.linalg.lstsq(D_ls, P, rcond=-1)\n", - " try:\n", - " if SE[0] < SE_min: \n", - " SE_min = SE[0]\n", - " coef_min, permu_min = coef, permu\n", - " except:\n", - " pass\n", - " RMSE = np.sqrt(SE_min/n_rows)\n", - " return RMSE, coef_min, permu_min" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "pycharm": {} - }, - "source": [ - "Perform the $\\ell_0$-regularization for different dimensions (numbers of non-zero coefficients in the model) and see the root mean square errors (RMSE) and the selected features." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "pycharm": {} - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No allowed operations selected.\n", - "Number of total features generated: 10\n", - " RMSE Best desriptor\n", - " 1D: 0.31334 ['r_p(A)']\n", - " 2D: 0.29494 ['r_p(A)', 'r_d(B)']\n", - " 3D: 0.28015 ['r_s(B)', 'r_p(A)', 'r_p(B)']\n", - " 4D: 0.27525 ['IP(B)', 'r_p(A)', 'r_p(B)', 'r_d(B)']\n", - " 5D: 0.26282 ['IP(A)', 'IP(B)', 'r_p(A)', 'r_p(B)', 'r_d(B)']\n", - " 6D: 0.25090 ['IP(A)', 'IP(B)', 'r_s(A)', 'r_p(A)', 'r_p(B)', 'r_d(B)']\n", - " 7D: 0.24946 ['IP(A)', 'IP(B)', 'r_s(A)', 'r_p(A)', 'r_p(B)', 'r_d(A)', 'r_d(B)']\n", - " 8D: 0.24890 ['EA(B)', 'IP(A)', 'IP(B)', 'r_s(A)', 'r_p(A)', 'r_p(B)', 'r_d(A)', 'r_d(B)']\n", - " 9D: 0.24887 ['EA(A)', 'EA(B)', 'IP(A)', 'IP(B)', 'r_s(A)', 'r_p(A)', 'r_p(B)', 'r_d(A)', 'r_d(B)']\n", - "10D: 0.24886 ['EA(A)', 'EA(B)', 'IP(A)', 'IP(B)', 'r_s(A)', 'r_s(B)', 'r_p(A)', 'r_p(B)', 'r_d(A)', 'r_d(B)']\n" - ] - } - ], - "source": [ - "selected_feature_list = ['r_s', 'r_p', 'r_d', 'EA', 'IP']\n", - "allowed_operations = []\n", - "\n", - "P, df_D = get_data(selected_feature_list, allowed_operations)\n", - "features_list = df_D.columns.tolist()\n", - "D = df_D.values\n", - "\n", - "print(\" RMSE Best desriptor\")\n", - "for dim in range(1,11):\n", - " RMSE, coefficients, selected_indices = L0(P,D,dim)\n", - " print('%2sD: %.5f' % (dim, RMSE), [features_list[i] for i in selected_indices])" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "pycharm": {} - }, - "source": [ - "The result of performing the $\\ell_0$-regularization shows that the accuracy converges fast, e.g. we could leave out some components in the linear model without descreasing the accuracy. The second observation is that a linear model of the atomic features is not enough to describe the RS-ZB energy differences. A way out could be using non-linear machine learning models, e.g. kernel ridge regression or a neural network, instead of linear regression. Another way is to put the non-linearity into the descriptors by building algebraic combinations of the atomic features and mapping the few best of these more complex features onto the target again with a linear model. \n", - "\n", - "Run the following script to build larger feature spaces of more complex features and select the best 1D, 2D and 3D desriptor for a linear model using $\\ell_0$-regularization. Plot the results afterwards. How does the accuracy of the models change? How does the feature space size and the dimension of the descriptors depend on the needed time to solve the $\\ell_0$-problem?" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "pycharm": {}, - "scrolled": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No allowed operations selected.\n", - "Number of total features generated: 10\n", - "n_features: 10; 1D RMSE: 0.313 best features: ['r_p(A)']\n", - "n_features: 10; 2D RMSE: 0.295 best features: ['r_p(A)', 'r_d(B)']\n", - "n_features: 10; 3D RMSE: 0.280 best features: ['r_s(B)', 'r_p(A)', 'r_p(B)']\n", - "Selected operations:\n", - " ['+', '|-|']\n", - "Number of total features generated: 52\n", - "n_features: 52; 1D RMSE: 0.297 best features: ['(r_p(A)+r_d(B))']\n", - "n_features: 52; 2D RMSE: 0.266 best features: ['(r_p(A)+r_d(B))', '|r_p(A)-r_d(B)|']\n", - "n_features: 52; 3D RMSE: 0.210 best features: ['|r_s(A)-r_p(A)|', '(r_s(A)+r_d(B))', '(r_p(A)+r_d(B))']\n", - "Selected operations:\n", - " ['+', '|-|', 'exp']\n", - "Number of total features generated: 73\n", - "n_features: 73; 1D RMSE: 0.297 best features: ['(r_p(A)+r_d(B))']\n", - "n_features: 73; 2D RMSE: 0.228 best features: ['(r_s(B)+r_p(A))', 'exp(r_s(B)+r_p(A))']\n", - "n_features: 73; 3D RMSE: 0.201 best features: ['|r_s(B)-r_p(A)|', '|r_s(B)-r_p(B)|', 'exp(r_p(A))']\n", - "Selected operations:\n", - " ['+', '|-|', 'exp', '^2']\n", - "Number of total features generated: 115\n", - "n_features: 115; 1D RMSE: 0.297 best features: ['(r_p(A)+r_d(B))']\n", - "n_features: 115; 2D RMSE: 0.194 best features: ['(r_s(B)+r_p(A))', '(r_s(B)+r_p(A))^2']\n", - "n_features: 115; 3D RMSE: 0.171 best features: ['(r_s(B)+r_p(A))', '(r_s(B)+r_p(A))^2', 'exp(r_s(B)+r_p(A))']\n" - ] - } - ], - "source": [ - "selected_feature_list = ['r_s', 'r_p', 'r_d', 'EA', 'IP']\n", - "op_lists = [[], ['+','|-|'], ['+','|-|','exp'], ['+','|-|','exp', '^2'] ]\n", - "X = []\n", - "Errors, Time = np.empty([3,len(op_lists)]), np.empty([3,len(op_lists)])\n", - "\n", - "for n_op, allowed_operations in enumerate(op_lists):\n", - " P, df_D = get_data(selected_feature_list, allowed_operations)\n", - " features_list = df_D.columns.tolist()\n", - " D = df_D.values\n", - " \n", - " number_of_features = len(features_list)\n", - " X.append(number_of_features)\n", - " for dim in range(1,4):\n", - " t1= time()\n", - " RMSE, coefficients, selected_indices = L0(P,D,dim)\n", - " t2 = time()-t1 \n", - " \n", - " Time [dim-1][n_op] = t2\n", - " Errors[dim-1][n_op] = RMSE \n", - " \n", - " print(\"n_features: %s; %sD RMSE: %.3f best features: %s\" \n", - " %(len(features_list), dim, RMSE, [features_list[i] for i in selected_indices]))" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "pycharm": {} - }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "<Figure size 864x576 with 2 Axes>" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "#plot\n", - "f, (ax1, ax2) = plt.subplots(1,2, sharex=True, figsize=(12,8))\n", - "ax1.set_xlabel('Feature space size')\n", - "ax2.set_xlabel('Feature space size')\n", - "ax1.set_ylabel('RMSE [eV/atom]')\n", - "ax2.set_ylabel('Time [s]')\n", - "#ax2.set_yscale('log')\n", - "\n", - "for dim in range(1,4):\n", - " ax1.plot(X, Errors[dim-1], 's-', label='%sD' %dim)\n", - " ax2.plot(X, Time[dim-1], 's-', label='%sD' %dim)\n", - "ax2.legend(loc='best')\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "pycharm": {} - }, - "source": [ - "Assume now that we would like to include thousands or millions of (more) complex features to obtain more accurate models..." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "pycharm": {} - }, - "source": [ - "# Approximations to the $\\ell_0$ method\n", - "<div style=\"list-style:disc; margin: 2px;padding: 10px;border: 0px;border:8px double green; font-size:16px;padding-left: 32px;padding-right: 22px; width:89%\">\n", - "<li >Perform a LASSO minimization and the SISSO method.</li>\n", - "<li >Compare the solutions with the ones from the $\\ell_0$ method.</li>\n", - "</div>\n", - "\n", - "### The LASSO\n", - "\n", - "\n", - "One state-of-the art approximation to the $\\ell_0$ method is the LASSO: \n", - "\n", - "$\\text{argmin}_{\\mathbf{c} \\in \\mathbb{R}^{m}} \\{\\|\\mathbf{P} - \\mathbf{D}\\mathbf{c}\\|^2_2 +\\lambda \\|\\mathbf{c}\\|_1\\}$.\n", - "\n", - "Before performing the LASSO regression we standardize the data to have mean 0 and variance 1, since otherwise the $\\ell_2$-norm of a column would affect bias its contribution to the model. <br>\n", - "Note that we can use the LASSO also only for feature selection. We use then a least-square model with the selected features afterwards instead of the LASSO model directly." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "pycharm": {} - }, - "outputs": [], - "source": [ - "def lasso_fit(lam, P, D, feature_list):\n", - " #LASSO\n", - " D_standardized = ss.zscore(D)\n", - " lasso = Lasso(alpha=lam)\n", - " lasso.fit(D_standardized, P)\n", - " coef = lasso.coef_\n", - " \n", - " # get strings of selected features\n", - " selected_indices = coef.nonzero()[0]\n", - " selected_features = [feature_list[i] for i in selected_indices]\n", - " \n", - " # get RMSE of LASSO model\n", - " P_predict = lasso.predict(D_standardized)\n", - " RMSE_LASSO = np.linalg.norm(P-P_predict) / np.sqrt(82.)\n", - "\n", - " #get RMSE for least-square fit\n", - " D_new = D[:, selected_indices]\n", - " D_new = np.column_stack((D_new, np.ones(82)))\n", - " RMSE_LS = np.sqrt(np.linalg.lstsq(D_new,P)[1][0]/82.)\n", - " \n", - " return RMSE_LASSO, RMSE_LS, coef, selected_features" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "pycharm": {} - }, - "source": [ - "$\\lambda$ regulates the sparsity of the coefficient vector of the model. Get the data and try different $\\lambda$ by adjusting the varibale lam. How good does LASSO (directly or with a least-square fit afterwards) approximate the L0-method (when the same feature space is used for both)?" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "pycharm": {}, - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Selected operations:\n", - " ['+', '|-|', 'exp', '^2']\n", - "Number of total features generated: 115\n" - ] - } - ], - "source": [ - "#import Data\n", - "selected_feature_list = ['r_s', 'r_p', 'r_d', 'EA', 'IP']\n", - "allowed_operations = ['+','|-|','exp', '^2']\n", - "P, df_D = get_data(selected_feature_list, allowed_operations)\n", - "D = df_D.values\n", - "features_list = df_D.columns.tolist()" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "pycharm": {} - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "lambda: 0.200\t dimension of descriptor: 2\t RMSE_LASSO: 0.357\t RMSE_LS: 0.291\n", - " features abs(nonzero_coefs_LASSO)\n", - "0 (r_p(A)+r_p(B)) 0.017879\n", - "1 (r_p(A)+r_d(B)) 0.119307\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "<Figure size 432x288 with 1 Axes>" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "# change lam between 0.02 and 0.34, e.g. 0.34, 0.30, 0.20, 0.13, 0.10, 0.02\n", - "lam = 0.2\n", - "\n", - "RMSE_LASSO, RMSE_LS, coef, selected_features = lasso_fit(lam, P, D, features_list)\n", - "plt.bar(range(len(coef)), np.abs(coef))\n", - "plt.xlabel(\"Coefficient index $i$\")\n", - "plt.ylabel(\"$|c_i|$\")\n", - "\n", - "print(\"lambda: %.3f\\t dimension of descriptor: %s\\t RMSE_LASSO: %.3f\\t RMSE_LS: %.3f\" \n", - " %(lam, len(selected_features), RMSE_LASSO, RMSE_LS))\n", - "print(pd.DataFrame({'features':np.array(selected_features), 'abs(nonzero_coefs_LASSO)': np.abs(coef[coef.nonzero()])}))\n", - "plt.show() " - ] - }, - { - "cell_type": "markdown", - "metadata": { - "pycharm": {} - }, - "source": [ - "Hint:\n", - "Compare these results to the L0 results you have obtained before from the same feature space, copied and pasted in here:<br>\n", - "\"Number of total features generated: 115 <br>\n", - "features: 115; 1D RMSE: 0.296667841349 best features: ['(r_p(A)+r_d(B))'] <br>\n", - "features: 115; 2D RMSE: 0.194137970112 best features: ['(r_s(B)+r_p(A))', '(r_s(B)+r_p(A))^2'] <br>\n", - "features: 115; 3D RMSE: 0.170545592998 best features: ['(r_s(B)+r_p(A))', '(r_s(B)+r_p(A))^2', 'exp(r_s(B)+r_p(A))']\"" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "pycharm": {} - }, - "source": [ - "### The SISSO method" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "pycharm": {} - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Selected operations:\n", - " ['+', '|-|', 'exp', '^2']\n", - "Number of total features generated: 115\n" - ] - } - ], - "source": [ - "#import Data\n", - "selected_feature_list = ['r_s', 'r_p', 'r_d', 'EA', 'IP']\n", - "allowed_operations = ['+','|-|','exp', '^2']\n", - "P, df_D = get_data(selected_feature_list, allowed_operations)\n", - "D = df_D.values\n", - "features_list = df_D.columns.tolist()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "pycharm": {} - }, - "source": [ - "Now apply the SISSO algorithm. How does the SISSO method compare to the LASSO and to the $\\ell_0$-regularization in terms of accuracy (again when using the same feature space)? How fast is SISSO compared to the $\\ell_0$-regularization? How does n_features_per_sis_iter (the number of features collected per sis iteration) affect the performance? Note, that for n_features_per_sis_iter=1 SISSO becomes the so-called orthogonal matching pursuit, another well-known compressed sensing method." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": { - "pycharm": {} - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " RMSE Model\n", - "1D:\t0.296668\t- 0.484 (r_p(A)+r_d(B)) + 1.944\n", - "2D:\t0.218070\t- 3.483 (r_p(A)+r_d(B)) + 0.392 (r_p(A)+r_d(B))^2 + 7.495\n", - "3D:\t0.193928\t- 3.528 (r_p(A)+r_d(B)) + 0.405 (r_p(A)+r_d(B))^2 + 0.293 |r_s(A)-r_d(B)| + 7.280\n" - ] - } - ], - "source": [ - "sisso = SissoRegressor(n_nonzero_coefs=3, n_features_per_sis_iter=10)\n", - "\n", - "sisso.fit(D, P)\n", - "sisso.print_models(features_list)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "pycharm": {} - }, - "source": [ - "# Run the SISSO method with a big feature space\n", - "<div style=\"list-style:disc; margin: 2px;padding: 10px;border: 0px;border:8px double green; font-size:16px;padding-left: 32px;padding-right: 22px; width:89%\">\n", - "<li>Reproduce the results from the <a href=\"http://journals.aps.org/prl/abstract/10.1103/PhysRevLett.114.105503\" target=\"_blank\">reference publication</a> by including further features.</li>\n", - "<li>Visualize the 2D descriptors in a structure map.</li>\n", - "<li>Experiment with different settings and investigate the influence of the input parameters on the results. (OPTIONAL)</li>\n", - "</div>\n", - "Note the size of the feature space, the needed time to run the code and the accuracy (using the default settings)!" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": { - "pycharm": {} - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Selected operations:\n", - " ['+', '|-|', 'exp', '^2', '/']\n", - "Number of total features generated: 3391\n", - " RMSE Model\n", - "1D:\t0.137212\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.332\n", - "2D:\t0.100216\t+ 0.114 |IP(B)-EA(B)|/r_p(A)^2 - 1.482 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.145\n", - "3D:\t0.076428\t+ 0.109 |IP(B)-EA(B)|/r_p(A)^2 - 1.766 |r_s(A)-r_p(B)|/exp(r_s(A)) - 6.032 |r_s(B)-r_p(B)|/(r_p(B)+r_d(A))^2 - 0.005\n" - ] - } - ], - "source": [ - "# parameters for feature space construction\n", - "selected_feature_list = ['IP', 'EA', 'r_s', 'r_p','r_d']\n", - "allowed_operations = ['+','|-|','exp','^2', '/']\n", - "\n", - "# get the data\n", - "P, df_D = get_data(selected_feature_list, allowed_operations)\n", - "D = df_D.values\n", - "features_list = df_D.columns.tolist()\n", - "\n", - "sisso = SissoRegressor(n_nonzero_coefs=3, n_features_per_sis_iter=26)\n", - "\n", - "sisso.fit(D, P)\n", - "sisso.print_models(features_list)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "pycharm": {} - }, - "source": [ - "Next, plot an interactive 2D structure map using the 2D descriptor. By <i>hovering</i> over a point in the plot, information regarding that system is displayed. By <i>clicking</i> a point, an interactive 3D visualization of the structure will be displayed below.\n", - "\n", - "The markers represent the compounds and their colors the reference energy differences. How well does the descriptor separate the compounds with respect to their crystal structure?" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": { - "pycharm": {} - }, - "outputs": [ - { - "data": { - "text/html": [ - "<!DOCTYPE html>\n", - " <html>\n", - " <head>\n", - " <meta charset=\"UTF-8\">\n", - " <title>Molecule #0</title>\n", - "\n", - " <!-- load JSmol; relative path works, absolute fails, might be access rights related -->\n", - " <script type=\"text/javascript\" src=\"JSmol.min.js\"></script> \n", - " <script type=\"text/javascript\">\n", - " var i_click = 0;\n", - " Jmol.setDocument(false);\n", - "\n", - "\n", - " jsmolReady = function(app) {\n", - " Jmol.evaluateVar(app, \"appletdiv\");\n", - "\n", - " };\n", - "\n", - " <!-- see http://wiki.jmol.org/index.php/Jmol_JavaScript_Object for functionality -->\n", - " var info = {\n", - " width: 400,\n", - " height: 300,\n", - " use: \"HTML5\",\n", - " j2spath: \"./j2s\",\n", - "\n", - " };\n", - "\n", - " get_info = function(fil) {\n", - " var info_here = {\n", - " width: 400,\n", - " height: 300,\n", - " use: \"HTML5\",\n", - " j2spath: \"./j2s\",\n", - " script: 'load ' + fil\n", - " };\n", - " return info_here;\n", - " }\n", - "\n", - "\n", - "\n", - " $(document).ready(function() {\n", - " $(\"#appdiv0\").html(Jmol.getAppletHtml(\"jsmol0\", info))\n", - " $(\"#appdiv1\").html(Jmol.getAppletHtml(\"jsmol1\", info))\n", - " });\n", - "\n", - " change_geo = function(filename, i_click_){\n", - " var i_geo_box = i_click % 2;\n", - " $(document).ready(function() {\n", - "\n", - " $(\"#appdiv\" + i_geo_box).html(Jmol.getAppletHtml(\"jsmol\" + i_geo_box, get_info(filename)))\n", - " });\n", - " };\n", - "\n", - " </script>\n", - " \n", - "<script type=\"text/javascript\">\n", - " (function() {\n", - " var fn = function() {\n", - " Bokeh.safely(function() {\n", - " (function(root) {\n", - " function embed_document(root) {\n", - " \n", - " var docs_json = '{\"db6f539a-e1f9-4f05-ac05-0cd33b61031e\":{\"roots\":{\"references\":[{\"attributes\":{\"callback\":null},\"id\":\"1007\",\"type\":\"DataRange1d\"},{\"attributes\":{\"below\":[{\"id\":\"1013\",\"type\":\"LinearAxis\"}],\"center\":[{\"id\":\"1017\",\"type\":\"Grid\"},{\"id\":\"1022\",\"type\":\"Grid\"},{\"id\":\"1045\",\"type\":\"Legend\"}],\"left\":[{\"id\":\"1018\",\"type\":\"LinearAxis\"}],\"plot_height\":300,\"renderers\":[{\"id\":\"1036\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"1038\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"1027\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"1005\",\"type\":\"DataRange1d\"},\"x_scale\":{\"id\":\"1009\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"1007\",\"type\":\"DataRange1d\"},\"y_scale\":{\"id\":\"1011\",\"type\":\"LinearScale\"}},\"id\":\"1004\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"axis_label\":\"|IP(B)-EA(B)|/r_p(A)^2\",\"formatter\":{\"id\":\"1043\",\"type\":\"BasicTickFormatter\"},\"ticker\":{\"id\":\"1014\",\"type\":\"BasicTicker\"}},\"id\":\"1013\",\"type\":\"LinearAxis\"},{\"attributes\":{\"items\":[{\"id\":\"1046\",\"type\":\"LegendItem\"}]},\"id\":\"1045\",\"type\":\"Legend\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"1002\",\"type\":\"HoverTool\"},{\"id\":\"1023\",\"type\":\"TapTool\"},{\"id\":\"1024\",\"type\":\"BoxZoomTool\"},{\"id\":\"1025\",\"type\":\"PanTool\"},{\"id\":\"1026\",\"type\":\"ResetTool\"}]},\"id\":\"1027\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1014\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1043\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1041\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1054\",\"type\":\"Selection\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":20},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1035\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"1019\",\"type\":\"BasicTicker\"},{\"attributes\":{\"text\":\"\"},\"id\":\"1038\",\"type\":\"Title\"},{\"attributes\":{\"overlay\":{\"id\":\"1044\",\"type\":\"BoxAnnotation\"}},\"id\":\"1024\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"ticker\":{\"id\":\"1014\",\"type\":\"BasicTicker\"}},\"id\":\"1017\",\"type\":\"Grid\"},{\"attributes\":{\"axis_label\":\"|r_s(A)-r_p(B)|/exp(r_s(A))\",\"formatter\":{\"id\":\"1041\",\"type\":\"BasicTickFormatter\"},\"ticker\":{\"id\":\"1019\",\"type\":\"BasicTicker\"}},\"id\":\"1018\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1053\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"source\":{\"id\":\"1003\",\"type\":\"ColumnDataSource\"}},\"id\":\"1037\",\"type\":\"CDSView\"},{\"attributes\":{\"args\":{\"source\":{\"id\":\"1003\",\"type\":\"ColumnDataSource\"}},\"code\":\"var idx_struc = cb_data.source['selected']['1d'].indices;\\\\n if (!Number.isInteger(idx_struc)){idx_struc=idx_struc[0]}\\\\n var data = source.data;\\\\n var geo_file = data['geo_files'][idx_struc]\\\\n var chemical_formula = data['chemical_formulas'][idx_struc]\\\\n var structure_type = data['legend'][idx_struc]\\\\n\\\\n change_geo(geo_file, i_click);\\\\n document.getElementById(\\\\\"chemical_formula\\\\\" + i_click%2).innerHTML = String(chemical_formula)\\\\n document.getElementById(\\\\\"structure_type\\\\\" + i_click%2).innerHTML = String(structure_type)\\\\n\\\\n i_click = i_click + 1;\\\\n\\\\n \"},\"id\":\"1056\",\"type\":\"CustomJS\"},{\"attributes\":{},\"id\":\"1025\",\"type\":\"PanTool\"},{\"attributes\":{\"dimension\":1,\"ticker\":{\"id\":\"1019\",\"type\":\"BasicTicker\"}},\"id\":\"1022\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1026\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1011\",\"type\":\"LinearScale\"},{\"attributes\":{\"data_source\":{\"id\":\"1003\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1034\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1035\",\"type\":\"Circle\"},\"selection_glyph\":null,\"view\":{\"id\":\"1037\",\"type\":\"CDSView\"}},\"id\":\"1036\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"1044\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"callback\":null,\"tooltips\":\"\\\\n <div>\\\\n <div>\\\\n <img\\\\n src=\\\\\"@imgs\\\\\" height=\\\\\"56\\\\\" alt=\\\\\"@imgs\\\\\" width=\\\\\"56\\\\\"\\\\n style=\\\\\"display: table; margin: 0 auto;\\\\\"\\\\n border=\\\\\"2\\\\\"\\\\n ></img>\\\\n </div>\\\\n <div>\\\\n <span style=\\\\\"font-size: 15px; font-weight: bold;\\\\\">@chemical_formulas</span>\\\\n </div>\\\\n \\\\n <div >\\\\n <span style=\\\\\"font-size: 10px;\\\\\">Ref. &#916E = @Ref eV/atom</span><br>\\\\n <span style=\\\\\"font-size: 10px;\\\\\">Pred. &#916E = @Pred eV/atom</span>\\\\n </div>\\\\n \\\\n <div>\\\\n <span style=\\\\\"font-size: 10px;\\\\\">Location</span>\\\\n <span style=\\\\\"font-size: 8px; color: #696;\\\\\">($x, $y)</span>\\\\n </div>\\\\n </div>\\\\n \"},\"id\":\"1002\",\"type\":\"HoverTool\"},{\"attributes\":{\"callback\":{\"id\":\"1056\",\"type\":\"CustomJS\"}},\"id\":\"1023\",\"type\":\"TapTool\"},{\"attributes\":{\"callback\":null,\"data\":{\"Pred\":{\"__ndarray__\":\"4OkZudmun79wkHZ6x0env7jmS33MTKC/wIjDGUf/ej8dKFEt/TvRP5f+9zPjlNA/k+i90oWL0D9qKuiWwqnGP/M6aMeFqNM/QIQLGVfo7T/C2DTgqZz5P1R58xdZxvA/DF0dgHel5T/cbynVZCfMvwcL5vX7Vcy/B0hk1964y79QLK9Q5J/Jv+6oEaA5beI/IcvlgMoG3D9J8iPNG3rbP3Eau51HxNg/akfqr7TCBUBQSaKUWHbJv5MEyDwu6se/eWE0ubGzxr+a1cZRUjPDvyAkuza8YI8/UNQiQJoMnT8oPw9Bnh6mPwS31DsBiLY/RCI6uOgWz78AYhRIRYrPv/xTJbZoP86/5BCSgMO3zb9AEbzat7WyP4iB8t/eI68/1KW1IcTfuD/ss4W+mVa8PwUZNV2oQNY/e9ivae1m1j9OLEYK80vDP0OQMPUyoNE/BmU/+REA4T85gBSUqo7TP07NFuMwNMg/WFIyT5Khwz8+143eapDGP9zfPGZTYsI/hFZvZDnTyL+vb/foIwbJv+DxLk/YC8W/18UomAJox7/ofz7kiAS8vzybjuT+TL2/AKfYp6O0s7+4drOoPLO2v8B/WjjEmLK/HCNVFuxsqb8AKqqleZahv8Cj+X2VxYE/etu16Pe7y782jLwvCqXNv6Ls4Q72x8+/qaWYHLi8x7+3EbGu5aLQv7aZP/KbHtG/nOF18ItY0b94LEVyvBnPv0G3ern6btY/GOveFm4y4j9k3pAKdO23PzSY0rCrPdE/7A+v8y7NzD+wAPai9PfPP4j56VPS6c2/q6Aq8S4uzL8b1JMgoRHLv34MUvBQ98e/KhpG/THjxD8a6exsOCrEP9IXQ65z4sU//nw6yc7Hxj8=\",\"dtype\":\"float64\",\"shape\":[82]},\"Ref\":[-0.03003341671137605,-0.04279727820539847,-0.15375767317891587,0.036925419641193,0.21326184910867596,0.07294907316963872,0.2189583414756271,0.15686873396043666,0.2742777724197367,0.8749781837650517,1.7120802608362737,1.0192251611952088,0.5808491143689025,-0.09299855386780109,-0.3197624294261914,-0.3434451340872329,-0.37538680966827087,0.6918375772329455,0.5063276745431722,0.4949404427752597,0.4685859104938572,2.628603639133644,-0.265219041319142,-0.3691331945374259,-0.3607977344217943,-0.35045627907675225,-0.08416135802690405,0.07267279591178522,0.0835719490860356,0.11453953219461255,-0.15586730299401097,-0.15034615744662005,-0.10826331867428962,-0.16238747449824587,0.15244263978820527,0.15625871319207363,-0.017022272342728684,0.20467458326311316,0.4334452390939987,0.3487517977519019,0.15462528509669937,0.2008525260607712,0.8114428802000475,0.263210170178354,0.13404757519310806,0.15372029269929044,0.17919328722928185,0.07805987301981077,-0.16617596419382608,-0.1644606802110502,-0.1464060984981188,-0.1670391451625619,-0.03274621288437629,-0.03838148269915109,-0.059488316863735236,-0.021660936341504566,-0.23227472431699425,-0.08669950498824619,-0.05530180195637513,-0.004591286648064852,-0.12642872788273962,-0.13299198508138943,-0.14578813778780386,-0.11483822218724526,-0.16382053142297082,-0.1605035540778772,-0.13559577698470093,-0.1672014421201311,0.27916582154830394,0.6690237272359809,0.01696389919379726,0.4535379741428187,0.08166336023714393,0.1351087991060922,-0.22030662317411043,-0.3684341299303924,-0.37451095173310023,-0.3792947258625645,0.10196817676842329,0.27581332560657756,0.26313689928065287,0.24500129517400637],\"chemical_formulas\":[\"AgBr\",\"AgCl\",\"AgF\",\"AgI\",\"AlAs\",\"AlN\",\"AlP\",\"AlSb\",\"AsGa\",\"BAs\",\"BN\",\"BP\",\"BSb\",\"BaO\",\"BaS\",\"BaSe\",\"BaTe\",\"BeO\",\"BeS\",\"BeSe\",\"BeTe\",\"C2\",\"CaO\",\"CaS\",\"CaSe\",\"CaTe\",\"CdO\",\"CdS\",\"CdSe\",\"CdTe\",\"CsBr\",\"CsCl\",\"CsF\",\"CsI\",\"CuBr\",\"CuCl\",\"CuF\",\"CuI\",\"GaN\",\"GaP\",\"GaSb\",\"Ge2\",\"GeC\",\"GeSi\",\"InAs\",\"InN\",\"InP\",\"InSb\",\"KBr\",\"KCl\",\"KF\",\"KI\",\"LiBr\",\"LiCl\",\"LiF\",\"LiI\",\"MgO\",\"MgS\",\"MgSe\",\"MgTe\",\"NaBr\",\"NaCl\",\"NaF\",\"NaI\",\"RbBr\",\"RbCl\",\"RbF\",\"RbI\",\"Si2\",\"SiC\",\"Sn2\",\"SnC\",\"SnGe\",\"SnSi\",\"SrO\",\"SrS\",\"SrSe\",\"SrTe\",\"ZnO\",\"ZnS\",\"ZnSe\",\"ZnTe\"],\"color\":[\"blue\",\"blue\",\"blue\",\"red\",\"red\",\"red\",\"red\",\"red\",\"red\",\"red\",\"red\",\"red\",\"red\",\"blue\",\"blue\",\"blue\",\"blue\",\"red\",\"red\",\"red\",\"red\",\"red\",\"blue\",\"blue\",\"blue\",\"blue\",\"blue\",\"red\",\"red\",\"red\",\"blue\",\"blue\",\"blue\",\"blue\",\"red\",\"red\",\"blue\",\"red\",\"red\",\"red\",\"red\",\"red\",\"red\",\"red\",\"red\",\"red\",\"red\",\"red\",\"blue\",\"blue\",\"blue\",\"blue\",\"blue\",\"blue\",\"blue\",\"blue\",\"blue\",\"blue\",\"blue\",\"blue\",\"blue\",\"blue\",\"blue\",\"blue\",\"blue\",\"blue\",\"blue\",\"blue\",\"red\",\"red\",\"red\",\"red\",\"red\",\"red\",\"blue\",\"blue\",\"blue\",\"blue\",\"red\",\"red\",\"red\",\"red\"],\"geo_files\":[\"../../tmp/Geo_RS_AgBr.in\",\"../../tmp/Geo_RS_AgCl.in\",\"../../tmp/Geo_RS_AgF.in\",\"../../tmp/Geo_ZB_AgI.in\",\"../../tmp/Geo_ZB_AlAs.in\",\"../../tmp/Geo_ZB_AlN.in\",\"../../tmp/Geo_ZB_AlP.in\",\"../../tmp/Geo_ZB_AlSb.in\",\"../../tmp/Geo_ZB_AsGa.in\",\"../../tmp/Geo_ZB_BAs.in\",\"../../tmp/Geo_ZB_BN.in\",\"../../tmp/Geo_ZB_BP.in\",\"../../tmp/Geo_ZB_BSb.in\",\"../../tmp/Geo_RS_BaO.in\",\"../../tmp/Geo_RS_BaS.in\",\"../../tmp/Geo_RS_BaSe.in\",\"../../tmp/Geo_RS_BaTe.in\",\"../../tmp/Geo_ZB_BeO.in\",\"../../tmp/Geo_ZB_BeS.in\",\"../../tmp/Geo_ZB_BeSe.in\",\"../../tmp/Geo_ZB_BeTe.in\",\"../../tmp/Geo_ZB_C2.in\",\"../../tmp/Geo_RS_CaO.in\",\"../../tmp/Geo_RS_CaS.in\",\"../../tmp/Geo_RS_CaSe.in\",\"../../tmp/Geo_RS_CaTe.in\",\"../../tmp/Geo_RS_CdO.in\",\"../../tmp/Geo_ZB_CdS.in\",\"../../tmp/Geo_ZB_CdSe.in\",\"../../tmp/Geo_ZB_CdTe.in\",\"../../tmp/Geo_RS_CsBr.in\",\"../../tmp/Geo_RS_CsCl.in\",\"../../tmp/Geo_RS_CsF.in\",\"../../tmp/Geo_RS_CsI.in\",\"../../tmp/Geo_ZB_CuBr.in\",\"../../tmp/Geo_ZB_CuCl.in\",\"../../tmp/Geo_RS_CuF.in\",\"../../tmp/Geo_ZB_CuI.in\",\"../../tmp/Geo_ZB_GaN.in\",\"../../tmp/Geo_ZB_GaP.in\",\"../../tmp/Geo_ZB_GaSb.in\",\"../../tmp/Geo_ZB_Ge2.in\",\"../../tmp/Geo_ZB_GeC.in\",\"../../tmp/Geo_ZB_GeSi.in\",\"../../tmp/Geo_ZB_InAs.in\",\"../../tmp/Geo_ZB_InN.in\",\"../../tmp/Geo_ZB_InP.in\",\"../../tmp/Geo_ZB_InSb.in\",\"../../tmp/Geo_RS_KBr.in\",\"../../tmp/Geo_RS_KCl.in\",\"../../tmp/Geo_RS_KF.in\",\"../../tmp/Geo_RS_KI.in\",\"../../tmp/Geo_RS_LiBr.in\",\"../../tmp/Geo_RS_LiCl.in\",\"../../tmp/Geo_RS_LiF.in\",\"../../tmp/Geo_RS_LiI.in\",\"../../tmp/Geo_RS_MgO.in\",\"../../tmp/Geo_RS_MgS.in\",\"../../tmp/Geo_RS_MgSe.in\",\"../../tmp/Geo_RS_MgTe.in\",\"../../tmp/Geo_RS_NaBr.in\",\"../../tmp/Geo_RS_NaCl.in\",\"../../tmp/Geo_RS_NaF.in\",\"../../tmp/Geo_RS_NaI.in\",\"../../tmp/Geo_RS_RbBr.in\",\"../../tmp/Geo_RS_RbCl.in\",\"../../tmp/Geo_RS_RbF.in\",\"../../tmp/Geo_RS_RbI.in\",\"../../tmp/Geo_ZB_Si2.in\",\"../../tmp/Geo_ZB_SiC.in\",\"../../tmp/Geo_ZB_Sn2.in\",\"../../tmp/Geo_ZB_SnC.in\",\"../../tmp/Geo_ZB_SnGe.in\",\"../../tmp/Geo_ZB_SnSi.in\",\"../../tmp/Geo_RS_SrO.in\",\"../../tmp/Geo_RS_SrS.in\",\"../../tmp/Geo_RS_SrSe.in\",\"../../tmp/Geo_RS_SrTe.in\",\"../../tmp/Geo_ZB_ZnO.in\",\"../../tmp/Geo_ZB_ZnS.in\",\"../../tmp/Geo_ZB_ZnSe.in\",\"../../tmp/Geo_ZB_ZnTe.in\"],\"imgs\":[\"../../tmp/Thumbnail_RS_AgBr.png\",\"../../tmp/Thumbnail_RS_AgCl.png\",\"../../tmp/Thumbnail_RS_AgF.png\",\"../../tmp/Thumbnail_ZB_AgI.png\",\"../../tmp/Thumbnail_ZB_AlAs.png\",\"../../tmp/Thumbnail_ZB_AlN.png\",\"../../tmp/Thumbnail_ZB_AlP.png\",\"../../tmp/Thumbnail_ZB_AlSb.png\",\"../../tmp/Thumbnail_ZB_AsGa.png\",\"../../tmp/Thumbnail_ZB_BAs.png\",\"../../tmp/Thumbnail_ZB_BN.png\",\"../../tmp/Thumbnail_ZB_BP.png\",\"../../tmp/Thumbnail_ZB_BSb.png\",\"../../tmp/Thumbnail_RS_BaO.png\",\"../../tmp/Thumbnail_RS_BaS.png\",\"../../tmp/Thumbnail_RS_BaSe.png\",\"../../tmp/Thumbnail_RS_BaTe.png\",\"../../tmp/Thumbnail_ZB_BeO.png\",\"../../tmp/Thumbnail_ZB_BeS.png\",\"../../tmp/Thumbnail_ZB_BeSe.png\",\"../../tmp/Thumbnail_ZB_BeTe.png\",\"../../tmp/Thumbnail_ZB_C2.png\",\"../../tmp/Thumbnail_RS_CaO.png\",\"../../tmp/Thumbnail_RS_CaS.png\",\"../../tmp/Thumbnail_RS_CaSe.png\",\"../../tmp/Thumbnail_RS_CaTe.png\",\"../../tmp/Thumbnail_RS_CdO.png\",\"../../tmp/Thumbnail_ZB_CdS.png\",\"../../tmp/Thumbnail_ZB_CdSe.png\",\"../../tmp/Thumbnail_ZB_CdTe.png\",\"../../tmp/Thumbnail_RS_CsBr.png\",\"../../tmp/Thumbnail_RS_CsCl.png\",\"../../tmp/Thumbnail_RS_CsF.png\",\"../../tmp/Thumbnail_RS_CsI.png\",\"../../tmp/Thumbnail_ZB_CuBr.png\",\"../../tmp/Thumbnail_ZB_CuCl.png\",\"../../tmp/Thumbnail_RS_CuF.png\",\"../../tmp/Thumbnail_ZB_CuI.png\",\"../../tmp/Thumbnail_ZB_GaN.png\",\"../../tmp/Thumbnail_ZB_GaP.png\",\"../../tmp/Thumbnail_ZB_GaSb.png\",\"../../tmp/Thumbnail_ZB_Ge2.png\",\"../../tmp/Thumbnail_ZB_GeC.png\",\"../../tmp/Thumbnail_ZB_GeSi.png\",\"../../tmp/Thumbnail_ZB_InAs.png\",\"../../tmp/Thumbnail_ZB_InN.png\",\"../../tmp/Thumbnail_ZB_InP.png\",\"../../tmp/Thumbnail_ZB_InSb.png\",\"../../tmp/Thumbnail_RS_KBr.png\",\"../../tmp/Thumbnail_RS_KCl.png\",\"../../tmp/Thumbnail_RS_KF.png\",\"../../tmp/Thumbnail_RS_KI.png\",\"../../tmp/Thumbnail_RS_LiBr.png\",\"../../tmp/Thumbnail_RS_LiCl.png\",\"../../tmp/Thumbnail_RS_LiF.png\",\"../../tmp/Thumbnail_RS_LiI.png\",\"../../tmp/Thumbnail_RS_MgO.png\",\"../../tmp/Thumbnail_RS_MgS.png\",\"../../tmp/Thumbnail_RS_MgSe.png\",\"../../tmp/Thumbnail_RS_MgTe.png\",\"../../tmp/Thumbnail_RS_NaBr.png\",\"../../tmp/Thumbnail_RS_NaCl.png\",\"../../tmp/Thumbnail_RS_NaF.png\",\"../../tmp/Thumbnail_RS_NaI.png\",\"../../tmp/Thumbnail_RS_RbBr.png\",\"../../tmp/Thumbnail_RS_RbCl.png\",\"../../tmp/Thumbnail_RS_RbF.png\",\"../../tmp/Thumbnail_RS_RbI.png\",\"../../tmp/Thumbnail_ZB_Si2.png\",\"../../tmp/Thumbnail_ZB_SiC.png\",\"../../tmp/Thumbnail_ZB_Sn2.png\",\"../../tmp/Thumbnail_ZB_SnC.png\",\"../../tmp/Thumbnail_ZB_SnGe.png\",\"../../tmp/Thumbnail_ZB_SnSi.png\",\"../../tmp/Thumbnail_RS_SrO.png\",\"../../tmp/Thumbnail_RS_SrS.png\",\"../../tmp/Thumbnail_RS_SrSe.png\",\"../../tmp/Thumbnail_RS_SrTe.png\",\"../../tmp/Thumbnail_ZB_ZnO.png\",\"../../tmp/Thumbnail_ZB_ZnS.png\",\"../../tmp/Thumbnail_ZB_ZnSe.png\",\"../../tmp/Thumbnail_ZB_ZnTe.png\"],\"legend\":[\"RS\",\"RS\",\"RS\",\"ZB\",\"ZB\",\"ZB\",\"ZB\",\"ZB\",\"ZB\",\"ZB\",\"ZB\",\"ZB\",\"ZB\",\"RS\",\"RS\",\"RS\",\"RS\",\"ZB\",\"ZB\",\"ZB\",\"ZB\",\"ZB\",\"RS\",\"RS\",\"RS\",\"RS\",\"RS\",\"ZB\",\"ZB\",\"ZB\",\"RS\",\"RS\",\"RS\",\"RS\",\"ZB\",\"ZB\",\"RS\",\"ZB\",\"ZB\",\"ZB\",\"ZB\",\"ZB\",\"ZB\",\"ZB\",\"ZB\",\"ZB\",\"ZB\",\"ZB\",\"RS\",\"RS\",\"RS\",\"RS\",\"RS\",\"RS\",\"RS\",\"RS\",\"RS\",\"RS\",\"RS\",\"RS\",\"RS\",\"RS\",\"RS\",\"RS\",\"RS\",\"RS\",\"RS\",\"RS\",\"ZB\",\"ZB\",\"ZB\",\"ZB\",\"ZB\",\"ZB\",\"RS\",\"RS\",\"RS\",\"RS\",\"ZB\",\"ZB\",\"ZB\",\"ZB\"],\"x\":{\"__ndarray__\":\"Lk2Emg0rBEC1fCHBfnoGQO3b6PrAHxFAlRgS4wKHAUAXBrhS9rsOQBLjx2JNQhhAKCoJUCo2EEA4ApKkzmoLQFhJzMTuyBBAL4kpRKeMJUCqhdLiYAIxQP4NrWnPuyZAlMzG0kM5I0DvJJ4qSA//P85s+YQQtPQ/3Zd0/tr08j9pMKH1DqjwPzUFOtiQVyJAAGgDPtJzGEA0PyY5oWMWQN9ykAg2rBNATwZfv6IkOUDlbmmbFPUDQOqLC44Xm/o/+D5qqGJc+D8eFeODuWf1Pw6aMpJnvRFADoRpuE2mB0Cd4AgLdKcFQO5DsrTdBgNARmvR/9eN7D9yH4LfNNPvP/n1XkiDPvg/wbpvX7TQ6D+8HfU+hkEJQD6e2QYrJgxAJcLkEaJxFUDQH29l8PIFQII2hcpEfxpAuNz96Q+1EUBt+armXfINQPJMh1pKrBNAhwxeSzyqHUDqjaTM7RsUQHIcx3FOZApAAAAAANvUFEAAAAAAltcLQKuqqqogiwdAwwBn3Svy9z/Wklg/ZrD6PxUaOb/lVARAcEYyIH/P9D8AAADgEtIBQAAAAACs3ANAAAAAQPhCDkAAAABAcvn+PxDmFax7wQ1AMFJKrpDVA0BkKrBQISkCQHPPoywa6v8/BCzneucW9T8KDVsVXYH3P+jPOI8B6AFATpRK+/pT8j9G4RNwPdjrP6aZe7DMCO8/C9ct5lGk9z9kj+Y14TLoP7vY3v7lMBVAWP4/UNJCH0A2uVk0gL8KQLADvhMGOxZAhmyJqUN8DUCQdm3PlSMOQFzsYaUBhQBAGWadttUF9j9N1xkWICr0P9dhx/rNt/E/zQqMUwVbFkBuZgidjs0NQOM4mjvKSQtAn6+3ODT6B0A=\",\"dtype\":\"float64\",\"shape\":[82]},\"y\":{\"__ndarray__\":\"NWXQSBIXvj+kKapW9CXDP/Pmc1ToPdA/6LBXm74YsT+x2Hjs3DaRP2BbA1Lx9cg/wG33bDqopD8DJb9FmRmoP11SvUdTBpM/Jv0KEHgxuj+VzpIFIhXBP9bMtPisOLI/alSa1GLqxz/SOYaPKKXJP+B0K94JYsM/jDQv3FfkwT9+4kyzPh6+P0jBmvQcQcw/710Fk9H+sz9q+ZQbfpqmP/cngdVe3ZQ/qb9Jfg6ZdT9W28Rp9knNP1HRy1wvCsQ/84Z6uG3WwT8/gU0DlU67Pwu7tEZG7s0/W9l5HClvvD9c+JC5l/O0P7cuUK0M8Jo/4lbi4UJHwT9tuCOFNJfCP96BH+gF28Y/vRWRLLNmvj+2Y+JMgKy4P4lCOCuY9sA/unR4J7b/zz/rQgD7JwykP9KVLmxl1MY/lFCVP4Vwfj/SlS5sZdS2P49cCT8pfLg/vKhyuAeWvT/2MWo9pGy1PzJBfUVQxZ0/gyqin8uiyT/bfX08f3aqP8fk2QEQiqA/XfmQUZMDwz+PjrfY3NbEP8LrWciLxco/rNXmLrQfwD8dlz4tru3CP8Kd/vTZ4MU/pCfkMSh3zz8e8vk4/IO8PxSx5HTAd84/xrM1HN4/wD/y4SIvdbq5P+Wp13J1uqk/CXcJLBY3wz+jZfejR/7FPwNfKV6oBc8/iMsLiw+ivT8OxbGURIjCP+RNNDnhKsQ/SlMMSV57yT9fIBBf7uK/P9JjiQYJALM/+nFZxA4Avz/LdZ6HftW4P69A4SulEcM/oGD1IhG9oT9jHgE5f9WYP2O0zcpmDcw/bPlilm8XxD/AQtHLNDLCP/nAxQWKML0/F3+hxgmMzD/xmgt8wk21P0Esg2GDkKk/zSKjRs5Eiz8=\",\"dtype\":\"float64\",\"shape\":[82]}},\"selected\":{\"id\":\"1054\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"1053\",\"type\":\"UnionRenderers\"}},\"id\":\"1003\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"fill_color\":{\"field\":\"color\"},\"line_color\":{\"field\":\"color\"},\"size\":{\"units\":\"screen\",\"value\":20},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1034\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"1009\",\"type\":\"LinearScale\"},{\"attributes\":{\"label\":{\"field\":\"legend\"},\"renderers\":[{\"id\":\"1036\",\"type\":\"GlyphRenderer\"}]},\"id\":\"1046\",\"type\":\"LegendItem\"},{\"attributes\":{\"callback\":null},\"id\":\"1005\",\"type\":\"DataRange1d\"}],\"root_ids\":[\"1004\"]},\"title\":\"Bokeh Application\",\"version\":\"1.1.0\"}}';\n", - " var render_items = [{\"docid\":\"db6f539a-e1f9-4f05-ac05-0cd33b61031e\",\"roots\":{\"1004\":\"cb182e77-cd29-4c09-971b-815771c29398\"}}];\n", - " root.Bokeh.embed.embed_items(docs_json, render_items);\n", - " \n", - " }\n", - " if (root.Bokeh !== undefined) {\n", - " embed_document(root);\n", - " } else {\n", - " var attempts = 0;\n", - " var timer = setInterval(function(root) {\n", - " if (root.Bokeh !== undefined) {\n", - " embed_document(root);\n", - " clearInterval(timer);\n", - " }\n", - " attempts++;\n", - " if (attempts > 100) {\n", - " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", - " clearInterval(timer);\n", - " }\n", - " }, 10, root)\n", - " }\n", - " })(window);\n", - " });\n", - " };\n", - " if (document.readyState != \"loading\") fn();\n", - " else document.addEventListener(\"DOMContentLoaded\", fn);\n", - " })();\n", - "</script>\n", - "</head>\n", - "<body>\n", - "<br>\n", - "<br>\n", - " \n", - "<div class=\"bk-root\" id=\"cb182e77-cd29-4c09-971b-815771c29398\" data-root-id=\"1004\"></div>\n", - " <table >\n", - " <tr>\n", - " <td align=\"center\">\n", - " <table id=\"jsmol_table\">\n", - " <tr>\n", - " <th>Chemical Formula</th>\n", - " <th>Structure Type</th>\n", - " </tr>\n", - " <tr>\n", - " <td> <div id=\"chemical_formula0\"> </div> </td> \n", - " <td> <div id=\"structure_type0\"> </td> \n", - " </tr>\n", - " <tr>\n", - " <td colspan=2 class=\"none\"> \n", - " <div id=\"appdiv0\"></div>\n", - " </td> \n", - " </tr>\n", - " </table>\n", - " </td>\n", - "\n", - "\n", - " <td align=\"center\">\n", - " <table id=\"jsmol_table\">\n", - " <tr>\n", - " <th>Chemical Formula</th>\n", - " <th>Structure Type</th>\n", - " </tr>\n", - " <tr>\n", - " <td> <div id=\"chemical_formula1\"> </div> </td> \n", - " <td> <div id=\"structure_type1\"> </td> \n", - " </tr>\n", - " <tr>\n", - " <td colspan=2 class=\"none\"> \n", - " <div id=\"appdiv1\"></div>\n", - " </td> \n", - " </tr>\n", - " </table>\n", - " </td>\n", - " </table>\n", - " </body>\n", - " </html>\n", - " " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# get 2d solution\n", - "P_predict = sisso.predict(D, dim=2)\n", - "D_selcted = df_D.values[:, sisso.l0_selected_indices[1]]\n", - "features = df_D.columns[sisso.l0_selected_indices[1]]\n", - "\n", - "# plot 2D map \n", - "show_map(df, D_selcted, P_predict, features, prefix=tmpdir)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "pycharm": {} - }, - "source": [ - "# Predicting new materials (extrapolation)\n", - "<div style=\"list-style:disc; margin: 2px;padding: 10px;border: 0px;border:8px double green; font-size:16px;padding-left: 32px;padding-right: 22px; width:89%\">\n", - "<li>Perform a leave-one-out cross-validation (LOOCV) using SISSO.</li>\n", - "<li>Analyze the prediction accuracy and how often the same descriptor is selected.</li>\n", - "</div>\n", - "\n", - "We have seen that we can fit the energy differences of materials accurately. But what about predicting the energy difference of a 'new' material (which was not included when determining the model)? We test the prediction performance via LOOCV. In a LOOCV for each material the following procedure is performed: the selected material is excluded, the model is built on the remaining materials and the model accurcy is tested on the excluded material. This means that we need to run SISSO function 82 times. <br>\n", - "Get the data in the next cell and run the LOOCV one cell after. Note that running the LOOCV could take up to ten minutes. Use the remaining two cells of this chapter to analyse the results.<br>\n", - "How is the prediction error compared to the fitting error? How often is the same descriptor selected? Are there materials which had a outlying high/low error?" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": { - "pycharm": {} - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Selected operations:\n", - " ['+', '|-|', 'exp', '^2', '/']\n", - "Number of total features generated: 3391\n" - ] - } - ], - "source": [ - "# get the data\n", - "selected_feature_list = ['IP', 'EA', 'r_s', 'r_p','r_d']\n", - "allowed_operations = ['+','|-|','exp', '^2', '/']\n", - "\n", - "P, df_D = get_data(selected_feature_list, allowed_operations)\n", - "features_list = df_D.columns.tolist()\n", - "chemical_formulas = df_D.index.tolist()\n", - "D = df_D.values" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": { - "pycharm": {} - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " 1) Leave out AgBr: Ediff_ref = -0.030 eV/atom\n", - " RMSE Model\n", - "1D:\t0.138036\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.332\n", - "2D:\t0.116855\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.691 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.265\n", - "3D:\t0.084763\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.242 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.391 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.118\n", - "Ediff_predicted(1D) = -0.009 eV/atom\n", - "Ediff_predicted(2D) = 0.006 eV/atom\n", - "Ediff_predicted(3D) = -0.000 eV/atom\n", - "-----\n", - " 2) Leave out AgCl: Ediff_ref = -0.043 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137927\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.332\n", - "2D:\t0.116617\t+ 0.116 |IP(B)-EA(B)|/r_p(A)^2 - 6.711 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.264\n", - "3D:\t0.084761\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.242 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.388 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.118\n", - "Ediff_predicted(1D) = 0.011 eV/atom\n", - "Ediff_predicted(2D) = 0.034 eV/atom\n", - "Ediff_predicted(3D) = -0.012 eV/atom\n", - "-----\n", - " 3) Leave out AgF: Ediff_ref = -0.154 eV/atom\n", - " RMSE Model\n", - "1D:\t0.135085\t- 0.101 (IP(B)+EA(A))/r_p(A)^2 - 0.378\n", - "2D:\t0.099858\t+ 0.114 |IP(B)-EA(B)|/r_p(A)^2 - 1.434 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.150\n", - "3D:\t0.075106\t+ 0.109 |IP(B)-EA(B)|/r_p(A)^2 - 1.711 |r_s(A)-r_p(B)|/exp(r_s(A)) - 6.091 |r_s(B)-r_p(B)|/(r_p(B)+r_d(A))^2 - 0.010\n", - "Ediff_predicted(1D) = 0.223 eV/atom\n", - "Ediff_predicted(2D) = -0.024 eV/atom\n", - "Ediff_predicted(3D) = -0.000 eV/atom\n", - "-----\n", - " 4) Leave out AgI: Ediff_ref = 0.037 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137849\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.334\n", - "2D:\t0.116726\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.618 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.267\n", - "3D:\t0.084826\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.241 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.390 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.119\n", - "Ediff_predicted(1D) = -0.032 eV/atom\n", - "Ediff_predicted(2D) = -0.025 eV/atom\n", - "Ediff_predicted(3D) = 0.033 eV/atom\n", - "-----\n", - " 5) Leave out AlAs: Ediff_ref = 0.213 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137448\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.334\n", - "2D:\t0.116822\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.633 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.267\n", - "3D:\t0.078776\t+ 0.109 |IP(B)-EA(B)|/r_p(A)^2 - 10.612 |r_s(B)-r_p(B)|/exp(r_p(B)+r_d(A)) - 1.652 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.040\n", - "Ediff_predicted(1D) = 0.096 eV/atom\n", - "Ediff_predicted(2D) = 0.169 eV/atom\n", - "Ediff_predicted(3D) = 0.250 eV/atom\n", - "-----\n", - " 6) Leave out AlN: Ediff_ref = 0.073 eV/atom\n", - " RMSE Model\n", - "1D:\t0.136161\t+ 0.340 |IP(B)-EA(B)|/exp(r_p(A)^2) - 0.190\n", - "2D:\t0.103664\t+ 0.121 |IP(B)-EA(B)|/r_p(A)^2 - 0.618 |r_s(A)-r_p(B)|/r_s(A)^2 - 0.184\n", - "3D:\t0.076815\t+ 0.370 |IP(B)-EA(B)|/exp(r_p(A)^2) - 7.007 |r_s(A)-r_p(B)|/exp(r_s(A)+r_p(A)) - 7.437 |r_s(B)-r_p(B)|/(r_p(B)+r_d(A))^2 + 0.022\n", - "Ediff_predicted(1D) = 0.386 eV/atom\n", - "Ediff_predicted(2D) = 0.250 eV/atom\n", - "Ediff_predicted(3D) = 0.271 eV/atom\n", - "-----\n", - " 7) Leave out AlP: Ediff_ref = 0.219 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137532\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.334\n", - "2D:\t0.116832\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.644 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.266\n", - "3D:\t0.084690\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.241 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.401 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.117\n", - "Ediff_predicted(1D) = 0.110 eV/atom\n", - "Ediff_predicted(2D) = 0.177 eV/atom\n", - "Ediff_predicted(3D) = 0.263 eV/atom\n", - "-----\n", - " 8) Leave out AlSb: Ediff_ref = 0.157 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137751\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.334\n", - "2D:\t0.116751\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.639 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.267\n", - "3D:\t0.078876\t+ 0.109 |IP(B)-EA(B)|/r_p(A)^2 - 10.641 |r_s(B)-r_p(B)|/exp(r_p(B)+r_d(A)) - 1.641 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.042\n", - "Ediff_predicted(1D) = 0.074 eV/atom\n", - "Ediff_predicted(2D) = 0.099 eV/atom\n", - "Ediff_predicted(3D) = 0.153 eV/atom\n", - "-----\n", - " 9) Leave out AsGa: Ediff_ref = 0.274 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137217\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.334\n", - "2D:\t0.116721\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.618 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.267\n", - "3D:\t0.078802\t+ 0.109 |IP(B)-EA(B)|/r_p(A)^2 - 10.635 |r_s(B)-r_p(B)|/exp(r_p(B)+r_d(A)) - 1.650 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.040\n", - "Ediff_predicted(1D) = 0.137 eV/atom\n", - "Ediff_predicted(2D) = 0.212 eV/atom\n", - "Ediff_predicted(3D) = 0.306 eV/atom\n", - "-----\n", - "10) Leave out BAs: Ediff_ref = 0.875 eV/atom\n", - " RMSE Model\n", - "1D:\t0.136271\t- 0.056 (IP(A)+IP(B))/r_p(A)^2 - 0.336\n", - "2D:\t0.116899\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.657 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.266\n", - "3D:\t0.084623\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.241 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.391 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.119\n", - "Ediff_predicted(1D) = 1.082 eV/atom\n", - "Ediff_predicted(2D) = 0.896 eV/atom\n", - "Ediff_predicted(3D) = 0.929 eV/atom\n", - "-----\n", - "11) Leave out BN: Ediff_ref = 1.712 eV/atom\n", - " RMSE Model\n", - "1D:\t0.133112\t- 0.211 (IP(A)+IP(B))/(r_s(A)+r_p(A))^2 - 0.408\n", - "2D:\t0.099900\t+ 0.113 |IP(B)-EA(B)|/r_p(A)^2 - 1.500 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.138\n", - "3D:\t0.075053\t+ 0.106 |IP(B)-EA(B)|/r_p(A)^2 - 1.790 |r_s(A)-r_p(B)|/exp(r_s(A)) - 6.104 |r_s(B)-r_p(B)|/(r_p(B)+r_d(A))^2 + 0.005\n", - "Ediff_predicted(1D) = 1.304 eV/atom\n", - "Ediff_predicted(2D) = 1.576 eV/atom\n", - "Ediff_predicted(3D) = 1.545 eV/atom\n", - "-----\n", - "12) Leave out BP: Ediff_ref = 1.019 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137692\t- 0.056 (IP(A)+IP(B))/r_p(A)^2 - 0.334\n", - "2D:\t0.116883\t+ 0.116 |IP(B)-EA(B)|/r_p(A)^2 - 6.671 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.265\n", - "3D:\t0.084804\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.241 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.392 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.119\n", - "Ediff_predicted(1D) = 1.113 eV/atom\n", - "Ediff_predicted(2D) = 0.991 eV/atom\n", - "Ediff_predicted(3D) = 1.037 eV/atom\n", - "-----\n", - "13) Leave out BSb: Ediff_ref = 0.581 eV/atom\n", - " RMSE Model\n", - "1D:\t0.129244\t- 0.057 (IP(A)+IP(B))/r_p(A)^2 - 0.339\n", - "2D:\t0.112986\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.298 (r_s(B)+r_d(A))/exp(r_d(A)^2) - 0.295\n", - "3D:\t0.084094\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.241 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.368 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.123\n", - "Ediff_predicted(1D) = 1.033 eV/atom\n", - "Ediff_predicted(2D) = 1.020 eV/atom\n", - "Ediff_predicted(3D) = 0.684 eV/atom\n", - "-----\n", - "14) Leave out BaO: Ediff_ref = -0.093 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137869\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.334\n", - "2D:\t0.115469\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.990 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.265\n", - "3D:\t0.082953\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.246 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.422 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.117\n", - "Ediff_predicted(1D) = -0.158 eV/atom\n", - "Ediff_predicted(2D) = -0.263 eV/atom\n", - "Ediff_predicted(3D) = -0.255 eV/atom\n", - "-----\n", - "15) Leave out BaS: Ediff_ref = -0.320 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137337\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.330\n", - "2D:\t0.116821\t+ 0.116 |IP(B)-EA(B)|/r_p(A)^2 - 6.615 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.265\n", - "3D:\t0.084644\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.239 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.389 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.118\n", - "Ediff_predicted(1D) = -0.192 eV/atom\n", - "Ediff_predicted(2D) = -0.275 eV/atom\n", - "Ediff_predicted(3D) = -0.269 eV/atom\n", - "-----\n", - "16) Leave out BaSe: Ediff_ref = -0.343 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137129\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.329\n", - "2D:\t0.116682\t+ 0.116 |IP(B)-EA(B)|/r_p(A)^2 - 6.599 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.265\n", - "3D:\t0.084425\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.237 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.390 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.118\n", - "Ediff_predicted(1D) = -0.198 eV/atom\n", - "Ediff_predicted(2D) = -0.275 eV/atom\n", - "Ediff_predicted(3D) = -0.268 eV/atom\n", - "-----\n", - "17) Leave out BaTe: Ediff_ref = -0.375 eV/atom\n", - " RMSE Model\n", - "1D:\t0.136799\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.329\n", - "2D:\t0.098896\t+ 0.114 |IP(B)-EA(B)|/r_p(A)^2 - 1.489 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.140\n", - "3D:\t0.076343\t+ 0.108 |IP(B)-EA(B)|/r_p(A)^2 - 1.762 |r_s(A)-r_p(B)|/exp(r_s(A)) - 5.892 |r_s(B)-r_p(B)|/(r_p(B)+r_d(A))^2 - 0.006\n", - "Ediff_predicted(1D) = -0.206 eV/atom\n", - "Ediff_predicted(2D) = -0.197 eV/atom\n", - "Ediff_predicted(3D) = -0.290 eV/atom\n", - "-----\n", - "18) Leave out BeO: Ediff_ref = 0.692 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137952\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.332\n", - "2D:\t0.099938\t+ 0.114 |IP(B)-EA(B)|/r_p(A)^2 - 1.522 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.139\n", - "3D:\t0.075878\t+ 0.108 |IP(B)-EA(B)|/r_p(A)^2 - 1.804 |r_s(A)-r_p(B)|/exp(r_s(A)) - 4.953 |r_s(B)-r_p(B)|/(r_s(B)+r_d(A))^2 - 0.006\n", - "Ediff_predicted(1D) = 0.643 eV/atom\n", - "Ediff_predicted(2D) = 0.566 eV/atom\n", - "Ediff_predicted(3D) = 0.573 eV/atom\n", - "-----\n", - "19) Leave out BeS: Ediff_ref = 0.506 eV/atom\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - " RMSE Model\n", - "1D:\t0.137994\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.333\n", - "2D:\t0.116530\t+ 0.116 |IP(B)-EA(B)|/r_p(A)^2 - 6.620 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.267\n", - "3D:\t0.084632\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.240 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.385 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.120\n", - "Ediff_predicted(1D) = 0.468 eV/atom\n", - "Ediff_predicted(2D) = 0.419 eV/atom\n", - "Ediff_predicted(3D) = 0.454 eV/atom\n", - "-----\n", - "20) Leave out BeSe: Ediff_ref = 0.495 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137905\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.333\n", - "2D:\t0.116107\t+ 0.116 |IP(B)-EA(B)|/r_p(A)^2 - 6.579 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.267\n", - "3D:\t0.084638\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.240 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.380 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.120\n", - "Ediff_predicted(1D) = 0.436 eV/atom\n", - "Ediff_predicted(2D) = 0.370 eV/atom\n", - "Ediff_predicted(3D) = 0.443 eV/atom\n", - "-----\n", - "21) Leave out BeTe: Ediff_ref = 0.469 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137820\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.333\n", - "2D:\t0.115395\t+ 0.116 |IP(B)-EA(B)|/r_p(A)^2 - 6.525 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.269\n", - "3D:\t0.084490\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.240 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.372 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.122\n", - "Ediff_predicted(1D) = 0.395 eV/atom\n", - "Ediff_predicted(2D) = 0.297 eV/atom\n", - "Ediff_predicted(3D) = 0.399 eV/atom\n", - "-----\n", - "22) Leave out C2: Ediff_ref = 2.629 eV/atom\n", - " RMSE Model\n", - "1D:\t0.119515\t- 0.254 IP(B)/exp(r_p(A)^2) - 0.178\n", - "2D:\t0.098042\t+ 0.286 |IP(B)-EA(B)|/exp(r_p(A)^2) - 0.657 r_d(A)/exp(r_d(A)^2) - 0.115\n", - "3D:\t0.071567\t+ 0.304 |IP(B)-EA(B)|/exp(r_p(A)^2) - 11.279 |r_s(B)-r_p(B)|/exp(r_s(B)+r_d(A)) - 0.515 |r_s(A)-r_p(B)|/r_s(A)^2 + 0.050\n", - "Ediff_predicted(1D) = 1.676 eV/atom\n", - "Ediff_predicted(2D) = 1.732 eV/atom\n", - "Ediff_predicted(3D) = 2.067 eV/atom\n", - "-----\n", - "23) Leave out CaO: Ediff_ref = -0.265 eV/atom\n", - " RMSE Model\n", - "1D:\t0.136780\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.329\n", - "2D:\t0.115213\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 7.722 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.257\n", - "3D:\t0.078099\t+ 0.109 |IP(B)-EA(B)|/r_p(A)^2 - 9.046 |r_s(B)-r_p(B)|/exp(r_s(B)+r_d(A)) - 1.668 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.039\n", - "Ediff_predicted(1D) = -0.095 eV/atom\n", - "Ediff_predicted(2D) = -0.478 eV/atom\n", - "Ediff_predicted(3D) = -0.235 eV/atom\n", - "-----\n", - "24) Leave out CaS: Ediff_ref = -0.369 eV/atom\n", - " RMSE Model\n", - "1D:\t0.135764\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.328\n", - "2D:\t0.098737\t+ 0.114 |IP(B)-EA(B)|/r_p(A)^2 - 1.468 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.143\n", - "3D:\t0.076877\t+ 0.109 |IP(B)-EA(B)|/r_p(A)^2 - 1.770 |r_s(A)-r_p(B)|/exp(r_s(A)) - 6.092 |r_s(B)-r_p(B)|/(r_p(B)+r_d(A))^2 - 0.004\n", - "Ediff_predicted(1D) = -0.142 eV/atom\n", - "Ediff_predicted(2D) = -0.183 eV/atom\n", - "Ediff_predicted(3D) = -0.387 eV/atom\n", - "-----\n", - "25) Leave out CaSe: Ediff_ref = -0.361 eV/atom\n", - " RMSE Model\n", - "1D:\t0.136102\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.328\n", - "2D:\t0.098713\t+ 0.114 |IP(B)-EA(B)|/r_p(A)^2 - 1.477 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.142\n", - "3D:\t0.076410\t+ 0.109 |IP(B)-EA(B)|/r_p(A)^2 - 1.788 |r_s(A)-r_p(B)|/exp(r_s(A)) - 5.297 |r_s(B)-r_p(B)|/(r_s(B)+r_d(A))^2 - 0.005\n", - "Ediff_predicted(1D) = -0.151 eV/atom\n", - "Ediff_predicted(2D) = -0.174 eV/atom\n", - "Ediff_predicted(3D) = -0.451 eV/atom\n", - "-----\n", - "26) Leave out CaTe: Ediff_ref = -0.350 eV/atom\n", - " RMSE Model\n", - "1D:\t0.136487\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.329\n", - "2D:\t0.098291\t+ 0.114 |IP(B)-EA(B)|/r_p(A)^2 - 1.496 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.139\n", - "3D:\t0.076193\t+ 0.109 |IP(B)-EA(B)|/r_p(A)^2 - 1.785 |r_s(A)-r_p(B)|/exp(r_s(A)) - 5.416 |r_s(B)-r_p(B)|/(r_s(B)+r_d(A))^2 - 0.003\n", - "Ediff_predicted(1D) = -0.162 eV/atom\n", - "Ediff_predicted(2D) = -0.146 eV/atom\n", - "Ediff_predicted(3D) = -0.461 eV/atom\n", - "-----\n", - "27) Leave out CdO: Ediff_ref = -0.084 eV/atom\n", - " RMSE Model\n", - "1D:\t0.135465\t- 0.219 (IP(A)+IP(B))/(r_s(A)+r_p(A))^2 - 0.419\n", - "2D:\t0.104770\t+ 0.121 |IP(B)-EA(B)|/r_p(A)^2 - 0.623 |r_s(A)-r_p(B)|/r_s(A)^2 - 0.183\n", - "3D:\t0.083261\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 0.696 |r_s(A)-r_p(B)|/r_s(A)^2 - 10.800 |r_s(B)-r_p(B)|/exp(r_p(B)+r_d(A)) - 0.081\n", - "Ediff_predicted(1D) = 0.228 eV/atom\n", - "Ediff_predicted(2D) = 0.025 eV/atom\n", - "Ediff_predicted(3D) = 0.054 eV/atom\n", - "-----\n", - "28) Leave out CdS: Ediff_ref = 0.073 eV/atom\n", - " RMSE Model\n", - "1D:\t0.138046\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.333\n", - "2D:\t0.116883\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.653 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.266\n", - "3D:\t0.084806\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.241 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.390 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.119\n", - "Ediff_predicted(1D) = 0.057 eV/atom\n", - "Ediff_predicted(2D) = 0.045 eV/atom\n", - "Ediff_predicted(3D) = 0.056 eV/atom\n", - "-----\n", - "29) Leave out CdSe: Ediff_ref = 0.084 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137978\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.333\n", - "2D:\t0.116740\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.629 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.267\n", - "3D:\t0.084811\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.241 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.389 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.119\n", - "Ediff_predicted(1D) = 0.041 eV/atom\n", - "Ediff_predicted(2D) = 0.024 eV/atom\n", - "Ediff_predicted(3D) = 0.069 eV/atom\n", - "-----\n", - "30) Leave out CdTe: Ediff_ref = 0.115 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137670\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.334\n", - "2D:\t0.116256\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.569 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.269\n", - "3D:\t0.084825\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.241 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.389 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.119\n", - "Ediff_predicted(1D) = 0.021 eV/atom\n", - "Ediff_predicted(2D) = 0.001 eV/atom\n", - "Ediff_predicted(3D) = 0.109 eV/atom\n", - "-----\n", - "31) Leave out CsBr: Ediff_ref = -0.156 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137730\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.334\n", - "2D:\t0.116671\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.655 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.267\n", - "3D:\t0.084512\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.240 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.392 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.120\n", - "Ediff_predicted(1D) = -0.242 eV/atom\n", - "Ediff_predicted(2D) = -0.225 eV/atom\n", - "Ediff_predicted(3D) = -0.222 eV/atom\n", - "-----\n", - "32) Leave out CsCl: Ediff_ref = -0.150 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137741\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.334\n", - "2D:\t0.116684\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.660 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.267\n", - "3D:\t0.084432\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.240 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.395 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.120\n", - "Ediff_predicted(1D) = -0.235 eV/atom\n", - "Ediff_predicted(2D) = -0.218 eV/atom\n", - "Ediff_predicted(3D) = -0.225 eV/atom\n", - "-----\n", - "33) Leave out CsF: Ediff_ref = -0.108 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137647\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.335\n", - "2D:\t0.099798\t+ 0.114 |IP(B)-EA(B)|/r_p(A)^2 - 1.501 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.145\n", - "3D:\t0.076203\t+ 0.109 |IP(B)-EA(B)|/r_p(A)^2 - 1.776 |r_s(A)-r_p(B)|/exp(r_s(A)) - 5.972 |r_s(B)-r_p(B)|/(r_p(B)+r_d(A))^2 - 0.007\n", - "Ediff_predicted(1D) = -0.205 eV/atom\n", - "Ediff_predicted(2D) = -0.239 eV/atom\n", - "Ediff_predicted(3D) = -0.202 eV/atom\n", - "-----\n", - "34) Leave out CsI: Ediff_ref = -0.162 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137721\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.334\n", - "2D:\t0.116674\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.648 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.268\n", - "3D:\t0.084641\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.240 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.389 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.120\n", - "Ediff_predicted(1D) = -0.250 eV/atom\n", - "Ediff_predicted(2D) = -0.232 eV/atom\n", - "Ediff_predicted(3D) = -0.213 eV/atom\n", - "-----\n", - "35) Leave out CuBr: Ediff_ref = 0.152 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137813\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.333\n", - "2D:\t0.116576\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.622 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.267\n", - "3D:\t0.084614\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.240 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.387 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.120\n", - "Ediff_predicted(1D) = 0.078 eV/atom\n", - "Ediff_predicted(2D) = 0.071 eV/atom\n", - "Ediff_predicted(3D) = 0.098 eV/atom\n", - "-----\n", - "36) Leave out CuCl: Ediff_ref = 0.156 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137931\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.333\n", - "2D:\t0.116770\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.646 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.267\n", - "3D:\t0.084492\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.239 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.393 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.119\n", - "Ediff_predicted(1D) = 0.103 eV/atom\n", - "Ediff_predicted(2D) = 0.102 eV/atom\n", - "Ediff_predicted(3D) = 0.088 eV/atom\n", - "-----\n", - "37) Leave out CuF: Ediff_ref = -0.017 eV/atom\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - " RMSE Model\n", - "1D:\t0.134586\t- 0.101 (IP(B)+EA(A))/r_p(A)^2 - 0.380\n", - "2D:\t0.099977\t+ 0.115 |IP(B)-EA(B)|/r_p(A)^2 - 1.437 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.150\n", - "3D:\t0.075550\t+ 0.109 |IP(B)-EA(B)|/r_p(A)^2 - 1.717 |r_s(A)-r_p(B)|/exp(r_s(A)) - 6.057 |r_s(B)-r_p(B)|/(r_p(B)+r_d(A))^2 - 0.010\n", - "Ediff_predicted(1D) = 0.375 eV/atom\n", - "Ediff_predicted(2D) = 0.105 eV/atom\n", - "Ediff_predicted(3D) = 0.116 eV/atom\n", - "-----\n", - "38) Leave out CuI: Ediff_ref = 0.205 eV/atom\n", - " RMSE Model\n", - "1D:\t0.136996\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.335\n", - "2D:\t0.115484\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.534 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.270\n", - "3D:\t0.084429\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.240 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.373 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.122\n", - "Ediff_predicted(1D) = 0.050 eV/atom\n", - "Ediff_predicted(2D) = 0.038 eV/atom\n", - "Ediff_predicted(3D) = 0.129 eV/atom\n", - "-----\n", - "39) Leave out GaN: Ediff_ref = 0.433 eV/atom\n", - " RMSE Model\n", - "1D:\t0.136889\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.334\n", - "2D:\t0.100367\t+ 0.114 |IP(B)-EA(B)|/r_p(A)^2 - 1.498 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.143\n", - "3D:\t0.076603\t+ 0.108 |IP(B)-EA(B)|/r_p(A)^2 - 1.775 |r_s(A)-r_p(B)|/exp(r_s(A)) - 6.004 |r_s(B)-r_p(B)|/(r_p(B)+r_d(A))^2 - 0.004\n", - "Ediff_predicted(1D) = 0.271 eV/atom\n", - "Ediff_predicted(2D) = 0.345 eV/atom\n", - "Ediff_predicted(3D) = 0.372 eV/atom\n", - "-----\n", - "40) Leave out GaP: Ediff_ref = 0.349 eV/atom\n", - " RMSE Model\n", - "1D:\t0.136321\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.335\n", - "2D:\t0.116354\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.576 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.268\n", - "3D:\t0.078854\t+ 0.109 |IP(B)-EA(B)|/r_p(A)^2 - 10.646 |r_s(B)-r_p(B)|/exp(r_p(B)+r_d(A)) - 1.647 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.041\n", - "Ediff_predicted(1D) = 0.151 eV/atom\n", - "Ediff_predicted(2D) = 0.244 eV/atom\n", - "Ediff_predicted(3D) = 0.366 eV/atom\n", - "-----\n", - "41) Leave out GaSb: Ediff_ref = 0.155 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137980\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.333\n", - "2D:\t0.116864\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.658 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.266\n", - "3D:\t0.084814\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.241 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.392 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.118\n", - "Ediff_predicted(1D) = 0.113 eV/atom\n", - "Ediff_predicted(2D) = 0.121 eV/atom\n", - "Ediff_predicted(3D) = 0.168 eV/atom\n", - "-----\n", - "42) Leave out Ge2: Ediff_ref = 0.201 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137706\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.332\n", - "2D:\t0.116730\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.685 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.265\n", - "3D:\t0.084175\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.243 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.397 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.117\n", - "Ediff_predicted(1D) = 0.290 eV/atom\n", - "Ediff_predicted(2D) = 0.262 eV/atom\n", - "Ediff_predicted(3D) = 0.296 eV/atom\n", - "-----\n", - "43) Leave out GeC: Ediff_ref = 0.811 eV/atom\n", - " RMSE Model\n", - "1D:\t0.131019\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.334\n", - "2D:\t0.095780\t+ 0.113 |IP(B)-EA(B)|/r_p(A)^2 - 1.484 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.144\n", - "3D:\t0.072546\t+ 0.108 |IP(B)-EA(B)|/r_p(A)^2 - 1.758 |r_s(A)-r_p(B)|/exp(r_s(A)) - 4.783 |r_s(B)-r_p(B)|/(r_s(B)+r_d(A))^2 - 0.016\n", - "Ediff_predicted(1D) = 0.416 eV/atom\n", - "Ediff_predicted(2D) = 0.524 eV/atom\n", - "Ediff_predicted(3D) = 0.577 eV/atom\n", - "-----\n", - "44) Leave out GeSi: Ediff_ref = 0.263 eV/atom\n", - " RMSE Model\n", - "1D:\t0.138006\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.332\n", - "2D:\t0.116908\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.673 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.265\n", - "3D:\t0.084558\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.242 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.397 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.117\n", - "Ediff_predicted(1D) = 0.297 eV/atom\n", - "Ediff_predicted(2D) = 0.279 eV/atom\n", - "Ediff_predicted(3D) = 0.325 eV/atom\n", - "-----\n", - "45) Leave out InAs: Ediff_ref = 0.134 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137573\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.334\n", - "2D:\t0.116898\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.648 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.266\n", - "3D:\t0.084396\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.243 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.411 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.114\n", - "Ediff_predicted(1D) = 0.029 eV/atom\n", - "Ediff_predicted(2D) = 0.112 eV/atom\n", - "Ediff_predicted(3D) = 0.212 eV/atom\n", - "-----\n", - "46) Leave out InN: Ediff_ref = 0.154 eV/atom\n", - " RMSE Model\n", - "1D:\t0.138044\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.333\n", - "2D:\t0.115766\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.721 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.264\n", - "3D:\t0.084756\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.242 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.383 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.119\n", - "Ediff_predicted(1D) = 0.137 eV/atom\n", - "Ediff_predicted(2D) = 0.302 eV/atom\n", - "Ediff_predicted(3D) = 0.186 eV/atom\n", - "-----\n", - "47) Leave out InP: Ediff_ref = 0.179 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137211\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.334\n", - "2D:\t0.116788\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.626 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.267\n", - "3D:\t0.084800\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.242 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.395 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.118\n", - "Ediff_predicted(1D) = 0.041 eV/atom\n", - "Ediff_predicted(2D) = 0.128 eV/atom\n", - "Ediff_predicted(3D) = 0.199 eV/atom\n", - "-----\n", - "48) Leave out InSb: Ediff_ref = 0.078 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137854\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.334\n", - "2D:\t0.116919\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.661 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.266\n", - "3D:\t0.084251\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.243 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.414 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.114\n", - "Ediff_predicted(1D) = 0.010 eV/atom\n", - "Ediff_predicted(2D) = 0.071 eV/atom\n", - "Ediff_predicted(3D) = 0.169 eV/atom\n", - "-----\n", - "49) Leave out KBr: Ediff_ref = -0.166 eV/atom\n", - " RMSE Model\n", - "1D:\t0.138054\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.333\n", - "2D:\t0.116806\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.697 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.266\n", - "3D:\t0.084803\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.241 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.392 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.119\n", - "Ediff_predicted(1D) = -0.174 eV/atom\n", - "Ediff_predicted(2D) = -0.214 eV/atom\n", - "Ediff_predicted(3D) = -0.185 eV/atom\n", - "-----\n", - "50) Leave out KCl: Ediff_ref = -0.164 eV/atom\n", - " RMSE Model\n", - "1D:\t0.138056\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.332\n", - "2D:\t0.116837\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.700 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.266\n", - "3D:\t0.084799\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.241 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.393 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.119\n", - "Ediff_predicted(1D) = -0.162 eV/atom\n", - "Ediff_predicted(2D) = -0.205 eV/atom\n", - "Ediff_predicted(3D) = -0.184 eV/atom\n", - "-----\n", - "51) Leave out KF: Ediff_ref = -0.146 eV/atom\n", - " RMSE Model\n", - "1D:\t0.138001\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.332\n", - "2D:\t0.116920\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.659 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.266\n", - "3D:\t0.084827\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.241 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.391 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.119\n", - "Ediff_predicted(1D) = -0.111 eV/atom\n", - "Ediff_predicted(2D) = -0.140 eV/atom\n", - "Ediff_predicted(3D) = -0.147 eV/atom\n", - "-----\n", - "52) Leave out KI: Ediff_ref = -0.167 eV/atom\n", - " RMSE Model\n", - "1D:\t0.138038\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.333\n", - "2D:\t0.116788\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.687 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.267\n", - "3D:\t0.084820\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.241 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.391 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.119\n", - "Ediff_predicted(1D) = -0.187 eV/atom\n", - "Ediff_predicted(2D) = -0.218 eV/atom\n", - "Ediff_predicted(3D) = -0.177 eV/atom\n", - "-----\n", - "53) Leave out LiBr: Ediff_ref = -0.033 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137936\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.333\n", - "2D:\t0.116885\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.693 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.265\n", - "3D:\t0.084691\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.240 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.394 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.119\n", - "Ediff_predicted(1D) = -0.085 eV/atom\n", - "Ediff_predicted(2D) = -0.006 eV/atom\n", - "Ediff_predicted(3D) = -0.076 eV/atom\n", - "-----\n", - "54) Leave out LiCl: Ediff_ref = -0.038 eV/atom\n", - " RMSE Model\n", - "1D:\t0.138019\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.333\n", - "2D:\t0.116719\t+ 0.116 |IP(B)-EA(B)|/r_p(A)^2 - 6.728 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.264\n", - "3D:\t0.084703\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.240 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.397 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.119\n", - "Ediff_predicted(1D) = -0.067 eV/atom\n", - "Ediff_predicted(2D) = 0.024 eV/atom\n", - "Ediff_predicted(3D) = -0.080 eV/atom\n", - "-----\n", - "55) Leave out LiF: Ediff_ref = -0.059 eV/atom\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - " RMSE Model\n", - "1D:\t0.137844\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.331\n", - "2D:\t0.113940\t+ 0.116 |IP(B)-EA(B)|/r_p(A)^2 - 6.889 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.260\n", - "3D:\t0.084791\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.242 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.383 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.119\n", - "Ediff_predicted(1D) = 0.010 eV/atom\n", - "Ediff_predicted(2D) = 0.179 eV/atom\n", - "Ediff_predicted(3D) = -0.037 eV/atom\n", - "-----\n", - "56) Leave out LiI: Ediff_ref = -0.022 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137752\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.334\n", - "2D:\t0.116903\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.648 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.266\n", - "3D:\t0.084732\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.240 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.389 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.120\n", - "Ediff_predicted(1D) = -0.105 eV/atom\n", - "Ediff_predicted(2D) = -0.041 eV/atom\n", - "Ediff_predicted(3D) = -0.058 eV/atom\n", - "-----\n", - "57) Leave out MgO: Ediff_ref = -0.232 eV/atom\n", - " RMSE Model\n", - "1D:\t0.134610\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.329\n", - "2D:\t0.109662\t+ 0.116 |IP(B)-EA(B)|/r_p(A)^2 - 6.829 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.259\n", - "3D:\t0.075564\t+ 0.109 |IP(B)-EA(B)|/r_p(A)^2 - 10.905 |r_s(B)-r_p(B)|/exp(r_p(B)+r_d(A)) - 1.578 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.046\n", - "Ediff_predicted(1D) = 0.045 eV/atom\n", - "Ediff_predicted(2D) = 0.135 eV/atom\n", - "Ediff_predicted(3D) = -0.023 eV/atom\n", - "-----\n", - "58) Leave out MgS: Ediff_ref = -0.087 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137906\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.332\n", - "2D:\t0.116486\t+ 0.116 |IP(B)-EA(B)|/r_p(A)^2 - 6.732 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.263\n", - "3D:\t0.084479\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.243 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.390 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.117\n", - "Ediff_predicted(1D) = -0.028 eV/atom\n", - "Ediff_predicted(2D) = 0.005 eV/atom\n", - "Ediff_predicted(3D) = -0.017 eV/atom\n", - "-----\n", - "59) Leave out MgSe: Ediff_ref = -0.055 eV/atom\n", - " RMSE Model\n", - "1D:\t0.138048\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.332\n", - "2D:\t0.116843\t+ 0.116 |IP(B)-EA(B)|/r_p(A)^2 - 6.697 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.265\n", - "3D:\t0.084638\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.243 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.394 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.117\n", - "Ediff_predicted(1D) = -0.042 eV/atom\n", - "Ediff_predicted(2D) = -0.016 eV/atom\n", - "Ediff_predicted(3D) = -0.004 eV/atom\n", - "-----\n", - "60) Leave out MgTe: Ediff_ref = -0.005 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137924\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.333\n", - "2D:\t0.116850\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.634 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.267\n", - "3D:\t0.084713\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.242 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.399 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.117\n", - "Ediff_predicted(1D) = -0.059 eV/atom\n", - "Ediff_predicted(2D) = -0.042 eV/atom\n", - "Ediff_predicted(3D) = 0.036 eV/atom\n", - "-----\n", - "61) Leave out NaBr: Ediff_ref = -0.126 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137892\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.334\n", - "2D:\t0.116912\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.681 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.265\n", - "3D:\t0.084611\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.239 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.395 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.120\n", - "Ediff_predicted(1D) = -0.188 eV/atom\n", - "Ediff_predicted(2D) = -0.112 eV/atom\n", - "Ediff_predicted(3D) = -0.182 eV/atom\n", - "-----\n", - "62) Leave out NaCl: Ediff_ref = -0.133 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137971\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.333\n", - "2D:\t0.116844\t+ 0.116 |IP(B)-EA(B)|/r_p(A)^2 - 6.706 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.264\n", - "3D:\t0.084552\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.239 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.399 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.119\n", - "Ediff_predicted(1D) = -0.177 eV/atom\n", - "Ediff_predicted(2D) = -0.094 eV/atom\n", - "Ediff_predicted(3D) = -0.195 eV/atom\n", - "-----\n", - "63) Leave out NaF: Ediff_ref = -0.146 eV/atom\n", - " RMSE Model\n", - "1D:\t0.138047\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.332\n", - "2D:\t0.115855\t+ 0.116 |IP(B)-EA(B)|/r_p(A)^2 - 6.806 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.262\n", - "3D:\t0.084549\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.239 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.412 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.117\n", - "Ediff_predicted(1D) = -0.131 eV/atom\n", - "Ediff_predicted(2D) = -0.002 eV/atom\n", - "Ediff_predicted(3D) = -0.209 eV/atom\n", - "-----\n", - "64) Leave out NaI: Ediff_ref = -0.115 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137742\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.334\n", - "2D:\t0.116905\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.649 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.266\n", - "3D:\t0.084726\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.240 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.390 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.120\n", - "Ediff_predicted(1D) = -0.199 eV/atom\n", - "Ediff_predicted(2D) = -0.133 eV/atom\n", - "Ediff_predicted(3D) = -0.153 eV/atom\n", - "-----\n", - "65) Leave out RbBr: Ediff_ref = -0.164 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137783\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.334\n", - "2D:\t0.116773\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.651 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.267\n", - "3D:\t0.084422\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.240 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.394 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.120\n", - "Ediff_predicted(1D) = -0.243 eV/atom\n", - "Ediff_predicted(2D) = -0.217 eV/atom\n", - "Ediff_predicted(3D) = -0.239 eV/atom\n", - "-----\n", - "66) Leave out RbCl: Ediff_ref = -0.161 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137807\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.334\n", - "2D:\t0.116794\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.655 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.267\n", - "3D:\t0.084312\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.239 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.398 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.120\n", - "Ediff_predicted(1D) = -0.236 eV/atom\n", - "Ediff_predicted(2D) = -0.210 eV/atom\n", - "Ediff_predicted(3D) = -0.246 eV/atom\n", - "-----\n", - "67) Leave out RbF: Ediff_ref = -0.136 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137839\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.334\n", - "2D:\t0.099667\t+ 0.114 |IP(B)-EA(B)|/r_p(A)^2 - 1.510 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.144\n", - "3D:\t0.075979\t+ 0.109 |IP(B)-EA(B)|/r_p(A)^2 - 1.784 |r_s(A)-r_p(B)|/exp(r_s(A)) - 5.974 |r_s(B)-r_p(B)|/(r_p(B)+r_d(A))^2 - 0.006\n", - "Ediff_predicted(1D) = -0.206 eV/atom\n", - "Ediff_predicted(2D) = -0.275 eV/atom\n", - "Ediff_predicted(3D) = -0.244 eV/atom\n", - "-----\n", - "68) Leave out RbI: Ediff_ref = -0.167 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137753\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.334\n", - "2D:\t0.116758\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.644 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.267\n", - "3D:\t0.084594\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.240 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.390 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.120\n", - "Ediff_predicted(1D) = -0.250 eV/atom\n", - "Ediff_predicted(2D) = -0.224 eV/atom\n", - "Ediff_predicted(3D) = -0.224 eV/atom\n", - "-----\n", - "69) Leave out Si2: Ediff_ref = 0.279 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137896\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.332\n", - "2D:\t0.116916\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.668 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.266\n", - "3D:\t0.084460\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.241 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.400 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.117\n", - "Ediff_predicted(1D) = 0.340 eV/atom\n", - "Ediff_predicted(2D) = 0.290 eV/atom\n", - "Ediff_predicted(3D) = 0.351 eV/atom\n", - "-----\n", - "70) Leave out SiC: Ediff_ref = 0.669 eV/atom\n", - " RMSE Model\n", - "1D:\t0.136280\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.333\n", - "2D:\t0.116073\t+ 0.116 |IP(B)-EA(B)|/r_p(A)^2 - 6.732 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.265\n", - "3D:\t0.083995\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 0.273 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 0.630 |r_s(A)-r_p(B)|/r_s(A)^2 - 0.138\n", - "Ediff_predicted(1D) = 0.468 eV/atom\n", - "Ediff_predicted(2D) = 0.540 eV/atom\n", - "Ediff_predicted(3D) = 0.538 eV/atom\n", - "-----\n", - "71) Leave out Sn2: Ediff_ref = 0.017 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137738\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.331\n", - "2D:\t0.116824\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.671 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.265\n", - "3D:\t0.084230\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.242 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.397 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.116\n", - "Ediff_predicted(1D) = 0.102 eV/atom\n", - "Ediff_predicted(2D) = 0.060 eV/atom\n", - "Ediff_predicted(3D) = 0.108 eV/atom\n", - "-----\n", - "72) Leave out SnC: Ediff_ref = 0.454 eV/atom\n", - " RMSE Model\n", - "1D:\t0.135518\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.335\n", - "2D:\t0.098696\t+ 0.114 |IP(B)-EA(B)|/r_p(A)^2 - 1.499 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.144\n", - "3D:\t0.075498\t+ 0.109 |IP(B)-EA(B)|/r_p(A)^2 - 1.772 |r_s(A)-r_p(B)|/exp(r_s(A)) - 4.861 |r_s(B)-r_p(B)|/(r_s(B)+r_d(A))^2 - 0.014\n", - "Ediff_predicted(1D) = 0.215 eV/atom\n", - "Ediff_predicted(2D) = 0.266 eV/atom\n", - "Ediff_predicted(3D) = 0.319 eV/atom\n", - "-----\n", - "73) Leave out SnGe: Ediff_ref = 0.082 eV/atom\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - " RMSE Model\n", - "1D:\t0.138000\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.332\n", - "2D:\t0.099521\t+ 0.114 |IP(B)-EA(B)|/r_p(A)^2 - 1.520 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.138\n", - "3D:\t0.075882\t+ 0.109 |IP(B)-EA(B)|/r_p(A)^2 - 1.791 |r_s(A)-r_p(B)|/exp(r_s(A)) - 5.965 |r_s(B)-r_p(B)|/(r_p(B)+r_d(A))^2 - 0.001\n", - "Ediff_predicted(1D) = 0.117 eV/atom\n", - "Ediff_predicted(2D) = 0.230 eV/atom\n", - "Ediff_predicted(3D) = 0.196 eV/atom\n", - "-----\n", - "74) Leave out SnSi: Ediff_ref = 0.135 eV/atom\n", - " RMSE Model\n", - "1D:\t0.138049\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.333\n", - "2D:\t0.116895\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.684 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.265\n", - "3D:\t0.083711\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.242 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.426 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.112\n", - "Ediff_predicted(1D) = 0.123 eV/atom\n", - "Ediff_predicted(2D) = 0.158 eV/atom\n", - "Ediff_predicted(3D) = 0.261 eV/atom\n", - "-----\n", - "75) Leave out SrO: Ediff_ref = -0.220 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137775\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.331\n", - "2D:\t0.116846\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.752 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.265\n", - "3D:\t0.084496\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.245 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.407 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.117\n", - "Ediff_predicted(1D) = -0.140 eV/atom\n", - "Ediff_predicted(2D) = -0.260 eV/atom\n", - "Ediff_predicted(3D) = -0.289 eV/atom\n", - "-----\n", - "76) Leave out SrS: Ediff_ref = -0.368 eV/atom\n", - " RMSE Model\n", - "1D:\t0.136449\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.329\n", - "2D:\t0.099449\t+ 0.114 |IP(B)-EA(B)|/r_p(A)^2 - 1.471 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.143\n", - "3D:\t0.076349\t+ 0.109 |IP(B)-EA(B)|/r_p(A)^2 - 1.755 |r_s(A)-r_p(B)|/exp(r_s(A)) - 4.883 |r_s(B)-r_p(B)|/(r_s(B)+r_d(A))^2 - 0.013\n", - "Ediff_predicted(1D) = -0.178 eV/atom\n", - "Ediff_predicted(2D) = -0.217 eV/atom\n", - "Ediff_predicted(3D) = -0.282 eV/atom\n", - "-----\n", - "77) Leave out SrSe: Ediff_ref = -0.375 eV/atom\n", - " RMSE Model\n", - "1D:\t0.136468\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.329\n", - "2D:\t0.099160\t+ 0.114 |IP(B)-EA(B)|/r_p(A)^2 - 1.477 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.142\n", - "3D:\t0.076598\t+ 0.109 |IP(B)-EA(B)|/r_p(A)^2 - 1.758 |r_s(A)-r_p(B)|/exp(r_s(A)) - 5.918 |r_s(B)-r_p(B)|/(r_p(B)+r_d(A))^2 - 0.007\n", - "Ediff_predicted(1D) = -0.185 eV/atom\n", - "Ediff_predicted(2D) = -0.208 eV/atom\n", - "Ediff_predicted(3D) = -0.312 eV/atom\n", - "-----\n", - "78) Leave out SrTe: Ediff_ref = -0.379 eV/atom\n", - " RMSE Model\n", - "1D:\t0.136542\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.329\n", - "2D:\t0.098501\t+ 0.114 |IP(B)-EA(B)|/r_p(A)^2 - 1.491 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.139\n", - "3D:\t0.076443\t+ 0.108 |IP(B)-EA(B)|/r_p(A)^2 - 1.761 |r_s(A)-r_p(B)|/exp(r_s(A)) - 5.870 |r_s(B)-r_p(B)|/(r_p(B)+r_d(A))^2 - 0.007\n", - "Ediff_predicted(1D) = -0.194 eV/atom\n", - "Ediff_predicted(2D) = -0.183 eV/atom\n", - "Ediff_predicted(3D) = -0.302 eV/atom\n", - "-----\n", - "79) Leave out ZnO: Ediff_ref = 0.102 eV/atom\n", - " RMSE Model\n", - "1D:\t0.135541\t- 0.220 (IP(A)+IP(B))/(r_s(A)+r_p(A))^2 - 0.421\n", - "2D:\t0.105326\t+ 0.121 |IP(B)-EA(B)|/r_p(A)^2 - 0.632 |r_s(A)-r_p(B)|/r_s(A)^2 - 0.181\n", - "3D:\t0.084351\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 0.706 |r_s(A)-r_p(B)|/r_s(A)^2 - 10.702 |r_s(B)-r_p(B)|/exp(r_p(B)+r_d(A)) - 0.080\n", - "Ediff_predicted(1D) = 0.412 eV/atom\n", - "Ediff_predicted(2D) = 0.145 eV/atom\n", - "Ediff_predicted(3D) = 0.161 eV/atom\n", - "-----\n", - "80) Leave out ZnS: Ediff_ref = 0.276 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137564\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.334\n", - "2D:\t0.115797\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.602 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.268\n", - "3D:\t0.084100\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.239 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.380 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.122\n", - "Ediff_predicted(1D) = 0.170 eV/atom\n", - "Ediff_predicted(2D) = 0.129 eV/atom\n", - "Ediff_predicted(3D) = 0.175 eV/atom\n", - "-----\n", - "81) Leave out ZnSe: Ediff_ref = 0.263 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137497\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.334\n", - "2D:\t0.115647\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.565 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.269\n", - "3D:\t0.084403\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.240 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.375 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.122\n", - "Ediff_predicted(1D) = 0.151 eV/atom\n", - "Ediff_predicted(2D) = 0.107 eV/atom\n", - "Ediff_predicted(3D) = 0.186 eV/atom\n", - "-----\n", - "82) Leave out ZnTe: Ediff_ref = 0.245 eV/atom\n", - " RMSE Model\n", - "1D:\t0.137428\t- 0.055 (IP(A)+IP(B))/r_p(A)^2 - 0.334\n", - "2D:\t0.115402\t+ 0.117 |IP(B)-EA(B)|/r_p(A)^2 - 6.517 |r_s(A)-r_p(B)|/exp(r_p(A)+r_d(A)) - 0.270\n", - "3D:\t0.084615\t+ 0.112 |IP(B)-EA(B)|/r_p(A)^2 - 0.240 (r_p(B)+r_d(A))/exp(r_d(A)^2) - 1.374 |r_s(A)-r_p(B)|/exp(r_s(A)) - 0.122\n", - "Ediff_predicted(1D) = 0.126 eV/atom\n", - "Ediff_predicted(2D) = 0.074 eV/atom\n", - "Ediff_predicted(3D) = 0.190 eV/atom\n", - "-----\n" - ] - } - ], - "source": [ - "# Leave-one-out cross-validation\n", - "n_compounds = len(P)\n", - "dimensions = range(1, 4)\n", - "features_count = [[] for i in range(3)]\n", - "P_predict = np.empty([len(dimensions), n_compounds])\n", - "\n", - "sisso = SissoRegressor(n_nonzero_coefs=3, n_features_per_sis_iter=10)\n", - "loo = LeaveOneOut()\n", - "\n", - "for indices_train, index_test in loo.split(P):\n", - " i_cv = index_test[0]\n", - " print('%2s) Leave out %s: Ediff_ref = %.3f eV/atom' \n", - " % (index_test[0]+1, chemical_formulas[i_cv], P[i_cv]))\n", - " \n", - " sisso.fit(D[indices_train], P[indices_train])\n", - " sisso.print_models(features_list) \n", - " \n", - " for dim in dimensions: \n", - " features = [features_list[i] for i in sisso.l0_selected_indices[dim - 1]]\n", - " predicted_value = sisso.predict(D[index_test], dim=dim)[0]\n", - " \n", - " features_count[dim-1].append( tuple(features) ) \n", - " P_predict[dim-1, i_cv] = predicted_value\n", - " \n", - " print('Ediff_predicted(%sD) = %.3f eV/atom' %(dim, predicted_value))\n", - " print('-----')" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": { - "pycharm": {} - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY4AAAELCAYAAADOeWEXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3XlcVPX6wPHPFxQN10JNEwEtb5Lgkmh6K7XMLMv0lt3sTrl1wa3Sui0m5XKTn5Vd0zYNS7OcrmVpZS6ZpFleyz1R0bICNC0NFVNUtuf3xxmQZQZmZBmW5/16zWuYc87MPIdRnvku5/kaEUEppZRyl4+3A1BKKVW5aOJQSinlEU0cSimlPKKJQymllEc0cSillPKIJg6llFIe0cShlFLKI5o4lFJKeUQTh1JKKY/U8HYAZaFRo0YSEhLi7TCUUqpS2bp16x8i0ri446pk4ggJCWHLli3eDkMppSoVY0ySO8dpV5VSSimPaOJQSinlEU0cSimlPFIlxzicycjI4ODBg5w9e9bboShVrNq1axMYGEjNmjW9HYpShVSbxHHw4EHq1atHSEgIxhhvh6OUSyJCSkoKBw8epGXLlt4OR6lCqk1X1dmzZwkICNCkoSo8YwwBAQHaOlYVVrVJHIAmDVVp6L9VVZFVq8ShlFJVzaZNm/jggw/K9T01cZSj4cOH06RJE8LCwvJtHzp0KC1btqR9+/b85S9/YfDgwfz666/Fvl7O8zp06ED79u2Ji4vL3dezZ0+CgoLIu6b8gAEDqFu3LgDZ2dk8/PDDhIWFER4eTufOnfnll18A6wLK8PBwOnToQIcOHXj44YdLfO6rVq3iyiuv5IorruC5555zeszevXvp1q0btWrV4sUXX8y3b9asWYSFhdG2bVtmzpyZu/3YsWP07t2b1q1b07t3b44fP+52TD179uTzzz/Pt23mzJmMHj069/Ett9xS5Gfx9ttvc+jQIbffU6nS8ueffzJ27Fi6du3KpEmTyMrKKr83F5Eqd+vUqZMUtGfPnkLbyttXX30lW7dulbZt2+bbPmTIEFm8eLGIiGRnZ8uMGTOkdevWcu7cuSJfL+/zvvzyS7niiity9/Xo0UPCw8Pl66+/FhGR48ePS5cuXaROnToiIvLee+/JXXfdJVlZWSIicuDAATl27JiIiAQHB8vRo0dL4YwtmZmZ0qpVK/npp5/k3Llz0q5dO9m9e3eh437//XfZtGmTTJgwQaZPn567PT4+Xtq2bSunT5+WjIwM6dWrl/zwww8iIvL444/LtGnTRERk2rRp8sQTT7gd15w5c2To0KH5tl1zzTWyfv16ERFJS0uTzp07F/kaPXr0kM2bN7v9np6oCP9mVcX06aefSmBgoBhjZMyYMXLixIlSeV1gi7jxN1ZbHC7Y7RASAj4+1r3dXvLX7N69O5dcckmRxxhjeOSRR2jatCkrV650+7W7detW6JvxoEGDWLRoEQBLlizhzjvvzN13+PBhmjVrho+P9U8gMDCQiy++2O3388SmTZu44ooraNWqFX5+fgwaNIhPPvmk0HFNmjShc+fOhaagJiQk0LVrV/z9/alRowY9evRg6dKlAHzyyScMGTIEgCFDhvDxxx87jWH69Ol07tyZdu3aMWnSJAAGDhzIZ599xrlz5wBITEzk0KFDXHfddQCsW7eOnj17AvDvf/+bzp07ExYWRlRUFCLChx9+yJYtW7DZbHTo0IEzZ84QFxdHx44dCQ8PZ/jw4bmvHRISwoQJE+jWrRsRERFs27aNPn36cPnllzNnzpwS/oZVdXH48GHuvvtu7rjjDho2bMiGDRt49dVXadCgQbnGoYnDCbsdoqIgKQlErPuoqNJJHu66+uqr2bt3r9vHr1q1igEDBuTb1qtXL9avX09WVhaLFi3innvuyd3397//nWXLltGhQwf+9a9/sX379nzPveGGG3K7ql566aVC72e323P3570NHDiw0LG//vorLVq0yH0cGBjoVldcjrCwMNavX09KSgppaWmsWLGCAwcOAPD777/TrFkzAJo1a8aRI0cKPX/16tX8+OOPbNq0iR07drB161bWr19PQEAAXbp0YdWqVQC5v6OcgemVK1dyyy23APDggw+yefNmdu3axZkzZ/jss88YOHAgERER2O12duzYgTGGoUOH8v777xMfH09mZiazZ8/OjaNFixZs3LiR66+/nqFDh/Lhhx/y7bffMnHiRLd/F6p6ys7OZs6cOYSGhrJs2TJiYmLYunUr3bp180o81eY6Dk9ER0NaWv5taWnWdputfGKQPGMTRXn88cd54oknOHLkCN9++22+fb6+vlx33XW8//77nDlzhrwVgwMDA9m3bx9ffvklX375Jb169WLx4sX06tUL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Fy6rfvLkSdavX59bX8rPzy+3mR8aGsqVV15ZbAxaVl2Vh3PnzjFlyhTat2/Prl27eOutt1i7dq1b/0YrE00czpRxXfXExES2b9/ONddc4/IYLat+3s8//0zjxo0ZNmwYHTt25J///CenT592+/laVl2Vh6+//poOHTowefJk7rrrLhISEhg+fHilmzHlDk0czhRVV72ETp06xV133cXMmTOpX7++y+PEzRnHjz/+OK1ateK+++5jwoQJ+fa5U1Z92rRp+Pj40KtXr3xjJGvXrs0tXPjII48Uel9Pihw6OxdP/jNlZmaybds2Ro0axfbt26lTp47LcRJn8pZVz0nIP/74I0BuWXWwEkfeQocbNmzIbX2sXbuWa665hvDwcL788kt2795d6H2clVVfv3597v68ZdWvueYa6tWrR+PGjXPLqqvK6fjx40RFRdG9e3fOnj3LypUree+997j00ku9HVqZ8fZ1HBVTGdVVz8jI4K677sJms+XrNnJm+/btuWtjFGX69OnceeedvPzyywwZMoStW7fm2z9o0CD+9re/MXny5ELPzSmrfuutt3LppZfy8ccfu/WeYLU4pk+fXmj7FVdcUSh5lLSsemBgIIGBgbkttIEDB3qUOESssuojRowotG/AgAE8+uijbpVV37JlCy1atGDy5MlaVl0hIixevJiHH36Yo0eP8thjjzF58mTq1Knj7dDKnLY4nCmDuuoiwgMPPEBoaCiPPvpokcdpWfX8mjZtSosWLdi3bx8AcXFxXHWVs+r7zmlZdVXakpKS6NevH/fccw+BgYFs3ryZ6dOnV4ukAeisKqfKoK76119/LYCEh4fnlitfvny5iGhZdXfKqm/fvl06deok4eHh0r9//9wZYEuWLJHmzZuLn5+fNGnSRG6++Wan769l1VVpyMzMlJdeeknq1Kkj/v7+MmPGDMnIyPB2WKWGylZWvTRvpTIdt4LUVdey6uVPy6orZ7Zt2yYRERECSN++fSUxMdHbIZU6dxOHjnG4YrOV3wLjRahfvz6LFy/2dhjVSq1atTy+mFBVXadPn2bKlCnMmDGDRo0a8f7773P33XdXydlS7tLEoZRSLnz++eeMHDmSxMREIiMjef7558vseqfKRAfHlVKqgCNHjmCz2bjllluoVasWX331FbGxsZo0HDRxKKWUg4gwf/582rRpw+LFi5k0aRLf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\n", - "text/plain": [ - "<Figure size 432x288 with 1 Axes>" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "#Plot Prediction errors\n", - "prediction_errors = np.linalg.norm(P-P_predict, axis=1)/np.sqrt(n_compounds)\n", - "for dim in dimensions:\n", - " predict = P_predict[dim-1]\n", - " if dim == 1:\n", - " maxi = max(max(P), max(predict))\n", - " mini = min(min(P), min(predict))\n", - " plt.plot([maxi,mini], [maxi,mini], 'k')\n", - " plt.scatter(P, predict, color=['b','r', 'g'][dim-1], label='%sD, RMSE = %.3f eV/atom' %(dim, prediction_errors[dim-1]))\n", - "plt.legend(loc='best')\n", - "plt.xlabel('E_diff_DFT'), plt.ylabel('E_diff_predicted')\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": { - "pycharm": {}, - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Descriptor selection frequency\n", - "-----------------\n", - "1D:\n", - " Features Frequency\n", - "0 ((IP(A)+IP(B))/r_p(A)^2,) 75\n", - "1 ((IP(A)+IP(B))/(r_s(A)+r_p(A))^2,) 3\n", - "2 ((IP(B)+EA(A))/r_p(A)^2,) 2\n", - "3 (|IP(B)-EA(B)|/exp(r_p(A)^2),) 1\n", - "4 (IP(B)/exp(r_p(A)^2),) 1\n", - "-----------------\n", - "2D:\n", - " Features Frequency\n", - "0 (|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r... 60\n", - "1 (|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r... 17\n", - "2 (|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/r_s(A... 3\n", - "3 ((IP(A)+IP(B))/r_p(A)^2, (r_s(B)+r_d(A))/exp(r... 1\n", - "4 (|IP(B)-EA(B)|/exp(r_p(A)^2), r_d(A)/exp(r_d(A... 1\n", - "-----------------\n", - "3D:\n", - " Features Frequency\n", - "0 (|IP(B)-EA(B)|/r_p(A)^2, (r_p(B)+r_d(A))/exp(r... 54\n", - "1 (|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r... 11\n", - "2 (|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r... 6\n", - "3 (|IP(B)-EA(B)|/r_p(A)^2, |r_s(B)-r_p(B)|/exp(r... 5\n", - "4 (|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/r_s(A... 2\n", - "5 (|IP(B)-EA(B)|/exp(r_p(A)^2), |r_s(A)-r_p(B)|/... 1\n", - "6 (|IP(B)-EA(B)|/exp(r_p(A)^2), |r_s(B)-r_p(B)|/... 1\n", - "7 (|IP(B)-EA(B)|/r_p(A)^2, |r_s(B)-r_p(B)|/exp(r... 1\n", - "8 (|IP(B)-EA(B)|/r_p(A)^2, (r_p(B)+r_d(A))/exp(r... 1\n" - ] - }, - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th></th>\n", - " <th>P_ref[eV]</th>\n", - " <th>P_pred[eV]</th>\n", - " <th>abs. error [eV]</th>\n", - " <th>Selected features</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th rowspan=\"3\" valign=\"top\">C2</th>\n", - " <th>1D</th>\n", - " <td>2.628604</td>\n", - " <td>1.676269</td>\n", - " <td>0.952334</td>\n", - " <td>(IP(B)/exp(r_p(A)^2),)</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2D</th>\n", - " <td>2.628604</td>\n", - " <td>1.731698</td>\n", - " <td>0.896906</td>\n", - " <td>(|IP(B)-EA(B)|/exp(r_p(A)^2), r_d(A)/exp(r_d(A...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3D</th>\n", - " <td>2.628604</td>\n", - " <td>2.066737</td>\n", - " <td>0.561866</td>\n", - " <td>(|IP(B)-EA(B)|/exp(r_p(A)^2), |r_s(B)-r_p(B)|/...</td>\n", - " </tr>\n", - " <tr>\n", - " <th rowspan=\"2\" valign=\"top\">BSb</th>\n", - " <th>1D</th>\n", - " <td>0.580849</td>\n", - " <td>1.032785</td>\n", - " <td>0.451936</td>\n", - " <td>((IP(A)+IP(B))/r_p(A)^2,)</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2D</th>\n", - " <td>0.580849</td>\n", - " <td>1.020137</td>\n", - " <td>0.439288</td>\n", - " <td>((IP(A)+IP(B))/r_p(A)^2, (r_s(B)+r_d(A))/exp(r...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>BN</th>\n", - " <th>1D</th>\n", - " <td>1.712080</td>\n", - " <td>1.303595</td>\n", - " <td>0.408486</td>\n", - " <td>((IP(A)+IP(B))/(r_s(A)+r_p(A))^2,)</td>\n", - " </tr>\n", - " <tr>\n", - " <th>GeC</th>\n", - " <th>1D</th>\n", - " <td>0.811443</td>\n", - " <td>0.416057</td>\n", - " <td>0.395386</td>\n", - " <td>((IP(A)+IP(B))/r_p(A)^2,)</td>\n", - " </tr>\n", - " <tr>\n", - " <th>CuF</th>\n", - " <th>1D</th>\n", - " <td>-0.017022</td>\n", - " <td>0.374862</td>\n", - " <td>0.391884</td>\n", - " <td>((IP(B)+EA(A))/r_p(A)^2,)</td>\n", - " </tr>\n", - " <tr>\n", - " <th>AgF</th>\n", - " <th>1D</th>\n", - " <td>-0.153758</td>\n", - " <td>0.223003</td>\n", - " <td>0.376760</td>\n", - " <td>((IP(B)+EA(A))/r_p(A)^2,)</td>\n", - " </tr>\n", - " <tr>\n", - " <th>MgO</th>\n", - " <th>2D</th>\n", - " <td>-0.232275</td>\n", - " <td>0.135412</td>\n", - " <td>0.367686</td>\n", - " <td>(|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>AlN</th>\n", - " <th>1D</th>\n", - " <td>0.072949</td>\n", - " <td>0.386358</td>\n", - " <td>0.313409</td>\n", - " <td>(|IP(B)-EA(B)|/exp(r_p(A)^2),)</td>\n", - " </tr>\n", - " <tr>\n", - " <th>CdO</th>\n", - " <th>1D</th>\n", - " <td>-0.084161</td>\n", - " <td>0.228227</td>\n", - " <td>0.312389</td>\n", - " <td>((IP(A)+IP(B))/(r_s(A)+r_p(A))^2,)</td>\n", - " </tr>\n", - " <tr>\n", - " <th>ZnO</th>\n", - " <th>1D</th>\n", - " <td>0.101968</td>\n", - " <td>0.412408</td>\n", - " <td>0.310440</td>\n", - " <td>((IP(A)+IP(B))/(r_s(A)+r_p(A))^2,)</td>\n", - " </tr>\n", - " <tr>\n", - " <th>GeC</th>\n", - " <th>2D</th>\n", - " <td>0.811443</td>\n", - " <td>0.524250</td>\n", - " <td>0.287193</td>\n", - " <td>(|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>MgO</th>\n", - " <th>1D</th>\n", - " <td>-0.232275</td>\n", - " <td>0.045352</td>\n", - " <td>0.277627</td>\n", - " <td>((IP(A)+IP(B))/r_p(A)^2,)</td>\n", - " </tr>\n", - " <tr>\n", - " <th>LiF</th>\n", - " <th>2D</th>\n", - " <td>-0.059488</td>\n", - " <td>0.179284</td>\n", - " <td>0.238773</td>\n", - " <td>(|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SnC</th>\n", - " <th>1D</th>\n", - " <td>0.453538</td>\n", - " <td>0.214814</td>\n", - " <td>0.238724</td>\n", - " <td>((IP(A)+IP(B))/r_p(A)^2,)</td>\n", - " </tr>\n", - " <tr>\n", - " <th>GeC</th>\n", - " <th>3D</th>\n", - " <td>0.811443</td>\n", - " <td>0.577123</td>\n", - " <td>0.234320</td>\n", - " <td>(|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>CaS</th>\n", - " <th>1D</th>\n", - " <td>-0.369133</td>\n", - " <td>-0.141738</td>\n", - " <td>0.227396</td>\n", - " <td>((IP(A)+IP(B))/r_p(A)^2,)</td>\n", - " </tr>\n", - " <tr>\n", - " <th>CaO</th>\n", - " <th>2D</th>\n", - " <td>-0.265219</td>\n", - " <td>-0.477739</td>\n", - " <td>0.212520</td>\n", - " <td>(|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>CaSe</th>\n", - " <th>1D</th>\n", - " <td>-0.360798</td>\n", - " <td>-0.150673</td>\n", - " <td>0.210125</td>\n", - " <td>((IP(A)+IP(B))/r_p(A)^2,)</td>\n", - " </tr>\n", - " <tr>\n", - " <th>MgO</th>\n", - " <th>3D</th>\n", - " <td>-0.232275</td>\n", - " <td>-0.022994</td>\n", - " <td>0.209281</td>\n", - " <td>(|IP(B)-EA(B)|/r_p(A)^2, |r_s(B)-r_p(B)|/exp(r...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>BAs</th>\n", - " <th>1D</th>\n", - " <td>0.874978</td>\n", - " <td>1.081913</td>\n", - " <td>0.206935</td>\n", - " <td>((IP(A)+IP(B))/r_p(A)^2,)</td>\n", - " </tr>\n", - " <tr>\n", - " <th>CaTe</th>\n", - " <th>2D</th>\n", - " <td>-0.350456</td>\n", - " <td>-0.146018</td>\n", - " <td>0.204438</td>\n", - " <td>(|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SiC</th>\n", - " <th>1D</th>\n", - " <td>0.669024</td>\n", - " <td>0.468195</td>\n", - " <td>0.200829</td>\n", - " <td>((IP(A)+IP(B))/r_p(A)^2,)</td>\n", - " </tr>\n", - " <tr>\n", - " <th>AlN</th>\n", - " <th>3D</th>\n", - " <td>0.072949</td>\n", - " <td>0.271436</td>\n", - " <td>0.198487</td>\n", - " <td>(|IP(B)-EA(B)|/exp(r_p(A)^2), |r_s(A)-r_p(B)|/...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>GaP</th>\n", - " <th>1D</th>\n", - " <td>0.348752</td>\n", - " <td>0.151172</td>\n", - " <td>0.197580</td>\n", - " <td>((IP(A)+IP(B))/r_p(A)^2,)</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SrTe</th>\n", - " <th>2D</th>\n", - " <td>-0.379295</td>\n", - " <td>-0.183340</td>\n", - " <td>0.195955</td>\n", - " <td>(|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SrS</th>\n", - " <th>1D</th>\n", - " <td>-0.368434</td>\n", - " <td>-0.177673</td>\n", - " <td>0.190761</td>\n", - " <td>((IP(A)+IP(B))/r_p(A)^2,)</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SrSe</th>\n", - " <th>1D</th>\n", - " <td>-0.374511</td>\n", - " <td>-0.184851</td>\n", - " <td>0.189660</td>\n", - " <td>((IP(A)+IP(B))/r_p(A)^2,)</td>\n", - " </tr>\n", - " <tr>\n", - " <th>...</th>\n", - " <th>...</th>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>BAs</th>\n", - " <th>2D</th>\n", - " <td>0.874978</td>\n", - " <td>0.896316</td>\n", - " <td>0.021338</td>\n", - " <td>(|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>KI</th>\n", - " <th>1D</th>\n", - " <td>-0.167039</td>\n", - " <td>-0.187306</td>\n", - " <td>0.020267</td>\n", - " <td>((IP(A)+IP(B))/r_p(A)^2,)</td>\n", - " </tr>\n", - " <tr>\n", - " <th>KCl</th>\n", - " <th>3D</th>\n", - " <td>-0.164461</td>\n", - " <td>-0.184098</td>\n", - " <td>0.019637</td>\n", - " <td>(|IP(B)-EA(B)|/r_p(A)^2, (r_p(B)+r_d(A))/exp(r...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>InP</th>\n", - " <th>3D</th>\n", - " <td>0.179193</td>\n", - " <td>0.198705</td>\n", - " <td>0.019512</td>\n", - " <td>(|IP(B)-EA(B)|/r_p(A)^2, (r_p(B)+r_d(A))/exp(r...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>LiI</th>\n", - " <th>2D</th>\n", - " <td>-0.021661</td>\n", - " <td>-0.041075</td>\n", - " <td>0.019414</td>\n", - " <td>(|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>KBr</th>\n", - " <th>3D</th>\n", - " <td>-0.166176</td>\n", - " <td>-0.184529</td>\n", - " <td>0.018354</td>\n", - " <td>(|IP(B)-EA(B)|/r_p(A)^2, (r_p(B)+r_d(A))/exp(r...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>NaI</th>\n", - " <th>2D</th>\n", - " <td>-0.114838</td>\n", - " <td>-0.133174</td>\n", - " <td>0.018336</td>\n", - " <td>(|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>BP</th>\n", - " <th>3D</th>\n", - " <td>1.019225</td>\n", - " <td>1.037372</td>\n", - " <td>0.018147</td>\n", - " <td>(|IP(B)-EA(B)|/r_p(A)^2, (r_p(B)+r_d(A))/exp(r...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>CaS</th>\n", - " <th>3D</th>\n", - " <td>-0.369133</td>\n", - " <td>-0.386639</td>\n", - " <td>0.017506</td>\n", - " <td>(|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>GaP</th>\n", - " <th>3D</th>\n", - " <td>0.348752</td>\n", - " <td>0.366098</td>\n", - " <td>0.017346</td>\n", - " <td>(|IP(B)-EA(B)|/r_p(A)^2, |r_s(B)-r_p(B)|/exp(r...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>InN</th>\n", - " <th>1D</th>\n", - " <td>0.153720</td>\n", - " <td>0.136694</td>\n", - " <td>0.017027</td>\n", - " <td>((IP(A)+IP(B))/r_p(A)^2,)</td>\n", - " </tr>\n", - " <tr>\n", - " <th>CdS</th>\n", - " <th>3D</th>\n", - " <td>0.072673</td>\n", - " <td>0.055838</td>\n", - " <td>0.016835</td>\n", - " <td>(|IP(B)-EA(B)|/r_p(A)^2, (r_p(B)+r_d(A))/exp(r...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>GeSi</th>\n", - " <th>2D</th>\n", - " <td>0.263210</td>\n", - " <td>0.279477</td>\n", - " <td>0.016267</td>\n", - " <td>(|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>CdS</th>\n", - " <th>1D</th>\n", - " <td>0.072673</td>\n", - " <td>0.057269</td>\n", - " <td>0.015404</td>\n", - " <td>((IP(A)+IP(B))/r_p(A)^2,)</td>\n", - " </tr>\n", - " <tr>\n", - " <th>CdSe</th>\n", - " <th>3D</th>\n", - " <td>0.083572</td>\n", - " <td>0.068561</td>\n", - " <td>0.015011</td>\n", - " <td>(|IP(B)-EA(B)|/r_p(A)^2, (r_p(B)+r_d(A))/exp(r...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>NaF</th>\n", - " <th>1D</th>\n", - " <td>-0.145788</td>\n", - " <td>-0.131048</td>\n", - " <td>0.014740</td>\n", - " <td>((IP(A)+IP(B))/r_p(A)^2,)</td>\n", - " </tr>\n", - " <tr>\n", - " <th>NaBr</th>\n", - " <th>2D</th>\n", - " <td>-0.126429</td>\n", - " <td>-0.112226</td>\n", - " <td>0.014203</td>\n", - " <td>(|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>MgSe</th>\n", - " <th>1D</th>\n", - " <td>-0.055302</td>\n", - " <td>-0.041884</td>\n", - " <td>0.013418</td>\n", - " <td>((IP(A)+IP(B))/r_p(A)^2,)</td>\n", - " </tr>\n", - " <tr>\n", - " <th>GaSb</th>\n", - " <th>3D</th>\n", - " <td>0.154625</td>\n", - " <td>0.167960</td>\n", - " <td>0.013334</td>\n", - " <td>(|IP(B)-EA(B)|/r_p(A)^2, (r_p(B)+r_d(A))/exp(r...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>SnSi</th>\n", - " <th>1D</th>\n", - " <td>0.135109</td>\n", - " <td>0.122595</td>\n", - " <td>0.012514</td>\n", - " <td>((IP(A)+IP(B))/r_p(A)^2,)</td>\n", - " </tr>\n", - " <tr>\n", - " <th>Si2</th>\n", - " <th>2D</th>\n", - " <td>0.279166</td>\n", - " <td>0.290125</td>\n", - " <td>0.010959</td>\n", - " <td>(|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>KI</th>\n", - " <th>3D</th>\n", - " <td>-0.167039</td>\n", - " <td>-0.176707</td>\n", - " <td>0.009668</td>\n", - " <td>(|IP(B)-EA(B)|/r_p(A)^2, (r_p(B)+r_d(A))/exp(r...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>KBr</th>\n", - " <th>1D</th>\n", - " <td>-0.166176</td>\n", - " <td>-0.174162</td>\n", - " <td>0.007986</td>\n", - " <td>((IP(A)+IP(B))/r_p(A)^2,)</td>\n", - " </tr>\n", - " <tr>\n", - " <th>InSb</th>\n", - " <th>2D</th>\n", - " <td>0.078060</td>\n", - " <td>0.070525</td>\n", - " <td>0.007535</td>\n", - " <td>(|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>KF</th>\n", - " <th>2D</th>\n", - " <td>-0.146406</td>\n", - " <td>-0.140027</td>\n", - " <td>0.006379</td>\n", - " <td>(|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>CdTe</th>\n", - " <th>3D</th>\n", - " <td>0.114540</td>\n", - " <td>0.109154</td>\n", - " <td>0.005386</td>\n", - " <td>(|IP(B)-EA(B)|/r_p(A)^2, (r_p(B)+r_d(A))/exp(r...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>AgI</th>\n", - " <th>3D</th>\n", - " <td>0.036925</td>\n", - " <td>0.032959</td>\n", - " <td>0.003967</td>\n", - " <td>(|IP(B)-EA(B)|/r_p(A)^2, (r_p(B)+r_d(A))/exp(r...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>AlSb</th>\n", - " <th>3D</th>\n", - " <td>0.156869</td>\n", - " <td>0.152981</td>\n", - " <td>0.003888</td>\n", - " <td>(|IP(B)-EA(B)|/r_p(A)^2, |r_s(B)-r_p(B)|/exp(r...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>KCl</th>\n", - " <th>1D</th>\n", - " <td>-0.164461</td>\n", - " <td>-0.162369</td>\n", - " <td>0.002091</td>\n", - " <td>((IP(A)+IP(B))/r_p(A)^2,)</td>\n", - " </tr>\n", - " <tr>\n", - " <th>KF</th>\n", - " <th>3D</th>\n", - " <td>-0.146406</td>\n", - " <td>-0.146812</td>\n", - " <td>0.000406</td>\n", - " <td>(|IP(B)-EA(B)|/r_p(A)^2, (r_p(B)+r_d(A))/exp(r...</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "<p>246 rows × 4 columns</p>\n", - "</div>" - ], - "text/plain": [ - " P_ref[eV] P_pred[eV] abs. error [eV] Selected features\n", - "C2 1D 2.628604 1.676269 0.952334 (IP(B)/exp(r_p(A)^2),)\n", - " 2D 2.628604 1.731698 0.896906 (|IP(B)-EA(B)|/exp(r_p(A)^2), r_d(A)/exp(r_d(A...\n", - " 3D 2.628604 2.066737 0.561866 (|IP(B)-EA(B)|/exp(r_p(A)^2), |r_s(B)-r_p(B)|/...\n", - "BSb 1D 0.580849 1.032785 0.451936 ((IP(A)+IP(B))/r_p(A)^2,)\n", - " 2D 0.580849 1.020137 0.439288 ((IP(A)+IP(B))/r_p(A)^2, (r_s(B)+r_d(A))/exp(r...\n", - "BN 1D 1.712080 1.303595 0.408486 ((IP(A)+IP(B))/(r_s(A)+r_p(A))^2,)\n", - "GeC 1D 0.811443 0.416057 0.395386 ((IP(A)+IP(B))/r_p(A)^2,)\n", - "CuF 1D -0.017022 0.374862 0.391884 ((IP(B)+EA(A))/r_p(A)^2,)\n", - "AgF 1D -0.153758 0.223003 0.376760 ((IP(B)+EA(A))/r_p(A)^2,)\n", - "MgO 2D -0.232275 0.135412 0.367686 (|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r...\n", - "AlN 1D 0.072949 0.386358 0.313409 (|IP(B)-EA(B)|/exp(r_p(A)^2),)\n", - "CdO 1D -0.084161 0.228227 0.312389 ((IP(A)+IP(B))/(r_s(A)+r_p(A))^2,)\n", - "ZnO 1D 0.101968 0.412408 0.310440 ((IP(A)+IP(B))/(r_s(A)+r_p(A))^2,)\n", - "GeC 2D 0.811443 0.524250 0.287193 (|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r...\n", - "MgO 1D -0.232275 0.045352 0.277627 ((IP(A)+IP(B))/r_p(A)^2,)\n", - "LiF 2D -0.059488 0.179284 0.238773 (|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r...\n", - "SnC 1D 0.453538 0.214814 0.238724 ((IP(A)+IP(B))/r_p(A)^2,)\n", - "GeC 3D 0.811443 0.577123 0.234320 (|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r...\n", - "CaS 1D -0.369133 -0.141738 0.227396 ((IP(A)+IP(B))/r_p(A)^2,)\n", - "CaO 2D -0.265219 -0.477739 0.212520 (|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r...\n", - "CaSe 1D -0.360798 -0.150673 0.210125 ((IP(A)+IP(B))/r_p(A)^2,)\n", - "MgO 3D -0.232275 -0.022994 0.209281 (|IP(B)-EA(B)|/r_p(A)^2, |r_s(B)-r_p(B)|/exp(r...\n", - "BAs 1D 0.874978 1.081913 0.206935 ((IP(A)+IP(B))/r_p(A)^2,)\n", - "CaTe 2D -0.350456 -0.146018 0.204438 (|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r...\n", - "SiC 1D 0.669024 0.468195 0.200829 ((IP(A)+IP(B))/r_p(A)^2,)\n", - "AlN 3D 0.072949 0.271436 0.198487 (|IP(B)-EA(B)|/exp(r_p(A)^2), |r_s(A)-r_p(B)|/...\n", - "GaP 1D 0.348752 0.151172 0.197580 ((IP(A)+IP(B))/r_p(A)^2,)\n", - "SrTe 2D -0.379295 -0.183340 0.195955 (|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r...\n", - "SrS 1D -0.368434 -0.177673 0.190761 ((IP(A)+IP(B))/r_p(A)^2,)\n", - "SrSe 1D -0.374511 -0.184851 0.189660 ((IP(A)+IP(B))/r_p(A)^2,)\n", - "... ... ... ... ...\n", - "BAs 2D 0.874978 0.896316 0.021338 (|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r...\n", - "KI 1D -0.167039 -0.187306 0.020267 ((IP(A)+IP(B))/r_p(A)^2,)\n", - "KCl 3D -0.164461 -0.184098 0.019637 (|IP(B)-EA(B)|/r_p(A)^2, (r_p(B)+r_d(A))/exp(r...\n", - "InP 3D 0.179193 0.198705 0.019512 (|IP(B)-EA(B)|/r_p(A)^2, (r_p(B)+r_d(A))/exp(r...\n", - "LiI 2D -0.021661 -0.041075 0.019414 (|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r...\n", - "KBr 3D -0.166176 -0.184529 0.018354 (|IP(B)-EA(B)|/r_p(A)^2, (r_p(B)+r_d(A))/exp(r...\n", - "NaI 2D -0.114838 -0.133174 0.018336 (|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r...\n", - "BP 3D 1.019225 1.037372 0.018147 (|IP(B)-EA(B)|/r_p(A)^2, (r_p(B)+r_d(A))/exp(r...\n", - "CaS 3D -0.369133 -0.386639 0.017506 (|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r...\n", - "GaP 3D 0.348752 0.366098 0.017346 (|IP(B)-EA(B)|/r_p(A)^2, |r_s(B)-r_p(B)|/exp(r...\n", - "InN 1D 0.153720 0.136694 0.017027 ((IP(A)+IP(B))/r_p(A)^2,)\n", - "CdS 3D 0.072673 0.055838 0.016835 (|IP(B)-EA(B)|/r_p(A)^2, (r_p(B)+r_d(A))/exp(r...\n", - "GeSi 2D 0.263210 0.279477 0.016267 (|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r...\n", - "CdS 1D 0.072673 0.057269 0.015404 ((IP(A)+IP(B))/r_p(A)^2,)\n", - "CdSe 3D 0.083572 0.068561 0.015011 (|IP(B)-EA(B)|/r_p(A)^2, (r_p(B)+r_d(A))/exp(r...\n", - "NaF 1D -0.145788 -0.131048 0.014740 ((IP(A)+IP(B))/r_p(A)^2,)\n", - "NaBr 2D -0.126429 -0.112226 0.014203 (|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r...\n", - "MgSe 1D -0.055302 -0.041884 0.013418 ((IP(A)+IP(B))/r_p(A)^2,)\n", - "GaSb 3D 0.154625 0.167960 0.013334 (|IP(B)-EA(B)|/r_p(A)^2, (r_p(B)+r_d(A))/exp(r...\n", - "SnSi 1D 0.135109 0.122595 0.012514 ((IP(A)+IP(B))/r_p(A)^2,)\n", - "Si2 2D 0.279166 0.290125 0.010959 (|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r...\n", - "KI 3D -0.167039 -0.176707 0.009668 (|IP(B)-EA(B)|/r_p(A)^2, (r_p(B)+r_d(A))/exp(r...\n", - "KBr 1D -0.166176 -0.174162 0.007986 ((IP(A)+IP(B))/r_p(A)^2,)\n", - "InSb 2D 0.078060 0.070525 0.007535 (|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r...\n", - "KF 2D -0.146406 -0.140027 0.006379 (|IP(B)-EA(B)|/r_p(A)^2, |r_s(A)-r_p(B)|/exp(r...\n", - "CdTe 3D 0.114540 0.109154 0.005386 (|IP(B)-EA(B)|/r_p(A)^2, (r_p(B)+r_d(A))/exp(r...\n", - "AgI 3D 0.036925 0.032959 0.003967 (|IP(B)-EA(B)|/r_p(A)^2, (r_p(B)+r_d(A))/exp(r...\n", - "AlSb 3D 0.156869 0.152981 0.003888 (|IP(B)-EA(B)|/r_p(A)^2, |r_s(B)-r_p(B)|/exp(r...\n", - "KCl 1D -0.164461 -0.162369 0.002091 ((IP(A)+IP(B))/r_p(A)^2,)\n", - "KF 3D -0.146406 -0.146812 0.000406 (|IP(B)-EA(B)|/r_p(A)^2, (r_p(B)+r_d(A))/exp(r...\n", - "\n", - "[246 rows x 4 columns]" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Print descriptor selection frequency\n", - "print(\"Descriptor selection frequency\")\n", - "for dim in dimensions: \n", - " df_frequency = pd.DataFrame( Counter(features_count[dim-1]).most_common(10), columns=['Features', 'Frequency'] )\n", - " print('-----------------\\n%sD:\\n%s' % (dim, df_frequency))\n", - "\n", - "# create table to display errors and models\n", - "feat = np.array(features_count).flatten('F')\n", - "Pred = np.array(P_predict).flatten('F')\n", - "Pred_errors = np.abs(P-P_predict).flatten('F')\n", - "Ref_values = [r for p in P for r in [p,p,p] ]\n", - "Mats = [m for mat in chemical_formulas for m in [mat, mat, mat] ]\n", - "Dims = ['1D','2D','3D'] * n_compounds\n", - "\n", - "df_loo = pd.DataFrame(zip(Ref_values,Pred,Pred_errors,feat), index = [Mats,Dims],\n", - " columns=['P_ref[eV]', 'P_pred[eV]', 'abs. error [eV]', 'Selected features'])\n", - "\n", - "# if you do not want to sort the data frame by the prediction error comment out the nex line \n", - "df_loo = df_loo.sort_values('abs. error [eV]', ascending=False)\n", - "pd.set_option('display.expand_frame_repr', False)\n", - "\n", - "display(df_loo)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "pycharm": {} - }, - "source": [ - "## Kernel ridge regession\n", - "Last but not least, compare the prediction (LOOCV) performance of SISSO to the one of kernel ridge regression with a gaussian kernel:\n", - "\n", - "$K(x, y) = \\exp(-\\gamma ||x-y||^2)$.\n", - "\n", - "At each LOOCV step, the hyperparameters ($\\ell_2$-regularization parameter $\\lambda$ and inverse gaussian width $\\gamma$) are selected via a grid search and a so-called 5-fold cross-validation on the training set." - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": { - "pycharm": {} - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No allowed operations selected.\n", - "Number of total features generated: 10\n" - ] - } - ], - "source": [ - "selected_feature_list = ['IP', 'EA', 'r_s', 'r_p','r_d']\n", - "allowed_operations = []\n", - "\n", - "P, df_D = get_data(selected_feature_list, allowed_operations)\n", - "features_list = df_D.columns.tolist()\n", - "D = df_D.values" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": { - "pycharm": {}, - "scrolled": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " 0 Ediff_ref: -0.030, Ediff_pred: -0.031, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - " 1 Ediff_ref: -0.043, Ediff_pred: -0.018, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - " 2 Ediff_ref: -0.154, Ediff_pred: -0.063, hyperparameters: {'lambda': 0.178, 'gamma':0.056}\n", - " 3 Ediff_ref: 0.037, Ediff_pred: 0.012, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - " 4 Ediff_ref: 0.213, Ediff_pred: 0.184, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - " 5 Ediff_ref: 0.073, Ediff_pred: 0.369, hyperparameters: {'lambda': 0.178, 'gamma':0.056}\n", - " 6 Ediff_ref: 0.219, Ediff_pred: 0.215, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - " 7 Ediff_ref: 0.157, Ediff_pred: 0.127, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - " 8 Ediff_ref: 0.274, Ediff_pred: 0.245, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - " 9 Ediff_ref: 0.875, Ediff_pred: 0.803, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "10 Ediff_ref: 1.712, Ediff_pred: 0.836, hyperparameters: {'lambda': 0.032, 'gamma':0.010}\n", - "11 Ediff_ref: 1.019, Ediff_pred: 0.914, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "12 Ediff_ref: 0.581, Ediff_pred: 0.660, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "13 Ediff_ref: -0.093, Ediff_pred: -0.252, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "14 Ediff_ref: -0.320, Ediff_pred: -0.355, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "15 Ediff_ref: -0.343, Ediff_pred: -0.356, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "16 Ediff_ref: -0.375, Ediff_pred: -0.322, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "17 Ediff_ref: 0.692, Ediff_pred: 0.122, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "18 Ediff_ref: 0.506, Ediff_pred: 0.526, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "19 Ediff_ref: 0.495, Ediff_pred: 0.495, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "20 Ediff_ref: 0.469, Ediff_pred: 0.447, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "21 Ediff_ref: 2.629, Ediff_pred: 1.411, hyperparameters: {'lambda': 0.032, 'gamma':0.010}\n", - "22 Ediff_ref: -0.265, Ediff_pred: -0.117, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "23 Ediff_ref: -0.369, Ediff_pred: -0.329, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "24 Ediff_ref: -0.361, Ediff_pred: -0.354, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "25 Ediff_ref: -0.350, Ediff_pred: -0.323, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "26 Ediff_ref: -0.084, Ediff_pred: 0.190, hyperparameters: {'lambda': 0.178, 'gamma':0.010}\n", - "27 Ediff_ref: 0.073, Ediff_pred: 0.131, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "28 Ediff_ref: 0.084, Ediff_pred: 0.126, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "29 Ediff_ref: 0.115, Ediff_pred: 0.137, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "30 Ediff_ref: -0.156, Ediff_pred: -0.137, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "31 Ediff_ref: -0.150, Ediff_pred: -0.104, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "32 Ediff_ref: -0.108, Ediff_pred: -0.104, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "33 Ediff_ref: -0.162, Ediff_pred: -0.152, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "34 Ediff_ref: 0.152, Ediff_pred: 0.175, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "35 Ediff_ref: 0.156, Ediff_pred: 0.170, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "36 Ediff_ref: -0.017, Ediff_pred: -0.118, hyperparameters: {'lambda': 0.178, 'gamma':0.056}\n", - "37 Ediff_ref: 0.205, Ediff_pred: 0.214, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "38 Ediff_ref: 0.433, Ediff_pred: 0.208, hyperparameters: {'lambda': 0.006, 'gamma':0.056}\n", - "39 Ediff_ref: 0.349, Ediff_pred: 0.263, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "40 Ediff_ref: 0.155, Ediff_pred: 0.196, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "41 Ediff_ref: 0.201, Ediff_pred: 0.202, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "42 Ediff_ref: 0.811, Ediff_pred: 0.719, hyperparameters: {'lambda': 0.006, 'gamma':0.056}\n", - "43 Ediff_ref: 0.263, Ediff_pred: 0.261, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "44 Ediff_ref: 0.134, Ediff_pred: 0.170, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "45 Ediff_ref: 0.154, Ediff_pred: 0.262, hyperparameters: {'lambda': 0.006, 'gamma':0.010}\n", - "46 Ediff_ref: 0.179, Ediff_pred: 0.197, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "47 Ediff_ref: 0.078, Ediff_pred: 0.119, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "48 Ediff_ref: -0.166, Ediff_pred: -0.180, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "49 Ediff_ref: -0.164, Ediff_pred: -0.173, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "50 Ediff_ref: -0.146, Ediff_pred: -0.124, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "51 Ediff_ref: -0.167, Ediff_pred: -0.147, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "52 Ediff_ref: -0.033, Ediff_pred: -0.043, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "53 Ediff_ref: -0.038, Ediff_pred: -0.059, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "54 Ediff_ref: -0.059, Ediff_pred: -0.110, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "55 Ediff_ref: -0.022, Ediff_pred: -0.052, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "56 Ediff_ref: -0.232, Ediff_pred: 0.151, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "57 Ediff_ref: -0.087, Ediff_pred: -0.068, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "58 Ediff_ref: -0.055, Ediff_pred: -0.064, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "59 Ediff_ref: -0.005, Ediff_pred: -0.053, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "60 Ediff_ref: -0.126, Ediff_pred: -0.110, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "61 Ediff_ref: -0.133, Ediff_pred: -0.129, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "62 Ediff_ref: -0.146, Ediff_pred: -0.104, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "63 Ediff_ref: -0.115, Ediff_pred: -0.082, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "64 Ediff_ref: -0.164, Ediff_pred: -0.195, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "65 Ediff_ref: -0.161, Ediff_pred: -0.175, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "66 Ediff_ref: -0.136, Ediff_pred: -0.138, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "67 Ediff_ref: -0.167, Ediff_pred: -0.207, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "68 Ediff_ref: 0.279, Ediff_pred: 0.316, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "69 Ediff_ref: 0.669, Ediff_pred: 0.961, hyperparameters: {'lambda': 0.001, 'gamma':0.056}\n", - "70 Ediff_ref: 0.017, Ediff_pred: 0.031, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "71 Ediff_ref: 0.454, Ediff_pred: 0.393, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "72 Ediff_ref: 0.082, Ediff_pred: 0.075, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "73 Ediff_ref: 0.135, Ediff_pred: 0.112, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "74 Ediff_ref: -0.220, Ediff_pred: -0.239, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "75 Ediff_ref: -0.368, Ediff_pred: -0.376, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "76 Ediff_ref: -0.375, Ediff_pred: -0.380, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "77 Ediff_ref: -0.379, Ediff_pred: -0.351, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "78 Ediff_ref: 0.102, Ediff_pred: 0.218, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "79 Ediff_ref: 0.276, Ediff_pred: 0.268, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "80 Ediff_ref: 0.263, Ediff_pred: 0.276, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n", - "81 Ediff_ref: 0.245, Ediff_pred: 0.285, hyperparameters: {'lambda': 0.032, 'gamma':0.056}\n" - ] - } - ], - "source": [ - "kr = GridSearchCV(KernelRidge(kernel='rbf'), cv=5,\n", - " param_grid={\"alpha\": np.logspace(-3, 0, 5),\n", - " \"gamma\": np.logspace(-2, 1, 5)})\n", - "P_predict_kr = []\n", - "loo = LeaveOneOut()\n", - "for indices_train, index_test in loo.split(P):\n", - " kr.fit(D[indices_train], P[indices_train])\n", - " print(\"%2i Ediff_ref: %.3f, Ediff_pred: %.3f, hyperparameters: {'lambda': %.3f, 'gamma':%.3f}\" \n", - " % (index_test[0], P[index_test], kr.predict(D[index_test]), \n", - " kr.best_params_['alpha'], kr.best_params_['gamma']))\n", - " P_predict_kr.append(kr.predict(D[index_test])[0])\n" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": { - "pycharm": {} - }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "<Figure size 432x288 with 1 Axes>" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "prediction_rmse_kr = np.linalg.norm(np.array(P_predict_kr) - P)/np.sqrt(P.size)\n", - "\n", - "maxi = max(max(P), max(P_predict_kr))\n", - "mini = min(min(P), min(P_predict_kr))\n", - "plt.plot([maxi,mini], [maxi,mini], 'k')\n", - "plt.scatter(P, P_predict[-1], label='SISSO 3D, RMSE = %.3f eV/atom' % prediction_errors[dim-1])\n", - "plt.scatter(P, P_predict_kr, label='KR, RMSE = %.3f eV/atom' % prediction_rmse_kr)\n", - "plt.xlabel('E_diff_DFT'), plt.ylabel('E_diff_predicted')\n", - "plt.legend()\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.3" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/compressed_sensing_2018.ipynb b/compressed_sensing_2018.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..2eead392e446e0a3f0bea8ed2186661a61366d49 --- /dev/null +++ b/compressed_sensing_2018.ipynb @@ -0,0 +1,1016 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "pycharm": {} + }, + "source": [ + "<div id=\"teaser\" style=' background-position: right center; background-size: 00px; background-repeat: no-repeat; \n", + " padding-top: 20px;\n", + " padding-right: 10px;\n", + " padding-bottom: 170px;\n", + " padding-left: 10px;\n", + " border-bottom: 14px double #333;\n", + " border-top: 14px double #333;' > \n", + "\n", + " \n", + " <div style=\"text-align:center\">\n", + " <b><font size=\"6.4\">Compressed sensing for identifying materials descriptors</font></b> \n", + " </div>\n", + " \n", + "<p>\n", + " created by:\n", + " Emre Ahmetcik<sup>1</sup>, \n", + " Angelo Ziletti<sup>1</sup>,\n", + " Runhai Ouyang<sup> 1</sup>,\n", + " Luca Ghiringhelli<sup> 1</sup>,\n", + " and Matthias Scheffler<sup>1</sup> <br><br>\n", + " \n", + "<sup>1</sup> Fritz Haber Institute of the Max Planck Society, Faradayweg 4-6, D-14195 Berlin, Germany <br>\n", + "<span class=\"nomad--last-updated\" data-version=\"v1.0.0\">[Last updated: April 5, 2019]</span>\n", + "</p>\n", + "\n", + " \n", + "<div> \n", + "<img style=\"float: left;\" src=\"assets/compressed_sensing_2018/Logo_MPG.png\" width=\"200\"> \n", + "<img style=\"float: right;\" src=\"assets/compressed_sensing_2018/Logo_NOMAD.png\" width=\"250\">\n", + "</div>\n", + "</p>\n", + "\n", + "</div>\n", + "\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "pycharm": {} + }, + "source": [ + "This tutorial shows how to find descriptive parameters (short formulas) to predict materials properties using compressed sensing tools. As an example we adress the prediction of the relative stability of 82 zincblende (ZB) versus rocksalt (RS) octet binary materials.\n", + "\n", + "The idea of using compressed sensing tools: Starting from simple physical quantities (\"building blocks\", here properties of the constituent free atoms such as orbital radii), millions (or billions) of candidate formulas are generated by applying arithmetic operations combining building blocks, for example forming sums and products of them. These candidate formulas constitute the so-called \"feature space\". Then a compressed sensing based method is used to select only a few of these formulas that explain the data, as introduced in \n", + "<div style=\"padding: 1ex; margin-top: 1ex; margin-bottom: 1ex; border-style: dotted; border-width: 1pt; border-color: blue; border-radius: 3px;\">\n", + "L. M. Ghiringhelli, J. Vybiral, S. V. Levchenko, C. Draxl, M. Scheffler: <span style=\"font-style: italic;\">Big Data of Materials Science: Critical Role of the Descriptor</span>, Phys. Rev. Lett. 114, 105503 (2015) <a href=\"http://journals.aps.org/prl/abstract/10.1103/PhysRevLett.114.105503\" target=\"_blank\">[PDF]</a>.</div>\n", + "In this tutorial we use the Sure Independence Screening and Sparsifying Operator (SISSO) as proposed in\n", + "<div style=\"padding: 1ex; margin-top: 1ex; margin-bottom: 1ex; border-style: dotted; border-width: 1pt; border-color: blue; border-radius: 3px;\">\n", + "R. Ouyang, S. Curtarolo, E. Ahmetcik, M. Scheffler, L. M. Ghiringhelli: <span style=\"font-style: italic;\">SISSO: a compressed-sensing method for identifying the best low-dimensional descriptor in an immensity of offered candidates</span>, Phys. Rev. Materials 2, 083802 (2018) <a href=\"https://journals.aps.org/prmaterials/abstract/10.1103/PhysRevMaterials.2.083802\" target=\"_blank\">[PDF]</a> .\n", + "</div>\n", + "\n", + "# Introduction to the compressed sensing methods\n", + "\n", + "The feature space is generated by creating a list of analytical expressions (the derived features), obtained by combining the primary features and arithmetic operations. We put all $m$ derived features into a descriptor matrix $\\mathbf{D} \\in \\mathbb{R}^{82 \\times m}$ where each column stands for a derived feature and each row for a compound. An $\\ell_0$-regularization \n", + "\n", + "$\\text{argmin}_{\\mathbf{c} \\in \\mathbb{R}^{m}} \\{\\|\\mathbf{P} - \\mathbf{D}\\mathbf{c}\\|^2_2 +\\lambda \\|\\mathbf{c}\\|_0\\}$\n", + "\n", + "determines those few feature columns which approximate a property vector $\\mathbf{P} \\in \\mathbb{R}^{82}$ (i.e RS vs. ZB energy differences) best. The subscript 0 stands for the $\\ell_0$-quasinorm, that counts the number of non-zero elements of $\\mathbf{c}$ and $\\lambda > 0$ is called the regularization parameter. Performing the $\\ell_0$-regularization becomes fast computational infeasable and often approximations (i.e. LASSO, orthogonal matching pursuit) are needed since in practice the $\\ell_0$-regularization needs to be solved combinatorial: All singletons, pairs, triplets, ... $n$-tuples (up to the selected maximum dimension of the descriptor) are listed and for each set a least-square regression is performed. The $n$-tuple that gives the lowest mean square error for the least-square regression fit is selected as the resulting $n$-dimensional descriptor.\n", + "\n", + "### The LASSO method\n", + "A convex optimization problem can be introduced by the Least Absolute Shrinkage and Selection Operator (LASSO):\n", + "\n", + "$\\text{argmin}_{\\mathbf{c} \\in \\mathbb{R}^{m}} \\{\\|\\mathbf{P} - \\mathbf{D}\\mathbf{c}\\|^2_2 +\\lambda \\|\\mathbf{c}\\|_1\\}$.\n", + "\n", + "Under certain conditions it can find a good approximation to the $\\ell_0$-regularization.\n", + "\n", + "\n", + "### The SISSO method\n", + "SISSO works iteratively. In the first iteration, a number $k$ of features is collected that have the largest correlation (scalar product) with $\\mathbf{P}$. The feature with the largest correlation is simply the 1D descriptor. Next, a residual is constructed as the error made in the first iteration. A new set of $k$ features is now selected as those having the largest correlation with the residual. The 2D descriptor is the pair of features that yield the smallest fitting error upon least-square regression, among all possible pairs contained in the union of the sets selected in this and the first iteration. In each next iteration a new residual is constructed as the error made in the previous iteration, then a new set of $k$ features is extracted as those that have largest correlation with each new residual. The $n$D descriptor is the $n$-tuple of features that yield the smallest fitting error upon least square regression, among all possible $n$-tuples contained in the union of the sets obtained in each new iteration and all the previous iterations. If $k=1$ the method collapses to the so-called orthogonal matching pursuit.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "pycharm": {} + }, + "source": [ + "# Import required modules" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2020-02-01T15:07:51.124575Z", + "start_time": "2020-02-01T15:07:51.071968Z" + }, + "pycharm": {} + }, + "outputs": [], + "source": [ + "import os\n", + "import pandas as pd\n", + "import numpy as np\n", + "from itertools import combinations\n", + "from time import time\n", + "import matplotlib.pyplot as plt \n", + "from sklearn.linear_model import Lasso\n", + "import scipy.stats as ss\n", + "import warnings\n", + "from collections import Counter\n", + "from sklearn.kernel_ridge import KernelRidge\n", + "from sklearn.model_selection import GridSearchCV, LeaveOneOut\n", + "\n", + "from ase.io import read\n", + "\n", + "from compressed_sensing_2018.sisso import SissoRegressor\n", + "from compressed_sensing_2018.combine_features import combine_features\n", + "from compressed_sensing_2018.viewer import show_structure, show_map\n", + "\n", + "# set display options for the notebook \n", + "%matplotlib inline\n", + "warnings.filterwarnings('ignore')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2020-02-01T15:10:11.987696Z", + "start_time": "2020-02-01T15:10:11.979674Z" + } + }, + "outputs": [], + "source": [ + "# Create writable directory for storing temporary files \n", + "# Note: works only with relative path \n", + "tmpdir='../../tmp/'\n", + "if not os.path.exists(tmpdir):\n", + " os.mkdir(tmpdir)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "pycharm": {} + }, + "source": [ + "# Get the data\n", + "Let us load the data from the file data/data.pkl into a data frame. The data was downloaded from the NOMAD archive and the NOMAD atomic data collection. It consists of RS-ZB energy differences (in eV/atom) of the 82 octet binary compounds, structure objects containing the atomic positions of the materials and properties of the atomic constituents. The following atomic features are considered:\n", + "\n", + "<div >\n", + " <ul>\n", + " <li>Z: atomic number</li>\n", + " <li>period: period in the periodic table</li>\n", + " <li>IP: electron affinity</li>\n", + " <li>EA: ionization potential</li> \n", + " <li>E_HOMO: HOMO</li>\n", + " <li>E_LUMO: LUMO</li> \n", + " <li>r_(s, p, d): radius at the maximum of the s, p or d orbital.</li>\n", + " </ul>\n", + "</div>" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2020-02-01T15:08:06.675762Z", + "start_time": "2020-02-01T15:08:06.180237Z" + }, + "pycharm": {} + }, + "outputs": [], + "source": [ + "# load data\n", + "RS_structures = read(\"data/compressed_sensing_2018/RS_structures.xyz\", index=':')\n", + "ZB_structures = read(\"data/compressed_sensing_2018/ZB_structures.xyz\", index=':')\n", + "\n", + "def generate_table(RS_structures, ZB_structures):\n", + "\n", + " for RS, ZB in zip(RS_structures, ZB_structures):\n", + " energy_diff = RS.info['energy'] - ZB.info['energy']\n", + " min_struc_type = 'RS' if energy_diff < 0 else 'ZB'\n", + " struc_obj_min = RS if energy_diff < 0 else ZB\n", + "\n", + " yield [RS.info['energy'], ZB.info['energy'],\n", + " energy_diff, min_struc_type,\n", + " RS.info['Z'], ZB.info['Z'],\n", + " RS.info['period'], ZB.info['period'],\n", + " RS.info['IP'], ZB.info['IP'],\n", + " RS.info['EA'], ZB.info['EA'],\n", + " RS.info['E_HOMO'], ZB.info['E_HOMO'],\n", + " RS.info['E_LUMO'], ZB.info['E_LUMO'],\n", + " RS.info['r_s'], ZB.info['r_s'],\n", + " RS.info['r_p'], ZB.info['r_p'],\n", + " RS.info['r_d'], ZB.info['r_d'],\n", + " RS, ZB, struc_obj_min]\n", + " \n", + " \n", + "df = pd.DataFrame(\n", + " generate_table(RS_structures, ZB_structures),\n", + " columns=['energy_RS', 'energy_ZB', \n", + " 'energy_diff', 'min_struc_type', \n", + " 'Z(A)', 'Z(B)', \n", + " 'period(A)', 'period(B)', \n", + " 'IP(A)', 'IP(B)', \n", + " 'EA(A)', 'EA(B)', \n", + " 'E_HOMO(A)', 'E_HOMO(B)', \n", + " 'E_LUMO(A)', 'E_LUMO(B)', \n", + " 'r_s(A)', 'r_s(B)', \n", + " 'r_p(A)', 'r_p(B)', \n", + " 'r_d(A)', 'r_d(B)',\n", + " 'struc_obj_RS', 'struc_obj_ZB', 'struc_obj_min'],\n", + " index=list(RS.get_chemical_formula() for RS in RS_structures)\n", + ")\n", + "\n", + "# print data without structure objects\n", + "df.drop(['struc_obj_RS', 'struc_obj_ZB', 'struc_obj_min'], axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2020-02-01T15:08:07.535666Z", + "start_time": "2020-02-01T15:08:07.348878Z" + }, + "pycharm": {} + }, + "outputs": [], + "source": [ + "# demonstrate 3x3x3 supercell of one example structure\n", + "example_structure = df.loc['AgBr', 'struc_obj_RS'] * [3, 3, 3]\n", + "show_structure(example_structure, filename=tmpdir + 'example_structure.in')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "pycharm": {} + }, + "source": [ + "Let us look at the distribution of the energy differences." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2020-02-01T15:08:08.593069Z", + "start_time": "2020-02-01T15:08:08.157606Z" + }, + "pycharm": {} + }, + "outputs": [], + "source": [ + "plt.hist(df['energy_diff'].tolist(), bins=30)\n", + "plt.xlabel('$\\Delta E$')\n", + "plt.ylabel('Counts')\n", + "plt.show()\n", + "print('Standard deviation: %.3f eV/atom' % df['energy_diff'].values.std())" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "pycharm": {} + }, + "source": [ + "With the SISSO method, we are able to predict the energy differences from the atomic features with an accuracy of 0.035 eV/atom. However, due to computational limit we will target an accuracy of around 0.1 eV/atom in this tutorial. \n", + "\n", + "Now let us define a function get_data that uses the data frame df_data to define the target vector $\\mathbf{P}$ of energy differences and construct the desriptor matrix $\\mathbf{D}$ of combined features. The arguments selected_feature_list and allowed_operations specify which primary features and which arithmetic operations should be used to build the new derived features." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2020-02-01T15:08:09.401768Z", + "start_time": "2020-02-01T15:08:09.392353Z" + }, + "pycharm": {} + }, + "outputs": [], + "source": [ + "def get_data(selected_feature_list, allowed_operations):\n", + " # add both '(A)', '(B)' to each feature\n", + " selected_featureAB_list = [f+A_or_B for f in selected_feature_list for A_or_B in ['(A)', '(B)']]\n", + " \n", + " # extract energy differences and selected features from df_data \n", + " P = df['energy_diff'].values\n", + " df_features = df[selected_featureAB_list]\n", + " \n", + " \n", + " # derive new features using allowed_operations\n", + " df_combined = combine_features(df=df_features, allowed_operations=allowed_operations)\n", + " return P, df_combined" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2020-02-01T15:08:10.268188Z", + "start_time": "2020-02-01T15:08:10.139408Z" + }, + "pycharm": {}, + "scrolled": false + }, + "outputs": [], + "source": [ + "# selected_feature_list = ['IP', 'EA', 'E_HOMO', 'E_LUMO', 'r_s', 'r_p', 'r_d', 'Z', 'period', 'd']\n", + "selected_feature_list = ['r_s', 'r_p']\n", + "\n", + "# allowed_operations = ['+', '-', '|-|', '*', '/' '^2', '^3', 'exp']\n", + "allowed_operations = ['+']\n", + "\n", + "P, df_D = get_data(selected_feature_list, allowed_operations)\n", + "\n", + "# print derived features\n", + "df_D" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "pycharm": {} + }, + "source": [ + "# Determining low-dimensional descriptors with the $\\ell_0$ method\n", + "\n", + "<div style=\"list-style:disc; margin: 2px;padding: 10px;border: 0px;border:8px double green; font-size:16px;padding-left: 32px;padding-right: 22px; width:89%\">\n", + "<li> Perform an $\\ell_0$-regularization to identify the best low dimensional descriptors using the primary features.</li>\n", + "<li> Show that non-linear functions of the primary features improve the models significantly. </li>\n", + "<li> See that the $\\ell_0$-regularization can rapidly become computational infeasible.</li>\n", + "</div>\n", + "\n", + "Our target is to find the best low dimensional descriptor for a linear model. The $\\ell_0$ regularization\n", + "\n", + "$\\text{argmin}_{\\mathbf{c} \\in \\mathbb{R}^{m}} \\{\\|\\mathbf{P} - \\mathbf{D}\\mathbf{c}\\|^2_2 +\\lambda \\|\\mathbf{c}\\|_0\\}$\n", + "\n", + "provides exactly what we want. It is defined in the follwing and solved combinatorial:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2020-02-01T15:08:11.085554Z", + "start_time": "2020-02-01T15:08:11.062035Z" + }, + "pycharm": {} + }, + "outputs": [], + "source": [ + "def L0(P, D, dimension):\n", + " n_rows, n_columns = D.shape\n", + " D = np.column_stack((D, np.ones(n_rows)))\n", + " SE_min = np.inner(P ,P)\n", + " coef_min, permu_min = None, None\n", + " for permu in combinations(range(n_columns), dimension):\n", + " D_ls = D[:, permu + (-1,)]\n", + " coef, SE, __1, __2 = np.linalg.lstsq(D_ls, P, rcond=-1)\n", + " try:\n", + " if SE[0] < SE_min: \n", + " SE_min = SE[0]\n", + " coef_min, permu_min = coef, permu\n", + " except:\n", + " pass\n", + " RMSE = np.sqrt(SE_min/n_rows)\n", + " return RMSE, coef_min, permu_min" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "pycharm": {} + }, + "source": [ + "Perform the $\\ell_0$-regularization for different dimensions (numbers of non-zero coefficients in the model) and see the root mean square errors (RMSE) and the selected features." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2020-02-01T15:08:11.596377Z", + "start_time": "2020-02-01T15:08:11.451246Z" + }, + "pycharm": {} + }, + "outputs": [], + "source": [ + "selected_feature_list = ['r_s', 'r_p', 'r_d', 'EA', 'IP']\n", + "allowed_operations = []\n", + "\n", + "P, df_D = get_data(selected_feature_list, allowed_operations)\n", + "features_list = df_D.columns.tolist()\n", + "D = df_D.values\n", + "\n", + "print(\" RMSE Best desriptor\")\n", + "for dim in range(1,11):\n", + " RMSE, coefficients, selected_indices = L0(P,D,dim)\n", + " print('%2sD: %.5f' % (dim, RMSE), [features_list[i] for i in selected_indices])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "pycharm": {} + }, + "source": [ + "The result of performing the $\\ell_0$-regularization shows that the accuracy converges fast, e.g. we could leave out some components in the linear model without descreasing the accuracy. The second observation is that a linear model of the atomic features is not enough to describe the RS-ZB energy differences. A way out could be using non-linear machine learning models, e.g. kernel ridge regression or a neural network, instead of linear regression. Another way is to put the non-linearity into the descriptors by building algebraic combinations of the atomic features and mapping the few best of these more complex features onto the target again with a linear model. \n", + "\n", + "Run the following script to build larger feature spaces of more complex features and select the best 1D, 2D and 3D desriptor for a linear model using $\\ell_0$-regularization. Plot the results afterwards. How does the accuracy of the models change? How does the feature space size and the dimension of the descriptors depend on the needed time to solve the $\\ell_0$-problem?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2020-02-01T15:08:32.530167Z", + "start_time": "2020-02-01T15:08:11.816421Z" + }, + "pycharm": {}, + "scrolled": false + }, + "outputs": [], + "source": [ + "selected_feature_list = ['r_s', 'r_p', 'r_d', 'EA', 'IP']\n", + "op_lists = [[], ['+','|-|'], ['+','|-|','exp'], ['+','|-|','exp', '^2'] ]\n", + "X = []\n", + "Errors, Time = np.empty([3,len(op_lists)]), np.empty([3,len(op_lists)])\n", + "\n", + "for n_op, allowed_operations in enumerate(op_lists):\n", + " P, df_D = get_data(selected_feature_list, allowed_operations)\n", + " features_list = df_D.columns.tolist()\n", + " D = df_D.values\n", + " \n", + " number_of_features = len(features_list)\n", + " X.append(number_of_features)\n", + " for dim in range(1,4):\n", + " t1= time()\n", + " RMSE, coefficients, selected_indices = L0(P,D,dim)\n", + " t2 = time()-t1 \n", + " \n", + " Time [dim-1][n_op] = t2\n", + " Errors[dim-1][n_op] = RMSE \n", + " \n", + " print(\"n_features: %s; %sD RMSE: %.3f best features: %s\" \n", + " %(len(features_list), dim, RMSE, [features_list[i] for i in selected_indices]))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2020-02-01T15:08:32.926618Z", + "start_time": "2020-02-01T15:08:32.534815Z" + }, + "pycharm": {} + }, + "outputs": [], + "source": [ + "#plot\n", + "f, (ax1, ax2) = plt.subplots(1,2, sharex=True, figsize=(12,8))\n", + "ax1.set_xlabel('Feature space size')\n", + "ax2.set_xlabel('Feature space size')\n", + "ax1.set_ylabel('RMSE [eV/atom]')\n", + "ax2.set_ylabel('Time [s]')\n", + "#ax2.set_yscale('log')\n", + "\n", + "for dim in range(1,4):\n", + " ax1.plot(X, Errors[dim-1], 's-', label='%sD' %dim)\n", + " ax2.plot(X, Time[dim-1], 's-', label='%sD' %dim)\n", + "ax2.legend(loc='best')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "pycharm": {} + }, + "source": [ + "Assume now that we would like to include thousands or millions of (more) complex features to obtain more accurate models..." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "pycharm": {} + }, + "source": [ + "# Approximations to the $\\ell_0$ method\n", + "<div style=\"list-style:disc; margin: 2px;padding: 10px;border: 0px;border:8px double green; font-size:16px;padding-left: 32px;padding-right: 22px; width:89%\">\n", + "<li >Perform a LASSO minimization and the SISSO method.</li>\n", + "<li >Compare the solutions with the ones from the $\\ell_0$ method.</li>\n", + "</div>\n", + "\n", + "### The LASSO\n", + "\n", + "\n", + "One state-of-the art approximation to the $\\ell_0$ method is the LASSO: \n", + "\n", + "$\\text{argmin}_{\\mathbf{c} \\in \\mathbb{R}^{m}} \\{\\|\\mathbf{P} - \\mathbf{D}\\mathbf{c}\\|^2_2 +\\lambda \\|\\mathbf{c}\\|_1\\}$.\n", + "\n", + "Before performing the LASSO regression we standardize the data to have mean 0 and variance 1, since otherwise the $\\ell_2$-norm of a column would affect bias its contribution to the model. <br>\n", + "Note that we can use the LASSO also only for feature selection. We use then a least-square model with the selected features afterwards instead of the LASSO model directly." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2020-02-01T15:08:32.957017Z", + "start_time": "2020-02-01T15:08:32.935268Z" + }, + "pycharm": {} + }, + "outputs": [], + "source": [ + "def lasso_fit(lam, P, D, feature_list):\n", + " #LASSO\n", + " D_standardized = ss.zscore(D)\n", + " lasso = Lasso(alpha=lam)\n", + " lasso.fit(D_standardized, P)\n", + " coef = lasso.coef_\n", + " \n", + " # get strings of selected features\n", + " selected_indices = coef.nonzero()[0]\n", + " selected_features = [feature_list[i] for i in selected_indices]\n", + " \n", + " # get RMSE of LASSO model\n", + " P_predict = lasso.predict(D_standardized)\n", + " RMSE_LASSO = np.linalg.norm(P-P_predict) / np.sqrt(82.)\n", + "\n", + " #get RMSE for least-square fit\n", + " D_new = D[:, selected_indices]\n", + " D_new = np.column_stack((D_new, np.ones(82)))\n", + " RMSE_LS = np.sqrt(np.linalg.lstsq(D_new,P)[1][0]/82.)\n", + " \n", + " return RMSE_LASSO, RMSE_LS, coef, selected_features" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "pycharm": {} + }, + "source": [ + "$\\lambda$ regulates the sparsity of the coefficient vector of the model. Get the data and try different $\\lambda$ by adjusting the varibale lam. How good does LASSO (directly or with a least-square fit afterwards) approximate the L0-method (when the same feature space is used for both)?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2020-02-01T15:08:33.604193Z", + "start_time": "2020-02-01T15:08:32.963148Z" + }, + "pycharm": {}, + "scrolled": true + }, + "outputs": [], + "source": [ + "#import Data\n", + "selected_feature_list = ['r_s', 'r_p', 'r_d', 'EA', 'IP']\n", + "allowed_operations = ['+','|-|','exp', '^2']\n", + "P, df_D = get_data(selected_feature_list, allowed_operations)\n", + "D = df_D.values\n", + "features_list = df_D.columns.tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2020-02-01T15:08:34.160062Z", + "start_time": "2020-02-01T15:08:33.670559Z" + }, + "pycharm": {} + }, + "outputs": [], + "source": [ + "# change lam between 0.02 and 0.34, e.g. 0.34, 0.30, 0.20, 0.13, 0.10, 0.02\n", + "lam = 0.2\n", + "\n", + "RMSE_LASSO, RMSE_LS, coef, selected_features = lasso_fit(lam, P, D, features_list)\n", + "plt.bar(range(len(coef)), np.abs(coef))\n", + "plt.xlabel(\"Coefficient index $i$\")\n", + "plt.ylabel(\"$|c_i|$\")\n", + "\n", + "print(\"lambda: %.3f\\t dimension of descriptor: %s\\t RMSE_LASSO: %.3f\\t RMSE_LS: %.3f\" \n", + " %(lam, len(selected_features), RMSE_LASSO, RMSE_LS))\n", + "print(pd.DataFrame({'features':np.array(selected_features), 'abs(nonzero_coefs_LASSO)': np.abs(coef[coef.nonzero()])}))\n", + "plt.show() " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "pycharm": {} + }, + "source": [ + "Hint:\n", + "Compare these results to the L0 results you have obtained before from the same feature space, copied and pasted in here:<br>\n", + "\"Number of total features generated: 115 <br>\n", + "features: 115; 1D RMSE: 0.296667841349 best features: ['(r_p(A)+r_d(B))'] <br>\n", + "features: 115; 2D RMSE: 0.194137970112 best features: ['(r_s(B)+r_p(A))', '(r_s(B)+r_p(A))^2'] <br>\n", + "features: 115; 3D RMSE: 0.170545592998 best features: ['(r_s(B)+r_p(A))', '(r_s(B)+r_p(A))^2', 'exp(r_s(B)+r_p(A))']\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "pycharm": {} + }, + "source": [ + "### The SISSO method" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2020-02-01T15:08:34.807864Z", + "start_time": "2020-02-01T15:08:34.175028Z" + }, + "pycharm": {} + }, + "outputs": [], + "source": [ + "#import Data\n", + "selected_feature_list = ['r_s', 'r_p', 'r_d', 'EA', 'IP']\n", + "allowed_operations = ['+','|-|','exp', '^2']\n", + "P, df_D = get_data(selected_feature_list, allowed_operations)\n", + "D = df_D.values\n", + "features_list = df_D.columns.tolist()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "pycharm": {} + }, + "source": [ + "Now apply the SISSO algorithm. How does the SISSO method compare to the LASSO and to the $\\ell_0$-regularization in terms of accuracy (again when using the same feature space)? How fast is SISSO compared to the $\\ell_0$-regularization? How does n_features_per_sis_iter (the number of features collected per sis iteration) affect the performance? Note, that for n_features_per_sis_iter=1 SISSO becomes the so-called orthogonal matching pursuit, another well-known compressed sensing method." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2020-02-01T15:08:35.168286Z", + "start_time": "2020-02-01T15:08:34.867098Z" + }, + "pycharm": {} + }, + "outputs": [], + "source": [ + "sisso = SissoRegressor(n_nonzero_coefs=3, n_features_per_sis_iter=10)\n", + "\n", + "sisso.fit(D, P)\n", + "sisso.print_models(features_list)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "pycharm": {} + }, + "source": [ + "# Run the SISSO method with a big feature space\n", + "<div style=\"list-style:disc; margin: 2px;padding: 10px;border: 0px;border:8px double green; font-size:16px;padding-left: 32px;padding-right: 22px; width:89%\">\n", + "<li>Reproduce the results from the <a href=\"http://journals.aps.org/prl/abstract/10.1103/PhysRevLett.114.105503\" target=\"_blank\">reference publication</a> by including further features.</li>\n", + "<li>Visualize the 2D descriptors in a structure map.</li>\n", + "<li>Experiment with different settings and investigate the influence of the input parameters on the results. (OPTIONAL)</li>\n", + "</div>\n", + "Note the size of the feature space, the needed time to run the code and the accuracy (using the default settings)!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2020-02-01T15:08:41.070056Z", + "start_time": "2020-02-01T15:08:35.174223Z" + }, + "pycharm": {} + }, + "outputs": [], + "source": [ + "# parameters for feature space construction\n", + "selected_feature_list = ['IP', 'EA', 'r_s', 'r_p','r_d']\n", + "allowed_operations = ['+','|-|','exp','^2', '/']\n", + "\n", + "# get the data\n", + "P, df_D = get_data(selected_feature_list, allowed_operations)\n", + "D = df_D.values\n", + "features_list = df_D.columns.tolist()\n", + "\n", + "sisso = SissoRegressor(n_nonzero_coefs=3, n_features_per_sis_iter=26)\n", + "\n", + "sisso.fit(D, P)\n", + "sisso.print_models(features_list)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "pycharm": {} + }, + "source": [ + "Next, plot an interactive 2D structure map using the 2D descriptor. By <i>hovering</i> over a point in the plot, information regarding that system is displayed. By <i>clicking</i> a point, an interactive 3D visualization of the structure will be displayed below.\n", + "\n", + "The markers represent the compounds and their colors the reference energy differences. How well does the descriptor separate the compounds with respect to their crystal structure?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2020-02-01T15:10:34.401565Z", + "start_time": "2020-02-01T15:10:20.616893Z" + }, + "pycharm": {} + }, + "outputs": [], + "source": [ + "# get 2d solution\n", + "P_predict = sisso.predict(D, dim=2)\n", + "D_selcted = df_D.values[:, sisso.l0_selected_indices[1]]\n", + "features = df_D.columns[sisso.l0_selected_indices[1]]\n", + "\n", + "# plot 2D map \n", + "show_map(df, D_selcted, P_predict, features, prefix=tmpdir)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "pycharm": {} + }, + "source": [ + "# Predicting new materials (extrapolation)\n", + "<div style=\"list-style:disc; margin: 2px;padding: 10px;border: 0px;border:8px double green; font-size:16px;padding-left: 32px;padding-right: 22px; width:89%\">\n", + "<li>Perform a leave-one-out cross-validation (LOOCV) using SISSO.</li>\n", + "<li>Analyze the prediction accuracy and how often the same descriptor is selected.</li>\n", + "</div>\n", + "\n", + "We have seen that we can fit the energy differences of materials accurately. But what about predicting the energy difference of a 'new' material (which was not included when determining the model)? We test the prediction performance via LOOCV. In a LOOCV for each material the following procedure is performed: the selected material is excluded, the model is built on the remaining materials and the model accurcy is tested on the excluded material. This means that we need to run SISSO function 82 times. <br>\n", + "Get the data in the next cell and run the LOOCV one cell after. Note that running the LOOCV could take up to ten minutes. Use the remaining two cells of this chapter to analyse the results.<br>\n", + "How is the prediction error compared to the fitting error? How often is the same descriptor selected? Are there materials which had a outlying high/low error?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2020-02-01T15:10:45.341438Z", + "start_time": "2020-02-01T15:10:42.827272Z" + }, + "pycharm": {} + }, + "outputs": [], + "source": [ + "# get the data\n", + "selected_feature_list = ['IP', 'EA', 'r_s', 'r_p','r_d']\n", + "allowed_operations = ['+','|-|','exp', '^2', '/']\n", + "\n", + "P, df_D = get_data(selected_feature_list, allowed_operations)\n", + "features_list = df_D.columns.tolist()\n", + "chemical_formulas = df_D.index.tolist()\n", + "D = df_D.values" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2020-02-01T15:11:19.159914Z", + "start_time": "2020-02-01T15:10:45.345369Z" + }, + "pycharm": {} + }, + "outputs": [], + "source": [ + "# Leave-one-out cross-validation\n", + "n_compounds = len(P)\n", + "dimensions = range(1, 4)\n", + "features_count = [[] for i in range(3)]\n", + "P_predict = np.empty([len(dimensions), n_compounds])\n", + "\n", + "sisso = SissoRegressor(n_nonzero_coefs=3, n_features_per_sis_iter=10)\n", + "loo = LeaveOneOut()\n", + "\n", + "for indices_train, index_test in loo.split(P):\n", + " i_cv = index_test[0]\n", + " print('%2s) Leave out %s: Ediff_ref = %.3f eV/atom' \n", + " % (index_test[0]+1, chemical_formulas[i_cv], P[i_cv]))\n", + " \n", + " sisso.fit(D[indices_train], P[indices_train])\n", + " sisso.print_models(features_list) \n", + " \n", + " for dim in dimensions: \n", + " features = [features_list[i] for i in sisso.l0_selected_indices[dim - 1]]\n", + " predicted_value = sisso.predict(D[index_test], dim=dim)[0]\n", + " \n", + " features_count[dim-1].append( tuple(features) ) \n", + " P_predict[dim-1, i_cv] = predicted_value\n", + " \n", + " print('Ediff_predicted(%sD) = %.3f eV/atom' %(dim, predicted_value))\n", + " print('-----')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2020-02-01T15:11:19.501633Z", + "start_time": "2020-02-01T15:11:19.164428Z" + }, + "pycharm": {} + }, + "outputs": [], + "source": [ + "#Plot Prediction errors\n", + "prediction_errors = np.linalg.norm(P-P_predict, axis=1)/np.sqrt(n_compounds)\n", + "for dim in dimensions:\n", + " predict = P_predict[dim-1]\n", + " if dim == 1:\n", + " maxi = max(max(P), max(predict))\n", + " mini = min(min(P), min(predict))\n", + " plt.plot([maxi,mini], [maxi,mini], 'k')\n", + " plt.scatter(P, predict, color=['b','r', 'g'][dim-1], label='%sD, RMSE = %.3f eV/atom' %(dim, prediction_errors[dim-1]))\n", + "plt.legend(loc='best')\n", + "plt.xlabel('E_diff_DFT'), plt.ylabel('E_diff_predicted')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2020-02-01T15:11:19.663495Z", + "start_time": "2020-02-01T15:11:19.530127Z" + }, + "pycharm": {}, + "scrolled": true + }, + "outputs": [], + "source": [ + "# Print descriptor selection frequency\n", + "print(\"Descriptor selection frequency\")\n", + "for dim in dimensions: \n", + " df_frequency = pd.DataFrame( Counter(features_count[dim-1]).most_common(10), columns=['Features', 'Frequency'] )\n", + " print('-----------------\\n%sD:\\n%s' % (dim, df_frequency))\n", + "\n", + "# create table to display errors and models\n", + "feat = np.array(features_count).flatten('F')\n", + "Pred = np.array(P_predict).flatten('F')\n", + "Pred_errors = np.abs(P-P_predict).flatten('F')\n", + "Ref_values = [r for p in P for r in [p,p,p] ]\n", + "Mats = [m for mat in chemical_formulas for m in [mat, mat, mat] ]\n", + "Dims = ['1D','2D','3D'] * n_compounds\n", + "\n", + "df_loo = pd.DataFrame(zip(Ref_values,Pred,Pred_errors,feat), index = [Mats,Dims],\n", + " columns=['P_ref[eV]', 'P_pred[eV]', 'abs. error [eV]', 'Selected features'])\n", + "\n", + "# if you do not want to sort the data frame by the prediction error comment out the nex line \n", + "df_loo = df_loo.sort_values('abs. error [eV]', ascending=False)\n", + "pd.set_option('display.expand_frame_repr', False)\n", + "\n", + "display(df_loo)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "pycharm": {} + }, + "source": [ + "## Kernel ridge regession\n", + "Last but not least, compare the prediction (LOOCV) performance of SISSO to the one of kernel ridge regression with a gaussian kernel:\n", + "\n", + "$K(x, y) = \\exp(-\\gamma ||x-y||^2)$.\n", + "\n", + "At each LOOCV step, the hyperparameters ($\\ell_2$-regularization parameter $\\lambda$ and inverse gaussian width $\\gamma$) are selected via a grid search and a so-called 5-fold cross-validation on the training set." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2020-02-01T15:11:19.693591Z", + "start_time": "2020-02-01T15:11:19.667228Z" + }, + "pycharm": {} + }, + "outputs": [], + "source": [ + "selected_feature_list = ['IP', 'EA', 'r_s', 'r_p','r_d']\n", + "allowed_operations = []\n", + "\n", + "P, df_D = get_data(selected_feature_list, allowed_operations)\n", + "features_list = df_D.columns.tolist()\n", + "D = df_D.values" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2020-02-01T15:11:57.937960Z", + "start_time": "2020-02-01T15:11:19.696692Z" + }, + "pycharm": {}, + "scrolled": false + }, + "outputs": [], + "source": [ + "kr = GridSearchCV(KernelRidge(kernel='rbf'), cv=5,\n", + " param_grid={\"alpha\": np.logspace(-3, 0, 5),\n", + " \"gamma\": np.logspace(-2, 1, 5)})\n", + "P_predict_kr = []\n", + "loo = LeaveOneOut()\n", + "for indices_train, index_test in loo.split(P):\n", + " kr.fit(D[indices_train], P[indices_train])\n", + " print(\"%2i Ediff_ref: %.3f, Ediff_pred: %.3f, hyperparameters: {'lambda': %.3f, 'gamma':%.3f}\" \n", + " % (index_test[0], P[index_test], kr.predict(D[index_test]), \n", + " kr.best_params_['alpha'], kr.best_params_['gamma']))\n", + " P_predict_kr.append(kr.predict(D[index_test])[0])\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2020-02-01T15:11:58.239651Z", + "start_time": "2020-02-01T15:11:57.951531Z" + }, + "pycharm": {} + }, + "outputs": [], + "source": [ + "prediction_rmse_kr = np.linalg.norm(np.array(P_predict_kr) - P)/np.sqrt(P.size)\n", + "\n", + "maxi = max(max(P), max(P_predict_kr))\n", + "mini = min(min(P), min(P_predict_kr))\n", + "plt.plot([maxi,mini], [maxi,mini], 'k')\n", + "plt.scatter(P, P_predict[-1], label='SISSO 3D, RMSE = %.3f eV/atom' % prediction_errors[dim-1])\n", + "plt.scatter(P, P_predict_kr, label='KR, RMSE = %.3f eV/atom' % prediction_rmse_kr)\n", + "plt.xlabel('E_diff_DFT'), plt.ylabel('E_diff_predicted')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/modules/__init__.py b/compressed_sensing_2018/__init__.py similarity index 100% rename from modules/__init__.py rename to compressed_sensing_2018/__init__.py diff --git a/modules/combine_features.py b/compressed_sensing_2018/combine_features.py similarity index 100% rename from modules/combine_features.py rename to compressed_sensing_2018/combine_features.py diff --git a/modules/sisso.py b/compressed_sensing_2018/sisso.py similarity index 100% rename from modules/sisso.py rename to compressed_sensing_2018/sisso.py diff --git a/modules/viewer.py b/compressed_sensing_2018/viewer.py similarity index 100% rename from modules/viewer.py rename to compressed_sensing_2018/viewer.py diff --git a/data/compressed_sensing_2018/RS_structures.xyz b/data/compressed_sensing_2018/RS_structures.xyz new file mode 100644 index 0000000000000000000000000000000000000000..64dee5a7a8b6ff088622ac5a146bf8a8ec778ff6 --- /dev/null +++ b/data/compressed_sensing_2018/RS_structures.xyz @@ -0,0 +1,328 @@ +2 +Lattice="0.0 2.7925 2.7925 2.7925 0.0 2.7925 2.7925 2.7925 0.0" Properties=species:S:1:pos:R:3 energy=-108781.33395857112 Z=47.0 period=5.0 IP=-8.0580997467 EA=-1.6665999889399998 E_HOMO=-4.71000003815 E_LUMO=-0.47900000214599997 r_s=1.32000005245 r_p=1.87999999523 r_d=2.97000002861 pbc="T T T" +Ag 0.00000000 0.00000000 0.00000000 +Br 2.79250000 2.79250000 2.79250000 +2 +Lattice="0.0 2.6775 2.6775 2.6775 0.0 2.6775 2.6775 2.6775 0.0" Properties=species:S:1:pos:R:3 energy=-79397.45108274152 Z=47.0 period=5.0 IP=-8.0580997467 EA=-1.6665999889399998 E_HOMO=-4.71000003815 E_LUMO=-0.47900000214599997 r_s=1.32000005245 r_p=1.87999999523 r_d=2.97000002861 pbc="T T T" +Ag 0.00000000 0.00000000 0.00000000 +Cl 2.67750000 2.67750000 2.67750000 +2 +Lattice="0.0 2.3955 2.3955 2.3955 0.0 2.3955 2.3955 2.3955 0.0" Properties=species:S:1:pos:R:3 energy=-74477.4281651636 Z=47.0 period=5.0 IP=-8.0580997467 EA=-1.6665999889399998 E_HOMO=-4.71000003815 E_LUMO=-0.47900000214599997 r_s=1.32000005245 r_p=1.87999999523 r_d=2.97000002861 pbc="T T T" +Ag 0.00000000 0.00000000 0.00000000 +F 2.39550000 2.39550000 2.39550000 +2 +Lattice="0.0 2.9485 2.9485 2.9485 0.0 2.9485 2.9485 2.9485 0.0" Properties=species:S:1:pos:R:3 energy=-171339.20818144767 Z=47.0 period=5.0 IP=-8.0580997467 EA=-1.6665999889399998 E_HOMO=-4.71000003815 E_LUMO=-0.47900000214599997 r_s=1.32000005245 r_p=1.87999999523 r_d=2.97000002861 pbc="T T T" +Ag 0.00000000 0.00000000 0.00000000 +I 2.94850000 2.94850000 2.94850000 +2 +Lattice="0.0 2.6060000000000003 2.6060000000000003 2.6060000000000003 0.0 2.6060000000000003 2.6060000000000003 2.6060000000000003 0.0" Properties=species:S:1:pos:R:3 energy=-34200.07751274624 Z=13.0 period=3.0 IP=-5.78049993515 EA=-0.3125 E_HOMO=-2.7839999198900003 E_LUMO=0.6949999928470001 r_s=1.09000003338 r_p=1.38999998569 r_d=1.94000005722 pbc="T T T" +Al 0.00000000 0.00000000 0.00000000 +As 2.60600000 2.60600000 2.60600000 +2 +Lattice="0.0 2.0045 2.0045 2.0045 0.0 2.0045 2.0045 2.0045 0.0" Properties=species:S:1:pos:R:3 energy=-4036.4290485037673 Z=13.0 period=3.0 IP=-5.78049993515 EA=-0.3125 E_HOMO=-2.7839999198900003 E_LUMO=0.6949999928470001 r_s=1.09000003338 r_p=1.38999998569 r_d=1.94000005722 pbc="T T T" +Al 0.00000000 0.00000000 0.00000000 +N 2.00450000 2.00450000 2.00450000 +2 +Lattice="0.0 2.4990000000000006 2.4990000000000006 2.4990000000000006 0.0 2.4990000000000006 2.4990000000000006 2.4990000000000006 0.0" Properties=species:S:1:pos:R:3 energy=-7940.862745223371 Z=13.0 period=3.0 IP=-5.78049993515 EA=-0.3125 E_HOMO=-2.7839999198900003 E_LUMO=0.6949999928470001 r_s=1.09000003338 r_p=1.38999998569 r_d=1.94000005722 pbc="T T T" +Al 0.00000000 0.00000000 0.00000000 +P 2.49900000 2.49900000 2.49900000 +2 +Lattice="0.0 2.824 2.824 2.824 0.0 2.824 2.824 2.824 0.0" Properties=species:S:1:pos:R:3 energy=-92644.19200438487 Z=13.0 period=3.0 IP=-5.78049993515 EA=-0.3125 E_HOMO=-2.7839999198900003 E_LUMO=0.6949999928470001 r_s=1.09000003338 r_p=1.38999998569 r_d=1.94000005722 pbc="T T T" +Al 0.00000000 0.00000000 0.00000000 +Sb 2.82400000 2.82400000 2.82400000 +2 +Lattice="0.0 2.627 2.627 2.627 0.0 2.627 2.627 2.627 0.0" Properties=species:S:1:pos:R:3 energy=-57457.67995787478 Z=31.0 period=4.0 IP=-5.81820011139 EA=-0.10809999704399999 E_HOMO=-2.73200011253 E_LUMO=0.129999995232 r_s=0.9900000095370001 r_p=1.33000004292 r_d=2.16000008583 pbc="T T T" +Ga 0.00000000 0.00000000 0.00000000 +As 2.62700000 2.62700000 2.62700000 +2 +Lattice="0.0 2.2695 2.2695 2.2695 0.0 2.2695 2.2695 2.2695 0.0" Properties=species:S:1:pos:R:3 energy=-31239.347344138314 Z=5.0 period=2.0 IP=-8.18999958038 EA=-0.107400000095 E_HOMO=-3.71499991417 E_LUMO=2.24799990654 r_s=0.8100000023839999 r_p=0.829999983311 r_d=1.9500000476800001 pbc="T T T" +B 0.00000000 0.00000000 0.00000000 +As 2.26950000 2.26950000 2.26950000 +2 +Lattice="0.0 1.7310000000000003 1.7310000000000003 1.7310000000000003 0.0 1.7310000000000003 1.7310000000000003 1.7310000000000003 0.0" Properties=species:S:1:pos:R:3 energy=-1075.0334152931262 Z=5.0 period=2.0 IP=-8.18999958038 EA=-0.107400000095 E_HOMO=-3.71499991417 E_LUMO=2.24799990654 r_s=0.8100000023839999 r_p=0.829999983311 r_d=1.9500000476800001 pbc="T T T" +B 0.00000000 0.00000000 0.00000000 +N 1.73100000 1.73100000 1.73100000 +2 +Lattice="0.0 2.13 2.13 2.13 0.0 2.13 2.13 2.13 0.0" Properties=species:S:1:pos:R:3 energy=-4980.2724198777205 Z=5.0 period=2.0 IP=-8.18999958038 EA=-0.107400000095 E_HOMO=-3.71499991417 E_LUMO=2.24799990654 r_s=0.8100000023839999 r_p=0.829999983311 r_d=1.9500000476800001 pbc="T T T" +B 0.00000000 0.00000000 0.00000000 +P 2.13000000 2.13000000 2.13000000 +2 +Lattice="0.0 2.4655 2.4655 2.4655 0.0 2.4655 2.4655 2.4655 0.0" Properties=species:S:1:pos:R:3 energy=-89683.61370141403 Z=5.0 period=2.0 IP=-8.18999958038 EA=-0.107400000095 E_HOMO=-3.71499991417 E_LUMO=2.24799990654 r_s=0.8100000023839999 r_p=0.829999983311 r_d=1.9500000476800001 pbc="T T T" +B 0.00000000 0.00000000 0.00000000 +Sb 2.46550000 2.46550000 2.46550000 +2 +Lattice="0.0 2.718 2.718 2.718 0.0 2.718 2.718 2.718 0.0" Properties=species:S:1:pos:R:3 energy=-113504.82696334521 Z=56.0 period=6.0 IP=-5.515699863430001 EA=0.277999997139 E_HOMO=-3.3459999561299996 E_LUMO=-2.1289999484999997 r_s=2.15000009537 r_p=2.63000011444 r_d=1.35000002384 pbc="T T T" +Ba 0.00000000 0.00000000 0.00000000 +O 2.71800000 2.71800000 2.71800000 +2 +Lattice="0.0 3.1355000000000004 3.1355000000000004 3.1355000000000004 0.0 3.1355000000000004 3.1355000000000004 3.1355000000000004 0.0" Properties=species:S:1:pos:R:3 energy=-117910.27093993322 Z=56.0 period=6.0 IP=-5.515699863430001 EA=0.277999997139 E_HOMO=-3.3459999561299996 E_LUMO=-2.1289999484999997 r_s=2.15000009537 r_p=2.63000011444 r_d=1.35000002384 pbc="T T T" +Ba 0.00000000 0.00000000 0.00000000 +S 3.13550000 3.13550000 3.13550000 +2 +Lattice="0.0 3.2375 3.2375 3.2375 0.0 3.2375 3.2375 3.2375 0.0" Properties=species:S:1:pos:R:3 energy=-145716.76967211007 Z=56.0 period=6.0 IP=-5.515699863430001 EA=0.277999997139 E_HOMO=-3.3459999561299996 E_LUMO=-2.1289999484999997 r_s=2.15000009537 r_p=2.63000011444 r_d=1.35000002384 pbc="T T T" +Ba 0.00000000 0.00000000 0.00000000 +Se 3.23750000 3.23750000 3.23750000 +2 +Lattice="0.0 3.4310000000000005 3.4310000000000005 3.4310000000000005 0.0 3.4310000000000005 3.4310000000000005 3.4310000000000005 0.0" Properties=species:S:1:pos:R:3 energy=-206204.2290453692 Z=56.0 period=6.0 IP=-5.515699863430001 EA=0.277999997139 E_HOMO=-3.3459999561299996 E_LUMO=-2.1289999484999997 r_s=2.15000009537 r_p=2.63000011444 r_d=1.35000002384 pbc="T T T" +Ba 0.00000000 0.00000000 0.00000000 +Te 3.43100000 3.43100000 3.43100000 +2 +Lattice="0.0 1.792 1.792 1.792 0.0 1.792 1.792 1.792 0.0" Properties=species:S:1:pos:R:3 energy=-1218.439958463514 Z=4.0 period=2.0 IP=-9.459400177000001 EA=0.630500018597 E_HOMO=-5.599999904630001 E_LUMO=-2.0980000495900004 r_s=1.08000004292 r_p=1.21000003815 r_d=2.88000011444 pbc="T T T" +Be 0.00000000 0.00000000 0.00000000 +O 1.79200000 1.79200000 1.79200000 +2 +Lattice="0.0 2.2785 2.2785 2.2785 0.0 2.2785 2.2785 2.2785 0.0" Properties=species:S:1:pos:R:3 energy=-5622.515539493347 Z=4.0 period=2.0 IP=-9.459400177000001 EA=0.630500018597 E_HOMO=-5.599999904630001 E_LUMO=-2.0980000495900004 r_s=1.08000004292 r_p=1.21000003815 r_d=2.88000011444 pbc="T T T" +Be 0.00000000 0.00000000 0.00000000 +S 2.27850000 2.27850000 2.27850000 +2 +Lattice="0.0 2.417 2.417 2.417 0.0 2.417 2.417 2.417 0.0" Properties=species:S:1:pos:R:3 energy=-33428.79676209965 Z=4.0 period=2.0 IP=-9.459400177000001 EA=0.630500018597 E_HOMO=-5.599999904630001 E_LUMO=-2.0980000495900004 r_s=1.08000004292 r_p=1.21000003815 r_d=2.88000011444 pbc="T T T" +Be 0.00000000 0.00000000 0.00000000 +Se 2.41700000 2.41700000 2.41700000 +2 +Lattice="0.0 2.6335 2.6335 2.6335 0.0 2.6335 2.6335 2.6335 0.0" Properties=species:S:1:pos:R:3 energy=-93916.10418609559 Z=4.0 period=2.0 IP=-9.459400177000001 EA=0.630500018597 E_HOMO=-5.599999904630001 E_LUMO=-2.0980000495900004 r_s=1.08000004292 r_p=1.21000003815 r_d=2.88000011444 pbc="T T T" +Be 0.00000000 0.00000000 0.00000000 +Te 2.63350000 2.63350000 2.63350000 +2 +Lattice="0.0 1.748 1.748 1.748 0.0 1.748 1.748 1.748 0.0" Properties=species:S:1:pos:R:3 energy=-1026.5488202746917 Z=6.0 period=2.0 IP=-10.851699829100001 EA=-0.87239998579 E_HOMO=-5.415999889369999 E_LUMO=1.99199998379 r_s=0.6399999856949999 r_p=0.629999995232 r_d=1.62999999523 pbc="T T T" +C 0.00000000 0.00000000 0.00000000 +C 1.74800000 1.74800000 1.74800000 +2 +Lattice="0.0 2.355 2.355 2.355 0.0 2.355 2.355 2.355 0.0" Properties=species:S:1:pos:R:3 energy=-10276.90108522353 Z=20.0 period=4.0 IP=-6.4279999733 EA=0.303900003433 E_HOMO=-3.8640000820199996 E_LUMO=-2.132999897 r_s=1.7599999904599997 r_p=2.31999993324 r_d=0.6800000071529999 pbc="T T T" +Ca 0.00000000 0.00000000 0.00000000 +O 2.35500000 2.35500000 2.35500000 +2 +Lattice="0.0 2.7825000000000006 2.7825000000000006 2.7825000000000006 0.0 2.7825000000000006 2.7825000000000006 2.7825000000000006 0.0" Properties=species:S:1:pos:R:3 energy=-14681.946741034999 Z=20.0 period=4.0 IP=-6.4279999733 EA=0.303900003433 E_HOMO=-3.8640000820199996 E_LUMO=-2.132999897 r_s=1.7599999904599997 r_p=2.31999993324 r_d=0.6800000071529999 pbc="T T T" +Ca 0.00000000 0.00000000 0.00000000 +S 2.78250000 2.78250000 2.78250000 +2 +Lattice="0.0 2.8965 2.8965 2.8965 0.0 2.8965 2.8965 2.8965 0.0" Properties=species:S:1:pos:R:3 energy=-42488.3529202005 Z=20.0 period=4.0 IP=-6.4279999733 EA=0.303900003433 E_HOMO=-3.8640000820199996 E_LUMO=-2.132999897 r_s=1.7599999904599997 r_p=2.31999993324 r_d=0.6800000071529999 pbc="T T T" +Ca 0.00000000 0.00000000 0.00000000 +Se 2.89650000 2.89650000 2.89650000 +2 +Lattice="0.0 3.1045 3.1045 3.1045 0.0 3.1045 3.1045 3.1045 0.0" Properties=species:S:1:pos:R:3 energy=-102975.69611891978 Z=20.0 period=4.0 IP=-6.4279999733 EA=0.303900003433 E_HOMO=-3.8640000820199996 E_LUMO=-2.132999897 r_s=1.7599999904599997 r_p=2.31999993324 r_d=0.6800000071529999 pbc="T T T" +Ca 0.00000000 0.00000000 0.00000000 +Te 3.10450000 3.10450000 3.10450000 +2 +Lattice="0.0 2.318 2.318 2.318 0.0 2.318 2.318 2.318 0.0" Properties=species:S:1:pos:R:3 energy=-78015.16830946339 Z=48.0 period=5.0 IP=-9.5813999176 EA=0.838699996471 E_HOMO=-5.952000141139999 E_LUMO=-1.30900001526 r_s=1.23000001907 r_p=1.7400000095400003 r_d=2.59999990463 pbc="T T T" +Cd 0.00000000 0.00000000 0.00000000 +O 2.31800000 2.31800000 2.31800000 +2 +Lattice="0.0 2.6685000000000003 2.6685000000000003 2.6685000000000003 0.0 2.6685000000000003 2.6685000000000003 2.6685000000000003 0.0" Properties=species:S:1:pos:R:3 energy=-82420.56336174316 Z=48.0 period=5.0 IP=-9.5813999176 EA=0.838699996471 E_HOMO=-5.952000141139999 E_LUMO=-1.30900001526 r_s=1.23000001907 r_p=1.7400000095400003 r_d=2.59999990463 pbc="T T T" +Cd 0.00000000 0.00000000 0.00000000 +S 2.66850000 2.66850000 2.66850000 +2 +Lattice="0.0 2.7815000000000003 2.7815000000000003 2.7815000000000003 0.0 2.7815000000000003 2.7815000000000003 2.7815000000000003 0.0" Properties=species:S:1:pos:R:3 energy=-110227.06126082806 Z=48.0 period=5.0 IP=-9.5813999176 EA=0.838699996471 E_HOMO=-5.952000141139999 E_LUMO=-1.30900001526 r_s=1.23000001907 r_p=1.7400000095400003 r_d=2.59999990463 pbc="T T T" +Cd 0.00000000 0.00000000 0.00000000 +Se 2.78150000 2.78150000 2.78150000 +2 +Lattice="0.0 2.9655000000000005 2.9655000000000005 2.9655000000000005 0.0 2.9655000000000005 2.9655000000000005 2.9655000000000005 0.0" Properties=species:S:1:pos:R:3 energy=-170714.5893124294 Z=48.0 period=5.0 IP=-9.5813999176 EA=0.838699996471 E_HOMO=-5.952000141139999 E_LUMO=-1.30900001526 r_s=1.23000001907 r_p=1.7400000095400003 r_d=2.59999990463 pbc="T T T" +Cd 0.00000000 0.00000000 0.00000000 +Te 2.96550000 2.96550000 2.96550000 +2 +Lattice="0.0 3.5105 3.5105 3.5105 0.0 3.5105 3.5105 3.5105 0.0" Properties=species:S:1:pos:R:3 energy=-143254.4343374349 Z=55.0 period=6.0 IP=-4.0061998367300005 EA=-0.569599986076 E_HOMO=-2.22000002861 E_LUMO=-0.547999978065 r_s=2.46000003815 r_p=3.16000008583 r_d=1.9700000286099997 pbc="T T T" +Cs 0.00000000 0.00000000 0.00000000 +Br 3.51050000 3.51050000 3.51050000 +2 +Lattice="0.0 3.365 3.365 3.365 0.0 3.365 3.365 3.365 0.0" Properties=species:S:1:pos:R:3 energy=-113870.6262104306 Z=55.0 period=6.0 IP=-4.0061998367300005 EA=-0.569599986076 E_HOMO=-2.22000002861 E_LUMO=-0.547999978065 r_s=2.46000003815 r_p=3.16000008583 r_d=1.9700000286099997 pbc="T T T" +Cs 0.00000000 0.00000000 0.00000000 +Cl 3.36500000 3.36500000 3.36500000 +2 +Lattice="0.0 2.9025 2.9025 2.9025 0.0 2.9025 2.9025 2.9025 0.0" Properties=species:S:1:pos:R:3 energy=-108950.88884883074 Z=55.0 period=6.0 IP=-4.0061998367300005 EA=-0.569599986076 E_HOMO=-2.22000002861 E_LUMO=-0.547999978065 r_s=2.46000003815 r_p=3.16000008583 r_d=1.9700000286099997 pbc="T T T" +Cs 0.00000000 0.00000000 0.00000000 +F 2.90250000 2.90250000 2.90250000 +2 +Lattice="0.0 3.7270000000000003 3.7270000000000003 3.7270000000000003 0.0 3.7270000000000003 3.7270000000000003 3.7270000000000003 0.0" Properties=species:S:1:pos:R:3 energy=-205812.1828572401 Z=55.0 period=6.0 IP=-4.0061998367300005 EA=-0.569599986076 E_HOMO=-2.22000002861 E_LUMO=-0.547999978065 r_s=2.46000003815 r_p=3.16000008583 r_d=1.9700000286099997 pbc="T T T" +Cs 0.00000000 0.00000000 0.00000000 +I 3.72700000 3.72700000 3.72700000 +2 +Lattice="0.0 2.5930000000000004 2.5930000000000004 2.5930000000000004 0.0 2.5930000000000004 2.5930000000000004 2.5930000000000004 0.0" Properties=species:S:1:pos:R:3 energy=-58243.772836020624 Z=29.0 period=4.0 IP=-8.38879966736 EA=-1.6384999752 E_HOMO=-4.855999946590001 E_LUMO=-0.64099997282 r_s=1.20000004768 r_p=1.67999994755 r_d=2.57999992371 pbc="T T T" +Cu 0.00000000 0.00000000 0.00000000 +Br 2.59300000 2.59300000 2.59300000 +2 +Lattice="0.0 2.4645 2.4645 2.4645 0.0 2.4645 2.4645 2.4645 0.0" Properties=species:S:1:pos:R:3 energy=-28859.946960543413 Z=29.0 period=4.0 IP=-8.38879966736 EA=-1.6384999752 E_HOMO=-4.855999946590001 E_LUMO=-0.64099997282 r_s=1.20000004768 r_p=1.67999994755 r_d=2.57999992371 pbc="T T T" +Cu 0.00000000 0.00000000 0.00000000 +Cl 2.46450000 2.46450000 2.46450000 +2 +Lattice="0.0 2.1985 2.1985 2.1985 0.0 2.1985 2.1985 2.1985 0.0" Properties=species:S:1:pos:R:3 energy=-23939.960840976764 Z=29.0 period=4.0 IP=-8.38879966736 EA=-1.6384999752 E_HOMO=-4.855999946590001 E_LUMO=-0.64099997282 r_s=1.20000004768 r_p=1.67999994755 r_d=2.57999992371 pbc="T T T" +Cu 0.00000000 0.00000000 0.00000000 +F 2.19850000 2.19850000 2.19850000 +2 +Lattice="0.0 2.7605 2.7605 2.7605 0.0 2.7605 2.7605 2.7605 0.0" Properties=species:S:1:pos:R:3 energy=-120801.61870824985 Z=29.0 period=4.0 IP=-8.38879966736 EA=-1.6384999752 E_HOMO=-4.855999946590001 E_LUMO=-0.64099997282 r_s=1.20000004768 r_p=1.67999994755 r_d=2.57999992371 pbc="T T T" +Cu 0.00000000 0.00000000 0.00000000 +I 2.76050000 2.76050000 2.76050000 +2 +Lattice="0.0 2.091 2.091 2.091 0.0 2.091 2.091 2.091 0.0" Properties=species:S:1:pos:R:3 energy=-27292.963945678744 Z=31.0 period=4.0 IP=-5.81820011139 EA=-0.10809999704399999 E_HOMO=-2.73200011253 E_LUMO=0.129999995232 r_s=0.9900000095370001 r_p=1.33000004292 r_d=2.16000008583 pbc="T T T" +Ga 0.00000000 0.00000000 0.00000000 +N 2.09100000 2.09100000 2.09100000 +2 +Lattice="0.0 2.5245000000000006 2.5245000000000006 2.5245000000000006 0.0 2.5245000000000006 2.5245000000000006 2.5245000000000006 0.0" Properties=species:S:1:pos:R:3 energy=-31198.35551591384 Z=31.0 period=4.0 IP=-5.81820011139 EA=-0.10809999704399999 E_HOMO=-2.73200011253 E_LUMO=0.129999995232 r_s=0.9900000095370001 r_p=1.33000004292 r_d=2.16000008583 pbc="T T T" +Ga 0.00000000 0.00000000 0.00000000 +P 2.52450000 2.52450000 2.52450000 +2 +Lattice="0.0 2.8225 2.8225 2.8225 0.0 2.8225 2.8225 2.8225 0.0" Properties=species:S:1:pos:R:3 energy=-115901.98274863836 Z=31.0 period=4.0 IP=-5.81820011139 EA=-0.10809999704399999 E_HOMO=-2.73200011253 E_LUMO=0.129999995232 r_s=0.9900000095370001 r_p=1.33000004292 r_d=2.16000008583 pbc="T T T" +Ga 0.00000000 0.00000000 0.00000000 +Sb 2.82250000 2.82250000 2.82250000 +2 +Lattice="0.0 2.6455 2.6455 2.6455 0.0 2.6455 2.6455 2.6455 0.0" Properties=species:S:1:pos:R:3 energy=-57359.56120416938 Z=32.0 period=4.0 IP=-7.566999912260001 EA=-0.9490000009540001 E_HOMO=-4.04600000381 E_LUMO=2.17499995232 r_s=0.920000016689 r_p=1.15999996662 r_d=2.36999988556 pbc="T T T" +Ge 0.00000000 0.00000000 0.00000000 +Ge 2.64550000 2.64550000 2.64550000 +2 +Lattice="0.0 2.156 2.156 2.156 0.0 2.156 2.156 2.156 0.0" Properties=species:S:1:pos:R:3 energy=-29193.278475127725 Z=32.0 period=4.0 IP=-7.566999912260001 EA=-0.9490000009540001 E_HOMO=-4.04600000381 E_LUMO=2.17499995232 r_s=0.920000016689 r_p=1.15999996662 r_d=2.36999988556 pbc="T T T" +Ge 0.00000000 0.00000000 0.00000000 +C 2.15600000 2.15600000 2.15600000 +2 +Lattice="0.0 2.57 2.57 2.57 0.0 2.57 2.57 2.57 0.0" Properties=species:S:1:pos:R:3 energy=-32616.69403888785 Z=32.0 period=4.0 IP=-7.566999912260001 EA=-0.9490000009540001 E_HOMO=-4.04600000381 E_LUMO=2.17499995232 r_s=0.920000016689 r_p=1.15999996662 r_d=2.36999988556 pbc="T T T" +Ge 0.00000000 0.00000000 0.00000000 +Si 2.57000000 2.57000000 2.57000000 +2 +Lattice="0.0 2.798 2.798 2.798 0.0 2.798 2.798 2.798 0.0" Properties=species:S:1:pos:R:3 energy=-111895.78725476544 Z=49.0 period=5.0 IP=-5.53739976883 EA=-0.256300002337 E_HOMO=-2.6970000267 E_LUMO=0.36800000071500005 r_s=1.12999999523 r_p=1.5 r_d=3.1099998951 pbc="T T T" +In 0.00000000 0.00000000 0.00000000 +As 2.79800000 2.79800000 2.79800000 +2 +Lattice="0.0 2.302 2.302 2.302 0.0 2.302 2.302 2.302 0.0" Properties=species:S:1:pos:R:3 energy=-81730.71478475723 Z=49.0 period=5.0 IP=-5.53739976883 EA=-0.256300002337 E_HOMO=-2.6970000267 E_LUMO=0.36800000071500005 r_s=1.12999999523 r_p=1.5 r_d=3.1099998951 pbc="T T T" +In 0.00000000 0.00000000 0.00000000 +N 2.30200000 2.30200000 2.30200000 +2 +Lattice="0.0 2.7075 2.7075 2.7075 0.0 2.7075 2.7075 2.7075 0.0" Properties=species:S:1:pos:R:3 energy=-85636.41199652261 Z=49.0 period=5.0 IP=-5.53739976883 EA=-0.256300002337 E_HOMO=-2.6970000267 E_LUMO=0.36800000071500005 r_s=1.12999999523 r_p=1.5 r_d=3.1099998951 pbc="T T T" +In 0.00000000 0.00000000 0.00000000 +P 2.70750000 2.70750000 2.70750000 +2 +Lattice="0.0 2.988 2.988 2.988 0.0 2.988 2.988 2.988 0.0" Properties=species:S:1:pos:R:3 energy=-170340.10360629848 Z=49.0 period=5.0 IP=-5.53739976883 EA=-0.256300002337 E_HOMO=-2.6970000267 E_LUMO=0.36800000071500005 r_s=1.12999999523 r_p=1.5 r_d=3.1099998951 pbc="T T T" +In 0.00000000 0.00000000 0.00000000 +Sb 2.98800000 2.98800000 2.98800000 +2 +Lattice="0.0 3.186 3.186 3.186 0.0 3.186 3.186 3.186 0.0" Properties=species:S:1:pos:R:3 energy=-43846.22818606151 Z=19.0 period=4.0 IP=-4.43319988251 EA=-0.621299982071 E_HOMO=-2.4260001182599997 E_LUMO=-0.6970000267030001 r_s=2.13000011444 r_p=2.4400000572200002 r_d=1.78999996185 pbc="T T T" +K 0.00000000 0.00000000 0.00000000 +Br 3.18600000 3.18600000 3.18600000 +2 +Lattice="0.0 3.039 3.039 3.039 0.0 3.039 3.039 3.039 0.0" Properties=species:S:1:pos:R:3 energy=-14462.44447168486 Z=19.0 period=4.0 IP=-4.43319988251 EA=-0.621299982071 E_HOMO=-2.4260001182599997 E_LUMO=-0.6970000267030001 r_s=2.13000011444 r_p=2.4400000572200002 r_d=1.78999996185 pbc="T T T" +K 0.00000000 0.00000000 0.00000000 +Cl 3.03900000 3.03900000 3.03900000 +2 +Lattice="0.0 2.5815 2.5815 2.5815 0.0 2.5815 2.5815 2.5815 0.0" Properties=species:S:1:pos:R:3 energy=-9542.777877059552 Z=19.0 period=4.0 IP=-4.43319988251 EA=-0.621299982071 E_HOMO=-2.4260001182599997 E_LUMO=-0.6970000267030001 r_s=2.13000011444 r_p=2.4400000572200002 r_d=1.78999996185 pbc="T T T" +K 0.00000000 0.00000000 0.00000000 +F 2.58150000 2.58150000 2.58150000 +2 +Lattice="0.0 3.408 3.408 3.408 0.0 3.408 3.408 3.408 0.0" Properties=species:S:1:pos:R:3 energy=-106403.94989684867 Z=19.0 period=4.0 IP=-4.43319988251 EA=-0.621299982071 E_HOMO=-2.4260001182599997 E_LUMO=-0.6970000267030001 r_s=2.13000011444 r_p=2.4400000572200002 r_d=1.78999996185 pbc="T T T" +K 0.00000000 0.00000000 0.00000000 +I 3.40800000 3.40800000 3.40800000 +2 +Lattice="0.0 2.6555000000000004 2.6555000000000004 2.6555000000000004 0.0 2.6555000000000004 2.6555000000000004 2.6555000000000004 0.0" Properties=species:S:1:pos:R:3 energy=-35758.254036685415 Z=3.0 period=2.0 IP=-5.32910013199 EA=-0.698099970818 E_HOMO=-2.8740000724799994 E_LUMO=-0.9779999852179999 r_s=1.64999997616 r_p=2.0 r_d=6.92999982834 pbc="T T T" +Li 0.00000000 0.00000000 0.00000000 +Br 2.65550000 2.65550000 2.65550000 +2 +Lattice="0.0 2.483 2.483 2.483 0.0 2.483 2.483 2.483 0.0" Properties=species:S:1:pos:R:3 energy=-6374.542821311546 Z=3.0 period=2.0 IP=-5.32910013199 EA=-0.698099970818 E_HOMO=-2.8740000724799994 E_LUMO=-0.9779999852179999 r_s=1.64999997616 r_p=2.0 r_d=6.92999982834 pbc="T T T" +Li 0.00000000 0.00000000 0.00000000 +Cl 2.48300000 2.48300000 2.48300000 +2 +Lattice="0.0 1.9555 1.9555 1.9555 0.0 1.9555 1.9555 1.9555 0.0" Properties=species:S:1:pos:R:3 energy=-1455.2422308540065 Z=3.0 period=2.0 IP=-5.32910013199 EA=-0.698099970818 E_HOMO=-2.8740000724799994 E_LUMO=-0.9779999852179999 r_s=1.64999997616 r_p=2.0 r_d=6.92999982834 pbc="T T T" +Li 0.00000000 0.00000000 0.00000000 +F 1.95550000 1.95550000 1.95550000 +2 +Lattice="0.0 2.9025 2.9025 2.9025 0.0 2.9025 2.9025 2.9025 0.0" Properties=species:S:1:pos:R:3 energy=-98315.90504246672 Z=3.0 period=2.0 IP=-5.32910013199 EA=-0.698099970818 E_HOMO=-2.8740000724799994 E_LUMO=-0.9779999852179999 r_s=1.64999997616 r_p=2.0 r_d=6.92999982834 pbc="T T T" +Li 0.00000000 0.00000000 0.00000000 +I 2.90250000 2.90250000 2.90250000 +2 +Lattice="0.0 2.03987 2.03987 2.03987 0.0 2.03987 2.03987 2.03987 0.0" Properties=species:S:1:pos:R:3 energy=-3737.0747449401097 Z=12.0 period=3.0 IP=-8.037099838260001 EA=0.692499995232 E_HOMO=-4.78200006485 E_LUMO=-1.3580000400499999 r_s=1.33000004292 r_p=1.89999997616 r_d=3.17000007629 pbc="T T T" +Mg 0.00000000 0.00000000 0.00000000 +O 2.03987000 2.03987000 2.03987000 +2 +Lattice="0.0 2.566 2.566 2.566 0.0 2.566 2.566 2.566 0.0" Properties=species:S:1:pos:R:3 energy=-8141.593383043353 Z=12.0 period=3.0 IP=-8.037099838260001 EA=0.692499995232 E_HOMO=-4.78200006485 E_LUMO=-1.3580000400499999 r_s=1.33000004292 r_p=1.89999997616 r_d=3.17000007629 pbc="T T T" +Mg 0.00000000 0.00000000 0.00000000 +S 2.56600000 2.56600000 2.56600000 +2 +Lattice="0.0 2.6975 2.6975 2.6975 0.0 2.6975 2.6975 2.6975 0.0" Properties=species:S:1:pos:R:3 energy=-35947.940030845435 Z=12.0 period=3.0 IP=-8.037099838260001 EA=0.692499995232 E_HOMO=-4.78200006485 E_LUMO=-1.3580000400499999 r_s=1.33000004292 r_p=1.89999997616 r_d=3.17000007629 pbc="T T T" +Mg 0.00000000 0.00000000 0.00000000 +Se 2.69750000 2.69750000 2.69750000 +2 +Lattice="0.0 2.9215 2.9215 2.9215 0.0 2.9215 2.9215 2.9215 0.0" Properties=species:S:1:pos:R:3 energy=-96435.2383537187 Z=12.0 period=3.0 IP=-8.037099838260001 EA=0.692499995232 E_HOMO=-4.78200006485 E_LUMO=-1.3580000400499999 r_s=1.33000004292 r_p=1.89999997616 r_d=3.17000007629 pbc="T T T" +Mg 0.00000000 0.00000000 0.00000000 +Te 2.92150000 2.92150000 2.92150000 +2 +Lattice="0.0 2.893 2.893 2.893 0.0 2.893 2.893 2.893 0.0" Properties=species:S:1:pos:R:3 energy=-37859.126083455434 Z=11.0 period=3.0 IP=-5.223100185390001 EA=-0.715699970722 E_HOMO=-2.8190000057200004 E_LUMO=-0.717999994755 r_s=1.71000003815 r_p=2.59999990463 r_d=6.57000017166 pbc="T T T" +Na 0.00000000 0.00000000 0.00000000 +Br 2.89300000 2.89300000 2.89300000 +2 +Lattice="0.0 2.7325 2.7325 2.7325 0.0 2.7325 2.7325 2.7325 0.0" Properties=species:S:1:pos:R:3 energy=-8475.37343440655 Z=11.0 period=3.0 IP=-5.223100185390001 EA=-0.715699970722 E_HOMO=-2.8190000057200004 E_LUMO=-0.717999994755 r_s=1.71000003815 r_p=2.59999990463 r_d=6.57000017166 pbc="T T T" +Na 0.00000000 0.00000000 0.00000000 +Cl 2.73250000 2.73250000 2.73250000 +2 +Lattice="0.0 2.252 2.252 2.252 0.0 2.252 2.252 2.252 0.0" Properties=species:S:1:pos:R:3 energy=-3555.8434060251107 Z=11.0 period=3.0 IP=-5.223100185390001 EA=-0.715699970722 E_HOMO=-2.8190000057200004 E_LUMO=-0.717999994755 r_s=1.71000003815 r_p=2.59999990463 r_d=6.57000017166 pbc="T T T" +Na 0.00000000 0.00000000 0.00000000 +F 2.25200000 2.25200000 2.25200000 +2 +Lattice="0.0 3.13 3.13 3.13 0.0 3.13 3.13 3.13 0.0" Properties=species:S:1:pos:R:3 energy=-100416.81623126328 Z=11.0 period=3.0 IP=-5.223100185390001 EA=-0.715699970722 E_HOMO=-2.8190000057200004 E_LUMO=-0.717999994755 r_s=1.71000003815 r_p=2.59999990463 r_d=6.57000017166 pbc="T T T" +Na 0.00000000 0.00000000 0.00000000 +I 3.13000000 3.13000000 3.13000000 +2 +Lattice="0.0 3.3335 3.3335 3.3335 0.0 3.3335 3.3335 3.3335 0.0" Properties=species:S:1:pos:R:3 energy=-76473.68939266614 Z=37.0 period=5.0 IP=-4.28889989853 EA=-0.590399980545 E_HOMO=-2.3599998951 E_LUMO=-0.704999983311 r_s=2.24000000954 r_p=3.20000004768 r_d=1.96000003815 pbc="T T T" +Rb 0.00000000 0.00000000 0.00000000 +Br 3.33350000 3.33350000 3.33350000 +2 +Lattice="0.0 3.189 3.189 3.189 0.0 3.189 3.189 3.189 0.0" Properties=species:S:1:pos:R:3 energy=-47089.89292301863 Z=37.0 period=5.0 IP=-4.28889989853 EA=-0.590399980545 E_HOMO=-2.3599998951 E_LUMO=-0.704999983311 r_s=2.24000000954 r_p=3.20000004768 r_d=1.96000003815 pbc="T T T" +Rb 0.00000000 0.00000000 0.00000000 +Cl 3.18900000 3.18900000 3.18900000 +2 +Lattice="0.0 2.7320000000000007 2.7320000000000007 2.7320000000000007 0.0 2.7320000000000007 2.7320000000000007 2.7320000000000007 0.0" Properties=species:S:1:pos:R:3 energy=-42170.18365900315 Z=37.0 period=5.0 IP=-4.28889989853 EA=-0.590399980545 E_HOMO=-2.3599998951 E_LUMO=-0.704999983311 r_s=2.24000000954 r_p=3.20000004768 r_d=1.96000003815 pbc="T T T" +Rb 0.00000000 0.00000000 0.00000000 +F 2.73200000 2.73200000 2.73200000 +2 +Lattice="0.0 3.552 3.552 3.552 0.0 3.552 3.552 3.552 0.0" Properties=species:S:1:pos:R:3 energy=-139031.4254132218 Z=37.0 period=5.0 IP=-4.28889989853 EA=-0.590399980545 E_HOMO=-2.3599998951 E_LUMO=-0.704999983311 r_s=2.24000000954 r_p=3.20000004768 r_d=1.96000003815 pbc="T T T" +Rb 0.00000000 0.00000000 0.00000000 +I 3.55200000 3.55200000 3.55200000 +2 +Lattice="0.0 2.4975 2.4975 2.4975 0.0 2.4975 2.4975 2.4975 0.0" Properties=species:S:1:pos:R:3 energy=-7873.897162319816 Z=14.0 period=3.0 IP=-7.75769996643 EA=-0.992999970913 E_HOMO=-4.16300010681 E_LUMO=0.439999997616 r_s=0.9399999976160001 r_p=1.12999999523 r_d=1.88999998569 pbc="T T T" +Si 0.00000000 0.00000000 0.00000000 +Si 2.49750000 2.49750000 2.49750000 +2 +Lattice="0.0 2.0025 2.0025 2.0025 0.0 2.0025 2.0025 2.0025 0.0" Properties=species:S:1:pos:R:3 energy=-4451.285598745774 Z=14.0 period=3.0 IP=-7.75769996643 EA=-0.992999970913 E_HOMO=-4.16300010681 E_LUMO=0.439999997616 r_s=0.9399999976160001 r_p=1.12999999523 r_d=1.88999998569 pbc="T T T" +Si 0.00000000 0.00000000 0.00000000 +C 2.00250000 2.00250000 2.00250000 +2 +Lattice="0.0 3.0045 3.0045 3.0045 0.0 3.0045 3.0045 3.0045 0.0" Properties=species:S:1:pos:R:3 energy=-170215.3505922382 Z=50.0 period=5.0 IP=-7.04279994965 EA=-1.03919994831 E_HOMO=-3.86599993706 E_LUMO=0.008000000379979999 r_s=1.05999994278 r_p=1.34000003338 r_d=2.02999997139 pbc="T T T" +Sn 0.00000000 0.00000000 0.00000000 +Sn 3.00450000 3.00450000 3.00450000 +2 +Lattice="0.0 2.355 2.355 2.355 0.0 2.355 2.355 2.355 0.0" Properties=species:S:1:pos:R:3 energy=-85621.03540856167 Z=50.0 period=5.0 IP=-7.04279994965 EA=-1.03919994831 E_HOMO=-3.86599993706 E_LUMO=0.008000000379979999 r_s=1.05999994278 r_p=1.34000003338 r_d=2.02999997139 pbc="T T T" +Sn 0.00000000 0.00000000 0.00000000 +C 2.35500000 2.35500000 2.35500000 +2 +Lattice="0.0 2.828 2.828 2.828 0.0 2.828 2.828 2.828 0.0" Properties=species:S:1:pos:R:3 energy=-113787.45028712797 Z=50.0 period=5.0 IP=-7.04279994965 EA=-1.03919994831 E_HOMO=-3.86599993706 E_LUMO=0.008000000379979999 r_s=1.05999994278 r_p=1.34000003338 r_d=2.02999997139 pbc="T T T" +Sn 0.00000000 0.00000000 0.00000000 +Ge 2.82800000 2.82800000 2.82800000 +2 +Lattice="0.0 2.7695000000000003 2.7695000000000003 2.7695000000000003 0.0 2.7695000000000003 2.7695000000000003 2.7695000000000003 0.0" Properties=species:S:1:pos:R:3 energy=-89044.49540319394 Z=50.0 period=5.0 IP=-7.04279994965 EA=-1.03919994831 E_HOMO=-3.86599993706 E_LUMO=0.008000000379979999 r_s=1.05999994278 r_p=1.34000003338 r_d=2.02999997139 pbc="T T T" +Sn 0.00000000 0.00000000 0.00000000 +Si 2.76950000 2.76950000 2.76950000 +2 +Lattice="0.0 2.533 2.533 2.533 0.0 2.533 2.533 2.533 0.0" Properties=species:S:1:pos:R:3 energy=-44570.36172228581 Z=38.0 period=5.0 IP=-6.03159999847 EA=0.34310001134900003 E_HOMO=-3.64100003242 E_LUMO=-1.3789999485 r_s=1.90999996662 r_p=2.54999995232 r_d=1.20000004768 pbc="T T T" +Sr 0.00000000 0.00000000 0.00000000 +O 2.53300000 2.53300000 2.53300000 +2 +Lattice="0.0 2.953 2.953 2.953 0.0 2.953 2.953 2.953 0.0" Properties=species:S:1:pos:R:3 energy=-48975.63558331968 Z=38.0 period=5.0 IP=-6.03159999847 EA=0.34310001134900003 E_HOMO=-3.64100003242 E_LUMO=-1.3789999485 r_s=1.90999996662 r_p=2.54999995232 r_d=1.20000004768 pbc="T T T" +Sr 0.00000000 0.00000000 0.00000000 +S 2.95300000 2.95300000 2.95300000 +2 +Lattice="0.0 3.062 3.062 3.062 0.0 3.062 3.062 3.062 0.0" Properties=species:S:1:pos:R:3 energy=-76782.08842904876 Z=38.0 period=5.0 IP=-6.03159999847 EA=0.34310001134900003 E_HOMO=-3.64100003242 E_LUMO=-1.3789999485 r_s=1.90999996662 r_p=2.54999995232 r_d=1.20000004768 pbc="T T T" +Sr 0.00000000 0.00000000 0.00000000 +Se 3.06200000 3.06200000 3.06200000 +2 +Lattice="0.0 3.2635 3.2635 3.2635 0.0 3.2635 3.2635 3.2635 0.0" Properties=species:S:1:pos:R:3 energy=-137269.48714743802 Z=38.0 period=5.0 IP=-6.03159999847 EA=0.34310001134900003 E_HOMO=-3.64100003242 E_LUMO=-1.3789999485 r_s=1.90999996662 r_p=2.54999995232 r_d=1.20000004768 pbc="T T T" +Sr 0.00000000 0.00000000 0.00000000 +Te 3.26350000 3.26350000 3.26350000 +2 +Lattice="0.0 2.106 2.106 2.106 0.0 2.106 2.106 2.106 0.0" Properties=species:S:1:pos:R:3 energy=-25540.809204712215 Z=30.0 period=4.0 IP=-10.1354999542 EA=1.08070003986 E_HOMO=-6.21700000763 E_LUMO=-1.1940000057200002 r_s=1.10000002384 r_p=1.5499999523199999 r_d=2.25 pbc="T T T" +Zn 0.00000000 0.00000000 0.00000000 +O 2.10600000 2.10600000 2.10600000 +2 +Lattice="0.0 2.483 2.483 2.483 0.0 2.483 2.483 2.483 0.0" Properties=species:S:1:pos:R:3 energy=-29945.889373092232 Z=30.0 period=4.0 IP=-10.1354999542 EA=1.08070003986 E_HOMO=-6.21700000763 E_LUMO=-1.1940000057200002 r_s=1.10000002384 r_p=1.5499999523199999 r_d=2.25 pbc="T T T" +Zn 0.00000000 0.00000000 0.00000000 +S 2.48300000 2.48300000 2.48300000 +2 +Lattice="0.0 2.607 2.607 2.607 0.0 2.607 2.607 2.607 0.0" Properties=species:S:1:pos:R:3 energy=-57752.31987547867 Z=30.0 period=4.0 IP=-10.1354999542 EA=1.08070003986 E_HOMO=-6.21700000763 E_LUMO=-1.1940000057200002 r_s=1.10000002384 r_p=1.5499999523199999 r_d=2.25 pbc="T T T" +Zn 0.00000000 0.00000000 0.00000000 +Se 2.60700000 2.60700000 2.60700000 +2 +Lattice="0.0 2.7985 2.7985 2.7985 0.0 2.7985 2.7985 2.7985 0.0" Properties=species:S:1:pos:R:3 energy=-118239.80767561558 Z=30.0 period=4.0 IP=-10.1354999542 EA=1.08070003986 E_HOMO=-6.21700000763 E_LUMO=-1.1940000057200002 r_s=1.10000002384 r_p=1.5499999523199999 r_d=2.25 pbc="T T T" +Zn 0.00000000 0.00000000 0.00000000 +Te 2.79850000 2.79850000 2.79850000 diff --git a/data/compressed_sensing_2018/ZB_structures.xyz b/data/compressed_sensing_2018/ZB_structures.xyz new file mode 100644 index 0000000000000000000000000000000000000000..24343085e7bee4e49d4908e8d97ad618a811abab --- /dev/null +++ b/data/compressed_sensing_2018/ZB_structures.xyz @@ -0,0 +1,328 @@ +2 +Lattice="0.0 3.0175 3.0175 3.0175 0.0 3.0175 3.0175 3.0175 0.0" Properties=species:S:1:pos:R:3 energy=-108781.30392515441 Z=35.0 period=4.0 IP=-12.649600029 EA=-3.73930001259 E_HOMO=-8.001000404360001 E_LUMO=0.7080000042919999 r_s=0.75 r_p=0.879999995232 r_d=1.87000000477 pbc="T T T" +Ag 0.00000000 0.00000000 0.00000000 +Br 1.50875000 1.50875000 1.50875000 +2 +Lattice="0.0 2.8900000000000006 2.8900000000000006 2.8900000000000006 0.0 2.8900000000000006 2.8900000000000006 2.8900000000000006 0.0" Properties=species:S:1:pos:R:3 energy=-79397.40828546332 Z=17.0 period=3.0 IP=-13.9018001556 EA=-3.9707999229400004 E_HOMO=-8.699999809269999 E_LUMO=0.574000000954 r_s=0.6800000071529999 r_p=0.7599999904629999 r_d=1.6699999570800002 pbc="T T T" +Ag 0.00000000 0.00000000 0.00000000 +Cl 1.44500000 1.44500000 1.44500000 +2 +Lattice="0.0 2.601 2.601 2.601 0.0 2.601 2.601 2.601 0.0" Properties=species:S:1:pos:R:3 energy=-74477.27440749042 Z=9.0 period=2.0 IP=-19.4043006897 EA=-4.27349996567 E_HOMO=-11.2939996719 E_LUMO=1.25100004673 r_s=0.409999996424 r_p=0.37000000476800005 r_d=1.42999994755 pbc="T T T" +Ag 0.00000000 0.00000000 0.00000000 +F 1.30050000 1.30050000 1.30050000 +2 +Lattice="0.0 3.1775 3.1775 3.1775 0.0 3.1775 3.1775 3.1775 0.0" Properties=species:S:1:pos:R:3 energy=-171339.2451068673 Z=53.0 period=5.0 IP=-11.2571001053 EA=-3.5134999752 E_HOMO=-7.2360000610399995 E_LUMO=0.212999999523 r_s=0.899999976158 r_p=1.07000005245 r_d=1.7200000286099997 pbc="T T T" +Ag 0.00000000 0.00000000 0.00000000 +I 1.58875000 1.58875000 1.58875000 +2 +Lattice="0.0 2.816 2.816 2.816 0.0 2.816 2.816 2.816 0.0" Properties=species:S:1:pos:R:3 energy=-34200.29077459535 Z=33.0 period=4.0 IP=-9.26189994812 EA=-1.8392000198400003 E_HOMO=-5.34100008011 E_LUMO=0.0640000030398 r_s=0.850000023842 r_p=1.03999996185 r_d=2.0199999809299998 pbc="T T T" +Al 0.00000000 0.00000000 0.00000000 +As 1.40800000 1.40800000 1.40800000 +2 +Lattice="0.0 2.1725 2.1725 2.1725 0.0 2.1725 2.1725 2.1725 0.0" Properties=species:S:1:pos:R:3 energy=-4036.501997576937 Z=7.0 period=2.0 IP=-13.5852003098 EA=-1.86749994755 E_HOMO=-7.2389998436 E_LUMO=3.0569999218 r_s=0.540000021458 r_p=0.509999990463 r_d=1.53999996185 pbc="T T T" +Al 0.00000000 0.00000000 0.00000000 +N 1.08625000 1.08625000 1.08625000 +2 +Lattice="0.0 2.718 2.718 2.718 0.0 2.718 2.718 2.718 0.0" Properties=species:S:1:pos:R:3 energy=-7941.081703564847 Z=15.0 period=3.0 IP=-9.75059986115 EA=-1.9199999570800002 E_HOMO=-5.59600019455 E_LUMO=0.18299999833099997 r_s=0.829999983311 r_p=0.97000002861 r_d=1.76999998093 pbc="T T T" +Al 0.00000000 0.00000000 0.00000000 +P 1.35900000 1.35900000 1.35900000 +2 +Lattice="0.0 3.056 3.056 3.056 0.0 3.056 3.056 3.056 0.0" Properties=species:S:1:pos:R:3 energy=-92644.34887311883 Z=51.0 period=5.0 IP=-8.46829986572 EA=-1.84669995308 E_HOMO=-4.99100017548 E_LUMO=0.104999996722 r_s=1.0 r_p=1.23000001907 r_d=2.0599999427799998 pbc="T T T" +Al 0.00000000 0.00000000 0.00000000 +Sb 1.52800000 1.52800000 1.52800000 +2 +Lattice="0.0 2.8035 2.8035 2.8035 0.0 2.8035 2.8035 2.8035 0.0" Properties=species:S:1:pos:R:3 energy=-57457.9542356472 Z=33.0 period=4.0 IP=-9.26189994812 EA=-1.8392000198400003 E_HOMO=-5.34100008011 E_LUMO=0.0640000030398 r_s=0.850000023842 r_p=1.03999996185 r_d=2.0199999809299998 pbc="T T T" +Ga 0.00000000 0.00000000 0.00000000 +As 1.40175000 1.40175000 1.40175000 +2 +Lattice="0.0 2.367 2.367 2.367 0.0 2.367 2.367 2.367 0.0" Properties=species:S:1:pos:R:3 energy=-31240.22232232208 Z=33.0 period=4.0 IP=-9.26189994812 EA=-1.8392000198400003 E_HOMO=-5.34100008011 E_LUMO=0.0640000030398 r_s=0.850000023842 r_p=1.03999996185 r_d=2.0199999809299998 pbc="T T T" +B 0.00000000 0.00000000 0.00000000 +As 1.18350000 1.18350000 1.18350000 +2 +Lattice="0.0 1.7915000000000003 1.7915000000000003 1.7915000000000003 0.0 1.7915000000000003 1.7915000000000003 1.7915000000000003 0.0" Properties=species:S:1:pos:R:3 energy=-1076.7454955539624 Z=7.0 period=2.0 IP=-13.5852003098 EA=-1.86749994755 E_HOMO=-7.2389998436 E_LUMO=3.0569999218 r_s=0.540000021458 r_p=0.509999990463 r_d=1.53999996185 pbc="T T T" +B 0.00000000 0.00000000 0.00000000 +N 0.89575000 0.89575000 0.89575000 +2 +Lattice="0.0 2.246 2.246 2.246 0.0 2.246 2.246 2.246 0.0" Properties=species:S:1:pos:R:3 energy=-4981.291645038916 Z=15.0 period=3.0 IP=-9.75059986115 EA=-1.9199999570800002 E_HOMO=-5.59600019455 E_LUMO=0.18299999833099997 r_s=0.829999983311 r_p=0.97000002861 r_d=1.76999998093 pbc="T T T" +B 0.00000000 0.00000000 0.00000000 +P 1.12300000 1.12300000 1.12300000 +2 +Lattice="0.0 2.5930000000000004 2.5930000000000004 2.5930000000000004 0.0 2.5930000000000004 2.5930000000000004 2.5930000000000004 0.0" Properties=species:S:1:pos:R:3 energy=-89684.1945505284 Z=51.0 period=5.0 IP=-8.46829986572 EA=-1.84669995308 E_HOMO=-4.99100017548 E_LUMO=0.104999996722 r_s=1.0 r_p=1.23000001907 r_d=2.0599999427799998 pbc="T T T" +B 0.00000000 0.00000000 0.00000000 +Sb 1.29650000 1.29650000 1.29650000 +2 +Lattice="0.0 2.8965 2.8965 2.8965 0.0 2.8965 2.8965 2.8965 0.0" Properties=species:S:1:pos:R:3 energy=-113504.73396479135 Z=8.0 period=2.0 IP=-16.433200836199997 EA=-3.00589990616 E_HOMO=-9.19699954987 E_LUMO=2.54099988937 r_s=0.460000008345 r_p=0.430000007153 r_d=2.22000002861 pbc="T T T" +Ba 0.00000000 0.00000000 0.00000000 +O 1.44825000 1.44825000 1.44825000 +2 +Lattice="0.0 3.433 3.433 3.433 0.0 3.433 3.433 3.433 0.0" Properties=species:S:1:pos:R:3 energy=-117909.9511775038 Z=16.0 period=3.0 IP=-11.795100212100001 EA=-2.8448998928099996 E_HOMO=-7.105999946589999 E_LUMO=0.64200001955 r_s=0.7400000095370001 r_p=0.850000023842 r_d=2.36999988556 pbc="T T T" +Ba 0.00000000 0.00000000 0.00000000 +S 1.71650000 1.71650000 1.71650000 +2 +Lattice="0.0 3.5640000000000005 3.5640000000000005 3.5640000000000005 0.0 3.5640000000000005 3.5640000000000005 3.5640000000000005 0.0" Properties=species:S:1:pos:R:3 energy=-145716.42622697598 Z=34.0 period=4.0 IP=-10.9460000992 EA=-2.7509999275200006 E_HOMO=-6.65399980545 E_LUMO=1.31599998474 r_s=0.800000011921 r_p=0.949999988079 r_d=2.18000006676 pbc="T T T" +Ba 0.00000000 0.00000000 0.00000000 +Se 1.78200000 1.78200000 1.78200000 +2 +Lattice="0.0 3.807 3.807 3.807 0.0 3.807 3.807 3.807 0.0" Properties=species:S:1:pos:R:3 energy=-206203.85365855953 Z=52.0 period=5.0 IP=-9.86670017242 EA=-2.66599988937 E_HOMO=-6.10900020599 E_LUMO=0.09899999946360001 r_s=0.9399999976160001 r_p=1.1399999856899998 r_d=1.8300000429199998 pbc="T T T" +Ba 0.00000000 0.00000000 0.00000000 +Te 1.90350000 1.90350000 1.90350000 +2 +Lattice="0.0 1.8433800000000002 1.8433800000000002 1.8433800000000002 0.0 1.8433800000000002 1.8433800000000002 1.8433800000000002 0.0" Properties=species:S:1:pos:R:3 energy=-1219.1317960407468 Z=8.0 period=2.0 IP=-16.433200836199997 EA=-3.00589990616 E_HOMO=-9.19699954987 E_LUMO=2.54099988937 r_s=0.460000008345 r_p=0.430000007153 r_d=2.22000002861 pbc="T T T" +Be 0.00000000 0.00000000 0.00000000 +O 0.92169000 0.92169000 0.92169000 +2 +Lattice="0.0 2.399 2.399 2.399 0.0 2.399 2.399 2.399 0.0" Properties=species:S:1:pos:R:3 energy=-5623.02186716789 Z=16.0 period=3.0 IP=-11.795100212100001 EA=-2.8448998928099996 E_HOMO=-7.105999946589999 E_LUMO=0.64200001955 r_s=0.7400000095370001 r_p=0.850000023842 r_d=2.36999988556 pbc="T T T" +Be 0.00000000 0.00000000 0.00000000 +S 1.19950000 1.19950000 1.19950000 +2 +Lattice="0.0 2.5420000000000003 2.5420000000000003 2.5420000000000003 0.0 2.5420000000000003 2.5420000000000003 2.5420000000000003 0.0" Properties=species:S:1:pos:R:3 energy=-33429.291702542425 Z=34.0 period=4.0 IP=-10.9460000992 EA=-2.7509999275200006 E_HOMO=-6.65399980545 E_LUMO=1.31599998474 r_s=0.800000011921 r_p=0.949999988079 r_d=2.18000006676 pbc="T T T" +Be 0.00000000 0.00000000 0.00000000 +Se 1.27100000 1.27100000 1.27100000 +2 +Lattice="0.0 2.779 2.779 2.779 0.0 2.779 2.779 2.779 0.0" Properties=species:S:1:pos:R:3 energy=-93916.57277200608 Z=52.0 period=5.0 IP=-9.86670017242 EA=-2.66599988937 E_HOMO=-6.10900020599 E_LUMO=0.09899999946360001 r_s=0.9399999976160001 r_p=1.1399999856899998 r_d=1.8300000429199998 pbc="T T T" +Be 0.00000000 0.00000000 0.00000000 +Te 1.38950000 1.38950000 1.38950000 +2 +Lattice="0.0 1.767 1.767 1.767 0.0 1.767 1.767 1.767 0.0" Properties=species:S:1:pos:R:3 energy=-1029.1774239138254 Z=6.0 period=2.0 IP=-10.851699829100001 EA=-0.87239998579 E_HOMO=-5.415999889369999 E_LUMO=1.99199998379 r_s=0.6399999856949999 r_p=0.629999995232 r_d=1.62999999523 pbc="T T T" +C 0.00000000 0.00000000 0.00000000 +C 0.88350000 0.88350000 0.88350000 +2 +Lattice="0.0 2.5605 2.5605 2.5605 0.0 2.5605 2.5605 2.5605 0.0" Properties=species:S:1:pos:R:3 energy=-10276.63586618221 Z=8.0 period=2.0 IP=-16.433200836199997 EA=-3.00589990616 E_HOMO=-9.19699954987 E_LUMO=2.54099988937 r_s=0.460000008345 r_p=0.430000007153 r_d=2.22000002861 pbc="T T T" +Ca 0.00000000 0.00000000 0.00000000 +O 1.28025000 1.28025000 1.28025000 +2 +Lattice="0.0 3.0780000000000003 3.0780000000000003 3.0780000000000003 0.0 3.0780000000000003 3.0780000000000003 3.0780000000000003 0.0" Properties=species:S:1:pos:R:3 energy=-14681.577607840461 Z=16.0 period=3.0 IP=-11.795100212100001 EA=-2.8448998928099996 E_HOMO=-7.105999946589999 E_LUMO=0.64200001955 r_s=0.7400000095370001 r_p=0.850000023842 r_d=2.36999988556 pbc="T T T" +Ca 0.00000000 0.00000000 0.00000000 +S 1.53900000 1.53900000 1.53900000 +2 +Lattice="0.0 3.209 3.209 3.209 0.0 3.209 3.209 3.209 0.0" Properties=species:S:1:pos:R:3 energy=-42487.99212246608 Z=34.0 period=4.0 IP=-10.9460000992 EA=-2.7509999275200006 E_HOMO=-6.65399980545 E_LUMO=1.31599998474 r_s=0.800000011921 r_p=0.949999988079 r_d=2.18000006676 pbc="T T T" +Ca 0.00000000 0.00000000 0.00000000 +Se 1.60450000 1.60450000 1.60450000 +2 +Lattice="0.0 3.4565000000000006 3.4565000000000006 3.4565000000000006 0.0 3.4565000000000006 3.4565000000000006 3.4565000000000006 0.0" Properties=species:S:1:pos:R:3 energy=-102975.3456626407 Z=52.0 period=5.0 IP=-9.86670017242 EA=-2.66599988937 E_HOMO=-6.10900020599 E_LUMO=0.09899999946360001 r_s=0.9399999976160001 r_p=1.1399999856899998 r_d=1.8300000429199998 pbc="T T T" +Ca 0.00000000 0.00000000 0.00000000 +Te 1.72825000 1.72825000 1.72825000 +2 +Lattice="0.0 2.4965 2.4965 2.4965 0.0 2.4965 2.4965 2.4965 0.0" Properties=species:S:1:pos:R:3 energy=-78015.08414810536 Z=8.0 period=2.0 IP=-16.433200836199997 EA=-3.00589990616 E_HOMO=-9.19699954987 E_LUMO=2.54099988937 r_s=0.460000008345 r_p=0.430000007153 r_d=2.22000002861 pbc="T T T" +Cd 0.00000000 0.00000000 0.00000000 +O 1.24825000 1.24825000 1.24825000 +2 +Lattice="0.0 2.88 2.88 2.88 0.0 2.88 2.88 2.88 0.0" Properties=species:S:1:pos:R:3 energy=-82420.63603453907 Z=16.0 period=3.0 IP=-11.795100212100001 EA=-2.8448998928099996 E_HOMO=-7.105999946589999 E_LUMO=0.64200001955 r_s=0.7400000095370001 r_p=0.850000023842 r_d=2.36999988556 pbc="T T T" +Cd 0.00000000 0.00000000 0.00000000 +S 1.44000000 1.44000000 1.44000000 +2 +Lattice="0.0 3.0065 3.0065 3.0065 0.0 3.0065 3.0065 3.0065 0.0" Properties=species:S:1:pos:R:3 energy=-110227.14483277715 Z=34.0 period=4.0 IP=-10.9460000992 EA=-2.7509999275200006 E_HOMO=-6.65399980545 E_LUMO=1.31599998474 r_s=0.800000011921 r_p=0.949999988079 r_d=2.18000006676 pbc="T T T" +Cd 0.00000000 0.00000000 0.00000000 +Se 1.50325000 1.50325000 1.50325000 +2 +Lattice="0.0 3.207 3.207 3.207 0.0 3.207 3.207 3.207 0.0" Properties=species:S:1:pos:R:3 energy=-170714.7038519616 Z=52.0 period=5.0 IP=-9.86670017242 EA=-2.66599988937 E_HOMO=-6.10900020599 E_LUMO=0.09899999946360001 r_s=0.9399999976160001 r_p=1.1399999856899998 r_d=1.8300000429199998 pbc="T T T" +Cd 0.00000000 0.00000000 0.00000000 +Te 1.60350000 1.60350000 1.60350000 +2 +Lattice="0.0 3.9145 3.9145 3.9145 0.0 3.9145 3.9145 3.9145 0.0" Properties=species:S:1:pos:R:3 energy=-143254.27847013192 Z=35.0 period=4.0 IP=-12.649600029 EA=-3.73930001259 E_HOMO=-8.001000404360001 E_LUMO=0.7080000042919999 r_s=0.75 r_p=0.879999995232 r_d=1.87000000477 pbc="T T T" +Cs 0.00000000 0.00000000 0.00000000 +Br 1.95725000 1.95725000 1.95725000 +2 +Lattice="0.0 3.7425 3.7425 3.7425 0.0 3.7425 3.7425 3.7425 0.0" Properties=species:S:1:pos:R:3 energy=-113870.47586427315 Z=17.0 period=3.0 IP=-13.9018001556 EA=-3.9707999229400004 E_HOMO=-8.699999809269999 E_LUMO=0.574000000954 r_s=0.6800000071529999 r_p=0.7599999904629999 r_d=1.6699999570800002 pbc="T T T" +Cs 0.00000000 0.00000000 0.00000000 +Cl 1.87125000 1.87125000 1.87125000 +2 +Lattice="0.0 3.171 3.171 3.171 0.0 3.171 3.171 3.171 0.0" Properties=species:S:1:pos:R:3 energy=-108950.78058551207 Z=9.0 period=2.0 IP=-19.4043006897 EA=-4.27349996567 E_HOMO=-11.2939996719 E_LUMO=1.25100004673 r_s=0.409999996424 r_p=0.37000000476800005 r_d=1.42999994755 pbc="T T T" +Cs 0.00000000 0.00000000 0.00000000 +F 1.58550000 1.58550000 1.58550000 +2 +Lattice="0.0 4.176 4.176 4.176 0.0 4.176 4.176 4.176 0.0" Properties=species:S:1:pos:R:3 energy=-205812.02046976562 Z=53.0 period=5.0 IP=-11.2571001053 EA=-3.5134999752 E_HOMO=-7.2360000610399995 E_LUMO=0.212999999523 r_s=0.899999976158 r_p=1.07000005245 r_d=1.7200000286099997 pbc="T T T" +Cs 0.00000000 0.00000000 0.00000000 +I 2.08800000 2.08800000 2.08800000 +2 +Lattice="0.0 2.749 2.749 2.749 0.0 2.749 2.749 2.749 0.0" Properties=species:S:1:pos:R:3 energy=-58243.92527866041 Z=35.0 period=4.0 IP=-12.649600029 EA=-3.73930001259 E_HOMO=-8.001000404360001 E_LUMO=0.7080000042919999 r_s=0.75 r_p=0.879999995232 r_d=1.87000000477 pbc="T T T" +Cu 0.00000000 0.00000000 0.00000000 +Br 1.37450000 1.37450000 1.37450000 +2 +Lattice="0.0 2.6050000000000004 2.6050000000000004 2.6050000000000004 0.0 2.6050000000000004 2.6050000000000004 2.6050000000000004 0.0" Properties=species:S:1:pos:R:3 energy=-28860.103219256605 Z=17.0 period=3.0 IP=-13.9018001556 EA=-3.9707999229400004 E_HOMO=-8.699999809269999 E_LUMO=0.574000000954 r_s=0.6800000071529999 r_p=0.7599999904629999 r_d=1.6699999570800002 pbc="T T T" +Cu 0.00000000 0.00000000 0.00000000 +Cl 1.30250000 1.30250000 1.30250000 +2 +Lattice="0.0 2.3315 2.3315 2.3315 0.0 2.3315 2.3315 2.3315 0.0" Properties=species:S:1:pos:R:3 energy=-23939.94381870442 Z=9.0 period=2.0 IP=-19.4043006897 EA=-4.27349996567 E_HOMO=-11.2939996719 E_LUMO=1.25100004673 r_s=0.409999996424 r_p=0.37000000476800005 r_d=1.42999994755 pbc="T T T" +Cu 0.00000000 0.00000000 0.00000000 +F 1.16575000 1.16575000 1.16575000 +2 +Lattice="0.0 2.932 2.932 2.932 0.0 2.932 2.932 2.932 0.0" Properties=species:S:1:pos:R:3 energy=-120801.82338283311 Z=53.0 period=5.0 IP=-11.2571001053 EA=-3.5134999752 E_HOMO=-7.2360000610399995 E_LUMO=0.212999999523 r_s=0.899999976158 r_p=1.07000005245 r_d=1.7200000286099997 pbc="T T T" +Cu 0.00000000 0.00000000 0.00000000 +I 1.46600000 1.46600000 1.46600000 +2 +Lattice="0.0 2.23 2.23 2.23 0.0 2.23 2.23 2.23 0.0" Properties=species:S:1:pos:R:3 energy=-27293.39739091784 Z=7.0 period=2.0 IP=-13.5852003098 EA=-1.86749994755 E_HOMO=-7.2389998436 E_LUMO=3.0569999218 r_s=0.540000021458 r_p=0.509999990463 r_d=1.53999996185 pbc="T T T" +Ga 0.00000000 0.00000000 0.00000000 +N 1.11500000 1.11500000 1.11500000 +2 +Lattice="0.0 2.6975 2.6975 2.6975 0.0 2.6975 2.6975 2.6975 0.0" Properties=species:S:1:pos:R:3 energy=-31198.704267711593 Z=15.0 period=3.0 IP=-9.75059986115 EA=-1.9199999570800002 E_HOMO=-5.59600019455 E_LUMO=0.18299999833099997 r_s=0.829999983311 r_p=0.97000002861 r_d=1.76999998093 pbc="T T T" +Ga 0.00000000 0.00000000 0.00000000 +P 1.34875000 1.34875000 1.34875000 +2 +Lattice="0.0 3.026 3.026 3.026 0.0 3.026 3.026 3.026 0.0" Properties=species:S:1:pos:R:3 energy=-115902.13737392346 Z=51.0 period=5.0 IP=-8.46829986572 EA=-1.84669995308 E_HOMO=-4.99100017548 E_LUMO=0.104999996722 r_s=1.0 r_p=1.23000001907 r_d=2.0599999427799998 pbc="T T T" +Ga 0.00000000 0.00000000 0.00000000 +Sb 1.51300000 1.51300000 1.51300000 +2 +Lattice="0.0 2.8130000000000006 2.8130000000000006 2.8130000000000006 0.0 2.8130000000000006 2.8130000000000006 2.8130000000000006 0.0" Properties=species:S:1:pos:R:3 energy=-57359.76205669544 Z=32.0 period=4.0 IP=-7.566999912260001 EA=-0.9490000009540001 E_HOMO=-4.04600000381 E_LUMO=2.17499995232 r_s=0.920000016689 r_p=1.15999996662 r_d=2.36999988556 pbc="T T T" +Ge 0.00000000 0.00000000 0.00000000 +Ge 1.40650000 1.40650000 1.40650000 +2 +Lattice="0.0 2.2655 2.2655 2.2655 0.0 2.2655 2.2655 2.2655 0.0" Properties=species:S:1:pos:R:3 energy=-29194.089918007925 Z=6.0 period=2.0 IP=-10.851699829100001 EA=-0.87239998579 E_HOMO=-5.415999889369999 E_LUMO=1.99199998379 r_s=0.6399999856949999 r_p=0.629999995232 r_d=1.62999999523 pbc="T T T" +Ge 0.00000000 0.00000000 0.00000000 +C 1.13275000 1.13275000 1.13275000 +2 +Lattice="0.0 2.7505000000000006 2.7505000000000006 2.7505000000000006 0.0 2.7505000000000006 2.7505000000000006 2.7505000000000006 0.0" Properties=species:S:1:pos:R:3 energy=-32616.95724905803 Z=14.0 period=3.0 IP=-7.75769996643 EA=-0.992999970913 E_HOMO=-4.16300010681 E_LUMO=0.439999997616 r_s=0.9399999976160001 r_p=1.12999999523 r_d=1.88999998569 pbc="T T T" +Ge 0.00000000 0.00000000 0.00000000 +Si 1.37525000 1.37525000 1.37525000 +2 +Lattice="0.0 3.0140000000000002 3.0140000000000002 3.0140000000000002 0.0 3.0140000000000002 3.0140000000000002 3.0140000000000002 0.0" Properties=species:S:1:pos:R:3 energy=-111895.92130234063 Z=33.0 period=4.0 IP=-9.26189994812 EA=-1.8392000198400003 E_HOMO=-5.34100008011 E_LUMO=0.0640000030398 r_s=0.850000023842 r_p=1.03999996185 r_d=2.0199999809299998 pbc="T T T" +In 0.00000000 0.00000000 0.00000000 +As 1.50700000 1.50700000 1.50700000 +2 +Lattice="0.0 2.4715 2.4715 2.4715 0.0 2.4715 2.4715 2.4715 0.0" Properties=species:S:1:pos:R:3 energy=-81730.86850504993 Z=7.0 period=2.0 IP=-13.5852003098 EA=-1.86749994755 E_HOMO=-7.2389998436 E_LUMO=3.0569999218 r_s=0.540000021458 r_p=0.509999990463 r_d=1.53999996185 pbc="T T T" +In 0.00000000 0.00000000 0.00000000 +N 1.23575000 1.23575000 1.23575000 +2 +Lattice="0.0 2.9150000000000005 2.9150000000000005 2.9150000000000005 0.0 2.9150000000000005 2.9150000000000005 2.9150000000000005 0.0" Properties=species:S:1:pos:R:3 energy=-85636.59118980984 Z=15.0 period=3.0 IP=-9.75059986115 EA=-1.9199999570800002 E_HOMO=-5.59600019455 E_LUMO=0.18299999833099997 r_s=0.829999983311 r_p=0.97000002861 r_d=1.76999998093 pbc="T T T" +In 0.00000000 0.00000000 0.00000000 +P 1.45750000 1.45750000 1.45750000 +2 +Lattice="0.0 3.227 3.227 3.227 0.0 3.227 3.227 3.227 0.0" Properties=species:S:1:pos:R:3 energy=-170340.1816661715 Z=51.0 period=5.0 IP=-8.46829986572 EA=-1.84669995308 E_HOMO=-4.99100017548 E_LUMO=0.104999996722 r_s=1.0 r_p=1.23000001907 r_d=2.0599999427799998 pbc="T T T" +In 0.00000000 0.00000000 0.00000000 +Sb 1.61350000 1.61350000 1.61350000 +2 +Lattice="0.0 3.5705000000000005 3.5705000000000005 3.5705000000000005 0.0 3.5705000000000005 3.5705000000000005 3.5705000000000005 0.0" Properties=species:S:1:pos:R:3 energy=-43846.06201009732 Z=35.0 period=4.0 IP=-12.649600029 EA=-3.73930001259 E_HOMO=-8.001000404360001 E_LUMO=0.7080000042919999 r_s=0.75 r_p=0.879999995232 r_d=1.87000000477 pbc="T T T" +K 0.00000000 0.00000000 0.00000000 +Br 1.78525000 1.78525000 1.78525000 +2 +Lattice="0.0 3.3865000000000003 3.3865000000000003 3.3865000000000003 0.0 3.3865000000000003 3.3865000000000003 3.3865000000000003 0.0" Properties=species:S:1:pos:R:3 energy=-14462.280011004648 Z=17.0 period=3.0 IP=-13.9018001556 EA=-3.9707999229400004 E_HOMO=-8.699999809269999 E_LUMO=0.574000000954 r_s=0.6800000071529999 r_p=0.7599999904629999 r_d=1.6699999570800002 pbc="T T T" +K 0.00000000 0.00000000 0.00000000 +Cl 1.69325000 1.69325000 1.69325000 +2 +Lattice="0.0 2.8485 2.8485 2.8485 0.0 2.8485 2.8485 2.8485 0.0" Properties=species:S:1:pos:R:3 energy=-9542.631470961054 Z=9.0 period=2.0 IP=-19.4043006897 EA=-4.27349996567 E_HOMO=-11.2939996719 E_LUMO=1.25100004673 r_s=0.409999996424 r_p=0.37000000476800005 r_d=1.42999994755 pbc="T T T" +K 0.00000000 0.00000000 0.00000000 +F 1.42425000 1.42425000 1.42425000 +2 +Lattice="0.0 3.823 3.823 3.823 0.0 3.823 3.823 3.823 0.0" Properties=species:S:1:pos:R:3 energy=-106403.78285770351 Z=53.0 period=5.0 IP=-11.2571001053 EA=-3.5134999752 E_HOMO=-7.2360000610399995 E_LUMO=0.212999999523 r_s=0.899999976158 r_p=1.07000005245 r_d=1.7200000286099997 pbc="T T T" +K 0.00000000 0.00000000 0.00000000 +I 1.91150000 1.91150000 1.91150000 +2 +Lattice="0.0 2.8440000000000003 2.8440000000000003 2.8440000000000003 0.0 2.8440000000000003 2.8440000000000003 2.8440000000000003 0.0" Properties=species:S:1:pos:R:3 energy=-35758.22129047253 Z=35.0 period=4.0 IP=-12.649600029 EA=-3.73930001259 E_HOMO=-8.001000404360001 E_LUMO=0.7080000042919999 r_s=0.75 r_p=0.879999995232 r_d=1.87000000477 pbc="T T T" +Li 0.00000000 0.00000000 0.00000000 +Br 1.42200000 1.42200000 1.42200000 +2 +Lattice="0.0 2.665 2.665 2.665 0.0 2.665 2.665 2.665 0.0" Properties=species:S:1:pos:R:3 energy=-6374.504439828846 Z=17.0 period=3.0 IP=-13.9018001556 EA=-3.9707999229400004 E_HOMO=-8.699999809269999 E_LUMO=0.574000000954 r_s=0.6800000071529999 r_p=0.7599999904629999 r_d=1.6699999570800002 pbc="T T T" +Li 0.00000000 0.00000000 0.00000000 +Cl 1.33250000 1.33250000 1.33250000 +2 +Lattice="0.0 2.106 2.106 2.106 0.0 2.106 2.106 2.106 0.0" Properties=species:S:1:pos:R:3 energy=-1455.1827425371428 Z=9.0 period=2.0 IP=-19.4043006897 EA=-4.27349996567 E_HOMO=-11.2939996719 E_LUMO=1.25100004673 r_s=0.409999996424 r_p=0.37000000476800005 r_d=1.42999994755 pbc="T T T" +Li 0.00000000 0.00000000 0.00000000 +F 1.05300000 1.05300000 1.05300000 +2 +Lattice="0.0 3.1045 3.1045 3.1045 0.0 3.1045 3.1045 3.1045 0.0" Properties=species:S:1:pos:R:3 energy=-98315.88338153038 Z=53.0 period=5.0 IP=-11.2571001053 EA=-3.5134999752 E_HOMO=-7.2360000610399995 E_LUMO=0.212999999523 r_s=0.899999976158 r_p=1.07000005245 r_d=1.7200000286099997 pbc="T T T" +Li 0.00000000 0.00000000 0.00000000 +I 1.55225000 1.55225000 1.55225000 +2 +Lattice="0.0 2.2595 2.2595 2.2595 0.0 2.2595 2.2595 2.2595 0.0" Properties=species:S:1:pos:R:3 energy=-3736.8424702157927 Z=8.0 period=2.0 IP=-16.433200836199997 EA=-3.00589990616 E_HOMO=-9.19699954987 E_LUMO=2.54099988937 r_s=0.460000008345 r_p=0.430000007153 r_d=2.22000002861 pbc="T T T" +Mg 0.00000000 0.00000000 0.00000000 +O 1.12975000 1.12975000 1.12975000 +2 +Lattice="0.0 2.799 2.799 2.799 0.0 2.799 2.799 2.799 0.0" Properties=species:S:1:pos:R:3 energy=-8141.506683538365 Z=16.0 period=3.0 IP=-11.795100212100001 EA=-2.8448998928099996 E_HOMO=-7.105999946589999 E_LUMO=0.64200001955 r_s=0.7400000095370001 r_p=0.850000023842 r_d=2.36999988556 pbc="T T T" +Mg 0.00000000 0.00000000 0.00000000 +S 1.39950000 1.39950000 1.39950000 +2 +Lattice="0.0 2.938 2.938 2.938 0.0 2.938 2.938 2.938 0.0" Properties=species:S:1:pos:R:3 energy=-35947.88472904348 Z=34.0 period=4.0 IP=-10.9460000992 EA=-2.7509999275200006 E_HOMO=-6.65399980545 E_LUMO=1.31599998474 r_s=0.800000011921 r_p=0.949999988079 r_d=2.18000006676 pbc="T T T" +Mg 0.00000000 0.00000000 0.00000000 +Se 1.46900000 1.46900000 1.46900000 +2 +Lattice="0.0 3.186 3.186 3.186 0.0 3.186 3.186 3.186 0.0" Properties=species:S:1:pos:R:3 energy=-96435.23376243205 Z=52.0 period=5.0 IP=-9.86670017242 EA=-2.66599988937 E_HOMO=-6.10900020599 E_LUMO=0.09899999946360001 r_s=0.9399999976160001 r_p=1.1399999856899998 r_d=1.8300000429199998 pbc="T T T" +Mg 0.00000000 0.00000000 0.00000000 +Te 1.59300000 1.59300000 1.59300000 +2 +Lattice="0.0 3.189 3.189 3.189 0.0 3.189 3.189 3.189 0.0" Properties=species:S:1:pos:R:3 energy=-37858.99965472755 Z=35.0 period=4.0 IP=-12.649600029 EA=-3.73930001259 E_HOMO=-8.001000404360001 E_LUMO=0.7080000042919999 r_s=0.75 r_p=0.879999995232 r_d=1.87000000477 pbc="T T T" +Na 0.00000000 0.00000000 0.00000000 +Br 1.59450000 1.59450000 1.59450000 +2 +Lattice="0.0 3.0155000000000003 3.0155000000000003 3.0155000000000003 0.0 3.0155000000000003 3.0155000000000003 3.0155000000000003 0.0" Properties=species:S:1:pos:R:3 energy=-8475.24044242147 Z=17.0 period=3.0 IP=-13.9018001556 EA=-3.9707999229400004 E_HOMO=-8.699999809269999 E_LUMO=0.574000000954 r_s=0.6800000071529999 r_p=0.7599999904629999 r_d=1.6699999570800002 pbc="T T T" +Na 0.00000000 0.00000000 0.00000000 +Cl 1.50775000 1.50775000 1.50775000 +2 +Lattice="0.0 2.4825 2.4825 2.4825 0.0 2.4825 2.4825 2.4825 0.0" Properties=species:S:1:pos:R:3 energy=-3555.697617887323 Z=9.0 period=2.0 IP=-19.4043006897 EA=-4.27349996567 E_HOMO=-11.2939996719 E_LUMO=1.25100004673 r_s=0.409999996424 r_p=0.37000000476800005 r_d=1.42999994755 pbc="T T T" +Na 0.00000000 0.00000000 0.00000000 +F 1.24125000 1.24125000 1.24125000 +2 +Lattice="0.0 3.446 3.446 3.446 0.0 3.446 3.446 3.446 0.0" Properties=species:S:1:pos:R:3 energy=-100416.70139304109 Z=53.0 period=5.0 IP=-11.2571001053 EA=-3.5134999752 E_HOMO=-7.2360000610399995 E_LUMO=0.212999999523 r_s=0.899999976158 r_p=1.07000005245 r_d=1.7200000286099997 pbc="T T T" +Na 0.00000000 0.00000000 0.00000000 +I 1.72300000 1.72300000 1.72300000 +2 +Lattice="0.0 3.7255 3.7255 3.7255 0.0 3.7255 3.7255 3.7255 0.0" Properties=species:S:1:pos:R:3 energy=-76473.52557213472 Z=35.0 period=4.0 IP=-12.649600029 EA=-3.73930001259 E_HOMO=-8.001000404360001 E_LUMO=0.7080000042919999 r_s=0.75 r_p=0.879999995232 r_d=1.87000000477 pbc="T T T" +Rb 0.00000000 0.00000000 0.00000000 +Br 1.86275000 1.86275000 1.86275000 +2 +Lattice="0.0 3.553 3.553 3.553 0.0 3.553 3.553 3.553 0.0" Properties=species:S:1:pos:R:3 energy=-47089.732419464555 Z=17.0 period=3.0 IP=-13.9018001556 EA=-3.9707999229400004 E_HOMO=-8.699999809269999 E_LUMO=0.574000000954 r_s=0.6800000071529999 r_p=0.7599999904629999 r_d=1.6699999570800002 pbc="T T T" +Rb 0.00000000 0.00000000 0.00000000 +Cl 1.77650000 1.77650000 1.77650000 +2 +Lattice="0.0 3.006 3.006 3.006 0.0 3.006 3.006 3.006 0.0" Properties=species:S:1:pos:R:3 energy=-42170.04806322617 Z=9.0 period=2.0 IP=-19.4043006897 EA=-4.27349996567 E_HOMO=-11.2939996719 E_LUMO=1.25100004673 r_s=0.409999996424 r_p=0.37000000476800005 r_d=1.42999994755 pbc="T T T" +Rb 0.00000000 0.00000000 0.00000000 +F 1.50300000 1.50300000 1.50300000 +2 +Lattice="0.0 3.9885 3.9885 3.9885 0.0 3.9885 3.9885 3.9885 0.0" Properties=species:S:1:pos:R:3 energy=-139031.25821177967 Z=53.0 period=5.0 IP=-11.2571001053 EA=-3.5134999752 E_HOMO=-7.2360000610399995 E_LUMO=0.212999999523 r_s=0.899999976158 r_p=1.07000005245 r_d=1.7200000286099997 pbc="T T T" +Rb 0.00000000 0.00000000 0.00000000 +I 1.99425000 1.99425000 1.99425000 +2 +Lattice="0.0 2.7015 2.7015 2.7015 0.0 2.7015 2.7015 2.7015 0.0" Properties=species:S:1:pos:R:3 energy=-7874.176328141364 Z=14.0 period=3.0 IP=-7.75769996643 EA=-0.992999970913 E_HOMO=-4.16300010681 E_LUMO=0.439999997616 r_s=0.9399999976160001 r_p=1.12999999523 r_d=1.88999998569 pbc="T T T" +Si 0.00000000 0.00000000 0.00000000 +Si 1.35075000 1.35075000 1.35075000 +2 +Lattice="0.0 2.1655 2.1655 2.1655 0.0 2.1655 2.1655 2.1655 0.0" Properties=species:S:1:pos:R:3 energy=-4451.95462247301 Z=6.0 period=2.0 IP=-10.851699829100001 EA=-0.87239998579 E_HOMO=-5.415999889369999 E_LUMO=1.99199998379 r_s=0.6399999856949999 r_p=0.629999995232 r_d=1.62999999523 pbc="T T T" +Si 0.00000000 0.00000000 0.00000000 +C 1.08275000 1.08275000 1.08275000 +2 +Lattice="0.0 3.238 3.238 3.238 0.0 3.238 3.238 3.238 0.0" Properties=species:S:1:pos:R:3 energy=-170215.36755613738 Z=50.0 period=5.0 IP=-7.04279994965 EA=-1.03919994831 E_HOMO=-3.86599993706 E_LUMO=0.008000000379979999 r_s=1.05999994278 r_p=1.34000003338 r_d=2.02999997139 pbc="T T T" +Sn 0.00000000 0.00000000 0.00000000 +Sn 1.61900000 1.61900000 1.61900000 +2 +Lattice="0.0 2.4995 2.4995 2.4995 0.0 2.4995 2.4995 2.4995 0.0" Properties=species:S:1:pos:R:3 energy=-85621.48894653581 Z=6.0 period=2.0 IP=-10.851699829100001 EA=-0.87239998579 E_HOMO=-5.415999889369999 E_LUMO=1.99199998379 r_s=0.6399999856949999 r_p=0.629999995232 r_d=1.62999999523 pbc="T T T" +Sn 0.00000000 0.00000000 0.00000000 +C 1.24975000 1.24975000 1.24975000 +2 +Lattice="0.0 3.03 3.03 3.03 0.0 3.03 3.03 3.03 0.0" Properties=species:S:1:pos:R:3 energy=-113787.5319504882 Z=32.0 period=4.0 IP=-7.566999912260001 EA=-0.9490000009540001 E_HOMO=-4.04600000381 E_LUMO=2.17499995232 r_s=0.920000016689 r_p=1.15999996662 r_d=2.36999988556 pbc="T T T" +Sn 0.00000000 0.00000000 0.00000000 +Ge 1.51500000 1.51500000 1.51500000 +2 +Lattice="0.0 2.9765 2.9765 2.9765 0.0 2.9765 2.9765 2.9765 0.0" Properties=species:S:1:pos:R:3 energy=-89044.63051199305 Z=14.0 period=3.0 IP=-7.75769996643 EA=-0.992999970913 E_HOMO=-4.16300010681 E_LUMO=0.439999997616 r_s=0.9399999976160001 r_p=1.12999999523 r_d=1.88999998569 pbc="T T T" +Sn 0.00000000 0.00000000 0.00000000 +Si 1.48825000 1.48825000 1.48825000 +2 +Lattice="0.0 2.74 2.74 2.74 0.0 2.74 2.74 2.74 0.0" Properties=species:S:1:pos:R:3 energy=-44570.141415662634 Z=8.0 period=2.0 IP=-16.433200836199997 EA=-3.00589990616 E_HOMO=-9.19699954987 E_LUMO=2.54099988937 r_s=0.460000008345 r_p=0.430000007153 r_d=2.22000002861 pbc="T T T" +Sr 0.00000000 0.00000000 0.00000000 +O 1.37000000 1.37000000 1.37000000 +2 +Lattice="0.0 3.257 3.257 3.257 0.0 3.257 3.257 3.257 0.0" Properties=species:S:1:pos:R:3 energy=-48975.26714918975 Z=16.0 period=3.0 IP=-11.795100212100001 EA=-2.8448998928099996 E_HOMO=-7.105999946589999 E_LUMO=0.64200001955 r_s=0.7400000095370001 r_p=0.850000023842 r_d=2.36999988556 pbc="T T T" +Sr 0.00000000 0.00000000 0.00000000 +S 1.62850000 1.62850000 1.62850000 +2 +Lattice="0.0 3.3875000000000006 3.3875000000000006 3.3875000000000006 0.0 3.3875000000000006 3.3875000000000006 3.3875000000000006 0.0" Properties=species:S:1:pos:R:3 energy=-76781.71391809703 Z=34.0 period=4.0 IP=-10.9460000992 EA=-2.7509999275200006 E_HOMO=-6.65399980545 E_LUMO=1.31599998474 r_s=0.800000011921 r_p=0.949999988079 r_d=2.18000006676 pbc="T T T" +Sr 0.00000000 0.00000000 0.00000000 +Se 1.69375000 1.69375000 1.69375000 +2 +Lattice="0.0 3.6335000000000006 3.6335000000000006 3.6335000000000006 0.0 3.6335000000000006 3.6335000000000006 3.6335000000000006 0.0" Properties=species:S:1:pos:R:3 energy=-137269.10785271216 Z=52.0 period=5.0 IP=-9.86670017242 EA=-2.66599988937 E_HOMO=-6.10900020599 E_LUMO=0.09899999946360001 r_s=0.9399999976160001 r_p=1.1399999856899998 r_d=1.8300000429199998 pbc="T T T" +Sr 0.00000000 0.00000000 0.00000000 +Te 1.81675000 1.81675000 1.81675000 +2 +Lattice="0.0 2.2465 2.2465 2.2465 0.0 2.2465 2.2465 2.2465 0.0" Properties=species:S:1:pos:R:3 energy=-25540.911172888984 Z=8.0 period=2.0 IP=-16.433200836199997 EA=-3.00589990616 E_HOMO=-9.19699954987 E_LUMO=2.54099988937 r_s=0.460000008345 r_p=0.430000007153 r_d=2.22000002861 pbc="T T T" +Zn 0.00000000 0.00000000 0.00000000 +O 1.12325000 1.12325000 1.12325000 +2 +Lattice="0.0 2.6495000000000006 2.6495000000000006 2.6495000000000006 0.0 2.6495000000000006 2.6495000000000006 2.6495000000000006 0.0" Properties=species:S:1:pos:R:3 energy=-29946.16518641784 Z=16.0 period=3.0 IP=-11.795100212100001 EA=-2.8448998928099996 E_HOMO=-7.105999946589999 E_LUMO=0.64200001955 r_s=0.7400000095370001 r_p=0.850000023842 r_d=2.36999988556 pbc="T T T" +Zn 0.00000000 0.00000000 0.00000000 +S 1.32475000 1.32475000 1.32475000 +2 +Lattice="0.0 2.786 2.786 2.786 0.0 2.786 2.786 2.786 0.0" Properties=species:S:1:pos:R:3 energy=-57752.58301237795 Z=34.0 period=4.0 IP=-10.9460000992 EA=-2.7509999275200006 E_HOMO=-6.65399980545 E_LUMO=1.31599998474 r_s=0.800000011921 r_p=0.949999988079 r_d=2.18000006676 pbc="T T T" +Zn 0.00000000 0.00000000 0.00000000 +Se 1.39300000 1.39300000 1.39300000 +2 +Lattice="0.0 2.999 2.999 2.999 0.0 2.999 2.999 2.999 0.0" Properties=species:S:1:pos:R:3 energy=-118240.05267691075 Z=52.0 period=5.0 IP=-9.86670017242 EA=-2.66599988937 E_HOMO=-6.10900020599 E_LUMO=0.09899999946360001 r_s=0.9399999976160001 r_p=1.1399999856899998 r_d=1.8300000429199998 pbc="T T T" +Zn 0.00000000 0.00000000 0.00000000 +Te 1.49950000 1.49950000 1.49950000 diff --git a/data/data.pkl b/data/data.pkl deleted file mode 100644 index bcefdf05625eb34be8bb27579ed7008792a0ef96..0000000000000000000000000000000000000000 Binary files a/data/data.pkl and /dev/null differ