Code Monkey home page Code Monkey logo

mdciao's Introduction

mdciao: Accessible Analysis and Visualization of Molecular Dynamics Simulation Data

Pip Package Python Package MacOs Package Coverage DOI License

mdciao is a Python module that provides quick, "one-shot" command-line tools to analyze molecular simulation data using residue-residue distances. mdciao tries to automate as much as possible for non-experienced users while remaining highly customizable for advanced users, by exposing an API to construct your own analysis workflow.

Under the hood, the module mdtraj is doing most of the computation and handling of molecular information, using BioPython for sequence alignment, pandas for many table and IO related operations, and matplotlib for visualizaton. It tries to automatically use the consensus nomenclature for

by either using local files or on-the-fly lookups of the GPCRdb and/or https://www.mrc-lmb.cam.ac.uk/CGN/ and/or KLIFS, respectively.

Licenses

Documentation

Currently, docs are hosted at http://proteinformatics.org/mdciao/, but this can change in the future.

System Requirements

mdciao is developed in GNU/Linux, and CI-tested via github actions for GNU/Linux and MacOs. Tested python versions are:

  • GNU/Linux: 3.7, 3.8, 3.9, 3.10, 3.11
  • MacOs: 3.7, 3.8, 3.9

So everything should work out of the box in these conditions.

Authors

mdciao is written and maintained by Guillermo Pérez-Hernández (ORCID) currently at the Institute of Medical Physics and Biophysics in the Charité Universitäsmedizin Berlin.

Please cite:
  • mdciao: Accessible Analysis and Visualization of Molecular Dynamics Simulation Data
    Guillermo Pérez-Hernández, Peter-Werner Hildebrand
    bioRxiv 2022.07.15.500163
    https://doi.org/10.1101/2022.07.15.500163

Status

mdciao is approaching its first major release, so less changes in the API and CLI calls are expected. Still, please note that some changes are very likely to happen. For more info on semantic versioning please check the semver page.

TODOs

This is an informal list of known issues and TODOs:
  • Adopt this project structure https://github.com/MolSSI/cookiecutter-cms
  • keeping vs reporting contacts: a design choice has to be made wrt to the effect of ctc_cutoff_Ang on a ContactGroup: If a given cutoff makes a ContactPair have freq=0, should the CP be kept in the CG, simply not reported? There's now a branch for that: https://github.com/gph82/mdciao/tree/buffer_neighborhood
  • overhaul the "printing" system with proper logging and warnings (perhaps use loguru)
  • progressbar not very informative for one chunked trajectory or parallel runs
  • the affiliation of a residue to a fragment is done as "res@frag" on the string output and res^frag in figures, this implementation is simply using replace("@","^"), could be better
  • parallel execution with memory mdtraj.Trajectory objects should be better
  • harmonize documentation API cli methods (mdciao.cli) and the CLI scripts (mdc*)
  • The interface between API methods and cli scripts could be better, using sth like click
  • The API-cli methods (interface, neighborhoods, sites, etc) have very similar flows but a lot of code repetition, I am sure some patterns/boilerplate could be outsourced/refactored even more.
  • Most of the tests were written against a very rigid API that mimicked the CLI closely. Now the API is more flexible and many tests could be re-written or deleted , like those needing mock-input or writing to tempdirs because writing figures or files could not be avoided.
  • There's some inconsistencies in private vs public attributes of classes. An attribute might've "started" as private and is exceptionally used somewhere else until the number of exceptions is enough for it to make sense to be public, documented and well tested. I'm working on it.
  • neighborlists could be computed much more efficiently
  • The labelling names should be harmonized (ctc_label, anchor_res...) and the logic of how/where it get's constructed (short_AA vs AA_format) is not obvious sometimes
  • There's many other TODOs spread throughout the code
  • The way uniprot or PDB codes are transformed to relative and/or absolute filenames to check if they exist locally should be unified across all lookup functions, like GPCR_finder, PDB_finder and/or the different LabelerConsensus objects, possibly by dropping optargs like 'local_path' or 'format'.
  • Some closely related methods could/should be integrated into each other by generalising a bit, but sometimes the generalisation is unnecessarily complicated to code (or I simply forget that the closely related method already exists) and re-code (and test!) for a slightly different scenario (though I try to hard to avoid it). E.g. there's several methods for computing, reporting, and saving contact frequencies and contact-matrices, or different methods to assign residue idxs to fragments, depending on particual the goal of the assignment, like find_parent_list, in_what(N)_fragments, or assign_fragments. Still, I opted for more smaller methods, which are individually easier to maintain, but that could simply be a questionable choice.
  • The 'dictionary unifying' methods could be replaced with pandas.DataFrame.merge/join
  • Writing to files, file manipulation should be done with pathlib

mdciao's People

Contributors

dependabot[bot] avatar gph82 avatar sofitiwari avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

mdciao's Issues

Text size

There was an option which you could change text size, it is not there anymore, of course, it is possible to change text size in inkscape for instance but that would be cool if you could integrate it.

Interface_

I can get the result including graphical output but still there is an error at the end

(base) lepoard@lepoard-GP63-Leopard-8RE:/media/lepoard/storage1/Data/actor-f$ interface_ctc_analyzer.py prot1.pdb run1.xtc run2.xtc run3.xtc run4.xtc --frag_idxs_group_1 0,1 --frag_idxs_group_2 2,3 --short_AAs --t_unit mus --sort_by_av_ctcs --curve_color Hobat --graphic_dpi 300 --graphic_ext png --n_smooth_hw 20 --BW_uniprot adrb2_human --CGN 3SN6 --ctc_cutoff_Ang 4 --interface_cutoff_Ang 25 --n_ctcs 40
Will compute contact frequencies for the files:
run1.xtc
run2.xtc
run3.xtc
run4.xtc
with a stride of 1 frames.

Auto-detected fragments with method resSeq
fragment 0 with 203 AAs GLU30( 0)-LYS232 (202 ) (0)
fragment 1 with 78 AAs PHE264( 203)-CYSP341(280 ) (1)
fragment 2 with 69 AAs CYSP2( 281)-GLY70 (349 ) (2)
fragment 3 with 310 AAs ASP85( 350)-LEU394 (659 ) (3)
fragment 4 with 339 AAs SER2( 660)-ASN340 (998 ) (4)
fragment 5 with 67 AAs ALA2( 999)-CYSG68 (1065) (5)
fragment 6 with 3 AAs P0G395(1066)-MG397 (1068) (6)
requesting https://gpcrdb.org/services/residues/extended/adrb2_human ...
done!
BW-numbering aligns best with fragments: [0, 1] (first-last: GLU30-CYSP341).
Input alternative in a format 1,2-6,10,20-25 or hit enter
5
166 ASN196 5.35 5.35 1
167 GLN197 5.36 5.36 1
168 ALA198 5.37 5.37 1
169 TYR199 5.38 5.38 1
170 ALA200 5.39 5.39 1
171 ILE201 5.40 5.40 1
172 ALA202 5.41 5.41 1
173 SER203 5.42 5.42 1
174 SER204 5.43 5.43 1
175 ILE205 5.44 5.44 1
176 VAL206 5.45 5.45 1
177 SER207 5.46 5.46 1
178 PHE208 5.47 5.47 1
179 TYR209 5.48 5.48 1
180 VAL210 5.49 5.49 1
181 PRO211 5.50 5.50 1
182 LEU212 5.51 5.51 1
183 VAL213 5.52 5.52 1
184 ILE214 5.53 5.53 1
185 MET215 5.54 5.54 1
186 VAL216 5.55 5.55 1
187 PHE217 5.56 5.56 1
188 VAL218 5.57 5.57 1
189 TYR219 5.58 5.58 1
190 SER220 5.59 5.59 1
191 ARG221 5.60 5.60 1
192 VAL222 5.61 5.61 1
193 PHE223 5.62 5.62 1
194 GLN224 5.63 5.63 1
195 GLU225 5.64 5.64 1
196 CYS226 None 5.65 1
197 LYS227 5.66 5.66 1
198 ARG228 5.67 5.67 1
199 GLN229 5.68 5.68 1
200 LEU230 5.69 5.69 1
201 GLN231 5.70 5.70 1

The consensus was kept, I am relabelling these:
5.65

INFO: these are the BW fragments mapped onto your topology
TM6 with 37 AAs LYS232( 202)-GLN299 (238 ) (TM6) 6.25-6.61
more than 1 fragments present. Input the ones to keep [0 1]0
TM1 with 32 AAs GLU30( 0)-PHE61 (31 ) (TM1)
ICL1 with 4 AAs GLU62( 32)-GLN65 (35 ) (ICL1)
TM2 with 31 AAs THR66( 36)-MET96 (66 ) (TM2)
ECL1 with 4 AAs MET98( 68)-PHE101 (71 ) (ECL1)
TM3 with 36 AAs GLY102( 72)-SER137 (107 ) (TM3)
ICL2 with 8 AAs PRO138( 108)-LEU145 (115 ) (ICL2)
TM4 with 27 AAs THR146( 116)-HIS172 (142 ) (TM4)
ECL2 with 3 AAs CYS191( 161)-PHE193 (163 ) (ECL2)
TM5 with 36 AAs ASN196( 166)-GLN231 (201 ) (TM5)
TM6 with 1 AAs LYS232( 202)-LYS232 (202 ) (TM6)
TM7 with 25 AAs ARG304( 243)-ARG328 (267 ) (TM7)
H8 with 11 AAs SER329( 268)-LEU339 (278 ) (H8)
Hit enter to continue!

CGN-numbering aligns best with fragments: [2, 3] (first-last: CYSP2-LEU394).
Input alternative in a format 1,2-6,10,20-25 or hit enter

H.hehf
452 GLN187 H.hehf.1 H.hehf.1 1
453 ALA188 None H.hehf.2 1
454 ASP189 H.hehf.3 H.hehf.3 1
455 TYR190 H.hehf.4 H.hehf.4 1
456 VAL191 H.hehf.5 H.hehf.5 1
457 PRO192 H.hehf.6 H.hehf.6 1
458 SER193 H.hehf.7 H.hehf.7 1

The consensus was kept, I am relabelling these:
H.hehf.2

G.hfs2
465 CYS200 G.hfs2.1 G.hfs2.1 1
466 ARG201 G.hfs2.2 G.hfs2.2 1
467 VAL202 G.hfs2.3 G.hfs2.3 1
468 LEU203 None G.hfs2.4 1
469 THR204 None G.hfs2.5 1
470 SER205 G.hfs2.6 G.hfs2.6 1
471 GLY206 G.hfs2.7 G.hfs2.7 1

The consensus was kept, I am relabelling these:
G.hfs2.4
G.hfs2.5

G.s4h3
515 SER250 G.s4h3.1 G.s4h3.1 1
516 SER251 G.s4h3.2 G.s4h3.2 1
517 SER252 G.s4h3.3 G.s4h3.3 1
518 TYR253 G.s4h3.4 G.s4h3.4 1
519 ASN254 None G.s4h3.5 1
520 VAL255 None G.s4h3.6 1
521 LEU256 None G.s4h3.7 1
522 ILE257 None G.s4h3.8 1
523 ARG258 None G.s4h3.9 1
524 GLU259 None G.s4h3.10 1
525 ASP260 None G.s4h3.11 1
526 ASN261 G.s4h3.5 G.s4h3.12 0
527 GLN262 None G.s4h3.13 0
528 THR263 G.s4h3.14 G.s4h3.14 0
529 ASN264 G.s4h3.15 G.s4h3.15 0

Consensus wasn't kept. Nothing done!

INFO: these are the CGN fragments mapped onto your topology
G.HN with 28 AAs THR9( 288)-VAL36 (315 ) (G.HN)
G.hns1 with 3 AAs TYR37( 316)-ALA39 (318 ) (G.hns1)
G.S1 with 7 AAs THR40( 319)-LEU46 (325 ) (G.S1)
G.s1h1 with 6 AAs GLY47( 326)-GLY52 (331 ) (G.s1h1)
G.H1 with 7 AAs LYS53( 332)-GLN59 (338 ) (G.H1)
H.HA with 26 AAs LYS88( 353)-LEU113 (378 ) (H.HA)
H.hahb with 9 AAs VAL114( 379)-PRO122 (387 ) (H.hahb)
H.HB with 14 AAs GLU123( 388)-ASN136 (401 ) (H.HB)
H.hbhc with 7 AAs VAL137( 402)-PRO143 (408 ) (H.hbhc)
H.HC with 12 AAs PRO144( 409)-GLU155 (420 ) (H.HC)
H.hchd with 1 AAs ASP156( 421)-ASP156 (421 ) (H.hchd)
H.HD with 12 AAs GLU157( 422)-GLU168 (433 ) (H.HD)
H.hdhe with 5 AAs TYR169( 434)-ASP173 (438 ) (H.hdhe)
H.HE with 13 AAs CYS174( 439)-LYS186 (451 ) (H.HE)
H.hehf with 7 AAs GLN187( 452)-SER193 (458 ) (H.hehf)
H.HF with 6 AAs ASP194( 459)-ARG199 (464 ) (H.HF)
G.hfs2 with 5 AAs CYS200( 465)-GLY206 (471 ) (G.hfs2)
G.S2 with 8 AAs ILE207( 472)-VAL214 (479 ) (G.S2)
G.s2s3 with 2 AAs ASP215( 480)-LYS216 (481 ) (G.s2s3)
G.S3 with 8 AAs VAL217( 482)-VAL224 (489 ) (G.S3)
G.s3h2 with 3 AAs GLY225( 490)-GLN227 (492 ) (G.s3h2)
G.H2 with 10 AAs ARG228( 493)-CYS237 (502 ) (G.H2)
G.h2s4 with 5 AAs PHE238( 503)-THR242 (507 ) (G.h2s4)
G.S4 with 7 AAs ALA243( 508)-ALA249 (514 ) (G.S4)
G.s4h3 with 7 AAs SER250( 515)-ASN264 (529 ) (G.s4h3)
G.H3 with 18 AAs ARG265( 530)-LEU282 (547 ) (G.H3)
G.h3s5 with 3 AAs ARG283( 548)-ILE285 (550 ) (G.h3s5)
G.S5 with 7 AAs SER286( 551)-ASN292 (557 ) (G.S5)
G.s5hg with 1 AAs LYS293( 558)-LYS293 (558 ) (G.s5hg)
G.HG with 17 AAs GLN294( 559)-ASP310 (575 ) (G.HG)
G.hgh4 with 10 AAs TYR311( 576)-THR320 (585 ) (G.hgh4)
G.H4 with 27 AAs PRO321( 586)-ARG347 (612 ) (G.H4)
G.h4s6 with 11 AAs ILE348( 613)-TYR358 (623 ) (G.h4s6)
G.S6 with 5 AAs CYS359( 624)-PHE363 (628 ) (G.S6)
G.s6h5 with 5 AAs THR364( 629)-ASP368 (633 ) (G.s6h5)
G.H5 with 26 AAs THR369( 634)-LEU394 (659 ) (G.H5)
Hit enter to continue!

Computing distances in the interface between fragments
0, 1
and
2, 3.
The interface is defined by the residues within 25.0 Angstrom of each other in the reference topology.
Computing interface...done!

From 106499 potential group_1-group_2 distances, the interface was reduced to only 2389 potential contacts.
If this number is still too high (i.e. the computation is too slow) consider using a smaller interface cutoff

0%| | 0/4 [00:00<?, ?it/s] 25%|████████████████████████████████████████████ | 1/4 [00:28<01:24, 28.18s/it] 50%|████████████████████████████████████████████████████████████████████████████████████████ | 2/4 [00:54<00:55, 27.71s/it] 75%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 3/4 [01:21<00:27, 27.50s/it]100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [01:50<00:00, 27.62s/it]

freq residue idxs                              label    sum

0 0.73 101 657 [email protected] - [email protected] 0.73
1 0.56 108 650 [email protected] - [email protected] 1.28
2 0.51 209 659 [email protected] - [email protected] 1.79
3 0.47 268 656 [email protected] - [email protected] 2.27
4 0.47 273 317 [email protected] - [email protected] 2.74
5 0.43 112 650 [email protected] - [email protected] 3.17
6 0.38 33 317 [email protected] - [email protected] 3.55
7 0.37 206 659 [email protected] - [email protected] 3.92
8 0.35 277 313 [email protected] - [email protected] 4.27
9 0.34 206 658 [email protected] - [email protected] 4.61
10 0.34 39 656 [email protected] - [email protected] 4.95
11 0.34 270 656 [email protected] - [email protected] 5.29
12 0.33 33 652 [email protected] - [email protected] 5.63
13 0.33 209 658 [email protected] - [email protected] 5.96
14 0.33 109 647 [email protected] - [email protected] 6.29
15 0.33 268 655 [email protected] - [email protected] 6.61
16 0.31 213 658 [email protected] - [email protected] 6.92
17 0.30 109 650 [email protected] - [email protected] 7.23
18 0.30 111 650 [email protected] - [email protected] 7.53
19 0.30 33 656 [email protected] - [email protected] 7.83
20 0.29 205 658 [email protected] - [email protected] 8.12
21 0.28 273 314 [email protected] - [email protected] 8.40
22 0.27 112 653 [email protected] - [email protected] 8.67
23 0.27 269 317 [email protected] - [email protected] 8.94
24 0.27 109 625 [email protected] - [email protected] 9.20
25 0.27 36 653 [email protected] - [email protected] 9.47
26 0.26 32 481 [email protected] - [email protected] 9.72
27 0.26 199 621 [email protected] - [email protected] 9.98
28 0.25 109 643 [email protected] - [email protected] 10.24
29 0.25 112 646 [email protected] - [email protected] 10.49
30 0.25 108 625 [email protected] - [email protected] 10.74
31 0.25 38 656 [email protected] - [email protected] 10.99
32 0.24 210 658 [email protected] - [email protected] 11.23
33 0.24 109 646 [email protected] - [email protected] 11.48
34 0.24 203 620 [email protected] - [email protected] 11.72
35 0.24 105 654 [email protected] - [email protected] 11.96
36 0.23 203 621 [email protected] - [email protected] 12.19
37 0.23 195 621 [email protected] - [email protected] 12.42
38 0.22 273 310 [email protected] - [email protected] 12.65
39 0.22 216 659 [email protected] - [email protected] 12.87

       label  freq

0 [email protected] 1.39
1 [email protected] 1.01
2 [email protected] 0.98
3 [email protected] 0.95
4 [email protected] 0.85
5 [email protected] 0.81
6 [email protected] 0.80
7 [email protected] 0.73
8 [email protected] 0.71
9 [email protected] 0.48
10 [email protected] 0.35
11 [email protected] 0.34
12 [email protected] 0.34
13 [email protected] 0.31
14 [email protected] 0.30
15 [email protected] 0.29
16 [email protected] 0.27
17 [email protected] 0.27
18 [email protected] 0.26
19 [email protected] 0.26
20 [email protected] 0.25
21 [email protected] 0.24
22 [email protected] 0.24
23 [email protected] 0.23
24 [email protected] 0.22

           label  freq

0 [email protected] 1.70
1 [email protected] 1.60
2 [email protected] 1.52
3 [email protected] 1.12
4 [email protected] 1.10
5 [email protected] 0.73
6 [email protected] 0.72
7 [email protected] 0.53
8 [email protected] 0.52
9 [email protected] 0.49
10 [email protected] 0.35
11 [email protected] 0.33
12 [email protected] 0.33
13 [email protected] 0.33
14 [email protected] 0.28
15 [email protected] 0.26
16 [email protected] 0.25
17 [email protected] 0.24
18 [email protected] 0.24
19 [email protected] 0.22
The following files have been created
./interface.overall.png
./interface.overall.xlsx
Traceback (most recent call last):
File "/home/lepoard/anaconda3/bin/interface_ctc_analyzer.py", line 4, in
import('pkg_resources').run_script('mdciao==0.1', 'interface_ctc_analyzer.py')
File "/home/lepoard/anaconda3/lib/python3.7/site-packages/pkg_resources/init.py", line 666, in run_script
self.require(requires)[0].run_script(script_name, ns)
File "/home/lepoard/anaconda3/lib/python3.7/site-packages/pkg_resources/init.py", line 1469, in run_script
exec(script_code, namespace, namespace)
File "/home/lepoard/anaconda3/lib/python3.7/site-packages/mdciao-0.1-py3.7.egg/EGG-INFO/scripts/interface_ctc_analyzer.py", line 13, in
File "/home/lepoard/anaconda3/lib/python3.7/site-packages/mdciao-0.1-py3.7.egg/mdciao/command_line_tools.py", line 1039, in interface
File "/home/lepoard/anaconda3/lib/python3.7/site-packages/mdciao-0.1-py3.7.egg/mdciao/contacts.py", line 1107, in plot_timedep_ctcs
UnboundLocalError: local variable 'axes_iter' referenced before assignment

XlsxWriter error

Dear @gph82

I have installed mdciao in a new conda enviroments. I have tried to compute the interface between two proteins. However, I encountered the following error:

AttributeError: 'XlsxWriter' object has no attribute 'save'

I also attempted to install different versions of XlsxWriter to resolve the issue, but unfortunately, the error persists.

conda enviroment informations:

name: for_mdciao
channels:
  - anaconda
  - conda-forge
  - acellera
  - psi4
  - defaults
dependencies:
  - _libgcc_mutex=0.1=conda_forge
  - _openmp_mutex=4.5=2_gnu
  - alsa-lib=1.2.8=h166bdaf_0
  - anyio=3.5.0=py310h06a4308_0
  - argon2-cffi=21.3.0=pyhd3eb1b0_0
  - argon2-cffi-bindings=21.2.0=py310h7f8727e_0
  - attr=2.5.1=h166bdaf_1
  - attrs=22.1.0=py310h06a4308_0
  - babel=2.11.0=py310h06a4308_0
  - beautifulsoup4=4.11.1=py310h06a4308_0
  - bleach=4.1.0=pyhd3eb1b0_0
  - brotlipy=0.7.0=py310h7f8727e_1002
  - bzip2=1.0.8=h7f98852_4
  - ca-certificates=2023.01.10=h06a4308_0
  - cairo=1.16.0=h35add3b_1015
  - cffi=1.15.1=py310h5eee18b_3
  - comm=0.1.2=py310h06a4308_0
  - cryptography=38.0.4=py310h9ce1e76_0
  - cython=0.29.34=py310heca2aa9_0
  - dbus=1.13.18=hb2f20db_0
  - debugpy=1.5.1=py310h295c915_0
  - defusedxml=0.7.1=pyhd3eb1b0_0
  - entrypoints=0.4=py310h06a4308_0
  - expat=2.5.0=hcb278e6_1
  - flit-core=3.6.0=pyhd3eb1b0_0
  - font-ttf-dejavu-sans-mono=2.37=hd3eb1b0_0
  - font-ttf-inconsolata=2.001=hcb22688_0
  - font-ttf-source-code-pro=2.030=hd3eb1b0_0
  - font-ttf-ubuntu=0.83=h8b1ccd4_0
  - fontconfig=2.14.2=h14ed4e7_0
  - fonts-anaconda=1=h8fa9717_0
  - fonts-conda-ecosystem=1=hd3eb1b0_0
  - freetype=2.12.1=h4a9f257_0
  - gettext=0.21.1=h27087fc_0
  - glib=2.76.2=hfc55251_0
  - glib-tools=2.76.2=hfc55251_0
  - graphite2=1.3.14=h295c915_1
  - gst-plugins-base=1.22.0=h4243ec0_2
  - gstreamer=1.22.0=h25f0c4b_2
  - harfbuzz=6.0.0=h3ff4399_1
  - icu=72.1=hcb278e6_0
  - ipykernel=6.19.2=py310h2f386ee_0
  - ipython_genutils=0.2.0=pyhd3eb1b0_1
  - ipywidgets=7.6.5=pyhd3eb1b0_1
  - jinja2=3.1.2=py310h06a4308_0
  - json5=0.9.6=pyhd3eb1b0_0
  - jsonschema=4.16.0=py310h06a4308_0
  - jupyter=1.0.0=py310h06a4308_8
  - jupyter_client=7.4.8=py310h06a4308_0
  - jupyter_console=6.4.4=py310h06a4308_0
  - jupyter_core=5.1.1=py310h06a4308_0
  - jupyter_server=1.23.4=py310h06a4308_0
  - jupyterlab=3.5.3=py310h06a4308_0
  - jupyterlab_pygments=0.1.2=py_0
  - jupyterlab_server=2.16.5=py310h06a4308_0
  - jupyterlab_widgets=1.0.0=pyhd3eb1b0_1
  - keyutils=1.6.1=h166bdaf_0
  - krb5=1.20.1=h81ceb04_0
  - lame=3.100=h7b6447c_0
  - ld_impl_linux-64=2.40=h41732ed_0
  - libblas=3.9.0=16_linux64_openblas
  - libcap=2.67=he9d0100_0
  - libcblas=3.9.0=16_linux64_openblas
  - libclang=16.0.3=default_h83cc7fd_0
  - libclang13=16.0.3=default_hd781213_0
  - libcups=2.3.3=h36d4200_3
  - libedit=3.1.20221030=h5eee18b_0
  - libevent=2.1.10=h28343ad_4
  - libexpat=2.5.0=hcb278e6_1
  - libffi=3.4.2=h7f98852_5
  - libflac=1.4.2=h27087fc_0
  - libgcc-ng=12.2.0=h65d4601_19
  - libgcrypt=1.10.1=h166bdaf_0
  - libgfortran-ng=12.2.0=h69a702a_19
  - libgfortran5=12.2.0=h337968e_19
  - libglib=2.76.2=hebfc3b9_0
  - libgomp=12.2.0=h65d4601_19
  - libgpg-error=1.46=h620e276_0
  - libiconv=1.17=h166bdaf_0
  - libjpeg-turbo=2.1.5.1=h0b41bf4_0
  - liblapack=3.9.0=16_linux64_openblas
  - libllvm16=16.0.3=hbf9e925_1
  - libnsl=2.0.0=h7f98852_0
  - libogg=1.3.5=h27cfd23_1
  - libopenblas=0.3.21=pthreads_h78a6416_3
  - libopus=1.3.1=h7b6447c_0
  - libpng=1.6.39=h753d276_0
  - libpq=15.2=hb675445_0
  - libsndfile=1.2.0=hb75c966_0
  - libsodium=1.0.18=h7b6447c_0
  - libsqlite=3.41.2=h2797004_1
  - libstdcxx-ng=12.2.0=h46fd767_19
  - libsystemd0=253=h8c4010b_1
  - libuuid=2.38.1=h0b41bf4_0
  - libvorbis=1.3.7=h7b6447c_0
  - libxcb=1.13=h7f98852_1004
  - libxkbcommon=1.5.0=h79f4944_1
  - libxml2=2.10.4=hfdac1af_0
  - libzlib=1.2.13=h166bdaf_4
  - lz4-c=1.9.4=h6a678d5_0
  - markupsafe=2.1.1=py310h7f8727e_0
  - mistune=0.8.4=py310h7f8727e_1000
  - mpg123=1.31.3=hcb278e6_0
  - mysql-common=8.0.32=hf1915f5_2
  - mysql-libs=8.0.32=hca2cd23_2
  - nbclassic=0.4.8=py310h06a4308_0
  - nbclient=0.5.13=py310h06a4308_0
  - nbconvert=6.4.4=py310h06a4308_0
  - nbformat=5.7.0=py310h06a4308_0
  - ncurses=6.3=h27087fc_1
  - nest-asyncio=1.5.6=py310h06a4308_0
  - notebook=6.5.2=py310h06a4308_0
  - notebook-shim=0.2.2=py310h06a4308_0
  - nspr=4.35=h27087fc_0
  - nss=3.89=he45b914_0
  - openssl=3.1.0=hd590300_3
  - pandocfilters=1.5.0=pyhd3eb1b0_0
  - pcre2=10.40=hc3806b6_0
  - pip=23.1.2=pyhd8ed1ab_0
  - pixman=0.40.0=h7f8727e_1
  - platformdirs=2.5.2=py310h06a4308_0
  - ply=3.11=py310h06a4308_0
  - prometheus_client=0.14.1=py310h06a4308_0
  - prompt_toolkit=3.0.20=hd3eb1b0_0
  - psutil=5.9.0=py310h5eee18b_0
  - pthread-stubs=0.3=h0ce48e5_1
  - pulseaudio-client=16.1=h5195f5e_3
  - pure_eval=0.2.2=pyhd3eb1b0_0
  - pycparser=2.21=pyhd3eb1b0_0
  - pyopenssl=22.0.0=pyhd3eb1b0_0
  - pyqt=5.15.7=py310h29803b5_0
  - pyqt5-sip=12.11.0=py310hd8f1fbe_0
  - pyrsistent=0.18.0=py310h7f8727e_0
  - pysocks=1.7.1=py310h06a4308_0
  - python=3.10.10=he550d4f_0_cpython
  - python-fastjsonschema=2.16.2=py310h06a4308_0
  - python_abi=3.10=3_cp310
  - pyzmq=23.2.0=py310h6a678d5_0
  - qt-main=5.15.8=h5c52f38_10
  - qtconsole=5.4.0=py310h06a4308_0
  - qtpy=2.2.0=py310h06a4308_0
  - readline=8.2=h8228510_1
  - send2trash=1.8.0=pyhd3eb1b0_1
  - setuptools=67.7.2=pyhd8ed1ab_0
  - sip=6.6.2=py310h6a678d5_0
  - sniffio=1.2.0=py310h06a4308_1
  - soupsieve=2.3.2.post1=py310h06a4308_0
  - stack_data=0.2.0=pyhd3eb1b0_0
  - terminado=0.17.1=py310h06a4308_0
  - testpath=0.6.0=py310h06a4308_0
  - tk=8.6.12=h27826a3_0
  - toml=0.10.2=pyhd3eb1b0_0
  - tornado=6.2=py310h5eee18b_0
  - typing-extensions=4.4.0=py310h06a4308_0
  - typing_extensions=4.4.0=py310h06a4308_0
  - webencodings=0.5.1=py310h06a4308_1
  - websocket-client=0.58.0=py310h06a4308_4
  - widgetsnbextension=3.5.2=py310h06a4308_0
  - xcb-util=0.4.0=h166bdaf_0
  - xcb-util-image=0.4.0=h166bdaf_0
  - xcb-util-keysyms=0.4.0=h166bdaf_0
  - xcb-util-renderutil=0.3.9=h166bdaf_0
  - xcb-util-wm=0.4.1=h166bdaf_0
  - xkeyboard-config=2.38=h0b41bf4_0
  - xorg-kbproto=1.0.7=h7f98852_1002
  - xorg-libice=1.0.10=h7f98852_0
  - xorg-libsm=1.2.3=hd9c2040_1000
  - xorg-libx11=1.8.4=h0b41bf4_0
  - xorg-libxau=1.0.9=h7f98852_0
  - xorg-libxdmcp=1.1.3=h7f98852_0
  - xorg-libxext=1.3.4=h0b41bf4_2
  - xorg-libxrender=0.9.10=h7f98852_1003
  - xorg-renderproto=0.11.1=h7f98852_1002
  - xorg-xextproto=7.3.0=h0b41bf4_1003
  - xorg-xf86vidmodeproto=2.3.1=h7f98852_1002
  - xorg-xproto=7.0.31=h27cfd23_1007
  - xz=5.2.6=h166bdaf_0
  - zeromq=4.3.4=h2531618_0
  - zlib=1.2.13=h166bdaf_4
  - zstd=1.5.2=ha4553b6_0
  - pip:
      - asttokens==2.2.1
      - astunparse==1.6.3
      - backcall==0.2.0
      - biopython==1.81
      - certifi==2023.5.7
      - charset-normalizer==3.1.0
      - contourpy==1.0.7
      - coverage==7.2.5
      - cycler==0.11.0
      - decorator==5.1.1
      - docstring-parser==0.15
      - et-xmlfile==1.1.0
      - exceptiongroup==1.1.1
      - executing==1.2.0
      - fonttools==4.39.3
      - idna==3.4
      - iniconfig==2.0.0
      - ipython==8.13.2
      - jedi==0.18.2
      - joblib==1.2.0
      - kiwisolver==1.4.4
      - matplotlib==3.7.1
      - matplotlib-inline==0.1.6
      - mdciao==0.0.5
      - mdtraj==1.9.7
      - mock==5.0.2
      - natsort==8.3.1
      - nose==1.3.7
      - numpy==1.23.5
      - openpyxl==3.2.0b1
      - packaging==23.1
      - pandas==2.0.1
      - parso==0.8.3
      - pexpect==4.8.0
      - pickleshare==0.7.5
      - pillow==9.5.0
      - pluggy==1.0.0
      - prompt-toolkit==3.0.38
      - ptyprocess==0.7.0
      - pure-eval==0.2.2
      - pygments==2.15.1
      - pyparsing==3.1.0b1
      - pytest==7.3.1
      - python-dateutil==2.8.2
      - pytz==2023.3
      - requests==2.30.0
      - scipy==1.10.1
      - six==1.16.0
      - stack-data==0.6.2
      - tomli==2.0.1
      - tqdm==4.65.0
      - traitlets==5.9.0
      - tzdata==2023.3
      - urllib3==2.0.2
      - wcwidth==0.2.6
      - wheel==0.40.0
      - xlsxwriter==2.0.0

Interface_analyser memory problem

interface_ctc_analyzer.py prot1.pdb run1.xtc run2.xtc run3.xtc run4.xtc --frag_idxs_group_1 0,1 --frag_idxs_group_2 2,3 --short_AAs --t_unit mus --sort_by_av_ctcs --curve_color Hobat --graphic_dpi 300 --graphic_ext png --n_jobs 8 --n_smooth_hw 20 --BW_uniprot adrb2_human --CGN 3SN6 --ctc_cutoff_Ang 4
Will compute contact frequencies for the files:
run1.xtc
run2.xtc
run3.xtc
run4.xtc
with a stride of 1 frames.

Auto-detected fragments with method resSeq
fragment 0 with 203 AAs GLU30( 0)-LYS232 (202 ) (0)
fragment 1 with 78 AAs PHE264( 203)-CYSP341(280 ) (1)
fragment 2 with 69 AAs CYSP2( 281)-GLY70 (349 ) (2)
fragment 3 with 310 AAs ASP85( 350)-LEU394 (659 ) (3)
fragment 4 with 339 AAs SER2( 660)-ASN340 (998 ) (4)
fragment 5 with 67 AAs ALA2( 999)-CYSG68 (1065) (5)
fragment 6 with 3 AAs P0G395(1066)-MG397 (1068) (6)
requesting https://gpcrdb.org/services/residues/extended/adrb2_human ...done!
BW-numbering aligns best with fragments: [0, 1] (first-last: GLU30-CYSP341).
Input alternative in a format 1,2-6,10,20-25 or hit enter

5
166 ASN196 5.35 5.35 1
167 GLN197 5.36 5.36 1
168 ALA198 5.37 5.37 1
169 TYR199 5.38 5.38 1
170 ALA200 5.39 5.39 1
171 ILE201 5.40 5.40 1
172 ALA202 5.41 5.41 1
173 SER203 5.42 5.42 1
174 SER204 5.43 5.43 1
175 ILE205 5.44 5.44 1
176 VAL206 5.45 5.45 1
177 SER207 5.46 5.46 1
178 PHE208 5.47 5.47 1
179 TYR209 5.48 5.48 1
180 VAL210 5.49 5.49 1
181 PRO211 5.50 5.50 1
182 LEU212 5.51 5.51 1
183 VAL213 5.52 5.52 1
184 ILE214 5.53 5.53 1
185 MET215 5.54 5.54 1
186 VAL216 5.55 5.55 1
187 PHE217 5.56 5.56 1
188 VAL218 5.57 5.57 1
189 TYR219 5.58 5.58 1
190 SER220 5.59 5.59 1
191 ARG221 5.60 5.60 1
192 VAL222 5.61 5.61 1
193 PHE223 5.62 5.62 1
194 GLN224 5.63 5.63 1
195 GLU225 5.64 5.64 1
196 CYS226 None 5.65 1
197 LYS227 5.66 5.66 1
198 ARG228 5.67 5.67 1
199 GLN229 5.68 5.68 1
200 LEU230 5.69 5.69 1
201 GLN231 5.70 5.70 1

The consensus was kept, I am relabelling these:
5.65

INFO: these are the BW fragments mapped onto your topology
TM6 with 37 AAs LYS232( 202)-GLN299 (238 ) (TM6) 6.25-6.61
more than 1 fragments present. Input the ones to keep [0 1]0
TM1 with 32 AAs GLU30( 0)-PHE61 (31 ) (TM1)
ICL1 with 4 AAs GLU62( 32)-GLN65 (35 ) (ICL1)
TM2 with 31 AAs THR66( 36)-MET96 (66 ) (TM2)
ECL1 with 4 AAs MET98( 68)-PHE101 (71 ) (ECL1)
TM3 with 36 AAs GLY102( 72)-SER137 (107 ) (TM3)
ICL2 with 8 AAs PRO138( 108)-LEU145 (115 ) (ICL2)
TM4 with 27 AAs THR146( 116)-HIS172 (142 ) (TM4)
ECL2 with 3 AAs CYS191( 161)-PHE193 (163 ) (ECL2)
TM5 with 36 AAs ASN196( 166)-GLN231 (201 ) (TM5)
TM6 with 1 AAs LYS232( 202)-LYS232 (202 ) (TM6)
TM7 with 25 AAs ARG304( 243)-ARG328 (267 ) (TM7)
H8 with 11 AAs SER329( 268)-LEU339 (278 ) (H8)
Hit enter to continue!

CGN-numbering aligns best with fragments: [2, 3] (first-last: CYSP2-LEU394).
Input alternative in a format 1,2-6,10,20-25 or hit enter

H.hehf
452 GLN187 H.hehf.1 H.hehf.1 1
453 ALA188 None H.hehf.2 1
454 ASP189 H.hehf.3 H.hehf.3 1
455 TYR190 H.hehf.4 H.hehf.4 1
456 VAL191 H.hehf.5 H.hehf.5 1
457 PRO192 H.hehf.6 H.hehf.6 1
458 SER193 H.hehf.7 H.hehf.7 1

The consensus was kept, I am relabelling these:
H.hehf.2

G.hfs2
465 CYS200 G.hfs2.1 G.hfs2.1 1
466 ARG201 G.hfs2.2 G.hfs2.2 1
467 VAL202 G.hfs2.3 G.hfs2.3 1
468 LEU203 None G.hfs2.4 1
469 THR204 None G.hfs2.5 1
470 SER205 G.hfs2.6 G.hfs2.6 1
471 GLY206 G.hfs2.7 G.hfs2.7 1

The consensus was kept, I am relabelling these:
G.hfs2.4
G.hfs2.5

G.s4h3
515 SER250 G.s4h3.1 G.s4h3.1 1
516 SER251 G.s4h3.2 G.s4h3.2 1
517 SER252 G.s4h3.3 G.s4h3.3 1
518 TYR253 G.s4h3.4 G.s4h3.4 1
519 ASN254 None G.s4h3.5 1
520 VAL255 None G.s4h3.6 1
521 LEU256 None G.s4h3.7 1
522 ILE257 None G.s4h3.8 1
523 ARG258 None G.s4h3.9 1
524 GLU259 None G.s4h3.10 1
525 ASP260 None G.s4h3.11 1
526 ASN261 G.s4h3.5 G.s4h3.12 0
527 GLN262 None G.s4h3.13 0
528 THR263 G.s4h3.14 G.s4h3.14 0
529 ASN264 G.s4h3.15 G.s4h3.15 0

Consensus wasn't kept. Nothing done!

INFO: these are the CGN fragments mapped onto your topology
G.HN with 28 AAs THR9( 288)-VAL36 (315 ) (G.HN)
G.hns1 with 3 AAs TYR37( 316)-ALA39 (318 ) (G.hns1)
G.S1 with 7 AAs THR40( 319)-LEU46 (325 ) (G.S1)
G.s1h1 with 6 AAs GLY47( 326)-GLY52 (331 ) (G.s1h1)
G.H1 with 7 AAs LYS53( 332)-GLN59 (338 ) (G.H1)
H.HA with 26 AAs LYS88( 353)-LEU113 (378 ) (H.HA)
H.hahb with 9 AAs VAL114( 379)-PRO122 (387 ) (H.hahb)
H.HB with 14 AAs GLU123( 388)-ASN136 (401 ) (H.HB)
H.hbhc with 7 AAs VAL137( 402)-PRO143 (408 ) (H.hbhc)
H.HC with 12 AAs PRO144( 409)-GLU155 (420 ) (H.HC)
H.hchd with 1 AAs ASP156( 421)-ASP156 (421 ) (H.hchd)
H.HD with 12 AAs GLU157( 422)-GLU168 (433 ) (H.HD)
H.hdhe with 5 AAs TYR169( 434)-ASP173 (438 ) (H.hdhe)
H.HE with 13 AAs CYS174( 439)-LYS186 (451 ) (H.HE)
H.hehf with 7 AAs GLN187( 452)-SER193 (458 ) (H.hehf)
H.HF with 6 AAs ASP194( 459)-ARG199 (464 ) (H.HF)
G.hfs2 with 5 AAs CYS200( 465)-GLY206 (471 ) (G.hfs2)
G.S2 with 8 AAs ILE207( 472)-VAL214 (479 ) (G.S2)
G.s2s3 with 2 AAs ASP215( 480)-LYS216 (481 ) (G.s2s3)
G.S3 with 8 AAs VAL217( 482)-VAL224 (489 ) (G.S3)
G.s3h2 with 3 AAs GLY225( 490)-GLN227 (492 ) (G.s3h2)
G.H2 with 10 AAs ARG228( 493)-CYS237 (502 ) (G.H2)
G.h2s4 with 5 AAs PHE238( 503)-THR242 (507 ) (G.h2s4)
G.S4 with 7 AAs ALA243( 508)-ALA249 (514 ) (G.S4)
G.s4h3 with 7 AAs SER250( 515)-ASN264 (529 ) (G.s4h3)
G.H3 with 18 AAs ARG265( 530)-LEU282 (547 ) (G.H3)
G.h3s5 with 3 AAs ARG283( 548)-ILE285 (550 ) (G.h3s5)
G.S5 with 7 AAs SER286( 551)-ASN292 (557 ) (G.S5)
G.s5hg with 1 AAs LYS293( 558)-LYS293 (558 ) (G.s5hg)
G.HG with 17 AAs GLN294( 559)-ASP310 (575 ) (G.HG)
G.hgh4 with 10 AAs TYR311( 576)-THR320 (585 ) (G.hgh4)
G.H4 with 27 AAs PRO321( 586)-ARG347 (612 ) (G.H4)
G.h4s6 with 11 AAs ILE348( 613)-TYR358 (623 ) (G.h4s6)
G.S6 with 5 AAs CYS359( 624)-PHE363 (628 ) (G.S6)
G.s6h5 with 5 AAs THR364( 629)-ASP368 (633 ) (G.s6h5)
G.H5 with 26 AAs THR369( 634)-LEU394 (659 ) (G.H5)
Hit enter to continue!

Computing distances in the interface between fragments
0, 1
and
2, 3.
The interface is defined by the residues within 35.0 Angstrom of each other in the reference topology.
Computing interface...done!

From 106499 potential group_1-group_2 distances, the interface was reduced to only 8872 potential contacts.
If this number is still too high (i.e. the computation is too slow) consider using a smaller interface cutoff

100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:00<00:00, 68.90it/s]
joblib.externals.loky.process_executor._RemoteTraceback: 00 frames. chunknr 0 frames 8001
"""
Traceback (most recent call last):
File "/home/lepoard/anaconda3/lib/python3.7/site-packages/joblib/externals/loky/process_executor.py", line 418, in _process_worker
r = call_item()
File "/home/lepoard/anaconda3/lib/python3.7/site-packages/joblib/externals/loky/process_executor.py", line 272, in call
return self.fn(*self.args, **self.kwargs)
File "/home/lepoard/anaconda3/lib/python3.7/site-packages/joblib/_parallel_backends.py", line 567, in call
return self.func(*args, **kwargs)
File "/home/lepoard/anaconda3/lib/python3.7/site-packages/joblib/parallel.py", line 225, in call
for func, args, kwargs in self.items]
File "/home/lepoard/anaconda3/lib/python3.7/site-packages/joblib/parallel.py", line 225, in
for func, args, kwargs in self.items]
File "/home/lepoard/anaconda3/lib/python3.7/site-packages/mdciao-0.1-py3.7.egg/mdciao/contacts.py", line 200, in per_xtc_ctc
jctcs, jidx_pairs, j_atompairs = compute_contacts(igeom, ctc_residxs_pairs, **mdcontacts_kwargs)
File "/home/lepoard/anaconda3/lib/python3.7/site-packages/mdciao-0.1-py3.7.egg/mdciao/contacts.py", line 2451, in compute_contacts
atom_distances = _md.compute_distances(traj, atom_pairs, periodic=periodic)
File "/home/lepoard/anaconda3/lib/python3.7/site-packages/mdtraj/geometry/distance.py", line 74, in compute_distances
out = np.empty((xyz.shape[0], pairs.shape[0]), dtype=np.float32)
MemoryError: Unable to allocate array with shape (8001, 660502) and data type float32
"""

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "/home/lepoard/anaconda3/bin/interface_ctc_analyzer.py", line 4, in
import('pkg_resources').run_script('mdciao==0.1', 'interface_ctc_analyzer.py')
File "/home/lepoard/anaconda3/lib/python3.7/site-packages/pkg_resources/init.py", line 666, in run_script
self.require(requires)[0].run_script(script_name, ns)
File "/home/lepoard/anaconda3/lib/python3.7/site-packages/pkg_resources/init.py", line 1469, in run_script
exec(script_code, namespace, namespace)
File "/home/lepoard/anaconda3/lib/python3.7/site-packages/mdciao-0.1-py3.7.egg/EGG-INFO/scripts/interface_ctc_analyzer.py", line 13, in
File "/home/lepoard/anaconda3/lib/python3.7/site-packages/mdciao-0.1-py3.7.egg/mdciao/command_line_tools.py", line 941, in interface
File "/home/lepoard/anaconda3/lib/python3.7/site-packages/mdciao-0.1-py3.7.egg/mdciao/contacts.py", line 158, in xtcs2ctcs
File "/home/lepoard/anaconda3/lib/python3.7/site-packages/joblib/parallel.py", line 934, in call
self.retrieve()
File "/home/lepoard/anaconda3/lib/python3.7/site-packages/joblib/parallel.py", line 833, in retrieve
self._output.extend(job.get(timeout=self.timeout))
File "/home/lepoard/anaconda3/lib/python3.7/site-packages/joblib/_parallel_backends.py", line 521, in wrap_future_result
return future.result(timeout=timeout)
File "/home/lepoard/anaconda3/lib/python3.7/concurrent/futures/_base.py", line 435, in result
return self.__get_result()
File "/home/lepoard/anaconda3/lib/python3.7/concurrent/futures/_base.py", line 384, in __get_result
raise self._exception
MemoryError: Unable to allocate array with shape (8001, 660502) and data type float32

ValueError while running mdc_neighborhoods.py

Hi. I have a protein-ligand complex and I'm trying to visualize the distances between ALA26 residue from the ligand and its neighboring residues (within 6 Angstroms) from the receptor.

mdc_neighborhoods.py prod.pdb prod.xtc -r ALA26 -co 6 -fr chains --fragment_names Receptor,Ligand --graphic_dpi 600 -nsf -tx txt -gx jpg -od . -d --n_jobs 8

But it throws this error. I'm not able to figure out what's causing the error. Please help.

Will compute contact frequencies for (1 items):
prod.xtc
 with a stride of 1 frames
Using method 'chains' these fragments were found
fragment      0 with    106 AAs     PRO1 (   0) -   TYR106 (105 ) (0) 
fragment      1 with     60 AAs     ASP1 ( 106) -    ARG60 (165 ) (1) 
/home/abhishek/.local/lib/python3.10/site-packages/mdciao/utils/residue_and_atom.py:263: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.
  residxs_out = _pandas_unique(residxs_out)

Will compute neighborhoods for the residues
ALA26
excluding 4 nearest neighbors

   residue      residx    fragment      resSeq
     ALA26         131           1          26

Pre-computing likely neighborhoods by reducing the neighbor-list
to those within 15 Angstrom in the first frame of reference geom
'prod.pdb':...done!
Traceback (most recent call last):
  File "/home/abhishek/.local/bin/mdc_neighborhoods.py", line 43, in <module>
    out_dict = residue_neighborhoods(a.residues, a.trajectories, **b)
  File "/home/abhishek/.local/lib/python3.10/site-packages/mdciao/cli/cli.py", line 937, in residue_neighborhoods
    _, ctc_idxs_small = _md.compute_contacts(refgeom, ctc_idxs[ctc_idxs_small])
  File "/home/abhishek/.local/lib/python3.10/site-packages/mdtraj/geometry/contact.py", line 213, in compute_contacts
    atom_distances = md.compute_distances(traj, atom_pairs, periodic=periodic)
  File "/home/abhishek/.local/lib/python3.10/site-packages/mdtraj/geometry/distance.py", line 149, in compute_distances
    return compute_distances_core(
  File "/home/abhishek/.local/lib/python3.10/site-packages/mdtraj/geometry/distance.py", line 76, in compute_distances_core
    pairs = ensure_type(atom_pairs, dtype=np.int32, ndim=2, name='atom_pairs', shape=(None, 2), warn_on_cast=False)
  File "/home/abhishek/.local/lib/python3.10/site-packages/mdtraj/utils/validation.py", line 122, in ensure_type
    raise ValueError(("%s must be ndim %s. "
ValueError: atom_pairs must be ndim 2. You supplied 1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.