On Tuesday 03 May 2005 20:37, Uwe Beger wrote:
Am 03.05.2005 um 19:25 schrieb Konrad Rosenbaum:
Aber was sind eigentlich die Regeln hinter Deiner Ergebnisliste?
So eine Frage hatte ich fast schon erwartet ;-)
Ich verwalte in einer Chemie-Datenbank mehrere Millionen organische Strukturen. Jede Struktur hat auch eine eindeutige ID. Aus historisch zu nennenden Gründen ist das ein String. Eine ganze Menge der Strukturen sind nun zueinander als Struktur identisch und ich benötige dieses sich permanent verändernde Wissen um diese Duplikate. Die Wertepaare stellen also Verweise auf chemisch identische Strukturen aus verschiedenen Quellen dar. Pro Jahr kommen vielleicht 300'000 Strukturen dazu, einige wenige fallen auch aus. Ungefähr 20% der "neuen" Strukturen sind duplikat zu bereits bekannten Strukturen. An unsere Kunden (www.labotest.com) möchten wir nur Strukturen weitergeben, die nicht duplikat zu anderen sind. Darüber hinaus spielt auch noch die Verfügbarkeit der Duplikate, die aus ziemlich unterschiedlichen Quellen stammen können, eine Rolle.
Die Spiegelung der beiden Seiten der Duplikatliste sollte ich vermutlich als erstes obsolet machen. Aber das ist eine ganz andere Baustelle (Borland Paradox 7).
Irgendwo auf Wikipedia habe ich was von einer "Sprache" gelesen, die solche Formeln eindeutig abbildet - es gibt damit nur noch wenige Möglichkeiten Duplikate zu erzeugen (die Regeln der Sprache legen z.B. fest wo man an einem Ring anfängt zu zählen).
http://en.wikipedia.org/wiki/Simplified_molecular_input_line_entry_specifica...
Ich würde also als erstes mal alle Formeln in diese Form giessen und dann entweder ein vorhandenes Produkt darauf ansetzen oder in Perl/whatever die verbliebenen Regeln abbilden (der aufwändigste Teil wird wohl sein alle Permutationen einer Formel zu generieren). Du brauchst auf jeden Fall sehr fortgeschrittenes String-Parsing, also ist Perl nicht die falscheste Wahl.
...den Rest überlasse dem Diplomanten als Beschäftigung für den Rest des Semesters... ;-)
Konrad