Skip to content
Snippets Groups Projects
Commit 4dec3a53 authored by Mikhail Svechnikov's avatar Mikhail Svechnikov
Browse files

rm all 'nativeUnits'

parent 41effdb7
No related branches found
No related tags found
1 merge request!2179Remove 'native data' and 'native units' (#331)
...@@ -34,7 +34,7 @@ const QString BinaryData("BinaryData"); ...@@ -34,7 +34,7 @@ const QString BinaryData("BinaryData");
const QString Data("Data"); const QString Data("Data");
const QString InstrumentId("InstrumentId"); const QString InstrumentId("InstrumentId");
const QString Name("Name"); const QString Name("Name");
const QString NativeData("NativeData"); const QString NativeData("NativeData"); // obsolete since v22.0
const QString NativeDataUnits("NativeDataUnits"); // obsolete since v22.0 const QString NativeDataUnits("NativeDataUnits"); // obsolete since v22.0
const QString PresentationType("PresentationType"); const QString PresentationType("PresentationType");
...@@ -117,22 +117,6 @@ size_t DatafileItem::rank() const ...@@ -117,22 +117,6 @@ size_t DatafileItem::rank() const
return data1DItem() ? 1 : 2; return data1DItem() ? 1 : 2;
} }
bool DatafileItem::hasNativeData() const
{
return nativeDataItem() && nativeDataItem()->c_field();
}
DataItem* DatafileItem::nativeDataItem() const
{
return m_nativeDataItem.get();
}
DataItem* DatafileItem::initNativeData()
{
initDataItem(rank(), m_nativeDataItem);
return m_nativeDataItem.get();
}
bool DatafileItem::holdsDimensionalData() const bool DatafileItem::holdsDimensionalData() const
{ {
const Frame& frame = dataItem()->c_field()->frame(); const Frame& frame = dataItem()->c_field()->frame();
...@@ -143,11 +127,6 @@ bool DatafileItem::holdsDimensionalData() const ...@@ -143,11 +127,6 @@ bool DatafileItem::holdsDimensionalData() const
return false; return false;
} }
const Datafield* DatafileItem::nativeDatafield() const
{
return hasNativeData() ? nativeDataItem()->c_field() : nullptr;
}
//! Sets Datafield to underlying item. //! Sets Datafield to underlying item.
void DatafileItem::setTheDatafield(const Datafield& data) void DatafileItem::setTheDatafield(const Datafield& data)
...@@ -232,9 +211,6 @@ void DatafileItem::updateFileName() ...@@ -232,9 +211,6 @@ void DatafileItem::updateFileName()
{ {
if (DataItem* item = dataItem()) if (DataItem* item = dataItem())
item->setFileName(GUI::Path::intensityDataFileName(realItemName(), "realdata")); item->setFileName(GUI::Path::intensityDataFileName(realItemName(), "realdata"));
if (DataItem* item = nativeDataItem())
item->setFileName(GUI::Path::intensityDataFileName(realItemName(), "nativedata"));
} }
void DatafileItem::writeTo(QXmlStreamWriter* w) const void DatafileItem::writeTo(QXmlStreamWriter* w) const
...@@ -265,14 +241,6 @@ void DatafileItem::writeTo(QXmlStreamWriter* w) const ...@@ -265,14 +241,6 @@ void DatafileItem::writeTo(QXmlStreamWriter* w) const
m_dataItem->writeTo(w); m_dataItem->writeTo(w);
w->writeEndElement(); w->writeEndElement();
} }
// native data
if (m_nativeDataItem) {
w->writeStartElement(Tag::NativeData);
XML::writeAttribute(w, XML::Attrib::type, m_nativeDataItem->TYPE);
m_nativeDataItem->writeTo(w);
w->writeEndElement();
}
} }
void DatafileItem::readFrom(QXmlStreamReader* r) void DatafileItem::readFrom(QXmlStreamReader* r)
...@@ -312,12 +280,6 @@ void DatafileItem::readFrom(QXmlStreamReader* r) ...@@ -312,12 +280,6 @@ void DatafileItem::readFrom(QXmlStreamReader* r)
m_dataItem->readFrom(r); m_dataItem->readFrom(r);
XML::gotoEndElementOfTag(r, tag); XML::gotoEndElementOfTag(r, tag);
// native data
} else if (tag == Tag::NativeData) {
ASSERT(m_dataItem); // read 'm_dataItem' before
initNativeData()->readFrom(r);
XML::gotoEndElementOfTag(r, tag);
} else } else
r->skipCurrentElement(); r->skipCurrentElement();
} }
...@@ -327,30 +289,16 @@ void DatafileItem::writeDatafiles(const QString& projectDir) const ...@@ -327,30 +289,16 @@ void DatafileItem::writeDatafiles(const QString& projectDir) const
{ {
if (m_dataItem) if (m_dataItem)
m_dataItem->saveDatafield(projectDir); m_dataItem->saveDatafield(projectDir);
if (m_nativeDataItem)
m_nativeDataItem->saveDatafield(projectDir);
} }
QString DatafileItem::readDatafiles(const QString& projectDir, MessageService* messageService) QString DatafileItem::readDatafiles(const QString& projectDir, MessageService* messageService)
{ {
QString dataError, nativeDataError; if (m_dataItem) {
QString dataError = m_dataItem->loadDatafield(messageService, projectDir, rank());
if (m_dataItem) if (!dataError.isEmpty())
dataError = m_dataItem->loadDatafield(messageService, projectDir, rank()); return (dataError);
}
if (m_nativeDataItem) return {};
nativeDataError = m_nativeDataItem->loadDatafield(messageService, projectDir, rank());
// return error message
if (dataError.isEmpty() && nativeDataError.isEmpty())
return {};
else if (!dataError.isEmpty() && nativeDataError.isEmpty())
return (dataError);
else if (dataError.isEmpty() && !nativeDataError.isEmpty())
return (nativeDataError);
else
return (dataError + "\n" + nativeDataError);
} }
void DatafileItem::copyTo(DatafileItem* const dest) const void DatafileItem::copyTo(DatafileItem* const dest) const
...@@ -358,10 +306,14 @@ void DatafileItem::copyTo(DatafileItem* const dest) const ...@@ -358,10 +306,14 @@ void DatafileItem::copyTo(DatafileItem* const dest) const
GUI::Util::copyContents(this, dest); GUI::Util::copyContents(this, dest);
if (m_dataItem) if (m_dataItem)
<<<<<<< HEAD
dest->dataItem()->setDatafield(*dataItem()->c_field()); dest->dataItem()->setDatafield(*dataItem()->c_field());
if (m_nativeDataItem) if (m_nativeDataItem)
dest->nativeDataItem()->setDatafield(*nativeDataItem()->c_field()); dest->nativeDataItem()->setDatafield(*nativeDataItem()->c_field());
=======
realdata_dst->dataItem()->setDatafield(*dataItem()->c_field());
>>>>>>> f7e5c9987a (rm all 'nativeUnits')
} }
std::vector<int> DatafileItem::shape() const std::vector<int> DatafileItem::shape() const
...@@ -384,8 +336,5 @@ void DatafileItem::updateToInstrument(const InstrumentItem* instrument) ...@@ -384,8 +336,5 @@ void DatafileItem::updateToInstrument(const InstrumentItem* instrument)
return; return;
// instrument == nullptr => unlinking => going back to native data // instrument == nullptr => unlinking => going back to native data
auto* native_data_item = nativeDataItem(); // TODO now the function does nothing. do not remove this function, but give it meaning again
auto* data_source = native_data_item ? native_data_item : data_item;
std::unique_ptr<Datafield> native_data(data_source->c_field()->clone());
} }
...@@ -51,17 +51,7 @@ public: ...@@ -51,17 +51,7 @@ public:
size_t rank() const; size_t rank() const;
// native data
bool hasNativeData() const;
DataItem* nativeDataItem() const;
DataItem* initNativeData();
bool holdsDimensionalData() const; bool holdsDimensionalData() const;
const Datafield* nativeDatafield() const;
void setTheDatafield(const Datafield& data); void setTheDatafield(const Datafield& data);
// instrument // instrument
...@@ -106,19 +96,7 @@ private: ...@@ -106,19 +96,7 @@ private:
QString m_presentationType; QString m_presentationType;
// DataItem can be `Data2DItem` and `Data1DItem` (default `Data2DItem`). // DataItem can be `Data2DItem` and `Data1DItem` (default `Data2DItem`).
/*
"Native_data" is introduced and used in specular mode to keep the original axis
of the dataset. It also stores a copy of original intensity values inside datafield,
but these values are always the same for "data" and "native_data".
At the moment of loading file to DatafileItem "data" and "native_data" are completely equal.
But after linking DatafileItem to instrument and changing the current units the axis of "data"
is changed. When we unlink DatafileItem from instrument, we restore the original axis from
"native_data", because now there is no other way to transform axis without Frame
coming from instrument.
*/
std::unique_ptr<DataItem> m_dataItem; std::unique_ptr<DataItem> m_dataItem;
std::unique_ptr<DataItem> m_nativeDataItem;
}; };
#endif // BORNAGAIN_GUI_MODEL_DEVICE_DATAFILEITEM_H #endif // BORNAGAIN_GUI_MODEL_DEVICE_DATAFILEITEM_H
...@@ -371,7 +371,7 @@ void SpecularInstrumentItem::updateToRealData(const DatafileItem* item) ...@@ -371,7 +371,7 @@ void SpecularInstrumentItem::updateToRealData(const DatafileItem* item)
if (shape().size() != item->shape().size()) if (shape().size() != item->shape().size())
throw std::runtime_error("Specular instrument type is incompatible with passed data shape"); throw std::runtime_error("Specular instrument type is incompatible with passed data shape");
const auto& dataAxis = item->nativeDatafield()->axis(0); const auto& dataAxis = item->dataItem()->c_field()->axis(0);
scanItem()->updateToData(dataAxis); scanItem()->updateToData(dataAxis);
scanItem()->grazingScanItem()->updateAxIndicators(makeFrame()); scanItem()->grazingScanItem()->updateAxIndicators(makeFrame());
} }
...@@ -393,12 +393,7 @@ bool SpecularInstrumentItem::alignedWith(const DatafileItem* item) const ...@@ -393,12 +393,7 @@ bool SpecularInstrumentItem::alignedWith(const DatafileItem* item) const
if (!instrumentAxis) if (!instrumentAxis)
return false; return false;
if (!item->hasNativeData()) const auto& native_axis = item->dataItem()->c_field()->axis(0);
return false;
// TODO remove native data from everywhere
// https://jugit.fz-juelich.de/mlz/bornagain/-/issues/331
const auto& native_axis = item->nativeDatafield()->axis(0);
return *instrumentAxis == native_axis; return *instrumentAxis == native_axis;
} }
......
...@@ -664,11 +664,7 @@ void JobItem::updateFileName() ...@@ -664,11 +664,7 @@ void JobItem::updateFileName()
if (DataItem* item = simulatedDataItem()) if (DataItem* item = simulatedDataItem())
item->setFileName(GUI::Path::intensityDataFileName(jobName(), "jobdata")); item->setFileName(GUI::Path::intensityDataFileName(jobName(), "jobdata"));
if (DatafileItem* real = realItem()) { if (DatafileItem* real = realItem())
if (DataItem* item = real->dataItem()) if (DataItem* item = real->dataItem())
item->setFileName(GUI::Path::intensityDataFileName(jobName(), "refdata")); item->setFileName(GUI::Path::intensityDataFileName(jobName(), "refdata"));
if (DataItem* item = real->nativeDataItem())
item->setFileName(GUI::Path::intensityDataFileName(identifier(), "nativedata"));
}
} }
...@@ -37,12 +37,10 @@ DatafilesModel::~DatafilesModel() = default; ...@@ -37,12 +37,10 @@ DatafilesModel::~DatafilesModel() = default;
QVector<DataItem*> DatafilesModel::dataItems() const QVector<DataItem*> DatafilesModel::dataItems() const
{ {
QVector<DataItem*> result; QVector<DataItem*> result;
for (auto* realData : realItems()) { for (auto* realData : realItems())
if (auto* data2DItem = realData->dataItem()) if (auto* data2DItem = realData->dataItem())
result.push_back(data2DItem); result.push_back(data2DItem);
if (auto* native_data_item = realData->nativeDataItem())
result.push_back(native_data_item);
}
return result; return result;
} }
......
...@@ -125,14 +125,10 @@ QVector<DataItem*> JobModel::dataItems() const ...@@ -125,14 +125,10 @@ QVector<DataItem*> JobModel::dataItems() const
if (auto* dataItem = jobItem->simulatedDataItem()) if (auto* dataItem = jobItem->simulatedDataItem())
result.push_back(dataItem); result.push_back(dataItem);
if (auto* real_data = dynamic_cast<DatafileItem*>(jobItem->realItem())) { if (auto* real_data = dynamic_cast<DatafileItem*>(jobItem->realItem()))
if (auto* data_item = real_data->dataItem()) if (auto* data_item = real_data->dataItem())
result.push_back(data_item); result.push_back(data_item);
if (auto* native_data = real_data->nativeDataItem())
result.push_back(native_data);
}
} }
return result; return result;
} }
......
...@@ -297,8 +297,6 @@ void DatafilesSelector::importData1D() ...@@ -297,8 +297,6 @@ void DatafilesSelector::importData1D()
realItem->setTheDatafield(*df); realItem->setTheDatafield(*df);
setCurrentItem(realItem); setCurrentItem(realItem);
realItem->initNativeData();
realItem->nativeDataItem()->setDatafield(*df);
realItem->updateFileName(); realItem->updateFileName();
} catch (std::exception& ex) { } catch (std::exception& ex) {
m_treeModel->removeDataItem(realItem); m_treeModel->removeDataItem(realItem);
......
...@@ -81,8 +81,6 @@ TEST(TestLinkInstrument, canLinkToSpecular) ...@@ -81,8 +81,6 @@ TEST(TestLinkInstrument, canLinkToSpecular)
instrument->scanItem()->grazingScanItem()->selectListScan(); instrument->scanItem()->grazingScanItem()->selectListScan();
realData->dataItem()->setOriginalDatafield({frame.clonedAxes()}); realData->dataItem()->setOriginalDatafield({frame.clonedAxes()});
realData->initNativeData();
realData->nativeDataItem()->setOriginalDatafield({frame.clonedAxes()});
ASSERT_TRUE( ASSERT_TRUE(
document.linkInstrumentManager()->canLinkDataToInstrument(realData, identifier, nullptr)); document.linkInstrumentManager()->canLinkDataToInstrument(realData, identifier, nullptr));
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment