int main(void) { int g = 2; //Number of groups int n = 9999; //Timesteps double dt=0.0001; //Duration of timestep double R[n][g]; //Rate vectors double R_i[g]; //Initial rates R_i[0] = 30; //Excitatory R_i[1] = 20; //Inhibitory double W[g][g]; //Synaptic weights W[0][0]=2; W[0][1]=2.873; //EE EI W[1][0]=-2.873; W[1][1]=-2; //IE II double gamma[g]; //External input gamma[0] = 10; //->E cells gamma[1] = -10; //->I cells double tau[g]; //Time constants tau[0] = 0.002; //AMPA (excitatory) tau[1] = 0.010; //GABA_A (inhibitory) //Simulate rateN(g, n, R, R_i, W, gamma, tau, dt); //Simulate //Save data char * filename = "single_PING_group.dat"; asave(n, g, R, filename); printf("Done! Data saved as %s\n", filename); return 0; }
Fenetre::Fenetre(QWidget *parent) : courant(0), QMainWindow(parent) { //************************* courant = NULL; folder = NULL; resize(1200, 512); //*************************** Menu *************************** QMenu* mFile = menuBar()->addMenu("&File"); QMenu* mEdit = menuBar()->addMenu("&Edit"); QMenu* mView = menuBar()->addMenu("&View"); QMenu* mNouveau = mFile->addMenu("New"); QAction* mactionAnnuler = mEdit->addAction("Annuler"); QAction* mactionRefaire = mEdit->addAction("Refaire"); QAction* mactionSupprimer = mEdit->addAction("Supprimer"); QMenu* mTag = mEdit->addMenu("Tags"); QAction* mactionSupprimerTag = mTag->addAction("Supprimer"); QMenu* mDocument = mEdit->addMenu("Documents"); QAction* mactionUp = mDocument->addAction("Monter"); QAction* mactionDown = mDocument->addAction("Descendre"); QMenu* mExport = mEdit->addMenu("Exporter"); QAction* mactionOuvrir = mFile->addAction("Ouvrir un espace de travail"); QAction* mactionNew = mFile->addAction("Nouvel espace de travail"); QAction* mactionSaveAs = mFile->addAction("Enregistrer sous..."); QAction* mactionNewArticle = mNouveau->addAction("Article"); QAction* mactionNewImage = mNouveau->addAction("Image"); QAction* mactionNewAudio = mNouveau->addAction("Audio"); QAction* mactionNewVideo = mNouveau->addAction("Video"); QAction* mactionNewDocument = mNouveau->addAction("Document"); QAction* mactionExportHTML = mExport->addAction("Html"); QAction* mactionExportTex = mExport->addAction("Tex"); QAction* mactionExportTexte = mExport->addAction("Texte"); QAction* mactionOption=mEdit->addAction("Setting"); QAction* mactionAddTag = mNouveau->addAction("Tag"); QAction* mactionSave = mFile->addAction("Sauvegarder"); mFile->addSeparator(); QMenu* ouvrirCorbeille = mFile->addMenu("Corbeille"); QAction* mactionRestaurer = ouvrirCorbeille->addAction("Restaurer"); QAction* mactionVider = ouvrirCorbeille->addAction("Vider la Corbeille"); mactionViewEdit = mView->addAction("Onglet Editeur"); mactionViewHTML = mView->addAction("Onglet Html"); mactionViewTex = mView->addAction("Onglet Tex"); mactionViewTexte = mView->addAction("Onglet Texte"); mFile->addSeparator(); QAction* actionQuitter = mFile->addAction("&Quitter"); actionQuitter->setIcon(QIcon("icon/quitter.png")); mactionNewArticle->setIcon(QIcon("icon/article.png")); mactionNewImage->setIcon(QIcon("icon/image.png")); mactionNewAudio->setIcon(QIcon("icon/audio.png")); mactionNewVideo->setIcon(QIcon("icon/video.png")); mNouveau->setIcon(QIcon("icon/plus.png")); mactionDown->setIcon(QIcon("icon/down.png")); mactionUp->setIcon(QIcon("icon/up.png")); mactionAddTag->setIcon(QIcon("icon/tag.png")); mactionSave->setIcon(QIcon("icon/save.png")); mactionExportHTML->setIcon(QIcon("icon/html.png")); mactionExportTex->setIcon(QIcon("icon/tex.png")); mactionExportTexte->setIcon(QIcon("icon/texte.png")); mactionAnnuler->setIcon(QIcon("icon/undo.png")); mactionRefaire->setIcon(QIcon("icon/redo.png")); mactionSupprimer->setIcon(QIcon("icon/cross.png")); mactionRestaurer->setIcon(QIcon("icon/corbeille.png")); mactionNewDocument->setIcon(QIcon("icon/document.png")); mactionOption->setIcon(QIcon("icon/setting.png")); mactionOuvrir->setShortcut(QKeySequence("Ctrl+O")); actionQuitter->setShortcut(QKeySequence("Ctrl+Q")); mactionSave->setShortcut(QKeySequence("Ctrl+S")); mactionAnnuler->setShortcut(QKeySequence("Ctrl+Z")); mactionRefaire->setShortcut(QKeySequence("Ctrl+Y")); mactionSupprimer->setShortcut(tr("Delete")); //** VIEW **// mactionViewEdit->setCheckable(true); mactionViewEdit->setChecked(true); mactionViewHTML->setCheckable(true); mactionViewTex->setCheckable(true); mactionViewTexte->setCheckable(true); //Bar de statue QStatusBar* statusBar = new QStatusBar; statusBar->addWidget(new QLabel("Projet Lo21 - Pauline Crouillère / Emilien Notarianni")); this->setStatusBar(statusBar); // Création de la barre d'outils QToolBar *toolBarFichier = addToolBar("Fichier"); toolBarFichier->addAction(mactionNewArticle); toolBarFichier->addAction(mactionNewImage); toolBarFichier->addAction(mactionNewAudio); toolBarFichier->addAction(mactionNewVideo); toolBarFichier->addAction(mactionNewDocument); toolBarFichier->addSeparator(); toolBarFichier->addAction(mactionAddTag); toolBarFichier->addSeparator(); toolBarFichier->addAction(mactionUp); toolBarFichier->addAction(mactionDown); toolBarFichier->addSeparator(); toolBarFichier->addAction(mactionExportHTML); toolBarFichier->addAction(mactionExportTex); toolBarFichier->addAction(mactionExportTexte); toolBarFichier->addSeparator(); toolBarFichier->addAction(mactionRestaurer); toolBarFichier->addSeparator(); toolBarFichier->addAction(mactionSupprimer); toolBarFichier->addSeparator(); toolBarFichier->addAction(actionQuitter); /*************************************************************/ couche = new QHBoxLayout(); lw = new LeftWindows(); ow = new OngletWindows(); couche->addWidget(lw); couche->addWidget(ow); couche->setMargin(0); couche->setAlignment(Qt::AlignTop); centerWindows = new QWidget(); centerWindows->setLayout(couche); setCentralWidget(centerWindows); //************************** CONNECT **************************/ QObject::connect(mactionNewArticle, SIGNAL(triggered()), this, SLOT(newArticle())); QObject::connect(mactionNewDocument, SIGNAL(triggered()), this, SLOT(newDocument())); QObject::connect(mactionNewImage, SIGNAL(triggered()), this, SLOT(newImage())); QObject::connect(mactionNewAudio, SIGNAL(triggered()), this, SLOT(newAudio())); QObject::connect(mactionNewVideo, SIGNAL(triggered()), this, SLOT(newVideo())); QObject::connect(mactionAddTag, SIGNAL(triggered()), this, SLOT(newTag())); QObject::connect(mactionOuvrir,SIGNAL(triggered()),this, SLOT(ouvrirDialogue())); QObject::connect(actionQuitter,SIGNAL(triggered()),qApp, SLOT(quit())); QObject::connect(mactionUp,SIGNAL(triggered()),this, SLOT(docUp())); QObject::connect(mactionDown,SIGNAL(triggered()),this, SLOT(docDown())); QObject::connect(mactionRestaurer, SIGNAL(triggered()), this, SLOT(ouvrirCorbeille())); QObject::connect(mactionSave, SIGNAL(triggered()), this, SLOT(asave())); QObject::connect(mactionExportHTML, SIGNAL(triggered()), this, SLOT(exportHTML())); QObject::connect(mactionExportTex, SIGNAL(triggered()), this, SLOT(exportTex())); QObject::connect(mactionExportTexte, SIGNAL(triggered()), this, SLOT(exportTexte())); QObject::connect(mactionSupprimer, SIGNAL(triggered()), this, SLOT(deleteInCorbeille())); QObject::connect(mactionVider, SIGNAL(triggered()), this, SLOT(viderLaCorbeille())); //TODO QObject::connect(mactionAnnuler, SIGNAL(triggered()), qApp, SLOT(undo())); QObject::connect(mactionRefaire, SIGNAL(triggered()), qApp, SLOT(redo())); // QObject::connect(mactionSaveAs, SIGNAL(triggered()), this, SLOT(copieWorkSpace())); QObject::connect(mactionNew, SIGNAL(triggered()), this, SLOT(newWorkSpace())); QObject::connect(mactionOption, SIGNAL(triggered()), this, SLOT(setting())); QObject::connect(mactionViewEdit, SIGNAL(triggered()), this, SLOT(changeEdit())); QObject::connect(mactionViewHTML, SIGNAL(triggered()), this, SLOT(changeHtml())); QObject::connect(mactionViewTex,SIGNAL(triggered()),this, SLOT(changeTex())); QObject::connect(mactionViewTexte,SIGNAL(triggered()),this, SLOT(changeTexte())); QObject::connect(ow, SIGNAL(currentChanged(int)), this, SLOT(changeOnglet(int))); QObject::connect(mactionSupprimerTag, SIGNAL(triggered()), this, SLOT(supprimeTag())); }
int main(void){ /*********** INITIALIZE STUFF *************/ int n=100000, no=2; //timesteps and number of oscillators int g=2*no; //number of groups double dt = 0.0001; int rw = 10; //how often to record syn weights int t,i,j; //counters double W_t[n/rw][g][g]; //Weight matrix over time double Re[n][no], R_i[no][2]; //Init weights double wW[2][2]; //Within-oscillator synaptic weights wW[0][0]=2; wW[0][1]=2.873; //EE EI wW[1][0]=-2.873; wW[1][1]=-2; //IE II double W[4]; //Cross-group W[0]=0.2; W[1]=0.3; //xEE xEI W[2]=-0.5; W[3]=0; //xIE xII int xEE_c=1, xEI_c=0, xIE_c=0, xII_c=0; //Syn weights allowed to change? //Find initial rate vector int p=1000; double lp_rates[p][2]; get_last_period(&p, lp_rates, wW); double R_i_IN[2][2], R_i_OUT[2][2]; R_i_IN[0][0] = lp_rates[0][0]; R_i_IN[0][1] = lp_rates[0][1]; R_i_IN[1][0] = lp_rates[0][0]; R_i_IN[1][1] = lp_rates[0][1]; R_i_OUT[0][0] = lp_rates[0][0]; R_i_OUT[0][1] = lp_rates[0][1]; R_i_OUT[1][0] = lp_rates[p/2][0]; R_i_OUT[1][1] = lp_rates[p/2][1]; //Multithreading stuff int pd_res = 100; double phdiffs[pd_res]; pthread_t threads[NUM_THREADS]; THREAD_DAT_1D t_args[NUM_THREADS]; int t_divs[NUM_THREADS+1]; segment_threads(NUM_THREADS, 0, pd_res, t_divs); //put data in thread args for (i=0;i<NUM_THREADS;i++){ t_args[i].id = i; t_args[i].a = t_divs[i]; t_args[i].b = t_divs[i+1]; t_args[i].res = pd_res; t_args[i].DATA = (double *)&phdiffs; t_args[i].DATA_IN = (double *)&W; } /*********** BEFORE PLASTICITY PD_INIT VS PD_SS PLOT *************/ //Run threads for (i=0;i<NUM_THREADS;i++){ pthread_create(&threads[i],NULL,Learned_Synchrony_worker,(void*)&t_args[i]); } //Wait for threads to finish waitfor_threads(NUM_THREADS, threads); //Write data to file char * fn_pre_pdvpd = "Learned_Synchrony_pre_pdvpd.dat"; vsave(pd_res, phdiffs, fn_pre_pdvpd); printf("Done with PRE - data saved as %s\n", fn_pre_pdvpd); /*********** DO PLASTIC RUN STARTING *IN* PHASE ******************/ //Simulate plasticPingRateN_recW(n,no,Re,R_i_IN,W[0],W[1],W[2],W[3], xEE_c,xEI_c,xIE_c,xII_c,wW,dt,W_t); printf("xEE weight after plastic run starting IN-phase: %f\n",W_t[n/rw-1][0][2]); //Save data char * fn_plasIN_r = "Learned_Synchrony_plas_IN_r.dat"; asave(n, no, Re, fn_plasIN_r); printf("Plastic run, init-IN, rate data saved as %s\n", fn_plasIN_r); //Convert weight matrix into storable one double output_w_in[n/rw][g*g]; for (t=0;t<n/rw;t++){ for (i=0;i<g;i++){ for (j=0;j<g;j++){ output_w_in[t][g*i+j] = W_t[t][i][j]; }}} //And save the final xEE weights for later double W_ppIN_SS = W_t[n/rw-1][0][2]; //Save data char * fn_plasIN_w = "Learned_Synchrony_plas_IN_w.dat"; asave(n/rw, g*g, output_w_in, fn_plasIN_w); printf("Plastic run, init-IN, weight data saved as %s\n", fn_plasIN_w); /*********** DO PLASTIC RUN STARTING *OUT-OF* PHASE ******************/ //Simulate plasticPingRateN_recW(n,no,Re,R_i_OUT,W[0],W[1],W[2],W[3], xEE_c,xEI_c,xIE_c,xII_c,wW,dt,W_t); printf("xEE weight after plastic run starting OUT-of-phase: %f\n",W_t[n/rw-1][0][2]); //Save data char * fn_plasOUT_r = "Learned_Synchrony_plas_OUT_r.dat"; asave(n, no, Re, fn_plasOUT_r); printf("Plastic run, init-OUT, rate data saved as %s\n", fn_plasOUT_r); //Convert weight matrix into storable one double output_w_out[n/rw][g*g]; for (t=0;t<n/rw;t++){ for (i=0;i<g;i++){ for (j=0;j<g;j++){ output_w_out[t][g*i+j] = W_t[t][i][j]; }}} //And save the final xEE weights for later double W_ppOUT_SS = W_t[n/rw-1][0][2]; //Save data char * fn_plasOUT_w = "Learned_Synchrony_plas_OUT_w.dat"; asave(n/rw, g*g, output_w_out, fn_plasOUT_w); printf("Plastic run, init-OUT, weight data saved as %s\n", fn_plasOUT_w); /*********** AFTER IN-PLASTICITY PD_INIT VS PD_SS PLOT *************/ //Set xEE weight W[0] = W_ppIN_SS; //Run threads for (i=0;i<NUM_THREADS;i++){ pthread_create(&threads[i],NULL,Learned_Synchrony_worker,(void*)&t_args[i]); } //Wait for threads to finish waitfor_threads(NUM_THREADS, threads); //Write data to file char * fn_postIN_pdvpd = "Learned_Synchrony_postIN_pdvpd.dat"; vsave(pd_res, phdiffs, fn_postIN_pdvpd); printf("Done with POST-IN - data saved as %s\n", fn_postIN_pdvpd); /*********** AFTER OUT-PLASTICITY PD_INIT VS PD_SS PLOT *************/ //Set xEE weight W[0] = W_ppOUT_SS; //Run threads for (i=0;i<NUM_THREADS;i++){ pthread_create(&threads[i],NULL,Learned_Synchrony_worker,(void*)&t_args[i]); } //Wait for threads to finish waitfor_threads(NUM_THREADS, threads); //Write data to file char * fn_postOUT_pdvpd = "Learned_Synchrony_postOUT_pdvpd.dat"; vsave(pd_res, phdiffs, fn_postOUT_pdvpd); printf("Done with POST-OUT - data saved as %s\n", fn_postOUT_pdvpd); return 0; }
int main(void){ int n=29999, no=2; double dt = 0.0001; double Re[n][no], R_i[no][2]; double xEE_IN=0.15, xEI_IN=0, xIE_IN=0, xII_IN=0; //SS in-phase double xEE_OUT=0, xEI_OUT=1, xIE_OUT=0, xII_OUT=0; //SS out //double xEE_OUT=0, xEI_OUT=0.3, xIE_OUT=-0.3, xII_OUT=0; //SS out double wW[2][2]; //within-oscillator synaptic weights wW[0][0]=2; wW[0][1]=2.873; //EE EI wW[1][0]=-2.873; wW[1][1]=-2; //IE II //Get init rate vector int p=400; double lp_rates[p][2]; get_last_period(&p, lp_rates, wW); double R_i_IN[2][2], R_i_OUT[2][2]; R_i_IN[0][0]=lp_rates[0][0]; R_i_IN[0][1]=lp_rates[0][1]; R_i_IN[1][0]=lp_rates[0][0]; R_i_IN[1][1]=lp_rates[0][1]; R_i_OUT[0][0]=lp_rates[0][0]; R_i_OUT[0][1]=lp_rates[0][1]; R_i_OUT[1][0]=lp_rates[p/2][0]; R_i_OUT[1][1]=lp_rates[p/2][1]; /*************INIT IN, SS IN *****************/ pingRateN(n,no,Re,R_i_IN,xEE_IN,xEI_IN,xIE_IN,xII_IN,wW,dt); //Save data char * filename1 = "pingRateN_tester_iIN_ssIN.dat"; asave(n, no, Re, filename1); printf("Data saved as %s\n", filename1); /*************INIT IN, SS OUT *****************/ pingRateN(n,no,Re,R_i_IN,xEE_OUT,xEI_OUT,xIE_OUT,xII_OUT,wW,dt); //Save data char * filename2 = "pingRateN_tester_iIN_ssOUT.dat"; asave(n, no, Re, filename2); printf("Data saved as %s\n", filename2); /*************INIT OUT, SS IN *****************/ pingRateN(n,no,Re,R_i_OUT,xEE_IN,xEI_IN,xIE_IN,xII_IN,wW,dt); //Save data char * filename3 = "pingRateN_tester_iOUT_ssIN.dat"; asave(n, no, Re, filename3); printf("Data saved as %s\n", filename3); /*************INIT OUT, SS OUT *****************/ pingRateN(n,no,Re,R_i_OUT,xEE_OUT,xEI_OUT,xIE_OUT,xII_OUT,wW,dt); //Save data char * filename4 = "pingRateN_tester_iOUT_ssOUT.dat"; asave(n, no, Re, filename4); printf("Data saved as %s\n", filename4); return 0; }