//ROTATE data in ORArray AROUND OUTER PLANES void Arrows::outerRotate(uint8_t type){ loop(type); //wrap the ORArray arrpound the outside of the cube for(int8_t r = 0; r < 28; r++){ if(r >= 0 && r < SIZE){ copyColumn(type, SIZE-1-r, 7, ORArray[27-r][type]); }else if(r >= SIZE && r < SIZE*2-1){ copyColumn(type, 0, SIZE - (r-SIZE) - 2, ORArray[27-r][type]); }else if(r >= SIZE*2-1 && r < SIZE*3-2){ copyColumn(type, r-(2*SIZE-2), 0, ORArray[27-r][type]); }else if(r >= SIZE*3-2 && r < SIZE*4-3){ copyColumn(type, 7, r-(3*SIZE-3), ORArray[27-r][type]); } } }
// Function definitions. // ----------------------------------------------------------------- // MEX-file gateway routine. void mexFunction (int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[]) { // Get the input matrix X. const SingleMatrix X = getSingleMatrix(prhs[0]); // Get the number of samples (n) and the number of variables (p). const Size n = X.nr; const Size p = X.nc; // Initialize the output. DoubleVector y = createMatlabVector(p,&plhs[0]); // This is storage for a column of matrix X. double* x = malloc(sizeof(double)*n); // Repeat for each column of X. for (Index k = 0; k < p; k++) { // Get the kth column of X. copyColumn(X.elems,x,k,n); // Compute the sample variance. y.elems[k] = computeVariance(x,n); } // Free the dynamically allocated memory. free(x); }
TableOfReal TableOfReal_extractColumnRanges (TableOfReal me, const wchar_t *ranges) { try { long numberOfElements; autoNUMvector <long> elements (getElementsOfRanges (ranges, my numberOfColumns, & numberOfElements, L"column"), 1); autoTableOfReal thee = TableOfReal_create (my numberOfRows, numberOfElements); copyRowLabels (me, thee.peek()); for (long ielement = 1; ielement <= numberOfElements; ielement ++) copyColumn (me, elements [ielement], thee.peek(), ielement); return thee.transfer(); } catch (MelderError) { Melder_throw (me, ": column ranges not extracted."); } }
// MEX-file gateway routine. Note that varbvsbinupdate.m checks the // inputs, so we do not have to do it here. void mexFunction (int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[]) { // GET INPUTS. const SingleMatrix X = getSingleMatrix(prhs[0]); const double sa = *mxGetPr(prhs[1]); const DoubleVector logodds = getDoubleVector(prhs[2]); const DoubleVector d = getDoubleVector(mxGetField(prhs[3],0,"d")); const DoubleVector xdx = getDoubleVector(mxGetField(prhs[3],0,"xdx")); const DoubleVector xy = getDoubleVector(mxGetField(prhs[3],0,"xy")); const DoubleVector xd = getDoubleVector(mxGetField(prhs[3],0,"xd")); const DoubleVector alpha0 = getDoubleVector(prhs[4]); const DoubleVector mu0 = getDoubleVector(prhs[5]); const DoubleVector Xr0 = getDoubleVector(prhs[6]); const DoubleVector I = getDoubleVector(prhs[7]); // Get the number of samples (n), the number of variables (p), and // the number of coordinate ascent updates (numiter). const Size n = X.nr; const Size p = X.nc; const Size numiter = I.n; // INITIALIZE OUTPUTS. DoubleVector alpha = createMatlabVector(p,&plhs[0]); DoubleVector mu = createMatlabVector(p,&plhs[1]); DoubleVector Xr = createMatlabVector(n,&plhs[2]); copyDoubleVector(alpha0,alpha); copyDoubleVector(mu0,mu); copyDoubleVector(Xr0,Xr); // This is storage for a column of matrix X. double* x = malloc(sizeof(double)*n); // RUN COORDINATE ASCENT UPDATES. // Repeat for each coordinate ascent update. for (Index iter = 0; iter < numiter; iter++) { Index k = (Index) I.elems[iter]; // Copy the kth column of matrix X. copyColumn(X.elems,x,k,n); // Perform the update. varbvsbinupdate(x,xy.elems[k],xd.elems[k],xdx.elems[k],d.elems,sa, logodds.elems[k],alpha.elems+k,mu.elems+k,Xr.elems,n); } // Free the dynamically allocated memory. free(x); }
TableOfReal TableOfReal_extractColumnsWhere (TableOfReal me, const wchar_t *condition, Interpreter interpreter) { try { Formula_compile (interpreter, me, condition, kFormula_EXPRESSION_TYPE_NUMERIC, TRUE); /* * Count the new number of columns. */ long numberOfElements = 0; for (long icol = 1; icol <= my numberOfColumns; icol ++) { for (long irow = 1; irow <= my numberOfRows; irow ++) { struct Formula_Result result; Formula_run (irow, icol, & result); if (result. result.numericResult != 0.0) { numberOfElements ++; break; } } } if (numberOfElements < 1) Melder_throw ("No columns match this condition."); /* * Create room for the result. */ autoTableOfReal thee = TableOfReal_create (my numberOfRows, numberOfElements); copyRowLabels (me, thee.peek()); /* * Store the result. */ numberOfElements = 0; for (long icol = 1; icol <= my numberOfColumns; icol ++) { for (long irow = 1; irow <= my numberOfRows; irow ++) { struct Formula_Result result; Formula_run (irow, icol, & result); if (result. result.numericResult != 0.0) { copyColumn (me, icol, thee.peek(), ++ numberOfElements); break; } } } return thee.transfer(); } catch (MelderError) { Melder_throw (me, ": columns not extracted."); } }
TableOfReal TableOfReal_extractColumnsWhereLabel (TableOfReal me, int which_Melder_STRING, const wchar_t *criterion) { try { long n = 0; for (long icol = 1; icol <= my numberOfColumns; icol ++) { if (Melder_stringMatchesCriterion (my columnLabels [icol], which_Melder_STRING, criterion)) { n ++; } } if (n == 0) Melder_throw ("No column matches this criterion."); autoTableOfReal thee = TableOfReal_create (my numberOfRows, n); copyRowLabels (me, thee.peek()); n = 0; for (long icol = 1; icol <= my numberOfColumns; icol ++) { if (Melder_stringMatchesCriterion (my columnLabels [icol], which_Melder_STRING, criterion)) { copyColumn (me, icol, thee.peek(), ++ n); } } return thee.transfer(); } catch (MelderError) { Melder_throw (me, ": columns not extracted."); } }
TableOfReal TableOfReal_extractColumnsWhereRow (TableOfReal me, long row, int which_Melder_NUMBER, double criterion) { try { if (row < 1 || row > my numberOfRows) Melder_throw ("No such row: ", row, "."); long n = 0; for (long icol = 1; icol <= my numberOfColumns; icol ++) { if (Melder_numberMatchesCriterion (my data [row] [icol], which_Melder_NUMBER, criterion)) { n ++; } } if (n == 0) Melder_throw ("No column matches this criterion."); autoTableOfReal thee = TableOfReal_create (my numberOfRows, n); copyRowLabels (me, thee.peek()); n = 0; for (long icol = 1; icol <= my numberOfColumns; icol ++) if (Melder_numberMatchesCriterion (my data [row] [icol], which_Melder_NUMBER, criterion)) copyColumn (me, icol, thee.peek(), ++ n); return thee.transfer(); } catch (MelderError) { Melder_throw (me, ": columns not extracted."); } }
void PlotDataSelectWidget::tableContextMenu(const QPoint& pos) { PlotDataSelect* plotDataSelect = dynamic_cast<PlotDataSelect*>(processor_); QModelIndex index = table_->indexAt(pos); std::vector<int> selectedColumns = table_->selectedColumns(); std::vector<int> selectedRows = table_->selectedRows(); std::pair<QPoint,QPoint> selectedArea = table_->selectedArea(); contextMenuTable_->clear(); PlotData* data = const_cast<PlotData*>(plotDataSelect->getPlotData()); QAction* newAct; QList<QVariant>* qlist = new QList<QVariant>(); std::stringstream str; std::string menuString; // create popupmenu if (function_ == FunctionLibrary::NONE) { str.str(""); str.clear(); str << "Select"; newAct = new QAction(QString::fromStdString(str.str()),this); newAct->setData(QVariant(static_cast<int>(FunctionLibrary::SELECT))); contextMenuTable_->addAction(newAct); QObject::connect(newAct,SIGNAL(triggered()),this,SLOT(functionSelect())); menuString = "Column Order"; newAct = new QAction(QString::fromStdString(menuString),this); newAct->setData(QVariant(static_cast<int>(FunctionLibrary::COLUMNORDER))); contextMenuTable_->addAction(newAct); QObject::connect(newAct,SIGNAL(triggered()),this,SLOT(functionSelect())); menuString = "Filter"; newAct = new QAction(QString::fromStdString(menuString),this); newAct->setData(QVariant(static_cast<int>(FunctionLibrary::FILTER))); contextMenuTable_->addAction(newAct); QObject::connect(newAct,SIGNAL(triggered()),this,SLOT(functionSelect())); contextMenuTable_->popup(table_->mapToGlobal(pos)); } else if (function_ != FunctionLibrary::NONE) { menuString = "Deactivate Function"; newAct = new QAction(QString::fromStdString(menuString),this); newAct->setData(QVariant(0)); contextMenuTable_->addAction(newAct); QObject::connect(newAct,SIGNAL(triggered()),this,SLOT(functionSelect())); if (function_ == FunctionLibrary::SELECT || function_ == FunctionLibrary::COLUMNORDER) { contextMenuTable_->addSeparator(); str.str(""); str.clear(); if (plotDataSelect->getResetListSize() > 0) { str << plotDataSelect->getResetListSize(); menuString = "Reset All (" + str.str() + " Actions)"; } else menuString = "Reset All"; newAct = new QAction(QString::fromStdString(menuString),this); if (plotDataSelect->getResetListSize() == 0) newAct->setEnabled(false); contextMenuTable_->addAction(newAct); QObject::connect(newAct,SIGNAL(triggered()),this,SLOT(selectResetAll())); menuString = "Reset Last"; newAct = new QAction(QString::fromStdString(menuString),this); if (plotDataSelect->getResetListSize() == 0) newAct->setEnabled(false); contextMenuTable_->addAction(newAct); QObject::connect(newAct,SIGNAL(triggered()),this,SLOT(selectResetLast())); contextMenuTable_->addSeparator(); if (function_ == FunctionLibrary::SELECT) { if (index.column() >= 0) { menuString = "Disable \""+data->getColumnLabel(index.column())+"\" Column"; } else { menuString = "Selecting not Well-Defined"; } newAct = new QAction(QString::fromStdString(menuString),this); if (index.column() >= 0) { newAct->setData(QVariant(index.column())); } else { newAct->setEnabled(false); } contextMenuTable_->addAction(newAct); QObject::connect(newAct,SIGNAL(triggered()),this,SLOT(selectChange())); // only show this part of the Menu, if something is selected if (selectedColumns.size() > 0 || selectedRows.size() > 0) { if (selectedColumns.size() > 1) { qlist->clear(); str.str(""); str.clear(); str << selectedColumns.size(); menuString = "Disable Selected Columns ("+str.str()+")"; newAct = new QAction(QString::fromStdString(menuString),this); for (size_t j = 0; j < selectedColumns.size(); ++j) { qlist->push_back(QVariant(selectedColumns.at(j))); } newAct->setData(QVariant(*qlist)); contextMenuTable_->addAction(newAct); QObject::connect(newAct,SIGNAL(triggered()),this,SLOT(selectChange())); } qlist->clear(); str.str(""); str.clear(); str << selectedColumns.size(); menuString = "Select Columns ("+str.str()+")"; newAct = new QAction(QString::fromStdString(menuString),this); for (size_t j = 0; j < selectedColumns.size(); ++j) { qlist->push_back(QVariant(selectedColumns.at(j))); } newAct->setData(QVariant(*qlist)); contextMenuTable_->addAction(newAct); QObject::connect(newAct,SIGNAL(triggered()),this,SLOT(selectColumnChange())); qlist->clear(); str.str(""); str.clear(); str << selectedRows.size(); menuString = "Select Rows ("+str.str()+")"; newAct = new QAction(QString::fromStdString(menuString),this); for (size_t j = 0; j < selectedRows.size(); ++j) { qlist->push_back(QVariant(selectedRows.at(j)-proxyModel_->getAddLines())); } newAct->setData(QVariant(*qlist)); contextMenuTable_->addAction(newAct); QObject::connect(newAct,SIGNAL(triggered()),this,SLOT(selectRowChange())); qlist->clear(); str.str(""); str.clear(); str << selectedRows.size(); menuString = "Select Columns && Rows ("+str.str()+")"; newAct = new QAction(QString::fromStdString(menuString),this); QList<QVariant>* qlist1 = new QList<QVariant>(); QList<QVariant>* qlist2 = new QList<QVariant>(); for (size_t j = 0; j < selectedColumns.size(); ++j) { qlist1->push_back(QVariant(selectedColumns.at(j))); } for (size_t j = 0; j < selectedRows.size(); ++j) { qlist2->push_back(QVariant(selectedRows.at(j)-proxyModel_->getAddLines())); } qlist->push_back(QVariant(*qlist1)); qlist->push_back(QVariant(*qlist2)); newAct->setData(QVariant(*qlist)); contextMenuTable_->addAction(newAct); QObject::connect(newAct,SIGNAL(triggered()),this,SLOT(selectColumnRowChange())); qlist->clear(); str.str(""); str.clear(); str << selectedArea.second.x()- selectedArea.first.x() + 1 << "x" << selectedArea.second.y() - selectedArea.first.y() + 1; menuString = "Select Area ("+str.str()+")"; newAct = new QAction(QString::fromStdString(menuString),this); qlist->push_back(QVariant(QPoint(selectedArea.first.x(),selectedArea.first.y()-proxyModel_->getAddLines()))); qlist->push_back(QVariant(QPoint(selectedArea.second.x(),selectedArea.second.y()-proxyModel_->getAddLines()))); newAct->setData(QVariant(*qlist)); contextMenuTable_->addAction(newAct); QObject::connect(newAct,SIGNAL(triggered()),this,SLOT(selectAreaChange())); } contextMenuTable_->addSeparator(); if (index.column() >= 0) { menuString = "Rename \""+data->getColumnLabel(index.column())+"\""; newAct = new QAction(QString::fromStdString(menuString),this); newAct->setData(QVariant(index.column())); contextMenuTable_->addAction(newAct); QObject::connect(newAct,SIGNAL(triggered()),this,SLOT(renameColumn())); } const std::vector<Property*>& properties = plotDataSelect->getProperties(); PlotPredicateProperty* pPVProperty = NULL; for (size_t i = 0; i < properties.size(); ++i) { if (dynamic_cast<PlotPredicateProperty*>(properties[i])) { pPVProperty = dynamic_cast<PlotPredicateProperty*>(properties[i]); break; } } menuString = "Set "; if (index.column() >= 0) { for (size_t i = 0; i < pPVProperty->get().size(); ++i) { if (index.column() == pPVProperty->get().at(i).first) { menuString = "Change "; } } } menuString += "Predicate"; newAct = new QAction(QString::fromStdString(menuString),this); if (index.column() >= 0) { newAct->setData(QVariant(index.column())); } else { newAct->setEnabled(false); } contextMenuTable_->addAction(newAct); QObject::connect(newAct,SIGNAL(triggered()),this,SLOT(predicateChange())); } beforeMenu_->clear(); for (int i = 0; i < data->getColumnCount(); ++i) { if (i != index.column()) { qlist->clear(); menuString = "\""+data->getColumnLabel(i)+"\" Column"; newAct = new QAction(QString::fromStdString(menuString),this); qlist->push_back(QVariant(index.column())); qlist->push_back(QVariant(i)); newAct->setData(QVariant(*qlist)); beforeMenu_->addAction(newAct); QObject::connect(newAct,SIGNAL(triggered()),this,SLOT(sortChangeBefore())); } } if (index.column() >= 0) { beforeMenu_->setEnabled(true); } else { beforeMenu_->setEnabled(false); } contextMenuTable_->addMenu(beforeMenu_); afterMenu_->clear(); for (int i = 0; i < data->getColumnCount(); ++i) { if (i != index.column()) { qlist->clear(); menuString = "\""+data->getColumnLabel(i)+"\" Column"; newAct = new QAction(QString::fromStdString(menuString),this); qlist->push_back(QVariant(index.column())); qlist->push_back(QVariant(i)); newAct->setData(QVariant(*qlist)); afterMenu_->addAction(newAct); QObject::connect(newAct,SIGNAL(triggered()),this,SLOT(sortChangeAfter())); } } if (index.column() >= 0) { afterMenu_->setEnabled(true); } else { afterMenu_->setEnabled(false); } contextMenuTable_->addMenu(afterMenu_); switchMenu_->clear(); for (int i = 0; i < data->getColumnCount(); ++i) { if (i != index.column()) { qlist->clear(); menuString = "\""+data->getColumnLabel(i)+"\" Column"; newAct = new QAction(QString::fromStdString(menuString),this); qlist->push_back(QVariant(index.column())); qlist->push_back(QVariant(i)); newAct->setData(QVariant(*qlist)); switchMenu_->addAction(newAct); QObject::connect(newAct,SIGNAL(triggered()),this,SLOT(sortChangeSwitch())); } } if (index.column() >= 0) { switchMenu_->setEnabled(true); } else { switchMenu_->setEnabled(false); } contextMenuTable_->addMenu(switchMenu_); if (function_ == FunctionLibrary::SELECT) { copyColumnMenu_->clear(); for (int i = 0; i < data->getColumnCount(); ++i) { qlist->clear(); menuString = "\""+data->getColumnLabel(i)+"\" Column"; newAct = new QAction(QString::fromStdString(menuString),this); qlist->push_back(QVariant(index.column())); qlist->push_back(QVariant(i)); newAct->setData(QVariant(*qlist)); copyColumnMenu_->addAction(newAct); QObject::connect(newAct,SIGNAL(triggered()),this,SLOT(copyColumn())); } contextMenuTable_->addMenu(copyColumnMenu_); } } else if (function_ == FunctionLibrary::FILTER) { contextMenuTable_->addSeparator(); str.str(""); str.clear(); if (plotDataSelect->getResetListSize() > 0) { str << plotDataSelect->getResetListSize(); menuString = "Reset All (" + str.str() + " Actions)"; } else menuString = "Reset All"; newAct = new QAction(QString::fromStdString(menuString),this); if (plotDataSelect->getResetListSize() == 0) newAct->setEnabled(false); contextMenuTable_->addAction(newAct); QObject::connect(newAct,SIGNAL(triggered()),this,SLOT(selectResetAll())); menuString = "Reset Last"; newAct = new QAction(QString::fromStdString(menuString),this); if (plotDataSelect->getResetListSize() == 0) newAct->setEnabled(false); contextMenuTable_->addAction(newAct); QObject::connect(newAct,SIGNAL(triggered()),this,SLOT(selectResetLast())); contextMenuTable_->addSeparator(); menuString = "Delete All Rows With EMPTY Cells"; newAct = new QAction(QString::fromStdString(menuString),this); contextMenuTable_->addAction(newAct); QObject::connect(newAct,SIGNAL(triggered()),this,SLOT(filterEmptyCells())); menuString = "Delete All Rows With Non Alpha-Numeric Cells"; newAct = new QAction(QString::fromStdString(menuString),this); contextMenuTable_->addAction(newAct); QObject::connect(newAct,SIGNAL(triggered()),this,SLOT(filterAlphaNumeric())); } contextMenuTable_->popup(table_->mapToGlobal(pos)); } delete qlist; }