﻿from __future__ import division
import jmp_score
from math import *
import numpy as np


""" ====================================================================
Copyright © 2024-2025 JMP Statistical Discovery LLC. All Rights Reserved. 
 
 Notice: The following permissions are granted provided that the above
 copyright and this notice appear in the score code and any related
 documentation. Permission to copy, modify and distribute the score
 code generated using JMP (r) software is limited to customers of JMP
 Statistical Discovery LLC ("JMP") and successive third parties, all
 without any warranty, express or implied, or any other obligation by
 JMP. JMP and all other JMP Statistical Discovery LLC product and
 service names are registered trademarks or trademarks of JMP
 Statistical Discovery LLC in the USA and other countries. Except as
 contained in this notice, the name of JMP shall not be used in the
 advertising or promotion of products or services without prior
 written authorization from JMP Statistical Discovery LLC.
 ==================================================================== """

""" Python code generated by JMP 19.0.0 """

def getModelMetadata():
	return {"creator": u"Neural", "modelName": u"Model NGaussian(1)NBoost(12) - Save Formulas", "predicted": u"healthy vs. sick", "table": u"Palau-physiological-cleaned for manuscript", "version": u"19.0.0", "timestamp": u"2025-08-08T16:07:47Z"}


def getInputMetadata():
    return {
        u"PAR": "float",
        u"PCCATS": "float",
        u"PCYTS": "float",
        u"PETS": "float",
        u"PMTS": "float",
        u"PTSTS": "float",
        u"PTTS": "float",
        u"Sum(#genera)": "float",
        u"Sym assemblage": "str",
        u"coral cover": "float",
        u"depth (m)": "float",
        u"exposure": "str",
        u"forereef?": "str",
        u"lagoon": "str",
        u"latitude": "float",
        u"longitude": "float",
        u"max length (cm)": "float",
        u"night-day": "str",
        u"polyps extended": "str",
        u"reef emergence": "str",
        u"reef location": "str",
        u"reef type": "str",
        u"salinity": "float",
        u"temperature (C)": "float",
        u"time-binned": "str"
	}


def getOutputMetadata():
    return {
        u"Probability( healthy vs. sick=sick )_1": "float",
        u"Probability( healthy vs. sick=healthy )_1": "float",
        u"Most Likely healthy vs. sick": "str"
	}


def score(indata, outdata):
    # Original name was: 'time-binned_asCode'
    # Original name was: 'reef type_asCode'
    # Original name was: 'reef location_asCode'
    # Original name was: 'reef emergence_asCode'
    # Original name was: 'polyps extended_asCode'
    # Original name was: 'night-day_asCode'

    # Original name was: 'forereef?_asCode'

    # Original name was: 'coral cover-binned'
    # Original name was: 'Sym assemblage_asCode'
    # Original name was: 'Sum(#genera)-binned'
    # Original name was: 'total algal cover'
    # Original name was: 'coral/algae'












    _temp_0 = False
    _temp_1 = False
    _temp_2 = np.nan
    _temp_3 = [0 for i in range(2)]
    _temp_4 = u""

    time_binned_asCode = jmp_score.match(indata[u"time-binned"],{u"afternoon":0,u"midday":1,u"morning":2,u"night":3}, np.nan)

    reef_type_asCode = jmp_score.match(indata[u"reef type"],{u"back reef":0,u"barrier reef":1,u"channel reef":2,u"fringing reef":3,u"patch reef":4}, np.nan)

    reef_location_asCode = jmp_score.match(indata[u"reef location"],{u"back reef":0,u"fore reef":1,u"lagoonal":2}, np.nan)

    reef_emergence_asCode = jmp_score.match(indata[u"reef emergence"],{u"emergent":0,u"submerged":1}, np.nan)

    polyps_extended_asCode = jmp_score.match(indata[u"polyps extended"],{u"no":0,u"some":1,u"yes":2}, np.nan)

    night_day_asCode = jmp_score.match(indata[u"night-day"],{u"day":0,u"night":1}, np.nan)

    lagoon_asCode = jmp_score.match(indata[u"lagoon"],{u"inside":0,u"outside":1}, np.nan)

    forereef__asCode = jmp_score.match(indata[u"forereef?"],{u"no":0,u"yes":1}, np.nan)

    exposure_asCode = jmp_score.match(indata[u"exposure"],{u"exposed":0,u"intermediate":1,u"protected":2}, np.nan)

    _temp_1 = indata[u"coral cover"] < 0
    _temp_0 = jmp_score.is_missing(_temp_1)
    if _temp_1 and not _temp_0:
        _temp_2 = -1
    else:
        _temp_1 = indata[u"coral cover"] >= 100
        _temp_0 = _temp_0 or jmp_score.is_missing(_temp_1)
        if _temp_1 and not _temp_0:
            _temp_2 = 100
        else:
            if _temp_0:
                _temp_2 = np.nan
            else:
                _temp_2 = 10 * floor((indata[u"coral cover"] / 10))
    coral_cover_binned = _temp_2

    Sym_assemblage_asCode = jmp_score.match(indata[u"Sym assemblage"],{u"C w/ residual A+D":0,u"C w/residual A":1,u"D w/residual A+C":2}, np.nan)

    _temp_0 = indata[u"Sum(#genera)"] < 5
    _temp_1 = jmp_score.is_missing(_temp_0)
    if _temp_0 and not _temp_1:
        _temp_2 = 4
    else:
        _temp_0 = indata[u"Sum(#genera)"] >= 50
        _temp_1 = _temp_1 or jmp_score.is_missing(_temp_0)
        if _temp_0 and not _temp_1:
            _temp_2 = 50
        else:
            if _temp_1:
                _temp_2 = np.nan
            else:
                _temp_2 = 5 + 5 * floor(((indata[u"Sum(#genera)"] - 5) / 5))
    Sum_genera_binned = _temp_2

    total_algal_cover = jmp_score.sum(np.array([[indata[u"PTSTS"], indata[u"PTTS"], indata[u"PCCATS"], indata[u"PCYTS"], indata[u"PETS"], indata[u"PMTS"]]]))

    coral_algae = indata[u"coral cover"] / total_algal_cover

    H1_1_1 = jmp_score.exp(-((0.5 * jmp_score.pow((86.100241509968 + -1.85725973553583 * indata[u"salinity"] + 0.926512223905425 * asinh((-36978.0709929504 + 468.001066776071 * indata[u"coral cover"])) + 4.67467850028713 * asinh((-4444.41670646454 + 149.674075256798 * indata[u"temperature (C)"])) + -1.00783514757818 * asinh((-90.5312803319203 + 11.8212548792427 * indata[u"latitude"])) + 0.0268462983553518 * asinh((-10.9830279999586 + 0.402045803451814 * indata[u"Sum(#genera)"])) + -1.82871878279514 * asinh((0.409829115675162 + 0.369120089799799 * coral_algae)) + 0.964703338899272 * asinh((574.846946880351 + 38.1554418697064 * indata[u"PAR"])) + -1.47073013007077 * log(((-133.735581607378 + indata[u"longitude"]) / (134.6453 + -1 * indata[u"longitude"]))) + -0.347667984732552 * log(((-9.7638888888889 + total_algal_cover) / (86.5 + -1 * total_algal_cover))) + -0.600841443676732 * log(((-5.1 + indata[u"depth (m)"]) / (30.9 + -1 * indata[u"depth (m)"]))) + -1.31413899686741 * log(((-3.07039643835518 + indata[u"max length (cm)"]) / (84.7117096093889 + -1 * indata[u"max length (cm)"]))) + jmp_score.match(forereef__asCode,{0:1.01212900970036,1:-1.01212900970036}, np.nan) + jmp_score.match(lagoon_asCode,{0:1.13656924073959,1:-1.13656924073959}, np.nan) + jmp_score.match(night_day_asCode,{0:-0.329408280518776,1:0.329408280518776}, np.nan) + jmp_score.match(reef_emergence_asCode,{0:0.999785993361999,1:-0.999785993361999}, np.nan) + jmp_score.match(exposure_asCode,{0:0.621691501771665,1:0.430503545833311,2:-1.05219504760498}, np.nan) + jmp_score.match(polyps_extended_asCode,{0:-1.89417144605317,1:-1.36494552787733,2:3.2591169739305}, np.nan) + jmp_score.match(reef_location_asCode,{0:1.65621492294676,1:0.468560202529028,2:-2.12477512547579}, np.nan) + jmp_score.match(Sym_assemblage_asCode,{0:-4.11917149799318,1:-0.554019185296729,2:4.67319068328991}, np.nan) + jmp_score.match(time_binned_asCode,{0:1.27957194537078,1:1.21126067878546,2:-3.55956784246125,3:1.06873521830501}, np.nan) + jmp_score.match(reef_type_asCode,{0:-1.73453460249551,1:0.609108739753132,2:-0.0422622974030476,3:0.256960498998049,4:0.910727661147374}, np.nan) + jmp_score.match(coral_cover_binned,{10:1.12761801051472,20:1.22428605762296,30:0.536188173782087,40:-0.0363462970100972,50:-0.171034963414905,60:-2.68071098149476}, np.nan) + jmp_score.match(Sum_genera_binned,{15:-8.14200069794402,20:1.22497181340718,25:2.36898813973772,30:-0.123607965882021,35:-1.39933293310849,40:-1.04306378837766,45:7.11404543216729}, np.nan)), 2))))

    H1_2_1 = jmp_score.exp(-((0.5 * jmp_score.pow((-0.583486572288242 + -0.0750382034423979 * indata[u"salinity"] + -4.25271543659545 * asinh((-36978.0709929504 + 468.001066776071 * indata[u"coral cover"])) + 2.82536086831161 * asinh((-4444.41670646454 + 149.674075256798 * indata[u"temperature (C)"])) + 2.81741065256286 * asinh((-90.5312803319203 + 11.8212548792427 * indata[u"latitude"])) + 0.479937367536104 * asinh((-10.9830279999586 + 0.402045803451814 * indata[u"Sum(#genera)"])) + 7.9564701994089 * asinh((0.409829115675162 + 0.369120089799799 * coral_algae)) + -3.86993707538638 * asinh((574.846946880351 + 38.1554418697064 * indata[u"PAR"])) + 4.01187618429293 * log(((-133.735581607378 + indata[u"longitude"]) / (134.6453 + -1 * indata[u"longitude"]))) + -3.92754257100068 * log(((-9.7638888888889 + total_algal_cover) / (86.5 + -1 * total_algal_cover))) + -0.382141770029684 * log(((-5.1 + indata[u"depth (m)"]) / (30.9 + -1 * indata[u"depth (m)"]))) + -4.86353378557014 * log(((-3.07039643835518 + indata[u"max length (cm)"]) / (84.7117096093889 + -1 * indata[u"max length (cm)"]))) + jmp_score.match(forereef__asCode,{0:0.921008607152523,1:-0.921008607152523}, np.nan) + jmp_score.match(lagoon_asCode,{0:0.252548946143325,1:-0.252548946143325}, np.nan) + jmp_score.match(night_day_asCode,{0:0.536377378120558,1:-0.536377378120558}, np.nan) + jmp_score.match(reef_emergence_asCode,{0:-0.374849263045952,1:0.374849263045952}, np.nan) + jmp_score.match(exposure_asCode,{0:1.40413096539259,1:0.165707448307631,2:-1.56983841370022}, np.nan) + jmp_score.match(polyps_extended_asCode,{0:5.92320034808523,1:1.2651902789332,2:-7.18839062701843}, np.nan) + jmp_score.match(reef_location_asCode,{0:-1.47971182463314,1:0.285810899115211,2:1.19390092551793}, np.nan) + jmp_score.match(Sym_assemblage_asCode,{0:4.29987829835941,1:0.214521400615117,2:-4.51439969897452}, np.nan) + jmp_score.match(time_binned_asCode,{0:1.73231789630869,1:-4.23551542641745,2:6.65117535506877,3:-4.14797782496002}, np.nan) + jmp_score.match(reef_type_asCode,{0:-0.596870678522068,1:0.0520313146645619,2:0.301302945245957,3:3.66808569982028,4:-3.42454928120873}, np.nan) + jmp_score.match(coral_cover_binned,{10:1.91687018397847,20:1.11294098824503,30:4.20008478516712,40:5.0489293993639,50:-0.3951805980994,60:-11.8836447586551}, np.nan) + jmp_score.match(Sum_genera_binned,{15:5.85159807815982,20:-4.68998557192257,25:-1.15339627006244,30:4.29673333790101,35:4.24161098968091,40:-13.9471327269182,45:5.40057216316141}, np.nan)), 2))))

    H1_3_1 = jmp_score.exp(-((0.5 * jmp_score.pow((-148.327036850767 + 3.79976485148868 * indata[u"salinity"] + -0.748379774604056 * asinh((-36978.0709929504 + 468.001066776071 * indata[u"coral cover"])) + -3.24075514029077 * asinh((-4444.41670646454 + 149.674075256798 * indata[u"temperature (C)"])) + 1.56210575668546 * asinh((-90.5312803319203 + 11.8212548792427 * indata[u"latitude"])) + 0.230601461710679 * asinh((-10.9830279999586 + 0.402045803451814 * indata[u"Sum(#genera)"])) + 0.943460516603654 * asinh((0.409829115675162 + 0.369120089799799 * coral_algae)) + 0.494954512398527 * asinh((574.846946880351 + 38.1554418697064 * indata[u"PAR"])) + 0.996306163966594 * log(((-133.735581607378 + indata[u"longitude"]) / (134.6453 + -1 * indata[u"longitude"]))) + 0.344689322846783 * log(((-9.7638888888889 + total_algal_cover) / (86.5 + -1 * total_algal_cover))) + 1.84274473155442 * log(((-5.1 + indata[u"depth (m)"]) / (30.9 + -1 * indata[u"depth (m)"]))) + 2.40736563666495 * log(((-3.07039643835518 + indata[u"max length (cm)"]) / (84.7117096093889 + -1 * indata[u"max length (cm)"]))) + jmp_score.match(forereef__asCode,{0:-1.31609098012918,1:1.31609098012918}, np.nan) + jmp_score.match(lagoon_asCode,{0:-0.329320354314678,1:0.329320354314678}, np.nan) + jmp_score.match(night_day_asCode,{0:0.0936042307554287,1:-0.0936042307554287}, np.nan) + jmp_score.match(reef_emergence_asCode,{0:-1.79283859514708,1:1.79283859514708}, np.nan) + jmp_score.match(exposure_asCode,{0:1.2035451427341,1:1.0470564888272,2:-2.2506016315613}, np.nan) + jmp_score.match(polyps_extended_asCode,{0:3.52355169048319,1:1.32616484032755,2:-4.84971653081075}, np.nan) + jmp_score.match(reef_location_asCode,{0:0.058316306151869,1:0.0761984231161724,2:-0.134514729268041}, np.nan) + jmp_score.match(Sym_assemblage_asCode,{0:-0.706218717246784,1:-1.55137432596924,2:2.25759304321602}, np.nan) + jmp_score.match(time_binned_asCode,{0:-2.85212470216395,1:-3.19812530318982,2:-1.774569738633,3:7.82481974398677}, np.nan) + jmp_score.match(reef_type_asCode,{0:2.90019970263805,1:-0.638743160944341,2:-0.296050618871072,3:2.76234528724,4:-4.72775121006263}, np.nan) + jmp_score.match(coral_cover_binned,{10:0.280835839709352,20:1.20459317582681,30:-3.58349320928545,40:0.0186019481382017,50:-1.44065064986365,60:3.52011289547474}, np.nan) + jmp_score.match(Sum_genera_binned,{15:-3.06968088260907,20:2.37596842182711,25:-0.573834765439054,30:-7.45817017713332,35:-7.10250905484933,40:3.27403980631859,45:12.5541866518851}, np.nan)), 2))))

    H1_4_1 = jmp_score.exp(-((0.5 * jmp_score.pow((32.1710970661667 + -0.923433287503444 * indata[u"salinity"] + -0.597156094223759 * asinh((-36978.0709929504 + 468.001066776071 * indata[u"coral cover"])) + -1.14646151132306 * asinh((-4444.41670646454 + 149.674075256798 * indata[u"temperature (C)"])) + -0.32078375870874 * asinh((-90.5312803319203 + 11.8212548792427 * indata[u"latitude"])) + -0.725617004946516 * asinh((-10.9830279999586 + 0.402045803451814 * indata[u"Sum(#genera)"])) + -0.0623398480526785 * asinh((0.409829115675162 + 0.369120089799799 * coral_algae)) + -1.34448702571792 * asinh((574.846946880351 + 38.1554418697064 * indata[u"PAR"])) + 0.0678587611648054 * log(((-133.735581607378 + indata[u"longitude"]) / (134.6453 + -1 * indata[u"longitude"]))) + -1.09660886025678 * log(((-9.7638888888889 + total_algal_cover) / (86.5 + -1 * total_algal_cover))) + 1.16308952588886 * log(((-5.1 + indata[u"depth (m)"]) / (30.9 + -1 * indata[u"depth (m)"]))) + 3.3077743777472 * log(((-3.07039643835518 + indata[u"max length (cm)"]) / (84.7117096093889 + -1 * indata[u"max length (cm)"]))) + jmp_score.match(forereef__asCode,{0:-0.0322400910373998,1:0.0322400910373998}, np.nan) + jmp_score.match(lagoon_asCode,{0:0.0870237485465807,1:-0.0870237485465807}, np.nan) + jmp_score.match(night_day_asCode,{0:0.0337789242570351,1:-0.0337789242570351}, np.nan) + jmp_score.match(reef_emergence_asCode,{0:0.906535187111869,1:-0.906535187111869}, np.nan) + jmp_score.match(exposure_asCode,{0:0.630796601714515,1:-0.361952959393904,2:-0.268843642320611}, np.nan) + jmp_score.match(polyps_extended_asCode,{0:-1.14059551640705,1:-0.944606025432257,2:2.0852015418393}, np.nan) + jmp_score.match(reef_location_asCode,{0:0.544056806899865,1:-0.259380764087092,2:-0.284676042812773}, np.nan) + jmp_score.match(Sym_assemblage_asCode,{0:2.81859621859019,1:-2.01710247044518,2:-0.801493748145006}, np.nan) + jmp_score.match(time_binned_asCode,{0:1.16914153397872,1:1.22755287001437,2:-2.73274392897161,3:0.336049524978525}, np.nan) + jmp_score.match(reef_type_asCode,{0:-0.129048501920099,1:0.504401690927394,2:-0.111351768307208,3:-0.967241542171885,4:0.703240121471798}, np.nan) + jmp_score.match(coral_cover_binned,{10:-1.14824610292477,20:-0.329894263381362,30:-0.711963607874203,40:-0.715155843970454,50:-2.96102926012838,60:5.86628907827917}, np.nan) + jmp_score.match(Sum_genera_binned,{15:2.77043500884108,20:1.82317558989914,25:1.73205379577203,30:-5.13700873396619,35:3.10944984060186,40:-3.2726480180545,45:-1.02545748309343}, np.nan)), 2))))

    H1_5_1 = jmp_score.exp(-((0.5 * jmp_score.pow((52.430767585192 + -2.23578189245108 * indata[u"salinity"] + -0.927443840149806 * asinh((-36978.0709929504 + 468.001066776071 * indata[u"coral cover"])) + 1.38827090988261 * asinh((-4444.41670646454 + 149.674075256798 * indata[u"temperature (C)"])) + -0.166617107679123 * asinh((-90.5312803319203 + 11.8212548792427 * indata[u"latitude"])) + 0.376355725430016 * asinh((-10.9830279999586 + 0.402045803451814 * indata[u"Sum(#genera)"])) + 2.48874954061563 * asinh((0.409829115675162 + 0.369120089799799 * coral_algae)) + 2.07373212982832 * asinh((574.846946880351 + 38.1554418697064 * indata[u"PAR"])) + -1.14699810347728 * log(((-133.735581607378 + indata[u"longitude"]) / (134.6453 + -1 * indata[u"longitude"]))) + 1.1849456778344 * log(((-9.7638888888889 + total_algal_cover) / (86.5 + -1 * total_algal_cover))) + 0.795277331799867 * log(((-5.1 + indata[u"depth (m)"]) / (30.9 + -1 * indata[u"depth (m)"]))) + -2.13924804268229 * log(((-3.07039643835518 + indata[u"max length (cm)"]) / (84.7117096093889 + -1 * indata[u"max length (cm)"]))) + jmp_score.match(forereef__asCode,{0:-0.463603015712821,1:0.463603015712821}, np.nan) + jmp_score.match(lagoon_asCode,{0:-0.252315398819254,1:0.252315398819254}, np.nan) + jmp_score.match(night_day_asCode,{0:0.666566833015478,1:-0.666566833015478}, np.nan) + jmp_score.match(reef_emergence_asCode,{0:1.31043618497748,1:-1.31043618497748}, np.nan) + jmp_score.match(exposure_asCode,{0:-0.27438385773644,1:-0.13608811694579,2:0.41047197468223}, np.nan) + jmp_score.match(polyps_extended_asCode,{0:0.538713295729763,1:1.71414841245985,2:-2.25286170818961}, np.nan) + jmp_score.match(reef_location_asCode,{0:-1.36256283520632,1:0.400838369482752,2:0.961724465723564}, np.nan) + jmp_score.match(Sym_assemblage_asCode,{0:-1.72669857406855,1:-0.0343374146825106,2:1.76103598875106}, np.nan) + jmp_score.match(time_binned_asCode,{0:0.776382922535268,1:-0.245204110785782,2:-2.19945699714903,3:1.66827818539954}, np.nan) + jmp_score.match(reef_type_asCode,{0:0.176040001204225,1:0.775214940256548,2:-2.82712367445734,3:0.62181497466655,4:1.25405375833002}, np.nan) + jmp_score.match(coral_cover_binned,{10:-1.79231981269178,20:-2.05238344601276,30:-1.87863767684248,40:-1.29516726671353,50:-0.788150533288771,60:7.80665873554932}, np.nan) + jmp_score.match(Sum_genera_binned,{15:-0.986337096182742,20:0.538198935096898,25:0.46864215321332,30:1.84495760228435,35:-0.45256688703785,40:4.5781559489855,45:-5.99105065635948}, np.nan)), 2))))

    H1_6_1 = jmp_score.exp(-((0.5 * jmp_score.pow((36.3013306416828 + -0.662232144778326 * indata[u"salinity"] + 0.246108014367109 * asinh((-36978.0709929504 + 468.001066776071 * indata[u"coral cover"])) + 0.0484210346591189 * asinh((-4444.41670646454 + 149.674075256798 * indata[u"temperature (C)"])) + 0.210287838537876 * asinh((-90.5312803319203 + 11.8212548792427 * indata[u"latitude"])) + -0.159494609264131 * asinh((-10.9830279999586 + 0.402045803451814 * indata[u"Sum(#genera)"])) + -0.384092879425843 * asinh((0.409829115675162 + 0.369120089799799 * coral_algae)) + -1.52948403143975 * asinh((574.846946880351 + 38.1554418697064 * indata[u"PAR"])) + 0.0222862081850079 * log(((-133.735581607378 + indata[u"longitude"]) / (134.6453 + -1 * indata[u"longitude"]))) + 0.317376403232727 * log(((-9.7638888888889 + total_algal_cover) / (86.5 + -1 * total_algal_cover))) + 0.229814629121537 * log(((-5.1 + indata[u"depth (m)"]) / (30.9 + -1 * indata[u"depth (m)"]))) + -2.21715648953885 * log(((-3.07039643835518 + indata[u"max length (cm)"]) / (84.7117096093889 + -1 * indata[u"max length (cm)"]))) + jmp_score.match(forereef__asCode,{0:-0.24763305512852,1:0.24763305512852}, np.nan) + jmp_score.match(lagoon_asCode,{0:-0.280342961217585,1:0.280342961217585}, np.nan) + jmp_score.match(night_day_asCode,{0:-0.021124075967689,1:0.021124075967689}, np.nan) + jmp_score.match(reef_emergence_asCode,{0:0.22385365016577,1:-0.22385365016577}, np.nan) + jmp_score.match(exposure_asCode,{0:-0.0358722752237817,1:-0.00251400217915682,2:0.0383862774029385}, np.nan) + jmp_score.match(polyps_extended_asCode,{0:2.02562014164836,1:-1.57880461642239,2:-0.446815525225964}, np.nan) + jmp_score.match(reef_location_asCode,{0:0.00815825078249498,1:0.241226815441097,2:-0.249385066223592}, np.nan) + jmp_score.match(Sym_assemblage_asCode,{0:0.0278114709642409,1:1.25011475487247,2:-1.27792622583672}, np.nan) + jmp_score.match(time_binned_asCode,{0:-0.0526125706525041,1:0.478308083700893,2:-0.541414974592106,3:0.115719461543717}, np.nan) + jmp_score.match(reef_type_asCode,{0:-0.00384317419421554,1:-0.0708209834661767,2:-0.565993412112436,3:0.310093208843969,4:0.330564360928859}, np.nan) + jmp_score.match(coral_cover_binned,{10:0.748236943683235,20:-0.0317199310331249,30:0.295011702327493,40:1.19062080207295,50:0.704806568074927,60:-2.90695608512548}, np.nan) + jmp_score.match(Sum_genera_binned,{15:0.465373336756617,20:0.0975491643500205,25:-0.0709438386952544,30:-1.45707261789021,35:-0.746689798569424,40:1.22837389762887,45:0.483409856419377}, np.nan)), 2))))

    H1_7_1 = jmp_score.exp(-((0.5 * jmp_score.pow((-8.36558798296869 + -0.310030129573356 * indata[u"salinity"] + 0.346891712603577 * asinh((-36978.0709929504 + 468.001066776071 * indata[u"coral cover"])) + 0.143207037286378 * asinh((-4444.41670646454 + 149.674075256798 * indata[u"temperature (C)"])) + 0.511247747383534 * asinh((-90.5312803319203 + 11.8212548792427 * indata[u"latitude"])) + 0.124750769567424 * asinh((-10.9830279999586 + 0.402045803451814 * indata[u"Sum(#genera)"])) + 4.52692864503351 * asinh((0.409829115675162 + 0.369120089799799 * coral_algae)) + 3.27122478299236 * asinh((574.846946880351 + 38.1554418697064 * indata[u"PAR"])) + 0.692190916755625 * log(((-133.735581607378 + indata[u"longitude"]) / (134.6453 + -1 * indata[u"longitude"]))) + -0.558557439440009 * log(((-9.7638888888889 + total_algal_cover) / (86.5 + -1 * total_algal_cover))) + -0.303019451632099 * log(((-5.1 + indata[u"depth (m)"]) / (30.9 + -1 * indata[u"depth (m)"]))) + 5.14586863026512 * log(((-3.07039643835518 + indata[u"max length (cm)"]) / (84.7117096093889 + -1 * indata[u"max length (cm)"]))) + jmp_score.match(forereef__asCode,{0:-0.374010997333677,1:0.374010997333677}, np.nan) + jmp_score.match(lagoon_asCode,{0:-2.36015214086496,1:2.36015214086496}, np.nan) + jmp_score.match(night_day_asCode,{0:0.483706755395695,1:-0.483706755395695}, np.nan) + jmp_score.match(reef_emergence_asCode,{0:0.120014823539181,1:-0.120014823539181}, np.nan) + jmp_score.match(exposure_asCode,{0:0.189272300465088,1:0.0779703098442417,2:-0.26724261030933}, np.nan) + jmp_score.match(polyps_extended_asCode,{0:-1.40942546235352,1:1.52246619744697,2:-0.113040735093457}, np.nan) + jmp_score.match(reef_location_asCode,{0:-2.2221270218644,1:1.54660449612498,2:0.675522525739417}, np.nan) + jmp_score.match(Sym_assemblage_asCode,{0:2.81495455088492,1:-0.188387947734335,2:-2.62656660315058}, np.nan) + jmp_score.match(time_binned_asCode,{0:1.02596377874317,1:-2.31092682748353,2:2.23626943273137,3:-0.95130638399101}, np.nan) + jmp_score.match(reef_type_asCode,{0:0.460288230592486,1:0.00252546250623567,2:2.61076929076458,3:1.13472424110756,4:-4.20830722497087}, np.nan) + jmp_score.match(coral_cover_binned,{10:-0.822183396964253,20:-0.660401658031244,30:-1.56810349758525,40:-2.15650850840707,50:1.12593528663607,60:4.08126177435175}, np.nan) + jmp_score.match(Sum_genera_binned,{15:-3.68876240467052,20:-0.505066231938891,25:2.44795978934074,30:2.02267068533882,35:4.56974418523028,40:3.2587324789785,45:-8.10527850227892}, np.nan)), 2))))

    H1_8_1 = jmp_score.exp(-((0.5 * jmp_score.pow((9.4475615897133 + -0.477615762950106 * indata[u"salinity"] + 0.206288763863442 * asinh((-36978.0709929504 + 468.001066776071 * indata[u"coral cover"])) + -0.723434109335773 * asinh((-4444.41670646454 + 149.674075256798 * indata[u"temperature (C)"])) + -0.25585563552292 * asinh((-90.5312803319203 + 11.8212548792427 * indata[u"latitude"])) + 0.852161822019811 * asinh((-10.9830279999586 + 0.402045803451814 * indata[u"Sum(#genera)"])) + -0.16383449362201 * asinh((0.409829115675162 + 0.369120089799799 * coral_algae)) + 1.00269267883926 * asinh((574.846946880351 + 38.1554418697064 * indata[u"PAR"])) + -0.470987411596183 * log(((-133.735581607378 + indata[u"longitude"]) / (134.6453 + -1 * indata[u"longitude"]))) + -0.133711743188728 * log(((-9.7638888888889 + total_algal_cover) / (86.5 + -1 * total_algal_cover))) + -0.261669656822722 * log(((-5.1 + indata[u"depth (m)"]) / (30.9 + -1 * indata[u"depth (m)"]))) + 1.82571163704029 * log(((-3.07039643835518 + indata[u"max length (cm)"]) / (84.7117096093889 + -1 * indata[u"max length (cm)"]))) + jmp_score.match(forereef__asCode,{0:0.141641193857607,1:-0.141641193857607}, np.nan) + jmp_score.match(lagoon_asCode,{0:0.143411944040708,1:-0.143411944040708}, np.nan) + jmp_score.match(night_day_asCode,{0:-0.00173229312840037,1:0.00173229312840037}, np.nan) + jmp_score.match(reef_emergence_asCode,{0:0.183621727346683,1:-0.183621727346683}, np.nan) + jmp_score.match(exposure_asCode,{0:-1.00279285454034,1:0.274997195559433,2:0.727795658980908}, np.nan) + jmp_score.match(polyps_extended_asCode,{0:0.550802096290127,1:-0.206825245565332,2:-0.343976850724796}, np.nan) + jmp_score.match(reef_location_asCode,{0:0.13854041024457,1:-0.0973360669192881,2:-0.0412043433252823}, np.nan) + jmp_score.match(Sym_assemblage_asCode,{0:1.33585953512647,1:0.701035709844371,2:-2.03689524497084}, np.nan) + jmp_score.match(time_binned_asCode,{0:-0.0611322269177157,1:0.596616274908977,2:-0.717937914786493,3:0.182453866795231}, np.nan) + jmp_score.match(reef_type_asCode,{0:0.113482579748933,1:0.214398192111123,2:0.346609953762736,3:0.319173859335394,4:-0.993664584958185}, np.nan) + jmp_score.match(coral_cover_binned,{10:-1.46793204912033,20:-0.57578618228382,30:-0.773655935117178,40:-1.44128473419361,50:-1.69265369483117,60:5.95131259554611}, np.nan) + jmp_score.match(Sum_genera_binned,{15:-2.95774364647872,20:-0.553629281207097,25:-1.13241646785105,30:2.87974515225899,35:0.0245465735197776,40:3.46092489995009,45:-1.721427230192}, np.nan)), 2))))

    H1_9_1 = jmp_score.exp(-((0.5 * jmp_score.pow((-24.0344639015061 + 0.329362760956017 * indata[u"salinity"] + 0.836353987723115 * asinh((-36978.0709929504 + 468.001066776071 * indata[u"coral cover"])) + -0.391006784660328 * asinh((-4444.41670646454 + 149.674075256798 * indata[u"temperature (C)"])) + -0.314554581552437 * asinh((-90.5312803319203 + 11.8212548792427 * indata[u"latitude"])) + 0.19183925938082 * asinh((-10.9830279999586 + 0.402045803451814 * indata[u"Sum(#genera)"])) + 3.71220608798553 * asinh((0.409829115675162 + 0.369120089799799 * coral_algae)) + 2.11798426804359 * asinh((574.846946880351 + 38.1554418697064 * indata[u"PAR"])) + 0.0692146769041375 * log(((-133.735581607378 + indata[u"longitude"]) / (134.6453 + -1 * indata[u"longitude"]))) + 0.36862500027103 * log(((-9.7638888888889 + total_algal_cover) / (86.5 + -1 * total_algal_cover))) + -1.21113085380782 * log(((-5.1 + indata[u"depth (m)"]) / (30.9 + -1 * indata[u"depth (m)"]))) + 2.84477599641345 * log(((-3.07039643835518 + indata[u"max length (cm)"]) / (84.7117096093889 + -1 * indata[u"max length (cm)"]))) + jmp_score.match(forereef__asCode,{0:0.629002152441316,1:-0.629002152441316}, np.nan) + jmp_score.match(lagoon_asCode,{0:1.44391458792873,1:-1.44391458792873}, np.nan) + jmp_score.match(night_day_asCode,{0:0.682555433752448,1:-0.682555433752448}, np.nan) + jmp_score.match(reef_emergence_asCode,{0:-0.338036393028725,1:0.338036393028725}, np.nan) + jmp_score.match(exposure_asCode,{0:0.370115070320228,1:2.10292059726588,2:-2.47303566758611}, np.nan) + jmp_score.match(polyps_extended_asCode,{0:-3.46109035669042,1:-0.98407769521925,2:4.44516805190967}, np.nan) + jmp_score.match(reef_location_asCode,{0:-1.1152535291115,1:-1.08905475999273,2:2.20430828910423}, np.nan) + jmp_score.match(Sym_assemblage_asCode,{0:4.77151249055398,1:1.78751763403442,2:-6.5590301245884}, np.nan) + jmp_score.match(time_binned_asCode,{0:0.596318323710122,1:-0.135621802698117,2:-0.118406049533294,3:-0.342290471478711}, np.nan) + jmp_score.match(reef_type_asCode,{0:-0.103342273299239,1:2.10707614001091,2:2.10408582231579,3:0.176975210396414,4:-4.28479489942388}, np.nan) + jmp_score.match(coral_cover_binned,{10:1.72541358485011,20:3.14850116241875,30:2.55721985382508,40:-2.8777004441129,50:-3.42284254232728,60:-1.13059161465375}, np.nan) + jmp_score.match(Sum_genera_binned,{15:-5.33949696937655,20:2.07814212567291,25:1.89179573122555,30:-1.50636361322964,35:7.35941935864318,40:0.630222204840019,45:-5.11371883777546}, np.nan)), 2))))

    H1_10_1 = jmp_score.exp(-((0.5 * jmp_score.pow((57.2527625034431 + -1.00686750216409 * indata[u"salinity"] + 1.26517230993775 * asinh((-36978.0709929504 + 468.001066776071 * indata[u"coral cover"])) + 1.95829551611518 * asinh((-4444.41670646454 + 149.674075256798 * indata[u"temperature (C)"])) + -0.102079512643689 * asinh((-90.5312803319203 + 11.8212548792427 * indata[u"latitude"])) + 1.05686352309368 * asinh((-10.9830279999586 + 0.402045803451814 * indata[u"Sum(#genera)"])) + 1.39776037115347 * asinh((0.409829115675162 + 0.369120089799799 * coral_algae)) + -0.664247944542094 * asinh((574.846946880351 + 38.1554418697064 * indata[u"PAR"])) + -1.12376191666924 * log(((-133.735581607378 + indata[u"longitude"]) / (134.6453 + -1 * indata[u"longitude"]))) + 0.440621561705713 * log(((-9.7638888888889 + total_algal_cover) / (86.5 + -1 * total_algal_cover))) + 0.978633052058875 * log(((-5.1 + indata[u"depth (m)"]) / (30.9 + -1 * indata[u"depth (m)"]))) + -3.06831043119058 * log(((-3.07039643835518 + indata[u"max length (cm)"]) / (84.7117096093889 + -1 * indata[u"max length (cm)"]))) + jmp_score.match(forereef__asCode,{0:-0.443015762257117,1:0.443015762257117}, np.nan) + jmp_score.match(lagoon_asCode,{0:-1.13280845882369,1:1.13280845882369}, np.nan) + jmp_score.match(night_day_asCode,{0:0.861380230973832,1:-0.861380230973832}, np.nan) + jmp_score.match(reef_emergence_asCode,{0:0.230713515103529,1:-0.230713515103529}, np.nan) + jmp_score.match(exposure_asCode,{0:-1.95997061230149,1:0.657579921951543,2:1.30239069034995}, np.nan) + jmp_score.match(polyps_extended_asCode,{0:-1.60375503179922,1:1.24950007140805,2:0.354254960391174}, np.nan) + jmp_score.match(reef_location_asCode,{0:-0.721577214278154,1:0.772871296128806,2:-0.0512940818506525}, np.nan) + jmp_score.match(Sym_assemblage_asCode,{0:0.697148709099568,1:2.03329771376364,2:-2.73044642286321}, np.nan) + jmp_score.match(time_binned_asCode,{0:1.54842592783401,1:-1.43547362339871,2:1.21806571228595,3:-1.33101801672124}, np.nan) + jmp_score.match(reef_type_asCode,{0:-0.312748380972295,1:-0.807976482962867,2:-2.2422362997744,3:1.96570048728251,4:1.39726067642706}, np.nan) + jmp_score.match(coral_cover_binned,{10:0.0336645736331559,20:-1.26637842901059,30:0.298664811279494,40:2.80629293869413,50:-0.67932024290874,60:-1.19292365168744}, np.nan) + jmp_score.match(Sum_genera_binned,{15:-10.1781590762985,20:1.22552768803081,25:0.938409013341426,30:-2.26373907493657,35:3.68009350690682,40:-4.02293785266437,45:10.6208057956204}, np.nan)), 2))))

    H1_11_1 = jmp_score.exp(-((0.5 * jmp_score.pow((90.4236846126068 + 0.315499145133929 * indata[u"salinity"] + 0.0185999199321284 * asinh((-36978.0709929504 + 468.001066776071 * indata[u"coral cover"])) + 1.61161785108196 * asinh((-4444.41670646454 + 149.674075256798 * indata[u"temperature (C)"])) + 0.583074686172052 * asinh((-90.5312803319203 + 11.8212548792427 * indata[u"latitude"])) + -0.0744511514352772 * asinh((-10.9830279999586 + 0.402045803451814 * indata[u"Sum(#genera)"])) + 2.15729939154849 * asinh((0.409829115675162 + 0.369120089799799 * coral_algae)) + -11.2444436552835 * asinh((574.846946880351 + 38.1554418697064 * indata[u"PAR"])) + 0.576131921869737 * log(((-133.735581607378 + indata[u"longitude"]) / (134.6453 + -1 * indata[u"longitude"]))) + -1.69720169405297 * log(((-9.7638888888889 + total_algal_cover) / (86.5 + -1 * total_algal_cover))) + -2.72137952534601 * log(((-5.1 + indata[u"depth (m)"]) / (30.9 + -1 * indata[u"depth (m)"]))) + 3.04182051009094 * log(((-3.07039643835518 + indata[u"max length (cm)"]) / (84.7117096093889 + -1 * indata[u"max length (cm)"]))) + jmp_score.match(forereef__asCode,{0:1.1114043756091,1:-1.1114043756091}, np.nan) + jmp_score.match(lagoon_asCode,{0:0.44043975320272,1:-0.44043975320272}, np.nan) + jmp_score.match(night_day_asCode,{0:0.0414478441712235,1:-0.0414478441712235}, np.nan) + jmp_score.match(reef_emergence_asCode,{0:-0.544124094943485,1:0.544124094943485}, np.nan) + jmp_score.match(exposure_asCode,{0:-2.08682637323224,1:-0.0592686866246933,2:2.14609505985694}, np.nan) + jmp_score.match(polyps_extended_asCode,{0:-3.23609064871616,1:-5.59524062352756,2:8.83133127224372}, np.nan) + jmp_score.match(reef_location_asCode,{0:-2.161753378562,1:-4.11835807651711,2:6.2801114550791}, np.nan) + jmp_score.match(Sym_assemblage_asCode,{0:-0.241501316741929,1:-3.26146367650498,2:3.5029649932469}, np.nan) + jmp_score.match(time_binned_asCode,{0:2.26178397100437,1:-1.12305722837056,2:0.216059970861933,3:-1.35478671349574}, np.nan) + jmp_score.match(reef_type_asCode,{0:-1.06517901524356,1:-1.0653988587714,2:0.822684089900692,3:-0.501886850981304,4:1.80978063509557}, np.nan) + jmp_score.match(coral_cover_binned,{10:2.77698619072661,20:4.4640096563881,30:1.78816288410041,40:4.07064574062823,50:2.21409170487589,60:-15.3138961767192}, np.nan) + jmp_score.match(Sum_genera_binned,{15:9.81226661976167,20:-3.35145542001497,25:-2.3201781291184,30:6.7658807571904,35:-2.51156108915625,40:-1.93658578684923,45:-6.45836695181322}, np.nan)), 2))))

    H1_12_1 = jmp_score.exp(-((0.5 * jmp_score.pow((-55.9366055364782 + 1.12222008570877 * indata[u"salinity"] + 0.789871643355283 * asinh((-36978.0709929504 + 468.001066776071 * indata[u"coral cover"])) + -0.49014350261866 * asinh((-4444.41670646454 + 149.674075256798 * indata[u"temperature (C)"])) + 0.361445527980872 * asinh((-90.5312803319203 + 11.8212548792427 * indata[u"latitude"])) + -1.14477731539483 * asinh((-10.9830279999586 + 0.402045803451814 * indata[u"Sum(#genera)"])) + -0.210235863366467 * asinh((0.409829115675162 + 0.369120089799799 * coral_algae)) + 2.84156874683164 * asinh((574.846946880351 + 38.1554418697064 * indata[u"PAR"])) + 0.76356401379392 * log(((-133.735581607378 + indata[u"longitude"]) / (134.6453 + -1 * indata[u"longitude"]))) + 0.40561673663117 * log(((-9.7638888888889 + total_algal_cover) / (86.5 + -1 * total_algal_cover))) + -0.352379677853844 * log(((-5.1 + indata[u"depth (m)"]) / (30.9 + -1 * indata[u"depth (m)"]))) + 2.45561696361135 * log(((-3.07039643835518 + indata[u"max length (cm)"]) / (84.7117096093889 + -1 * indata[u"max length (cm)"]))) + jmp_score.match(forereef__asCode,{0:1.17444550812257,1:-1.17444550812257}, np.nan) + jmp_score.match(lagoon_asCode,{0:-0.380096655754684,1:0.380096655754684}, np.nan) + jmp_score.match(night_day_asCode,{0:-0.466387753073521,1:0.466387753073521}, np.nan) + jmp_score.match(reef_emergence_asCode,{0:-0.469754815086307,1:0.469754815086307}, np.nan) + jmp_score.match(exposure_asCode,{0:1.26412891147156,1:-0.508606835420602,2:-0.755522076050959}, np.nan) + jmp_score.match(polyps_extended_asCode,{0:-0.106111379098867,1:0.492198860734138,2:-0.386087481635271}, np.nan) + jmp_score.match(reef_location_asCode,{0:-0.080570375806802,1:-2.37788871649462,2:2.45845909230142}, np.nan) + jmp_score.match(Sym_assemblage_asCode,{0:-1.16262713417858,1:-0.965635917689148,2:2.12826305186772}, np.nan) + jmp_score.match(time_binned_asCode,{0:-3.21321563781128,1:0.329085806663212,2:2.47673931923949,3:0.40739051190858}, np.nan) + jmp_score.match(reef_type_asCode,{0:0.667206679809401,1:0.788690758909711,2:-2.8416513908244,3:-1.76072075536659,4:3.14647470747187}, np.nan) + jmp_score.match(coral_cover_binned,{10:-2.01064031777874,20:-1.0519034259628,30:-1.21004491519734,40:-1.44902742774204,50:1.43326778090002,60:4.28834830578091}, np.nan) + jmp_score.match(Sum_genera_binned,{15:1.84481104634348,20:0.98969041023193,25:0.651891872841289,30:-0.884560170668529,35:-2.30531912391709,40:-2.04510167834395,45:1.74858764351287}, np.nan)), 2))))

    outdata[u"Probability( healthy vs. sick=sick )_1"] = jmp_score.exp((-0.510899598083548 + 0.658207771450368 * H1_1_1 + 0.849476020705588 * H1_10_1 + 1.69931856260946 * H1_11_1 + -8.38000690503534 * H1_12_1 + 0.670579267110368 * H1_2_1 + 0.351004292255992 * H1_3_1 + -0.750815395677282 * H1_4_1 + 0.41061624026788 * H1_5_1 + -0.935677048204562 * H1_6_1 + 0.418659206804918 * H1_7_1 + 0.69608750663726 * H1_8_1 + -0.559640444763409 * H1_9_1)) / (1 + jmp_score.exp((-0.510899598083548 + 0.658207771450368 * H1_1_1 + 0.849476020705588 * H1_10_1 + 1.69931856260946 * H1_11_1 + -8.38000690503534 * H1_12_1 + 0.670579267110368 * H1_2_1 + 0.351004292255992 * H1_3_1 + -0.750815395677282 * H1_4_1 + 0.41061624026788 * H1_5_1 + -0.935677048204562 * H1_6_1 + 0.418659206804918 * H1_7_1 + 0.69608750663726 * H1_8_1 + -0.559640444763409 * H1_9_1)))

    outdata[u"Probability( healthy vs. sick=healthy )_1"] = 1 / (1 + jmp_score.exp((-0.510899598083548 + 0.658207771450368 * H1_1_1 + 0.849476020705588 * H1_10_1 + 1.69931856260946 * H1_11_1 + -8.38000690503534 * H1_12_1 + 0.670579267110368 * H1_2_1 + 0.351004292255992 * H1_3_1 + -0.750815395677282 * H1_4_1 + 0.41061624026788 * H1_5_1 + -0.935677048204562 * H1_6_1 + 0.418659206804918 * H1_7_1 + 0.69608750663726 * H1_8_1 + -0.559640444763409 * H1_9_1)))

    _temp_3[0] = outdata[u"Probability( healthy vs. sick=sick )_1"]
    _temp_3[1] = outdata[u"Probability( healthy vs. sick=healthy )_1"]
    _temp_0 = jmp_score.max_array(2, _temp_3)
    if jmp_score.mz(_temp_0 == 0):
        _temp_4 = u"sick"
    elif jmp_score.mz(_temp_0 == 1):
        _temp_4 = u"healthy"
    else:
        _temp_4 = u""
    outdata[u"Most Likely healthy vs. sick"] = _temp_4

    return outdata[u"Most Likely healthy vs. sick"]


