示例#1
0
void CSensProblem::initDebugProblem()
{
  CSensItem item;

  item.setSingleObjectCN(this->getCN());
  addVariables(item);

  item.setListType(CObjectLists::NON_CONST_METAB_CONCENTRATIONS);
  addVariables(item);
}
示例#2
0
WidgetSelectVars::WidgetSelectVars(MOOptVector *allVariables,QWidget *parent,MOOptVector* selectedVariables):
    QWidget(parent),
    ui(new Ui::WidgetSelectVarsClass)
{
    ui->setupUi(this);

    _useOpt = true;
    _allOptVariables= allVariables;
    if(selectedVariables)
        _selectedOptVariables = selectedVariables->clone();
    else
        _selectedOptVariables = new MOOptVector(false,true,true,this);


    variableProxyModel = GuiTools::ModelToViewWithFilter(_allOptVariables,ui->listVars,ui->lineVariableFilter);

    ui->listSelectedVars->setModel(_selectedOptVariables);

    connect(ui->pushAddVar,SIGNAL(clicked()),this,SLOT(addVariables()));
    connect(ui->pushRemoveVar,SIGNAL(clicked()),this,SLOT(removeVariables()));

    ui->listSelectedVars->setSelectionMode(QAbstractItemView::ExtendedSelection);
    ui->listVars->setSelectionMode(QAbstractItemView::ExtendedSelection);

}
示例#3
0
WidgetSelectVars::WidgetSelectVars(MOVector<Variable> *allVariables, QWidget *parent, QList<VariableCausality> causalities,MOVector<Variable> *selectedVariables):
    QWidget(parent),
    ui(new Ui::WidgetSelectVarsClass)
{
    ui->setupUi(this);

    _useOpt = false;
    _allVariables = allVariables;
    if(selectedVariables)
        _selectedVariables = selectedVariables->clone();
    else
        _selectedVariables = new MOVector<Variable>(false);

   // variableProxyModel = GuiTools::ModelToViewWithFilter(_allVariables,ui->listVars,ui->lineVariableFilter);

    variableProxyModel = new VariableSortFilter(causalities,this);
    GuiTools::ModelToViewWithFilter(_allVariables,ui->listVars,ui->lineVariableFilter,variableProxyModel);


    ui->listSelectedVars->setModel(_selectedVariables);

    connect(ui->pushAddVar,SIGNAL(clicked()),this,SLOT(addVariables()));
    connect(ui->pushRemoveVar,SIGNAL(clicked()),this,SLOT(removeVariables()));

    ui->listSelectedVars->setSelectionMode(QAbstractItemView::ExtendedSelection);
    ui->listVars->setSelectionMode(QAbstractItemView::ExtendedSelection);
}
示例#4
0
AmSession* DSMFactory::onInvite(const AmSipRequest& req, const string& app_name,
				const map<string,string>& app_params)
{
  string start_diag;
  map<string, string> vars;

  if (app_name == MOD_NAME) {
    if (InboundStartDiag.empty()) {
      ERROR("no inbound calls allowed\n");
      throw AmSession::Exception(488, "Not Acceptable Here");
    }
    if (InboundStartDiag=="$(mon_select)") {
      runMonitorAppSelect(req, start_diag, vars);
    } else {
      start_diag = InboundStartDiag;
    }
  } else {
    start_diag = app_name;
  }

  DBG("start_diag = %s\n",start_diag.c_str());

  // determine run configuration for script
  DSMScriptConfig call_config;
  ScriptConfigs_mut.lock();
  map<string, DSMScriptConfig>::iterator sc=ScriptConfigs.find(start_diag);
  if (sc == ScriptConfigs.end()) 
    call_config = MainScriptConfig;
  else 
    call_config = sc->second;

  DSMCall* s = new DSMCall(call_config, &prompts, *call_config.diags, start_diag, NULL);

  ScriptConfigs_mut.unlock();

  prepareSession(s);
  addVariables(s, "config.", call_config.config_vars);

  if (call_config.SetParamVariables) 
    addParams(s, req.hdrs);

  if (!vars.empty())
    addVariables(s, "", vars);

  return s;
}
void WriteFullProcMLP::Loop()
 {

  std::cout << "Loop varSet = " << varSet << std::endl;
  addVariables();
  FillMLP(varSet);
  
  WriteHeader();
  WriteInput();
  WriteCategory();
  WriteCount("var1", "input", "trackSip2dSig");
  //********Chunk for Combined BvsDUSG and BvsC starts***********
  WriteNormalize();
  WriteSplitters();
  if (writeSplittersForNonMultiple) WriteSplittersForNonMultiple();
  WriteLRx();
  WriteLRall();
  WriteLRsplit();
  WriteOptional();
  if (writeMatrices) {WriteMatrices(); WriteOutput("input", "jetPt"); return;}
  WriteProcMLP(mlp);
  WriteBiasNorm(procBiasNorm+tagVtx, "var1", procMLP+tagVtx, "var1");
  WriteLRBias(procLike+tagVtx, "var1", procBiasNorm+tagVtx, "var1");
  //********Chunk for Combined BvsDUSG and BvsC starts***********
  
  if (Flavour != "Combined") {
    WriteOutput(procLike+tagVtx, "var1");
    return;
  }
  
  tagVtx = "C";
  
  //Need to reset Vector for ProcOptional
  Oprocess.clear();
  Oid.clear();
  //Need to reset mlp with the corresponding variables with C instead of "DUSG" tag
  FillMLP(varSet);
  
  
  //For combined xml, copy previuos structure from WriteNormalize to WriteLRBias
  //  then add ProcLinear and output
  //**************Insert here Chunk for Combined: begin**************
  WriteNormalize();
  WriteSplitters();
  if (writeSplittersForNonMultiple) WriteSplittersForNonMultiple();
  WriteLRx();
  WriteLRall();
  WriteLRsplit();
  WriteOptional();
  if (writeMatrices) {WriteMatrices(); WriteOutput("input", "jetPt"); return;}
  WriteProcMLP(mlp);
  WriteBiasNorm(procBiasNorm+tagVtx, "var1", procMLP+tagVtx, "var1");
  WriteLRBias(procLike+tagVtx, "var1", procBiasNorm+tagVtx, "var1");
  //**************Insert here Chunk for Combined: end****************
  WriteLinear();
  WriteOutput(procLinear, "var1");

}
示例#6
0
void DSMFactory::addParams(DSMCall* s, const string& hdrs) {
  // TODO: use real parser with quoting and optimize
  map<string, string> params;
  vector<string> items = explode(getHeader(hdrs, PARAM_HDR), ";");
  for (vector<string>::iterator it=items.begin(); 
       it != items.end(); it++) {
    vector<string> kv = explode(*it, "=");
    if (kv.size()==2) 
      params.insert(make_pair(kv[0], kv[1]));
  }
  addVariables(s, "", params);  
}
示例#7
0
/**
 *  Default constructor.
 *  @param "CModel *" pModel
 */
CSensProblem::CSensProblem(const CDataContainer * pParent):
  CCopasiProblem(CTaskEnum::Task::sens, pParent),
  mpSubTaskType(NULL),
  mpTargetFunctions(NULL),
  mpVariablesGroup(NULL),
  mpResultAnnotation(NULL),
  mpScaledResultAnnotation(NULL),
  mpCollapsedResultAnnotation(NULL)
{
  initializeParameter();
  initObjects();

  // Default Problem
  CSensItem item;

  item.setListType(CObjectLists::NON_CONST_METAB_CONCENTRATIONS);
  setTargetFunctions(item);

  item.setListType(CObjectLists::ALL_PARAMETER_VALUES);
  addVariables(item);

  item.setListType(CObjectLists::EMPTY_LIST);
  addVariables(item);
}
void VariablesListView::populateChildren(VariablesListViewItem* item)
{
  /*
    Populate array/object children at request time
    so it can support recursive references easily
  */

  if(item->childCount() > 0)
  {
    return;
  }

  VariablesList_t* list =
    dynamic_cast<VariableListValue*>((item)->variable()->value())->list();

  addVariables(list, item);
}
示例#9
0
bool CSensProblem::changeVariables(size_t index, const CSensItem & item)
{
  size_t num = getNumberOfVariables();

  if (index > num)
    return false;

  if (index == num)
    addVariables(item);
  else
    {
      CCopasiParameterGroup * tmp =
        (CCopasiParameterGroup *)(mpVariablesGroup->getParameter(index));
      copySensItemToParameterGroup(&item, tmp);
    }

  return true;
}
示例#10
0
/**
 *  Default constructor.
 *  @param "CModel *" pModel
 */
CSensProblem::CSensProblem(const CCopasiContainer * pParent):
    CCopasiProblem(CCopasiTask::sens, pParent),
    mpSubTaskType(NULL),
    mpTargetFunctions(NULL),
    mpVariablesGroup(NULL),
    mpResultAnnotation(NULL),
    mpScaledResultAnnotation(NULL),
    mpCollapsedResultAnnotation(NULL)
{
  addParameter("SubtaskType", CCopasiParameter::UINT, (unsigned C_INT32) 0);
  mpSubTaskType = (CSensProblem::SubTaskType*)getValue("SubtaskType").pUINT;

  //---------------------------------------------------
  addGroup("TargetFunctions");
  mpTargetFunctions = dynamic_cast<CCopasiParameterGroup*>(getParameter("TargetFunctions"));
  createParametersInGroup(mpTargetFunctions);

  //---------------------------------------------------
  addGroup("ListOfVariables");
  mpVariablesGroup = dynamic_cast<CCopasiParameterGroup*>(getParameter("ListOfVariables"));

  //create a useful default problem
  setSubTaskType(SteadyState);

  CSensItem item;

  item.setListType(CObjectLists::NON_CONST_METAB_CONCENTRATIONS);
  changeTargetFunctions(item);

  item.setListType(CObjectLists::ALL_PARAMETER_VALUES);
  addVariables(item);

  //  initDebugProblem();
  initObjects();
  CONSTRUCTOR_TRACE;
}
void VariablesListView::setVariables(VariablesList_t* vars)
{
  /* saves the position of the viewport
   * ('cause when the view is repopulated, the scroll goes up)
   */
  int contentX = contentsX();
  int contentY = contentsY();

  /* backup the current item selected
   */
  QString currentSelected;
  VariablesListViewItem* item;

  item = dynamic_cast<VariablesListViewItem*>(selectedItem());
  if(item)
  {
    currentSelected = item->stringPath();
  }

  clear();
  deleteVars();

  /* finally, add the new ones
   */
  addVariables(vars);

  /* expand the new items according to the previous state
   */
  reexpandItems();

  /* resets the viewport position
   */
  setContentsPos(contentX, contentY);

  m_variables = vars;
}
示例#12
0
// outgoing call
AmSession* DSMFactory::onInvite(const AmSipRequest& req,
				AmArg& session_params) 
{

  string start_diag;

  if (req.cmd == MOD_NAME) {
    if (OutboundStartDiag.empty()) {
      ERROR("no outbound calls allowed\n");
    throw AmSession::Exception(488, "Not Acceptable Here");
    }
  } else {
    start_diag = req.cmd;
  }

  UACAuthCred* cred = NULL;
  map<string, string> vars;
  // Creds
  if (session_params.getType() == AmArg::AObject) {
    ArgObject* cred_obj = session_params.asObject();
    if (cred_obj)
      cred = dynamic_cast<UACAuthCred*>(cred_obj);
  } else if (session_params.getType() == AmArg::Array) {
    DBG("session params is array - size %d\n", session_params.size());
    // Creds
    if (session_params.get(0).getType() == AmArg::AObject) {
      ArgObject* cred_obj = session_params.get(0).asObject();
      if (cred_obj)
	cred = dynamic_cast<UACAuthCred*>(cred_obj);
    }
    // Creds + vars
    if (session_params.size()>1 && 
	session_params.get(1).getType() == AmArg::Struct) {
      AmArg2DSMStrMap(session_params.get(1), vars);
    }
  } else if (session_params.getType() == AmArg::Struct) {
    // vars
    AmArg2DSMStrMap(session_params, vars);
  }

  DSMScriptConfig call_config;
  ScriptConfigs_mut.lock();
  map<string, DSMScriptConfig>::iterator sc=ScriptConfigs.find(start_diag);
  if (sc == ScriptConfigs.end())
    call_config = MainScriptConfig;
  else 
    call_config = sc->second;

  DSMCall* s = new DSMCall(call_config, &prompts, *call_config.diags, start_diag, cred); 

  ScriptConfigs_mut.unlock();

  prepareSession(s);  

  addVariables(s, "config.", call_config.config_vars);
  if (!vars.empty())
    addVariables(s, "", vars);

  if (call_config.SetParamVariables) 
    addParams(s, req.hdrs); 

  if (NULL == cred) {
    WARN("discarding unknown session parameters.\n");
  } else {
    AmSessionEventHandlerFactory* uac_auth_f = 
      AmPlugIn::instance()->getFactory4Seh("uac_auth");
    if (uac_auth_f != NULL) {
      DBG("UAC Auth enabled for new DSM session.\n");
      AmSessionEventHandler* h = uac_auth_f->getHandler(s);
      if (h != NULL )
	s->addHandler(h);
    } else {
      ERROR("uac_auth interface not accessible. "
	    "Load uac_auth for authenticated dialout.\n");
    }		
  }

  return s;
}
示例#13
0
AmSession* DSMFactory::onInvite(const AmSipRequest& req)
{
  string start_diag;
  map<string, string> vars;

  if (req.cmd == MOD_NAME) {
    if (InboundStartDiag.empty()) {
      ERROR("no inbound calls allowed\n");
      throw AmSession::Exception(488, "Not Acceptable Here");
    }
    if (InboundStartDiag=="$(mon_select)") {
#ifdef USE_MONITORING

      if (NULL == MONITORING_GLOBAL_INTERFACE) {
	ERROR("using $(mon_select) but monitoring not loaded\n");
	throw AmSession::Exception(488, "Not Acceptable Here");
      }

      AmArg di_args, ret;
      if (MonSelectCaller != MonSelect_NONE) {
	AmUriParser from_parser;
	if (MonSelectCaller == MonSelect_FROM)
	  from_parser.uri = req.from_uri;
	else {
	  size_t end;
	  string pai = getHeader(req.hdrs, SIP_HDR_P_ASSERTED_IDENTITY);
	  if (!from_parser.parse_contact(pai, 0, end)) {
	    ERROR("Failed to parse "SIP_HDR_P_ASSERTED_IDENTITY " '%s'\n",
		  pai.c_str());
	    throw AmSession::Exception(488, "Not Acceptable Here");
	  }
	}

	if (!from_parser.parse_uri()) {
	  DBG("failed to parse caller uri '%s'\n", from_parser.uri.c_str());
	  throw AmSession::Exception(488, "Not Acceptable Here");
	}
	
	AmArg caller_filter;
	caller_filter.push("caller");
	caller_filter.push(from_parser.uri_user);
	DBG(" && looking for caller=='%s'\n", from_parser.uri_user.c_str());
	di_args.push(caller_filter);
      }


      if (MonSelectCallee != MonSelect_NONE) {
	AmArg callee_filter;
	callee_filter.push("callee");
	if (MonSelectCallee == MonSelect_RURI)
	  callee_filter.push(req.user);
	else {
	  AmUriParser to_parser;
	  size_t end;
	  if (!to_parser.parse_contact(req.to, 0, end)) {
	    ERROR("Failed to parse To '%s'\n", req.to.c_str());
	    throw AmSession::Exception(488, "Not Acceptable Here");
	  }
	  if (!to_parser.parse_uri()) {
	    DBG("failed to parse callee uri '%s'\n", to_parser.uri.c_str());
	    throw AmSession::Exception(488, "Not Acceptable Here");
	  }
	  callee_filter.push(to_parser.uri_user);
	}
	  
	DBG(" && looking for callee=='%s'\n", req.user.c_str());
	di_args.push(callee_filter);	
      }
      MONITORING_GLOBAL_INTERFACE->invoke("listByFilter",di_args,ret);
      
      if ((ret.getType()!=AmArg::Array)||
	  !ret.size()) {
	INFO("call info not found. caller uri %s, r-uri %s\n", 
	     req.from_uri.c_str(), req.r_uri.c_str());
	throw AmSession::Exception(488, "Not Acceptable Here");
      }

      AmArg sess_id, sess_params;
      if (ret.size()>1) {
	DBG("multiple call info found - picking the first one\n");
      }
      const char* session_id = ret.get(0).asCStr();
      sess_id.push(session_id);
      MONITORING_GLOBAL_INTERFACE->invoke("get",sess_id,sess_params);
      
      if ((sess_params.getType()!=AmArg::Array)||
	  !sess_params.size() ||
	  sess_params.get(0).getType() != AmArg::Struct) {
	INFO("call parameters not found. caller uri %s, r-uri %s, id %s\n", 
	     req.from_uri.c_str(), req.r_uri.c_str(), ret.get(0).asCStr());
	throw AmSession::Exception(488, "Not Acceptable Here");
      }

      AmArg& sess_dict = sess_params.get(0);
      if (sess_dict.hasMember("app")) {
	start_diag = sess_dict["app"].asCStr();
	DBG("selected application '%s' for session\n", start_diag.c_str());
      } else {
	ERROR("selected session params don't contain 'app'\n");
	throw AmSession::Exception(488, "Not Acceptable Here");
      }
      AmArg2DSMStrMap(sess_dict["appParams"], vars);
      vars["mon_session_record"] = session_id;
	
#else
      ERROR("using $(mon_select) for dsm application, "
	    "but compiled without monitoring support!\n");
      throw AmSession::Exception(488, "Not Acceptable Here");
#endif
    } else {
      start_diag = InboundStartDiag;
    }
  } else {
    start_diag = req.cmd;
  }

  // determine run configuration for script
  DSMScriptConfig call_config;
  ScriptConfigs_mut.lock();
  map<string, DSMScriptConfig>::iterator sc=ScriptConfigs.find(start_diag);
  if (sc == ScriptConfigs.end()) 
    call_config = MainScriptConfig;
  else 
    call_config = sc->second;

  DSMCall* s = new DSMCall(call_config, &prompts, *call_config.diags, start_diag, NULL);

  ScriptConfigs_mut.unlock();

  prepareSession(s);
  addVariables(s, "config.", call_config.config_vars);

  if (call_config.SetParamVariables) 
    addParams(s, req.hdrs);

  if (!vars.empty())
    addVariables(s, "", vars);

  return s;
}
示例#14
0
// outgoing call
AmSession* DSMFactory::onInvite(const AmSipRequest& req, const string& app_name,
				AmArg& session_params) 
{

  string start_diag;

  if (app_name == MOD_NAME) {
    if (OutboundStartDiag.empty()) {
      ERROR("no outbound calls allowed\n");
      throw AmSession::Exception(488, "Not Acceptable Here");
    }
  } else {
    start_diag = app_name;
  }

  UACAuthCred* cred = NULL;
  map<string, string> vars;
  // Creds
  if (session_params.getType() == AmArg::AObject) {
    AmObject* cred_obj = session_params.asObject();
    if (cred_obj)
      cred = dynamic_cast<UACAuthCred*>(cred_obj);
  } else if (session_params.getType() == AmArg::Array) {
    DBG("session params is array - size %zd\n", session_params.size());
    // Creds
    cred = AmUACAuth::unpackCredentials(session_params.get(0));
    // Creds + vars
    if (session_params.size()>1 && 
	session_params.get(1).getType() == AmArg::Struct) {
      AmArg2DSMStrMap(session_params.get(1), vars);
    }
  } else if (session_params.getType() == AmArg::Struct) {
    // vars
    AmArg2DSMStrMap(session_params, vars);
  }

  DSMScriptConfig call_config;
  ScriptConfigs_mut.lock();
  map<string, DSMScriptConfig>::iterator sc=ScriptConfigs.find(start_diag);
  if (sc == ScriptConfigs.end())
    call_config = MainScriptConfig;
  else 
    call_config = sc->second;

  DSMCall* s = new DSMCall(call_config, &prompts, *call_config.diags, start_diag, cred); 

  ScriptConfigs_mut.unlock();

  prepareSession(s);  

  addVariables(s, "config.", call_config.config_vars);
  if (!vars.empty())
    addVariables(s, "", vars);

  if (call_config.SetParamVariables) 
    addParams(s, req.hdrs); 

  if (NULL == cred) {
    DBG("outgoing DSM call will not be authenticated.\n");
  } else {
    AmUACAuth::enable(s);
  }

  return s;
}