InChIKey
A standard International Chemical Identifier egy a molekulaszerkezetből számított, a molekulára nézve egyedi kémiai azonosító, mely a molekula egyes tulajdonságait elkülönítve, rétegekben adja meg (a rétegeket a /-jel választja el egymástól).

Az InChIKey a standard InChI-ből számított fix hosszúságú, „majdnem” egyedi azonosító (lásd alább), mely adatbázisbeli ill. interneten való keresésre alkalmas. Pontosan 27 betűből (benne két kötőjelből) áll:
 14 nagybetű az InChI fő rétegéből számítva. A molekula vázát adja meg: összegképlet, az atomok közötti kémiai kötések.
 kötőjel
 8 nagybetű az InChI fennmaradó rétegeiből számítva. A molekula térszerkezetét és az izotópokat adja meg.
 S betű, amely azt jelzi, hogy az InChIKey a standard InChI-ből készült
 az InChI verzióját jelző nagybetű (jelenleg az 1-es verzió az utolsó, kódja A)
 kötőjel
 a protonréteg jelzője (1 nagybetű)

Az InChIKey fix hosszúság adatbázisbeli kódolásra használható, a nagybetűket pedig az internetes keresők nem szabdalják szavakra – ellentétben a kódolatlan InChI-vel, mely zárójeleket, /-jeleket, kötőjeleket tartalmaz.

Kiszámítás 
A 14-karakteres kód forrása a standard InChI-ben a prefix utántól, az összegképlettel kezdődik, és a proton (/p) rétegig tart. A 14 karakter a szöveg sha-256 kriptográfiai hash függvényének 65 bitjéből számítódik; e 65 bit a 256 bites hash első 72 bitjében található.

A 8-karakteres kód a protonréteg utántól az InChI végéig tartó szövegrészből számítódik. (A protonréteg egyik hash-ben sem szerepel, csak az InChIKey utolsó karakterében.) Ez a szöveg hash-ének 37 bitje az első 40 biten belül.

A 65 bit négy 14 bites és egy 9 bites részből tevődik össze. A 37 bitben két 14 bites és egy 9 bites rész van. A 14 bit három betűt (tripletet), a 9 bit két betűt (dupletet) ad meg InChIKey-ben.

14 biten 16384-féle szám ábrázolható, míg az angol abc három betűjével 263 = 17576, azaz bizonyos betűhármasok nem fognak előfordulni. A kód alkotói úgy döntöttek, hogy az EAA–EZZ és TAA–TTV közötti kódokat hagyják el, hogy még kisebb legyen az esélye annak, hogy a kód értelmes szóval legyen azonos. Az angol nyelvben ui. gyakori az E és T betű, és az ezzel kezdődő szavak.

Ez azt jelenti, hogy ha a 14 bites kód nagyobb vagy egyenlő 2704-gyel, akkor a kódhoz hozzá kell adni 676-ot. Ha az így kapott kód nagyobb vagy egyenlő 12168-cal, akkor a kódhoz hozzá kell adni még 516-ot.

A 9 bites kódoknál (melyek a hash végén vannak) a legnagyobb betűpárokat hagyták el, vagyis itt nincs kódkorrekció.

A fenti 14- ill. 9 bites kódot 26-os számrendszerbe kell átváltani a 3 ill. 2 betű előállításához.

Az eredeti elképzelés az volt, hogy az sha-256 első 14 bitje adja az első három betűt, a második 14 bit a második betűhármast, stb. Az IUPAC által kiadott programban egy csúnya programozási hiba folytán azonban összekeveredett a bitek sorrendje. Ez az InChIKey minőségét nem befolyásolta, de a kódnak az IUPAC által leírt algoritmustól eltérő előállítását megnehezítette. Az IUPAC kijavította a programozási hibát, addigra azonban az InChIKey már elterjedt (ne felejtsük: az InChIKey legfontosabb jellemzője, hogy a molekulából számítható egyedi kód), így a javítást a gyakorlatban már nem használták, és a hibás program által előállított InChIKey lett a szabvány.

A jobb oldali táblázat mutatja, hogy a 14- ill. 9 bites csoportok egyes bitjei az sha-256 hányadik bitjeiből állnak össze. Az eredeti terv a 0-tól 64-ig ill. 36-ig egyesével növekvő táblázat volt.

Egyediség 
A hash-függvény alkalmazása a kulcs rövidítésével megkönnyíti a keresést, azonban nem tudja biztosítani, hogy két különböző kulcshoz tartozó hash-érték biztosan különböző legyen. A hash segítségével nagyon gyorsan ki lehet keresni a néhány szóba jöhető rekordot, melyek közül aztán lassabb módszerrel keresik ki az eredeti feltételnek eleget tevőket.

Az InChIKey megalkotásakor lehetett tudni, hogy előbb-utóbb találnak ütközést, ui. a létező vegyületek száma jóval nagyobb, mint a lehetséges InChIKey-ek száma. Az InChIKey méretét úgy határozták meg, hogy a 2007-es bevezetéskor létező legnagyobb, 50–100 millió molekulavázat tároló adatbázisoknál elhanyagolható legyen az ütközés esélye.

Az ütköző kulcsok számának várható értéke a  formulával számítható, ahol  a kulcs lehetséges értékeinek száma és  az adatbázisbeli rekordok száma.

Molekulaváz esetén . Egymilliárd () rekordnál ez az érték 0,0136, tízmilliárd () rekordnál ennek százszorosa, 1,3553. A várható érték kb. 6,1×109 rekordnál éri el a 0,5-et.

A sztereoizomer kulcsnál . Százezer () rekordnál az ütközés várható értéke 0,03680, egymilliónál () 3,68. A várható érték kb. 3,7×105-nál éri el a 0,5-et, vagyis az 50%-os ütközési esélyt.

Az első adatbázisbeli kulcsütközést 2009-ben fedezték fel a spongistatin I 226 sztereoizomerje között. Az első molekulavázak közötti ütközésre két év múlva, 2011-ben találtak rá.

Jegyzetek

Források 
  Igor Pletnev, Andrey Erin, Alan McNaught, Kirill Blinov, Dmitrii Tchekhovskoi and Steve Heller: InChIKey collision resistance: an experimental testing (Journal of Cheminformatics)
 InChI - the worldwide chemical structure identifier standard (PMC)
 InChI Source Code Documentation (IUPAC)

Kapcsolódó lapok 
 International Chemical Identifier (InChI)
 hasítófüggvény
 kriptográfiai hash függvény
 

Kémia
Algoritmusok
A standard International Chemical Identifier egy a molekulaszerkezetből számított , a molekulára nézve egyedi kémiai azonosító , mely a molekula egyes tulajdonságait elkülönítve , rétegekben adja meg ( a rétegeket a /-jel választja el egymástól ) . Az InChIKey a standard InChI-ből számított fix hosszúságú , „ majdnem” egyedi azonosító ( lásd alább ) , mely adatbázisbeli ill. interneten való keresésre alkalmas . Pontosanbetűből ( benne két kötőjelből ) áll : nagybetű az InChI fő rétegéből számítva . A molekula vázát adja meg : összegképlet , az atomok közötti kémiai kötések. kötőjel nagybetű az InChI fennmaradó rétegeiből számítva . A molekula térszerkezetét és az izotópokat adja meg . S betű , amely azt jelzi , hogy az InChIKey a standard InChI-ből készült az InChI verzióját jelző nagybetű ( jelenleg azes verzió az utolsó , kódja A ) kötőjel a protonréteg jelzőjenagybetű ) Az InChIKey fix hosszúság adatbázisbeli kódolásra használható , a nagybetűket pedig az internetes keresők nem szabdalják szavakra – ellentétben a kódolatlan InChI-vel , mely zárójeleket , /-jeleket , kötőjeleket tartalmaz . Kiszámítás Akarakteres kód forrása a standard InChI-ben a prefix utántól , az összegképlettel kezdődik , és a proton ( /p ) rétegig tart . Akarakter a szöveg sha-256 kriptográfiai hash függvényénekbitjéből számítódik ; ebit abites hash elsőbitjében található . Akarakteres kód a protonréteg utántól az InChI végéig tartó szövegrészből számítódik . ( A protonréteg egyik hash-ben sem szerepel , csak az InChIKey utolsó karakterében . ) Ez a szöveg hash-énekbitje az elsőbiten belül . Abit négybites és egybites részből tevődik össze . Abitben kétbites és egybites rész van . Abit három betűt ( tripletet ) , abit két betűt ( dupletet ) ad meg InChIKey-ben . 14 bitenféle szám ábrázolható , míg az angol abc három betűjével= azaz bizonyos betűhármasok nem fognak előfordulni . A kód alkotói úgy döntöttek , hogy az EAA–EZZ és TAA–TTV közötti kódokat hagyják el , hogy még kisebb legyen az esélye annak , hogy a kód értelmes szóval legyen azonos . Az angol nyelvben ui. gyakori az E és T betű , és az ezzel kezdődő szavak . Ez azt jelenti , hogy ha abites kód nagyobb vagy egyenlőgyel , akkor a kódhoz hozzá kell adniot . Ha az így kapott kód nagyobb vagy egyenlőcal , akkor a kódhoz hozzá kell adni mégot . Abites kódoknál ( melyek a hash végén vannak ) a legnagyobb betűpárokat hagyták el , vagyis itt nincs kódkorrekció . A fenti ill.bites kódotos számrendszerbe kell átváltani aill.bet ű előállításához . Az eredeti elképzelés az volt , hogy az sha-256 elsőbitje adja az első három betűt , a másodikbit a második betűhármast , stb . Az IUPAC által kiadott programban egy csúnya programozási hiba folytán azonban összekeveredett a bitek sorrendje . Ez az InChIKey minőségét nem befolyásolta , de a kódnak az IUPAC által leírt algoritmustól eltérő előállítását megnehezítette . Az IUPAC kijavította a programozási hibát , addigra azonban az InChIKey már elterjedt ( ne felejtsük : az InChIKey legfontosabb jellemzője , hogy a molekulából számítható egyedi kód ) , így a javítást a gyakorlatban már nem használták , és a hibás program által előállított InChIKey lett a szabvány . A jobb oldali táblázat mutatja , hogy a ill.bites csoportok egyes bitjei az sha-256 hányadik bitjeiből állnak össze . Az eredeti terv atólig ill.ig egyesével növekvő táblázat volt . Egyediség A hash-függvény alkalmazása a kulcs rövidítésével megkönnyíti a keresést , azonban nem tudja biztosítani , hogy két különböző kulcshoz tartozó hash-érték biztosan különböző legyen . A hash segítségével nagyon gyorsan ki lehet keresni a néhány szóba jöhető rekordot , melyek közül aztán lassabb módszerrel keresik ki az eredeti feltételnek eleget tevőket . Az InChIKey megalkotásakor lehetett tudni , hogy előbb-utóbb találnak ütközést , ui. a létező vegyületek száma jóval nagyobb , mint a lehetséges InChIKey-ek száma . Az InChIKey méretét úgy határozták meg , hogy aes bevezetéskor létező legnagyobb, 100 millió molekulavázat tároló adatbázisoknál elhanyagolható legyen az ütközés esélye . Az ütköző kulcsok számának várható értéke a formulával számítható , ahol a kulcs lehetséges értékeinek száma és az adatbázisbeli rekordok száma . Molekulaváz esetén \ . Egymilliárd ( ) rekordnál ez az érték0136 , tízmilliárd ( ) rekordnál ennek százszorosa,3553. A várható érték kb.1×109 rekordnál éri el a5-et . A sztereoizomer kulcsnál \ . Százezer ( ) rekordnál az ütközés várható értéke03680 , egymilliónál ( )68. A várható érték kb.7×105-nál éri el a5-et , vagyis az-os ütközési esélyt . Az első adatbázisbeli kulcsütközéstben fedezték fel a spongistatin Isztereoizomerje között . Az első molekulavázak közötti ütközésre két év múlva, ben találtak rá . Jegyzetek Források Igor Pletnev , Andrey Erin , Alan McNaught , Kirill Blinov , Dmitrii Tchekhovskoi and Steve Heller : InChIKey collision resistance : an experimental testing ( Journal of Cheminformatics ) InChI - the worldwide chemical structure identifier standard ( PMC ) InChI Source Code Documentation ( IUPAC ) Kapcsolódó lapok International Chemical Identifier ( InChI ) hasítófüggvény kriptográfiai hash függvény Kémia Algoritmusok