2010-09-11 4 views
21

Siamo un laboratorio di ricerca accademico di medie dimensioni i cui risultati principali sono nuovi metodi statistici per l'analisi di set di dati di grandi dimensioni. Generalmente sviluppiamo in R e MATLAB/Octave.Come devo eseguire uno sviluppo rapido della GUI per i metodi R e Octave (possibilmente con Python)?

Vorremmo espandere la portata del nostro lavoro costruendo semplici interfacce utente in stile wizard per accedere ai nostri metodi, sia app Web come RNAfold o applicazioni autonome per analizzare i dati privati.

Idealmente, vorremmo che le interfacce eseguissero il controllo dei dati, usassero solo FOSS, funzionassero in ambienti Mac e Windows e fossero in grado di generare semplici grafici e grafici che possono essere emessi come figure adatte alla pubblicazione. Inoltre, ci piace Python perché è una lingua popolare in laboratorio e nella nostra comunità di ricerca.

Tuttavia, vogliamo essere in grado di sviluppare e rilasciare rapidamente ed economicamente. Siamo fortunati ad essere in grado di finanziare uno sviluppatore in laboratorio e lui/lei deve supportare più progetti.

Ci sono molti gruppi con gli stessi bisogni e le stesse limitazioni di noi, quindi sarebbe utile essere in grado di sviluppare una strategia coerente a lungo termine per questo tipo di sfida.

Edit ho chiesto per i commenti su quattro possibili approcci, riportato qui sotto con sintesi dei commenti:

  1. Chiamando la R e metodi di ottava da Python.
    Risposte:
    • R integrazione/Python
    • Utilizzo di un client Python per chiamare i n su un server Octave (da ChrisC)
  2. Reimplementare i nostri metodi in Python. In generale, questo non è facile perché i nostri metodi si basano su altri metodi implementati anche in R e Octave. Risposte:
    • Non c'era alcun commento su questo approccio, probabilmente è una cattiva idea.
  3. Utilizzo di un diverso framework per la creazione di interfacce utente.
    Risposte:
    • Come creare GUI e applicazioni Web direttamente in R? (Da hadley, vedere risposta per arbitri di utensili)
  4. Altre idee che non abbiamo preso in considerazione, per esempio, l'integrazione con i sistemi di gestione del flusso di lavoro come Taverna.
    Risposte:

La mia risposta preferita

sto prima di andare a esaminare l'approccio suggerito dal Spacedman: utilizzando QtDesigner per creare l'interfaccia utente per PyQt4 e chiamando R con RPy. Riceviamo molti studenti senza un background di programmazione che vogliono fare volontariato in laboratorio e QtDesigner sembra qualcosa che potremmo addestrarli a usare in modo efficace.

Vorrei sviluppare le GUI direttamente in R come raccomandato da hadley ma RQt, che presumo di dover utilizzare QtDesigner, non sembra essere in fase di sviluppo attivo (l'ultimo aggiornamento era l'estate del 2009).

Inoltre, sembra che potremmo dover iniziare ad implementare i nostri metodi esclusivamente in R, e tradurre da MATLAB/Octave a R. Nel mio campo, questa non è probabilmente una cattiva idea in ogni caso.

Appendice:

  1. librerie Python per semplificare la costruzione dell'interfaccia utente:
  2. Altri progetti che integrano Pyt hon, R, e Octave:
  3. GUI per rendere GUI:
+0

Ciao gente, grazie per tutte le risposte. Continuate a farli venire e continuerò a compilarli nella domanda. Se raggiungiamo una sorta di massa critica, farò una breve valutazione dei vari approcci raccomandati. – qdjm

+0

Il vantaggio di utilizzare un sistema di flusso di lavoro è che traccerà molti più metadati di quelli che ricorderai di fare nei tuoi script. Questo è il genere di cose che in un secondo momento tende ad avere importanza. –

risposta

8

mi piacerebbe andare con Python e PyQt4 per l'interfaccia utente, e utilizzare RPY di interfacciarsi a R.

C'è il QtDesigner per la progettazione dell'interfaccia e è possibile generare python da questo. QtAssistant ti offre un set completo di documentazione con collegamenti ipertestuali per Qt che è il migliore che abbia mai usato.

Ne vale la pena!

5

Questo è un ordine alto - multi-piattaforma, multi-backend (R e Ocatve), come bene e economico, veloce e facile da usare!

Dalla cima della mia testa, guarda questi

  • Sage: hanno quello che chiamano notebook che sono pagine web interattive e ha mostrato un bel demo utente! 2010; Penso che Octave sia coperto anche

  • Shogun: che si integra anche con Python, R e Octave e può avere alcuni strumenti da sfruttare.

+0

Grazie per i commenti. Potrebbe anche mirare in alto. Guarderò più da vicino Sage. – qdjm

2

Non ho provato il collegamento diretto di ottava con Python oltre la creazione di applicazioni di ottava come un server e avere una chiamata del client Python in, ma ho avuto un po 'di fortuna integrazione di R con Python di cortesia RPy. In alcune delle nostre applicazioni costruiamo per es. a wxPython + matplotlib Python frontend e chiama gli script R direttamente tramite RPy.

+0

Sia RPy che wxPython sono buoni consigli, grazie! – qdjm

2

Per R e l'integrazione Python si potrebbe anche voler dare un'occhiata a

+0

Grazie per i contatti! – qdjm

9

Perché non continuare a sviluppare direttamente in R? Esistono numerosi pacchetti che consentono di sviluppare GUI (gWidgets RGtk, tcl/tk, RQt, Rwxwidgets, rjava) o web applications.

+0

Questo è un buon consiglio, non pensavo che fosse possibile. Com'è la tua esperienza con questi strumenti? – qdjm

1

Si potrebbe provare a guardare RedR, che consente di avvolgere pacchetti R in una GUI Python.

4

Ho cercato qualcosa di simile: una semplice GUI rapida in R. Sembra che ci sia una nuova alternativa dai ragazzi di RStudio.

Shiny dovrebbe essere sufficiente per le piccole interfacce Web senza molta codifica. Sembra un'opzione valida se hai bisogno di un semplice stile di input/output dell'interfaccia utente.

Problemi correlati