本文整理汇总了C++中AMDataSource::value方法的典型用法代码示例。如果您正苦于以下问题:C++ AMDataSource::value方法的具体用法?C++ AMDataSource::value怎么用?C++ AMDataSource::value使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AMDataSource
的用法示例。
在下文中一共展示了AMDataSource::value方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: switch
void AMExternalScanDataSourceAB::copyValues(int dataSourceIndex)
{
AMDataSource* ds = scan_->dataSourceAt(dataSourceIndex);
const AMnDIndex size = ds->size();
switch(ds->rank()) {
case 0:
values_.clear();
values_ << ds->value(AMnDIndex());
break;
case 1: {
values_.resize(size.i());
for(int i=0; i<size.i(); i++)
values_[i] = ds->value(i);
break;
}
case 2: {
values_.resize(size.i()*size.j());
for(int i=0; i<size.i(); i++)
for(int j=0; j<size.j(); j++)
values_[i*size.j() + j] = ds->value(AMnDIndex(i,j));
break;
}
case 3: {
values_.resize(size.i()*size.j()*size.k());
for(int i=0; i<size.i(); i++)
for(int j=0; j<size.j(); j++)
for(int k=0; k<size.k(); k++)
values_[i*size.j()*size.k() + j*size.k() + k] = ds->value(AMnDIndex(i,j,k));
break;
}
case 4: {
values_.resize(size.i()*size.j()*size.k()*size.l());
for(int i=0; i<size.i(); i++)
for(int j=0; j<size.j(); j++)
for(int k=0; k<size.k(); k++)
for(int l=0; l<size.l(); l++)
values_[i*size.j()*size.k()*size.l() + j*size.k()*size.l() + k*size.l() + l] = ds->value(AMnDIndex(i,j,k,l));
break;
}
case 5: {
values_.resize(size.i()*size.j()*size.k()*size.l()*size.m());
for(int i=0; i<size.i(); i++)
for(int j=0; j<size.j(); j++)
for(int k=0; k<size.k(); k++)
for(int l=0; l<size.l(); l++)
for(int m=0; m<size.m(); m++)
values_[i*size.j()*size.k()*size.l()*size.m() + j*size.k()*size.l()*size.m() + k*size.l()*size.m() + l*size.m() + m] = ds->value(AMnDIndex(i,j,k,l,m));
/// \todo oh god, we really need a block copy or a multi-dimensional iterator for AMDataSource::value()...
break;
}
}
}
示例2: writeMainTable
void VESPERSExporterSMAK::writeMainTable()
{
QTextStream ts(file_);
// 1. Column header.
if(option_->columnHeaderIncluded()) {
ts << "# ";
for(int c=0; c<mainTableDataSources_.count(); c++) {
setCurrentDataSource(mainTableDataSources_.at(c));
if(mainTableIncludeX_.at(c))
ts << "H" << option_->columnDelimiter() << "V" << option_->columnDelimiter();
ts << parseKeywordString(option_->columnHeader()) << option_->columnDelimiter();
}
}
ts << option_->newlineDelimiter() << option_->columnHeaderDelimiter() << option_->newlineDelimiter();
// 2. rows
VESPERS2DScanConfiguration *config = qobject_cast<VESPERS2DScanConfiguration *>(const_cast<AMScanConfiguration *>(currentScan_->scanConfiguration()));
if (!config)
return;
QString suffix;
if (config->ccdDetector().testFlag(VESPERS::Roper))
suffix = "spe";
else if (config->ccdDetector().testFlag(VESPERS::Mar))
suffix = "tif";
else if (config->ccdDetector().testFlag(VESPERS::Pilatus))
suffix = "tif";
QString ccdFileName = config->ccdFileName();
int yRange = yRange_ == -1 ? currentScan_->scanSize(1) : (yRange_-1);
int xRange = currentScan_->scanSize(0);
for(int y = 0; y < yRange; y++) {
for (int x = 0; x < xRange; x++){
// over rows within columns
for(int c=0; c<mainTableDataSources_.count(); c++) {
setCurrentDataSource(mainTableDataSources_.at(c));
AMDataSource* ds = currentScan_->dataSourceAt(currentDataSourceIndex_);
int precision = option_->exportPrecision(ds->name());
// print x and y column?
if(mainTableIncludeX_.at(c)) {
ts << ds->axisValue(0,x).toString(precision);
ts << option_->columnDelimiter();
ts << ds->axisValue(1, y).toString(precision);
ts << option_->columnDelimiter();
}
if(ds->name().contains("FileNumber"))
ts << QString("%1_%2.%3").arg(ccdFileName).arg(int(ds->value(AMnDIndex(x, y)))-1).arg(suffix); // The -1 is because the value stored here is the NEXT number in the scan. Purely a nomenclature setup from the EPICS interface.
else
ts << ds->value(AMnDIndex(x, y)).toString(precision);
ts << option_->columnDelimiter();
}
ts << option_->newlineDelimiter();
}
}
if (yRange_ != -1 && xIndex_ != -1){
for (int x = 0; x < xIndex_; x++){
// over rows within columns
for(int c=0; c<mainTableDataSources_.count(); c++) {
setCurrentDataSource(mainTableDataSources_.at(c));
AMDataSource* ds = currentScan_->dataSourceAt(currentDataSourceIndex_);
int precision = option_->exportPrecision(ds->name());
// print x and y column?
if(mainTableIncludeX_.at(c)) {
ts << ds->axisValue(0,x).toString(precision);
ts << option_->columnDelimiter();
ts << ds->axisValue(1, yRange_-1).toString(precision);
ts << option_->columnDelimiter();
}
if(ds->name().contains("FileNumber"))
ts << QString("%1_%2.%3").arg(ccdFileName).arg(int(ds->value(AMnDIndex(x, yRange_-1)))-1).arg(suffix); // The -1 is because the value stored here is the NEXT number in the scan. Purely a nomenclature setup from the EPICS interface.
else
ts << ds->value(AMnDIndex(x, yRange_-1)).toString(precision);
//.........这里部分代码省略.........
示例3: out
bool AMExporter2DAscii::writeSeparateFiles(const QString &destinationFolderPath)
{
if (option_->higherDimensionsInRows()){
for (int s = 0, sSize = separateFileDataSources_.size(); s < sSize; s++) {
setCurrentDataSource(separateFileDataSources_.at(s)); // sets currentDataSourceIndex_
AMDataSource* source = currentScan_->dataSourceAt(currentDataSourceIndex_);
QFile output;
QString separateFileName = parseKeywordString( destinationFolderPath % "/" % option_->separateSectionFileName() );
separateFileName = removeNonPrintableCharacters(separateFileName);
if(!openFile(&output, separateFileName)) {
AMErrorMon::report(AMErrorReport(this, AMErrorReport::Alert, -4, "Export failed (partially): You selected to create separate files for certain data sets. Could not open the file '" % separateFileName % "' for writing. Check that you have permission to save files there, and that a file with that name doesn't already exists."));
return false;
}
int spectraSize = source->size(2);
QString columnDelimiter = option_->columnDelimiter();
QString newLineDelimiter = option_->newlineDelimiter();
QTextStream out(&output);
int yRange = yRange_ == -1 ? currentScan_->scanSize(1) : (yRange_-1);
int xRange = currentScan_->scanSize(0);
for (int y = 0; y < yRange; y++){
for (int x = 0; x < xRange; x++){
QVector<double> data(spectraSize);
source->values(AMnDIndex(x, y, 0), AMnDIndex(x, y, spectraSize-1), data.data());
for (int i = 0; i < spectraSize; i++)
out << data.at(i) << columnDelimiter;
out << newLineDelimiter;
}
}
if (yRange_ != -1 && xIndex_ != -1){
for (int i = 0; i < xIndex_; i++){
QVector<double> data(spectraSize);
source->values(AMnDIndex(i, yRange_-1, 0), AMnDIndex(i, yRange_-1, spectraSize-1), data.data());
for (int i = 0; i < spectraSize; i++)
out << data.at(i) << columnDelimiter;
out << newLineDelimiter;
}
out << newLineDelimiter;
}
output.close();
}
}
else{
for (int s = 0, sSize = separateFileDataSources_.size(); s < sSize; s++) {
setCurrentDataSource(separateFileDataSources_.at(s)); // sets currentDataSourceIndex_
AMDataSource* source = currentScan_->dataSourceAt(currentDataSourceIndex_);
QFile output;
QString separateFileName = parseKeywordString( destinationFolderPath % "/" % option_->separateSectionFileName() );
separateFileName = removeNonPrintableCharacters(separateFileName);
if(!openFile(&output, separateFileName)) {
AMErrorMon::report(AMErrorReport(this, AMErrorReport::Alert, -4, "Export failed (partially): You selected to create separate files for certain data sets. Could not open the file '" % separateFileName % "' for writing. Check that you have permission to save files there, and that a file with that name doesn't already exists."));
return false;
}
int spectraSize = source->size(2);
QString columnDelimiter = option_->columnDelimiter();
QString newLineDelimiter = option_->newlineDelimiter();
QTextStream out(&output);
int yRange = yRange_ == -1 ? currentScan_->scanSize(1) : (yRange_-1);
int xRange = currentScan_->scanSize(0);
for (int i = 0; i < spectraSize; i++){
for (int y = 0; y < yRange; y++)
for (int x = 0; x < xRange; x++)
out << double(source->value(AMnDIndex(x, y, i))) << columnDelimiter;
if (yRange_ != -1 && xIndex_ != -1){
for (int x = 0; x < xIndex_; x++)
out << double(source->value(AMnDIndex(x, yRange_-1, i))) << columnDelimiter;
}
out << newLineDelimiter;
}
output.close();
}
}
//.........这里部分代码省略.........
示例4: ts
void AMExporter2DAscii::writeMainTable()
{
QTextStream ts(file_);
// 1. Column header.
if(option_->columnHeaderIncluded()) {
ts << "# ";
for(int c=0; c<mainTableDataSources_.count(); c++) {
setCurrentDataSource(mainTableDataSources_.at(c));
if(mainTableIncludeX_.at(c))
ts << currentScan_->rawData()->scanAxisAt(0).name << option_->columnDelimiter() << currentScan_->rawData()->scanAxisAt(1).name << option_->columnDelimiter();
ts << parseKeywordString(option_->columnHeader()) << option_->columnDelimiter();
}
}
ts << option_->newlineDelimiter() << option_->columnHeaderDelimiter() << option_->newlineDelimiter();
// 2. rows
int yRange = yRange_ == -1 ? currentScan_->scanSize(1) : (yRange_-1);
int xRange = currentScan_->scanSize(0);
for(int y = 0; y < yRange; y++) {
for (int x = 0; x < xRange; x++){
// over rows within columns
for(int c=0; c<mainTableDataSources_.count(); c++) {
setCurrentDataSource(mainTableDataSources_.at(c));
AMDataSource* ds = currentScan_->dataSourceAt(currentDataSourceIndex_);
// print x and y column?
if(mainTableIncludeX_.at(c)) {
ts << ds->axisValue(0, x).toString();
ts << option_->columnDelimiter();
ts << ds->axisValue(1, y).toString();
ts << option_->columnDelimiter();
}
ts << ds->value(AMnDIndex(x, y)).toString();
ts << option_->columnDelimiter();
}
ts << option_->newlineDelimiter();
}
}
if (yRange_ != -1 && xIndex_ != -1){
for (int i = 0; i < xIndex_; i++){
// over rows within columns
for(int c=0; c<mainTableDataSources_.count(); c++) {
setCurrentDataSource(mainTableDataSources_.at(c));
AMDataSource* ds = currentScan_->dataSourceAt(currentDataSourceIndex_);
// print x and y column?
if(mainTableIncludeX_.at(c)) {
ts << ds->axisValue(0,i).toString();
ts << option_->columnDelimiter();
ts << ds->axisValue(1, yRange_-1).toString();
ts << option_->columnDelimiter();
}
ts << ds->value(AMnDIndex(i, yRange_-1)).toString();
ts << option_->columnDelimiter();
}
ts << option_->newlineDelimiter();
}
}
ts << option_->newlineDelimiter();
}
示例5: writeSeparateSections
void AMExporterGeneralAscii::writeSeparateSections()
{
QTextStream ts(file_);
if (option_->higherDimensionsInRows()){
for(int s=0; s<separateSectionDataSources_.count(); s++) {
ts << option_->newlineDelimiter();
setCurrentDataSource(separateSectionDataSources_.at(s)); // sets currentDataSourceIndex_
AMDataSource* ds = currentScan_->dataSourceAt(currentDataSourceIndex_);
int precision = option_->exportPrecision(ds->name());
// section header?
if(option_->sectionHeaderIncluded()) {
ts << parseKeywordString(option_->sectionHeader());
ts << option_->newlineDelimiter();
}
// column header?
if(option_->columnHeaderIncluded()) {
// 1D data sources:
if(ds->rank() == 0) {
ts << parseKeywordString(option_->columnHeader()) << option_->columnDelimiter();
}
else if(ds->rank() == 1) {
if(separateSectionIncludeX_.at(s))
ts << parseKeywordString(option_->columnHeader()) << ".X" << option_->columnDelimiter();
ts << parseKeywordString(option_->columnHeader()) << option_->columnDelimiter();
}
else if(ds->rank() == 2) { // 2D
if(separateSectionIncludeX_.at(s))
ts << parseKeywordString(option_->columnHeader()) << ".X" << option_->columnDelimiter();
// need a loop over the second axis columns
for(int cc=0; cc<ds->size(1); cc++) {
setCurrentColumnIndex(cc);
ts << parseKeywordString(option_->columnHeader()) << "[" << ds->axisValue(1, cc).toString(precision) << ds->axisInfoAt(1).units << "]" << option_->columnDelimiter();
}
}
ts << option_->newlineDelimiter() << option_->columnHeaderDelimiter() << option_->newlineDelimiter();
}
// table
switch(ds->rank()) {
case 0:
ts << ds->value(AMnDIndex()).toString(precision) << option_->columnDelimiter() << option_->newlineDelimiter();
break;
case 1: {
int maxTableRows = ds->size(0);
for(int r=0; r<maxTableRows; r++) {
if(separateSectionIncludeX_.at(s)) {
ts << ds->axisValue(0,r).toString(precision) << option_->columnDelimiter();
}
ts << ds->value(r).toString(precision) << option_->columnDelimiter() << option_->newlineDelimiter();
}
}
break;
case 2: {
int maxTableRows = ds->size(0);
for(int r=0; r<maxTableRows; r++) {
if(separateSectionIncludeX_.at(s))
ts << ds->axisValue(0,r).toString(precision) << option_->columnDelimiter();
// need a loop over the second axis columns
for(int cc=0; cc<ds->size(1); cc++) {
ts << ds->value(AMnDIndex(r,cc)).toString(precision) << option_->columnDelimiter();
}
ts << option_->newlineDelimiter();
}
}
break;
default:
/// \todo Implement 3D
break;
}
}
}
// For writing out in columns. Essentially transposing the file.
else{
for(int s=0; s<separateSectionDataSources_.count(); s++) {
setCurrentDataSource(separateSectionDataSources_.at(s)); // sets currentDataSourceIndex_
AMDataSource* ds = currentScan_->dataSourceAt(currentDataSourceIndex_);
int precision = option_->exportPrecision(ds->name());
// section header?
if(option_->sectionHeaderIncluded()) {
ts << parseKeywordString(option_->sectionHeader());
ts << option_->newlineDelimiter();
}
// If including the X values.
if (separateSectionIncludeX_.at(s)){
switch(ds->rank()){
case 0:
break;
//.........这里部分代码省略.........
示例6: ts
void VESPERSExporter2DAscii::writeMainTable()
{
QTextStream ts(file_);
// 1. Column header.
if(option_->columnHeaderIncluded()) {
ts << "# ";
for(int c=0; c<mainTableDataSources_.count(); c++) {
setCurrentDataSource(mainTableDataSources_.at(c));
if(mainTableIncludeX_.at(c))
ts << currentScan_->rawData()->scanAxisAt(0).name << option_->columnDelimiter() << currentScan_->rawData()->scanAxisAt(1).name << option_->columnDelimiter();
ts << parseKeywordString(option_->columnHeader()) << option_->columnDelimiter();
}
}
ts << option_->newlineDelimiter() << option_->columnHeaderDelimiter() << option_->newlineDelimiter();
// 2. rows
VESPERS::CCDDetectors ccdDetector;
QString ccdFileName = "";
VESPERS2DScanConfiguration *configuration2D = qobject_cast<VESPERS2DScanConfiguration *>(const_cast<AMScanConfiguration *>(currentScan_->scanConfiguration()));
VESPERSTimedLineScanConfiguration *timedConfiguration = qobject_cast<VESPERSTimedLineScanConfiguration *>(const_cast<AMScanConfiguration *>(currentScan_->scanConfiguration()));
if (configuration2D){
ccdDetector = configuration2D->ccdDetector();
ccdFileName = configuration2D->ccdFileName();
}
else if (timedConfiguration){
ccdDetector = timedConfiguration->ccdDetector();
ccdFileName = timedConfiguration->ccdFileName();
}
else
return;
QString ccdString;
// This will return -1 if it fails. This means any checks inside this loop will always fail if the CCD was not included.
int yRange = yRange_ == -1 ? currentScan_->scanSize(1) : (yRange_-1);
int xRange = currentScan_->scanSize(0);
if (ccdDetector.testFlag(VESPERS::Roper))
ccdString = ccdFileName % "_%1.spe";
else if (ccdDetector.testFlag(VESPERS::Mar))
ccdString = ccdFileName % "_%1.tif";
else if (ccdDetector.testFlag(VESPERS::Pilatus))
ccdString = ccdFileName % "-%1.tif";
else
ccdString = "";
for(int y = 0; y < yRange; y++) {
for (int x = 0; x < xRange; x++){
// over rows within columns
for(int c=0; c<mainTableDataSources_.count(); c++) {
setCurrentDataSource(mainTableDataSources_.at(c));
AMDataSource* ds = currentScan_->dataSourceAt(currentDataSourceIndex_);
int precision = option_->exportPrecision(ds->name());
// print x and y column?
if(mainTableIncludeX_.at(c)) {
ts << ds->axisValue(0, x).toString(precision);
ts << option_->columnDelimiter();
ts << ds->axisValue(1, y).toString(precision);
ts << option_->columnDelimiter();
}
if(ds->name().contains("FileNumber"))
ts << QString(ccdString).arg(int(ds->value(AMnDIndex(x, y)))-1); // The -1 is because the value stored here is the NEXT number in the scan. Purely a nomenclature setup from the EPICS interface.
else
ts << ds->value(AMnDIndex(x, y)).toString(precision);
ts << option_->columnDelimiter();
}
ts << option_->newlineDelimiter();
}
}
if (yRange_ != -1 && xIndex_ != -1){
for (int x = 0; x < xIndex_; x++){
// over rows within columns
for(int c=0; c<mainTableDataSources_.count(); c++) {
//.........这里部分代码省略.........