#-------------------------------------------------------------------------------
# Name:        module1
# Purpose:
#
# Author:      oeffner
#
# Created:     05/07/2013
# Copyright:   (c) oeffner 2013
# Licence:     <your licence>
#-------------------------------------------------------------------------------


import sys, os

from mmtbx.scaling import xtriage


def GetXtriageResults(args):
    mtzfname = args[0]
    if os.path.exists(mtzfname) == False:
        return ""

    xtrobj = xtriage.run([mtzfname,"--quiet"])
    rescut = xtrobj.basic_results.data_strength.resolution_cut
    noutlier_outside_rescut = 0
    # get outliers and sort them according to d_spacing
    ac_outliers = xtrobj.basic_results.basic_data_stats.outlier.acentric_outliers_table.data
    if ac_outliers != None:
        zip_outliers = zip(ac_outliers[0], ac_outliers[1], ac_outliers[2], ac_outliers[3], ac_outliers[4])
        sortoutliers = sorted(zip_outliers, key=lambda tup: tup[0])

        for e in sortoutliers:
            noutlier_outside_rescut +=1
            if e[0] > rescut:
                break

    nicerings = 0
    for e in xtrobj.basic_results.basic_data_stats.ijsco.ice_ring_bin_location:
        if e != None:
            nicerings += 1

    twinLtest = xtrobj.twin_results.twin_summary.twin_results.maha_l

    if len(args) == 1:
        print "resolution cut at %f. There are %d outliers outside resolution cut. %d icerings. Twin L-test: %f" \
          %(rescut, noutlier_outside_rescut, nicerings, twinLtest)
    else:
        if args[1] == "quiet":
            print "%s %f %d %d %f" %(os.path.basename(mtzfname), rescut, noutlier_outside_rescut, nicerings, twinLtest)





if __name__ == '__main__':
    GetXtriageResults(sys.argv[1:])
