nsRDFConMemberTestNode::nsRDFConMemberTestNode(TestNode* aParent,
                                               nsXULTemplateQueryProcessorRDF* aProcessor,
                                               nsIAtom *aContainerVariable,
                                               nsIAtom *aMemberVariable)
    : nsRDFTestNode(aParent),
      mProcessor(aProcessor),
      mContainerVariable(aContainerVariable),
      mMemberVariable(aMemberVariable)
{
#ifdef PR_LOGGING
    if (PR_LOG_TEST(gXULTemplateLog, PR_LOG_DEBUG)) {
        nsCAutoString props;

        nsResourceSet& containmentProps = aProcessor->ContainmentProperties();
        nsResourceSet::ConstIterator last = containmentProps.Last();
        nsResourceSet::ConstIterator first = containmentProps.First();
        nsResourceSet::ConstIterator iter;

        for (iter = first; iter != last; ++iter) {
            if (iter != first)
                props += " ";

            const char* str;
            iter->GetValueConst(&str);

            props += str;
        }

        nsAutoString cvar(NS_LITERAL_STRING("(none)"));
        if (mContainerVariable)
            mContainerVariable->ToString(cvar);

        nsAutoString mvar(NS_LITERAL_STRING("(none)"));
        if (mMemberVariable)
            mMemberVariable->ToString(mvar);

        PR_LOG(gXULTemplateLog, PR_LOG_DEBUG,
               ("nsRDFConMemberTestNode[%p]: parent=%p member-props=(%s) container-var=%s member-var=%s",
                this,
                aParent,
                props.get(),
                NS_ConvertUTF16toUTF8(cvar).get(),
                NS_ConvertUTF16toUTF8(mvar).get()));
    }
#endif
}
Example #2
0
File: veSNR.cpp Project: NCIP/visda
/*******************************************************************
 Subroutine to perform dimension pre-screening using signal-to-noise ratio (SNR)
   matrix *cov:        the pointer to the covariance matrix
   matrix *inv_cov:    the pointer to the inverse covariance matrix
   matrix *cov_mat:    the pointer to the approximate covariance matrix
                       when singular. If unsingular, it equals to cov
   double *det_cov:    the pointer to determinant

 return value: '1' - successfully exit
               '0' - exit with waring/error
*******************************************************************/
int veSNR(matrix *data, int *label, int dim_num, 
		  int *top_label, vector *snr_sorted)
{

	int i, j, k, t, u;
    int num_class;
	int m, n;
	vector count;
	vector *data_mean;
	vector *variance;
	vector pro;
	vector snr;
	int *new_order;
	int row_T;
	double tmp;

	m = data->m;
	n = data->n;

	num_class = 0;
	for (j=0; j<m; j++) {
		if (num_class < label[j]) {
			num_class = label[j];
		}
	}

	vnew(&count, num_class);
    vnew(&pro, num_class);
    vnew(&snr, n);
	data_mean = new vector[num_class];
	for (i=0; i<num_class; i++) {
		vnew(data_mean+i, n);
	}
	variance = new vector[num_class];
	for (i=0; i<num_class; i++) {
		vnew(variance+i, n);
	}
	new_order = new int[n];

    for (i=0; i<num_class; i++) {
		
		// distingush each class
		row_T = 0;
		for (j=0; j<m; j++) {
			if (label[j] == i+1) {
				row_T ++;
			}
		}
		int *T;
		T = new int[row_T];
		t = 0;
		for (j=0; j<m; j++) {
			if (label[j] == i+1) {
				T[t++] = j;
			}
		}
        pro.pr[i] = ((double) row_T) / ((double) m);

		// compute data_mean for each class
		matrix data_i;
		mnew(&data_i, row_T, n);
		
		for (t=0; t<row_T; t++) {
			u = t*n;
			for (k=0; k<n; k++) {
				data_i.pr[u+k] = data->pr[(T[t])*n+k];
			}
		}

		
		mmean(&data_i, 'c', data_mean+i);
		mvar(&data_i, 'c', variance+i);
	
		delete []T;
		mdelete(&data_i);

    }

	//jj = [];
    for (i=0; i<num_class-1; i++) {
        for (j=i; j<num_class; j++) {
            for (k=0; k<n; k++) {
				tmp = ((variance+i)->pr[k] * pro.pr[i] + (variance+j)->pr[k] * pro.pr[j]) / (pro.pr[i] + pro.pr[j]);
                if (tmp < 1.0000e-3) {
                    //jj = [jj k]; 
					//printf(" Warning: \n ");
                } else {
                    snr.pr[k] += pro.pr[i] * pro.pr[j] * pow(((data_mean+i)->pr[k] - (data_mean+j)->pr[k]), 2) / tmp;  
				}   
			}
		}
	}
      
	sort(&snr, new_order, 'd');

	for (k=0; k<dim_num; k++) {
		top_label[k] = new_order[k];
	}

	vcopy(&snr, snr_sorted);


	//vdelete(&count);
    vdelete(&pro);
    vdelete(&snr);
	for (i=0; i<num_class; i++) {
		vdelete(data_mean+i);
	}
	for (i=0; i<num_class; i++) {
		vdelete(variance+i);
	}
	delete []new_order;

	return 1;

}