Opened 3 years ago

Closed 3 years ago

Last modified 3 years ago

#6978 closed defect (fixed)

Blocking not honored for web jobs

Reported by: Eric Pettersen Owned by: Zach Pearson
Priority: blocker Milestone: 1.5
Component: Infrastructure Version:
Keywords: Cc:
Blocked By: Blocking: 5223
Notify when closed: Platform: all
Project: ChimeraX

Description

The following bug report has been submitted:
Platform:        macOS-10.15.7-x86_64-i386-64bit
ChimeraX Version: 1.4.dev202204260114 (2022-04-26 01:14:38 UTC)
Description
Web jobs not honoring blocking.  The modeller/color command in the included log immediately colors all models red, before any results are returned.

Log:
UCSF ChimeraX version: 1.4.dev202204260114 (2022-04-26)  
© 2016-2022 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  

> open /Users/pett/src/chimerax/src/bundles/alignments/test-data/nonassoc.fa
> format fasta

Summary of feedback from opening
/Users/pett/src/chimerax/src/bundles/alignments/test-data/nonassoc.fa  
---  
notes | Alignment identifier is nonassoc.fa  
Showing conservation header ("seq_conservation" residue attribute) for
alignment nonassoc.fa  
  
Opened 5 sequences from nonassoc.fa  

> open 1qvc

1qvc title:  
Crystal structure analysis of single stranded DNA binding protein (SSB) from
E.coli [more info...]  
  
Chain information for 1qvc #1  
---  
Chain | Description | UniProt  
A B C D | single stranded DNA binding protein monomer | SSB_ECOLI  
  
Associated 1qvc chain A to 1qvc with 0 mismatches  
Associated 1qvc chain B to 1qvc with 0 mismatches  
Associated 1qvc chain C to 1qvc with 0 mismatches  
Associated 1qvc chain D to 1qvc with 0 mismatches  

> help modeller

> modeller comparative :T0151 block true

> color red

Webservices job id: REHA45RXP8HLBJ5F  

QMainWindowLayout::tabPosition called with out-of-bounds value '0'  

Modeller job ID REHA45RXP8HLBJ5F finished  
Parameters  
---  
Chain pairing | ss  
Alignment algorithm | Needleman-Wunsch  
Similarity matrix | BLOSUM-62  
SS fraction | 0.3  
Gap open (HH/SS/other) | 18/18/6  
Gap extend | 1  
SS matrix |  |  | H | S | O  
---|---|---|---  
H | 6 | -9 | -6  
S |  | 6 | -6  
O |  |  | 4  
Iteration cutoff | 2  
  
Matchmaker 1qvc, chain A (#1) with T0151, chain A (#), sequence alignment
score = 287.8  
Matchmaker 1qvc, chain B (#1) with T0151, chain B (#), sequence alignment
score = 319  
Matchmaker 1qvc, chain C (#1) with T0151, chain C (#), sequence alignment
score = 289.2  
Matchmaker 1qvc, chain D (#1) with T0151, chain D (#), sequence alignment
score = 284.4  
RMSD between 386 pruned atom pairs is 0.511 angstroms; (across all 569 pairs:
8.289)  
  
Parameters  
---  
Chain pairing | ss  
Alignment algorithm | Needleman-Wunsch  
Similarity matrix | BLOSUM-62  
SS fraction | 0.3  
Gap open (HH/SS/other) | 18/18/6  
Gap extend | 1  
SS matrix |  |  | H | S | O  
---|---|---|---  
H | 6 | -9 | -6  
S |  | 6 | -6  
O |  |  | 4  
Iteration cutoff | 2  
  
Matchmaker 1qvc, chain A (#1) with T0151, chain A (#), sequence alignment
score = 298.6  
Matchmaker 1qvc, chain B (#1) with T0151, chain B (#), sequence alignment
score = 301  
Matchmaker 1qvc, chain C (#1) with T0151, chain C (#), sequence alignment
score = 289.2  
Matchmaker 1qvc, chain D (#1) with T0151, chain D (#), sequence alignment
score = 284.4  
RMSD between 391 pruned atom pairs is 0.497 angstroms; (across all 569 pairs:
8.234)  
  
Parameters  
---  
Chain pairing | ss  
Alignment algorithm | Needleman-Wunsch  
Similarity matrix | BLOSUM-62  
SS fraction | 0.3  
Gap open (HH/SS/other) | 18/18/6  
Gap extend | 1  
SS matrix |  |  | H | S | O  
---|---|---|---  
H | 6 | -9 | -6  
S |  | 6 | -6  
O |  |  | 4  
Iteration cutoff | 2  
  
Matchmaker 1qvc, chain A (#1) with T0151, chain A (#), sequence alignment
score = 316.6  
Matchmaker 1qvc, chain B (#1) with T0151, chain B (#), sequence alignment
score = 297.4  
Matchmaker 1qvc, chain C (#1) with T0151, chain C (#), sequence alignment
score = 283.2  
Matchmaker 1qvc, chain D (#1) with T0151, chain D (#), sequence alignment
score = 280.8  
RMSD between 387 pruned atom pairs is 0.488 angstroms; (across all 569 pairs:
8.228)  
  
Parameters  
---  
Chain pairing | ss  
Alignment algorithm | Needleman-Wunsch  
Similarity matrix | BLOSUM-62  
SS fraction | 0.3  
Gap open (HH/SS/other) | 18/18/6  
Gap extend | 1  
SS matrix |  |  | H | S | O  
---|---|---|---  
H | 6 | -9 | -6  
S |  | 6 | -6  
O |  |  | 4  
Iteration cutoff | 2  
  
Matchmaker 1qvc, chain A (#1) with T0151, chain A (#), sequence alignment
score = 302.2  
Matchmaker 1qvc, chain B (#1) with T0151, chain B (#), sequence alignment
score = 315.4  
Matchmaker 1qvc, chain C (#1) with T0151, chain C (#), sequence alignment
score = 288  
Matchmaker 1qvc, chain D (#1) with T0151, chain D (#), sequence alignment
score = 284.4  
RMSD between 388 pruned atom pairs is 0.544 angstroms; (across all 569 pairs:
8.248)  
  
Parameters  
---  
Chain pairing | ss  
Alignment algorithm | Needleman-Wunsch  
Similarity matrix | BLOSUM-62  
SS fraction | 0.3  
Gap open (HH/SS/other) | 18/18/6  
Gap extend | 1  
SS matrix |  |  | H | S | O  
---|---|---|---  
H | 6 | -9 | -6  
S |  | 6 | -6  
O |  |  | 4  
Iteration cutoff | 2  
  
Matchmaker 1qvc, chain A (#1) with T0151, chain A (#), sequence alignment
score = 295  
Matchmaker 1qvc, chain B (#1) with T0151, chain B (#), sequence alignment
score = 304.6  
Matchmaker 1qvc, chain C (#1) with T0151, chain C (#), sequence alignment
score = 277.2  
Matchmaker 1qvc, chain D (#1) with T0151, chain D (#), sequence alignment
score = 284.4  
RMSD between 383 pruned atom pairs is 0.574 angstroms; (across all 569 pairs:
8.312)  
  
Associated T0151 chain A to T0151 with 0 mismatches  
Associated T0151 chain B to T0151 with 0 mismatches  
Associated T0151 chain C to T0151 with 0 mismatches  
Associated T0151 chain D to T0151 with 0 mismatches  
Associated T0151 chain A to T0151 with 0 mismatches  
Associated T0151 chain B to T0151 with 0 mismatches  
Associated T0151 chain C to T0151 with 0 mismatches  
Associated T0151 chain D to T0151 with 0 mismatches  
Associated T0151 chain A to T0151 with 0 mismatches  
Associated T0151 chain B to T0151 with 0 mismatches  
Associated T0151 chain C to T0151 with 0 mismatches  
Associated T0151 chain D to T0151 with 0 mismatches  
Associated T0151 chain A to T0151 with 0 mismatches  
Associated T0151 chain B to T0151 with 0 mismatches  
Associated T0151 chain C to T0151 with 0 mismatches  
Associated T0151 chain D to T0151 with 0 mismatches  
Associated T0151 chain A to T0151 with 0 mismatches  
Associated T0151 chain B to T0151 with 0 mismatches  
Associated T0151 chain C to T0151 with 0 mismatches  
Associated T0151 chain D to T0151 with 0 mismatches  
Chain information for T0151  
---  
Chain | Description  
2.1/A 2.2/A 2.3/A 2.4/A 2.5/A 2.1/B 2.2/B 2.3/B 2.4/B 2.5/B 2.1/C 2.2/C 2.3/C
2.4/C 2.5/C 2.1/D 2.2/D 2.3/D 2.4/D 2.5/D | No description available  
  




OpenGL version: 4.1 INTEL-14.7.23
OpenGL renderer: Intel(R) Iris(TM) Pro Graphics 6200
OpenGL vendor: Intel Inc.

Python: 3.9.11
Locale: UTF-8
Qt version: PyQt6 6.3.0, Qt 6.3.0
Qt runtime version: 6.3.0
Qt platform: cocoa
Hardware:

    Hardware Overview:

      Model Name: iMac
      Model Identifier: iMac16,2
      Processor Name: Quad-Core Intel Core i5
      Processor Speed: 2.8 GHz
      Number of Processors: 1
      Total Number of Cores: 4
      L2 Cache (per Core): 256 KB
      L3 Cache: 4 MB
      Memory: 16 GB
      Boot ROM Version: 428.60.3.0.0
      SMC Version (system): 2.32f21

Software:

    System Software Overview:

      System Version: macOS 10.15.7 (19H1824)
      Kernel Version: Darwin 19.6.0
      Time since boot: 8:06

Graphics/Displays:

    Intel Iris Pro Graphics 6200:

      Chipset Model: Intel Iris Pro Graphics 6200
      Type: GPU
      Bus: Built-In
      VRAM (Dynamic, Max): 1536 MB
      Vendor: Intel
      Device ID: 0x1622
      Revision ID: 0x000a
      Metal: Supported, feature set macOS GPUFamily1 v4
      Displays:
        iMac:
          Display Type: LCD
          Resolution: 1920 x 1080 (1080p FHD - Full High Definition)
          UI Looks like: 1920 x 1080
          Framebuffer Depth: 24-Bit Color (ARGB8888)
          Main Display: Yes
          Mirror: Off
          Online: Yes
          Automatically Adjust Brightness: No
          Connection Type: Internal


Installed Packages:
    alabaster: 0.7.12
    appdirs: 1.4.4
    appnope: 0.1.3
    Babel: 2.10.1
    backcall: 0.2.0
    blockdiag: 3.0.0
    certifi: 2021.10.8
    cftime: 1.6.0
    charset-normalizer: 2.0.12
    ChimeraX-AddCharge: 1.2.3
    ChimeraX-AddH: 2.1.11
    ChimeraX-AlignmentAlgorithms: 2.0
    ChimeraX-AlignmentHdrs: 3.2.1
    ChimeraX-AlignmentMatrices: 2.0
    ChimeraX-Alignments: 2.4.2
    ChimeraX-AlphaFold: 1.0
    ChimeraX-AltlocExplorer: 1.0.2
    ChimeraX-AmberInfo: 1.0
    ChimeraX-Arrays: 1.0
    ChimeraX-Atomic: 1.38.2
    ChimeraX-AtomicLibrary: 7.0
    ChimeraX-AtomSearch: 2.0.1
    ChimeraX-AxesPlanes: 2.1
    ChimeraX-BasicActions: 1.1
    ChimeraX-BILD: 1.0
    ChimeraX-BlastProtein: 2.1.1
    ChimeraX-BondRot: 2.0
    ChimeraX-BugReporter: 1.0
    ChimeraX-BuildStructure: 2.7
    ChimeraX-Bumps: 1.0
    ChimeraX-BundleBuilder: 1.1
    ChimeraX-ButtonPanel: 1.0
    ChimeraX-CageBuilder: 1.0
    ChimeraX-CellPack: 1.0
    ChimeraX-Centroids: 1.2
    ChimeraX-ChemGroup: 2.0
    ChimeraX-Clashes: 2.2.3
    ChimeraX-ColorActions: 1.0
    ChimeraX-ColorGlobe: 1.0
    ChimeraX-ColorKey: 1.5.1
    ChimeraX-CommandLine: 1.2.3
    ChimeraX-ConnectStructure: 2.0.1
    ChimeraX-Contacts: 1.0
    ChimeraX-Core: 1.4.dev202204260114
    ChimeraX-CoreFormats: 1.1
    ChimeraX-coulombic: 1.3.2
    ChimeraX-Crosslinks: 1.0
    ChimeraX-Crystal: 1.0
    ChimeraX-CrystalContacts: 1.0
    ChimeraX-DataFormats: 1.2.2
    ChimeraX-Dicom: 1.1
    ChimeraX-DistMonitor: 1.1.5
    ChimeraX-Dssp: 2.0
    ChimeraX-EMDB-SFF: 1.0
    ChimeraX-ExperimentalCommands: 1.0
    ChimeraX-FileHistory: 1.0
    ChimeraX-FunctionKey: 1.0
    ChimeraX-Geometry: 1.2
    ChimeraX-gltf: 1.0
    ChimeraX-Graphics: 1.1
    ChimeraX-Hbonds: 2.1.2
    ChimeraX-Help: 1.2
    ChimeraX-HKCage: 1.3
    ChimeraX-IHM: 1.1
    ChimeraX-ImageFormats: 1.2
    ChimeraX-IMOD: 1.0
    ChimeraX-IO: 1.0.1
    ChimeraX-ItemsInspection: 1.0
    ChimeraX-Label: 1.1.1
    ChimeraX-ListInfo: 1.1.1
    ChimeraX-Log: 1.1.5
    ChimeraX-LookingGlass: 1.1
    ChimeraX-Maestro: 1.8.1
    ChimeraX-Map: 1.1
    ChimeraX-MapData: 2.0
    ChimeraX-MapEraser: 1.0
    ChimeraX-MapFilter: 2.0
    ChimeraX-MapFit: 2.0
    ChimeraX-MapSeries: 2.1
    ChimeraX-Markers: 1.0
    ChimeraX-Mask: 1.0
    ChimeraX-MatchMaker: 2.0.6
    ChimeraX-MDcrds: 2.6
    ChimeraX-MedicalToolbar: 1.0.1
    ChimeraX-Meeting: 1.0
    ChimeraX-MLP: 1.1
    ChimeraX-mmCIF: 2.7
    ChimeraX-MMTF: 2.1
    ChimeraX-Modeller: 1.5.5
    ChimeraX-ModelPanel: 1.3.2
    ChimeraX-ModelSeries: 1.0
    ChimeraX-Mol2: 2.0
    ChimeraX-Morph: 1.0
    ChimeraX-MouseModes: 1.1
    ChimeraX-Movie: 1.0
    ChimeraX-Neuron: 1.0
    ChimeraX-Nucleotides: 2.0.2
    ChimeraX-OpenCommand: 1.9
    ChimeraX-PDB: 2.6.6
    ChimeraX-PDBBio: 1.0
    ChimeraX-PDBLibrary: 1.0.2
    ChimeraX-PDBMatrices: 1.0
    ChimeraX-PickBlobs: 1.0
    ChimeraX-Positions: 1.0
    ChimeraX-PresetMgr: 1.1
    ChimeraX-PubChem: 2.1
    ChimeraX-ReadPbonds: 1.0.1
    ChimeraX-Registration: 1.1
    ChimeraX-RemoteControl: 1.0
    ChimeraX-ResidueFit: 1.0
    ChimeraX-RestServer: 1.1
    ChimeraX-RNALayout: 1.0
    ChimeraX-RotamerLibMgr: 2.0.1
    ChimeraX-RotamerLibsDunbrack: 2.0
    ChimeraX-RotamerLibsDynameomics: 2.0
    ChimeraX-RotamerLibsRichardson: 2.0
    ChimeraX-SaveCommand: 1.5
    ChimeraX-SchemeMgr: 1.0
    ChimeraX-SDF: 2.0
    ChimeraX-Segger: 1.0
    ChimeraX-Segment: 1.0
    ChimeraX-SelInspector: 1.0
    ChimeraX-SeqView: 2.6
    ChimeraX-Shape: 1.0.1
    ChimeraX-Shell: 1.0
    ChimeraX-Shortcuts: 1.1
    ChimeraX-ShowAttr: 1.0
    ChimeraX-ShowSequences: 1.0
    ChimeraX-SideView: 1.0
    ChimeraX-Smiles: 2.1
    ChimeraX-SmoothLines: 1.0
    ChimeraX-SpaceNavigator: 1.0
    ChimeraX-StdCommands: 1.8
    ChimeraX-STL: 1.0
    ChimeraX-Storm: 1.0
    ChimeraX-StructMeasure: 1.0.1
    ChimeraX-Struts: 1.0.1
    ChimeraX-Surface: 1.0
    ChimeraX-SwapAA: 2.0
    ChimeraX-SwapRes: 2.1.1
    ChimeraX-TapeMeasure: 1.0
    ChimeraX-Test: 1.0
    ChimeraX-Toolbar: 1.1
    ChimeraX-ToolshedUtils: 1.2.1
    ChimeraX-Tug: 1.0
    ChimeraX-UI: 1.16.5
    ChimeraX-uniprot: 2.2
    ChimeraX-UnitCell: 1.0
    ChimeraX-ViewDockX: 1.1.2
    ChimeraX-VIPERdb: 1.0
    ChimeraX-Vive: 1.1
    ChimeraX-VolumeMenu: 1.0
    ChimeraX-VTK: 1.0
    ChimeraX-WavefrontOBJ: 1.0
    ChimeraX-WebCam: 1.0
    ChimeraX-WebServices: 1.1.0
    ChimeraX-XMAS: 1.1.1
    ChimeraX-Zone: 1.0
    colorama: 0.4.4
    cxservices: 1.2
    cycler: 0.11.0
    Cython: 0.29.26
    debugpy: 1.6.0
    decorator: 5.1.1
    docutils: 0.17.1
    entrypoints: 0.4
    et-xmlfile: 1.1.0
    filelock: 3.4.2
    fonttools: 4.33.2
    funcparserlib: 1.0.0a1
    grako: 3.16.5
    h5py: 3.6.0
    html2text: 2020.1.16
    idna: 3.3
    ihm: 0.27
    imagecodecs: 2021.11.20
    imagesize: 1.3.0
    ipykernel: 6.6.1
    ipython: 7.31.1
    ipython-genutils: 0.2.0
    jedi: 0.18.1
    Jinja2: 3.0.3
    jupyter-client: 7.1.0
    jupyter-core: 4.10.0
    kiwisolver: 1.4.2
    line-profiler: 3.4.0
    lxml: 4.7.1
    lz4: 3.1.10
    MarkupSafe: 2.1.1
    matplotlib: 3.5.1
    matplotlib-inline: 0.1.3
    MolecularDynamicsViewer: 1.4
    msgpack: 1.0.3
    nest-asyncio: 1.5.5
    netCDF4: 1.5.8
    networkx: 2.6.3
    numexpr: 2.8.1
    numpy: 1.22.1
    openpyxl: 3.0.9
    openvr: 1.16.802
    packaging: 21.0
    pandas: 1.4.2
    ParmEd: 3.4.3
    parso: 0.8.3
    pexpect: 4.8.0
    pickleshare: 0.7.5
    Pillow: 9.0.1
    pip: 21.3.1
    pkginfo: 1.8.2
    prompt-toolkit: 3.0.29
    psutil: 5.9.0
    ptyprocess: 0.7.0
    pycollada: 0.7.2
    pydicom: 2.2.2
    Pygments: 2.11.2
    PyOpenGL: 3.1.5
    PyOpenGL-accelerate: 3.1.5
    pyparsing: 3.0.8
    PyQt6-commercial: 6.3.0
    PyQt6-Qt6: 6.3.0
    PyQt6-sip: 13.3.1
    PyQt6-WebEngine-commercial: 6.3.0
    PyQt6-WebEngine-Qt6: 6.3.0
    python-dateutil: 2.8.2
    pytz: 2022.1
    pyzmq: 22.3.0
    qtconsole: 5.3.0
    QtPy: 2.0.1
    QtRangeSlider: 0.1.5
    RandomWords: 0.3.0
    requests: 2.27.1
    scipy: 1.7.3
    seaborn: 0.11.2
    setuptools: 59.8.0
    sfftk-rw: 0.7.2
    six: 1.16.0
    snowballstemmer: 2.2.0
    sortedcontainers: 2.4.0
    Sphinx: 4.3.2
    sphinx-autodoc-typehints: 1.15.2
    sphinxcontrib-applehelp: 1.0.2
    sphinxcontrib-blockdiag: 3.0.0
    sphinxcontrib-devhelp: 1.0.2
    sphinxcontrib-htmlhelp: 2.0.0
    sphinxcontrib-jsmath: 1.0.1
    sphinxcontrib-qthelp: 1.0.3
    sphinxcontrib-serializinghtml: 1.1.5
    suds-community: 1.0.0
    tables: 3.7.0
    tifffile: 2021.11.2
    tinyarray: 1.2.4
    tornado: 6.1
    traitlets: 5.1.1
    urllib3: 1.26.9
    wcwidth: 0.2.5
    webcolors: 1.11.1
    wheel: 0.37.1
    wheel-filename: 1.3.0
File attachment: nonassoc.fa

nonassoc.fa

Attachments (1)

nonassoc.fa (886 bytes ) - added by Eric Pettersen 3 years ago.
Added by email2trac

Download all attachments as: .zip

Change History (13)

by Eric Pettersen, 3 years ago

Attachment: nonassoc.fa added

Added by email2trac

comment:1 by Eric Pettersen, 3 years ago

Component: UnassignedInfrastructure
Owner: set to Zach Pearson
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionBlocking not honored for web jobs

Looking at CxServicesJob, it looks like it doesn't support a 'blocking' keyword supplied to the start() method. It needs to support blocking so that scripts that rely on web services work correctly. As a consequence I suppose, the reimplemented ModellerWebJob class that inherits from CxServicesJob just takes its 'block' parameter and throws it on the floor.

Noticed this when reimplementing the sequence alignment web services, which want to optionally block.

comment:2 by Eric Pettersen, 3 years ago

Milestone: 1.5

comment:3 by Eric Pettersen, 3 years ago

Blocking: 5223
Priority: normalblocker

comment:4 by Zach Pearson, 3 years ago

CxServicesJob has no start method, it subclasses from Job (which subclasses from Task) and uses Task's start method. I think the issue with Modeller is that its keyword is 'block' and not 'blocking'.

comment:5 by Eric Pettersen, 3 years ago

When implemented as a subclass of OpalJob, ModellerWebJob took a 'block' positional parameter and called self.start(..., blocking=block). When implemented as a subclass of CxServicesJob, it takes a 'block' positional parameter and does nothing with it.

comment:6 by Zach Pearson, 3 years ago

Yep, I saw :) I was just clarifying the inheritance. The local job calls start with "blocking=block", the webservice needs to, too.

comment:7 by Eric Pettersen, 3 years ago

Trac doens't have a thumbs up, otherwise I'd use it. :-)

comment:8 by Zach Pearson, 3 years ago

Resolution: fixed
Status: assignedclosed

Fixed in this commit.

comment:9 by Eric Pettersen, 3 years ago

Resolution: fixed
Status: closedreopened

Is there a particular reason you are doing kw.pop('blocking', False) rather than kw.get('blocking', False)? Using kw.pop() causes on_finish() to be called twice because the kw.get('blocking', False) call in _run_thread no longer works right.

comment:10 by Zach Pearson, 3 years ago

I used kw.pop(...) because it removes blocking from the keyword argument dictionary. But that call should actually be first in _run_thread, I suppose. It has to be removed from kwargs before kwargs gets passed to the Job.run method, which complains that it doesn't recognize the 'blocking' argument. Sorry about that, I'll make the fix.

comment:11 by Zach Pearson, 3 years ago

Resolution: fixed
Status: reopenedclosed

OK, that seemed to work.

comment:12 by Eric Pettersen, 3 years ago

Still doesn't work because start() calls _run_thread(), both of which are doing a pop(). Changed start() to use get() and also changed run() doc string to no longer say that the 'blocking' keyword will be passed in.

Note: See TracTickets for help on using tickets.