InCHI 1.03 버전이 발표되었다.

말할 것도 없이 InCHI는 이제 Chemical Identifier의 사실상 표준이다. 대부분의 small molecular database에서 InCHI를 사용하고 있으며, 최근에는 InCHIKey의 사용도 크게 증가하고 있는 추세이다.

이런 프로그램을 업그레이드하는 것은 절대 쉬운 일이 아니다. 예를 들어, 3천만개가 넘는 PubChem의 모든 화합물들이 1.02 버전을 사용한 InCHI code를 가지고 있는데, 만약 새로운 버전에서 모든 코드를 다 바꾸어야 한다면 얼마나 큰 문제를 야기할 것인지는 너무나 분명하기 때문이다. 이런 문제 때문에, InCHI code의 처음은 InCHI=1/과 같이 (이번 버전부터는 Standard InCHI는 InCHI=1S/로 표시된다. S가 없는 것은 Standard가 아니라는 뜻이다. Standard InCHI는 RecMet, FixedH, SUU, SLUUD 옵션을 모두 끈 것을 말한다.) 사용한 InCHI 프로그램의 버전을 명기하도록 되어 있다. 앞으로 1.0에서 2.0으로 넘어가는 큰 변화가 생긴다면 당연히 이런 메커니즘 때문에 문제가 없을 것이다. (그냥 두 종류의 InCHI code를 모두 가지고 있어도 상관 없으므로) 그러나 이번과 같이 minor update의 경우에는 이 메커니즘이 작동하지 않는 것이 문제가 될 수 있다.

InCHI 1.02에서 발견된 버그들이 몇 개가 있는데, 그 중 하나는 InCHIKey 생성과 관련된 것이다. InCHIKey를 생성할 때 SHA256 알고리즘에 의해 InCHI code 문자열을 256bit signature로 변형한 뒤에 이 중에서 가장 중요한 0-36 bit 까지만 유지를 해서 이로부터 문자열을 생성하도록 되어 있다. 그런데, 프로그램의 버그로 인해 (InCHI code 후반부의 키 생성을 위해) 0-36 bit 대신 0-31, 36-39 bit가 사용되었다. 이 버그를 수정한다면, 지금까지 만들어진 모든 InCHIKey는 재생성되어야 하는 것이다. 이 때문에, 개발팀에서는 이 버그를 잡은 경우와 잡지 않은 경우를 모두 이론적인 충돌 가능성과 비교하여 보았다. 결과적으로, 버그를 잡지 않은 경우에도 이론적인 충돌 가능성에 비해 큰 변화가 없었고, 버그를 잡은 경우가 더 낫다고 말할 수도 없기 때문에 이 버그는 그대로 유지되는 것으로 결정이 되었다.

사실 InCHIKey는 정해진 길이의 문자열이기 때문에 이론적으로 서로 다른 화합물이라도 동일한 InCHIKey를 갖게 될 확률이 분명히 존재한다. 특히 stereocenter가 많은 천연물의 경우 서로 다른 diastereomer가 같은 InCHIKey를 가질 가능성이 존재하게 되는데, 잘 알려진 예가 바로 Spongistatin I의 경우이다. 이 문제를 해결하는 가장 좋은 방법은 (당연히) SHA256 hash 문자열을 그대로 사용하는 것이다. 이를 위해 InCHI code의 전반부와 후반부의 hash 문자열을 그대로 출력하는 옵션(-XHash1-XHash2)이 추가되었다. InCHIKey의 충돌이 염려되는 경우에는 이 두 개의 해쉬 값을 사용하여 동일성 여부를 검사할 수 있을 것이다.

이런 문제들보다 더욱 subtle한 문제는 바로 standard condition에 대한 문제이다. 특히 tautomer의 문제는 매우 어려운 문제인데, InCHI가 다른 identifier들, 예컨대 SMILES 코드에 비해 진일보한 부분이 바로 이런 tautomeric proton을 제대로 처리할 수 있다는 부분이었다. 그러나 이런 부분이 항상 완벽할 수는 없는 법. 이미 메일링 리스트에 이런 보고가 올라왔다. “Mobile H perception” 옵션을 꺼야 (실제 code generation에서는 -FixedH 옵션을 주어야) 정확한 구조를 표현할 수 있는데, 이렇게 되면 standard InCHI가 아니게 된다는 것이다. 물론 이 문제는 structure to InCHI code 과정의 문제가 아니라 InCHI code to structure 과정의 문제라고 할 수 있기 때문에, 약간은 본질에서 벗어난 것 같기도 하지만, 화합물이 이런 현상을 보이는 것을 반드시 예외적이라고 할 수만은 없는 것도 사실이다.

어쨌든, InCHI 1.03 버전은 출시가 되었고, 앞으로 모든 chemical identifier로 사용되게 될 것이다. InCHI 개발자들이 만든 Release note 문서를 보면서, 이런 소프트웨어를 개발한다는 것이 얼마나 어려운 일인지, 그리고 균형을 유지하는 것이 얼마나 중요한 일인지를 다시 한 번 깨닫게 된다.