-
ERFINDUNGSGEBIET
-
Die vorliegende Erfindung betrifft Datenverarbeitungstechniken für Genomdaten, etwa Daten, die Nukleotidsequenzen beschreiben.
-
HINTERGRUND
-
Die Ansätze, die in diesem Abschnitt beschrieben werden, sind Ansätze, die verfolgt werden könnten, aber nicht notwendigerweise Ansätze, die schon früher erdacht oder verfolgt wurden. Daher sollte, außer es ist anderweitig angezeigt, nicht angenommen werden, dass irgendwelche der Ansätze, die in diesem Abschnitt beschrieben sind, nur aufgrund der Aufnahme in diesen Abschnitt den Stand der Technik wiedergeben.
-
Es existieren eine breite Vielfalt von Genomdaten, einschließlich, ohne Einschränkung, Datenstrukturen wie DNS-Sequenzen und Proteinsequenzen, Annotationen zu diesen Strukturen und Veröffentlichungen. Genomdaten können von einer breiten Vielfalt von Quellen erhalten werden. Sequenzdaten sind beispielsweise eine Art von Genomdaten. Übliche Quellen von Sequenzdaten umfassen netzbasierte Datenbanken, etwa GenBank, die von dem United States National Institute of Health bereitgestellt wird, das European Nucleotide Archive (”ENA”) und die Protein Data Bank, betrieben vom Research Collaboratory for Structural Bioinformatics. Diese Quellen erlauben es dem Nutzer, auf Sequenzdaten in einer Vielzahl von Formaten zuzugreifen, etwa Plain-Text-Dateien oder Dateien im FASTA-Format. Im Allgemeinen umfassen die Sequenzdaten einen Header mit einem Sequenzbezeichner und anderen Metadaten und einen Körper, der eine Sequenz umfasst. Auf die Sequenzdaten kann in einer Vielzahl von Weisen zugegriffen werden, einschließlich auf Seiten in einer Webseite, Dateien, die über HTTP- und/oder FTP-Protokolle heruntergeladen werden können, oder mittels einer REST-basierten Programmierschnittstelle.
-
Eine andere Art von Genomdaten besteht aus Annotationen. Annotationen können beispielsweise Forschungsergebnisse umfassen, die sich auf spezielle Stellen einer Sequenz beziehen, etwa eine Beobachtung, dass eine Stelle eine Bindungsstelle für ein bestimmtes Protein oder eine Variante einer bestimmten Krankheit ist. Der UC Santa Cruz (UCSC) Genome Browser ist eine beliebte netzbasierte Schnittstelle, mit der man auf verschiedene Quellen von Annotationsdaten zugreifen kann. Jeder Sequenzbezeichner kann mit einem oder mehreren Annotationseinträgen verknüpft sein und jeder Eintrag kann mit einer oder mehreren speziellen Stellen in einer Sequenz verknüpft sein.
-
Es gibt auch eine breite Vielfalt von Werkzeugen zum Verarbeiten von Genomdaten. Eine häufige Klasse von Werkzeugen aliniert beispielsweise Sequenzen und vergleicht diese Sequenzen. Manche dieser Werkzeuge sind in „Computer Graphical User Interface Supporting Aligning Genomic Sequences” mit der Attorney Docket Number 60152-0017 beschrieben, eingereicht am selben Tag wie diese Anmeldung, deren Inhalt hier durch Bezugnahme für alle Zwecke so einbezogen ist, als wäre sie in ihrer Gesamtheit angegeben. Ein weiteres Beispiel-Werkzeug ist BLAST, ein netzbasiertes Werkzeug zum Identifizieren von Ähnlichkeiten zwischen einem unbekannten Protein und bekannten Proteinen. Eine Anzahl von Beispielalgorithmen zur Verarbeitung von Genomdaten sind in „Biological Sequence Analysis: Probabilistic Models of Proteins and Nucleic Acids” von Richard Durbin, Cambridge University Press 1998, beschrieben, dessen gesamter Inhalt hier durch Bezugnahme für alle Zwecke so einbezogen ist, als wäre es in seiner Gesamtheit angegeben. Diese und andere Werkzeuge identifizieren im Allgemeinen zu verarbeitende Genomdaten gestützt auf Eingaben, etwa Eingaben, die Sequenzen angeben, oder Eingaben, gestützt auf die Sequenzen gewonnen oder abgeleitet werden können. Die Werkzeuge führen dann einen oder mehrere Verarbeitungsalgorithmen mit Bezug auf die Genomdaten aus, etwa statistische Analysen, Vergleiche, Suchvorgänge, Filteroperationen, Bearbeitungen usw. Die Werkzeuge erstellen dann einen Bericht aller Ergebnisse der Verarbeitung.
-
Die Analyse von Genomdaten ist zu einer zunehmend wichtigeren Aufgabe geworden. Leider sind solche Analysen oft komplex, da sie auf großen Mengen von getrennten Datenquellen und nicht mit einander verbundenen Werkzeugen beruhen. Ein Forscher kann beispielsweise daran interessiert sein, zu ermitteln, wie Abweichungen in einer bestimmten Gensequenz eine bestimmte Krankheit beeinflussen. Der Forscher kann die Analyse beginnen, indem er eine Sequenz aus einer Datenbank abruft. Der Forscher kann dann die Sequenz mittels eines ersten Werkzeugs als ein Protein kodieren, Varianten des Proteins mittels eines zweiten Werkzeugs berechnen und eine Ähnlichkeitssuche im großen Stil über noch andere Datenbanken ausführen, um Arten zu finden, die ähnliche Proteine haben. Der Forscher kann dann auf noch andere Werkzeuge und Datenbanken zugreifen, um nach Sequenzen in diesen Arten zu suchen, die für das Protein kodieren, und schließlich einen Algorithmus zur Motivsuche ausführen, um andere Proteine zu identifizieren, die an das Protein binden. Als Konsequenz der Komplexität dieser Aufgabe kann die Arbeit des Forschers unorganisiert und schwierig zu reproduzieren oder auf andere Sequenzen auszudehnen sein.
-
Während diese Anmeldung sich oft auf Genomdaten bezieht, sind viele der Techniken, die hier beschrieben sind, in Wirklichkeit auf jede Art von Daten anwendbar. Andere Verwendungen der hier beschriebenen Techniken können, ohne Einschränkung, Datenanalyse im Gebiet der Verarbeitung von natürlicher Sprache, der Sozialwissenschaften, finanzieller Daten, der historischen und komparativen Linguistik und der Marktforschung umfassen.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
In den Figuren:
-
1 zeigt ein beispielhaftes Flussdiagramm zur Verwendung eines Arbeitsablaufs;
-
2 ist ein Blockdiagramm eines beispielhaften Systems, in dem die hier beschriebenen Techniken angewendet werden können;
-
3 ist ein Screenshot, der eine beispielhafte Schnittstelle zeigt, um die hier beschriebenen Techniken anzuwenden;
-
4 ist ein Screenshot, der die Darstellung von Datenknoten in der beispielhaften Schnittstelle zeigt;
-
5 ist ein Screenshot, der die Bedienelemente zum Importieren von Daten in die beispielhafte Schnittstelle zeigt;
-
6 ist ein Screenshot, der das Hinzufügen eines Datenknotens zu dem Arbeitsbereich der beispielhaften Schnittstelle zeigt;
-
7 ist ein Screenshot, der das Hinzufügen eines Vorgangsknotens zu dem Arbeitsbereich der beispielhaften Schnittstelle zeigt;
-
8 ist ein Screenshot, der Bedienelemente zum Verbinden von Knoten in dem Arbeitsbereich der beispielhaften Schnittstelle zeigt;
-
9 ist ein Screenshot, der verbundene Knoten in dem Arbeitsbereich der beispielhaften Schnittstelle zeigt;
-
10 ist ein Screenshot, der das Ausführen eines Teils des Arbeitsablaufs mittels der beispielhaften Schnittstelle zeigt;
-
11 ist ein Screenshot, der das Interagieren mit einer Ausgabe von einem Vorgangsknoten in dem Arbeitsablauf mittels der beispielhaften Schnittstelle zeigt;
-
12 ist ein Screenshot, der den Arbeitsbereich mit verschiedenen Arten von Knoten von dem Arbeitsablauf zeigt;
-
13 ist ein Screenshot, der eine automatisierte Kette von Knoten zum Abrufen von Veröffentlichungen aus einer Datenbank mittels der Benutzeroberfläche zeigt;
-
14 ist ein Paar von Screenshots, die das Aufteilen von Daten von einem Datenknoten zeigen, um einen neuen Datenknoten in dem Arbeitsbereich der Benutzeroberfläche zu erzeugen; und
-
15 ist ein Blockdiagramm, das ein Computersystem zeigt, auf dem eine Ausführungsform der Erfindung implementiert werden kann.
-
DETAILLIERTE BESCHREIBUNG
-
In der folgenden Beschreibung sind, zum Zweck der Erklärung, viele spezifische Details angegeben, um ein vollständiges Verständnis der vorliegenden Erfindung zu ermöglichen. Es wird jedoch deutlich, dass die vorliegende Erfindung ohne diese spezifischen Details ausgeführt werden kann. In anderen Fällen sind bekannte Strukturen und Vorrichtungen in Form eines Blockdiagramms gezeigt, um zu vermeiden, die vorliegende Erfindung unnötig zu verdunkeln.
-
1.0. ALLGEMEINER ÜBERBLICK
-
Es sind Verfahren und Computervorrichtungen offenbart, um Genomdaten in zumindest teilweise automatisierten Arbeitsabläufen von Modulen zu verarbeiten. Gemäß einer Ausführungsform umfasst ein Verfahren Folgendes: Empfangen einer ersten Eingabe, die eine Quelle angibt, aus der eine oder mehrere Nukleotidsequenzen erhalten werden. Das Verfahren umfasst weiter das Empfangen einer oder mehrerer zweiter Eingaben, die eine oder mehrere Module zum Verarbeiten der Daten auswählen, einschließlich zumindest eines Moduls zum Verarbeiten der einen oder mehreren Nukleotidsequenzen. Das Verfahren umfasst weiter das Darstellen von graphischen Komponenten, die die Quelle und das eine oder die mehreren Module als Knoten in einem Arbeitsbereich darstellen, in einer graphischen Benutzeroberfläche. Das Verfahren umfasst weiter das Empfangen einer oder mehrerer dritter Eingaben über die graphische Benutzeroberfläche, die die Quelle und das eine oder die mehreren Module als ein Arbeitsablauf anordnen, der eine Abfolge von Knoten umfasst. Die Abfolge zeigt an, dass für jedes bestimmte Modul der ausgewählten Module die Ausgabe von entweder einer der Quellen oder einem anderen bestimmten Modul in das bestimmte Modul eingegeben werden soll. Das Verfahren umfasst weiter das Erzeugen einer Ausgabe für den Arbeitsablauf, gestützt auf die eine oder mehreren Nukleotidsequenzen, indem jedes Modul des einen oder der mehreren Module in einer Reihenfolge verarbeitet wird, die durch die Abfolge angeben ist. Das Verfahren wird durch eine oder mehrere Computervorrichtungen verarbeitet.
-
In einer Ausführungsform erzeugt jedes Modul des einen oder der mehreren Module eine Ausgabe, die einer Ontologie entspricht, die Datenstrukturen definiert, die Genomdaten repräsentieren. Die Datenstrukturen umfassen zumindest Sequenzen, Proteinobjekte, Alignment-Objekte, Annotationen und Veröffentlichungen.
-
In einer Ausführungsform umfasst das Verfahren weiter das Erzeugen eines Datenknotens aus der Ausgabe. Der Datenknoten umfasst Elemente von Genomdaten. Der Datenknoten ist mit dem letzten Modul in der Abfolge verbunden. Das Verfahren umfasst weiter das Empfangen einer vierten Eingabe, die ein Element der Genomdaten zu dem Datenknoten hinzufügt oder von ihm entfernt, über die graphische Benutzeroberfläche. Das Verfahren umfasst weiter das Empfangen einer fünften Eingabe, die ein bestimmtes Modul auswählt, um den Datenknoten zu verarbeiten, über die graphische Benutzeroberfläche. Das Verfahren umfasst weiter das Hinzufügen des bestimmten Moduls zu dem Ende der Abfolge. Das Verfahren umfasst weiter das Erzeugen einer zweiten Ausgabe für den Arbeitsablauf, gestützt auf die eine oder mehreren Nukleotidsequenzen, indem jedes Modul in der Abfolge, einschließlich des bestimmten Moduls, in der Reihenfolge verarbeitet wird, die durch die Abfolge angezeigt ist.
-
In einer Ausführungsform umfassen das eine oder die mehreren Module eine Mehrzahl von Modulen, wobei das Erzeugen der Ausgabe für den Arbeitsablauf das Verwenden der Ausgabe von der Quelle als Eingabe für das erste Modul und das Verwenden der Ausgabe von dem ersten Modul als Eingabe für ein zweites Modul umfasst. In einer Ausführungsform ist das mindestens eine Modul so konfiguriert, dass es eine oder mehrere Nukleotidsequenzen verarbeitet, indem es mit mindestens einem externen Webserver und/oder einem externen Datenbankserver kommuniziert.
-
In einer Ausführungsform umfasst das Verfahren weiter das Speichern von Arbeitsablauf-Daten, die die Abfolge beschreiben. Das Verfahren umfasst weiter das Veranlassen, dass die Arbeitsablauf-Daten mit mehreren Nutzern geteilt werden. Das Verfahren umfasst weiter das nachfolgende Wiederherstellen der Abfolge in einer zweiten graphischen Benutzeroberfläche, gestützt auf die Arbeitsablauf-Daten. Das Verfahren umfasst weiter das Empfangen einer vierten Eingabe über die zweite graphische Benutzeroberfläche, die die Abfolge so modifiziert, dass sie ein oder mehrere zusätzliche Module aufweist. Das Verfahren umfasst weiter das Erzeugen einer zweiten Ausgabe, gestützt auf die eine oder mehreren Nukleotidsequenzen, indem jedes Modul in der Abfolge, einschließlich des einen oder der mehreren zusätzlichen Module, in einer Reihenfolge verarbeitet wird, die durch die Abfolge angegeben ist.
-
In einer Ausführungsform umfassen das eine oder die mehreren Module ein erstes Modul, das eine erste Ausgabe erzeugt, gestützt auf die Quelle, und ein zweites Modul, das die erste Ausgabe mit einer zweiten Ausgabe von einem dritten Modul mischt, das nicht in der Abfolge ist, wobei die Quelle, das erste Modul, das zweite Modul und das dritte Modul alle Knoten in einem Arbeitsablauf sind. In einer Ausführungsform umfasst das Verfahren weiter das Darstellen von Bedienelementen zum Auswählen des einen oder der mehreren Module, wobei die Bedienelemente zumindest Folgendes umfassen: ein erstes Bedienelement zum Auswählen eines ersten Moduls, das nach Veröffentlichungen in einer Online-Datenbank sucht, gestützt auf Genomdaten, ein zweites Bedienelement zum Auswähle eines zweiten Moduls, das ein Sequenz-Alignment für mehrere Sequenzen ausgibt, und ein drittes Bedienelement zum Auswählen eines dritten Moduls, das Proteinfamilien für eine Nukleotidsequenz identifiziert.
-
In einer Ausführungsform umfasst das Empfangen der einen oder mehreren dritten Eingaben das Darstellen von visuellem Feedback, während ein erster Knoten ausgewählt wurde, das anzeigt, dass Genomdaten-Ausgaben von dem ersten Knoten als Eingabe mit einem zweiten Knoten verknüpft werden können. In einer Ausführungsform umfassen das eine oder die mehreren Module mindestens zwei Module, und das Verarbeiten jedes der Module des einen oder der mehreren Module in einer Reihenfolge, die durch die Abfolge angezeigt ist, umfasst das automatische Verarbeiten jedes der Module ohne menschlichen Eingriff zwischen dem Start der Verarbeitung des ersten Moduls in der Abfolge und dem Erzeugen der Ausgabe, indem die Verarbeitung des letzten Moduls in der Abfolge abgeschlossen wird.
-
Unter anderen Aspekten umfasst die Erfindung eine Computervorrichtung und ein computerlesbares Medium, das konfiguriert ist, um die vorangegangenen Schritte auszuführen.
-
2.0. FUNKTIONALER ÜBERBLICK
-
In einer Ausführungsform wird die Verarbeitung und Untersuchung von Genomdaten durch die Verwendung einer Konstruktion, die hier als „Arbeitsablauf” bezeichnet wird, stark vereinfacht. Anstatt jeden Schritt einer Forschungs- oder Datenverarbeitungsaufgabe manuell auszuführen oder anstatt ein proprietäres Skript zu schreiben, um diese Schritte auszuführen, kann ein Forscher die hier beschriebenen Techniken verwenden, um einen wiederverwendbaren und leicht modifizierbaren Arbeitsablauf zu erzeugen, der diese getrennten Schritte in einer verbundenen Konstruktion verkettet und manche oder alle der Schritte einer Aufgabe in einer automatisierten Art und Weise ausführt, mit minimalem oder ohne Eingreifen des Nutzers.
-
2.1. ARBEITSABLÄUFE
-
Wie es hier verwendet wird, ist ein Arbeitsablauf eine Menge von verbundenen Knoten, die Mengen von Daten repräsentieren, und Vorgängen, die auf diesen Mengen von Daten ausgeführt werden sollen. Im Allgemeinen bilden die verbundenen Knoten eine oder mehrere geordnete Abfolgen von Knoten. Bestimmte Knoten in einer Abfolge repräsentieren einen Vorgang, während andere Knoten Daten repräsentieren, die von einem Vorgang ausgegeben wurden, der von einem vorangegangen Knoten in der Abfolge repräsentiert wird, und/oder Eingaben für einen Vorgang, der von einem nachfolgenden Knoten in der Abfolge repräsentiert wird. Der erste Knoten eines Arbeitsablaufs kann beispielsweise einen Data-Mining-Vorgang repräsentieren, der Daten aus einer Quelle abruft, der zweite Knoten des Arbeitsablaufs kann die Daten repräsentieren, die von dieser Quelle ausgegeben wurden, der dritte Knoten des Arbeitsablaufs kann einen Vorgang repräsentieren, der auf diesen Daten ausgeführt werden soll, der vierte Knoten kann eine Datenmenge repräsentieren, die sich aus diesem Vorgang ergibt usw.
-
Ein Arbeitsablauf kann eine beliebige Anzahl von Knoten umfassen. Die Nützlichkeit des Arbeitsablauf-Modells wird jedoch im Allgemeinen am besten in einer Abfolge von Knoten realisiert, die zwei oder mehr Vorgangsknoten umfasst. Des Weiteren kann ein Arbeitsablauf Verzweigungen aufweisen. Manche dieser Verzweigungen können zusammengeführt werden. Mehrere Vorgänge können beispielsweise eine einzige Datenmenge erzeugen, oder mehrere Datenmengen können in einen einzigen Vorgang eingegeben werden. Andere Verzweigungen spalten sich auf. eine Datenmenge kann beispielsweise in zwei getrennte Vorgänge eingegeben werden, oder ein Vorgang kann mehrere ähnliche oder unähnliche Datenmengen erzeugen.
-
Eine beispielhafte Implementierung eines Arbeitsablaufs ist in „Document-Based Workflows”, U.S.-Patentanmeldung 2010/0070464, veröffentlicht am 18. März 2010, beschrieben. „Document-Based Workflows” beschreibt Arbeitsabläufe, in denen ein einziger Knotentyp, der als Dokument bezeichnet wird, als Vorgangsknoten und/oder als Datenknoten wirken kann, mit den Bedeutungen, die hier beschrieben sind. Daher sind viele der Techniken, die dort beschrieben sind, auf die hier beschriebenen Arbeitsabläufe anwendbar. Der Inhalt von „Document-Based Workflows” ist hiermit durch Bezugnahme für alle Zwecke so aufgenommen, als wäre er in seiner Gesamtheit hier angegeben.
-
DATENKNOTEN
-
Arbeitsablauf-Knoten, die Daten repräsentieren, werden hier als Datenknoten bezeichnet. Datenknoten können Datenmengen umfassen, die von einer Datenquelle importiert wurden, etwa eine Sequenzdatenbank oder eine Bibliothek von Veröffentlichungen, Suchergebnisse, manuell eingegebene Daten von einem Nutzer und/oder Ausgabedaten von einem Vorgangsknoten. Die Datenmengen, die von einem Datenknoten repräsentiert werden, sind ein oder mehrere Elemente ähnlichen Typs. Eine Datenmenge kann beispielsweise ein Array von Elementen sein. Elemente können jede Art von Datenstruktur umfassen. Im Kontext von Genomdaten umfassen Beispiel-Elemente beispielsweise, ohne Einschränkung, Sequenzen, Veröffentlichungen, Annotationen, Gendatenstrukturen, Proteindatenstrukturen, Motivdatenstrukturen, Krankheitsdatenstrukturen, Patientendatenstrukturen usw. Ein Datenknoten kann die Datenmenge, die er repräsentiert, direkt umfassen oder ein Datenknoten kann die Datenmenge indirekt umfassen, indem er auf den oder die Ort(e) verweist, an dem die Datenmenge sich befindet. Ein Datenknoten kann weiter Metadaten umfassen, die die Datenmenge beschreiben, etwa einen Datentyp, dem die Elemente in der Datenmenge entsprechen, Inhaltsangaben-Daten, Forschungsnotizen und/oder ein Verweis auf die ursprüngliche Quelle der Datenmenge, etwa einen oder mehrere Datensätze und/oder Vorgangsknoten.
-
In einer Ausführungsform kann eine Arbeitsablauf-Schnittstelle es einem Nutzer ermöglichen, mit jedem Datenknoten in einem Arbeitsablauf zum Zweck der Betrachtung zu interagieren. Daher kann ein Nutzer Datenknoten in bestimmten Positionen eines Arbeitsablaufs erzeugen, an denen der Nutzer Daten betrachten will, die von dem Arbeitsablauf verarbeitet werden. Die Arbeitsablauf-Schnittstelle kann beispielsweise den Datenknoten als Gruppe von benannten Elementen repräsentieren, wobei ein interaktives Bedienelement zu jedem Element gehört. Ein Nutzer kann das Bedienelement für ein Element auswählen, um auf verschiedene Schnittstellen zum Betrachten von Sequenzen, Metadaten, Analysen und anderen Informationen zuzugreifen, die zu dem ausgewählten Element gehören. Datenknoten können weiter andere Interaktionen erleichtern, wie in anderen Abschnitten beschrieben ist.
-
VORGANGSKNOTEN
-
Vorgangsknoten sind Knoten, die Vorgänge repräsentieren, die auf einer Datenmenge ausgeführt werden sollen. Ein Vorgangsknoten kann jede Art von Vorgang repräsentieren, der von einer Arbeitsablauf-Anwendung unterstützt wird. Beispiele von Vorgängen, die durch Vorgangsknoten repräsentiert werden können und die sich auf Genomdaten beziehen, sind in nachfolgenden Abschnitten beschrieben.
-
In einer Ausführungsform umfasst jeder Vorgangsknoten eine Referenz auf ein spezifisches Modul, das dafür verantwortlich ist, den Vorgang des Knotens auszuführen, und optional einen oder mehrere Konfigurationsparameter für dieses Modul. Ein Modul ist eine wiederverwendbare Ausführungseinheit, die einen Vorgang ausführt. Das Modul kann beispielsweise konkrete Befehle zum Ausführen eines Vorgangs umfassen, gestützt auf eine angegeben Menge von Daten. Oder das Modul kann Befehle umfassen, um die angegeben Menge von Daten an ein externes Werkzeug zu senden, etwa eine externe Laufzeitbibliothek oder einen externen Webserver, und dann ein etwaiges Ergebnis abrufen. In einer Ausführungsform unterstützt eine Arbeitsablauf-Anwendung eine erweiterbare Programmierschnittstelle, wobei Nutzer eine Vielzahl von unterschiedlichen Arten von Modulen definieren können, die jeweils unterschiedliche Vorgänge ausführen.
-
Ein Vorgangsknoten kann Metadaten umfassen, die den Knoten mit einem oder mehreren Eingabeknoten verbinden. Der Begriff Eingabeknoten bezieht sich auf jeden Datenknoten oder anderen Vorgangsknoten, der Daten erzeugt, auf denen ein bestimmter Vorgangsknoten einen Vorgang ausführt. Bestimmte Vorgangsknoten sind nicht notwendigerweise mit irgendeinem Eingabeknoten verbunden. Diese Vorgangsknoten können trotzdem eine implizierte oder vom Nutzer konfigurierbare Datenmenge haben, auf die die Vorgänge ausgeführt werden. Ein Vorgangsknoten kann beispielsweise einen Abfragevorgang auf eine Datenbank ausführen, in welchem Fall die Datenbank eine implizierte Datenmenge bildet, auf die der Abfragevorgang ausgeführt wird. Ein Vorgangsknoten kann auch Metadaten umfassen, die den Knoten mit einem oder mehreren Ausgabeknoten verbinden. Der Begriff Ausgabeknoten bezieht sich auf jeden anderen Knoten, einschließlich sowohl Datenknoten als auch Vorgangsknoten, an den Daten, die durch einen Vorgang erzeugt werden, der an einem bestimmten Knoten ausgeführt wird, gesendet werden. Manche Vorgangsknoten sind nicht notwendigerweise mit irgendwelchen Ausgabeknoten verbunden. Dies kann für Vorgangsknoten der Fall sein, die einen abschließenden Vorgang ausführen, etwa das Speichern von Ergebnissen, oder für Vorgangsknoten, die noch nicht ausgeführt wurden.
-
Der Einfachheit halber werden verschiedene Arbeitsabläufe in Form ihrer Vorgangsknoten beschrieben. Diese Arbeitsabläufe können jedoch auch dazwischen liegende Datenknoten haben, die Daten repräsentieren, mit denen der Nutzer interagieren kann.
-
TYPISIERTE DATEN
-
Ein Hindernis für die Kompatibilität zwischen verschiedenen genomischen Datenwerkzeugen liegt in der breiten Vielfalt von Formaten, die die unterschiedlichen Werkzeuge nutzen, um ihre Ergebnisse zu strukturieren. In einer Ausführungsform vereinfachen Arbeitsabläufe dieses Hindernis, indem sie die Ausgaben von verschiedenen Werkzeugen in definierte Datentypen umwandeln. Arbeitsabläufe können beispielsweise eine Menge von Datentypen nutzen, die durch ein bestimmtes Schema oder eine bestimmte Ontologie definiert sind. Das Schema oder die Ontologie können universelle Strukturen definieren, um gemeinsame Einheiten von Genomdaten zu repräsentieren, etwa Sequenzen, Proteine, Annotationen, Veröffentlichungen usw.
-
Anstatt mit mehrdeutig formatierten Plain-Text-Dateien zu arbeiten, entsprechen die Eingaben und Ausgaben jedes der Arbeitsablauf-Knoten standardisierten, vorhersagbaren Datentypen. Dies liegt daran, dass Vorgangsmodule Eingaben akzeptieren müssen, die einem festgelegten Datentyp entsprechen, und Ausgaben erzeugen müssen, die einem festgelegten Datentyp entsprechen. In einer Ausführungsform umfassen bestimmte Vorgangsmodule Metadaten oder sind mit ihnen verknüpft, die einen oder mehrere Eingabe- oder Ausgabe-Datentypen festlegen, die das Vorgangsmodul handhaben kann. Eine Arbeitsablauf-Anwendung erlaubt es einem Nutzer nur, einen bestimmten Vorgangsknoten mit anderen Vorgangsknoten zu verbinden, deren Vorgangsmodul Eingaben oder Ausgaben handhabt, die diesem einen oder diesen mehreren festgelegten Eingabe- oder Ausgabe-Datentypen entsprechen, oder Datenknoten, die Daten mit diesem einen oder diesen mehreren festgelegten Eingabe- oder Ausgabe-Datentypen umfassen.
-
Um das Problem der Verwendung von typisierten Daten in einem Arbeitsablauf zu vereinfachen, kann eine Arbeitsablauf-Anwendung verschiedene Datenkonvertierungskomponenten vorsehen. Ein Modul kann Ausgaben von einem externen Werkzeug an eine geeignete Konvertierungskomponente zusammen mit Informationen übertragen, die der Konvertierungskomponente dabei helfen, die Daten zu verstehen, etwa den Namen des Werkzeugs, von dem die Daten empfangen wurden. Die Konvertierungskomponente parst die Daten und erzeugt konvertierte Datenstrukturen, die darauf basieren. Ähnlich kann die Arbeitsablauf-Anwendung Konvertierungskomponenten bereitstellen, die die konvertierten Daten in übliche Eingabeformate konvertieren, die von verschiedenen Werkzeugen erwartet werden. Noch andere Module können solche Konvertierungen mittels ihres eigenen angepassten Codes ausführen.
-
2.2. VERFAHRENSFLUSS DES ARBEITSABLAUFS
-
1 zeigt ein beispielhaftes Flussdiagramm 100 zur Verwendung eines Arbeitsablaufs, gemäß einer Ausführungsform. Das Flussdiagramm 100 ist nur ein beispielhaftes Flussdiagramm zur Verwendung eines Arbeitsablaufs. Andere Flussdiagramme können weniger oder zusätzliche Elemente in möglicherweise abweichenden Anordnungen umfassen.
-
Block 110 umfasst das Empfangen einer ersten Eingabe, die eine Quelle angibt, von der eine oder mehrere Nukleotidsequenzen empfangen werden sollen. Die erste Eingabe definiert im Wesentlichen einen Datenknoten eines Arbeitsablaufs. Ein Datenknoten repräsentiert eine Datenmenge, die in diesem Fall eine oder mehrere Nukleotide sind, die von der Quelle empfangen werden. Beispiel-Quellen umfassen, ohne Einschränkung, eine oder mehrere Dateien in einem lokalen Dateisystem, eine Webseite, eine netzbasierte Suche, einen oder mehrere Datensätze, einen existierenden Arbeitsablauf, den Inhalt des Clipboards, eine Bibliothek von früher gespeicherten Sequenzen oder einen Vorgangsknoten. Eine Eingabe, die eine Quelle angibt, kann über jede geeignete Benutzeroberflächen-Technik empfangen werden. Eine beispielhafte Schnittstelle zum Angeben von Quellen ist in anderen Abschnitten beschrieben. Eine Eingabe, die eine Quelle angibt, kann stattdessen über eine Texteingabe empfangen werden, etwa in einer XML-Datei für einen früher gespeicherten Arbeitsablauf, oder über eine Kommandozeile.
-
Der Datenknoten, der durch die erste Eingabe definiert ist, ist nicht notwendigerweise der einzige Datenknoten in dem Arbeitsablauf noch der einzige Datenknoten, der in Block 110 definiert wird. Block 110 kann beispielsweise weiter das Empfangen von einer oder mehreren anderen Eingaben, die eine oder mehrere Quellen für andere Nukleotidsequenzen oder andere Arten von Genomdaten angeben.
-
Block 120 umfasst das Empfangen von einer oder mehreren zweiten Eingaben, die ein oder mehrere Module auswählen, um Daten zu verarbeiten. Die eine oder mehreren zweiten Eingaben können beispielsweise eine oder mehrere Vorgangsmodule auswählen, wie sie hier beschrieben sind. Daher definiert jede zweite Eingabe einen Vorgangsknoten für den Arbeitsablauf. Die eine oder mehreren zweiten Eingaben können weiter einen oder mehrere Konfigurationsparameter für das eine oder die mehreren Module angeben, wenn nötig. Die Vorgangsknoten, die durch die eine oder mehreren zweiten Eingaben definiert werden, sind nicht notwendigerweise alle der Vorgangsknoten in einem Arbeitsablauf und Block 120 kann weiter das Empfangen von einer oder mehreren anderen Eingaben umfassen, die andere Vorgangsknoten definieren.
-
Wie die erste Eingabe kann jede der zweiten Eingaben über jede geeignete Benutzeroberflächen-Technik empfangen werden, einschließlich derer, die in anderen Abschnitten beschrieben sind, oder über Texteingaben. In einer Ausführungsform werden die Module aus einer Menge von vorher definierten Modulen ausgewählt. In einer Ausführungsform können die vorher definierten Module sowohl Module umfassen, die von einem Anbieter einer Arbeitsablauf-Anwendung bereitgestellt werden, als auch vom Nutzer erzeugte Module. In einer Ausführungsform wählt eine zweite Eingabe ein Modul aus, das nicht vorher definiert wurde, sondern stattdessen durch die zweite Eingabe erzeugt wurde. Ein Nutzer kann beispielsweise Code oder andere Befehle für ein nicht wiederverwendbares Modul bereitstellen, während er den Arbeitsablauf definiert.
-
Block 130 umfasst das Darstellen von graphischen Komponenten in einer graphischen Benutzeroberfläche, die die Quelle und die ausgewählten Module repräsentieren. Die Darstellung kann beispielsweise getrennte Icons oder andere graphische Repräsentationen für die Quelle und für jedes der Module umfassen. Die Komplexität der graphischen Komponenten kann von Ausführungsform zu Ausführungsform schwanken. Manche Ausführungsformen können beispielsweise eine Quelle durch ein einfaches Icon darstellen, während andere Ausführungsformen eine Quelle darstellen können, indem sie in der graphischen Komponente, die zu der Quelle gehört, Bezeichner für manche oder alle der Datenelemente auflistet, die zu der Quelle gehören. Beispiele von geeigneten graphischen Komponenten sind hier beschrieben.
-
In einer Ausführungsform kann eine Arbeitsablauf-Anwendung Block 130 ausführen. Die Arbeitsablauf-Anwendung identifiziert die Quelle und das oder die Module, die durch die ersten und zweiten Eingaben angegeben wurden. Die Arbeitsablauf-Anwendung erzeugt dann eine visuelle Darstellung der Quelle und des oder der Module in einem Anwendungsarbeitsbereich. Der Anwendungsarbeitsbereich repräsentiert einen Arbeitsablauf, dem die Quelle und das oder die ausgewählten Module angehören.
-
In einer Ausführungsform geschehen die Blocks 110–130 gleichzeitig. Ein Nutzer kann beispielsweise die erste Eingabe bereitstellen und die Arbeitsablauf-Anwendung kann unmittelbar antworten, indem sie eine graphische Komponente für die Quelle anzeigt. Der Nutzer kann nachfolgend jede der zweiten Eingaben bereitstellen und die Arbeitsablauf-Anwendung erzeugt eine neue graphische Komponente in Antwort auf jede zweite Eingabe.
-
Block 140 umfasst das Empfangen von einer oder mehreren dritten Eingaben, die die Quelle und das eine oder die mehreren Module in einer Abfolge anordnen. Die eine oder mehreren dritten Eingaben können beispielsweise eine vierte Eingabe umfassen, die die Quelle als ersten Knoten in einer Abfolge festlegt, und zusätzliche Eingaben, die das eine oder die mehreren Module in einer Abfolge nach der Quelle verbindet. Ähnlich wie die erste Eingabe kann jede der dritten Eingaben über jede geeignete Benutzeroberflächen-Technik empfangen werden, einschließlich derer, die in anderen Abschnitten beschrieben sind, oder über eine Texteingabe. In einer Ausführungsform werden die eine oder mehreren dritten Eingaben über die graphische Benutzeroberfläche empfangen. Eine dritte Eingabe kann beispielsweise das Ziehen eines Cursors von einer Ausgabe-Verbindungsstelle, die zu einer graphischen Darstellung der Quelle gehört, zu einer Eingabe-Verbindungsstelle, die zu einer graphischen Darstellung eines Moduls gehört, umfassen.
-
Die Abfolge zeigt an, dass für jedes bestimmte Modul der ausgewählten Module Ausgaben von entweder der Quelle oder einem anderen bestimmten Modul in das bestimmte Modul eingegeben werden sollen. Die Abfolge kann in Wirklichkeit mehr Knoten umfassen als nur die Quelle und das eine oder die mehreren Module. Die Quelle und das oder die Module können beispielsweise so angeordnet sein, dass sie einer existierenden Abfolge von Knoten nachfolgen und/oder andere Knoten können so angeordnet sein, dass sie der Quelle und dem oder den Modulen nachfolgen. Darüber hinaus kann der Arbeitsablauf in Wirklichkeit mehrere Abfolgen von Knoten umfassen. Ein Arbeitsablauf kann beispielsweise zwei Abfolgen umfassen, die vollständig von einander getrennt sind, oder der Arbeitsablauf kann eine Abfolge umfassen, die sich in ein anderes Modul in einer anderen Abfolge verzweigt oder von diesem abzweigt.
-
In einer Ausführungsform werden die eine oder mehreren dritten Eingaben über eine Schnittstelle empfangen, die den Typen von Knoten, die verbunden werden können, Bedingungen auferlegt. Wenn irgendeine Eingabe beispielsweise versucht, ein Modul nach einer Quelle oder einem anderen Modul anzuordnen, das einen Datentyp ausgibt, der von dem Modul nicht unterstützt wird, wird die Schnittstelle sich weigern, das Modul in der Art und Weise anzuordnen, die von der Eingabe angezeigt wird.
-
Block 150 umfasst das Aktualisieren der graphischen Benutzeroberfläche, um die Abfolge anzuzeigen, die von der einen oder den mehreren dritten Eingaben angeordnet wurde. Die Quelle und das oder die Module können beispielsweise in der graphischen Benutzeroberfläche in Übereinstimmung mit der Abfolge neu geordnet werden. Oder die Quelle und das oder die Module können mit einander durch Linien oder andere geeignete Verbindungselemente in einer Reihenfolge verbunden werden, die durch die Abfolge angezeigt ist. In einer Ausführungsform aktualisiert, in Antwort auf jede der dritten Eingaben, die graphische Benutzeroberfläche sich, um eine neue Anordnung anzuzeigen, anstatt zu warten, bis alle der einen oder mehreren dritten Eingaben empfangen wurden.
-
In einer Ausführungsform können die Blocks 140 und 150 gleichzeitig mit den Blocks 110–130 ausgeführt werden. Der Nutzer kann beispielsweise eine Quelle und ein erstes Modul zu einem Arbeitsbereich hinzufügen und dann die Quelle mit dem ersten Modul verbinden. Der Nutzer kann dann ein zweites Moduls zu dem Arbeitsbereich hinzufügen und dann das zweite Modul mit dem ursprünglichen Modul verbinden. Die graphische Benutzeroberfläche kann sich fortlaufend aktualisieren, während der Nutzer diese Eingaben bereitstellt.
-
Block 160 umfasst das Verarbeiten jedes Moduls der ausgewählten Module in einer Reihenfolge, die durch die Abfolge angezeigt ist. Das Verarbeiten der Module in einem Arbeitsablauf ist in nachfolgenden Abschnitten beschrieben.
-
Block 170 umfasst das Erzeugen einer Ausgabe, gestützt auf diese Verarbeitung. Da die eine oder mehreren Nukleotidsequenzen als Eingabe für mindestens ein Modul verwendet wurden, basiert die Ausgabe zumindest auf der einen oder den mehreren Nukleotidsequenzen. Natürlich kann die Ausgabe weiter auf anderen Dateneingaben in dem Arbeitsablauf basieren, wenn es so definiert ist. Die Ausgabe wird durch die Verarbeitung des letzten oder vorletzten Moduls in der Abfolge erzeugt. Somit umfasst Block 160 im Grunde Block 170.
-
Block 180 umfasst das optionale Speichern der Ausgabe. Die Ausgabe kann beispielsweise in einer lokalen Datenbank oder einem lokalen Dateisystem gespeichert werden. Oder die Ausgabe kann in eine netzbasierte Datenbank hochgeladen werden. Oder die Ausgabe kann einem anderen Nutzer gesendet werden. Block 180 kann als Teil der Verarbeitung des letzten Moduls in einer Abfolge ausgeführt werden, muss es aber nicht. Der letzte Knoten in einem Arbeitsablauf kann beispielsweise ein Vorgangsknoten sein, der den Speichervorgang ausführt. Oder der letzte Knoten in dem Arbeitsablauf kann ein Datenknoten mit der Ausgabe von Block 170 sein. Im zweiten Fall kann Block 180 außerhalb der Verarbeitung des Arbeitsablaufs ausgeführt werden. Der Nutzer kann beispielsweise die Datenmenge, die durch den letzten Knoten in dem Arbeitsablauf repräsentiert wird, in eine Datenbank manuell importieren. Oder der Nutzer kann die Datenmenge in einen Bericht kopieren und einfügen, der dann in einer Datei gespeichert wird.
-
2.3. VERARBEITEN EINES ARBEITSABLAUFS
-
In einer Ausführungsform umfasst das Verarbeiten eines Arbeitsablaufs das Verarbeiten einer Abfolge von Knoten. Ein erster Vorgangsknoten in der Abfolge von Knoten entspricht einem ersten Modul. Das Verarbeiten des Arbeitsablaufs umfasst das Ausführen des ersten Moduls, gestützt auf eine Dateneingabe von einem Datenknoten, der eine Quelle repräsentiert. Eine Ausgabe wird erzeugt, gestützt auf die Ausführung des ersten Moduls. In einer Ausführungsform umfasst das Verarbeiten weiter die Ausführung eines zweiten Moduls, das durch einen zweiten Vorgangsknoten in der Abfolge repräsentiert wird. Gestützt auf die Ausgabe von dem ersten Modul wird eine zweite Ausgabe erzeugt, gestützt auf die Ausführung des zweiten Moduls. In einer Ausführungsform umfasst das Verarbeiten weiter das schrittweise Ausführen jedes Moduls, das durch einen der nachfolgenden Vorgangsknoten repräsentiert wird, mittels der Ausgabe von einem unmittelbar vorangegangenen Vorgangsknoten als Eingabe, bis alle Vorgangsknoten in der Abfolge verarbeitet wurden.
-
In einer Ausführungsform umfasst das Verarbeiten eines Arbeitsablaufs das „Verarbeiten” eines Datenknotens. Das Verarbeiten eines Datenknotens umfasst das Belegen des Datenknotens mit einer Datenmenge, die von einem vorangegangenen Vorgangsknoten ausgegeben wurde. Das Verarbeiten des Datenknotens kann weiter das Empfangen von interaktiver Bearbeitung der Datenmenge durch den Nutzer umfassen, wie unten beschrieben ist, muss es aber nicht. Die Datenmenge wird als Eingabe an jeden nachfolgenden Vorgangsknoten übertragen.
-
In einer Ausführungsform umfasst das Verarbeiten eines Arbeitsablaufs das Verarbeiten mehrerer Abfolgen von Knoten. Jede gegebene Abfolge oder jeder gegebene Knoten können von Ausgaben von jeder anderen gegebenen Abfolge oder jedem anderen gegebenen Knoten in dem Arbeitsablauf abhängen. Sobald jedoch ein Knoten oder eine Abfolge, von der ein anderer Knoten oder eine andere Abfolge abhängt, verarbeitet wurde, kann der andere Knoten oder die andere Abfolge verarbeitet werden, unabhängig davon, wie der Zeitplan für irgendeinen anderen Knoten oder irgendeine andere Abfolge ist. Mehrere unabhängige Abfolgen können beispielsweise parallel oder zu jedem anderen Zeitpunkt mit Bezug auf einander ausgeführt werden.
-
In einer Ausführungsform umfasst das Ausführen („Verarbeiten”) eines Moduls das Ausführen von Befehlen, die für das Modul definiert sind. Die Befehle werden optional ausgeführt, gestützt auf eine oder mehrere Konfigurationsparameter, die in einer zweiten Eingabe definiert werden. In einer Ausführungsform senden die Befehle eine Anfrage an eine externe Komponente, etwa einen netzbasierten Server oder eine externe Anwendung. Die Anfrage umfasst oder referenziert die Dateneingabe in das Modul während der Verarbeitung, die in Übereinstimmung mit den Befehlen des Moduls neu formatiert worden sein kann, es aber nicht muss. In Antwort darauf empfängt das Modul Daten von der externen Komponente. Das Modul kann optional die zurückgegebenen Daten neu formatieren oder anderweitig verarbeiten, bevor es sie als Ausgabe zurückgibt.
-
AUTOMATISIERTE ARBEITSABLÄUFE
-
In einer Ausführungsform werden manche oder alle der Arbeitsabläufe automatisch verarbeitet, in einer nicht interaktiven Art und Weise. Sobald ein solcher Arbeitsablauf definiert wurde, erfordert das Verarbeiten des Arbeitsablaufs keine weitere Nutzereingabe zwischen dem Zeitpunkt, an dem der erste Knoten verarbeitet wurde, und dem Zeitpunkt, an dem das letzte Modul verarbeitet wurde.
-
INTERAKTIVE ARBEITSABLÄUFE
-
Während manche Arbeitsabläufe, die hier beschrieben sind, so entworfen sind, dass sie Ausgaben ohne menschliches Eingreifen erzeugen, sind andere Arbeitsabläufe so entworfen, dass sie einen Nutzer bei Identifizierungsvorgängen und Ermittlungen unterstützen, anstatt einfach eine Ausgabe zu erzeugen. Für solche Arbeitsabläufe kann, in verschiedenen Stadien des Entwerfens und Verwendens des Arbeitsablaufs, der Nutzer verschiedene Eingaben bereitstellen, um mit dem Datenfluss zu interagieren und/oder ihn zu bearbeiten. Ein Nutzer kann beispielsweise einen Teil des Arbeitsablaufs ausführen. Gestützt auf Ausgaben von der Ausführung dieses Teils kann der Nutzer entscheiden, andere Teile des Arbeitsablaufs auszuführen, und/oder den Arbeitsablauf so neu zu definieren, dass er zusätzliche Knoten oder Abfolgen von Knoten umfasst.
-
In einer Ausführungsform kann ein Nutzer die Daten innerhalb jedes Datenknotens bearbeiten. Daher kann ein Datenknoten eine Position in dem Arbeitsablauf repräsentieren, an der der Nutzer eine informierte Entscheidung mit Bezug darauf treffen kann, wie der Arbeitsablauf fortfahren soll. Im Gegensatz dazu benötigt der Arbeitsablauf für Datenverarbeitung, in die der Nutzer nicht eingreifen will, keinen Datenknoten. Somit können mehrere Vorgangsknoten ohne dazwischen geschaltete Datenknoten auf einander folgen, wodurch angezeigt wird, dass die Verarbeitung der Daten an diesen Positionen völlig automatisiert geschieht. Da Datenknoten jedoch auch dem Zweck der Beobachtung dienen können, erfordert das Vorhandensein von Datenknoten es nicht, dass der Nutzer die Daten in dem Datenknoten bearbeiten muss.
-
Ein Nutzer kann beispielsweise einen Datenknoten bearbeiten, indem er Elemente hinzufügt oder entfernt, wodurch es dem Nutzer ermöglicht wird, die Datenmenge für alle nachfolgenden Arbeitsablauf-Vorgänge zu filtern, für die der Datenknoten Eingaben bereitstellt. Der Nutzer kann einen ersten Teil eines Arbeitsablaufs „ausführen”, um den Datenknoten zu erzeugen. Der Nutzer kann dann den Datenknoten bearbeiten, bevor er mit dem zweiten Teil des Arbeitsablaufs fortfährt oder ihn sogar erst erzeugt. Ähnlich kann der Nutzer neue Datenknoten erzeugen, indem er Elemente von einem anderen Datenknoten überträgt oder kopiert. Diese neuen Datenknoten können dann mit Vorgangsknoten in dem Arbeitsablauf verbunden werden.
-
2.4. WIEDERVERWENDUNG VON ARBEITSABLÄUFEN
-
In einer Ausführungsform kann der Nutzer einen Arbeitsablauf für eine nachfolgende Wiederverwendung speichern. Eine Arbeitsablauf-Datenstruktur, etwa eine XML-Datei oder ein anderes Datenobjekt, kann beispielsweise einen Arbeitsablauf beschreiben. Ein Nutzer kann die Arbeitsablauf-Datenstruktur in einem Dateisystem oder einer Datenbank speichern. Der Nutzer kann nachfolgend auf die Arbeitsablauf-Datenstruktur zugreifen, um den Arbeitsablauf erneut auszuführen. Der Nutzer kann beispielsweise die Arbeitsablauf-Datenstruktur in eine Arbeitsablauf-Anwendung laden. Die Arbeitsablauf-Anwendung kann graphische Darstellungen des Arbeitsablaufs anzeigen, der durch die Arbeitsablauf-Datenstruktur beschrieben wird. Der Nutzer kann dann den Arbeitsablauf so ausführen, wie er zum Zeitpunkt erstellt wurde, als der Arbeitsablauf gespeichert wurde, oder der Nutzer kann den Arbeitsablauf modifizieren, um möglicherweise unterschiedliche Datenquellen auf unterschiedliche Weise zu verarbeiten.
-
In einer Ausführungsform können bestimmte gespeicherte Arbeitsabläufe als Vorlagen verwendet werden, aus denen der Nutzer schnell neue Arbeitsabläufe erstellen kann. In einer Ausführungsform kann ein Arbeitsablauf mit anderen Nutzern geteilt werden. Ein Nutzer kann beispielsweise einen Arbeitsablauf an einen anderen Nutzer per Email versenden oder auf den Arbeitsablauf verlinken. Wenn der andere Nutzer Zugriff auf dieselben Datenquellen und dieselben Module hat – beispielsweise mittels eines zentralen Ressourcenservers – kann der andere Nutzer den Arbeitsablauf ausführen und/oder ändern. Wenn der andere Nutzer keinen Zugriff auf dieselben Datenquellen und dieselben Module hat, können verschiedene Techniken zur Auffindung von Ersatzquellen und -modulen angewendet werden. Oder ein geteilter Arbeitsablauf kann, um Probleme mit Ressourcen-Abhängigkeiten zu vermeiden, Module und Datenquellen einbetten, auf die ein anderer Nutzer wahrscheinlich keinen Zugriff hat.
-
In einer Ausführungsform kann der Nutzer einen gespeicherten, nicht interaktiven Arbeitsablauf so konfigurieren, dass er in Antwort auf Trigger oder periodisch ausgeführt wird. Eine Datenquelle kann beispielsweise periodisch oder in Antwort auf bestimmte Ereignisse geändert werden. Ein Nutzer kann einen automatisierten Arbeitsablauf erzeugen und speichern, um beispielsweise aktualisierte Berichtdaten zu erzeugen, sobald die Datenquelle geändert wurde, oder um Daten in eine Datenbank zu reimportieren, gestützt auf die Änderungen. In einer Ausführungsform kann ein Prozess die Ausgabe eines automatisierten Arbeitsablaufs überwachen und einem Nutzer eine Aktualisierungsnachricht senden, sobald die Ausgabe geändert wird. Ein Nutzer kann beispielsweise einen Arbeitsablauf so konfigurieren, dass er jeden Morgen ausgeführt wird. Der Arbeitsablauf kann üblicherweise die gleichen Ergebnisse liefern. Der Nutzer kann anfordern, eine automatisierte Email zu empfangen, sobald sich die Ausgabe des Arbeitsablaufs ändert. Der Nutzer kann dann die neuen Daten untersuchen.
-
3.0. STRUKTURELLER ÜBERBLICK
-
2 ist ein Blockdiagramm eines Beispiel-Systems 200, in dem die Techniken, die hier beschrieben sind, angewendet werden können, gemäß einer Ausführungsform. Die verschiedenen Komponenten des Systems 200 können beispielsweise das Flussdiagramm 100 implementieren, wie es oben beschrieben ist.
-
Das System 200 umfasst ein Arbeitsablauf-System 210. Das Arbeitsablauf-System 210 umfasst eine oder mehrere Rechenvorrichtungen, die eine Reihe von Komponenten 220–260 implementieren, die verschiedene Funktionalitäten mit Bezug auf Arbeitsabläufe bereitstellen. Das Arbeitsablauf-System 210 kann beispielsweise eine Client-Rechenvorrichtung und eine Server-Rechenvorrichtung umfassen. Als weiteres Beispiel kann das Arbeitsablauf-System 210 eine einzelne Rechenvorrichtung umfassen. Die Komponenten 220–260 können jede Kombination aus Hardware an einer oder mehreren Rechenvorrichtungen und Software sein, die von dieser Hardware ausgeführt wird. In einer Ausführungsform werden die Komponenten 220–260 hier gemeinsam als „Arbeitsablauf-Anwendung” bezeichnet.
-
Eine Arbeitsablauf-Erzeugungskomponente 230 stellt eine Arbeitsablauf-Schnittstellenkomponente 240 einem Nutzer 205 bereit. Die Arbeitsablauf-Erzeugungskomponente 230 erzeugt Arbeitsabläufe in Antwort auf verschiedene Eingaben des Nutzers in die Arbeitsablauf-Schnittstellenkomponente 240. Die verschiedenen Eingaben des Nutzers können beispielsweise die Arbeitsablauf-Erzeugungskomponente 230 anweisen, Datenknoten und Vorgangsknoten zu einem Arbeitsablauf hinzuzufügen, diese Knoten zu bearbeiten und Verbindungen zwischen bestimmten Knoten herzustellen. Die Arbeitsablauf-Erzeugungskomponente 230 aktualisiert die Arbeitsablauf-Schnittstellenkomponente 240, um Darstellungen der Knoten und/oder der Verbindungen in einem Arbeitsablauf anzuzeigen, während die Eingaben des Nutzers empfangen werden.
-
Die Arbeitsablauf-Erzeugungskomponente 230 erzeugt Vorgangsknoten, die Vorgangsmodule 250 repräsentieren, um Arbeitsablauf-Daten zu verarbeiten. Vorgangsmodule 250 sind Ausführungseinheiten, die Daten eingeben und/oder ausgeben, wie in anderen Abschnitten beschrieben ist. Die Arbeitsablauf-Erzeugungskomponente 230 erfährt von der Verfügbarkeit dieser Vorgangsmodule 250 sowie von Konfigurationsoptionen und Beschränkungen der Module 250, indem sie auf Metadaten des Moduls 255 zugreift. Wenn eine Arbeitsablauf-Anwendung beispielsweise erstmals aufgerufen wird, kann die Arbeitsablauf-Anwendung einen Ordner oder andere Metadaten 255 für die Module 250 scannen und dann alle gefundenen Module 250 zur Verwendung in den Vorgangsknoten eines Arbeitsablaufs verfügbar machen. Die Arbeitsablauf-Erzeugungskomponente 230 erzeugt dann Schnittstellen-Bedienelemente in der Arbeitsablauf-Schnittstellenkomponente 240, die es dem Nutzer 205 erlauben, einen neuen Vorgangsknoten zu erzeugen und den Vorgangsknoten mit einem der Module 250 zu verknüpfen. Die Arbeitsablauf-Erzeugungskomponente 230 kann einen Datenknoten erzeugen, gestützt auf Eingaben von dem Nutzer 205, die eine Datenmenge angeben.
-
Die Arbeitsablauf-Erzeugungskomponente 230 kann weiter Datenknoten erzeugen, gestützt auf Ausgaben von dem Verarbeiten eines Vorgangsknotens, etwa von einem unmittelbar vorangegangenen Vorgangsknoten in dem gegenwärtigen Ablauf, oder von einem Vorgangsknoten am Ende eines anderen Arbeitsablaufs.
-
Die Arbeitsablauf-Erzeugungskomponente 230 erzeugt weiter Datenknoten, gestützt auf Daten, die von einem Nutzer von einem umgewandelten Datenspeicher 290 und/oder Datenquellen 280 ausgewählt wurden. Die Arbeitsablauf-Erzeugungskomponente 230 ruft Datenmengen von dem umgewandelten Datenspeicher 290 und/oder den Datenquellen 280 ab. Während die Datenmengen abgerufen werden, werden die Datenquellen 280 von der Daten-Umwandlungskomponente 260 umgewandelt, was einheitliche, typisierte Datenstrukturen liefert. Datenmengen von dem umgewandelten Datenspeicher 290 sind auf der anderen Seite schon als einheitliche, typisierte Datenstrukturen organisiert. Die Arbeitsablauf-Erzeugungskomponente 230 präsentiert diese Datenmengen dem Nutzer 205 in der Arbeitsablauf-Schnittstellenkomponente 240 und empfängt in Antwort darauf Eingaben, die spezifische Datenelemente von den Datenmengen auswählen, die in die Datenknoten gehören sollen.
-
Sobald ein Arbeitsablauf erzeugt wurde, speichert die Arbeitsablauf-Erzeugungskomponente 230 eine Arbeitsablauf-Datenstruktur, die den Arbeitsablauf repräsentiert, in einem Arbeitsablauf-Speicher 235. Der Arbeitsablauf-Speicher 235 kann beispielsweise ein temporärer Ort im Speicher, in einem Verzeichnis in einem lokalen Dateisystem oder in einer Datenbank sein.
-
Die Arbeitsablauf-Schnittstellenkomponente 240 umfasst weiter Bedienelemente, durch die der Nutzer 205 die Arbeitsablauf-Verarbeitungskomponente 220 anweisen kann, zumindest einen Teil eines gegenwärtig geladenen Arbeitsablaufs oder eines Arbeitsablaufs in dem Arbeitsablauf-Speicher 235 zu verarbeiten. Die Arbeitsablauf-Schnittstellenkomponente 240 kann beispielsweise eine „Arbeitsablauf ausführen”- und/oder „Knoten ausführen”-Schaltfläche darstellen, die die Arbeitsablauf-Verarbeitungskomponente 220 veranlasst, zumindest einen Teil des Arbeitsablaufs zu verarbeiten, der gegenwärtig in der Arbeitsablauf-Schnittstellenkomponente 240 angezeigt ist. Die Arbeitsablauf-Verarbeitungskomponente 220 kann auch oder stattdessen Arbeitsabläufe ausführen, die durch andere Eingaben angegeben werden, etwa Kommandozeilen-Eingaben oder Eingaben von einem Task-Scheduler.
-
Die Arbeitsablauf-Verarbeitungskomponente 220 führt Arbeitsabläufe, die durch Arbeitsablauf-Datenstrukturen in dem Arbeitsablauf-Speicher 235 beschrieben werden, mittels Arbeitsablauf-Verarbeitungstechniken aus, wie sie in anderen Abschnitten beschrieben sind. Im Verlauf des Verarbeitens eines Arbeitsablaufs, ruft die Arbeitsablauf-Verarbeitungskomponente 220 Vorgangsmodule 250 auf, die durch Vorgangsknoten in dem Arbeitsablauf referenziert werden. Die Arbeitsablauf-Verarbeitungskomponente 220 kann eine typisierte Datenmenge, die von einem vorangegangen Knoten ausgegeben wurde, wenn es einen gibt, an ein aufgerufenes Vorgangsmodul 250 übergeben. Die meisten Vorgangsmodule 250 werden einen oder mehrere Befehle mit Bezug auf die eingegebene Datenmenge verarbeiten und dann eine Ausgabe, die aus typisierten Daten besteht, an die Arbeitsablauf-Verarbeitungskomponente 220 zurückgeben. In einer Ausführungsform kann die Arbeitsablauf-Verarbeitungskomponente 220 Datenknoten in dem gegenwärtig verarbeiteten Arbeitsablauf erzeugen und/oder aktualisieren, um die Datenmengen einzuschließen, die von den Vorgangsmodulen 250 ausgegeben wurden. In einer Ausführungsform kann, wenn die Arbeitsablauf-Verarbeitungskomponente 220 in einem interaktiven Modus läuft, die Arbeitsablauf-Verarbeitungskomponente 220 die Arbeitsablauf-Schnittstellenkomponente 240 weiter so aktualisieren, dass sie Darstellungen von hinzugefügten oder aktualisierten Datenknoten anzeigt. In einer Ausführungsform kann die Arbeitsablauf-Verarbeitungskomponente 220 so konfiguriert sein, dass sie die endgültige Ausgabe von einem Arbeitsablauf in einer Vielzahl von Orten, die sich von der Arbeitsablauf-Schnittstellenkomponente 240 unterscheiden, speichert, druckt oder anzeigt.
-
In einer Ausführungsform umfassen ein oder mehrere Vorgangsmodule 250 in sich abgeschlossene Befehle zum Verarbeiten einer Datenmenge. Code für relativ häufige und/oder einfache Operationen, etwa das Mischen oder Filtern einer Datenmenge, kann beispielsweise direkt in einem Modul 250 vorgesehen sein. In einer Ausführungsform verarbeitet ein Vorgangsmodul 250 eine Datenmenge nur mittels in sich abgeschlossenen Befehlen, ohne irgendwelche externen Werkzeuge 270 aufzurufen. In einer Ausführungsform interagiert ein Modul 250 mit einem oder mehreren externen Werkzeugen 270, um eine Datenmenge zu verarbeiten. Das eine oder die mehreren externen Werkzeuge 270 können verschiedene Algorithmen zum Verarbeiten von Genomdaten implementieren. Die Vorgangsmodule 250 senden einen Teil oder die Gesamtheit der eingegebenen Datenmenge oder verarbeiteten Daten, die darauf basieren, zu dem externen Werkzeug 270 zur Verarbeitung. Die Vorgangsmodule 250 empfangen dafür dann eine Ausgabe. Die Vorgangsmodule 250 können optional eine Ausgabe verarbeiten, bevor sie die Ausgabe als typisierte Daten an die Arbeitsablauf-Verarbeitungskomponente 220 zurückgeben. In einer Ausführungsform können Nutzer ihre eigenen Vorgangsmodule 250 über eine API bereitstellen, die das Arbeitsablauf-System 210 auch verwenden kann. Die externen Werkzeuge 270 können beispielsweise lokale Laufzeitbibliotheken 270a umfassen, etwa neu verteilbare Bibliotheken von Java- oder Python-Code, die direkt über Prozeduraufrufe in einem Vorgangsmodul 250 aufgerufen werden können. Die externen Werkzeuge 270 können auch Client-Side-Bibliotheken umfassen, die in der Arbeitsablauf-Schnittstellenkomponente 240 an der Rechenvorrichtung des Nutzers laufen. Ein Modul 250 kann beispielsweise mittels Client-Side-JavaScript-Werkzeugen implementiert werden. Solche Werkzeuge können Eingaben des Nutzers anfordern, die die Ausgabe des Moduls 250 beeinflussen, müssen es aber nicht.
-
Die externen Werkzeuge 270 können auch lokale Anwendungsserver 270c und netzbasierte Anwendungsserver 270d umfassen, mit denen ein Vorgangsmodul 250 über ein oder mehrere Netzwerke über jedes geeignete Protokoll kommunizieren kann, einschließlich HTTP, FTP, REST-basierten Protokollen, JSON usw. In einer Ausführungsform sind alle Vorgangsmodule 250 codierte Objekte, die eine gemeinsame Klasse erweitern. Die gemeinsame Klasse implementiert Logik zum Kommunizieren mit jedem dieser vier Arten von externen Werkzeugen 270. In einer Ausführungsform können die externen Werkzeuge 270 andere Werkzeuge umfassen, die nicht gezeigt sind. In einer Ausführungsform können manche externe Werkzeuge 270 weiter mit anderen externen Werkzeugen 270 kommunizieren, um eine Ausgabe zu erzeugen. In einer Ausführungsform können manche externen Werkzeuge 270 Ausgaben erzeugen, gestützt auf das Anfordern von Daten von Datenquellen 280.
-
Die Datenquellen 280 können jede Quelle von Daten umfassen, auf die vom System 210 zugegriffen werden kann, einschließlich lokaler Dateien 280a in jedem einer Vielzahl von Formaten und abfragbarer lokaler Datenbanken 280b. Die Datenquellen 280 können weiter netzbasierte Speicher 280c umfassen, auf die über verschiedene netzbasierte Schnittstellen zugegriffen werden kann, einschließlich SOAP- oder REST-basierter Schnittstellen. In einer Ausführungsform werden, um den Betrieb des Systems 210 zu beschleunigen, netzbasierte Speicher 280c lokal als lokale Dateien 280a und/oder lokale Datenbanken 280b zwischengespeichert. Das Arbeitsablauf-System 210 kann beispielsweise periodisch Datenbank-Dumps von dem netzbasierten Speicher 280c herunterladen. Die Datenquellen 280 können weiter Webseiten 280d umfassen. Die Vorgangsmodule 250 und oder die Daten-Umwandlungskomponente 260 können beispielsweise „Screenscraping”-Elemente aufweisen, um Veröffentlichungen oder andere Daten von den Webseiten 280d von bestimmten Websites zu extrahieren.
-
In einer Ausführungsform müssen Daten, die von den externen Werkzeugen 270 und den Datenquellen 280 ausgegeben werden, in umgewandelte Daten 290 umgewandelt werden, bevor sie von dem Arbeitsablauf-System 210 verarbeitet werden. Das Arbeitsablauf-System 210 kann eine Daten-Umwandlungskomponente 260 vorsehen, um Daten von den externen Werkzeugen 270 und Datenquellen 280 in typisierte Datenstrukturen umzuformatieren, die durch eine Ontologie 291 definiert sind. Die Ontologie 291 kann für jede Art von Daten angelegt sein. In einer Ausführungsform umfasst eine Ontologie 291 für Genomdaten die folgenden Kern-Datentypen: Sequenzen, DNS-Sequenzen, mRNS-Sequenzen, RNS-Sequenzen, Proteinsequenzen, Proteinobjekte, Papierobjekte, Alignment-Objekte und Genobjekte.
-
Die umgewandelten Daten 290 werden dann zumindest temporär gespeichert, um den Arbeitsablauf zu verarbeiten, und/oder permanent, damit Nutzer 205 in anderen Arbeitsabläufen und Projekten nachfolgend darauf zugreifen können. In einer Ausführungsform kann die Daten-Umwandlungskomponente 260 weiter Daten zurück in eine Form umwandeln, die von den externen Werkzeugen 270 und Datenquellen 280 erwartet wird, so dass sie als Eingabe für die externen Werkzeuge 270 oder zur Speicherung in den Datenquellen 280 verwendet werden können. In einer Ausführungsform können die Vorgangsmodule 250 auch oder stattdessen dafür verantwortlich sein, manche der Datenmengen direkt umzuwandeln, die an ein zugehöriges Werkzeug 270 gesendet oder von ihm empfangen werden. In einer Ausführungsform können manche Vorgangsmodule 250 sich direkt auf umgewandelte Daten 290 stützten, die permanent in einer Datenbank gespeichert sind, im Gegensatz zu Daten von den Datenquellen 280.
-
Das System 200 ist nur ein Beispiel eines Systems, in dem die hier beschriebenen Techniken angewendet werden können. Andere Systeme können zusätzliche oder weniger Elemente umfassen, in möglicherweise abweichenden Anordnungen. In einem System fehlen beispielsweise eine beliebige Anzahl von Arten von externen Werkzeugen 270 oder Datenquellen 280. In einem anderen System fehlen die umgewandelten Daten 290 und die Daten-Umwandlungskomponente 260. In noch einem anderen System fehlt eine graphische Arbeitsablauf-Schnittstellenkomponente 240. Viele andere Varianten sind auch möglich.
-
4.0. BEISPIELHAFTE SCHNITTSTELLEN UND ARBEITSABLÄUFE
-
3 ist ein Screenshot 300, der eine beispielhafte Schnittstelle 305 zum Ausführen von Techniken zeigt, die hier beschrieben sind, gemäß einer Ausführungsform. Die Schnittstelle 305 kann beispielsweise das Empfangen von Eingaben eines Nutzers erleichtern, um einen Arbeitsablauf zu definieren und/oder mit der Verarbeitung eines Arbeitsablaufs zu interagieren. Die Schnittstelle 305 ist ein Beispiel einer Arbeitsablauf-Schnittstellenkomponente 240.
-
Die Schnittstelle 305 kann verschiedene graphische Darstellungen von Elementen umfassen, wie Knoten, Datenelementen, Modulen, Dateien usw. Um die Offenbarung zu vereinfachen, beschreibt diese Anmeldung Merkmale der graphischen Benutzeroberfläche manchmal in Form von repräsentierten Elementen selbst, anstatt von graphischen Darstellungen dieser Elemente. Ein Fachmann wird verstehen, dass, wie es üblich ist, wenn graphische Benutzeroberflächen beschrieben werden, wörtliche Beschreibungen einer graphischen Benutzeroberfläche, die nicht-graphische Benutzeroberflächen-Komponenten umfasst, so als Beschreibung der graphischen Benutzeroberfläche verstanden werden sollen, dass sie graphische Darstellungen dieser Komponenten umfasst. Die Beschreibung kann beispielsweise einen Schritt des „Auswählens eines Knotens aus einem Arbeitsbereich” beschreiben, wenn ein Fachmann in Wirklichkeit verstehen wird, dass das, was ausgewählt wird, eine Darstellung eines Knotens in dem Arbeitsbereich ist.
-
Die Schnittstelle 305 umfasst einen Arbeitsbereich-Abschnitt 310, in dem ein Arbeitsablauf 320 angezeigt ist. Die verschiedenen Komponenten des Arbeitsablaufs 320 sind mit Bezug auf nachfolgenden Figuren beschrieben. Der Arbeitsbereich 310 umfasst weiter Zoom-Bedienelemente 312, um den sichtbaren Bereich des Arbeitsbereichs 310 zu vergrößern oder zu verkleinern. In einer Ausführungsform ist der sichtbare Abschnitt des Arbeitsbereichs 310 über verschiedene Kombinationen von Cursor-Eingaben und/oder Auswahl von Scrolling-Bedienelementen bewegbar.
-
Die Schnittstelle 305 umfasst weiter einen Headerbereich 390. Der Headerbereich 390 umfasst Bedienelemente 391–397 für allgemeine Arbeitsablauf-Operationen. Das Speichern-Bedienelement 391 erleichtert Eingaben zum Speichern von Arbeitsabläufen 320. Das Öffnen-Bedienelement 392 erleichtert Eingaben zum Öffnen eines vorher gespeicherten Arbeitsablaufs in den Arbeitsbereich 310. Das Ausführen-Bedienelement 393 erleichtert Eingaben zum Verarbeiten des gesamten Arbeitsablaufs 320. Oder, wenn ein oder mehrere bestimmte Knoten eines Arbeitsablaufs 320 gegenwärtig ausgewählt sind, erleichtert das Ausführen-Bedienelement 393 Eingaben zum Verarbeiten eines Teils des Arbeitsablaufs 320, der zu dem einen oder den mehreren bestimmten Knoten gehört. Die Bedienelemente 394–396 erleichtern Eingaben zum Erzeugen von verschiedenen Arten von Präsentationen, gestützt auf Ausgaben von dem Arbeitsablauf 320. Das Bedienelement 397 erleichtert Eingaben zum Importieren von ausgewählten Ausgaben von dem Arbeitsablauf 320, einschließlich Datenmengen, die in dazwischen liegenden Datenknoten gespeichert sind, in einen Datenspeicher.
-
Die Schnittstelle 305 umfasst weiter einen Sidebar-Bereich 370, der im Allgemeinen für Bedienelemente vorgesehen ist, die das Erzeugen von neuen Knoten in einem Arbeitsablauf 320 erleichtern. Der Sidebar-Bereich 370 umfasst vier Fensterbereiche 371–374. Der gegenwärtig angezeigte Fensterbereich, der Suche-Fensterbereich 371, zeigt ein Datenbank-Suchbedienelement 375. Das Datenbank-Suchbedienelement 375 erlaubt es dem Nutzer, eine begriffsbasierte Suche auf verschiedenen Datenbanken von Genomdaten auszuführen. Der Nutzer kann Suchergebnisse, teilweise oder als Ganzes, zu dem Arbeitsbereich 320 ziehen, um einen oder mehrere neue Datenknoten zu erzeugen. Die Sidebar 370 umfasst weiter einen Import-Fensterbereich 372, einen Vorgang-Fensterbereich 373 und einen Bibliothek-Fensterbereich 374.
-
Die Schnittstelle 305 umfasst weiter einen Überblicksbereich 380. Der Überblicksbereich 380 stellt im Allgemeinen eine kontextabhängige Detailansicht von Informationen über ein gegenwärtig ausgewähltes Objekt in dem Arbeitsbereich 310 dar. Wie gezeigt, stellt der Überblicksbereich 380 beispielsweise eine „Veröffentlichungsansicht” eines bestimmten Veröffentlichungselements dar, das in einem Datenknoten des Arbeitsablaufs 320 ausgewählt wurde. Abhängig vom Datentyp und/oder Knotentyp des gegenwärtig ausgewählten Elements in dem Arbeitsbereich 320 kann der Überblicksbereich 380 unterschiedlich organisierte Ansichten von unterschiedlichen Informationsfeldern darstellen. Manche Ansichten können ein einziges Informationsfeld umfassen, während andere Ansichten viele Informationsfelder umfassen können. In einer Ausführungsform sind die Informationen, die in dem Überblicksbereich 380 dargestellt werden, vom Nutzer definierbar. Der Überblicksbereich 380 kann scrollbar sein, abhängig davon, welche Ansicht dargestellt wird.
-
4 ist ein Screenshot 400, der die Darstellung von Datenknoten in der beispielhaften Schnittstelle 305 zeigt, gemäß einer Ausführungsform. Der Screenshot 400 zeigt einen Teil des Arbeitsbereichs 310, einschließlich der graphischen Darstellungen von drei unterschiedlichen Datenknoten 430–450, und den Überblicksbereich 380. Jeder der Datenknoten 430–450 umfasst eine Menge von Datenelementen, die in den entsprechenden graphischen Darstellungen gezeigt sind. Der Datenknoten 430 umfasst beispielsweise zumindest die Datenelemente 431a–g, die jeweils ein anderes Proteinobjekt sind. Ein Nutzer kann mittels des Scrolling-Bedienelements 435 zusätzliche Datenelemente sichtbar machen.
-
Der Nutzer kann ein bestimmtes Datenelement auswählen, etwa das Element 431a, indem er es anklickt oder mittels jeder anderen geeigneten Auswahltechnik. In Antwort darauf kann der Überblicksbereich 380 mit einer Ansicht 485 von Informationen aktualisiert werden, die mit dem ausgewählten Element 431a verknüpft sind. Die Informationen in der Ansicht 485 können sich in Antwort darauf ändern, dass ein Nutzer die Fensterbereiche 481–484 anklickt. Jeder der Fensterbereiche 481–484 bringt eine andere Menge von Informationen über das Protein 431a in die Ansicht 485, einschließlich Überblicksinformationen (in dem Fensterbereich 481), Referenzen (in dem Fensterbereich 482), Sequenzdaten (in dem Fensterbereich 483) und PDB-Daten (in dem Fensterbereich 484).
-
Ein Nutzer kann auch einen ganzen Datenknoten 430–450 auswählen, indem er ihn anklickt oder mittels jeder anderen geeigneten Auswahltechnik. Das Anklicken eines Datenknotens kann dazu führen, dass der Überblicksbereich 380 eine andere Ansicht von anderen Informationen zeigt als die Informationen, die in 4 gezeigt sind. Die Ansicht für den Knoten 430 kann beispielsweise Überblicksinformationen für eine ganze Datenmenge umfassen, etwa eine statistische Analyse oder ein Histogramm, das zeigt, wie ähnlich die Proteinelemente 431 zu einander sind.
-
Im Gegensatz dazu kann, wenn ein Vorgangsknoten ausgewählt wurde, der Überblicksbereich 380 Metadaten umfassen, die das Modul beschreiben, das zu dem Vorgangsknoten gehört, Informationen über die letzte Ausführung des Moduls und/oder Felder zum Eingeben von Werten für konfigurierbare Parameter des Moduls.
-
5 ist ein Screenshot 500, der Bedienelemente zum Importieren von Daten in die beispielhafte Schnittstelle 305 zeigt, gemäß einer Ausführungsform. Der Screenshot 500 zeigt den Arbeitsbereich 310, die Sidebar 370 und den Header 390. Der Import-Fensterbereich 372 wurde in der Sidebar 370 ausgewählt. Daher zeigt die Sidebar 370 ein Import-Bedienelement 575, um Eingaben zu empfangen, die eine Datei auswählen. Der Screenshot 500 zeigt weiter ein Dateimanager-Fenster 560, von dem der Nutzer eine Darstellung einer Datei 561 auswählen kann. Der Nutzer kann dann den Cursor 565 verwenden, um die Darstellung der Datei 561 zu „ergreifen” und über das Import-Bedienelement 575 zu „ziehen”. Eine Feedback-Graphik 562 kann angezeigt werden, um dem Nutzer zu zeigen, dass der Nutzer tatsächlich die Datei 561 mittels des Cursors 565 zieht. Sobald der Cursor 565 über dem Import-Bedienelement 575 ist, kann der Nutzer die Darstellung der Datei 561 in den Schnittstellen-Bereich 575 „ablegen”, um die Benutzeroberfläche 305 anzuweisen, zu versuchen, das Dateiformat der Datei 561 zu erkennen, die Datei 561 automatisch in ein oder mehrere Datenelemente umzuwandeln, die in einem Arbeitsablauf verwendet werden können, und diese Datenelemente in die Schnittstelle 305 zu importieren.
-
6 ist ein Screenshot 600, der das Hinzufügen eines Datenknotens 630 zu dem Arbeitsbereich 310 der beispielhaften Schnittstelle 305 zeigt, gemäß einer Ausführungsform. Der Screenshot 600 zeigt Teile des Arbeitsbereichs 310 und der Sidebar 370. Die Sidebar 370 zeigt immer noch den Import-Fensterbereich 372 mit dem Import-Bedienelement 575. Zusätzlich umfasst die Sidebar 370 Darstellungen von Datenelementen 661 und 662. Die Datenelemente 661 und 662 sind Sequenzen, die aus der Datei 561 importiert wurden. Benachbart zu den Darstellungen der Datenelemente 661 und 662 sind Bedienelemente 665 und 666 zum Hinzufügen der Datenelemente 661 bzw. 662 zu einem Datenknoten, der gegenwärtig in dem Arbeitsbereich 310 ausgewählt ist. Wenn es keinen gegenwärtig ausgewählten Datenknoten in dem Arbeitsbereich 310 gibt, wird ein neuer Datenknoten erzeugt, wenn eines der Bedienelemente 665 oder 666 ausgewählt wurde.
-
Wie in 6 gezeigt ist, umfasst der Arbeitsbereich 310 eine Darstellung des Datenknotens 630, der in Antwort darauf erzeugt wurde, dass ein Nutzer das Bedienelement 665 angeklickt hat. Somit umfasst, wie in dem Inhalt-Darstellungsbereich 631 des Knotens 630 gezeigt ist, der Knoten 630 das importierte Datenelement 661. Die Darstellung des Knotens 630 umfasst weiter ein Entfernen-Bedienelement 639, das zu dem Entfernen des Knotens 630 von dem Arbeitsbereich 310 führt, und einen Knoten-Titel 632, der als Standardeinstellung die Technik beschreibt, durch die der Knoten 630 erzeugt wurde (d. h. die Tatsache, dass er „importiert” wurde).
-
7 ist ein Screenshot 700, der das Hinzufügen eines Vorgangsknotens 740 zu dem Arbeitsbereich 310 der beispielhaften Schnittstelle 305 zeigt, gemäß einer Ausführungsform. Der Screenshot 700 zeigt Teile des Arbeitsbereichs 310 und der Sidebar 370. Der Vorgangs-Fensterbereich 373 wurde in der Sidebar 370 ausgewählt, was dazu führt, dass die Sidebar 370 die Bedienelement-Gruppen 770, 780 und 790 umfasst. Die Bedienelement-Gruppen 770, 780 und 790 umfassen jeweils Bedienelemente 771–775, 781–782 und 791–792 zum Hinzufügen von Vorgangsknoten zu dem Arbeitsbereich 310. Der Arbeitsbereich 310 umfasst eine Darstellung des kürzlich hinzugefügten Vorgangsknotens 740. Der Vorgangsknoten 740 kann erzeugt und seine zugehörige Darstellung zu dem Arbeitsbereich in Antwort darauf hinzugefügt worden sein, dass das Bedienelement 775 von dem Arbeitsbereich 370 ausgewählt wurde. Wie gezeigt, hat der Vorgangsknoten 740 eine andere Schattierung als der Datenknoten 630. In einer Ausführungsform sind alle Datenknoten anders schattiert oder gefärbt als Vorgangsknoten.
-
Die Bedienelemente 771–775, 781–782 und 791–792 können beispielsweise erzeugt worden sein, indem ein oder mehrere Plugin-Verzeichnisse gescannt wurden, in denen die Arbeitsablauf-Anwendung erwartungsgemäß Module findet. Die Bedienelement-Gruppen 770, 780 und 790 können erzeugt worden sein, gestützt auf Modul-Metadaten, die jedes der Modul-Plugins kategorisiert. Die Bedienelement-Gruppe 770 gehört zu einer „Sequenz”-Kategorie von Modulen. Das Auswählen eines ihrer Bedienelemente 771–775 erzeugt einen Vorgangsknoten, der einen Vorgang ausführt, der durch ein „MSA”-Modul, ein „BLAST”-Modul, ein „Transskription”-Modul, ein „Übersetzung”-Modul bzw. ein „ScanProsite”-Modul implementiert wird. Die Bedienelement-Gruppe 780 gehört zu einer „einfachen” Kategorie von Modulen und umfasst ein Misch-Bedienelement 781 und ein Filter-Bedienelement 782. Das Auswählen eines der Bedienelemente 781–782 erzeugt einen Vorgangsknoten, der einen Vorgang ausführt, der von einem „Misch”-Modul bzw. einem „Filter”-Modul implementiert wird. Die Bedienelement-Gruppe 790 gehört zu einer „Suchanfrage”-Kategorie von Modulen. Das Auswählen eines ihrer Bedienelemente 791–792 erzeugt einen Vorgangsknoten, der einen Vorgang ausführt, der von einem „PubMed”-Modul bzw. einem „UniProtkB”-Modul implementiert wird. Da Nutzer leicht ihre eigenen Module erzeugen können und da die Arbeitsablauf-Anwendung automatisch Bedienelemente für alle Module erzeugt, die ein Nutzer erzeugt, sind die Bedienelement-Gruppen 770, 780 und 790 und die Bedienelemente 771–775, 781–782 und 791–792 nur eine kleine Auswahl der Bedienelement-Gruppen und Bedienelemente, die in der Sidebar 370 erscheinen können.
-
8 ist ein Screenshot 800, der Bedienelemente zum Verbinden von Knoten in dem Arbeitsbereich 310 der beispielhaften Schnittstelle 305 zeigt, gemäß einer Ausführungsform. Der Screenshot 800 zeigt einen Teil des Arbeitsbereichs 310, einschließlich der Darstellungen der Knoten 630 und 740. Die Darstellung des Knotens 740 wurde näher an die Darstellung des Knotens 630 in Antwort auf Eingaben des Nutzers bewegt, etwa Eingaben des Nutzer, die den Knoten 740 in die gegenwärtig angezeigte Position ziehen und ablegen. Der Knoten 630 umfasst eine Eingabe-Verbindungsstelle 634 und eine Ausgabe-Verbindungsstelle 635. Ähnlich umfasst der Knoten 740 eine Eingabe-Verbindungsstelle 744 und eine Ausgabe-Verbindungsstelle 745.
-
In einer Ausführungsform kann ein Nutzer jeden Knoten mit jedem anderen Knoten verbinden, indem er seine Ausgabe-Verbindungsstelle zu der Eingabe-Verbindungsstelle des anderen Knotens oder seine Eingabe-Verbindungsstelle zu der Ausgabe-Verbindungsstelle des anderen Knotens zieht. Der Knoten, dessen Ausgabe-Verbindungsstelle mit der Eingabe-Verbindungsstelle des anderen Knotens verbunden wurde, stellt Eingaben für den anderen Knoten bereit und es wird also angenommen, dass er vor dem anderen Knoten in der Abfolge eingeordnet ist.
-
Wie in 8 gezeigt ist, wurde die Ausgabe-Verbindungsstelle 635 des Knotens 630 zu der Eingabe-Verbindungsstelle 744 des Knotens 740 gezogen. Die Verbindungsstelle 635 hat ihre Farbe geändert und der Cursor 865 wird als Verbindungssymbol angezeigt, um anzudeuten, dass der Nutzer gegenwärtig die Verbindungsstelle 635 zieht. Die Verbindungsstellen-Beschriftungen 861 und 862 erscheinen auch, während der Nutzer die Verbindungsstelle 635 zieht, was Informationen über die ausgewählte Verbindungsstelle und andere Verbindungsstellen liefert, wenn es angemessen ist. In einer Ausführungsform kann eine Verbindungsstelle nur mit einer anderen Verbindungsstelle verbunden werden, wenn die beiden Verbindungsstellen zu demselben Datentyp gehören. Um einem Nutzer dabei zu helfen, zu erkennen, welche Verbindungsstellen zu denselben Datentyp gehören, kann die Benutzeroberfläche 305 weiter das Aussehen aller Verbindungsstellen ändern, die mit der Verbindungsstelle kompatibel sind, die gegenwärtig ausgewählt ist. Zwei Verbindungsstellen sind kompatibel, wenn sie entgegengesetzte Verbindungsarten haben (Eingabe vs. Ausgabe), zumindest einen gemeinsamen Datentyp unterstützen, nicht in dem gleichen Knoten sind und nicht beide in Datenknoten sind. Somit wurde, da die Eingabe-Verbindungsstelle 744 mit der Ausgabe-Verbindungsstelle 635 kompatibel ist, die Eingabe-Verbindungsstelle 744 mit einer durchgängigen Farbe ohne Rand schattiert, im Gegensatz zu dem Eingabeknoten 634, der transparent ist und einen Rand hat. Die Verbindungsstelle 745 hat ebenfalls einen Rand, was anzeigt, dass sie die Verbindungsstelle 635 nicht empfangen kann. Der Knoten 745 ist jedoch gegenwärtig schattiert, da er eine Ausgabe repräsentiert, die gegenwärtig keinem anderen Knoten bereitgestellt wird. Eine Vielzahl von anderen Techniken zum Ändern des Aussehens von kompatiblen Knoten kann auch oder stattdessen verwendet werden.
-
9 ist ein Screenshot 900, der verbundene Knoten in dem Arbeitsbereich 310 der beispielhaften Schnittstelle 305 zeigt, gemäß einer Ausführungsform. Der Screenshot 900 zeigt einen Teil des Arbeitsbereichs 310, in dem die Knoten 630 und 740 durch den Drag-and-Drop-Vorgang verbunden wurden, der oben beschrieben ist. Der Arbeitsbereich 310 umfasst eine Darstellung der Verbindung 961 zwischen den Knoten 630 und 740. Die Knoten 630 und 740 bilden nun eine Abfolge und bilden somit einen funktionalen Arbeitsablauf 320.
-
10 ist ein Screenshot 1000, der das Ausführen eines Teils des Arbeitsablaufs 320 mittels der beispielhaften Schnittstelle 305 zeigt, gemäß einer Ausführungsform. Der Screenshot 1000 zeigt den Header-Bereich 290 und einen Teil des Arbeitsbereichs 310, einschließlich der Knoten 630 und 740. Nachdem er die Knoten 630 und 740 verbunden hat, kann ein Nutzer entscheiden, den Arbeitsablauf 320 auszuführen. Somit kann der Nutzer das Ausführen-Bedienelement 393 anklicken. In Antwort darauf kann die Arbeitsablauf-Anwendung den Arbeitsablauf 320 ausführen, indem sie die Sequenz, die durch den Knoten 630 repräsentiert wird, in das ScanProsite-Modul eingibt, das durch den Knoten 740 repräsentiert wird, und das ScanProsite-Modul ausführt. Das ScanProsite-Modul interagiert seinerseits mit einem Webserver, der einen Algorithmus implementiert, um Motive in der Sequenz zu identifizieren. Das ScanProsite-Modul empfangt eine Antwort von dem Webserver, interpretiert diese Antwort als eine Datenmenge von Motiven und stellt diese Datenmenge der Arbeitsablauf-Anwendung bereit. Die Arbeitsablauf-Anwendung erzeugt einen Datenknoten 1030, fügt die identifizierten Motive zu dem Datenknoten 1030 als Datenelemente 1031a–1031c hinzu, fügt den Datenknoten 1030 zu dem Arbeitsablauf 320 hinzu, indem sie den Datenknoten 1030 mit dem Knoten 740 mit einer neuen Verbindung 1061 verbindet, und fügt dann entsprechende Darstellungen der neuen Daten zu dem Arbeitsbereich 310 hinzu. Diese Darstellungen sind in dem Arbeitsbereich 310 der 10 gezeigt.
-
11 ist ein Screenshot 1100, der das Interagieren mit Ausgaben von einem Vorgangsknoten in dem Arbeitsablauf 320 mittels der beispielhaften Schnittstelle 305 zeigt, gemäß einer Ausführungsform. Der Screenshot 1100 zeigt Teile des Überblicksbereichs 380 und des Arbeitsbereichs 310, einschließlich des Arbeitsablaufs 320, wie er in 10 erstellt wurde. Ein bestimmtes Datenelement 1031a wurde von dem Knoten 1030 ausgewählt. In Antwort darauf wird der Überblicksbereich 380 mit Informationen aktualisiert, die mit dem Element 1031a verknüpft sind, einschließlich einer Beschriftung 1181, Metadaten 1182 und einer Sequenz 1183.
-
12 ist ein Screenshot 1200, der den Arbeitsbereich 310 mit verschiedenen Arten von Knoten von dem Arbeitsablauf 320 zeigt, gemäß einer Ausführungsform. Der Screenshot 1200 zeigt Teile der Sidebar 370 und des Arbeitsbereichs 310. Während der Knoten 630 in dem Arbeitsbereich 310 aus dem Blick gescrollt wurde, umfasst der Arbeitsbereich 310 jetzt eine Anzahl von zusätzlichen Knoten, die zu dem Arbeitsablauf 320 hinzugefügt wurden. Insbesondere ist der Knoten 1030 jetzt als Eingabe mit einem Vorgangsknoten 1240 verbunden, der wiederum als Eingabe mit dem Vorgangsknoten 1250 verbunden ist. Ein anderer Datenknoten 1230 wurde auch zu dem Arbeitsbereich 310 hinzugefügt. Der Datenknoten 1230 ist auch als Eingabe mit dem Vorgangsknoten 1250 verbunden.
-
Der Bibliotheks-Fensterbereich 374 ist in der Sidebar 370 ausgewählt. Daher umfasst die Sidebar 370 drei Bedienelemente 1281–1283 zum Hinzufügen von Elementen aus einer Bibliothek. In einer Ausführungsform ist eine Bibliothek ein lokaler Speicher, in dem Nutzer Datenelemente von Interesse für den Nutzer speichern können. Somit kann der Bibliotheks-Fensterbereich 370 viele weitere Bedienelemente umfassen, abhängig davon, welche Elemente von einem Nutzer hinzugefügt wurden. In einer Ausführungsform werden Bibliothekselemente mit einer Gruppe von Nutzern geteilt. Jedes der Bedienelemente 1281–1283 entspricht einem anderen Bibliothekselement. Die Auswahl eines der Bedienelemente 1281–1283 führt zum Hinzufügen des zugehörigen Bibliothekselements zu dem gegenwärtig ausgewählten Datenknoten oder zu dem Erzeugen eines neuen Datenknotens, wenn kein kompatibler Datenknoten ausgewählt wurde. Der Datenknoten 1230 wurde beispielsweise erzeugt, als der Nutzer das Bedienelement 1282 angeklickt hat.
-
Der Vorgangsknoten 1240 gehört zu einem Filtermodul. Der Vorgangsknoten 1240 kann beispielsweise zu dem Arbeitsbereich 310 in Antwort darauf hinzugefügt worden sein, dass ein Nutzer das Bedienelement 782 angeklickt hat. In der Voreinstellung ist das Filtermodul so konfiguriert, dass es den Datenknoten 1030 so filtert, dass er nur das erste Element 1031a umfasst, aber der Nutzer kann das Filterverhalten, das zu dem Vorgangsknoten 1240 gehört, neu konfigurieren, indem er den Knoten 1240 auswählt und Parameterwerte ändert, die in dem Überblicksbereich 380 in Antwort auf das Auswählen gezeigt werden.
-
Der Vorgangsknoten 1250 gehört zu einem Misch-Modul. Der Vorgangsknoten 1250 kann beispielsweise zu dem Arbeitsbereich 310 in Antwort darauf hinzugefügt worden sein, dass ein Nutzer das Bedienelement 781 angeklickt hat. Der Vorgangsknoten 1250 umfasst mehrere Eingabe-Verbindungsstellen 1253 und 1254, um es dem Knoten 1250 zu ermöglichen, mehrere Eingaben zu empfangen. Das Misch-Modul ist so konfiguriert, dass es eine Datenmenge aus den mehreren Eingaben erzeugt. Der Knoten 1250 mischt beispielsweise, wie angezeigt, die Ausgabe des Knotens 1240 mit den Daten in dem Knoten 1230.
-
13 ist ein Screenshot 1300, der eine automatisierte Kette von Knoten zum Abrufen von Veröffentlichungen aus einer Datenbank mittels der Benutzeroberfläche 305 zeigt, gemäß einer Ausführungsform. Der Screenshot 1300 zeigt einen Teil des Arbeitsbereichs 310, einschließlich des Großteils des Arbeitsablaufs 320. Der Arbeitsablauf 320 umfasst jetzt einen Vorgangsknoten 1340 und einen Datenknoten 1330. Der Vorgangsknoten 1340 empfängt die Ausgabe des Misch-Knotens 1250 und sendet die Ausgabe an ein Modul zum Suchen in einer PubMed-Datenbank nach Artikeln. Der Vorgangsknoten 1340 wurde in Antwort darauf erzeugt, dass ein Nutzer das Bedienelement 791 ausgewählt hat.
-
Nachdem der Vorgangsknoten 1340 hinzugefügt wurde, hat der Nutzer den Arbeitsablauf 320 ausgeführt, um Ausgaben für den Vorgangsknoten 1340 zu erzeugen. Diese Ausgaben, die eine Menge von Veröffentlichungen umfassen, wurden in dem Datenknoten 1330 als zumindest die Datenelemente 1331a–1331j gespeichert. Ein Nutzer kann andere Datenelemente mittels des Scrolling-Bedienelements 1235 betrachten, die in dem Knoten 1330 sind.
-
14 ist ein Paar von Screenshots 1400 und 1450, die das Aufteilen von Daten von dem Datenknoten 1330 zeigen, um einen neuen Datenknoten 1430 in dem Arbeitsbereich 310 der Benutzeroberfläche 305 zu erzeugen, gemäß einer Ausführungsform. Die Screenshots 1400 und 1450 zeigen einen Teil des Arbeitsbereichs 310, während der Nutzer das Aufteilen ausführt, bzw. denselben Teil des Arbeitsbereichs 310, nachdem der Nutzer das Aufteilen ausgeführt hat. In dem Screenshot 1400 hat der Nutzer drei Elemente von dem Datenknoten 1330 ausgewählt: die Elemente 1331c, 1331e und 1331g. Der Nutzer zieht diese Elemente von dem Knoten 1330 zu einer leeren Fläche in dem Arbeitsbereich 310. Das Cursor-Icon 1465 zeigt die gegenwärtige Position des Cursors in dem Arbeitsbereich sowie die Anzahl der Elemente an, die der Cursor zieht.
-
In dem Screenshot 1450 hat der Nutzer die ausgewählten Elemente am Ort des Datenknotens 1430 „abgelegt”. Somit wurde der Knoten 1430 erzeugt und eine Darstellung des Knotens, einschließlich der Datenelemente 1331c, 1331e und 1331g, wurde zu dem Arbeitsbereich 310 hinzugefügt. Währenddessen werden die Datenelemente 1331c, 1331e und 1331g von dem Datenknoten 1330 als Ergebnis des Vorgangs entfernt, was dazu führt, dass die Elemente 1331k–m in dem Knoten 1330 sichtbar werden. In manchen Ausführungsformen entfernt jedoch das Aufteilen von Elementen von einem Knoten nicht notwendigerweise Elemente von dem ursprünglichen Knoten, sondern kopiert stattdessen die Elemente in einen neuen Knoten.
-
Der Knoten 1435 kann nun zu dem Arbeitsablauf 320 hinzugefügt werden. Er kann beispielsweise wieder mit dem Knoten 1340 verbunden werden, wodurch im Effekt verlangt wird, dass der Knoten 1340 seine Eingabe in zwei getrennte Datenknoten aufteilt. Oder der Knoten 1430 kann als erster Knoten in einer anderen, unabhängigen Abfolge von Knoten in dem Arbeitsablauf 320 verwendet werden.
-
Die Schnittstelle 305 ist nur ein Beispiel einer Schnittstelle zum Ausführen der Techniken, die hier beschrieben sind. Andere Schnittstellen können weniger oder zusätzliche Elemente in möglicherweise abweichenden Anordnungen aufweisen.
-
5.0. BEISPIELHAFTE VORGANGSKNOTEN DES ARBEITSABLAUFS
-
Beispiele von Vorgangsknoten, die zum Verarbeiten von Genomdaten nützlich sein können, sind unten beschrieben. Es kann in der Tat viel mehr Arten von Modulen geben, als diejenigen, die hier aufgelistet sind. Arbeitsabläufe für andere Arten von Daten können manche dieser Vorgangsknoten umfassen, können aber auch oder stattdessen andere Vorgangsknoten umfassen, die Algorithmen zum Verarbeiten der anderen Arten von Daten widerspiegeln.
-
In einer Ausführungsform umfassen Standardmodule ein Misch-Modul zum Mischen von Datenmengen von mehreren Knoten und ein Filtermodul zum Filtern einer Datenmenge, gestützt auf konfigurierbare Kriterien.
-
In einer Ausführungsform entspricht eine Art von Vorgangsknoten einem „DNS in Protein Übersetzen”-Modul. Das Modul akzeptiert Eingaben in Form einer Sequenz. Das Modul verwendet einen lokal implementierten Algorithmus, um die DNS-Sequenz zu übersetzen. Das Modul erzeugt Ausgaben in Form einer Proteindatenstruktur. Beispielhafte konfigurierbare Parameter für das Modul können, ohne Einschränkung, einen Frame-Parameter und einen Komplement-Parameter umfassen.
-
In einer Ausführungsform entspricht eine andere Art von Vorgangsknoten einem „Alignment mehrerer Sequenzen”-Modul. Das Modul akzeptiert Eingaben in Form einer Datenmenge von mehreren Sequenzen, beispielsweise in einer multi-FASTA-formatierten Datei. Das Modul erzeugt Ausgaben in Form von Alignment-Daten, etwa in einer MSA-Alignment-Datei. Ein Überblicksbereich eines Arbeitsablaufs kann die Alignment-Daten in einem Detailansichtbereich mittels Techniken anzeigen, wie sie in der früher referenzierten Anmeldung, „Computer Graphical User Interface Supporting Aligning Genomic Sequences”, beschrieben sind.
-
In einer Ausführungsform entspricht eine andere Art von Vorgangsknoten einem „Scan der Protein-Familie(Pfam)”-Modul. Das Modul greift auf einen netzbasierten Anwendungsserver zu, der ein Hidden-Markov-Modul über einer Proteinsequenz ausführt und das oder die wahrscheinlichsten Proteinfamilien berechnet, gestützt auf Motive in der Proteinsequenz. Das Modul akzeptiert Eingaben in Form einer Proteindatenstruktur. Das Modul erzeugt Ausgaben in Form einer oder mehrerer Proteinfamilien-Datenstrukturen.
-
In einer Ausführungsform entspricht eine andere Art von Vorgangsknoten einem „Glimmer”-Modul. Das Modul greift auf einen netzbasierten Anwendungsserver zu, um Gene mittels eines interpolierten Markov-Modells zu finden. Konfigurierbare Parameter für das Modul umfassen, ohne Einschränkung, einen Gencode-Typ, einen Topologie-Typ, eine Anzahl von Eingabesequenzen und einen Ausgabedatentyp, der eine Annotation oder eine Sequenz sein kann.
-
In einer Ausführungsform entspricht eine andere Art von Vorgangsknoten einem „BLAST”-Modul. Das Modul greift auf einen netzbasierten Anwendungsserver zu, der nach Genen in einer Sequenzabfrage mittels verschiedener Bibliotheken von Genomdaten sucht. Das Modul gibt Informationen über passende Ergebnisse zurück.
-
In einer Ausführungsform entspricht eine andere Art von Vorgangsknoten einem „FASTA-Sequenz-Lesevorrichtung”-Modul, das eine FASTA-Datenstruktur in ein Protein oder eine DNS-Sequenz mittels einer lokalen Anwendung umwandelt.
-
In einer Ausführungsform entspricht eine andere Art von Vorgangsknoten einem „UniProt”-Modul. Das Modul fragt eine Online-UniProt-Datenbank ab, um Informationen über eingegebene Proteinsequenzen oder -objekte zu erhalten. Konfigurierbare Parameter für das Modul umfassen, ohne Einschränkung, einen Organismus-Parameter, Einen Gen-Ontologie-(GO)-Parameter, einen Überprüfungsparameter und einen Prosite-Parameter.
-
In einer Ausführungsform entspricht eine andere Art von Vorgangsknoten einem „PubMed”-Modul. Das Modul fragt eine Online-PubMed-Datenbank nach allen Veröffentlichungen ab, die mit Eingabedaten übereinstimmen. Konfigurierbare Parameter für das Modul umfassen, ohne Einschränkungen, einen ID-Parameter und einen Überprüfungsparameter.
-
In einer Ausführungsform können verschiedene Arbeitsablauf-Knotenarten, die von dem hier beschriebenen System unterstützt werden, ohne Einschränkung, Knoten umfassen, die eines oder mehrere der Folgenden repräsentieren: Quellfunktionen, die Daten von einer oder mehreren Quellen mittels verschiedenen Abfrage und/oder Scraping-Techniken abrufen; Aggregierungsfunktionen, etwa zusammenfassende und durchschnittliche Ergebnisse von Daten; Filterfunktionen, die Untermengen von Mengen von biologischen Objekten auswählen, gestützt auf verschiedene Übereinstimmungskriterien und/oder Schwellenwerte; Sequenz-Aufteilungsfunktionen, die einen Abschnitt von einer Sequenz oder einem Alignment auswählen und diesen Abschnitt als neues Datenobjekt verwenden; Vergleichsfunktionen, die zwei oder mehr biologische Objekte oder Mengen von Objekten vergleichen, gestützt auf eine oder mehrere angegebene Metriken, und ermitteln, ob die Unterschiede statistisch signifikant sind; Vergleichsfunktionen, die Patientenkohorten vergleichen; Umwandlungs- und Modifikationsfunktionen; Sequenz-Alignment-Erzeugungsfunktionen; Sequenz-Alignment-Analysefunktionen; Vorhersagefunktionen, die Stellen einer Sequenz vorhersagen, die für Annotationen oder andere Merkmale von Interesse sind; Annotationsfunktionen, um Annotationen automatisch zu erzeugen; Annotationssuchfunktionen; Funktionen zur Verarbeitung von natürlichen Sprachen für Veröffentlichungen; Suchfunktionen, um Krankheiten zu identifizieren, die mit bestimmten Genobjekten verbunden sind; und Speicherfunktionen, die verschiedene Annotationen oder andere Ausgaben an verschiedenen Speicherorten speichern und Ausgaben anderen Nutzern zugänglich machen.
-
In einer Ausführungsform umfassen andere beispielhafte Module, mit denen verschiedene Arbeitsablauf-Knotenarten verbunden werden können, ohne Einschränkung, Module, die die folgenden Arten von Analysen implementieren: Allele-Tests, Gentyp-Frequenz-Tests, Hardy-Weinberg-Gleichgewichts-Tests, Raten von fehlenden Genotypen, Inzuchttests, Identity-by-State- und Identity-by-Descent-Statistiken für Individuen und Paare von Individuen, nicht-Mendelsche Übertragung in Familiendaten, Complete-Linkage-Hierarchical-Clustering, multidimensionale Skalenanalyse, um Unterstrukturen zu visualisieren, Signifikanztests dafür, ob zwei Individuen der gleichen Population angehören, beschränkte Cluster-Lösungen nach Phänotyp, Cluster-Größe und/oder externe Übereinstimmungskriterien, nachfolgende Assoziationsanalysen, die von Cluster-Lösungen abhängen, Standard-Allele-Tests, Exakte Tests nach Fisher, Cochran-Armitage-Trend-Tests, Mantel-Haenszel- und Breslow-Day-Tests für geschichtete Stichproben, dominant/rezessiv- und Allgemeines-Modell-Tests, Modell-Vergleichs-Tests (z. B. allgemeines vs. multiplikatives Modell), familienbasierte Assoziationstests, etwa Transmission-Disequilibrium-Tests oder Sibship-Tests, quantitative Merkmale, Assoziationen und Interaktionen, Assoziationstests, die von einem oder mehreren Single-Nucleotide-Polymorphismen („SNPs”) abhängen, asymptotische und empirische P-Werte, flexible geclusterte Permutationsschemata, Analyse von Gentyp-Wahrscheinlichkeitsdaten und fraktionellen Allele-Zählungen (nach der Imputation), bedingte Haplotyp-Tests, Fall/Steuerungund Transmission-Disequilibrium-Assoziationstests auf der probabilistischen Haplotyp-Phase, Proxy-Assoziationsverfahren zur Untersuchung von einzelnen SNP-Assoziationen in ihrem lokalen haplotypischen Kontext, Imputationsheuristiken, um nicht typisierte SNPs zu testen, wenn ein Referenzpaneel gegeben ist, Gemeinsame-SNP- und Copy-Number-Variation(„CNV”)-Tests für Copy-Number-Varianten, Filter- und Zusammenfassungsverfahren für segmentäre (seltene) CNV-Daten, Fall/Kontroll-Vergleichstests für globale CNV-Eigenschaften, permutationsbasierte Assoziationsverfahren zum Identifizieren von spezifischen Loci, genbasierte Assoziationstests, Screening nach Epistasis, Gen-Umgebung-Interaktion mit gleichförmigen und zweigeteilten Umgebungen und/oder Fixed-Effects- und Random-Effects-Modelle.
-
6.0. BEISPIELHAFTE ANWENDUNGSFÄLLE
-
Die folgenden Beispiele zeigen, wie ein Nutzer einen Arbeitsablauf verwenden kann, um verschiedene Ziele zu vereinfachen, die mit Genomdaten zusammenhängen. Die Beispiele dienen nur der Erklärung und sind nicht einschränkend für die Arten von Zielen, auf die der Arbeitsablauf angewendet werden kann. Es gibt natürlich viele andere Arten von Arbeitsabläufen, die unten nicht beschrieben sind, einschließlich, ohne Einschränkung, Arbeitsabläufe für Epigenetik, Auswirkungen von Copy-Number-Variationen, evolutionäre Biologie und nichtcodierte RNS-Analyse.
-
6.1. GEN-ANNOTATION
-
Eine Verwendung für die Arbeitsabläufe, die hier beschrieben sind, liegt in der Lösung von Problemen bei der Gen-Annotation. Stämme von Lactobacillus acidophilus, die häufig in Probiotika und möglichen Impfungsvektoren von Interesse sind, haben beispielsweise manchmal ein Protein der Oberflächenschicht zum Anhaften an Zellen. Ein Forscher kann einen neuen Stamm von L. acidophilus sequenzieren. Wenn der Forscher den neuen Stamm mit den Referenzsequenzen aliniert, findet der Forscher, dass dem neuen Stamm das SlpA-Gen fehlt, er jedoch eine unbekannte Insertion hat. Der Forscher entscheidet, dass der neue Stamm interessant sein kann und will herausfinden, ob der neue Stamm ein Gen ist, die wahrscheinliche Funktion des Proteins, das der neue Stamm codiert, den biologischen Kontext des neuen Stamms und wie sich der Stamm zu Proteinen verhält, die schon bekannt sind.
-
Ein beispielhafter Arbeitsablauf, um dazu beizutragen, diese Ziele zu erreichen, kann wie folgt aussehen. Eine erste Menge von einem oder mehreren Vorgangsknoten lädt die richtige DNS-Sequenz und Metadaten, einschließlich der Quelle, des Sequenzierungsverfahrens, des Datums und der Qualität. Eine zweite Menge von einem oder mehreren Vorgangsknoten führt ein GLIMMER-Werkzeug aus, um ein oder mehrere Gene vorherzusagen, gestützt auf die geladenen Daten. Eine dritte Menge von einem oder mehreren Vorgangsknoten führt ein Mehr-Sequenz-Alignment und einen Mehr-Sequenz-Vergleich aus, um die Sequenz mit einem zugehörigen Bereich der L. acidophilus-Referenzsequenz zu vergleichen, wodurch ein Genomobjekt mit annotierten Genen erzeugt wird. Eine vierte Menge von einem oder mehreren Vorgangsknoten übersetzt das Genomobjekt in eine Proteinsequenz. Eine fünfte Menge von einem oder mehreren Vorgangsknoten sagt Pfams und GO-Termini voraus. Eine sechste Menge von einem oder mehreren Vorgangsknoten führt BLAST auf der Proteinsequenz aus, um die Fragen zu beantworten, welche Pfams und GO-Termini unter den Spitzenergebnissen am häufigsten sind, wie diese Termini sich mit denen des vorhergesagten Proteins überschneiden und wie nahe verwandt die Bakterien der Spitzenergebnisse mit L. acidophilus sind. Eine siebte Menge von einem oder mehreren Vorgangsknoten sucht nach bekannten Wegen, mit denen die Spitzenergebnisse zusammenhängen, mittels Metacyc und E. C.-Nummern. Eine achte Menge von einem oder mehreren Vorgangsknoten ruft PubMed-Daten für die Spitzen-BLAST-Ergebnisse ab. Eine neunte Menge von einem oder mehreren Vorgangsknoten findet Gene und Merkmale, die der Insertion vorgelagert und nachgelagert sind, und ermittelt, was die Funktionen dieser Stellen sind. Eine zehnte Menge von einem oder mehreren Vorgangsknoten führt ein Merkmals-/Annotationsmodul aus, um das Gen mit den PubMed-Annotationen der BLAST-Ergebnisse zu vergleichen, um einzigartige Merkmale des Gens zu identifizieren. Eine elfte Menge von einem oder mehreren Vorgangsknoten fügt geeignete Annotationen, die die einzigartigen Merkmale betreffen, als Annotationen für das Gen hinzu und verlinkt die Annotationen zurück mit dem Genom.
-
In einer Ausführungsform können verschiedene Vorgänge menschliche Eingriffe erfordern, um wichtige Datenpunkte zu identifizieren, bevor zu dem nächsten Knoten fortgeschritten wird. In einer Ausführungsform ist der Arbeitsablauf vollständig automatisiert, ohne menschliche Eingriffe. In einer Ausführungsform kann ein solcher Arbeitsablauf für erneute Verwendung gespeichert werden. Das nächste Mal, wenn der Forscher einen neuen Stamm entdeckt, kann der Forscher denselben Arbeitsablauf mit Bezug auf den neuen Stamm ausführen, einfach indem er die Eingabe des ursprünglichen Arbeitsablaufs modifiziert.
-
6.2. SEQUENZ-STRUKTUR-FUNKTION-KRANKHEIT
-
Eine andere Verwendung der Arbeitsabläufe, die hier beschrieben sind, liegt darin, Probleme mit Sequenz-Struktur-Funktion-Krankheit mit Bezug auf ein Gen zu lösen. Ein Forscher kann beispielsweise einen Arbeitsablauf erstellen, der Fragen beantwortet, wie welche Implikationen es von den Polymorphismen in einem Gen dafür gibt, wie und wann das Gen exprimiert wird, welche Implikationen es von den Polymorphismen in dem Protein gibt, das es codiert, um mit seinem Kofaktor zu interagieren, und wie diese Implikationen mit der Rolle des Gens in der Krankheit zusammenhängen.
-
Ein beispielhafter Arbeitsablauf, um zum Erreichen dieser Ziele beizutragen, kann wie folgt aussehen: Eine erste Menge von einem oder mehreren Vorgangsknoten führt ein Mehr-Sequenz-Alignment der Varianten des Gens aus. Eine zweite Menge von einem oder mehreren Vorgangsknoten verwendet aufgezeichnete Beobachtung von Mikroarray-Expressionsdaten unter verschiedenen Versuchsbedingungen, um Muster von geänderter Aktivität zu identifizieren. Das Identifizierungsverfahren kann Mehr-Hypothesen-t-Tests und/oder andere Algorithmen umfassen, um Mutationen statistisch zu identifizieren, die mit Expressionsänderungen unter einer oder mehreren Bedingungen korreliert sind. Eine dritte Menge von einem oder mehreren Vorgangsknoten fügt einen Verlauf von annotierten Merkmalen hinzu, etwa regulatorischen Sequenzen, die mit den experimentellen Expressionsdaten verglichen werden sollen. Eine vierte Menge von einem oder mehreren Vorgangsknoten führt ein Mehr-Sequenz-Alignment der Varianten des Proteins aus. Eine fünfte Menge von einem oder mehreren Vorgangsknoten führt eine aufgezeichnete Beobachtung der Aktivitätslevels, etwa der Bindungsaffinität. Eine sechste Menge von einem oder mehreren Vorgangsknoten untersucht einzelne Assays in einem Tabellenansicht-Modul, um die Reihenfolge der Varianten nach Bindungsaffinität zu ermitteln.
-
Eine siebte Menge von einem oder mehreren Vorgangsknoten verwendet ein Strukturansicht-Modul, um festzustellen, wie die Bindungsaffinität durch Aminosäuremutationen beeinflusst sein kann, einschließlich der Vorhersage von wichtigen Interaktionen (H-Bindungen, pi-pi-Interaktionen, sterischen Interaktionen). Eine achte Menge von einer oder mehreren Vorgangsknoten sucht in PubChem nach zusätzlichen relevanten Assays. Eine neunte Menge von einer oder mehreren Vorgangsknoten sucht nach den Wegen, in denen sich das Protein befindet. Eine zehnte Menge von einer oder mehreren Vorgangsknoten sucht in PubMed nach Elementen, die sowohl mit dem Gen als auch mit einer Krankheit verbunden sind. Eine elfte Menge von einer oder mehreren Vorgangsknoten importiert die anderen Komponenten des biologischen Wegs, von dem angenommen wird, dass er Gen und Krankheit verbindet, von Uniprot und/oder anderen Datenbanken und zeichnet den biologischen Weg auf.
-
6.3. PROTEINDESIGN
-
Eine andere Verwendung für den Arbeitsablauf, der hier beschrieben ist, liegt im Lösen von Problemen beim Proteindesign. Ein Forscher kann beispielsweise eine Menge von Kandidaten-Proteinen entwerfen wollen, um eine bestimmte chemische Funktion auszuführen, etwa Tyrosin Decarboxylase. Der Forscher wird diese Proteine herstellen lassen und sie dann in einem Bakterium ausprobieren, dem diese Aktivität fehlt.
-
Ein beispielhafter Arbeitsablauf, der dazu beiträgt, diese Ziele zu verwirklichen, kann wie folgt aussehen. Eine erste Menge von einer oder mehreren Vorgangsknoten sucht in Uniprot nach Proteinen mit Pfam PF00282 (Pyridoxal-abhängiger Decarboxylase). Eine zweite Menge von einer oder mehreren Vorgangsknoten sucht in Pfam nach PF00282 und verbindet die Ergebnisse mit den Uniprot-Ergebnissen. Eine dritte Menge von einer oder mehreren Vorgangsknoten filtert BLAST auf dieser Menge von Proteinsequenzen gegen sich selbst aus, um alle möglichen paarweisen BLAST-Vergleiche zu erzeugen. Eine vierte Menge von einer oder mehreren Vorgangsknoten clustert die Ergebnisse, gestützt auf die BLAST-Scores. Eine fünfte Menge von einer oder mehreren Vorgangsknoten betrachtet die Annotationen von jedem Cluster und ermittelt, ob es mehr als einen Cluster gibt, der mit Tyrosin-Decarboxylase-Aktivität annotiert ist. Eine sechste Menge von einer oder mehreren Vorgangsknoten aliniert die Sequenzen von jedem der Cluster, annotiert mit Y-Decarb-Aktivität. Das Alignment erreicht zwei Ziele. Zuerst erlaubt das Alignment einen Vergleich der konservierten Bereiche innerhalb und zwischen Alignments. Zweitens gruppiert das Alignment Untermengen von alinierten Sequenzen, visuell oder algorithmisch, gestützt auf Ähnlichkeit. Eine siebte Menge von einer oder mehreren Vorgangsknoten erzeugt eine Menge von Kandidatenproteinen, die für die Alignments insofern repräsentativ sind, dass die Kandidatenproteine eine gemeinsame Sequenz in den konservierten Bereichen haben. Eine achte Menge von einer oder mehreren Vorgangsknoten betrachtet die Bakterien, die die BLAST-Ergebnis-Proteine produzieren, und ermittelt, welches Bakterium dem Test-Bakterium des Forschers am ähnlichsten ist, gestützt auf phylogenetische Informationen. Dies kann es beinhalten, dass das Y-Decarb von einem Bakterium candidatel benannt wird, candidatel zu der Liste von Kandidatenproteinen hinzugefügt wird und die nicht konservierten Bereiche der anderen Kandidaten mit der Sequenz von candidatel gefüllt werden. Eine neunte Menge von einer oder mehreren Vorgangsknoten sucht in PubMed oder anderen Datenbanken nach Vergleichen der Nische und des Metabolismus' der zwei Spezies. Eine zehnte Menge von einer oder mehreren Vorgangsknoten sucht in PubMed oder anderen Datenbanken, um herauszufinden, was darüber hinaus über candidatel in dem anderen Bakterium bekannt ist. Eine elfte Menge von einer oder mehreren Vorgangsknoten analysiert die annotierten Merkmale von candidatel, um zu ergründen, ob irgendwelche Bereiche in den anderen Kandidaten gestört werden. Eine zwölfte Menge von einer oder mehreren Vorgangsknoten analysiert die Struktur von candidate 1 und das Alignment jedes der anderen Kandidaten mit candidate 1, um zu ermitteln, wo die Änderungen der Sequenz die Struktur beeinflussen können. Dies kann das Verketten der Kandidatensequenz in die Struktur von candidatel oder sowohl das Verketten in die ähnlichste bestehende PDB-Struktur als auch das Auffinden von Differenzen umfassen. Eine dreizehnte Menge von einer oder mehreren Vorgangsknoten exportiert die Sequenzen der Kandidatenproteine in eine Datenbank für spätere Referenzierung.
-
6.4. ASSOZIATIONSSTUDIE IM GESAMTEN GENOM
-
Eine weitere Verwendung für die Arbeitsabläufe, der hier beschrieben sind, liegt in Assoziationsstudien im gesamten Genom. Ein Forscher kann beispielsweise neugierig sein, welche SNPs (wenn überhaupt) in einer Menge von Genomen mit dem Auftreten einer Krankheit verbunden sind. Der Forscher hat eine Menge von Individuen in verschiedenen Stadien der Krankheit, was durch eine Biomarker-Konzentration gemessen wird. Bei allen Individuen wird der Genotyp mittels eines SNP-Chips mit 1 Million SNPs erstellt. Eine Qualitätskontrolle wurde schon durchgeführt.
-
Ein beispielhafter Arbeitsablauf, um dazu beizutragen, die Assoziationsstudien im gesamten Genom zu verwirklichen, sieht wie folgt aus: Eine erste Menge von einem oder mehreren Vorgangsknoten verwendet Plink, Eigenstrat und/oder R-Module, um zusammenfassende Statistiken zu berechnen, einschließlich der Allele-Häufigkeit und SNP-Häufigkeit. Eine zweite Menge von einem oder mehreren Vorgangsknoten verwendet diese Module, um die Statistiken anzupassen, um Populationsschichtung einzubeziehen (d. h. Verzerrung aufgrund von Vorfahren/Verwandtschaft in dem Fall oder der Kontrollgruppe), wobei Identity-by-State-(IBS)- oder multidimensionale Skalierung verwendet wird. Eine dritte Menge von einem oder mehreren Vorgangsknoten verwendet diese Module, um eine Vielzahl von Assoziationstests auszuführen, um zu ermitteln, wie der Genotyp mit Krankheiten verbunden ist. Die Tests umfassen den exakten Test nach Fisher, Chi-Quadrat, Korrelation und Regression. Insbesondere können die folgenden Analysen ausgeführt werden: Basis-Allele (wie jedes Allel verknüpft ist), gentypische Tests (wie jedes Paar von Allelen verknüpft ist), additives Modell (hat das Vorhandensein von zwei Exemplaren eines Allels, gegenüber keinem, den doppelten Effekt, wie das Vorhandensein von einem Exemplar, gegenüber keinem), dominantes Modell (mindestens eines der untergeordneten Allele gegenüber keinem), rezessives Modell (zwei untergeordnete Allele gegenüber einem oder keinem). Eine vierte Menge von einem oder mehreren Vorgangsknoten verwendet ein Manhattan-Plot-Modul, möglicherweise mit einem ggplot2-R-Paket, um einen Plot der P-Werte aller SNPs entlang der genomischen Achse zu erzeugen. Eine fünfte Menge von einem oder mehreren Vorgangsknoten extrahiert SNPs, nach der Mehr-Hypothesen-Korrektur, mit einem P-Wert unter einem Schwellenwert (z. B. p = 10^ – 8). Eine sechste Menge von einem oder mehreren Vorgangsknoten erzeugt Mehr-Sequenz-Alignments von dem Bereich jedes der SNPs. Die Mehr-Sequenz-Alignments sind nach Fall/Kontrollgruppe geordnet. Eine siebte Menge von einem oder mehreren Vorgangsknoten sucht in dbSNP oder anderen Datenbanken nach den SNPs, um zu ermitteln, ob sie mit irgendetwas anderem verknüpft sind. Eine achte Menge von einem oder mehreren Vorgangsknoten sucht nach anderen Annotationen in diesen Bereichen, um funktionale Hypothesen zu bilden.
-
7.0. HARDWARE-ÜBERBLICK
-
Gemäß einer Ausführungsform werden die hier beschriebenen Techniken durch eine oder mehrere Spezial-Rechenvorrichtungen implementiert. Die Spezial-Rechenvorrichtungen können fest verdrahtet sein, um die Techniken auszuführen, oder können digitale elektronische Vorrichtungen umfassen, etwa eine oder mehrere anwendungsspezifische integrierte Schaltungen (ASICs) oder anwenderprogrammierbare Logikfelder (FPGAs), die dauerhaft programmiert sind, um die Techniken auszuführen, oder können eine oder mehrere allgemeine Allzweck-Hardwareprozessoren umfassen, die programmiert sind, um die Techniken in Antwort auf Programmbefehle in der Firmware, im Speicher, in anderen Speichervorrichtungen oder einer Kombination daraus auszuführen. Solche Spezial-Rechenvorrichtungen können auch kundenspezifische festverdrahtete Logiken, ASICs oder FPGAs mit kundenspezifischer Programmierung kombinieren, um die Techniken zu auszuführen. Die Spezial-Rechenvorrichtungen können Desktop-Computersysteme, tragbare Computersysteme, Handheld-Vorrichtungen, Netzwerk-Vorrichtungen oder jede andere Vorrichtung sein, die festverdrahtete und/oder Programmlogik umfasst, um die Techniken zu implementieren.
-
15 ist beispielsweise ein Blockdiagramm, das ein Computersystem 1500 zeigt, auf dem eine Ausführungsform der Erfindung implementiert werden kann. Das Computersystem 1500 umfasst einen Bus 1502 oder einen anderen Kommunikationsmechanismus, um Informationen zu übertragen, und einen Hardwareprozessor 1504, der mit dem Bus 1502 verbunden ist, um Informationen zu verarbeiten. Der Hardwareprozessor 1504 kann beispielsweise ein Allzweck-Mikroprozessor sein.
-
Das Computersystem 1500 umfasst auch einen Hauptspeicher 1506, etwa Arbeitsspeicher (RAM) oder eine andere dynamische Speichervorrichtung, die mit dem Bus 1502 verbunden ist, um Informationen und Befehle zu speichern, die von dem Prozessor 1504 ausgeführt werden sollen. Der Hauptspeicher 1506 kann auch verwendet werden, um temporäre Variablen oder andere Zwischeninformationen während dem Ausführen von Befehlen zu speichern, die von dem Prozessor 1504 ausgeführt werden sollen. Solche Befehle, wenn sie in nichtflüchtigen Speichermedien gespeichert sind, auf die der Prozessor 1504 zugreifen kann, machen das Computersystem 1500 zu einem Spezialgerät, das angepasst ist, die Vorgänge auszuführen, die in den Befehlen angegeben sind.
-
Das Computersystem 1500 umfasst weiter einen Festspeicher (ROM) 1508 oder eine andere statische Speichervorrichtung, die mit dem Bus 1502 verbunden ist, um statische Informationen und Befehle für den Prozessor 1504 zu speichern. Eine Speichervorrichtung 1510, etwa eine Magnetplatte oder eine optische Platte, ist vorgesehen und mit dem Bus 1502 verbunden, um Informationen und Befehle zu speichern.
-
Das Computersystem 1500 kann über den Bus 1502 mit einer Anzeige 1512 verbunden sein, etwa eine Bildröhre (CRT), um Informationen einem Nutzer anzuzeigen. Eine Eingabevorrichtung 1514, die alphanumerische und andere Tasten umfasst, ist mit dem Bus 1502 verbunden, um Informationen und Auswahl von Befehlen an den Prozessor 1504 zu übertragen.
-
Eine andere Art von Nutzereingabevorrichtung ist eine Cursorsteuerung 1516, etwa eine Maus, ein Trackball oder Cursor-Richtungstasten zum Übertragen von Richtungsinformationen und Auswahl von Befehlen an den Prozessor 1504 zu übertragen und um die Bewegung des Cursors auf der Anzeige 1512 zu steuern. Die Eingabevorrichtung hat üblicherweise zwei Freiheitsgrade in zwei Achsen, eine erste Achse (z. B. x) und eine zweite Achse (z. B. y), die es der Vorrichtung erlauben, Positionen in einer Ebene anzugeben.
-
Das Computersystem 1500 kann die hier beschriebenen Techniken mittels kundenspezifischer festverdrahteter Logik, einer oder mehreren ASICs oder FPGAs, Firmware und/oder Programmlogik implementieren, die zusammen mit dem Computersystem das Computersystem 1500 veranlassen oder so programmieren, dass es zu einem Spezialgerät wird. Gemäß einer Ausführungsform werden die hier beschriebenen Techniken durch das Computersystem 1500 in Antwort darauf ausgeführt, dass der Prozessor 1504 eine oder mehrere Folgen von einem oder mehreren Befehlen ausführt, die im Hauptspeicher 1506 enthalten sind. Solche Befehle können in den Hauptspeicher 1506 von einem anderen Speichermedium gelesen werden, etwa der Speichervorrichtung 1510. Das Ausführen der Folge von Befehlen, die im Hauptspeicher 1506 enthalten sind, veranlasst den Prozessor 1504, die hier beschriebenen Verfahrensschritte auszuführen. In alternativen Ausführungsformen können festverdrahtete Schaltungen anstatt oder in Kombination mit Softwarebefehlen verwendet werden.
-
Der Begriff „Speichermedium”, wie er hier verwendet wird, bezieht sich auf jedes nichtflüchtige Medium, das Daten und/oder Befehle speichert, die ein Gerät veranlassen, in einer bestimmten Weise zu arbeiten. Solche Speichermedien können nichtflüchtige Medien und/oder flüchtige Medien umfassen. Nichtflüchtige Medien umfassen beispielsweise optische oder Magnetplatten, etwa die Speichervorrichtung 1510. Flüchtige Speicher umfassen dynamischen Speicher, etwa den Hauptspeicher 1506. Übliche Formen von Speichermedien umfassen beispielsweise Floppydisks, Disketten, Festplatten, Solid-State-Drives, Magnetband, jedes andere magnetische Datenspeichermedium, eine CD-ROM, jedes andere optische Datenspeichermedium, jedes physikalische Medium mit Muster von Löchern, RAM, PROM und EPROM, Flash-EPROM, NVRAM, jeden anderen Speicherchip oder jede andere Kassette. Die Begriffe computerlesbares Medium und Speichermedium, wie sie hier verwendet werden, umfassen nichtflüchtige Medien sowie Übertragungsmedien.
-
Speichermedien unterscheiden sich von Übertragungsmedien, können aber mit ihnen zusammen verwendet werden. Übertragungsmedien tragen dazu bei, Informationen zwischen Speichermedien zu übertragen. Übertragungsmedien umfassen beispielsweise Koaxialkabel, Kupferkabel und Glasfasern, einschließlich der Kabel, die den Bus 1502 bilden. Übertragungsmedien können auch die Form von akustischen oder Lichtwellen annehmen, etwa denen, die während Radio- und Infrarot-Datenkommunikation erzeugt werden.
-
Verschiedene Arten von Medien können daran beteiligt sein, eine oder mehrere Folgen von einem oder mehreren Befehlen zu dem Prozessor 1504 zur Ausführung zu übertragen. Die Befehle können beispielsweise anfangs auf einer Magnetplatte oder einem Solid-State-Drive eines entfernten Computers gespeichert sein. Der entfernte Computer kann die Befehle in seinen dynamischen Speicher laden und die Befehle über eine Telefonleitung mittels eines Modems übertragen. Ein Modem, das in der Nähe des Computersystems 1500 liegt, kann die Daten auf der Telefonleitung empfangen und einen Infrarotsender verwenden, um die Daten in eine Infrarotsignal umzuwandeln. Ein Infrarotempfänger kann die Daten empfangen, die in dem Infrarotsignal übertragen werden, und geeignete Schaltungen können die Daten auf den Bus 1502 legen. Der Bus 1502 überträgt die Daten zu dem Hauptspeicher 1506, von dem der Prozessor 1504 die Befehle abruft und ausführt. Die Befehle, die von dem Hauptspeicher 1506 empfangen werden, können optional in der Speichervorrichtung 1510 gespeichert werden, entweder bevor oder nachdem sie von dem Prozessor 1504 ausgeführt werden.
-
Das Computersystem 1500 umfasst auch eine Kommunikationsschnittstelle 1518, die mit dem Bus 1502 verbunden ist. Die Kommunikationsschnittstelle 1518 stellt eine Zwei-Wege-Datenkommunikationsverbindung mit einer Netzwerkverbindung 1520 bereit, die mit einem lokalen Netzwerk 1522 verbunden ist. Die Kommunikationsschnittstelle 1518 kann beispielsweise eine ISDN-Karte, ein Kabelmodem, ein Satellitenmodem oder ein Modem sein, um eine Datenkommunikationsverbindung zu einer entsprechenden Art von Telefonleitung herzustellen. Als weiteres Beispiel kann die Kommunikationsschnittstelle 1518 eine LAN-Karte sein, um eine Datenkommunikationsverbindung zu einem kompatiblen LAN herzustellen. Drahtlose Verbindungen können auch implementiert werden. In einer solchen Implementierung sendet und empfängt die Kommunikationsschnittstelle 1518 elektrische, elektromagnetische oder optische Signale, die digitale Datenströme übertragen, die verschiedene Arten von Informationen repräsentieren.
-
Die Netzwerkverbindung 1520 stellt üblicherweise Datenkommunikation über ein oder mehrere Netzwerke zu anderen Datenvorrichtungen bereit. Die Netzwerkverbindung 1520 kann beispielsweise eine Verbindung über ein lokales Netzwerk 1522 zu einem Host-Computer 1524 oder zu Datengeräten herstellen, die von einem Internet-Service-Provider (ISP) 1526 betrieben werden. Der ISP 1526 stellt seinerseits Datenkommunikationsdienste über das weltweite Paket-Datenkommunikationsnetzwerk bereit, das heute üblicherweise als „Internet” 1528 bezeichnet wird. Das lokale Netzwerk 1522 und das Internet 1528 verwenden beide elektrische, elektromagnetische oder optische Signale, die digitale Datenströme übertragen. Die Signale über die verschiedenen Netzwerke und die Signale auf der Netzwerkverbindung 1520 und über die Kommunikationsschnittstelle 1518, die die digitalen Daten zu und von dem Computersystem 1500 übertragen, sind Beispielformen von Übertragungsmedien.
-
Das Computersystem 1500 kann über das/die Netzwerk(e), die Netzwerkverbindung 1520 und die Kommunikationsschnittstelle 1518 Nachrichten senden und Daten empfangen, einschließlich Programmcode. Bei dem Internetbeispiel könnte ein Server 1530 einen angeforderten Code für ein Anwendungsprogramm über das Internet 1518, den ISP 1526, das lokale Netzwerk 1522 und die Kommunikationsschnittstelle 1518 übertragen.
-
Der empfangene Code kann von dem Prozessor 1504 so ausgeführt werden, wie er empfangen wurde, und/oder in der Speichervorrichtung 1510 oder einem anderen nichtflüchtigen Speicher gespeichert werden, um später ausgeführt zu werden.
-
In der vorangegangenen Beschreibung wurden Ausführungsformen der Erfindung mit Bezug auf viele spezielle Details beschrieben, die sich von Implementierung zu Implementierung unterscheiden können. Die Beschreibung und die Zeichnungen sollen daher in einem beschreibenden und nicht einem einschränkenden Sinn verstanden werden. Die einzige und exklusive Festlegung des Schutzumfangs der Erfindung und was von den Anmeldern als Schutzumfang der Erfindung angesehen wird, ist der buchstäbliche und äquivalente Schutzumfang der Menge der Ansprüche, die in dieser Anmeldung angegeben sind, in der spezifischen Form, in der diese Ansprüche angegeben sind, einschließlich aller nachfolgenden Korrekturen.