A method for detecting a plurality of analytes in a biological sample, wherein each distinct target analyte of N distinct target analytes is immobilized on a solid substrate in a location that is spatially separate from any other distinct target analyte of the N distinct target analytes, the method comprising: selecting sets of fluorescently tagged probes comprising X distinct colours, wherein each of said probes is detectably labelled such that one probe is configured to detect one distinct target analyte; performing at least M cycles of single molecule detection, each cycle comprising one or more passes; wherein each pass comprises selective binding between the probes and distinct target analytes and signal detection; wherein each cycle further comprises stripping of the probes form the substrate; detecting from each of said at least M cycles a presence or an absence of a plurality of signals from said spatially separate locations of said substrate; and determining from said plurality of signals information about the presence or absence of one or more of said X colours for each of the N distinct target analytes in each of the passes of the cycle; and encoding said information into at least K bits of information using an error correcting code, combining said K bits of information into L = K x M bits of total information so that L bits of information describe the presence or absence of the one or more of said N distinct target analytes; wherein K, M and X are chosen so that X M >N, L> log 2 (N); and wherein said M cycles comprise one or more additional cycles to account for errors in the detected signals by generating additional bits of information compared to the minimum number of bits of information required to identify said N distinct analytes. selecting sets of fluorescently tagged probes comprising X distinct colours, wherein each of said probes is detectably labelled such that one probe is configured to detect one distinct target analyte; performing at least M cycles of single molecule detection, each cycle comprising one or more passes; wherein each pass comprises selective binding between the probes and distinct target analytes and signal detection; wherein each cycle further comprises stripping of the probes form the substrate; detecting from each of said at least M cycles a presence or an absence of a plurality of signals from said spatially separate locations of said substrate; and determining from said plurality of signals information about the presence or absence of one or more of said X colours for each of the N distinct target analytes in each of the passes of the cycle; and encoding said information into at least K bits of information using an error correcting code, combining said K bits of information into L = K x M bits of total information so that L bits of information describe the presence or absence of the one or more of said N distinct target analytes; wherein K, M and X are chosen so that X M >N, L> log 2 (N); and wherein said M cycles comprise one or more additional cycles to account for errors in the detected signals by generating additional bits of information compared to the minimum number of bits of information required to identify said N distinct analytes. <EOS>