libera/#clasp - IRC Chatlog
Search
3:37:17
Bike
yitzi: any idea what's up with these test failures? the closest i got to changing koga was a line in repos.sexp, but for some reason it caused the llvm json thing to pop up again https://github.com/clasp-developers/clasp/pull/1397
10:46:48
Colleen
scymtym: drmeister said 13 hours, 40 minutes ago: It's exactly as painful as I thought it would be to try and get hold of these people to ask them how this is implemented. They refer me to the SMARTS links that we have already read and then they tell me to look in the rdkit code. I don't think the answer is in there.
10:46:48
Colleen
scymtym: drmeister said 13 hours, 37 minutes ago: I think the answer is buried in the OpenEye library. I am starting to think that the `@1` is redundant. The numbers are used to indicate rings, the `@` indicates a ring. I think `@1` and `1` are equivalent.
10:46:48
Colleen
scymtym: drmeister said 13 hours, 32 minutes ago: I'm really rusty with esrap - if I want to optionally allow an `@` in `(defrule atom-pattern ...)` how would I do that? Instead of `(and acyclic-atom-pattern (? parser.common-rules:integer-literal/decimal))` to allow an optional `@` before the integer?
10:46:48
Colleen
scymtym: drmeister said 11 hours, 20 minutes ago: Is there a dynamic variable available in defrule that provides the entire string that is being parsed?
10:46:48
Colleen
scymtym: drmeister said 9 hours, 4 minutes ago: This illuminates how ring-closures work - you can prefix them with a bond primitive. This extends to SMARTS so things like `*=1[*][*][*][*]=1` are valid but the `*@1[*][*][*][*]@1` still seems pointless.
10:46:48
Colleen
scymtym: drmeister said 9 hours, 4 minutes ago: This being... http://opensmiles.org/opensmiles.html#ringclosure
10:53:41
scymtym
drmeister: seem like you figured out the correct interpretation and the required grammar change. my only comment for that would be (:destructure (dummy label &bounds …) …) => (:function :second) (:lambda (label &bounds …) …)
10:54:54
scymtym
drmeister: esrap does not currently expose the complete input text to user code in rules. what would you use the input text for?
13:48:15
drmeister
I think the SMARTS code that the Open Force Field people are using is malformed but it's being accepted by their parser.
13:49:08
scymtym
drmeister: are you planning to signal an error from the user code attached to a rule instead of letting the parse fail?
13:50:14
drmeister
Hmm, in the OpenSmiles description I see that I am wrong about the malformed SMARTS code.
13:50:22
drmeister
They say this "In a SMILES string such as "C1CCCCC1", the first occurrence of a ring-closure number (an "rnum") creates an "open bond" to the atom that precedes the ring-closure number"
13:50:45
drmeister
I always treated the ring-closure number as a label on the atom. They treat it as an "open bond".
13:52:44
drmeister
They say: "Two-digit ring numbers are permitted, but must be preceded by the percent '%' symbol, such as C%25CCCCC%25 for cyclohexane. Three-digit numbers and larger are never permitted. However, note that three digits are not invalid; for example, C%123 is the same as C3%12, that is, an atom with two rnum specifications."
13:53:41
drmeister
This will require changes to the parser and I have to reinterpret what the ring-closing number means. It's not a label on the atom, it's an open bond on an atom.
13:54:38
drmeister
scymtym: What do you recommend wrt an error? I had to search for a while to figure out what line of input was responsible for this current problem.
13:55:30
drmeister
Yes, I was planning to handle the parse error by signal an error from user code as well as report the parse error.
13:58:25
scymtym
drmeister: i assume you want to create a rule that identifies a particular syntax error and signals an appropriate error. in that case, the easiest way would be to use &bounds to capture the location and signal some condition which transports the location to the surrounding ESRAP:PARSE call
13:59:51
scymtym
around the PARSE call, which has the input text available, there could be something like (let ((input …)) (handler-bind ((transport-condition (lambda (condition) (error 'actual-condition :input input :location (location condition))))) (parse 'some-rule input)))
14:00:42
scymtym
two-digit ring numbers and the corresponding escaping seems like a relatively harmless change