-
HINTERGRUND
DER ERFINDUNG
-
Die vorliegende Erfindung betrifft
Verfahren und eine Vorrichtung zum Steuern von automatisierten Materialhandhabungsprozeduren.
-
Herkömmlicherweise ist die Entdeckung
und Entwicklung von Materialien vor allem durch Proben und Versuche
bestimmt, die durch Wissenschaftler durchgeführt werden, wobei jeweils durch
Experimente Daten erzeugt werden. Dieser Prozess erzeugt niedrige
Erfolgsraten, lange Laufzeiten und hohe Kosten, insbesondere wenn
die gewünschten
Materialien an Komplexität
zunehmen. Wenn ein Material aus mehreren Komponenten besteht, bietet
die Theorie wenig Anleitung, während
die große
Vielfältigkeit
von Kombinationsmöglichkeiten
für die
Komponenten eine beträchtliche
Zeitdauer für
die Vorbereitung und Analyse erfordert.
-
Die Materialkombinationswissenschaft
beschäftigt
sich mit diesen Anforderungen. Die Materialkombinationswissenschaft
verwendet allgemein Verfahren zum Erstellen einer Sammlung (oder „Bibliothek") von chemisch verschiedenen
Verbindungen oder Materialien und/oder Verfahren zum schnellen Testen
und Analysieren derartiger Bibliotheken in Bezug auf gewünschte Leistungseigenschaften.
Durch ein paralleles oder schnelles serielles Testen von vielen
Verbindungen oder Materialien beschleunigen Kombinationstechniken die
Geschwindigkeit der Untersuchung, vereinfachen Durchbrüche und
erweitern die für
Forscher verfügbaren Informationen.
Weiterhin versetzt die Möglichkeit
zur Untersuchung der Beziehungen zwischen Hunderten und Tausenden
von Materialien innerhalb von kurzer Zeit die Wissenschaftler in
die Lage, entsprechende Entscheidungen im Entdeckungsprozess zu
treffen und unerwartete Trends zu identifizieren.
-
Die Implementierung von Kombinationsanalyseverfahren
hängt von
der Fähigkeit
ab, Bibliotheken zu Materialien unter Verwendung von Kombinationssyntheseverfahren
vorzubereiten. Diese Techniken verwenden gewöhnlich einen Roboter für die automatische
Vorbereitung und Analyse einer Bibliothek, wobei Computerprogramme
zur Steuerung derartiger Roboter verwendet werden. Ein derartiges
Computerprogramm ist in US-5 614 608 angegeben.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Die Erfindung gibt Verfahren und
eine Vorrichtung einschließlich
von Computerprogrammprodukten an, die betrieben werden können, um
automatische Materialhandhabungsprozeduren zu steuern. Die Erfindung
ist insbesondere nützlich
für die
Steuerung der automatisierten Synthese und/der Analyse von kombinatorischen
Bibliotheken, wobei sie jedoch allgemein nützlich für die Steuerung von Materialhandhabungsprozeduren
ist, welche die Übertragung
von Materialien von einer oder mehreren Quellpositionen zu einer
oder mehreren Zielpositionen umfassen.
-
Allgemein gibt die Erfindung gemäß einem
Aspekt ein Computerprogramm auf einem Computer-lesbaren Medium zum
Steuern einer Materialhandhabungsvorrichtung gemäß Anspruch 1 an. Das Programm umfasst
Befehle, mit denen ein programmierbarer Prozessor eine Gruppe von
vorprogrammierten Codeobjekten vorsehen kann und von einem Benutzer
eine Auswahl und Anordnung von vorprogrammierten Codeobjekten von
der Gruppe empfangen kann. Die Gruppe umfasst ein erstes vorprogrammiertes
Codeobjekt, mit dem eine Eingabe zur Definition von einer oder mehreren
Quellkomponenten, einer oder mehreren Zielkomponenten und einer
oder mehreren Abbildungen empfangen werden kann. Jede Abbildung
nimmt auf eine Quellkomponente und eine Zielkomponente Bezug und
definiert eine oder mehrere Übertragungen
von wenigstens einem Quellkomponentenmaterial auf wenigstens ein
Zielkomponentenmaterial. Die Auswahl definiert einen Satz von Materialhandhabungsschritten.
Die Anordnung definiert eine Ausführungsreihenfolge für die ausgewählten vorprogrammierten
Codeobjekte.
-
Implementierungen der Erfindung können eines
oder mehrere der folgenden vorteilhaften Merkmale umfassen. Das
erste vorprogrammierte Codeobjekt kann betrieben werden, um mit
einem Benutzer für
den Empfang einer Abbildung zu interagieren. Das erste vorprogrammierte
Codeobjekt kann betrieben werden, um mit einem Benutzer zum Assoziieren
der Quellkomponente mit einer oder mehreren Quellpositionen sowie zum
Assoziieren der Zielkomponente mit einer Zielposition einschließlich eines
Zugangsanschlusses einer analytischen Einrichtung zu interagieren.
Die Eingabe ist eine Rezeptdatei, die Bibliotheksentwurfsinformation enthält, welche
die Quellkomponente, die Zielkomponente und die Abbildung definiert.
Die Materialhandhabungsschritte definieren eine Prozedur zum Synthetisieren
einer kombinatorischen Bibliothek aus Materialien. Die Abbildung
definiert einen Gradienten für
die Verteilung der Quellkomponentenmaterialien unter den Zielpositionen.
Das erste vorprogrammierte Codeobjekt kann betrieben werden, um
mit einem Benutzer zu interagieren, um die Quellkomponente mit einer
oder mehreren Zielpositionen zu assoziieren, von denen jede ein Quellkomponentenmaterial
aufweist, und um die Zielkomponente mit einer Vielzahl von Zielpositionen
in Entsprechung zu einer Vielzahl von Mitgliedern der kombinatorischen
Bibliothek zu assoziieren. Die Gruppe umfasst wenigstens ein zweites
vorprogrammiertes Codeobjekt, mit dem eine Abbildung für die Verarbeitung durch
wenigstens ein drittes vorprogrammiertes Codeobjekt etikettiert
werden kann, das nachfolgend in der Anordnung ausgeführt wird.
Die Anordnung umfasst eine logische Hierarchie mit einem übergeordneten
vorprogrammierten Codeobjektes und wenigstens einem untergeordneten
vorprogrammierten Codeobjekt. Mit dem übergeordneten vorprogrammierten
Codeobjekt kann eine Bedingung definiert werden, die bestimmt, ob das
wenigstens eine untergeordnete vorprogrammierte Codeobjekt nachfolgend
in der Anordnung ausgeführt wird.
Mit dem übergeordneten
vorprogrammierten Codeobjekt kann vorgesehen werden, dass das wenigstens eine
untergeordnete vorprogrammierte Codeobjekt wenigstens ein Mal für jede durch
die Eingabe durchgeführte
Abbilddung ausgeführt
wird. Mit dem übergeordneten
vorprogrammierten Codeobjekt kann vorgesehen werden, dass das wenigstens
eine untergeordnete vorprogrammierte Codeobjekt wenigstens ein Mal
für jede Übertragung
ausgeführt
wird, die durch eine der einen oder mehreren Abbildungen definiert
wird. Die Bedingung ist eine „for"-Bedingung. Die Bedingung ist eine „while"-Bedingung. Die Bedingung
ist eine „if"-Bedingung.
-
Allgemein gibt die Erfindung gemäß einem
weiteren Aspekt ein Computerprogramm zum Steuern einer automatisierten
Materialhandhabungsvorrichtung zum Ausführen eins Satzes von Materialhandhabungsschritten
nach Anspruch 15 an. Das Programm umfasst Befehle, die veranlassen,
dass ein programmierbarer Prozessor eine Rezeptdatei mit Komponenteninformation
und Abbildungsinformation empfängt,
mit einem Benutzer zur Erstellung einer Prozedur zum Ausführen des
Satzes von Materialhandhabungsschritten interagiert und veranlasst,
dass die automatisierte Materialhandhabungsvorrichtung den Satz
von Materialhandhabungsschritten durch die Ausführung der Prozedur durchführt. Die
Abbildungsinformation nimmt auf eine Quellkomponente und eine Zielkomponente
Bezug. Die Abbildungsinformation definiert eine oder mehrere Übertragungen
von wenigstens einem Quellkomponentenmaterial auf wenigstens ein
Zielkomponentenmaterial. Das Programm umfasst Befehle, um für den Benutzer
eine Gruppe aus vorprogrammierten Codeobjekten vorzusehen und von
dem Benutzer eine Auswahl und Anordnung der vorprogrammierten Codeobjekte
zu empfangen. Die Prozedur wird durch die Auswahl und Anordnung
des Benutzers definiert. Die Prozedur enthält wenigstens ein erstes vorprogrammiertes
Codeobjekt, mit dem die Rezeptdatei gelesen und interpretiert werden
kann, und ein zweites vorprogrammiertes Codeobjekt, mit dem eine
aus der Rezeptdatei gelesene Abbildung interpretiert werden kann.
-
Implementierungen der Erfindung umfassen
eines oder mehrere der folgenden vorteilhaften Merkmale. Das Programm
umfasst Befehle, mit denen veranlasst werden kann, dass ein programmierbarer
Prozessor mit einem Benutzer interagiert, um eine Ressourcenhierarchie
einschließlich
von einem oder mehreren Ressourcenobjekten zu erstellen, die wenigstens
eine Hardwareeinrichtung der automatisierten Materialhandhabungsvorrichtung
definieren, die mit dem programmierbaren Prozessor verbunden ist.
Das Programm umfasst Befehle, mit denen veranlasst werden kann,
dass ein programmierbarer Prozessor mit einem Benutzer interagiert,
um eine Systemhierarchie einschließlich von einem oder mehreren
Systemobjekten zu erstellen, die einen oder mehrere Roboterarme
definieren, die mit der wenigstens einen Hardwareeinrichtung der
automatisierten Materialhandhabungsvorrichtung verbunden sind. Das
Programm umfasst Befehle, mit denen veranlasst werden kann, dass
ein programmierbarer Prozessor mit einem Benutzer interagiert, um
eine Substrathierarchie einschließlich von einem oder mehreren
Substratobjekten zu erstellen, die eine Geometrie für wenigstens
ein Substrat definieren. Das Programm umfasst Befehle, mit denen
veranlasst werden kann, dass ein programmierbarer Prozessor mit
einem Benutzer interagiert, um eines oder mehrere Positionsobjekte
für jedes Substratobjekt
in der Substrathierarchie zu erstellen. Wenigstens ein Substratobjekt
entspricht einer oder mehreren Zielpositionen. Die Ausführung der
Prozedur übersetzt
die Komponenteninformation und die Abbildungsinformation zu Maschinenbefehlen
für die
Steuerung der automatisierten Materialhandhabungsvorrichtung. Das
Programm umfasst Befehle, mit denen der Benutzer die Prozedur während der
Ausführung
modifizieren kann.
-
Allgemein gibt die Erfindung gemäß einem
weiteren Aspekt ein Computer-implementiertes Verfahren zum Steuern
einer Materialhandhabungsvorrichtung gemäß dem Anspruch 24 an. Das Verfahren
umfasst das Vorsehen einer Gruppe von vorprogrammierten Codeobjekten
und das Empfangen einer Auswahl und einer Anordnung von vorprogrammierten
Codeobjekten aus der Gruppe vom Benutzer. Die Gruppe umfasst ein
erstes vorprogrammiertes Codeobjekt, mit dem eine Eingabe empfangen
werden kann, die eine oder mehrere Quellkomponenten, eine oder mehrere
Zielkomponenten und eine oder mehrere Abbildungen definiert. Jede Abbildung
bezieht sich auf eine Quellkomponente und eine Zielkomponente und
definiert eine oder mehrere Übertragungen
von wenigstens einem Quellkomponentenmaterial auf wenigstens eine
Zielkomponentenposition. Die Auswahl definiert einen Satz von Materialhandhabungsschritten.
Die Anordnung definiert einer Ausführungsreihenfolge für die ausgewählten vorprogrammierten
Codeobjekte.
-
Implementierungen der Erfindung können eine
oder mehrere der folgenden vorteilhaften Merkmale umfassen. Über das
erste vorprogrammierte Codeobjekt kann mit dem Benutzer für den Empfang
einer Abbildung zu interagieren. Über das erste vorprogrammierte
Codeobjekt kann mit einem Benutzer interagiert werden, um die Quellkomponente
mit einer oder mehreren Quellpositionen und die Zielkomponente mit
einer Zielposition zu assoziieren, die einen Zugangsanschluss einer
analytischen Einrichtung umfasst. Die Eingabe ist eine Rezeptdatei
mit Bibliotheksentwurfsinformation, welche die Quellkomponente,
die Zielkomponente und die Abbildung definiert. Die Materialhandhabungsschritte
definieren eine Prozedur zum Synthetisieren einer kombinatorischen
Bibliothek aus Materialien. Die Abbildung definiert einen Gradienten
zum Verteilen der Quellkomponentenmaterialien unter den Zielpositionen. Über das
erste vorprogrammierte Codeobjekt kann mit einem Benutzer interagiert
werden, um die Quellkomponente mit einer oder mehreren Zielpositionen
zu assoziieren, die jeweils ein Quellkomponentenmaterial aufweisen,
und um die Zielkomponente mit einer Vielzahl von Zielpositionen
zu assoziieren, die einer Vielzahl von Mitgliedern der kombinatorischen
Bibliothek entsprechen. Die Gruppe umfasst wenigstens ein zweites
vorprogrammiertes Codeobjekt, mit eine Abbildung für die Verarbeitung
durch wenigstens ein drittes vorprogrammiertes Codeobjekt, das daraufhin
in der Anordnung auszuschließen
ist, zu etikettieren. Die Anordnung umfasst eine logische Hierarchie
einschließlich
eines übergeordneten
vorprogrammierten Codeobjekts und wenigstens eines untergeordneten
vorprogrammierten Codeobjekts. Mit dem übergeordneten vorprogrammierten
Codeobjekt kann eine Bedingung definiert werden, die bestimmt, ob
das wenigstens eine untergeordnete vorprogrammierte Codeobjekt darauffolgend
in der Anordnung ausgeführt
wird. Das übergeordnete
vorprogrammierte Codeobjekt kann vorsehen, dass das wenigstens eine
untergeordnete vorprogrammierte Codeobjekt wenigstens ein Mal für jede durch
die Eingabe definierte Abbildung ausgeführt wird. Das übergeordnete
vorprogrammierte Codeobjekt kann vorsehen, dass das wenigstens eine
untergeordnete vorprogrammierte Codeobjekt wenigstens ein Mal für jede Übertragung
ausgeführt
wird, die durch eine der einen oder mehreren Abbildungen definiert
wird. Die Beindung ist eine „for"-Bedingung. Die Bedingung
ist eine „while"-Bedingung. Die Bedingung
ist eine „if"-Bedingung.
-
Allgemein gibt die Erfindung gemäß einem
weiteren Aspekt ein Verfahren zum Steuern einer automatisierten
Materialhandhabungsvorrichtung zum Ausführen eines Satzes von Materialausgabeschritten
nach Anspruch 38 an. Das Verfahren umfasst das Empfangen einer Rezeptdatei
mit Komponenteninformation und Abbildungsinformation, das Interagieren
mit einem Benutzer, um eine Prozedur zum Synthetisieren der kombinatorischen
Bibliothek zu erstellen, und das Veranlassen der automatisierten
Materialhandhabungsvorrichtung, um die kombinatorische Bibliothek
durch die Ausführung
der Prozedur zu synthetisieren. Die Abbildungsinformation bezieht
sich auf eine Quellkomponente und eine Zielkomponente. Die Abbildungsinformation
definiert eine oder mehrere Übertragungen
von wenigstens einem Quellkomponentenmaterial auf wenigstens eine Zielkomponentenposition.
Das Verfahren umfasst das Vorsehen einer Gruppe von vorprogrammierten
Codeobjekten für
den Benutzer und das Empfangen einer Auswahl und Anordnung der vorprogrammierten
Codeobjekte von dem Benutzer. Die Prozedur wird durch die Auswahl
und Anordnung des Benutzers definiert. Die Prozedur enthält wenigstens
ein erstes vorprogrammiertes Codeobjekt, mit dem die Rezeptdatei
gelesen und interpretiert werden kann, und wenigstens ein zweites
vorprogrammiertes Codeobjekt, mit dem eine aus der Rezeptdatei gelesene
Abbildung interpretiert werden kann.
-
Implementierungen der Erfindung können eine
oder mehrere der folgenden vorteilhaften Merkmale umfassen. Das
Verfahren umfasst die Interaktion mit einem Benutzer, um eine Ressourcenhierarchie
mit einem oder mehreren Ressourcenobjekten zu erstellen, die wenigstens
eine Hardwareeinrichtung der automatisierten Materialhandhabungsvorrichtung
zu definieren, die mit dem programmierbaren Prozessor verbunden ist.
Das Verfahren umfasst das Interagieren mit dem Benutzer, um eine
Systemhierarchie mit einem oder mehreren Systemobjekten zu erstellen,
die einen oder mehrere Roboterarme definieren, die mit der wenigstens
einen Hardwareeinrichtung der automatisierten Materialhandhabungsvorrichtung
verbunden sind. Das Verfahren umfasst das Interagieren mit einem
Benutzer, um eine Substrathierarchie mit einem oder mehreren Substratobjekten
zu erstellen, die eine Geometrie für wenigstens ein Substrat definieren.
Das Verfahren umfasst das Interagieren mit einem Benutzer, um ein
oder mehrere Positionsobjekte für
jedes Substratobjekt in der Substrathierarchie zu erstellen. Wenigstens
ein Substratobjekt entspricht einer oder mehreren Quellpositionen.
Wenigstens ein Substratobjekt entspricht einem oder mehreren Zielpositionen.
Die Ausführung
der Prozedur übersetzt
die Komponenteninformation und die Handhabungsinformation in Maschinenbefehle
zum Steuern der automatisierten Materialhandhabungsvorrichtung.
Das Verfahren umfasst das Modifizieren der Prozedur während der
Ausführung.
-
Allgemein gibt die Erfindung gemäß einem
weiteren Aspekt ein System zum Ausführen eines Satzes von Materialhandhabungsschritten
nach Anspruch 47 an. Das System umfasst eine Einrichtung zum Empfangen
einer Rezeptdatei mit Komponenteninformation und Abbildungsinformation,
eine Einrichtung zum Interagieren mit einem Benutzer, um eine Prozedur
zum Synthetisieren einer kombinatorischen Bibliothek aus Materialien
zu erstellen, und eine Einrichtung zum Synthetisieren der kombinatorischen
Bibliothek durch das Ausführen
der Prozedur. Die Abbildungsinformation nimmt auf eine Quellkomponente
und eine Zielkomponente Bezug und definiert eine oder mehrere Übertragungen
von wenigstens einem Quellkomponentenmaterial auf wenigstens eine
Zielkomponentenposition. Die Einrich tung zum Interagieren mit dem
Benutzer umfasst eine Einrichtung zum Vorsehen eine Gruppe von vorprogrammierten
Codeobjekten für
den Benutzer und eine Einrichtung zum Empfangen einer Auswahl und
einer Anordnung der vorprogrammierten Codeobjekte von dem Benutzer.
Die Prozedur wird durch die Auswahl und Anordnung des Benutzers
definiert. Die Prozedur enthält wenigstens
ein erstes vorprogrammiertes Codeobjekt, mit dem die Rezeptdatei
gelesen und interpretiert werden kann, und wenigstens ein zweites
vorprogrammiertes Codeobjekt, mit dem eine aus der Rezeptdatei gelesene
Abbildung interpretiert werden kann.
-
Zu den Vorteilen der Implementierungen
der Erfindung gehören
eine oder mehrere der folgenden. Die Verwendung von Codeblöcken erlaubt
es den Benutzern, weitreichend angepasste Prozeduren für viele
verschiedene Materialhandhabungsprozesse einschließlich der
Vorbereitung oder Synthese von Bibliotheken sowie der Kennzeichnung
von Materialbibliotheken zu erstellen. Es können neue Codeblöcke erzeugt
werden und es können
Sammlungen erstellt werden, die Codeblöcke für die Verwendung in zukünftigen
Prozeduren speichern. Prozeduren können unmittelbar geändert werden,
um Experimente und Prozessuntersuchungen zu unterstützen. Die
Prozeduren sind nicht auf bestimmte Hardwareeinrichtungen beschränkt. Die
Verwendung von Codeblöcken
in einer graphischen Programmierumgebung gestattet es den Benutzern,
Prozeduren zu erstellen, ohne dass sie hierfür Kenntnisse zu komplizierten
Programmiersprachen benötigen.
Die Prozeduren können
mit einer minimalen Benutzeraktion während der Ausführung durchgeführt werden.
Die Verwendung von Bibliotheksentwurfsdaten der höheren Ebene
gestattet die Synthese von Bibliotheken für verschiedene Entwurfsumgebungen.
-
Details von einer oder mehreren Ausführungsformen
der Erfindung werden in den beigefügten Zeichnungen und der folgenden
Beschreibung erläutert.
Andere Merkmale und Vorteile der Erfindung werden aus der Beschreibung,
den Zeichnungen und den Ansprüchen
deutlich.
-
KURZBESCHREIBUNG
DER ZEICHNUNGEN
-
1 ist
ein Blockdiagramm, das ein System zum Steuern einer automatisierten
Materialhandhabungsprozedur zeigt.
-
2 ist
ein Flussdiagramm, das allgemein ein Verfahren zum Steuern einer
automatisierten Materialhandhabungsprozedur zeigt.
-
3 ist
ein Flussdiagramm, das ein Verfahren zum Steuern einer automatisierten
Materialhandhabungsprozedur im größeren Detail zeigt.
-
4 ist
ein Beispiel eines Dialogfensters, das eine gemäß der beanspruchten Erfindung
erzeugte Prozedur zeigt.
-
5 ist
ein Flussdiagramm, das ein Verfahren zum Erstellen einer Prozedur
zeigt.
-
6 zeigt
ein Beispiel eines Dialogfensters mit einer Liste von Prozeduren
und einem Ereignisprotokoll gemäß der beanspruchten
Erfindung.
-
7 zeigt
ein Fenster für
eine Prozedur zum Verarbeiten von mehreren etikettierten Abbildungen zeigt.
-
8 zeigt
ein Fenster für
eine Materialhandhabungsprozedur zum Kennzeichnen einer Materialbibliothek.
-
Entsprechende Elemente in den verschiedenen
Zeichnungen werden durch gleiche Bezugszeichen angegeben.
-
AUSFÜHRLICHER
BESCHREIBUNG
-
Eine Reihe von durch einen Benutzer
ausgewählten
Prozeduren werden zum Implementieren eines Satzes von Materialverarbeitungsbefehlen
verwendet. In einer im Folgenden beschriebenen Ausführungsform werden
die Befehle aus einer Rezeptdatei für die automatisierte Synthese
einer kombinatorischen Materialbibliothek erhalten. Die Materialien
können
ein beliebiger Typ von einer chemischer Verbindung, eine Mischung oder
ein anderes interessantes Material sein. Die kombinatorische Materialbibliothek
wird vorbereitet, indem Komponenten auf einem Ziel wie etwa einer
Mikrotiterplatte, einem Siliziumwafer oder ähnlichem platziert werden.
Jedes Ziel umfasst eine Matrix von Bereichen, die zum Beispiel Vertiefungen
einer Mikrotiterplatte oder Positionen auf einem Wafer sein können. Der
resultierende Satz von Materialien ist die Bibliothek, die einen Satz
von „Mitgliedern" umfasst, die den
Materialien in jedem Bereich der Zielmatrix entsprechen. Eine Bibliothek
kann mit einer beliebigen geometrischen Form wie etwa einem Quadrat,
Rechteck, Kreis oder Dreieck angeordnet werden.
-
Wie in 1 und 2 gezeigt, umfasst ein System 100 einen
Computer 110 mit Ein-/Ausgabeeinrichtungen 120. Ein Satz
von Materialhandhabungsbefehlen wird in dem Entwurfsmodul 130 erzeugt
und zu dem Steuermodul 140 (Schritt 200) gegeben. Alternativ
hierzu ruft das Steuermodul 140 Befehle aus dem Speicher 150 ab.
Es können
geeignete Befehle in einer „Rezeptdatei" vorgesehen werden,
wobei diese zum Beispiel Komponenteninformation zur Identifikation
von Quell- und Zielkomponenten (als Wiedergabe von physikalischen
Behältern
wie etwa Fläschchen
oder Mikrotiterplaten oder von physikalischen Positionen wie etwa
Bereichen auf einem Substratwafer) für die Verwendung in der Synthese
einer Bibliothek, Abbildungsinformation, die jede Quelle auf eine
oder mehrere Zielkomponenten abbildet und Größen jeder zu verwendenden Quelle für die Synthetisierung
jedes Bibliotheksmitgliedes identifiziert, sowie Parameter, die
Reaktionsbedingungen für
die Kombination der Komponenten zur Ausbildung von einzelnen Bibliotheksmitgliedern
definieren, umfassen können.
-
Die Abbildungsinformation kann zum
Beispiel eine Liste der spezifischen Mengen der aus einem oder mehreren
Quellfläschchen
zu jeder aus einem Satz von Zielvertiefungen zu übertragenden Materialien umfassen.
Die Abbildungsinformation kann auch Gradienten umfassen, welche
einen Mengenbereich eines oder mehrerer von einer bestimmten Quelle
zu einer Reihe von Vertiefungen zu übertragenden Materialien spezifizieren,
wobei die zu jeder Zielvertiefung zu übertragende Menge in Übereinstimmung
mit einer linearen, exponentiellen, logarithmischen, polynomen,
geometrischen oder anderen mathematischen Gleichung bestimmt wird.
Die Erstellung der Rezeptdateien wird in der gleichzeitig anhängigen US-Anmeldung
mit der Seriennummer 09/174,856 vom 19. Oktober 1998 beschrieben,
die hier vollständig
unter Bezugnahme eingeschlossen ist. Das Steuermodul 140 erfasst
die Komponenten-, Abbildungs- und Parameterinformation aus einer
Rezeptdatei und macht die Information für die Verwendung durch benutzerdefinierte
Prozeduren verfügbar,
die weiter unten beschrieben werden.
-
Ein typischer Benutzer des Systems 100 ist
ein Chemiker. Über
die Benutzerschnittstelle 160 initialisiert der Benutzer
das System 100 und erstellt eine Prozedur unter Verwendung
eines Objekteditors 170 (Schritt 210). Das Steuermodul 140 führt die
Prozedur (Schritt 220) aus, die beispielsweise veranlasst, dass eine
durch den Satz der Befehle in der Rezeptdatei spezifizierte kombinatorische
Bibliothek synthetisiert wird. In der beschrieben Ausführungsform
kommuniziert das Steuermodul 140 direkt mit der Vorrichtung 180,
indem sie beispielsweise Textbefehle über einen oder mehrere serielle
Anschlüsse
an die Vorrichtung 180 überträgt. Alternativ
hierzu können
die durch das Modul 140 erzeugten Befehle durch Treiber
für die
Vorrichtung 180 implementiert werden, die auf dem Computer 110 installiert
sind.
-
Die entsprechende Vorrichtung 180 kann
zum Beispiel automatisierte Flüssigkeitshandhabungsroboter
wie etwa den RSP 900 Robotic Sample Processor von Cavro
Scientific Instruments, Inc. aus Sunnyvale, Kalifornien, oder entsprechende
Einrichtungen umfassen. Die Vorrichtung 180 kann auch automatisierte
Systeme umfassen, die verschiedene Typen von physikalischen oder
chemischen Dampfablagerungsprozessen durchführen. Bei der Handhabung von
Flüssigkeiten
werden gewöhnlich
Lösungsmischungen
in eine Matrix aus Miniaturvertiefungen gegeben, um eine Bibliothek
zu erstellen. Bei der Vakuumauftragung werden Festelemente oder
Chemikalien bzw. Mischungen aus Festelementen oder Chemikalien verdampft
und als einzelne Komponenten auf einem Substrat abgelagert. Die
Ablagerung kann durch eine Reihe von Verschlüssen und Masken gesteuert werden,
um die Bibliothek zu erzeugen. Ein Beispiel einer Ablagerungseinrichtung
ist in WO98/47613 (US-Anmeldung
mit der Seriennummer 08/841,423) vom 22. April 1997 angegeben.
-
Mit Bezug auf 3 wird
im Folgenden ein Verfahren beschrieben, welches das System 100 zum
Synthetisieren einer kombinatorischen Materialbibliothek beschreibt.
In jedem der ersten vier Schritte des Verfahrens (Schritte 300,
310, 320 und 330) verwendet der Benutzer einen Objekteditor 170,
um Datenobjekte zu erstellen und zu konfigurieren, die Hardwareeinrichtungen
und Prozesse für
die gewünschte
Synthese definieren. Jedes Datenobjekt weist einen assoziierten
Satz von Eigenschaften auf. Der Benutzer wählt Datenobjekte aus und fügt diese
in eine Hierarchie von Objekten ein, welche die Hardwareeinrichtungen
und Prozesse für das
System definieren. Dabei kann der Benutzer die ausgewählten Objekte
anpassen, indem er die mit jedem Objekt assoziierten Eigenschaften
manipuliert, was weiter unten ausführlicher beschrieben wird.
Datenobjekte werden durch den Editor 170 unter Verwendung
von Computerprogrammtechniken erzeugt, die bei der Objekt-orientierten
Programmierung üblich
sind. Der Editor ist vorzugsweise mit einer graphischen Benutzeroberfläche implementiert.
-
In einer in 4 gezeigten
Ausführungsform
zeigt die Benutzerschnittstelle 160 ein Fenster an, das eine
Objekthierarchie oder einen Baum 403 (in diesem Fall für die Prozedurobjekte 405 und 408)
im Feld 410 umfasst. Der Benutzer manipuliert die Eigenschaften
von ausgewählten
Objekten – zum
Beispiel der Eigenschaften 414 und 418 des ausgewählten For
Loop-Objekts 432 – indem
er Text eingibt oder Werte in den entsprechenden Feldern des Feldes 420,
in diesem Beispiel die Felder 424 und 428, wählt. Der
Benutzer muss nicht mit der Erzeugung der Datenobjekte selbst vertraut
sein und keine Kenntnisse zu den Objekt-orientierten Programmiertechniken
besitzen, die zur Erzeugung der Datenobjekte verwendet werden, wenn
er die Datenobjekte wie oben beschrieben manipuliert.
-
Wie wiederum in 3 gezeigt,
definiert der Benutzer die für
das System 100 verfügbaren
physikalischen Hardwareressourcen über die Benutzerschnittstelle 160 (Schritt
300). Wie oben beschrieben, gehören zu
den entsprechenden Hardwareressourcen Einrichtungen wie etwa automatisierte
Syntheseroboter, Spritzenpumpensteuereinrichtungen, physikalische
Auftragungssysteme oder Dampfauftragungssysteme und ähnliches.
Die Hardwareressourcen können
auch Temperatursteuereinrichtungen zum Regulieren der Temperatur
von einer oder mehreren Quell- oder Zielfläschchen bzw. Platten, Spritzen
oder anderen Ausgabevorrichtungen umfassen. Der Benutzer definiert
jede mit dem System 100 verbundene Hardwareeinrichtung,
indem er ein Hardwareressourcen-Datenobjekt erstellt, das insbesondere
für die
betreffende Einrichtung konfiguriert ist. So kann er beispielsweise
einen seriellen Anschluss spezifizieren, über den die Einrichtung mit
dem Computer 110 verbunden ist. Jedes Hardwareressourcenobjekt
implementiert ein Protokoll für
die Kommunikation zwischen dem Computer 110 und der betreffenden
Einrichtung, wobei dem Computer 110 (und damit dem Benutzer)
Zugriff auf die Funktionen der Einrichtung gewährt wird.
-
Der Benutzer definiert die Eigenschaften
der einzelnen Arme, Spritzen, Verschlüsse, Masken oder anderen im
System 100 installierten Einrichtungen, indem er Systemdatenobjekte
für jede
derartige Einrichtung erstellt (Schritt 310). Jedes Systemobjekt
identifiziert eine Hardwareressource, die aus den bereits definierten ausgewählt wurde
(z. B. eine besondere Roboter- oder Pumpensteuereinrichtung) und
die betreffende Einrichtung steuert. Andere Systemobjekteigenschaften
sind die Einrichtungsadresse, die Konfiguration der mit einem Arm
verbundenen Spritzen (z. B. seriell oder parallel), Bewegungsgrenzen,
Schrittgröße und Bezugspositionen
für Armbewegungen,
sowie Auflösung,
Volumen und Ausgabeeigenschaften für Spritzen und ähnliches.
-
Der Benutzer identifiziert außerdem jede
Quelle von Ausgangsmaterialien und jedes Ziel, indem er ein Substratdatenobjekt
erstellt, das die Geometrie für
jedes Substrat mit einer oder mehreren Vertiefungen für den Zugriff
durch das System 100 definiert, wobei spezifische Positionen
für diese
Substrate auf der Arbeitsoberfläche
unter Verwendung von Positionsobjekten definiert werden, die der
Benutzer als Kindobjekte des entsprechenden Substratobjektes einfügt (Schritt
320). Für
ein Substratobjekt, das einem einzelnen Vertiefungssubstrat oder
einem Fläschchen
entspricht, umfassen die durch den Benutzer definierten Eigenschaften
zum Beispiel die Querschnittsfläche
und die Höhe
des Fläschchens
sowie die Position, an der das System Flüssigkeit in das Fläschchen
ausgibt. Ein mit jedem Fläschchen
assoziiertes Fläschchenpositionsobjekt
definiert die Positionskoordinaten des Fläschchens auf der Arbeitsoberfläche. Zu
den Eigenschaften für
zweidimensionale Substratmatrizen gehören zum Beispiel alle mit dem
einzelnen Vertiefungssubstrat assoziierten Eigenschaften sowie die
Anzahl der Reihen und Spalten und der entsprechende Abstand. Ein
Plattenpositionsobjekt definiert die Position der zweidimensionalen
Matrix auf der Arbeitsoberfläche,
indem zum Beispiel die Positionskoordinaten der gegenüberliegenden
Ecken der Matrix spezifiziert werden.
-
Der Benutzer erstellt ein Prozedurobjekt
(Schritt 330), indem er eine Hierarchie von Codeobjekten zusammenstellt,
die dann durch das Steuermodul 140 und den Roboter 180 ausgeführt werden
können.
Der Prozess der Verwendung des Objekteditors 170 zum Erstellen
einer Flüssigkeitsausgabeprozedur
wird mit Bezug auf 5 beschrieben.
Der Benutzer erstellt ein Prozedurobjekt unter Verwendung des Objekteditors 170 (Schritt
500). Der Benutzer wählt
dann ein Codeobjekt, um eine gewünschte
Funktion – wie
etwa das Laden von Synthesebefehlen, das Initialisieren von einem
oder mehreren Roboterarmen, das Setzen von Parametern für die Arm-
und Spritzenbewegung, das Bewegen von Armen, das Aufsaugen oder
Ausgeben von Flüssigkeiten
mit Spritzen und ähnliches – aus einem
Satz von Objekten, auf die der Objekteditor 170 zugreifen
kann, durchzuführen,
wobei der Benutzer dann das Objekt an der entsprechenden Position
in der logischen Hierarchie des Prozedurobjekts einfügt (Schritt
510). Der Benutzer kann auch ein „Behälter"-Objekt aus einer Codebibliothek auswählen. Behälterobjekte
sind, wie ihre Bezeichnung schon andeutet, zum Gruppieren von anderen
Objekten zu funktionalen Einheiten verwendete Behälter, die
dann als Einheit gespeichert, kopiert und in andere Prozeduren eingefügt werden
können.
Behälterobjekte
können
bedingte „For
Loop", „If"- und „While Loop"-Objekte enthalten,
die einen oder mehrere Funktionsableitungen oder untergeordnete
Objekte umfassen, die null, ein oder mehrere Male in einer Prozedur
in Übereinstimmung
mit dem Auftreten einer spezifizierten Bedingung ausgeführt werden,
was weiter unten ausführlicher
beschrieben wird.
-
Ein Beispiel für die Auswahl von geeigneten
Codeobjekten wird in der folgenden Tabelle 1 gegeben.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Der Benutzer definiert die mit dem
gewählten
Codeobjekt assoziierten Eigenschaften (Schritt 520). Wenn zusätzliche
Codeobjekte zum Abschließen
der Prozedur erforderlich sind (Ja-Verzweigung von Schritt 530), wählt der
Benutzer das nächste
gewünschte
Codeobjekt (Schritt 510) und wiederholt den Prozess. Wenn das letzte
Codeobjekt ausgewählt
und definiert wurde (NEIN-Verzweigung von Schritt 530), ist die
Prozedur abgeschlossen. Zu diesem Zeitpunkt oder zu einem anderen
Zeitpunkt während
der Erstellung der Prozedur kann der Benutzer den Code validieren,
um die Konsistenz der Prozedur oder eines ausgewählten Codeobjekts und seiner
Abhängigen
zu verifizieren (Schritt 540). Der Objekteditor 170 speichert
die Prozedur im Speicher 150 und/oder gibt die Prozedur
an das Steuermodul 140 zur Ausführung durch die Vorrichtung 180 (Schritt 550).
-
Eine in Übereinstimmung mit den oben
erläuterten
Schritten erzeugte Probenprozedur wird in 4 gezeigt.
Das Prozedurobjekt 405, das der Benutzer mit „Simple
Mapping w/Left Arm" benannt
hat, umfasst den Baum 403 der Codeobjekte 430–451.
Jedes Codeobjekt in dem Baum 403 wird durch ein dem Objekttyp
entsprechendes Symbol wie etwa das Symbol 460 und einen
Namen wiedergegeben. Bei dem Namen kann es sich um einen Standardnamen
auf der Basis des Objekttyps oder um einen durch den Benutzer gewählten Namen
handeln. Die Prozedur 405 umfasst eine Reihe von Codeobjekten,
die bei der Ausführung
veranlassen, dass das Steuermodul 140 die Vorrichtung 180 dazu
anweist, eine einfache Abbildungsprozedur mit dem linken Arm eines
Syntheseroboters durchzuführen.
Das Steuermodul 140 führt
die Prozedur 405 wie folgt durch.
-
Das Objekt „Initialize Arm" 430 initialisiert
den Arm des Roboters, indem es die Geschwindigkeiten des Armes und
der Spritze sowie das maximale Aufsaugvolumen und das minimale Ausgabevolumen
der Spritze auf Standardwerte setzt. Das Objekt „Load Recipe" 431 lädt Komponenten-,
Abbildungs- und Parameterinformation aus einer spezifzierten Rezeptdatei.
Wie oben beschrieben, enthält
eine geeignete Rezeptdatei Komponenteninformation, um die Quell-
und Zielkomponenten zu identifizieren, die während der Ausführung der Prozedur
verwendet werden, sowie Abbildungsinforation, welche die von jeder
Quellkomponente zu einer oder mehreren Zielkomponenten zu übertragenden
Mengen spezifiziert. Die Rezeptdatei kann auch Parameterinformation
in der Form von Werten oder Sätze
von Werten enthalten, die mit in der Rezeptdatei identifizierten Komponenten
assoziiert sind.
-
Die Ausführung des Objektes „Load Recipe" 431 veranlasst
das Modul 140, den Benutzer zur Eingabe eines Namens einer
zu ladenden Rezeptdatei aufzufordern. Optional kann eine bestimmte
Rezeptdatei als eine Eigenschaft des Objektes „Load Recipe" 431 identifiziert werden.
Das Steuermodul 140 lädt
die spezifizierte Rezeptdatei und veranlasst die Benutzerschnittstelle 160 Tabellen
mit Komponenten- und Abbildungsinformation anzuzeigen. Das Steuermodul 140 fordert
den Benutzer auf, eine Position auf der Arbeitsoberfläche für jede wie
oben erläutert
in Schritt 320 definierte Substratkomponente zu identifizieren.
Ein bestimmtes Substrat kann als Quelle (z. B. eine Position, von
der ein Reagenz übertragen
wird), als Ziel (eine Position, zu der ein Reagenz übertragen
wird) oder beides (z. B. eine Position, bei der zwei oder mehr Reagenzien
gemischt werden, wobei die Mischung dann zu einer anderen Position übertragen
wird) während
der Ausführung einer
Prozedur verwendet werden. Parameterdaten in der Rezeptdatei sind
mit den spezifizierten Substratobjekten assoziiert und werden für folgende
Codeobjekte in der Prozedur 405 verfügbar gemacht. Wenn also beispielsweise
die durch das Objekt 431 geladene Rezeptdatei eine Temperaturparameterinformation
einschließlich
eines Wertes für
jede Vertiefung in einer spezifizierten Zielplatte umfasst, werden
diese Werte für
folgende Codeobjekte verfügbar
gemacht, die eine vordefinierte Variable „Temperatur" aufrufen, die unter
Verwendung eines Objektes „Define
Variable" wie in
Tabelle 1 und weiter unten ausführlicher
erläutert
definiert wurde. Ein Satz von Temperaturparametern kann vorteilhaft
durch die Objekte „Set
Temperature", „Get Temperature" und „Wait for
Temperature" wie
in Tabelle 1 gezeigt aufgerufen werden.
-
Das Objekt „For Each Mapping" 432 ist
ein Behälterobjekt – insbesondere
für ein
For Loop-Objekt – das seinen
Satz von untergeordneten Objekten für eine spezifizierte Anzahl
von Wiederholungen ausführt.
In diesem Fall ist das Objekt 432 eine „mapping loop", die für jede Abbildung
in der durch das Objekt „Load
Recipe" 431 geladenen
Rezeptdatei wiederholt wird. Das Objekt 432 veranlasst,
dass das Steuermodul 140 eine Variable „Total Mappings", welche die Gesamtanzahl
der aus der Rezeptdatei geladenen Abbildungen enthält, sowie
eine Variable „Mapping
Number" definiert,
die in den Index der aktuellen Abbildung gesetzt wird und von eins
bis zu dem Wert von Total Mappings reicht. Beide Variablen sind
für alle
untergeordneten Objekte des Loop-Objekts 432 verfügbar. Die
untergeordneten Objekte von Loop objekt 432 sind die Objekte 433–450,
die durch das Steuermodul 140 für jede geladene Abbildung ausgeführt werden.
-
Das Objekt „For Each Dispense" 433 ist
ein weiteres For Loop-Objekt, das für jede in der aktuellen Abbildung
spezifizierte Ausgabe wiederholt wird (in Entsprechung zu der durch
die oben erläuterte
Variable Mapping Number identifizierten Abbildung). Das Objekt 433 veranlasst,
dass das Steuermodul 140 acht Systemvariablen definiert,
die für
alle untergeordneten Objekte des Loop-Objekts 433 verfügbar sind.
Dazu gehören
die Variable „Total
Dispenses" mit der
Anzahl der Ausgaben für
die aktuelle Abbildung sowie die Variable „Dispense Number" mit dem Index der
aktuellen Ausgabe, wobei diese Variable von eins bis zu dem Wert
von „Total
Dispenses" reicht.
Diese Variablen umfassen auch eine Variable „Mapping Aspirate Volume", die das aufzusaugende
(bzw. von einer Quellkomponente zu erhaltende) Volumen auf der Basis
der Abbildungszielvertiefung (oder auf mehreren Vertiefungen auf
der Basis eines vorbestimmten Vorausschauintervalls, das eine bestimmte
Anzahl von Vertiefungen angibt, die bei der Berechnung der aufzusaugenden
Menge zu berücksichtigen
sind) angibt, und eine Variable „Mapping Dispense Volume", die das für das aktuelle
Abbildungsziel auszugebende Volumen angibt. Für jede Ausgabe werden diese
beiden Variablen auf voreingestellte Werte für die Ausgabe initialisiert
und bei fortschreitender Ausgabe aktualisiert. Schließlich veranlasst
das Objekt 433 auch, dass das Steuermodul 140 die
Variablen „Source
Row" und „Source
Column" definiert,
welche die Reihe und Spalte der aktuellen Quellvertiefung angeben,
sowie die Variablen „Destination
Row" und „Destination
Column", welche
die Reihe und Spalte der aktuellen Zielvertiefung angeben. Die untergeordneten
Objekte für
das Loop-Objekt 433 sind die Objekte 434–441,
die nacheinander für
jede Ausgabe und jede geladene Abbildung wiederholt werden.
-
Das Objekt „White Liquid to Dispense" 434 ist
ein anderer Typ von Behälterobjekt – ein White
Loop-Objekt – das
veranlasst, dass alle untergeordneten Objekte wiederholt ausgeführt werden,
solange eine spezifizierte Bedingung gilt. In diesem Fall veranlasst
das Modul 434, dass das Steuermodul 140 bestimmt,
ob der Wert der Variable Mapping Dispense Volume größer als
null ist, wodurch angegeben wird, dass die Ausgabe weiterhin die
auszugebende Flüssigkeit
benötigt.
Solange diese Gleichung wahr ist, führt das Steuermodul 140 die
untergeordneten Objekte 435–441 aus.
Wenn die Gleichung falsch ist (d. h. kein Volumen mehr für die Ausgabe
verbleibt), ist die aktuelle Ausgabe abgeschlossen und schreitet
das Steuermodul 140 zu der nächsten Wiederholung des „For Each
Dispense"-Schleife 433 fort.
Das „White"-Objekt 434 kann
einen beliebigen logischen Ausdruck wie etwa arithmetische Ausdrücke, die
einen Wert mit einem anderen Wert vergleichen, implementieren. Das
White Loop-Objekt 434 kann auch Spritzenbedingungen, die
prüfen,
ob eine bestimmte Spritze nachgefüllt werden muss, oder Abbildungsetikett-Bedingungen
implementieren, die prüfen,
ob die aktuelle Abbildung für
eine bestimmte Aktion durch den Benutzer identifiziert wurde.
-
Das Objekt „Fill Syringe" 435 ist
ein weiteres Behälterobjekt – ein If-Objekt – das veranlasst,
dass das Steuermodul 410 seine untergeordneten Objekte
ausführt,
wenn eine spezifizierte Bedingung wahr ist. In diesem Fall veranlasst
das Objekt 435, dass das Steuermodul 140 bestimmt,
ob die spezifizierte Spritze aufgefüllt werden muss (d. h. wenn
die Bedingung „syringe
empty" wahr ist).
Wenn die Spritze leer ist, veranlasst das Objekt 435, dass
das Steuermodul 140 das Objekt „Move to Source" 436, ein
Armbewegungsobjekt, das die Vorrichtung 180 anweist, die
Spritze zu der Position der spezifizierten Quellkomponente zu bewegen,
und das Objekt „Aspirate" 437 auszuführen, welches
die Spritze anweist, von der Quellkomponente eine Menge, die durch
die für
die aktuelle Ausgabe definierte Variable „Mapping Aspirate Volume" bestimmt wird, aufzusaugen.
-
Wenn die Spritze nicht leer ist,
veranlasst das Objekt „Move
to Destination" 438 (ein
weiteres Armbewegungsobjekt), dass die Vorrichtung 180 die
geladene Spritze zu der Position der spezifizierten Zielkomponente
bewegt. Das Objekt „Dispense" 439 veranlasst,
dass die Vorrichtung 180 in die spezifizierte Zielvertiefung
eine Menge ausgibt, die durch die für die aktuelle Ausgabe definierte
Variable „Mapping
Dispense Volume" bestimmt
wird. Die Objekte „Set
Timer" und „Wait For
Timer" 440 und 441 veranlassen,
dass das Steuermodul 140 für eine vorbestimmte (oder variable)
Zeitdauer pausiert, bevor sie zu der nächsten Ausgabewiederholung
fortschreitet.
-
Nach Abschluss aller Ausgaben für die aktuelle
Abbildung (und nach jeder folgenden Abbildung) führt das Steuermodul 140 das
Behälterobjekt 442 namens „Standard
Wash – Left 500ul" aus. Das Objekt „Move To
Waste" 443,
ein weiteres Armbewegungsobjekt, veranlasst, dass die Vorrichtung 180 die
Spritze zu der Position eines Abfallziels bewegt. Das Objekt „Purge
Syringe" 44 veranlasst,
dass die Vorrichtung 180 den gesamten Inhalt der spezifizierten
Spritze in das Abfallziel ausgibt. Da Objekt „Dispense" 445 veranlasst, dass die Vorrichtung 180 die
spezifizierte Spritze mit einem spezifizierten Volumen von einem
Reservoir auffüllt
(das Reservoir ist gewöhnlich
mit einem Lösungsmittel
wie zum Beispiel Wasser gefüllt)
und dann das spezifizierte Volumen ausgibt. Das Steuermodul 140 veranlasst,
dass die Vorrichtung die spezifizierte Spritze zu der Reinigungsstation
bewegt (Objekt „Move
to Clean 1" 446),
wo die Spritze wieder mit einem Lösungsmittel gefüllt wird,
das dann ausgegeben wird (Objekt „Dispense" 447). Das Objekt „Move To
Clean 2" 448 veranlasst,
dass die Vorrichtung 180 die spezifizierte Spritze für eine endgültige Spülung (Objekt „Dispense" 449) zu
einer zweiten Reinigungsstation bewegt. Das Objekt „Move Home" 450 veranlasst,
dass die Vorrichtung 180 den spezifizierten Arm zurück zu einer
Ausgangsposition bewegt, wo die nächste Abbildungswiederholung
beginnt. Wenn alle Abbildungen verarbeitet wurden, veranlasst das
Objekt „Park" 451 (ein
abschließendes
Armbewegungsobjekt), dass die Vorrichtung 180 den Arm zurück zu der
Ausgangsposition bewegt.
-
6 zeigt
ein Fenster 600 der Benutzerschnittstelle. Der Benutzer
weist das Steuermodul 140 an, eine abgeschlossene Prozedur
auszuführen,
indem beispielsweise die Schaltfläche „Execute" 620 in dem Statusfeld 610 des
Fensters 600 betätigt
wird. Daraufhin zeigt die Benutzerschnittstelle 160 eine
Liste von im Computer 110 verfügbaren Prozeduren an. Das Statusfeld 610 umfasst
ein Zeilenelement 630, das angibt, dass das Steuermodul 140 eine
Prozedur ausführt.
Während
eine Prozedur ausgeführt
wird, zeigt die Benutzerschnittstelle 160 Statusmeldungen
in einem Ereignisprotokoll 640 an. Der Benutzer kann eine
Prozedur während
der Ausführung
unterbrechen oder abbrechen, indem er das entsprechende Zeilenelement
wählt und jeweils
die Schaltfläche 650 oder 660 betätigt.
-
Je nachdem, was der Benutzer vorzieht,
kann das Ereignisprotokoll 640 eine Aufzeichnung von Ereignissen
hohen Pegels oder eine detaillierte Aufzeichnung jedes Schrittes
in einer Prozedur vorsehen. Das Ereignisprotokoll 640 zeigt
auch Fehler an, die während
der Ausführung
auftreten. Wenn ein Fehler auftritt, unterbricht das Steuermodul 140 die
ausgeführte
Prozedur und trägt
den Fehler in dem Ereignisprotokoll 640 ein. Während die
Prozedur unterbrochen wird, kann der Benutzer andere Prozeduren
durchführen,
um den Fehler zu korrigieren. Wenn der Fehler beispielsweise aus
einer falschen Substratposition resultiert, kann der Benutzer versuchen,
die Position zu korrigieren. Der Benutzer kann auch die unterbrochene
Prozedur selbst unter Verwendung des Objekteditors 170 modifizieren.
Wenn der Fehler korrigiert wurde; weist der Benutzer das Steuermodul 140 an,
die Ausführung
der ursprünglichen
Prozedur wiederaufzunehmen, indem er nochmals die Schaltfläche „pause" 650 betätigt. Das
Steuermodul 140 versucht den fehlgeschlagenen Befehl nochmals, und
fährt bei
erfolgreichem Abschluss mit der Ausführung der Prozedur fort.
-
Unter Verwendung der oben beschriebenen
Techniken kann der Benutzer Prozeduren für viele verschiedene automatisierte
Prozesse anpassen. Eine derartige Prozedur 700 namens „Tagged
Mappings" ist in 7 gezeigt. Das Objekt „Load Recipe" 705 ruft
eine Rezeptdatei wie oben mit Bezug auf die Prozedur 405 erläutert aus
dem Speicher ab. Anstatt einfach jede Abbildung in der Rezeptdatei
zu durchlaufen, was mit Bezug auf diese Prozedur beschrieben wurde,
gestattet die Prozedur 700 es dem Benutzer, eine andere
Behandlung für
bestimmte Abbildungen oder Gruppen von Abbildungen zu spezifizieren.
Die Tag Mappings-Objekte 710–716 veranlassen, dass
das Steuermodul 140 den Benutzer zu Auswahl von einer oder
mehreren Abbildungen für
die Etikettierung auswählt.
Zum Beispiel fordert das Objekt „Tag Type 1 Mapping" 710 den
Benutzer auf, Abbildungen in der geladenen Rezeptdatei als Abbildungen
des Typs 1 für
die folgenden Verarbeitungsschritte zu etikettieren. Alternativ
hierzu können
Etiketten in der durch das Objekt „Load Recipe" 705 geladenen
Rezeptdatei spezifiziert werden. Das Etikett für jedes Tag Mapping-Objekt
wird während
der Erstellung der Prozedur spezifiziert und kann eine beliebige
Kombination von Zeichen sein, die vom Ersteller der Prozedur gewählt werden
Auf diese Weise können
Tags ausgewählt
werden, um Abbildungen als bestimmte Typen von Materialien oder
Chemikalien entsprechend zu identifizieren, wie z. B. Lösungsmittel,
Reagenzien, Monomere, Initiatoren, Katalysatoren, grenzflächenaktive
Stoffe und ähnliches.
-
Nachdem die Roboterarme durch die
Objekte 720 und 725 initialisiert wurden, führt die
Prozedur 700 die durch das Objekt „For Each Mapping" 730 spezifizierten
Abbildungsprozesse durch. Anstatt einfach dieselben Verarbeitungsschritte
für jede
Abbildung in der Rezeptdatei zu wiederholen, wie oben für die Prozedur 405 (Objekt „For Each
Mapping" 432)
beschrieben, umfasst die Prozedur 700 eine Reihe von If-Objekten 740–746, die
den durch die Objekte 710–716 definierten
Abbildungsetiketten entsprechen. Wie für das Objekt „If Type 1" 740 gezeigt,
enthält
jedes If-Objekt 740–746 eine
Reihe von untergeordneten Objekten, die einen Satz von Prozessschritten
für jede
durch das entsprechende Etikett identifizierte Abbildung implementiert.
Das Objekt „If
Type 1" 740 und
dessen untergeordnete Objekte 750–760 definieren eine Reihe
von Verarbeitungsschritten für
Rezeptdatei-Abbildungen, die der Benutzer mit dem Etikett „Type 1" identifiziert hat.
-
Das Objekt „Wash Interval" 750 und
das Objekt „Air
Gap Flag" 751 sind
Variablendefinitionsobjekte, die das Steuermodul 140 veranlassen,
ein Paar von Variablen zu definieren, die für folgenden Codeobjekte im If-Objekt 740 verfügbar sind.
Das Objekt „For
Each Dispense" 752 ist
ein For Loop-Objekt, das alle seine untergeordneten Objekte 753– 748 für jede Ausgabe
jeder „Type 1"-Abbildung durchläuft. Das
Objekt „White
Liguid to Dispense" 753 ist
ein White Loop-Objekt, das alle seine untergeordneten Objekte 754–757 durchläuft, solange
auszugebende Flüssigkeit
in dem aktuellen Ausgabezyklus vorhanden ist. Das Objekt „Fill Syringe" 754 ist
ein If-Objekt, das eine Reihe von Schritten durchführt, in
denen die Spritze aufgefüllt
wird, nachdem sie leer geworden ist (dabei wird die Variable „Air Gap
Flag" verwendet,
die durch das Objekt 751 definiert wird, um zu identifizieren,
wann ein Luftzwischenraum während
des Spritzenfüllprozesses
eingesaugt werden soll). Das Objekt „Move to Destination" 755 veranlasst,
dass die Vorrichtung 180 die spezifizierte Hardwareeinrichtung
zu dem nächsten
gewünschten
Ziel bewegt, und das Objekt „Dispense" 757 veranlasst,
dass die Vorrichtung 180 eine spezifizierte Flüssigkeitsmenge
an dieser Position mit einer Geschwindigkeit ausgibt, die durch das
Objekt „Set
Syringe Speeds" 756 bestimmt
wird. Wenn die Ausgabe abgeschlossen ist, veranlasst das Objekt „For Each
Dispense" 752,
dass das Steuermodul 140 zu der nächsten Ausgabe in der „Type 1"-Abbildung geht,
wobei die Vorrichtung 180 veranlasst wird, die Spritzenspitze
in Übereinstimmung
mit dem Objekt „Wash On
Interval" 758 (und
allen untergeordneten Objekten) mit Intervallen zu spülen, die
durch die Variable „Wash Interval" definiert werden,
die wiederum durch das Objekt 750 definiert wird. Wenn
alle Ausgaben in der Abbildung des Typs 1 verarbeitet wurden,
weist das Steuermodul 140 die Vorrichtung 180 an,
die Spritzenspitze in Übereinstimmung
mit einem Prozess zu spülen,
der durch das Objekt „Wash
Left Arm" 759 und
dessen untergeordneten Objekten definiert wird, und den Arm zu einer
Endposition zu bewegen (Objekt „Park" 760).
-
Entsprechend enthalten die If-Objekte 741–746 jeweils
eine Reihe von untergeordneten Objekten, die Verarbeitungsschritte
zum Implementieren von Ausgaben für jede der verbleibenden Gruppen
von etikettierten Abbildungen in der Rezeptdatei festlegen. Wenn
jede etikettierte Abbildung in Übereinstimmung
mit dem entsprechenden If-Objekt verarbeitet wurde, ist die Bibliothekssynthese
abgeschlossen.
-
Je nach den Ressourcen, den Systemeinrichtungen
und den Substraten, die für
das System 100 definiert sind, kann der Benutzer Prozeduren
erstellen, um andere Prozesse als die Bibliothekssynthese wie beispielsweise
eine Analyse und Kennzeichnung von Mitglieder einer kombinatorischen
Bibliothek auszuführen. Eine
derartige Prozedur ist in 8 gezeigt.
Um derartige Prozesse zu implementieren, muss das System 100 keine
Bibliotheksentwurfsinformation aus einer Rezeptdatei erhalten. Um
einen Analyseprozess zu definieren, erstellt der Benutzer eine Prozedur 800 wie
oben beschrieben, wobei er jedoch ein Objekt „Sample Map" 810 anstelle des
oben genannte Objektes „Load
Recipe" einfügt. Bei
der Ausführung
durch das Steuermodul 140 erstellt das Objekt "Sample Map" 810 eine
oder mehrere Abbildungen, um die für die Analyse abzutastenden Bibliotheksmitglieder
zu definieren. Das Steuermodul 140 fordert den Benutzer
auf, eine oder mehrere Quellkomponenten für die Abtastung zu identifizieren,
indem er beispielsweise die Identität und die Position einer für das System 100 definierten
Platte mit mehreren Vertiefungen spezifiziert. Der Benutzer spezifiziert
eine Anzahl von Proben, die aus jeder Vertiefung indem angegebenen
Substrat zu ziehen sind, indem er beispielsweise ganzzahlige Wert
in eine Tabelle eingibt, die eine Quellsubstratmatrix wiedergibt.
Der Wert der in die Tabelle eingegebenen Ganzzahl bestimmt die Anzahl
von Ausgaben für
die entsprechende Vertiefung. Der Benutzer definiert ein Zielsubstrat
und eine Position für
die Abbildung, z. B. einen Injektionseingang einer analytischen Einrichtung
wie etwa eines Permeationschromatographen für Flüssigkeiten, Gase oder Gele.
-
Der Benutzer schließt die Prozedur 800 wie
oben beschrieben ab, indem er zum Beispiel ein Objekt „Mapping
Loop" 820 definiert,
welches veranlasst, dass das Modul 140 die durch das Objekt „Sample
Map" 810 definierten
Abbildungen durchläuft.
Für jede
Ausgabe in jeder Abbildung veranlasst die Prozedur 800, dass
das Modul 140 die Vorrichtung 180 anweist, den
Inhalt der spezifizierten Vertiefung zu verdünnen und zu mischen (If-Objekt 830 und untergeordnete
Objekte 831–838),
die Spritzenspitze zu spülen
(Objekt „Wash" 840) und
für ein
spezifiziertes Intervall zu warten (Objekt „Wait for Timer 1" 845).
-
Das Objekt „Inject Sample" 850 enthält eine
Reihe von untergeordneten Objekten 8501–861, die den Injektionsprozess
definieren. Das Objekt „Go
To Source" 851 veranlasst,
das die Vorrichtung 180 die Spritze zu der spezifizierten
Quellposition bewegt (z. B. zu einer spezifizierten Vertiefung in
einer Substratmatrix). Das Objekt „Aspirate" 852 veranlasst, dass die Vorrichtung 180 eine
Probe von der Quellposition zieht. Das Objekt „Go above injector" 853 veranlasst,
dass die Vorrichtung 180 die Spritze zu einer Position über einem
Injektionsteil der analytischen Einrichtung bewegt. Das Objekt „Go into
injector" 855 veranlasst,
dass die Vorrichtung 180 die Spritze mit einer durch das
Objekt „Set
Arm Speeds" 854 bestimmten
Geschwindigkeit in den Injektionseingang bewegt (danach setzt das
Objekt 856 die Geschwindigkeit wieder zurück). Das
Objekt „Dispense" 857 veranlasst,
dass das Modul 140 die Vorrichtung 180 anweist,
die Probe in den Injektionseingang zu injizieren. Nachdem für ein vorbestimmtes
Intervall gewartet wurde (gemäß der Spezifikation
durch das Objekt „Wait
for Timer 2" 858),
veranlasst das Objekt „Begin
Analysis", dass
das Steuermodul 140 einen Befehl an die Analyseeinrichtung
zum Beginn der Analyse sendet. Die Set Timer-Objekte 860 und 861 initialisieren
dann wieder die Timer 1 und 2 für die nächste Probe.
Nach dem Spülen
der Spritzenspitze (Objekt „Wash" 862) schreitet
die Prozedur 800 zu der nächsten Vertiefung (d. h. der
nächsten
Ausgabe) fort. Das Steuermodul 140 wiederholt die Prozedur,
bis eine Probe aus der jeder spezifizierten Quellposition gezogen
und die Analyseeinrichtung injiziert wurde.
-
Das Steuermodul 140 kann
mehrere Prozeduren gleichzeitig ausführen. Zum Beispiel kann das
Steuermodul 140 unter Verwendung eines automatisierten
Syntheseroboters mit zwei Armen mit jedem Roboterarm eine andere
Prozedur ausführen.
Es können
jedoch Fehler auftreten, wenn die Prozedur versucht, dieselbe Hardware
zu steuern – etwa
denselben Arm oder dieselbe Spritze. Entsprechend kann ein Versuch
der Ausführung
gleichzeitiger Prozeduren, die Zugriff auf gleiche Bereiche der
Arbeitsoberfläche
erfordern, zu Fehlern führen,
wenn keine Timer-Objekte vorgesehen sind, um die Armbewegungen zur
Vermeidung von Kollisionen zu synchronisieren.
-
Die Erfindung kann in einer digitalen
elektronischen Schaltung oder in Computerhardware, Fimware, Software
oder Kombinationen aus denselben implementiert werden. Die Vorrichtung
der Erfindung kann in einem Computerprogrammprodukt implementiert
werden, das in einer maschinenlesbaren Speichereinrichtung für die Ausführung durch
einen programmierbaren Prozessor gespeichert ist, wobei die Verfahrensschritte
der Erfindung durch einen programmierbaren Prozessor durchgeführt werden
können,
der ein Programm mit Befehlen zum Durchführen von Funktionen der Erfindung
ausführt,
indem er auf Eingabedaten operiert und eine Ausgabe erzeugt. Die
Erfindung kann vorteilhaft in einem oder mehreren Computerprogrammen
implementiert werden, die auf einem programmierbaren System ausgeführt werden
können,
das wenigstens einen programmierbaren Prozessor, der zum Empfangen
von Daten und Befehlen von sowie zum Senden von Daten und Befehlen
zu einem Datenspeichersystem verbunden ist, wenigstens eine Eingabeeinrichtung
und wenigstens eine Ausgabeeinrichtung umfasst. Jedes Computerprogramm
kann in einer prozeduralen oder Objekt-orientierten Programmiersprache
oder bei Bedarf in einer Assemblier- oder Maschinensprache implementiert
werden; in jedem Fall kann die Sprache eine kompilierte oder interpretierte
Sprache sein. Geeignete Prozessoren sind zum Beispiel allgemeine
und spezielle Mikroprozessoren. Allgemein empfängt ein Prozessor Befehle und Daten
von einem Nur-Lese-Speicher und/oder einem Speicher mit wahlfreiem
Zugriff. Zum Speichern der Befehle und Daten des Computerprogramms
geeignete Speicher sind alle Formen von nichtflüchtigen Speichern, einschließlich von
beispielhaften Halbleiterspeichereinrichtungen wie etwa EPROMs,
EEPROMs und Flash-Speichern, Magnetplatten wie etwa Festplatten
oder Wechselplatten, magnetooptischen Platten und CD-ROMs. Die Daten
können
vorübergehend
auch in einem flüchtigen
Speicher gespeichert werden. Die vorstehend genannten Speicher können durch
ASICs (Application-Specific Integrated Circuits) ergänzt werden oder
in denselben integriert sein.
-
Um eine Interaktion mit einem Benutzer
vorzusehen, kann die Erfindung auf einem Computersystem mit einer
Anzeigeeinrichtung wie etwa einem Monitor oder einem LCD-Bildschirm zum Anzeigen
von Informationen für
den Benutzer und mit einer Tastatur und einer Zeigeeinrichtung wie
etwa einer Maus oder einem Trackball für Eingaben in das Computersystem
implementiert werden. Das Computersystem kann programmiert werden,
um eine graphische Benutzeroberfläche vorzusehen, über welche
die Computerprogramme mit Benutzern interagieren.
-
Die Erfindung wurde mit Bezug auf
bestimmte Ausführungsformen
beschrieben. Andere Ausführungsformen
sind in dem durch die beigefügten
Ansprüche
definierten Erfindungsumfang enthalten. Zum Beispiel können die
Schritte der Erfindung in einer anderen Reihenfolge durchgeführt werden,
wobei trotzdem gewünschte
Ergebnisse erhalten werden. Die Erfindung wurde im Kontext eines
Systems und einer Prozedur zur Flüssigkeitshandhabung beschrieben,
wobei die Erfindung jedoch genauso gut auf andere Systeme und Techniken
für die
Synthese wie beispielsweise auf die oben erläuterten Ablagerungssysteme
angewendet werden kann. Entsprechend wurde die Erfindung in dem
Kontext von spezifischen Hardwareressourcen, Systemeinrichtungen,
Substraten und Codeobjekten beschrieben, wobei zusätzlich Datenobjekte
für andere
Typen von Hardwareressourcen, Einrichtungen, Substrate und Prozessschritte
definiert werden können.