Sfoglia il codice sorgente

[SER]3:A.CA type of selection enabled

yakomaxa 2 anni fa
parent
commit
19bf5c2b3e
1 ha cambiato i file con 26 aggiunte e 8 eliminazioni
  1. 26 8
      src/mol-script/transpilers/rasmol/parser.ts

+ 26 - 8
src/mol-script/transpilers/rasmol/parser.ts

@@ -63,13 +63,6 @@ function atomSelectionQuery2(x: any) {
     return B.struct.generator.atomGroups(tests);
 }
 
-// function atomExpressionQuery(x: any[]) {
-//    const resname = x[0];
-//    if (resname){
-//	return B.struct.generator.atomGroups({'residue-test': B.core.rel.eq([B.ammp('label_comp_id'), resname])})
-//    }
-// }
-
 const lang = P.MonadicParser.createLanguage({
 
     Parens: function (r: any) {
@@ -145,11 +138,36 @@ const lang = P.MonadicParser.createLanguage({
                     })
                 )
 	    )),
-	    //  lys:a.ca lys:a lys lys.ca
+	    //  [lys]10:a.ca [lys]10:a [lys]10 [lys]10.ca
 	    //  [lys]:a.ca [lys]:a [lys] [lys].ca
 	    commu.then(P.MonadicParser.alt(
                 P.MonadicParser.alt(
                     P.MonadicParser.alt(
+			P.MonadicParser.seq(
+                            orNull(propertiesDict.resn).skip(tator),
+			    orNull(propertiesDict.resi).skip(colon),
+                            orNull(propertiesDict.chain).skip(dot),
+                            orNull(propertiesDict.name)
+                        ).map(x => { return { resn: x[0], resi: x[1], chain: x[2], name: x[3] }; }),
+			P.MonadicParser.seq(
+                            orNull(propertiesDict.resn).skip(tator),
+			    orNull(propertiesDict.resi).skip(colon),
+                            orNull(propertiesDict.chain)
+                        ).map(x => { return { resn: x[0], resi: x[1], chain: x[2] }; }),
+			P.MonadicParser.seq(
+			    orNull(propertiesDict.resn).skip(tator),
+			    orNull(propertiesDict.resi).skip(colon).skip(dot),
+                            orNull(propertiesDict.name)
+			).map(x => { return { resn: x[0], resi: x[1], name: x[2] }; }),
+			P.MonadicParser.seq(
+                            orNull(propertiesDict.resn).skip(tator),
+			    orNull(propertiesDict.resi).skip(dot),
+                            orNull(propertiesDict.name)
+                        ).map(x => { return { resn: x[0], resi: x[1], name: x[2] }; }),
+			P.MonadicParser.seq(
+                            orNull(propertiesDict.resn).skip(tator),
+			    orNull(propertiesDict.resi)
+                        ).map(x => { return { resn: x[0], resi: x[1]}; }),
                         P.MonadicParser.seq(
                             orNull(propertiesDict.resn).skip(tator).skip(colon),
                             orNull(propertiesDict.chain).skip(dot),