def generateProviderReport(results, providerId): results = subsetResults(results=results, providerId=providerId) fn = os.path.join(reportDir, "%s.html" % str(providerId)) with open(fn, 'w') as outF: outF.write('<html>\n') outF.write(' <head>\n') outF.write(' <title>Report for %s</title>\n' % (PROVIDERS[providerId])) outF.write(' </head>\n') outF.write(' <body>\n') outF.write(' <h1>Provider report for: %s</h1>\n' % (PROVIDERS[providerId])) outF.write(' <br /><br />\n') outF.write(' <table>\n') # I have # unique species outF.write(' <tr>\n') outF.write(' <th>Number of unique species:</th>\n') outF.write(' <td>%s</td>\n' % getNumberOfUniqueTaxa(results, providerId=providerId)) outF.write(' </tr>\n') # I have # rare species ( <= 10 points) outF.write(' <tr>\n') outF.write(' <th>Number of rare species (<= 10 points)</th>\n') outF.write(' <td>%s</td>\n' % getNumberOfRareTaxaByPoints(results, providerId=providerId)) outF.write(' </tr>\n') # I have # rare species ( <= 5 providers) outF.write(' <tr>\n') outF.write(' <th>Number of rare species (<= 5 providers)</th>\n') outF.write(' <td>%s</td>\n' % getNumberOfRareTaxaByProviders(results, providerId=providerId)) outF.write(' </tr>\n') # I have # of taxa represented outF.write(' <tr>\n') outF.write(' <th>Number of taxa represented</th>\n') outF.write(' <td>%s</td>\n' % getNumberOfTaxaRepresented(results, providerId=providerId)) outF.write(' </tr>\n') outF.write(' </table>\n') # I am ranked in the top 3 for data contributed for: globalTopContrib = providerRankedInTopX(results, providerId) outF.write(' <h2>I am ranked in the top 3 for data contributed to these species globally</h2>\n') outF.write(' <ul>\n') for r in globalTopContrib: outF.write(' <li>%s - %s</li>\n' % (TAXA[r[2]]['name'], r[6])) outF.write(' </ul>\n') outF.write(' <br /><br />\n') # I am one of x providers of species globalProvRareSpecies = providerOfRareTaxa(results, providerId, maxPoints=10) outF.write(' <h2>I am one of X providers of these species globally</h2>\n') outF.write(' <ul>\n') for r in globalProvRareSpecies: outF.write(' <li>%s - %s</li>\n' % (TAXA[r[2]]['name'], r[7])) outF.write(' </ul>\n') outF.write(' <br /><br />\n') # Regionally # I am ranked in the top 3 for data contributed for: # I am one of x providers of species # For each continent outF.write(' <h2>Continents</h2>\n') for k in CONTINENTS_LOOKUP: regionId = CONTINENTS_LOOKUP[k] regionMostContrib = providerRankedInTopX(results, providerId, regionId=regionId) regionRareProv = providerOfRareTaxa(results, providerId, regionId=regionId) if len(regionMostContrib) > 0 or len(regionRareProv) > 0: outF.write(' <h3>%s</h3>\n' % k) outF.write(' <table>\n') outF.write(' <tr>\n') outF.write(' <td>\n') # I am ranked in the top 3 for data contributed for: if len(regionMostContrib) > 0: outF.write(' <b>I am one of the top 3 contributers in the region for:</b>\n') outF.write(' <ul>\n') for r in regionMostContrib: outF.write(' <li>%s - %s</li>\n' % (TAXA[r[2]]['name'], r[6])) outF.write(' </ul>\n') else: outF.write(' \n') outF.write(' </td>\n') outF.write(' <td>\n') # I am one of x providers of species if len(regionRareProv) > 0: outF.write(' <b>I am one of X providers of these species in this region:</b>\n') outF.write(' <ul>\n') for r in regionRareProv: outF.write(' <li>%s - %s</li>\n' % (TAXA[r[2]]['name'], r[7])) outF.write(' </ul>\n') else: outF.write(' \n') outF.write(' </td>\n') outF.write(' </tr>\n') outF.write(' </table>\n') outF.write(' <br /><br />\n') # For each country outF.write(' <h2>Countries Top 10</h2>\n') for k in COUNTRIES_LOOKUP: regionId = COUNTRIES_LOOKUP[k] regionMostContrib = providerRankedInTopX(results, providerId, regionId=regionId) regionRareProv = providerOfRareTaxa(results, providerId, regionId=regionId) if len(regionMostContrib) > 0 or len(regionRareProv) > 0: outF.write(' <h3>%s</h3>\n' % k) outF.write(' <table>\n') outF.write(' <tr>\n') outF.write(' <td>\n') # I am ranked in the top 3 for data contributed for: if len(regionMostContrib) > 0: outF.write(' <b>I am one of the top 3 contributers in the region for:</b>\n') outF.write(' <ul>\n') for r in regionMostContrib: outF.write(' <li>%s - %s</li>\n' % (TAXA[r[2]]['name'], r[6])) outF.write(' </ul>\n') else: outF.write(' \n') outF.write(' </td>\n') outF.write(' <td>\n') # I am one of x providers of species if len(regionRareProv) > 0: outF.write(' <b>I am one of X providers of these species in this region:</b>\n') outF.write(' <ul>\n') for r in regionRareProv: outF.write(' <li>%s - %s</li>\n' % (TAXA[r[2]]['name'], r[7])) outF.write(' </ul>\n') else: outF.write(' \n') outF.write(' </td>\n') outF.write(' </tr>\n') outF.write(' </table>\n') outF.write(' <br /><br />\n') # For each state outF.write(' <h2>States Top 10</h2>\n') for k in STATES_LOOKUP: regionId = STATES_LOOKUP[k] regionMostContrib = providerRankedInTopX(results, providerId, regionId=regionId) regionRareProv = providerOfRareTaxa(results, providerId, regionId=regionId) if len(regionMostContrib) > 0 or len(regionRareProv) > 0: outF.write(' <h3>%s</h3>\n' % k) outF.write(' <table>\n') outF.write(' <tr>\n') outF.write(' <td>\n') # I am ranked in the top 3 for data contributed for: if len(regionMostContrib) > 0: outF.write(' <b>I am one of the top 3 contributers in the region for:</b>\n') outF.write(' <ul>\n') for r in regionMostContrib: outF.write(' <li>%s - %s</li>\n' % (TAXA[r[2]]['name'], r[6])) outF.write(' </ul>\n') else: outF.write(' \n') outF.write(' </td>\n') outF.write(' <td>\n') # I am one of x providers of species if len(regionRareProv) > 0: outF.write(' <b>I am one of X providers of these species in this region:</b>\n') outF.write(' <ul>\n') for r in regionRareProv: outF.write(' <li>%s - %s</li>\n' % (TAXA[r[2]]['name'], r[7])) outF.write(' </ul>\n') else: outF.write(' \n') outF.write(' </td>\n') outF.write(' </tr>\n') outF.write(' </table>\n') outF.write(' <br /><br />\n') # For each ocean outF.write(' <h2>Oceans Top 10</h2>\n') for k in OCEANS_LOOKUP: regionId = OCEANS_LOOKUP[k] regionMostContrib = providerRankedInTopX(results, providerId, regionId=regionId) regionRareProv = providerOfRareTaxa(results, providerId, regionId=regionId) if len(regionMostContrib) > 0 or len(regionRareProv) > 0: outF.write(' <h3>%s</h3>\n' % k) outF.write(' <table>\n') outF.write(' <tr>\n') outF.write(' <td>\n') # I am ranked in the top 3 for data contributed for: if len(regionMostContrib) > 0: outF.write(' <b>I am one of the top 3 contributers in the region for:</b>\n') outF.write(' <ul>\n') for r in regionMostContrib: outF.write(' <li>%s - %s</li>\n' % (TAXA[r[2]]['name'], r[6])) outF.write(' </ul>\n') else: outF.write(' \n') outF.write(' </td>\n') outF.write(' <td>\n') # I am one of x providers of species if len(regionRareProv) > 0: outF.write(' <b>I am one of X providers of these species in this region:</b>\n') outF.write(' <ul>\n') for r in regionRareProv: outF.write(' <li>%s - %s</li>\n' % (TAXA[r[2]]['name'], r[7])) outF.write(' </ul>\n') else: outF.write(' \n') outF.write(' </td>\n') outF.write(' </tr>\n') outF.write(' </table>\n') outF.write(' <br /><br />\n') outF.write(' </body>\n') outF.write('</html>')
outFn = "/home/cjgrady/workspace/occDataMiningPOC/data/reports/fish/providers.html" if __name__ == "__main__": numUnique = [] numRareSpecies = [] numRareProv = [] numTaxa = [] results = subsetResults() for k in PROVIDERS: print PROVIDERS[k] nUnique = getNumberOfUniqueTaxa(results, providerId=k) nRareSp = getNumberOfRareTaxaByPoints(results, providerId=k) nRareP = getNumberOfRareTaxaByProviders(results, providerId=k) numTax = getNumberOfTaxaRepresented(results, providerId=k) numUnique.append((nUnique, k)) numRareSpecies.append((nRareSp, k)) numRareProv.append((nRareP, k)) numTaxa.append((numTax, k)) numUnique.sort(reverse=True) numRareSpecies.sort(reverse=True) numRareProv.sort(reverse=True) numTaxa.sort(reverse=True) with open(outFn, 'w') as outF: outF.write('<html>\n') outF.write(' <head>\n')