int main(int argc, _TCHAR* argv[]) //int _tmain(int argc, _TCHAR* argv[]) { /* Power [-suspend | -hibernate] */ CCmdLine cmdLine; cmdLine.SplitLine( argc, argv ); if ( cmdLine.HasSwitch( "-suspend" ) ) { //::LockWorkStation(); // ËøÆÁ ::SetSuspendState( FALSE, FALSE, FALSE ); // ´ý»ú } else if ( cmdLine.HasSwitch( "-hibernate" ) ) { ::SetSuspendState( TRUE, FALSE, FALSE ); // ÐÝÃß } return 0; }
// 初始化命令行参数 BOOL CUpdaterApp::_InitCmdline(int argc, LPTSTR* args) { BOOL bReturn(FALSE); CCmdLine cmder; if (cmder.SplitLine(__argc, __targv) >= 2) { if (cmder.HasSwitch(_T("-PID")) && cmder.HasSwitch(_T("-H"))) { m_dwProcessId = (DWORD)_ttoi(cmder.GetSafeArgument(_T("-PID"), 0, _T("0"))); m_hWindowCtrl = (HWND)_ttoi(cmder.GetSafeArgument(_T("-H"), 0, _T("0"))); bReturn = TRUE; } else { LOG(_T("命令行参数错误!")); } } else { LOG(_T("未指定命令行参数")); } return bReturn; }
/* * Get the file name from the command line arguments. * Show the help if required. */ bool GetOptions(int argc, char **argv, ConverterOptions &options) { CCmdLine cmdLine; // parse argc,argv // no switches were given on the command line, abort if (cmdLine.SplitLine(argc, argv) < 1) { ShowHelp(); return false; } // test for the 'help' case if (cmdLine.HasSwitch(HELP_ARG)) { ShowHelp(); return false; } // get the required argument try { string str; str = cmdLine.GetArgument(INPUT_FILE_ARG, 0); options.fileName = str; str = cmdLine.GetArgument(VERSION_ARG, 0); options.version = (CELFileVersionType)(atoi(str.c_str())); } catch (...) { // one of the required arguments was missing, abort ShowHelp(); return false; } return true; }
void GameComponent::ParseCommandLine( LPTSTR lpCmdLine ) { m_CmdLineParse.clear(); if( _tcscmp( "", lpCmdLine ) != 0 ) { CCmdLine CmdLine; CmdLine.SplitLine( lpCmdLine ); if( CmdLine.HasSwitch( "-multiplier" ) ) { m_iMultiplier = _ttoi( CmdLine.GetSafeArgument( "-multiplier", 0, DEFAULT_Multiplier.c_str() ).c_str() ); StdString parseLine = _T("Cmd line argument: multiplier\n"); m_CmdLineParse.push_back(parseLine); } if( CmdLine.HasSwitch( "-creditstart" ) ) { m_iCreditStart = _ttoi( CmdLine.GetSafeArgument( "-creditstart", 0, DEFAULT_CreditStart.c_str() ).c_str() ); StdString parseLine = _T("Cmd line argument: creditstart\n"); m_CmdLineParse.push_back(parseLine); } if( CmdLine.HasSwitch( "-creditcont" ) ) { m_iCreditCont = _ttoi( CmdLine.GetSafeArgument( "-creditcont", 0, DEFAULT_CreditCont.c_str() ).c_str() ); StdString parseLine = _T("Cmd line argument: creditcont\n"); m_CmdLineParse.push_back(parseLine); } if( CmdLine.HasSwitch( "-freeplay" ) ) { m_bFreeplay = !(DEFAULT_Freeplay); StdString parseLine = _T("Cmd line argument: freeplay\n"); m_CmdLineParse.push_back(parseLine); } else { m_bFreeplay = DEFAULT_Freeplay; } if( CmdLine.HasSwitch( "-time" ) ) { m_iPlayTime = _ttoi( CmdLine.GetSafeArgument( "-time", 0, DEFAULT_PlayTime.c_str() ).c_str() ); StdString parseLine = _T("Cmd line argument: time\n"); m_CmdLineParse.push_back(parseLine); } if( CmdLine.HasSwitch( "-contime" ) ) { m_iContTime = _ttoi( CmdLine.GetSafeArgument( "-contime", 0, DEFAULT_ContTime.c_str() ).c_str() ); StdString parseLine = _T("Cmd line argument: contime\n"); m_CmdLineParse.push_back(parseLine); } if( CmdLine.HasSwitch( "-language" ) ) { m_iLanguage = _ttoi( CmdLine.GetSafeArgument( "-language", 0, DEFAULT_ContTime.c_str() ).c_str() ); StdString parseLine = _T("Cmd line argument: language\n"); m_CmdLineParse.push_back(parseLine); } if( CmdLine.HasSwitch( "-violence" ) ) { m_iViolence = _ttoi( CmdLine.GetSafeArgument( "-violence", 0, DEFAULT_Violence.c_str() ).c_str() ); StdString parseLine = _T("Cmd line argument: violence\n"); m_CmdLineParse.push_back(parseLine); } // in free play mode some things need to be zeroed out if (m_bFreeplay) { m_iCreditStart = 0; m_iCreditCont = 0; m_iMultiplier = 0; } } }
int main(int argc, char *argv[]){ Fgwas_params p; CCmdLine cmdline; if (cmdline.SplitLine(argc, argv) < 1){ printopts(); exit(1); } //get the input file if (cmdline.HasSwitch("-i")) p.infile = cmdline.GetArgument("-i", 0).c_str(); else{ cerr << "ERROR: missing input file (-i)\n"; printopts(); exit(1); } //get the output file if (cmdline.HasSwitch("-o")) p.outstem = cmdline.GetArgument("-o", 0); if (cmdline.HasSwitch("-pcond")) printcond = true; if (cmdline.HasSwitch("-v")) { p.V.clear(); vector<string> strs; string s = cmdline.GetArgument("-v", 0); boost::split(strs, s ,boost::is_any_of(",")); for (int i = 0; i < strs.size(); i++) { p.V.push_back( atof(strs[i].c_str()) ); } } //LD file if (cmdline.HasSwitch("-ld")) { p.overlap = true; p.ldfile = cmdline.GetArgument("-ld", 0); if (cmdline.HasSwitch("-nhap")) p.Nhap = atoi(cmdline.GetArgument("-nhap", 0).c_str()); else{ cerr << "ERROR: inputing LD matrix, -nhap flag\n"; printopts(); exit(1); } } else if (cmdline.HasSwitch("-cor")){ //cerr << "WARNING: including correlation, did you mean to include an LD file?\n"; //printopts(); //exit(1); } if (cmdline.HasSwitch("-rev")) p.rev = true; if (cmdline.HasSwitch("-numbered")) p.numberedseg = true; //set K if (cmdline.HasSwitch("-k")) p.K = atoi(cmdline.GetArgument("-k", 0).c_str()); if (cmdline.HasSwitch("-bed")) { p.bedseg = true; p.segment_bedfile = cmdline.GetArgument("-bed", 0); } if (cmdline.HasSwitch("-noprint")) p.print = false; //names of the phenotypes, expecting header like NAME1_Z NAME1_V NAME2_Z NAME2_V if (cmdline.HasSwitch("-phenos")){ p.pairwise = true; p.pheno1 = cmdline.GetArgument("-phenos", 0); p.pheno2 = cmdline.GetArgument("-phenos", 1); } else{ cerr << "ERROR: missing phenotypes (-pheno)\n"; printopts(); exit(1); } /* if (cmdline.HasSwitch("-w")){ vector<string> strs; string s = cmdline.GetArgument("-w", 0); boost::split(strs, s ,boost::is_any_of("+")); for (int i = 0; i < strs.size(); i++) { p.wannot.push_back( strs[i] ); } } if (cmdline.HasSwitch("-dists")){ vector<string> strs; string s = cmdline.GetArgument("-dists", 0); boost::split(strs, s ,boost::is_any_of("+")); for (int i = 0; i < strs.size(); i++) { vector<string> strs2; boost::split(strs2, strs[i], boost::is_any_of(":")); p.dannot.push_back( strs2[0] ); p.distmodels.push_back(strs2[1]); } } if (cmdline.HasSwitch("-drop")){ p.dropchr = true; string s = cmdline.GetArgument("-drop", 0); p.chrtodrop = s; } if (cmdline.HasSwitch("-dens")) { p.segannot.push_back(cmdline.GetArgument("-dens", 0)); p.loquant = atof(cmdline.GetArgument("-dens", 1).c_str()); p.hiquant = atof(cmdline.GetArgument("-dens", 2).c_str()); } */ if (cmdline.HasSwitch("-fine")) p.finemap = true; if (cmdline.HasSwitch("-mcmc")) p.MCMC = true; if (cmdline.HasSwitch("-seed")){ p.seed = atoi(cmdline.GetArgument("-seed", 0).c_str()); } else p.seed = unsigned( time(NULL)); if (cmdline.HasSwitch("-nburn")){ p.burnin = atoi(cmdline.GetArgument("-nburn", 0).c_str()); } if (cmdline.HasSwitch("-nsamp")){ p.nsamp = atoi(cmdline.GetArgument("-nsamp", 0).c_str()); } if (cmdline.HasSwitch("-jumpsd")){ p.MCMC_gauss_SD = atof(cmdline.GetArgument("-jumpsd", 0).c_str()); } if (cmdline.HasSwitch("-cor")){ p.cor = atof(cmdline.GetArgument("-cor", 0).c_str()); //p.overlap = true; } if (cmdline.HasSwitch("-prior")){ if (cmdline.GetArgumentCount("-prior") != 5) { cerr << "ERROR: -prior needs 5 entries, "<< cmdline.GetArgumentCount("-prior") << " given\n"; exit(1); } p.alpha_prior[0] = atof(cmdline.GetArgument("-prior", 0).c_str()); p.alpha_prior[1] = atof(cmdline.GetArgument("-prior", 1).c_str()); p.alpha_prior[2] = atof(cmdline.GetArgument("-prior", 2).c_str()); p.alpha_prior[3] = atof(cmdline.GetArgument("-prior", 3).c_str()); p.alpha_prior[4] = atof(cmdline.GetArgument("-prior", 4).c_str()); } //random number generator const gsl_rng_type * T; gsl_rng * r; gsl_rng_env_setup(); T = gsl_rng_ranlxs2; r = gsl_rng_alloc(T); int seed = (int) time(0); gsl_rng_set(r, p.seed); SNPs_PW s(&p); if (printcond) s.get_all_condZ(); s.GSL_optim(); vector<double> ml; for (int i = 0; i < 5; i++)ml.push_back(s.pi[i]); vector<pair<pair<int, int>, pair<double, double> > > cis = s.get_cis(); string outML = p.outstem+".MLE"; ofstream outr(outML.c_str()); int sti = 0; if (p.finemap) sti = 1; for (int i = sti; i < 5; i++){ outr << "pi_"<< i <<" "<< cis.at(i-sti).second.first << " "<< ml[i]<< " "<< cis.at(i-sti).second.second << "\n"; } outr.close(); if (p.MCMC) s.MCMC(r); if (p.print) s.print(p.outstem+".bfs.gz", p.outstem+".segbfs.gz"); //if (p.finemap) return 0; return 0; }
int main(int argc, char**argv) #endif { #if defined WIN32 #ifndef _DEBUG CreateMutexA(0, FALSE, "Local\\Domoticz"); if(GetLastError() == ERROR_ALREADY_EXISTS) { MessageBox(HWND_DESKTOP,"Another instance of Domoticz is already running!","Domoticz",MB_OK); return 1; } #endif //_DEBUG bool bStartWebBrowser = true; RedirectIOToConsole(); #endif //WIN32 szStartupFolder = ""; szWWWFolder = ""; szWebRoot = ""; CCmdLine cmdLine; // parse argc,argv #if defined WIN32 cmdLine.SplitLine(__argc, __argv); #else cmdLine.SplitLine(argc, argv); //ignore pipe errors signal(SIGPIPE, SIG_IGN); #endif if (cmdLine.HasSwitch("-log")) { if (cmdLine.GetArgumentCount("-log") != 1) { _log.Log(LOG_ERROR, "Please specify an output log file"); return 1; } logfile = cmdLine.GetSafeArgument("-log", 0, "domoticz.log"); _log.SetOutputFile(logfile.c_str()); } if (cmdLine.HasSwitch("-loglevel")) { if (cmdLine.GetArgumentCount("-loglevel") != 1) { _log.Log(LOG_ERROR, "Please specify logfile output level (0=All, 1=Status+Error, 2=Error)"); return 1; } int Level = atoi(cmdLine.GetSafeArgument("-loglevel", 0, "").c_str()); _log.SetVerboseLevel((_eLogFileVerboseLevel)Level); } if (cmdLine.HasSwitch("-notimestamps")) { _log.EnableLogTimestamps(false); } if (cmdLine.HasSwitch("-approot")) { if (cmdLine.GetArgumentCount("-approot") != 1) { _log.Log(LOG_ERROR, "Please specify a APP root path"); return 1; } std::string szroot = cmdLine.GetSafeArgument("-approot", 0, ""); if (szroot.size() != 0) szStartupFolder = szroot; } if (szStartupFolder == "") { #if !defined WIN32 char szStartupPath[255]; getExecutablePathName((char*)&szStartupPath,255); szStartupFolder=szStartupPath; if (szStartupFolder.find_last_of('/')!=std::string::npos) szStartupFolder=szStartupFolder.substr(0,szStartupFolder.find_last_of('/')+1); #else #ifndef _DEBUG char szStartupPath[255]; char * p; GetModuleFileName(NULL, szStartupPath, sizeof(szStartupPath)); p = szStartupPath + strlen(szStartupPath); while (p >= szStartupPath && *p != '\\') p--; if (++p >= szStartupPath) *p = 0; szStartupFolder=szStartupPath; size_t start_pos = szStartupFolder.find("\\Release\\"); if(start_pos != std::string::npos) { szStartupFolder.replace(start_pos, 9, "\\domoticz\\"); _log.Log(LOG_STATUS,"%s",szStartupFolder.c_str()); } #endif #endif } GetAppVersion(); _log.Log(LOG_STATUS, "Domoticz V%s (c)2012-%d GizMoCuz", szAppVersion.c_str(), ActYear); _log.Log(LOG_STATUS, "Build Hash: %s, Date: %s", szAppHash.c_str(), szAppDate.c_str()); #if !defined WIN32 //Check if we are running on a RaspberryPi std::string sLine = ""; std::ifstream infile; infile.open("/proc/cpuinfo"); if (infile.is_open()) { while (!infile.eof()) { getline(infile, sLine); if ( (sLine.find("BCM2708")!=std::string::npos)|| (sLine.find("BCM2709")!=std::string::npos) ) { //Core temperature of BCM2835 SoC _log.Log(LOG_STATUS,"System: Raspberry Pi"); szInternalTemperatureCommand="/opt/vc/bin/vcgencmd measure_temp"; bHasInternalTemperature=true; break; } } infile.close(); } if (!bHasInternalTemperature) { if (file_exist("/sys/devices/platform/sunxi-i2c.0/i2c-0/0-0034/temp1_input")) { _log.Log(LOG_STATUS,"System: Cubieboard/Cubietruck"); szInternalTemperatureCommand="cat /sys/devices/platform/sunxi-i2c.0/i2c-0/0-0034/temp1_input | awk '{ printf (\"temp=%0.2f\\n\",$1/1000); }'"; bHasInternalTemperature = true; } else if (file_exist("/sys/devices/virtual/thermal/thermal_zone0/temp")) { //_log.Log(LOG_STATUS,"System: ODroid"); szInternalTemperatureCommand="cat /sys/devices/virtual/thermal/thermal_zone0/temp | awk '{ printf (\"temp=%0.2f\\n\",$1/1000); }'"; bHasInternalTemperature = true; } } if (file_exist("/sys/class/power_supply/ac/voltage_now")) { szInternalVoltageCommand = "cat /sys/class/power_supply/ac/voltage_now | awk '{ printf (\"volt=%0.2f\\n\",$1/1000000); }'"; bHasInternalVoltage = true; } if (file_exist("/sys/class/power_supply/ac/current_now")) { szInternalCurrentCommand = "cat /sys/class/power_supply/ac/current_now | awk '{ printf (\"curr=%0.2f\\n\",$1/1000000); }'"; bHasInternalCurrent = true; } _log.Log(LOG_STATUS,"Startup Path: %s", szStartupFolder.c_str()); #endif szWWWFolder = szStartupFolder + "www"; if ((cmdLine.HasSwitch("-h")) || (cmdLine.HasSwitch("--help")) || (cmdLine.HasSwitch("/?"))) { _log.Log(LOG_NORM, szHelp); return 0; } szUserDataFolder=szStartupFolder; if (cmdLine.HasSwitch("-userdata")) { if (cmdLine.GetArgumentCount("-userdata") != 1) { _log.Log(LOG_ERROR, "Please specify a path for user data to be stored"); return 1; } std::string szroot = cmdLine.GetSafeArgument("-userdata", 0, ""); if (szroot.size() != 0) szUserDataFolder = szroot; } if (cmdLine.HasSwitch("-startupdelay")) { if (cmdLine.GetArgumentCount("-startupdelay") != 1) { _log.Log(LOG_ERROR, "Please specify a startupdelay"); return 1; } int DelaySeconds = atoi(cmdLine.GetSafeArgument("-startupdelay", 0, "").c_str()); _log.Log(LOG_STATUS, "Startup delay... waiting %d seconds...", DelaySeconds); sleep_seconds(DelaySeconds); } if (cmdLine.HasSwitch("-wwwbind")) { if (cmdLine.GetArgumentCount("-wwwbind") != 1) { _log.Log(LOG_ERROR, "Please specify an address"); return 1; } std::string wwwbind = cmdLine.GetSafeArgument("-wwwbind", 0, "0.0.0.0"); m_mainworker.SetWebserverAddress(wwwbind); } if (cmdLine.HasSwitch("-www")) { if (cmdLine.GetArgumentCount("-www") != 1) { _log.Log(LOG_ERROR, "Please specify a port"); return 1; } std::string wwwport = cmdLine.GetSafeArgument("-www", 0, "8080"); if (wwwport == "0") wwwport.clear();//HTTP server disabled m_mainworker.SetWebserverPort(wwwport); } #ifdef NS_ENABLE_SSL if (cmdLine.HasSwitch("-sslwww")) { if (cmdLine.GetArgumentCount("-sslwww") != 1) { _log.Log(LOG_ERROR, "Please specify a port"); return 1; } std::string wwwport = cmdLine.GetSafeArgument("-sslwww", 0, "443"); if (wwwport == "0") wwwport.clear();//HTTPS server disabled m_mainworker.SetSecureWebserverPort(wwwport); } if (cmdLine.HasSwitch("-sslcert")) { if (cmdLine.GetArgumentCount("-sslcert") != 1) { _log.Log(LOG_ERROR, "Please specify the file path"); return 1; } std::string ca_cert = cmdLine.GetSafeArgument("-sslcert", 0, "./server_cert.pem"); m_mainworker.SetSecureWebserverCert(ca_cert); } if (cmdLine.HasSwitch("-sslpass")) { if (cmdLine.GetArgumentCount("-sslpass") != 1) { _log.Log(LOG_ERROR, "Please specify a passphrase for your certificate file"); return 1; } std::string ca_passphrase = cmdLine.GetSafeArgument("-sslpass", 0, ""); m_mainworker.SetSecureWebserverPass(ca_passphrase); } #endif if (cmdLine.HasSwitch("-nowwwpwd")) { m_mainworker.m_bIgnoreUsernamePassword = true; } if (cmdLine.HasSwitch("-nocache")) { g_bDontCacheWWW = true; } std::string dbasefile = szUserDataFolder + "domoticz.db"; #ifdef WIN32 #ifndef _DEBUG if (!IsUserAnAdmin()) { char szPath[MAX_PATH]; HRESULT hr = SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL, 0, szPath); if (SUCCEEDED(hr)) { std::string sPath = szPath; sPath += "\\Domoticz"; DWORD dwAttr = GetFileAttributes(sPath.c_str()); BOOL bDirExists = (dwAttr != 0xffffffff && (dwAttr & FILE_ATTRIBUTE_DIRECTORY)); if (!bDirExists) { BOOL bRet = CreateDirectory(sPath.c_str(), NULL); if (bRet == FALSE) { MessageBox(0, "Error creating Domoticz directory in program data folder (%ProgramData%)!!", "Error:", MB_OK); } } sPath += "\\domoticz.db"; dbasefile = sPath; } } #endif #endif if (cmdLine.HasSwitch("-dbase")) { if (cmdLine.GetArgumentCount("-dbase") != 1) { _log.Log(LOG_ERROR, "Please specify a Database Name"); return 1; } dbasefile = cmdLine.GetSafeArgument("-dbase", 0, "domoticz.db"); } m_sql.SetDatabaseName(dbasefile); if (cmdLine.HasSwitch("-wwwroot")) { if (cmdLine.GetArgumentCount("-wwwroot") != 1) { _log.Log(LOG_ERROR, "Please specify a WWW root path"); return 1; } std::string szroot = cmdLine.GetSafeArgument("-wwwroot", 0, ""); if (szroot.size() != 0) szWWWFolder = szroot; } if (cmdLine.HasSwitch("-webroot")) { if (cmdLine.GetArgumentCount("-webroot") != 1) { _log.Log(LOG_ERROR, "Please specify a web root path"); return 1; } std::string szroot = cmdLine.GetSafeArgument("-webroot", 0, ""); if (szroot.size() != 0) szWebRoot = szroot; } if (cmdLine.HasSwitch("-verbose")) { if (cmdLine.GetArgumentCount("-verbose") != 1) { _log.Log(LOG_ERROR, "Please specify a verbose level"); return 1; } int Level = atoi(cmdLine.GetSafeArgument("-verbose", 0, "").c_str()); m_mainworker.SetVerboseLevel((eVerboseLevel)Level); } #if defined WIN32 if (cmdLine.HasSwitch("-nobrowser")) { bStartWebBrowser = false; } //Init WinSock WSADATA data; WORD version; version = (MAKEWORD(2, 2)); int ret = WSAStartup(version, &data); if (ret != 0) { ret = WSAGetLastError(); if (ret == WSANOTINITIALISED) { _log.Log(LOG_ERROR, "Error: Winsock could not be initialized!"); } } CoInitializeEx(0, COINIT_MULTITHREADED); CoInitializeSecurity(NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_DEFAULT, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE, NULL); #endif #ifndef WIN32 if (cmdLine.HasSwitch("-daemon")) { g_bRunAsDaemon = true; } std::string daemonname = DAEMON_NAME; if (cmdLine.HasSwitch("-daemonname")) { daemonname = cmdLine.GetSafeArgument("-daemonname", 0, DAEMON_NAME); } std::string pidfile = PID_FILE; if (cmdLine.HasSwitch("-pidfile")) { pidfile = cmdLine.GetSafeArgument("-pidfile", 0, PID_FILE); } if ((g_bRunAsDaemon)||(g_bUseSyslog)) { setlogmask(LOG_UPTO(LOG_INFO)); openlog(daemonname.c_str(), LOG_CONS | LOG_PERROR, LOG_USER); syslog(LOG_INFO, "Domoticz is starting up...."); } if (g_bRunAsDaemon) { /* Deamonize */ daemonize(szStartupFolder.c_str(), pidfile.c_str()); } if ((g_bRunAsDaemon) || (g_bUseSyslog)) { syslog(LOG_INFO, "Domoticz running..."); } #endif if (!g_bRunAsDaemon) { signal(SIGINT, signal_handler); signal(SIGTERM, signal_handler); } if (!m_mainworker.Start()) { return 1; } m_StartTime = time(NULL); /* now, lets get into an infinite loop of doing nothing. */ #if defined WIN32 #ifndef _DEBUG RedirectIOToConsole(); //hide console #endif InitWindowsHelper(hInstance, hPrevInstance, nShowCmd, m_mainworker.GetWebserverAddress(), atoi(m_mainworker.GetWebserverPort().c_str()), bStartWebBrowser); MSG Msg; while (!g_bStopApplication) { if (PeekMessage(&Msg, NULL, 0, 0, PM_NOREMOVE)) { if (GetMessage(&Msg, NULL, 0, 0) > 0) { TranslateMessage(&Msg); DispatchMessage(&Msg); } } else sleep_milliseconds(100); } TrayMessage(NIM_DELETE, NULL); #else while ( !g_bStopApplication ) { sleep_seconds(1); } #endif _log.Log(LOG_STATUS, "Closing application!..."); fflush(stdout); _log.Log(LOG_STATUS, "Stopping worker..."); try { m_mainworker.Stop(); } catch (...) { } #ifndef WIN32 if (g_bRunAsDaemon) { syslog(LOG_INFO, "Domoticz stopped..."); daemonShutdown(); // Delete PID file remove(pidfile.c_str()); } #else // Release WinSock WSACleanup(); CoUninitialize(); #endif return 0; }
int main(int argc, char**argv) #endif { #if defined WIN32 CreateMutexA(0, FALSE, "Local\\Domoticz"); if(GetLastError() == ERROR_ALREADY_EXISTS) { MessageBox(HWND_DESKTOP,"Another instance of Domoticz is already running!","Domoticz",MB_OK); return -1; } bool bStartWebBrowser=true; RedirectIOToConsole(); #endif szStartupFolder=""; szWWWFolder=""; #if !defined WIN32 char szStartupPath[255]; getExecutablePathName((char*)&szStartupPath,255); szStartupFolder=szStartupPath; if (szStartupFolder.find_last_of('/')!=std::string::npos) szStartupFolder=szStartupFolder.substr(0,szStartupFolder.find_last_of('/')+1); #else #ifndef _DEBUG char szStartupPath[255]; char * p; GetModuleFileName(NULL, szStartupPath, sizeof(szStartupPath)); p = szStartupPath + strlen(szStartupPath); while(p >= szStartupPath && *p != '\\') p--; if(++p >= szStartupPath) *p = 0; szStartupFolder=szStartupPath; size_t start_pos = szStartupFolder.find("\\Release\\"); if(start_pos != std::string::npos) { szStartupFolder.replace(start_pos, 9, "\\domoticz\\"); _log.Log(LOG_NORM,"%s",szStartupFolder.c_str()); } #endif #endif GetAppVersion(); _log.Log(LOG_NORM,"Domoticz V%s (c)2012-2014 GizMoCuz",szAppVersion.c_str()); #if !defined WIN32 //Check if we are running on a RaspberryPi std::string sLine = ""; std::ifstream infile; infile.open("/proc/cpuinfo"); if (infile.is_open()) { while (!infile.eof()) { getline(infile, sLine); if (sLine.find("BCM2708")!=std::string::npos) { _log.Log(LOG_NORM,"System: Raspberry Pi"); bIsRaspberryPi=true; break; } } infile.close(); } _log.Log(LOG_NORM,"Startup Path: %s", szStartupFolder.c_str()); #endif szWWWFolder=szStartupFolder+"www"; CCmdLine cmdLine; // parse argc,argv #if defined WIN32 cmdLine.SplitLine(__argc, __argv); #else cmdLine.SplitLine(argc, argv); #endif if ((cmdLine.HasSwitch("-h"))||(cmdLine.HasSwitch("--help"))||(cmdLine.HasSwitch("/?"))) { _log.Log(LOG_NORM,szHelp); return 0; } if (cmdLine.HasSwitch("-startupdelay")) { if (cmdLine.GetArgumentCount("-startupdelay")!=1) { _log.Log(LOG_ERROR,"Please specify a startupdelay"); return 0; } int DelaySeconds=atoi(cmdLine.GetSafeArgument("-startupdelay",0,"").c_str()); _log.Log(LOG_NORM,"Startup delay... waiting %d seconds...",DelaySeconds); sleep_seconds(DelaySeconds); } if (cmdLine.HasSwitch("-www")) { if (cmdLine.GetArgumentCount("-www")!=1) { _log.Log(LOG_ERROR,"Please specify a port"); return 0; } std::string wwwport=cmdLine.GetSafeArgument("-www",0,"8080"); _mainworker.SetWebserverPort(wwwport); } if (cmdLine.HasSwitch("-nowwwpwd")) { _mainworker.m_bIgnoreUsernamePassword=true; } std::string dbasefile=szStartupFolder + "domoticz.db"; #ifdef WIN32 if (!IsUserAnAdmin()) { char szPath[MAX_PATH]; HRESULT hr = SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL, 0, szPath); if (SUCCEEDED(hr)) { std::string sPath=szPath; sPath+="\\Domoticz"; DWORD dwAttr = GetFileAttributes(sPath.c_str()); BOOL bDirExists=(dwAttr != 0xffffffff && (dwAttr & FILE_ATTRIBUTE_DIRECTORY)); if (!bDirExists) { BOOL bRet=CreateDirectory(sPath.c_str(),NULL); if (bRet==FALSE) { MessageBox(0,"Error creating Domoticz directory in program data folder (%ProgramData%)!!","Error:",MB_OK); } } sPath+="\\domoticz.db"; dbasefile=sPath; } } #endif if (cmdLine.HasSwitch("-dbase")) { if (cmdLine.GetArgumentCount("-dbase")!=1) { _log.Log(LOG_ERROR,"Please specify a Database Name"); return 0; } dbasefile=cmdLine.GetSafeArgument("-dbase",0,"domoticz.db"); } _mainworker.m_sql.SetDatabaseName(dbasefile); if (cmdLine.HasSwitch("-wwwroot")) { if (cmdLine.GetArgumentCount("-wwwroot")!=1) { _log.Log(LOG_ERROR,"Please specify a WWW root path"); return 0; } std::string szroot=cmdLine.GetSafeArgument("-wwwroot",0,""); if (szroot.size()!=0) szWWWFolder=szroot; } if (cmdLine.HasSwitch("-verbose")) { if (cmdLine.GetArgumentCount("-verbose")!=1) { _log.Log(LOG_ERROR,"Please specify a verbose level"); return 0; } int Level=atoi(cmdLine.GetSafeArgument("-verbose",0,"").c_str()); _mainworker.SetVerboseLevel((eVerboseLevel)Level); } #if defined WIN32 if (cmdLine.HasSwitch("-nobrowser")) { bStartWebBrowser=false; } #endif if (cmdLine.HasSwitch("-log")) { if (cmdLine.GetArgumentCount("-log")!=1) { _log.Log(LOG_ERROR,"Please specify an output log file"); return 0; } std::string logfile=cmdLine.GetSafeArgument("-log",0,"domoticz.log"); _log.SetOutputFile(logfile.c_str()); } if (!_mainworker.Start()) { return 0; } signal(SIGINT, catch_intterm); signal(SIGTERM,catch_intterm); /* now, lets get into an infinite loop of doing nothing. */ #if defined WIN32 #ifndef _DEBUG RedirectIOToConsole(); //hide console #endif InitWindowsHelper(hInstance,hPrevInstance,nShowCmd,DQuitFunction,atoi(_mainworker.GetWebserverPort().c_str()),bStartWebBrowser); MSG Msg; while(GetMessage(&Msg, NULL, 0, 0) > 0) { TranslateMessage(&Msg); DispatchMessage(&Msg); } #else for ( ;; ) sleep_seconds(1); #endif return 0; }
int main(int argc, char* argv[]){ CCmdLine cmdLine; cmdLine.SplitLine(argc, argv); if ( !(cmdLine.HasSwitch("-i") && cmdLine.HasSwitch("-o") && (cmdLine.HasSwitch("-pos") || cmdLine.HasSwitch("-f") || cmdLine.HasSwitch("-pbOnly"))) ){ fprintf(stderr, "usage: %s -i <image> -o <output-directory> < -pos <x> <y> | -f <fixation-points-file> > [ -pb <probabilistic-boundary-prefix ] [ -flow <optical-flow-file> ] [ -sobel ]\n",argv[0]); fprintf(stderr, "OR \t %s -pbOnly -i <image> -o <output-probabilistic-boundary-prefix>\n",argv[0]); exit(1); } class segLayer frame1; char tmp[80]; strcpy (tmp, cmdLine.GetArgument("-i", 0).c_str()); int64 tic1,tic2,tic3,tic4; double ticFrequency = cvGetTickFrequency()*1000000; tic1=cvGetTickCount(); IplImage *im=cvLoadImage(tmp), *im2; #ifdef CUDA_SUPPORT int maxWidth=640; #else int maxWidth=640; #endif bool resized=false; float scale=1; if(cvGetSize(im).width>maxWidth){ scale=maxWidth/(double)(cvGetSize(im).width); printf("Image too big, resizing it for the segmentation...\n"); int newHeight=(int)(cvGetSize(im).height*scale); im2=cvCreateImage( cvSize(maxWidth,newHeight), IPL_DEPTH_8U, 3 ); cvResize(im,im2); resized=true; }else{ im2=im; } frame1.setImage(im2); if (cmdLine.HasSwitch("-pb")){ strcpy (tmp, cmdLine.GetArgument("-pb", 0).c_str()); frame1.readPbBoundary(tmp); }else{ // Edge detection! if (cmdLine.HasSwitch("-sobel")) frame1.edgeSobel(); else{ #ifdef CUDA_SUPPORT if(!get_lock()){ fprintf(stderr,"Impossible to get the lock...\n"); exit(1); } frame1.edgeGPU(false); if(!release_lock()){ fprintf(stderr,"Impossible to release the lock...\n"); exit(1); } #else frame1.edgeCGTG(); #endif } tic2=cvGetTickCount(); if (cmdLine.HasSwitch("-flow")){ strcpy (tmp, cmdLine.GetArgument("-flow", 0).c_str()); IplImage *flow=cvLoadImage(tmp); IplImage *flow32 = cvCreateImage(cvGetSize(flow), IPL_DEPTH_32F,3); IplImage *flowU = cvCreateImage(cvGetSize(flow), IPL_DEPTH_32F,1); IplImage *flowV = cvCreateImage(cvGetSize(flow), IPL_DEPTH_32F,1); cvConvertScale(flow, flow32, 40/255.,-20); cvSplit(flow32,flowU,NULL,NULL,NULL); cvSplit(flow32,NULL,flowV,NULL,NULL); frame1.setU(flowU); frame1.setV(flowV); cvReleaseImage(&flow); cvReleaseImage(&flow32); } frame1.generatePbBoundary(); } if (cmdLine.HasSwitch("-pbOnly")){ strcpy (tmp, cmdLine.GetArgument("-o", 0).c_str()); frame1.savePbBoundary(tmp); }else{ frame1.allocateMemForContours();// Don't forget to allocate memory to store the region contours. //select fixation point! if(cmdLine.HasSwitch("-pos")){ float x,y; sscanf(cmdLine.GetArgument("-pos", 0).c_str(),"%f",&x); sscanf(cmdLine.GetArgument("-pos", 1).c_str(),"%f",&y); frame1.assignFixPt((int)(x*scale), (int)(y*scale)); }else{ strcpy (tmp, cmdLine.GetArgument("-f", 0).c_str()); frame1.readFixPts(tmp,scale); } //segment frame1.segmentAllFixs(); tic3=cvGetTickCount(); //display! //frame1.displayCurrSegs(-1); strcpy (tmp, cmdLine.GetArgument("-o", 0).c_str()); //sprintf(tmp,"%s/",tmp); if(resized) frame1.saveResizedRegions(tmp,cvGetSize(im).width,cvGetSize(im).height); else frame1.saveRegions(tmp); //release memory! frame1.deallocateMemForContours(); } tic4=cvGetTickCount(); printf("\n\nTotal time = %f\n",(tic4-tic1)/ticFrequency); if(!cmdLine.HasSwitch("-pb")) printf("\t edges detection = %f\n",(tic2-tic1)/ticFrequency); if(!cmdLine.HasSwitch("-pbOnly")) printf("\t segmentation = %f\n",(tic3-tic2)/ticFrequency); return 0; }
int main( int argc, char** argv ) { #ifdef USE_CVCAM bool cvcam=true; #else bool cvcam=false; #endif if (cmdLine.SplitLine(argc, argv) < 1) { // no switches were given on the command line, abort //ShowHelp(); //exit(-1); } std::string infile="../../../stip_online/video/walk-complex.avi"; std::string tmp; int cam=-1; try { if( cmdLine.HasSwitch("-h") || cmdLine.HasSwitch("-help") || cmdLine.HasSwitch("--help")) { ShowHelp(); exit(0); } if( cmdLine.HasSwitch("-f") && cmdLine.HasSwitch("-cam") ) { std::cout<<"You can't specify both file and camera as input!"<<std::endl; ShowHelp(); exit(-1); } if( !(cmdLine.HasSwitch("-f") || cmdLine.HasSwitch("-cam") )) { std::cout<<"no input..."<<std::endl; ShowHelp(); exit(-1); } //*** input/output options if(cmdLine.GetArgumentCount("-f")>0) infile = cmdLine.GetArgument("-f", 0); if(cmdLine.GetArgumentCount("-o")>0) outfile = cmdLine.GetArgument("-o", 0); if(cmdLine.HasSwitch("-cam")) if(cmdLine.GetArgumentCount("-cam")>0) cam = atoi(cmdLine.GetArgument("-cam", 0).c_str()); else cam = -1; if(cmdLine.GetArgumentCount("-res")>0) resid = atoi(cmdLine.GetArgument( "-res", 0 ).c_str()); if(resid<0 || resid>4) resid=1; if(cmdLine.GetArgumentCount("-vis")>0) show = cmdLine.GetArgument("-vis", 0)=="yes"?true:false; //*** descriptor options if(cmdLine.GetArgumentCount("-dscr")>0) mshb.descriptortype = cmdLine.GetArgument("-dscr", 0); if(cmdLine.GetArgumentCount("-szf")>0) mshb.patchsizefactor = atof(cmdLine.GetArgument("-szf", 0).c_str()); //*** detection options if(cmdLine.GetArgumentCount("-nplev")>0) mshb.nxplev=atoi(cmdLine.GetArgument("-nplev", 0).c_str()); if(cmdLine.GetArgumentCount("-plev0")>0) mshb.initpyrlevel=atoi(cmdLine.GetArgument("-plev0", 0).c_str()); //if(cmdLine.GetArgumentCount("-sigma")>0) hb.sig2 = atof(cmdLine.GetArgument( "-sigma", 0 ).c_str()); //if(cmdLine.GetArgumentCount("-tau")>0) hb.tau2 = atof(cmdLine.GetArgument( "-tau", 0 ).c_str()); if(cmdLine.GetArgumentCount("-kparam")>0) mshb.kparam = atof(cmdLine.GetArgument( "-kparam", 0 ).c_str()); if(cmdLine.GetArgumentCount("-thresh")>0) mshb.SignificantPointThresh = atof(cmdLine.GetArgument( "-thresh", 0 ).c_str()); if(cmdLine.GetArgumentCount("-border")>0) mshb.Border = atoi(cmdLine.GetArgument( "-border", 0 ).c_str()); //*** video capture options mshb.framemax = 100000000; if(cmdLine.GetArgumentCount("-framemax")>0) mshb.framemax = atoi(cmdLine.GetArgument( "-framemax", 0 ).c_str()); if(cmdLine.GetArgumentCount("-ff")>0) frame_begin = atoi(cmdLine.GetArgument( "-ff", 0 ).c_str()); if(cmdLine.GetArgumentCount("-lf")>0) frame_end = atoi(cmdLine.GetArgument( "-lf", 0 ).c_str()); } catch (...) { ShowHelp(); exit(-1); } if(infile=="") //prb:both can handle cam and file { if(!InitCVCAM(cam)) return -2; // initialize source name string sourcename="CameraStream"; } else { cvcam=false; if(!InitCapture(infile.c_str())) return -2; // initialize source name string sourcename=infile; std::cout<<"Options summary: "<<std::endl; std::cout<<" video input: "<<sourcename<<std::endl; std::cout<<" frame interval: "<<frame_begin<<"-"<<frame_end<<std::endl; std::cout<<" output file: "<<outfile<<std::endl; std::cout<<" #pyr.levels: "<<mshb.nxplev<<std::endl; std::cout<<" init.pyr.level: "<<mshb.initpyrlevel<<std::endl; std::cout<<" patch size fct.: "<<mshb.patchsizefactor<<std::endl; std::cout<<" descriptor type: "<<mshb.descriptortype<<std::endl; } if(show) { //cvNamedWindow( win1, CV_WINDOW_AUTOSIZE ); cvNamedWindow( win2, 0 ); } //cvNamedWindow("Original"); if(capture) { int fn=0; for(;;) { if (fn>=mshb.framemax) break; if (fn>=frame_end-frame_begin) break; fn++; frame = cvQueryFrame( capture ); if( !frame ) break; //CVUtil::DrawCircleFeature(frame,cvPoint(10,10),4.0); //CapProperties(capture); //cvShowImage("Original",frame); dostuff(frame); if(show) { dovisstuff(); //cvWaitKey(); cvWaitKey(10); //if(cvWaitKey(10) >= 0 ) // break; } } } std::cout<<"-> detected "<<TotalIPs<<" points"<<std::endl; #ifdef USE_CVCAM if(cvcam) { cvWaitKey(0); cvcamExit(); } #endif if(capture) cvReleaseCapture( &capture ); if(show) { cvDestroyWindow(win1); } if(gray) cvReleaseImage(&gray); if(vis) cvReleaseImage(&vis); if(vis2) cvReleaseImage(&vis2); if(vis3) cvReleaseImage(&vis3); if(camimg) cvReleaseImage(&camimg); return 0; }
int main(int argc, char* argv[]) { // Read in parameters from command line. CCmdLine cmdLine; if(cmdLine.SplitLine(argc, argv) < 3) { cerr << "Usage: ./gittar -m consensus_motif -e log_ratio_file -s promoter_sequence" << endl; cerr << "Additional parameters:" << endl; cerr << "[-mis] mismatches to consensus motif(Default=1)" << endl; cerr << "[-a] annotation file" << endl; cerr << "[-o] output(gene_and_other_info PSFM)" << endl; cerr << "[-v] verbose mode" << endl; cerr << "[-h] hyperprio parameters(hyper_samples=50 mu=2.0 sigma^2=1.0 flanking_length=7" << endl; cerr << "[-n] DO NOT use prio information(overide hyperprio parameters)" << endl; cerr << "[-g] Gibbs sampler parameters(starting_point=10 burn-in=100 window=100)" << endl; cerr << "[-misc] Miscellaneous parameters(stds_of_intial_target=4 skip_core_region=0 random_background=0 threshold_for_target=0.5 stds_enfore=1)" << endl; return 1; } string m, e, s; try { m = cmdLine.GetArgument("-m", 0); e = cmdLine.GetArgument("-e", 0); s = cmdLine.GetArgument("-s", 0); } catch(int) { cerr << "Wrong arguments!" << endl; return 1; } string mis = cmdLine.GetSafeArgument("-mis", 0, "1"); // mismatches. unsigned misallow = atoi(mis.data()); string a = cmdLine.GetSafeArgument("-a", 0, ""); // gene annotation file. string o1 = cmdLine.GetSafeArgument("-o", 0, ""); // output gene and other information. string o2 = cmdLine.GetSafeArgument("-o", 1, ""); // output PSFM. // Hyper-prio parameters. HypePrio hypePrio; string v = cmdLine.GetSafeArgument("-h", 0, "50"); hypePrio.V = atoi(v.data()); string mu = cmdLine.GetSafeArgument("-h", 1, "2.0"); hypePrio.MU = atof(mu.data()); string sigma2 = cmdLine.GetSafeArgument("-h", 2, "1.0"); hypePrio.SIGMA_2 = atof(sigma2.data()); string flanking = cmdLine.GetSafeArgument("-h", 3, "7"); hypePrio.FLANKING = atoi(flanking.data()); // DO NOT use prior information? if(cmdLine.HasSwitch("-n")) hypePrio.V = 1; // Gibbs-sampler parameters. string sta_pnt = cmdLine.GetSafeArgument("-g", 0, "10"); STA_PNT = atoi(sta_pnt.data()); string burn_in = cmdLine.GetSafeArgument("-g", 1, "100"); BURN_IN = atoi(burn_in.data()); string window = cmdLine.GetSafeArgument("-g", 2, "100"); WINDOW = atoi(window.data()); // Miscellaneous parameters. string iniv = cmdLine.GetSafeArgument("-misc", 0, "4"); INIV = atoi(iniv.data()); string skipcore = cmdLine.GetSafeArgument("-misc", 1, "0"); SKIPCORE = atoi(skipcore.data()); string randbg = cmdLine.GetSafeArgument("-misc", 2, "0"); RANDBG = atoi(randbg.data()); VERBOSE = cmdLine.HasSwitch("-v"); // verbose mode switch. // Load data into memory. string motifSeq; // string of motif sequence. Expr expr; // hash table of expression values. Seq seq; // hash table of sequences. GeneAnno geneAnno; // hash table of gene annotation info. if(VERBOSE) cout << "Loading...motif...expression...sequence..." << endl; if(load_data(m, e, s, a, motifSeq, expr, seq, geneAnno)) // load data. { cerr << "Error occurs during data loading!" << endl; return 1; } if(VERBOSE) cout << "Data load complete!" << endl; // Normalize expression levels. double bkm = mean(expr); double bkstd = stnd(expr, bkm); if(VERBOSE) cout << "All gene mean: " << bkm << ", standard deviation: " << bkstd << endl; // Find all genes containing the motif with mismatch. VGene vGene; motifgene(motifSeq, hypePrio.FLANKING, expr, seq, misallow, vGene); if(VERBOSE) cout << "Total genes identified: " << vGene.size() << endl; // Calculate pseudo-count for DNA bases among all sequences. double dnaPor[4]; sudocnt(seq, dnaPor); if(VERBOSE) { cout << "DNA bases portion in all sequences." << endl; cout << "A: " << dnaPor[0] << endl; cout << "C: " << dnaPor[1] << endl; cout << "G: " << dnaPor[2] << endl; cout << "T: " << dnaPor[3] << endl; } // Gibbs sampler starts from here... double tPSFM[4][40], nPSFM[4][40]; // target and non-target PSFM. double mTarget, s2Target; SST eLen = motifSeq.length() + 2*hypePrio.FLANKING; setzero(tPSFM, 4, (unsigned)eLen); setzero(nPSFM, 4, (unsigned)eLen); mTarget = s2Target = 0.0; for(unsigned i = 0; i < STA_PNT; i++) { // Generate candidate genes' initial labels. genlbl(vGene, bkm, bkstd); // Use Gibbs Sampler to calculate the estimated labels. if(VERBOSE) cout << "Gibbs sampler starting..." << endl; double mTarget_, s2Target_; double tPSFM_[4][40], nPSFM_[4][40]; /* Here go the parameters information: vGene: Information about all genes that contain motif. dnaPor: DNA pseudo-count. seq: Promoter sequences for all genes. mVal: background expression mean. sVal: background expression std. */ int iter; iter = gsamp(vGene, mTarget_, s2Target_, tPSFM_, nPSFM_, misallow, dnaPor, motifSeq, seq, bkm, bkstd, hypePrio); if(VERBOSE) cout << "Gibbs sampler stops with " << iter << " iterations." << endl; mTarget += mTarget_; s2Target += s2Target_; add2mat(tPSFM, tPSFM, tPSFM_, (unsigned)eLen); add2mat(nPSFM, nPSFM, nPSFM_, (unsigned)eLen); if(VERBOSE) { cout << "Target genes in last iteration: " << ntar(vGene) << endl; cout << "Non-target genes in last iteration: " << nnon(vGene) << endl; } sum_iter(i, vGene); } // Summarize the results from different starting points. avg_iter(vGene); unsigned nTar = ntar(vGene, true); unsigned nNon = nnon(vGene, true); mTarget /= STA_PNT; s2Target /= STA_PNT; normat(tPSFM, (unsigned)eLen, STA_PNT); normat(nPSFM, (unsigned)eLen, STA_PNT); // Write results into files. if(VERBOSE) cout << "Writing results into files..." << endl; time_t time_tag = time(NULL); if(o2 == "") { ostringstream logstream; logstream << time_tag << "_" << motifSeq << "_mis" << misallow << ".log"; o2 = logstream.str(); } // PSFMs and profile ratios. if(write_log(o2, (unsigned)eLen, tPSFM, nPSFM) != 0) cerr << "Writing matrices information failed!" << endl; else if(VERBOSE) cout << "PSFMs and profile ratios write complete!" << endl; // Re-calculate binding site according to the averaged PSFM. map<string, string> mbindloc; // A map to store all binding sites of each gene. for(unsigned i = 0; i < vGene.size(); i++) mbindloc[vGene[i].name] = bindsite(vGene[i], vGene[i].target, seq[vGene[i].name], tPSFM, nPSFM, hypePrio.FLANKING); // Write genes information. // Sort genes according to their probabilities and expression values. sort(vGene.begin(), vGene.end(), cmp); if(o1 == "") { ostringstream infostream; infostream << time_tag << "_" << motifSeq << "_mis" << misallow << ".info"; o1 = infostream.str(); } if(write_info(o1, vGene, geneAnno, mTarget, sqrt(s2Target), bkm, bkstd, (unsigned)seq.size(), nTar, nNon, hypePrio, motifSeq, mbindloc) != 0) cerr << "Writing genes information failed!" << endl; else if(VERBOSE) { cout << "Genes information write complete!" << endl; cout << "Finished!" << endl; } return 0; }
int P300ClassifierMain( int argc, char **argv, QApplication& app ) { ConfigDialog dialog; CCmdLine cmdLine; QString arg_TrainingDataFiles; QString arg_TestingDataFiles; QString arg_inicfg; QStringList arg_TrainingDataFilesList; QStringList arg_TestingDataFilesList; bool barg_TrainingDataFiles; bool barg_TestingDataFiles; bool barg_inicfg; cmdLine.SplitLine(argc, argv); barg_TrainingDataFiles =cmdLine.HasSwitch("-TrainingDataFiles"); barg_TestingDataFiles =cmdLine.HasSwitch("-TestingDataFiles"); barg_inicfg =cmdLine.HasSwitch("-inicfg"); //int co = cmdLine.GetArgumentCount("-TrainingDataFiles"); if (barg_TrainingDataFiles) { for (int i=0; i<cmdLine.GetArgumentCount("-TrainingDataFiles"); i++) { arg_TrainingDataFiles = arg_TrainingDataFiles.fromStdString(cmdLine.GetArgument("-TrainingDataFiles",i)); arg_TrainingDataFilesList.insert(i, arg_TrainingDataFiles); } } else { arg_TrainingDataFiles = ""; } if (barg_TestingDataFiles) { for (int i=0; i<cmdLine.GetArgumentCount("-TestingDataFiles"); i++) { arg_TestingDataFiles = arg_TestingDataFiles.fromStdString(cmdLine.GetArgument("-TestingDataFiles",i)); arg_TestingDataFilesList.insert(i, arg_TestingDataFiles); } } else { arg_TestingDataFiles = ""; } if (barg_inicfg) { arg_inicfg = arg_inicfg.fromStdString(cmdLine.GetArgument("-inicfg",0)); } else { arg_inicfg = ""; } QString classifierOutputFile = cmdLine.GetSafeArgument( "-ClassifierOutputFile", 0, "" ).c_str(); dialog.SetFiles(arg_TrainingDataFilesList, arg_TestingDataFilesList, arg_inicfg, classifierOutputFile); return dialog.exec(); }
int MainEntry(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MSG msg; ULONG_PTR gdiplusToken; GdiplusStartupInput gdiplusStartupInput; BOOL bConsoleAttached = FALSE; // Set locale char *locale = setlocale(LC_ALL, ".936"); // Startup GDI+ Status status = GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL); if (status != Ok) return FALSE; // set options by command line CCmdLine cmdline; if (cmdline.SplitLine(__argc, __argv) > 0) { if (cmdline.HasSwitch("-width")) g_nScreenWidth = atoi(cmdline.GetArgument("-width", 0).c_str()); if (cmdline.HasSwitch("-height")) g_nScreenHeight = atoi(cmdline.GetArgument("-height", 0).c_str()); if (cmdline.HasSwitch("-d")) { if (AttachConsole(ATTACH_PARENT_PROCESS)) { bConsoleAttached = TRUE; freopen("CONIN$", "r", stdin); freopen("CONOUT$", "w", stdout); freopen("CONOUT$", "w", stderr); } } if (cmdline.HasSwitch("-appid")) { xsStrCpyN(g_szAppId, cmdline.GetArgument("-appid", 0).c_str(), sizeof(g_szAppId)); } } xsTcsCpy((xsTChar *)g_szTitle, xsT("XSKit")); xsTcsCpy((xsTChar *)g_szWindowClass, xsT("XSKitMainWnd")); RegisterWndClass(hInstance); if (!InitInstance (hInstance, nCmdShow)) { if (bConsoleAttached) FreeConsole(); return FALSE; } while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } xsPalGuiUninit(); if (bConsoleAttached) FreeConsole(); // Shutdown GDI+ GdiplusShutdown(gdiplusToken); return msg.wParam; }
int main(int argc, char* argv[]) { // Read parameters from console. CCmdLine cmdLine; if(cmdLine.SplitLine(argc, argv) < 5) { cerr << "Usage: ./bbnet -s score_file -n node -b bkg -f func_depth -o output" << endl; cerr << endl << "Additional parameter:" << endl; cerr << "-k\tPenalty parameter(logK, Default = 5.0)" << endl; cerr << "-c\tnumber of candidate motifs (Default=50)" << endl; cerr << "-d\tpositive negative (for prediction using BN)" << endl; cerr << "-l\toutput of all training samples' information." << endl; cerr << "-t\ttranslational(transcriptional) start sites.(Default = right end)" << endl; cerr << "-rb\tbit-string to determine which rules to include.(Default = 111110)" << endl; cerr << "-i\tUse mutual information instead of Bayesian score" << endl; cerr << endl << "Contact: \"Li Shen\"<*****@*****.**>" << endl; return 1; } string s, n, b, f, o; try { s = cmdLine.GetArgument("-s", 0); // score file. n = cmdLine.GetArgument("-n", 0); // node gene list file. b = cmdLine.GetArgument("-b", 0); // bkg gene list file. f = cmdLine.GetArgument("-f", 0); // func depth folder. o = cmdLine.GetArgument("-o", 0); // results output file. } catch(int) { cerr << "Wrong arguments!" << endl; return 1; } if(cmdLine.HasSwitch("-i")) itag = true; //itag = true; //string s = "../gbnet/data/Beer/scor_test.list"; //string n = "../gbnet/data/Beer/node.list"; //string b = "../gbnet/data/Beer/bkg.list"; //string f = "../gbnet/data/Beer/func"; //string k = "0.015"; //logK = atof(k.data()); //string o = "../gbnet/data/Beer/bb_res_test2.txt"; string k; // Penalty parameter; logK value. if(!itag) k = cmdLine.GetSafeArgument("-k", 0, "5.0"); else k = cmdLine.GetSafeArgument("-k", 0, "0.015"); logK = atof(k.data()); string c = cmdLine.GetSafeArgument("-c", 0, "50"); // number of candidate motifs. default = 50. motifcand = atoi(c.data()); // Use prior counts for some motifs if specified. string p = cmdLine.GetSafeArgument("-p", 0, "0"); // prior counts. pricnt = atoi(p.data()); if(pricnt > 0) // read preferred motifs list from file. { prior = 1; string fPrim = cmdLine.GetSafeArgument("-p", 1, "primot.txt"); vector<string> primv; if(get1stcol(fPrim, primv) < 0) return 1; for(size_t i = 0; i < primv.size(); i++) primo.insert(primv[i]); } // File names for positive, negative and left-out testing lists. string pos = cmdLine.GetSafeArgument("-d", 0, ""); // positive testing cases. string neg = cmdLine.GetSafeArgument("-d", 1, ""); // negative testing cases. string res = cmdLine.GetSafeArgument("-d", 2, ""); // left-out testing cases. vector<string> plst, nlst, rlst; // positive, negative and left-out lists. if(pos != "" && neg != "") { if(get1stcol(pos, plst) < 0) return 1; if(get1stcol(neg, nlst) < 0) return 1; } if(res != "") { if(get1stcol(res, rlst) < 0) return 1; } // File for output of all training samples' information. string finfo = cmdLine.GetSafeArgument("-l", 0, ""); // File to store all genes' translational/transcriptional start sites. string ftss = cmdLine.GetSafeArgument("-t", 0, ""); if(ftss != "") loadtss(ftss, mtss); // A bit-string to determine which rules to include. rb = cmdLine.GetSafeArgument("-rb", 0, "111110"); string bp = cmdLine.GetSafeArgument("-bp", 0, ""); // Output each gene's probability like in Beer's prediction. // Load motif Bayesian score file. if(loadscor(mscor, s) != 0) { cerr << "Load motif scores eror!" << endl; return 1; } else { #ifdef VERBOSE cout << "Display candidate motifs that are loaded:" << endl; dispscor(mscor); #endif } vector<MotifScore> oscor = mscor; // Save an original copy of motif scores. // Load gene list. vector<Case> tlst, blst, genlst; set<string> genset; if(loadgene(tlst, blst, n, b) != 0) { cerr << "Load gene lists error!" << endl; return 1; } else { genlst.insert(genlst.end(), tlst.begin(), tlst.end()); genlst.insert(genlst.end(), blst.begin(), blst.end()); #ifdef VERBOSE cout << "Load gene list completed!" << endl; #endif // All training and testing gene names are put into genmap. for(size_t i = 0; i < genlst.size(); i++) genset.insert(genlst[i].name); for(size_t i = 0; i < plst.size(); i++) genset.insert(plst[i]); for(size_t i = 0; i < nlst.size(); i++) genset.insert(nlst[i]); for(size_t i = 0; i < rlst.size(); i++) genset.insert(rlst[i]); } // Load motif binding information of genes in genmap. if(loadbind(allbind, mscor, genset, f) != 0) { cerr << "Load binding information error!" << endl; return 1; } else { #ifdef VERBOSE cout << "Load binding information completed!" << endl; #endif } // File for output. ofstream hOut(o.data()); if(!hOut) { cerr << "Can't open " << o << endl; return 1; } hOut << "Number of genes in category 1: " << tlst.size() << endl; hOut << "Number of genes in category 0: " << blst.size() << endl << endl; #ifdef VERBOSE cout << endl << "Running on original data." << endl; #endif vector<Constraint> cons; vector<CPTRow> cpt; clock_t start = clock(); double scor = bbnet(cons, cpt, genlst); clock_t finish = clock(); if(outbayes(hOut, scor, cons, cpt, oscor, tlst.size(), blst.size()) != 0) { cerr << "Output Bayesian network results error!" << endl; return 1; } if(finfo != "") { if(outgene(finfo, tlst, blst, cons) != 0) cerr << "Output training samples' information error!" << endl; return 1; } if(pos != "" && neg != "") { Pred d = predict(cons, cpt, plst, nlst); outpred(hOut, d, n, b, pos, neg); if(bp != "") // output each gene's probability being in this cluster if output file is specified. { ofstream hbp(bp.data()); if(!hbp) { cerr << "Can't open " << bp << endl; return 1; } vector<BPred> trnbp = predict(cons, cpt, genlst, 0); // probabilities for training genes. outpred(hbp, trnbp); vector<string> tstlst; // probabilities for testing genes. tstlst.insert(tstlst.end(), plst.begin(), plst.end()); // positive testings. tstlst.insert(tstlst.end(), nlst.begin(), nlst.end()); // negative testings. vector<BPred> tstbp = predict(cons, cpt, tstlst, 1); outpred(hbp, tstbp); if(res != "") // probabilities for left-out genes if the left-out file is specified. { vector<BPred> lefbp = predict(cons, cpt, rlst, -1); outpred(hbp, lefbp); } hbp.close(); } } hOut << endl << "Bayesian network occupied CPU " << (double)(finish-start)/CLOCKS_PER_SEC << " seconds." << endl; hOut.close(); return 0; }