рд▓реНрдпреВрд╕реАрди рдХрд╛ рдкреВрд░реНрдг-рдкрд╛рда рдЦреЛрдЬ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрд╛рда рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдкрд░ рдЦреЛрдЬреЛрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдРрд╕реЗ рдЙрдкрдХрд░рдг рднреА рд╣реИрдВ рдЬрд┐рдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдЖрдк "рд╕рдорд╛рди" рд░рд╛рд╕рд╛рдпрдирд┐рдХ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреА рдЦреЛрдЬ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдУрдкрдирдмреЗрд▓ред рдХрднреА-рдХрднреА рдПрдХ рд╣реА "рд░реВрдкрд░реЗрдЦрд╛" рдореЗрдВ рдЗрди рджреЛ рдкреНрд░рдХрд╛рд░ рдХреА рдЦреЛрдЬ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЛ рдПрдХ рдРрд╕реА рдкреНрд░рдгрд╛рд▓реА рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗ рд╕рдХреЗ: рдкрд╛рда рд╡рд┐рд╡рд░рдг рдореЗрдВ рдПрдХ рдкрджрд╛рд░реНрде рдвреВрдВрдвреЗрдВ рдЬрд┐рд╕рдореЗрдВ "рдЕрдореАрдиреЛ рдПрд╕рд┐рдб" рд╢рдмреНрдж рд╣реИ рдЬреЛ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдЗрдВрдбреЛрд▓ рдХреЗ рд╕рдорд╛рди рд╣реИ (рдпрд╣ рдЙрдореНрдореАрдж рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рд╣рдо рдПрдорд┐рдиреЛ рдПрд╕рд┐рдб рдЯреНрд░рд┐рдкреНрдЯреЛрдлреИрди рдкрд╛рдПрдВрдЧреЗ)ред рдпрд╣ рд▓реЗрдЦ рдкреВрд░реНрдг рдкрд╛рда рдЗрдВрдЬрди рд▓реНрдпреВрд╕реАрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдкреВрд░реНрдг-рдкрд╛рда рдЦреЛрдЬ рдПрдХ рдЙрд▓реНрдЯреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ рдкрд╛рда рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╢рдмреНрджреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдЬрд┐рд╕рдореЗрдВ рд╢рдмреНрдж рд╣реЛрддрд╛ рд╣реИ, рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░, рджрд┐рдП рдЧрдП рд╢рдмреНрдж рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рд╢рдмреНрдж рдХреА рд╕реНрдерд┐рддрд┐ рд╣реЛрддреА рд╣реИред
рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдорд╛рди рдЕрдгреБрдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦреЛрдЬ "рдЖрдгрд╡рд┐рдХ рдЫрд╛рдк" рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛ рд╕рдХрддреА рд╣реИред рдЕрдХреНрд╕рд░ рдПрдХ "рдЖрдгрд╡рд┐рдХ рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯ" рдПрдХ рдмрд┐рдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдмрд┐рдЯ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕рдВрдкрддреНрддрд┐ рдпрд╛ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдЯреБрдХрдбрд╝реЗ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рдЯреИрдирд┐рдореЛрдЯреЛ рдЧреБрдгрд╛рдВрдХ (рдЬреИрдХреНрд╡рд╛рд░реНрдб рдЧреБрдгрд╛рдВрдХ рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓рд╛) рдирд┐рдХрдЯрддрд╛ рдХреЗ рдорд╛рдк рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрдгрд╡рд┐рдХ рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯ рдХреЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ: рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо рд▓рдВрдмрд╛рдИ n рдХрд╛ рдЖрдгрд╡рд┐рдХ рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╕рдВрд░рдЪрдирд╛ рдкрд░рдорд╛рдгреБрдУрдВ рдХреА рдПрдХ рдЖрдпрд╛рдореА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдХрдЯ рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕рдХреА рд▓рдВрдмрд╛рдИ k рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рдгрд╛рдореА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдПрдХ рд╣реИрд╢ рдлрд╝рдВрдХреНрд╢рди рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ 0 рд╕реЗ n-1 рддрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдореИрдк рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕рдВрдЦреНрдпрд╛ рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯ рдореЗрдВ 1 рдкрд░ рд╕реЗрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд┐рдЯ рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИред
рд░рд╛рд╕рд╛рдпрдирд┐рдХ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЗрд╕ рддрд░рд╣ рдХреЗ рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЬрд╛рд╡рд╛-рд▓рд╛рдЗрдмреНрд░реЗрд░реА
рдХреЗрдорд┐рд╕реНрдЯреНрд░реА рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХрд┐рдЯ (рдЗрд╕рдХреЗ рдмрд╛рдж рдмрд╕ рд╕реАрдбреАрдХреЗ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕реАрдбреАрдХреЗ рдХреЛ рдПрд▓рдЬреАрдкреАрдПрд▓ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ рдХрдХреНрд╖рд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдгрд╡рд┐рдХ рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдХреЗ рдирд┐рд╢рд╛рди рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдХрдИ рд░рд╛рд╕рд╛рдпрдирд┐рдХ рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рд░реВрдкреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рдПрдХ рдЕрдгреБ рдХреЛ рдХрд╛рдЯрдХрд░ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
/ CDK IAtomContainer. IAtomContainer structure; ... for (IAtom startAtom : structure.atoms()) {
рд╡рд░реНрдгрд┐рдд "рдЖрдгрд╡рд┐рдХ рдЫрд╛рдк" рдХреА рдЧрдгрдирд╛ рд╕реАрдбреАрдХреЗ рд╡рд░реНрдЧ org.openscience.cdk.fingerprint.Fingerprinter рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИред
рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреА рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рд▓реНрдпреВрд╕реАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдХреЗ рдирд┐рд╢рд╛рди рджреНрд╡рд╛рд░рд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреА рдЦреЛрдЬ рдХреЛ "рд╢рдмреНрдж рдЦреЛрдЬ" рдХреЗ рд░реВрдк рдореЗрдВ рд╕реБрдзрд╛рд░рддреЗ рд╣реИрдВред рд╕рдВрд░рдЪрдирд╛, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдЫрд╛рдк рдирд┐рд░реНрдорд╛рдг рдХреА рд╡рд┐рдзрд┐ рдореЗрдВ рд╣реИ, рд▓рдШреБ-рдЖрдпрд╛рдореА рдЬрдВрдЬреАрд░реЛрдВ рдореЗрдВ рдХрдЯ рдЬрд╛рддреА рд╣реИ, рдЬреЛ рдкрд╛рда рдЦреЛрдЬ рдореЗрдВ рд╢рдмреНрджреЛрдВ рдХреЗ рдПрдирд╛рд▓реЙрдЧ рд╣реЛрдВрдЧреЗред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рд╣рдо рдЦреЛрдЬ рдХреНрд╡реЗрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреНрд╡реЗрд░реА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рднреА рдЬрдВрдЬреАрд░реЛрдВ рдореЗрдВ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдкрд░рд┐рдгрд╛рдо рдЙрди рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рд╣реЛрдЧрд╛ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдкрд░рдорд╛рдгреБрдУрдВ рдХреА рд╕рдорд╛рди рд╢реНрд░реГрдВрдЦрд▓рд╛рдПрдВ рд╣реИрдВред рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рджреНрд╡рд╛рд░рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЛ рдЫрд╛рдВрдЯрдиреЗ рдХрд╛ рддрдВрддреНрд░ рдЙрди рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдкрд╣рд▓реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдЧрд╛ рдЬрд┐рдирдореЗрдВ рдПрдХ рддрд░рдл, рдХрдИ рдореИрдЪ рд╣реИрдВ, рджреВрд╕рд░реА рддрд░рдл, рдпреЗ рдореИрдЪ рдереЛрдбрд╝рд╛ рдкрддрд▓рд╛ рд╣реИрдВред рдпрд╣реА рд╣реИ, рдпрд╣ рдЙрдореНрдореАрдж рдХрд░рдирд╛ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ рдХрд┐ рдкрд╣рд▓реА рдЬрдЧрд╣ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдПрдХ рд╣реА рд╕рдВрд░рдЪрдирд╛ рд╣реЛрдЧреА (рдпрджрд┐, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрд╣ рдЕрдиреБрдХреНрд░рдорд┐рдд рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рд╣реИ), рддреЛ рд╕рдорд╛рди рд╕рдВрд░рдЪрдирд╛рдПрдВ рдЬреЛ рдПрдХ рдкрд░рдорд╛рдгреБ рдпрд╛ рд╕рдореВрд╣ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддреА рд╣реИрдВ, рдлрд┐рд░ рдЖрдЧреЗ рдФрд░ рдЕрдзрд┐рдХ рдЕрд▓рдЧ рд╕рдВрд░рдЪрдирд╛рдПрдВ, рдЖрджрд┐ред
рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд▓реНрдпреВрд╕рд┐рдиреЗ (рд╡реЗрдХреНрдЯрд░ рд╕реНрдкреЗрд╕ рдореЙрдбрд▓ + рдЯреАрдПрдл-рдЖрдИрдбреАрдПрдл) рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реИрдВрдХрд┐рдВрдЧ рдлреЙрд░реНрдореВрд▓рд╛ рдЯреИрдирд┐рдорд┐рдо рдирд┐рдХрдЯрддрд╛ рдорд╛рдк рд╕реЗ рдЕрд▓рдЧ рд╣реИред рдЖрдк рд▓реНрдпреВрд╕рд┐рдиреЗ рд╕реЗ рдЯреИрдирд┐рдореЛрдЯреЛ рдЧреБрдгрд╛рдВрдХ рдлрд╛рд░реНрдореВрд▓реЗ рдХреЗ рд╕рдорд╛рдирддрд╛ рд╡рд░реНрдЧ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд╣рд╛рдВ рдирд╣реАрдВ рд░реБрдХреВрдВрдЧрд╛, рдЦрд╛рд╕рдХрд░ рдХреНрдпреЛрдВрдХрд┐ рд╕реВрддреНрд░ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ "рдЧреБрдгрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рд╕рд╣реА" рдкрд░рд┐рдгрд╛рдо рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП: рдЦрдВрдб рдХреЗ рдЪреМрд░рд╛рд╣реЛрдВ рдХреЗ рдПрдХ рдмрдбрд╝реЗ рдЕрдиреБрдкрд╛рдд рдХреЗ рд╕рд╛рде рд╕рдВрд░рдЪрдирд╛рдПрдВ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкрд╣рд▓реЗ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд╣реЛрдВрдЧреАред
рдЗрдВрдбреЗрдХреНрд╕рд┐рдВрдЧ рдФрд░ рдЕрдгреБрдУрдВ рдХреА рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд▓реНрдпреВрд╕реАрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ "
рд░рд╛рд╕рд╛рдпрдирд┐рдХ рдЯреЛрдХрди " рдмрдирд╛рдХрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЯреЛрдХреЗрдирд╛рдЗрдЬрд╝рд░ рд▓реНрдпреВрд╕реАрди рдШрдЯрдХ рд╣реИ, рдЬреЛ рдкрд╛рда рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЯреЛрдХрди рдореЗрдВ рддреЛрдбрд╝рддрд╛ рд╣реИ (рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЯреЛрдХрди рд╢рдмреНрдж рд╣реИрдВ)ред рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЗрд╕ рдЯреЛрдХрди рдХреЗ рдореВрд▓ рддрд░реНрдХ рдХреЗ рдКрдкрд░ рджрд┐рдпрд╛ рд╣реИред рдЕрдВрддрд░ рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рд▓реНрдпреВрд╕реАрди рдЯреЛрдХрди рдореЗрдВ рдПрдХ рдмрд╛рд░ рдореЗрдВ рдЪрдХреНрд░ рдореЗрдВ рд╕рднреА рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЖрдкрдХреЛ
Tokenizer.incrementToken () рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рд╕рдордп рдореЗрдВ рдкрд░рдорд╛рдгреБ рд╢реНрд░реГрдВрдЦрд▓рд╛рдУрдВ рдХреЗ
рдкрд╛рдареАрдп рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдЧреАред
рдЯреЗрдХреНрд╕реНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдгреБрдУрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдкреНрд░рд╛рд░реВрдк рд╣реИрдВред рдЕрдм рддрдХ, рд╣рдо рдЙрдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ -
SMILES рдкреНрд░рд╛рд░реВрдк рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗред CDK рдПрдХ SMILES рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╛рд░реНрд╕рд░ (рд╡рд░реНрдЧ org.openscience.cdk.smiles.SmilesParser) рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЙрдирдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ:
SmilesParser sp = new SmilesParser(DefaultChemObjectBuilder.getInstance()); String smiles = "OCC(O)C(O)C(O)C(O)CO";
SMILES рдХреЗ рдЕрдгреБрдУрдВ рдХреЛ рдПрдХ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдЕрдгреБрдУрдВ рдХреЗ
рдЕрднрд┐рд╕рд░рдг рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдЗрд╕реЗ рдЪреЗрди рдЯреЛрдХрдиреЛрдВ рдореЗрдВ рдХрд╛рдЯрдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ
рд╕реНрдорд╛рдЗрд▓рд╕реЛрдХреЗрдирд╛рдЗрдЬрд╝рд░ рд╡рд░реНрдЧ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред
рдореИрдВ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдХрдИ рдорд╣рддреНрд╡рд╣реАрди рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреВрдВрдЧрд╛, рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд╕реНрд░реЛрдд рдХреЛрдб
GitHub рдкрд░ рдЙрдкрд▓рдмреНрдз
рд╣реИ ред рдореИрдВ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╕реАрдзреЗ рдЬрд╛рдКрдВрдЧрд╛ред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЦреЛрдЬ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдореЗрдВ рддреАрди рдлрд╝реАрд▓реНрдб рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: рдирд╛рдо рд░рд╛рд╕рд╛рдпрдирд┐рдХ рдпреМрдЧрд┐рдХ рдХрд╛ рдирд╛рдо рд╣реИ, рд╡рд┐рд╡рд░рдг рдкрд╛рда рд╡рд┐рд╡рд░рдг рд╣реИ, рдФрд░ рдореБрд╕реНрдХреБрд░рд╛рд╣рдЯ рдХреНрд╖реЗрддреНрд░ рдЕрдгреБ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реИред
рдЗрдВрдбреЗрдХреНрд╕рд┐рдВрдЧ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ (
SmilesAnalyzer рд╣реЗрд▓реНрдкрд░ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЬреЛ рдмрд╕ рдПрдХ
SmilesTokerizer рдмрдирд╛рддрд╛ рд╣реИ):
Map<String,Analyzer> analyzerPerField = new HashMap<String,Analyzer>(); analyzerPerField.put(SMILES_FIELD, new SmilesAnalyzer() ); PerFieldAnalyzerWrapper analyzerWrapper = new PerFieldAnalyzerWrapper(new StandardAnalyzer(Version.LUCENE_40), analyzerPerField); Document doc = new Document(); doc.add( new TextField( "name", "Acetic acid", Field.Store.YES ) ); doc.add( new TextField( "description", "Acetic acid is one of the simplest carboxylic acids. Liquid.", Field.Store.YES ) ); doc.add( new TextField( "smiles", "CC(O)=O", Field.Store.YES ) ); Directory directory = null; IndexWriter indexWriter = null; try { directory = new RAMDirectory(); IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_40, analyzerWrapper ); indexWriter = new IndexWriter( directory, config); indexWriter.addDocument(doc); } ...
рдЦреЛрдЬ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:
reader = IndexReader.open(directory ); IndexSearcher searcher = new IndexSearcher(reader); String querystr = "smiles:CCC"; Query q = null; q = new QueryParser(Version.LUCENE_40, FREE_TEXT_FIELD, getAnalyzer()).parse(querystr); TopScoreDocCollector collector = TopScoreDocCollector.create(5, true); searcher.search(q, collector); ScoreDoc[] hits = collector.topDocs().scoreDocs;