diff --git a/src/core/mcqr/mcqrexperiment.cpp b/src/core/mcqr/mcqrexperiment.cpp index 4443aa516bf4df9a41c32618c4a37e1c8989bb95..479825014e542c54ac4e864bc2fe25a1d8b583b6 100644 --- a/src/core/mcqr/mcqrexperiment.cpp +++ b/src/core/mcqr/mcqrexperiment.cpp @@ -152,3 +152,27 @@ McqrExperiment::getMetadataOdsFilePath() const { return m_metadataOdsFilePath; } + +void +McqrExperiment::setMcqrWorkingDirectory(const QString &wd) +{ + m_mcqrWorkingDirectoryPath = wd; +} + +const QString & +McqrExperiment::getMcqrWorkingDirectory() const +{ + return m_mcqrWorkingDirectoryPath; +} + +McqrExperimentType +McqrExperiment::getMcqrExperimentType() const +{ + return m_mcqrExperimentType; +} + +void +McqrExperiment::setMcqrExperimentType(McqrExperimentType exp_type) +{ + m_mcqrExperimentType = exp_type; +} diff --git a/src/core/mcqr/mcqrexperiment.h b/src/core/mcqr/mcqrexperiment.h index 39ffb1fb8bf9c4381466655298289296082d47f0..111cf3bdf3c38ae5914787b5802bfa165cf8a012 100644 --- a/src/core/mcqr/mcqrexperiment.h +++ b/src/core/mcqr/mcqrexperiment.h @@ -60,6 +60,8 @@ class McqrExperiment McqrLoadDataMode getMcqrLoadDataMode() const; + void setMcqrWorkingDirectory(const QString &wd); + const QString &getMcqrWorkingDirectory() const; void setRdataFilePath(const QString &rdata_file); const QString &getRdataFilePath() const; @@ -69,6 +71,10 @@ class McqrExperiment QString getMassChroqMlFilePath() const; + + McqrExperimentType getMcqrExperimentType() const; + void setMcqrExperimentType(McqrExperimentType exp_type); + private: std::vector<McqrMetadata *> m_metadataList; std::vector<QString> m_metadataColumns; @@ -77,4 +83,6 @@ class McqrExperiment QString m_rdata_absolute_path; QString m_metadataOdsFilePath; + QString m_mcqrWorkingDirectoryPath; + McqrExperimentType m_mcqrExperimentType; }; diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index 7430a35c203214b147e4cbdf4a1b393800812f98..026fcf853fb35675c1316459773f95b7bb6db07e 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -884,21 +884,26 @@ MainWindow::doAcceptedMcqrParamAllQuantiDialog() try { QSettings settings; + McqrExperimentSp mcqr_experiment = + _project_sp.get()->getMcqrExperimentSp(); + mcqr_experiment.get()->setMcqrExperimentType( + McqrExperimentType::spectralCount); if(mp_mcqrParamAllQuantiDialog->getMassChroqResultsUsed()) { // XIC + + mcqr_experiment.get()->setMcqrExperimentType(McqrExperimentType::xic); if(mp_mcqrParamAllQuantiDialog->getMcqrRunStatus()) { - _project_sp.get() - ->getMcqrExperimentSp() - .get() - ->setMetadataOdsFilePath( - mp_mcqrParamAllQuantiDialog->getMetadataOdsFileInfo() - .absoluteFilePath()); + mcqr_experiment.get()->setMetadataOdsFilePath( + mp_mcqrParamAllQuantiDialog->getMetadataOdsFileInfo() + .absoluteFilePath()); + mcqr_experiment.get()->setMcqrWorkingDirectory( + mp_mcqrParamAllQuantiDialog->getMetadataOdsFileInfo() + .absolutePath()); - mp_mcqrRunView = new McqrRunView( - this, _project_sp.get()->getMcqrExperimentSp(), true); + mp_mcqrRunView = new McqrRunView(this, mcqr_experiment); mp_mcqrRunView->show(); mp_mcqrRunView->raise(); mp_mcqrRunView->activateWindow(); @@ -907,8 +912,6 @@ MainWindow::doAcceptedMcqrParamAllQuantiDialog() } else { // spectral count - McqrExperimentSp mcqr_experiment = - _project_sp.get()->getMcqrExperimentSp(); QString default_location = settings.value("mcqr/rdata_path").toString(); QString rdata_path = @@ -925,6 +928,9 @@ MainWindow::doAcceptedMcqrParamAllQuantiDialog() mcqr_experiment.get()->setRdataFilePath( QFileInfo(rdata_path).absoluteFilePath()); + + mcqr_experiment.get()->setMcqrWorkingDirectory( + QFileInfo(rdata_path).absolutePath()); showWaitingMessage(tr("Writing %1 RData file").arg(rdata_path)); settings.setValue("mcqr/rdata_path", mcqr_experiment.get()->getRdataFilePath()); @@ -949,7 +955,7 @@ MainWindow::doWritingMcqrSpectralCountRdataFinished( hideWaitingMessage(); if(mp_mcqrParamAllQuantiDialog->getMcqrRunStatus()) { - mp_mcqrRunView = new McqrRunView(this, p_mcqr_experiment, false); + mp_mcqrRunView = new McqrRunView(this, p_mcqr_experiment); mp_mcqrRunView->show(); mp_mcqrRunView->raise(); mp_mcqrRunView->activateWindow(); diff --git a/src/gui/mcqr_run_view/mcqr_sds_xic_widget/mcqrsdsxicwidget.cpp b/src/gui/mcqr_run_view/mcqr_sds_xic_widget/mcqrsdsxicwidget.cpp index 6bf7c06b6a4c59cf3df0b3e9281179f0308a22d6..2bee59034a2850e07004fcb9a19d143df33b3cba 100644 --- a/src/gui/mcqr_run_view/mcqr_sds_xic_widget/mcqrsdsxicwidget.cpp +++ b/src/gui/mcqr_run_view/mcqr_sds_xic_widget/mcqrsdsxicwidget.cpp @@ -336,9 +336,8 @@ McqrSdsXicWidget::runQualityCheckingXic() Grantlee::Context grantlee_context; grantlee_context.insert("mcqr_step", (std::int8_t)m_ongoingMcqrStep); grantlee_context.insert( - "rdata_folder", - QFileInfo(getMcqrExperimentSpLoaded().get()->getMetadataOdsFilePath()) - .absoluteDir() + "mcqr_working_directory", + QDir(getMcqrExperimentSpLoaded().get()->getMcqrWorkingDirectory()) .path()); grantlee_context.insert( "metadata_ods_path", diff --git a/src/gui/mcqr_run_view/mcqrrunview.cpp b/src/gui/mcqr_run_view/mcqrrunview.cpp index d1104987783186e8da05f117e3c79ae409c08679..4afc0d433eef40203d2a7f2c26bdd707e3dd8249 100644 --- a/src/gui/mcqr_run_view/mcqrrunview.cpp +++ b/src/gui/mcqr_run_view/mcqrrunview.cpp @@ -48,18 +48,17 @@ McqrRunView::McqrRunView(MainWindow *parent, - const McqrExperimentSp &p_mcqr_experiment, - bool use_masschroq_results) + const McqrExperimentSp &p_mcqr_experiment) : QWidget(), ui(new Ui::McqrRunView) { ui->setupUi(this); + msp_mcqrExperiment = p_mcqr_experiment; setWindowTitle("MCQR run window"); mp_main = parent; // Create the output page mp_documentText = new QTextDocument(); ui->mcqr_result_browser->setDocument(mp_documentText); - m_useMassChroqResults = use_masschroq_results; - loadSpecificMcqrParameterWidget(p_mcqr_experiment); + loadSpecificMcqrParameterWidget(); // Set the Loading icon mp_loadingIcon = new QMovie(":icons/resources/icons/icon_wait.gif"); @@ -164,16 +163,16 @@ McqrRunView::endRProcess() } void -McqrRunView::loadSpecificMcqrParameterWidget( - const McqrExperimentSp &p_mcqr_experiment) +McqrRunView::loadSpecificMcqrParameterWidget() { - if(m_useMassChroqResults) + if(msp_mcqrExperiment.get()->getMcqrExperimentType() == + McqrExperimentType::xic) { - mp_mcqrParam = new McqrSdsXicWidget(this, p_mcqr_experiment); + mp_mcqrParam = new McqrSdsXicWidget(this, msp_mcqrExperiment); } else { - mp_mcqrParam = new McqrSdsWidget(this, p_mcqr_experiment); + mp_mcqrParam = new McqrSdsWidget(this, msp_mcqrExperiment); } ui->mcqr_param_layout->addWidget(mp_mcqrParam); } diff --git a/src/gui/mcqr_run_view/mcqrrunview.h b/src/gui/mcqr_run_view/mcqrrunview.h index 0aac4a8729d7addb5a8fbb0e2979c82b8507b33d..6513b9905fffc1072c4a6174a1fcb93dc473ab2d 100644 --- a/src/gui/mcqr_run_view/mcqrrunview.h +++ b/src/gui/mcqr_run_view/mcqrrunview.h @@ -54,8 +54,7 @@ class McqrRunView : public QWidget public: explicit McqrRunView(MainWindow *parent, - const McqrExperimentSp &p_mcqr_experiment, - bool use_masschroq_results); + const McqrExperimentSp &p_mcqr_experiment); ~McqrRunView(); McqrQProcess *getRProcessRunning(); @@ -77,16 +76,15 @@ class McqrRunView : public QWidget void startRProcess(); void endRProcess(); void checkLibrariesInstalled(); - void - loadSpecificMcqrParameterWidget(const McqrExperimentSp &p_mcqr_experiment); + void loadSpecificMcqrParameterWidget(); void handleMcqrErrors(QString error_message); private: Ui::McqrRunView *ui; MainWindow *mp_main = nullptr; - bool m_useMassChroqResults = false; McqrParamWidget *mp_mcqrParam = nullptr; QMovie *mp_loadingIcon = nullptr; McqrQProcess *mp_rProcess = nullptr; QTextDocument *mp_documentText = nullptr; + McqrExperimentSp msp_mcqrExperiment; }; diff --git a/src/resources/templates/mcqr_scripts/mcqr_basic_xic_analysis.R b/src/resources/templates/mcqr_scripts/mcqr_basic_xic_analysis.R index c6f40eadd995b2a5170f8ec79cd35fc6e56a3fe8..c33b34e3ad02f94f57190cfd5c3a8e0f60a78b3a 100644 --- a/src/resources/templates/mcqr_scripts/mcqr_basic_xic_analysis.R +++ b/src/resources/templates/mcqr_scripts/mcqr_basic_xic_analysis.R @@ -2,7 +2,7 @@ message("MCQRBegin: quality_xic") cat("<h1>MCQR basic XIC Analysis</h1>") - setwd("{{ rdata_folder }}") + setwd("{{ mcqr_working_directory }}") cat(paste("working directory: ", getwd())) capture.output(library("MCQR", verbose=FALSE), file=stderr()) message(paste("MCQRInfo: MCQR version :", packageVersion("MCQR"))) diff --git a/src/utils/types.h b/src/utils/types.h index 7bbb7e35d561ba2fd34d0817129670dd505df853..9430f08a0efc400782e4e5c285dd06f5270c8823 100644 --- a/src/utils/types.h +++ b/src/utils/types.h @@ -232,8 +232,18 @@ enum class PtmMode : std::int8_t */ enum class McqrLoadDataMode : std::int8_t { - basic = 0, ///< mcq.read.masschroq + basic = 0, ///< mcq.read.masschroq fraction = 1, ///< mcq.read.masschroq.fraction label = 2, ///< mcq.read.masschroq.label both = 3, ///< }; + + +/** \def McqrExperimentType spectral count, xic + * + */ +enum class McqrExperimentType : std::int8_t +{ + spectralCount = 0, ///< use xtpcpp data + xic = 1, ///< use masschroq results +};