Git Product home page Git Product logo

farseer-nmr's Introduction

FarSeer-NMR

image

Attention Attention Attention

We are currently rewriting Farseer-NMR towards version 2.

Version 1 is still functional and working, though not much supported apart from minor bugs. You can download the latest stable version, v1.3.5, on the releases tab, or visit the complete version 1 code and its documentation in version 1 branch) on GitHub.

Our original publication is available at JBioMolNMR), cite us if you use Farseer-NMR for your research, regardless of which version you use.

Please note that the master branch) currently hosts the development of version 2, which is UNFINISHED software; again, please, refer to version 1 for a stable and functional release.

Farseer-NMR runs purely on volunteer work without any official assigned funds. All help is welcomed, engage with us)!

Attention Attention Attention

image

A Python written, multi-platform and fully community-driven suite to analyse datasets of peaklist files extracted from multivariable series of Biomolecular Nuclear Magnetic Resonance (NMR) experiments.

With Farseer-NMR, you have:

  • Automatic analysis of large and multivariable NMR peaklist files datasets
  • Peaklist parsing and treatment
  • Identification of _missing_ and _unassigned_ residues
  • Automatic calculation of NMR parameters
  • Comprehensive organization of the output
  • Large suite of publication-ready plotting templates
  • Full traceability via Markdown) formatted log file.

Download, Install and Update

Download here the latest version of Farseer-NMR..

To install Farseer-NMR simply run the installation script:

python install_farseernmr.py

Read here some additional detail on how to setup your Farseer-NMR installation - it's very easy!

Documentation

The complete Farseer-NMR documentation is available on our Wiki page.

Participate in the Farseer-NMR development

To contribute to the development of Farseer-NMR visit our GitHub project). If you are a user, share your experience in the issues tab (reporting bugs, suggestions or discussions); if you are a developer read our CONTRIBUTING) guidelines.

Social Media

Citing

Thanks for using Farseer-NMR!

If you are using Farseer-NMR, or any of its components, to analyze your NMR peaklist data, please cite our original article:

Teixeira, J.M.C., Skinner, S.P., Arbesú, M., Breeze, A.L., Pons, M. J Biomol NMR (2018) 71:1, 1-9. DOI 10.1007/s10858-018-0182-5)

Publications citing Farseer-NMR

  • Miguel Arbesú, MiquelPons. Integrating disorder in globular multidomain proteins: Fuzzy sensors and the role of SH3 domains. Archives of Biochemistry and Biophysics 2019, 677, 108161 https://doi.org/10.1016/j.abb.2019.108161.
  • Luca Mureddu, Geerten W. Vuister. Simple high‐resolution NMR spectroscopy as a tool in molecular biology. The FEBS Journal 2019, 286, issue 11, p2035 https://doi.org/10.1111/febs.14771.
  • Teixeira, J.M.C.; Fuentes, H.; Bielskutė, S.; Gairi, M.; Żerko, S.; Koźmiński, W.; Pons, M. The Two Isoforms of Lyn Display Different Intramolecular Fuzzy Complexes with the SH3 Domain. Molecules 2018, 23, 2731. https://doi.org/10.3390/molecules23112731)
  • Arbesú, M.; Iruela, G.; Fuentes, H.; Teixeira, J.M.C.; Pons, M. Intramolecular fuzzy interactions involving intrinsically disordered domains. Front. Mol. Biosci. 2018, 5, 39. DOI 10.3389/fmolb.2018.00039)
  • Arbesú, M. et al. (2017) The Unique Domain Forms a Fuzzy Intramolecular Complex in Src Family Kinases. Structure 25, 630–640.e4. 10.1016/j.str.2017.02.011)
  • Marimon, O. et. al. (2016). An oxygen-sensitive toxin–antitoxin system. Nature Communications, 7, 13634. https://doi.org/10.1038/ncomms13634)
  • Bijlmakers, M.-J., et.al. (2015) A C2HC zinc finger is essential for the RING-E2 interaction of the ubiquitin ligase RNF125. Scientific Reports, 6, 29232. https://doi.org/10.1038/srep29232)

Farseer-NMR on Google Citations) .. end-citing .. start-acknowledge

Acknowledgments

The Farseer-NMR Project wants to acknowledge to following people for their contributions to the project:

  • Susana Barrera-Vilarmau (ORCID 0000-0003-4868-6593): beta-tester, data provider, plot suggestions.
  • Jamie Ferrar, Artistic Systems: for providing the UI branding.
  • João P.G.L.M. Rodrigues: for all the years of coding discussions and mentorship, and in particular for the help in setting the Farseer-NMR organization profile on GitHub.
  • Héctor Fuentes: intensive beta-tester, specially for the Windows version.
  • To all the users and participants of the Farseer-NMR workshops, thanks for your feedback, opinions, testing, interest and patience. Your contribution is definitively making Farseer-NMR growing bigger and robust! Special thanks to:

License

The entire Farseer-NMR project is distributed with no liability and is licensed under the GPL-3.0.

<a href="https://www.gnu.org/licenses/gpl-3.0.en.html"><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/9/93/GPLv3_Logo.svg/1200px-GPLv3_Logo.svg.png" width="75" height="37"></a>

farseer-nmr's People

Contributors

joaomcteixeira avatar miguelarbesu avatar skinnersp avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

farseer-nmr's Issues

Deprecrating FSUV file

Remove the usage of farseer_user_variables.py file.
farseermain.py should load directly from .json file and only one file containing all the variables should exist, so that adding a new variable or variable group (dictionary) can be done by editing a single file.

defaults on font type and weight

in the default_conf.json the font type and weight values are strings configure to such as 'Arial' or 'normal'.
I see that that does not relate to the configuration appear in the menus.

I remember before you had numbers in the default_config.json and I changed it to the string values some commits ago. My fault.

I can revert the font weight to numbers so that they fit the indexes in gui.utils.py line 54. But, where is the font list so I can set 'Arial' correctly.

Spectrum path field in Settings Tab

If user loads the peaklists by drag&drop to the left area in PeakList Selection tab,

What is the meaning of the Spectrum Path in the Settings tabs?
Should the parsed peaklists (and folder tree) be placed in the Calculation Output Folder? 👍

we have changed this couple of times and I got lost :-P

CSP Alpha submenu is broken

Traceback (most recent call last):
  File "FarSeer-NMR/main.py", line 657, in show_popup
    p = popup(self, variables=self.variables)
  File "/home/joao/Git/FarSeer-NMR/gui/popups/CSPExceptionsPopup.py", line 44, in __init__
    self.get_values()
  File "/home/joao/Git/FarSeer-NMR/gui/popups/CSPExceptionsPopup.py", line 64, in get_values
    if aal3tol1[key] in self.variables.keys():
AttributeError: 'str' object has no attribute 'keys'
Aborted (core dumped)

Peaklist left D&D area behaviour

When Drag&Drop hierarchic folders to the left Peaklist area:

  1. Dropping two folder at the same level - OK
  2. Dropping a parent folder with two folders inside - OKAY, same result as (1)
  3. Dropping two folders simmultaneously like in (2) - CRASHES
Traceback (most recent call last):
  File "/home/joao/Dropbox/labo-documents/Projects/Programming/FarSeer/git/gui/components/Sidebar.py", line 37, in dropEvent
    self.load_from_path(filePath)
  File "/home/joao/Dropbox/labo-documents/Projects/Programming/FarSeer/git/gui/components/Sidebar.py", line 45, in load_from_path
    self.load_peaklist(path)
  File "/home/joao/Dropbox/labo-documents/Projects/Programming/FarSeer/git/gui/components/Sidebar.py", line 70, in load_peaklist
    number = int(self.peakLists.keys()[-1].split('_')[1])+1
TypeError: 'odict_keys' object does not support indexing
Aborted (core dumped)
  1. Dropping full spectra/ hierarchy - CRASHES with same error as in (3).

I do not mean this is a bug. To discuss what should be the behaviour of the left area panel. If some options should be blocked, therefore a WET message should popup to inform the user and avoid core dump failures.

oudated usage of run_farseer in main.py

in main.py it reads

from current.farseermain import read_user_variables, run_farseer
        fsuv, cwd = read_user_variables(spectrum_path)
        run_farseer('{}/spectra'.format(cwd), fsuv)

run_farseer() from farseermain.py now takes only one argument, fsuv, as returned from read_user_variables() that takes only the path argument

Broken menus

Most likely this is due to the changes in the variable files. Some menus are broken:

  • PRE Settings
  • Dpre Settings
  • CS Scatter
  • CS Scatter Flower

when we are together you have too teach me some more about how are the variables configured so I can help you out on this :-)

VERSION CONFLICT farseer_user_variables.py

I have deleted the file in examples/artificial_dataset_generator.

The updated farseer_user_variables files should only be that in current.

I guess the versions we are using are not compatible. Specially when generating default_config.json. How do you generate that file? So that I can update it according to the latest farseer_user_variable.py

Defaults for axis analysis flag don't work

In default_config.json, changing the flag:

"applyFASTA": true
or
"expand_lost_yy": true,

actually activates by default the corresponding flags in the GUI.

Doing the same for do_cond1-3 does not activate the corresponding flag. Mismatch in variable names?

Settings Saved when Run Farseer aren't saved

Saving settings by Save Setting button works correctly.

user_config.json saved when hitting Run Analysis button do not store the actual user settings.
I had deactivated the FASTA flag and still it remained true when hit the Run started.

},
    "fasta_settings": {
        "FASTAstart": 1,
        "applyFASTA": true

GUI Crashes when selecting Spectrum Path on Settings Tab that contains other files than .csv

Selecting a folder that contains all the peaklists inside BUT also contains other files like a blank new file or a .fasta file or anything is not a .csv file crashed the GUI with the following.

Invalid file: /home/fbssps/joao/debugging_farseer/GUI_1D/spec-load/4000.csv
Traceback (most recent call last):
  File "../../FarSeer-NMR/main.py", line 477, in set_spectrum_path
    self.set_spectrum_path_text(path)
  File "../../FarSeer-NMR/main.py", line 469, in set_spectrum_path_text
    self.parent().parent().parent().load_peak_lists(path)
  File "../../FarSeer-NMR/main.py", line 111, in load_peak_lists
    self.interface.sideBar.load_from_path(path)
  File "/home/fbssps/joao/FarSeer-NMR/gui/components/Sidebar.py", line 55, in load_from_path
    name, path = self.load_peaklist(path)
TypeError: 'NoneType' object is not iterable
Aborted (core dumped)

Suggestion/Correction:
Spectrum Path browser should parse only .csv files to the left side bar in PeakList Tab.

Updated variables in dicts PRE and Bar

I have rearranged variable names in defaul_config.json regarding PRE representation in the plots. Variable names were misleading and were placed in the wrong dictionaries.
These should be updated on the GUI.
May be I can deal with it tomorrow with your help :-)
See changes in the following commit.

running main.py crashes when script not in working directory

I tried to run the main.py from another directory and it crashed.

How should he handle this? Correct it? Is there a way to simulate running from script folder with a shortcut/link file?

Traceback (most recent call last):
  File "/home/joao/Dropbox/labo-documents/Projects/Programming/FarSeer/git/main.py", line 800, in <module>
    gui_settings, stylesheet = gui_utils.deliver_settings(screen_resolution)
  File "/home/joao/Dropbox/labo-documents/Projects/Programming/FarSeer/git/gui/gui_utils.py", line 65, in deliver_settings
    stylesheet = open('gui/stylesheet_1k.qss').read()
FileNotFoundError: [Errno 2] No such file or directory: 'gui/stylesheet_1k.qss'
15:11 1D] 

Loading config.json should rebuild everything

Starting from a blank folder, and Loading a config.json file from a previous run, should populated spectra/ folder and all parameters and perfectly reproduce the run.
Original peaklists should be in original absolute file path, that's should be up to the user.

Create CHECK FASTA in GUI

If FASTA Flag is Checked and not fasta files are selected GUI should warns the user.

This is already implemented in the main farseer code, so, anyway, the run won't crash.

Deliver with miniconda

If possible,
Farseer-NMR should be delivered with its own miniconda distribution so that user does not have to install anaconda or python libraries in the system.

Running Farseer directly without setting any spectra

Directly Run without pre configuring the spectra

Traceback (most recent call last):
  File "../../FarSeer-NMR/main.py", line 579, in run_farseer_calculation
    self.parent().parent().parent().run_farseer_calculation()
  File "../../FarSeer-NMR/main.py", line 131, in run_farseer_calculation
    run_msg = create_directory_structure(output_path, self.variables, peakLists)
  File "/home/fbssps/joao/FarSeer-NMR/current/setup_farseer_calculation.py", line 17, in create_directory_structure
    if variables["fasta_files"][y_key]:
KeyError: '0'
Aborted (core dumped)
[fbssps@fbscpcu234 GUI_1D]$ 

Can we block the user from running in case spectra have not loaded as you did if the spectra/ already existed?

Repopulate a peaklist tree after loaded config

Having loaded a config file the user should be able to repopulate the experimental tree without loosing the other configuration settings.

Same if the user loads a configuration without information on the peaklists, he/she should be able to populate the peaklist tree maintaining the configuration.

Drag&Drop folder to left are in Peaklist Selection does not work

Drag and dropping a folder to the left area in the Peaklist Selection tab prints to the terminal

Invalid file: /home/joao/Desktop/git_trials/farseer_dev_desktop/templates_dev/debugging_farseer/1D_GUI_spectra/spectra/dia/L1/0500.csv
Invalid file: /home/joao/Desktop/git_trials/farseer_dev_desktop/templates_dev/debugging_farseer/1D_GUI_spectra/spectra/dia/L1/0125.csv
Invalid file: /home/joao/Desktop/git_trials/farseer_dev_desktop/templates_dev/debugging_farseer/1D_GUI_spectra/spectra/dia/L1/0000.csv
Invalid file: /home/joao/Desktop/git_trials/farseer_dev_desktop/templates_dev/debugging_farseer/1D_GUI_spectra/spectra/dia/L1/0250.csv

GUI Crashes on loading config after only drawing tree

Started GUI
created a tree
saved config
restarted gui
load config.

<gui.components.Sidebar.SideBar object at 0x7fe8b67a3708>
Traceback (most recent call last):
  File "../../FarSeer-NMR/main.py", line 489, in load_config
    self.load_variables()
  File "../../FarSeer-NMR/main.py", line 603, in load_variables
    sself.output_path.field.setText(general["output_path"])
NameError: name 'sself' is not defined
Aborted (core dumped)
[fbssps@fbscpcu234 GUI_1D]$ 

Set number scrolling option to step 0.1 for floating options

for example, all Y axis scales in Restraint Calculation menu or Bar Plot - Bar Alpha.

Additional, all colour alpha should be topped to 1.00, wich are:
Bar Plot - Bar Alpha
Bar Plot - Stdv Threeshold Alpha
Titration Plot Settings - Y Grid Alpha
Residue Evolution Plot - Shade transparency

Implement the usage of .fasta files

The GUI should load a .fasta file for each Y data point.

In the final spectra/ folder (the one used for in terminal runs) the .fasta files are placed in the last folder, together with the peaklists .csv files. And there should be one for each folder. .fastas do not need to be named the same along Y folders, but they should along Z.

Miguel Arbesú name

there is a typo error in the main gui at the bottlon left.
where it reads Arbescu should read Arbesú.

Duplicate key checking in conditions

At present there is no check to make sure that all exp conditions along an axis are unique. If there are not an error would be raised in drawing the tree

If spectra/ folder exists in Run Calculation folder a warning should be raised.

Farseer calculations depend on spectra/ folder which requires a very curated structure. Performing a run from the GUI adds the new defined peaklists to the spectra/ folder without removing existent files. This should stay like that but an issue should rise warning the user that a spectra/ folder already exists and this is not compatible with FarseerNMR.

Configure PRE Checkboxes

PRE Analysis should not be active unless Height or Volume are active.

PRE plots should not be active unless PRE Analysis is.

Alpha by residue menu

two issues in one:

  1. When clicking Alpha by residue window crashes. I guess is a question on how the dictionary is written in the default_config.* files. You are more familar with the .json format, could you check this?

  2. Can the default values that appear for each residue for every residue be filled with the value in variable csp_res4alpha ? I think this won't affect the calculation is a question to show the user that is going to be used.

env.yml not a valid yaml

Tried to create conda env from the env.yml but anaconda complains.

Could you check in a spec file created from conda list --explicit > spec-file.txt?

Detect if FASTA last residue is prior to the peaklist last residue

Issue description

If a .fasta file that should start at residue 30 is configured with 1 with 'FASTA start' variable, the last residues of the peaklist will be probably truncated by 30 residues because on FarseerCube.seq_expand() peaklist index is reindexed based on the fasta

Solution

Farseer-NMR should identify that the last residue of the fasta is prior to the last residue of the protein and output and error/warning message. Message should be listed in WET list.

Summarizing ideas 2017.09.02

Apart from the issues already posted, there are two main development major issues to deal with, and that we should do it together:

  1. the previous issue we discussed on how to handle loading peaklist,
  2. how to handle repeating a calculation; peaklists path maybe should be stored in config.json so that loading that would load eveything else.
  3. Define well how to handle the user variables. I think now the GUI routines are handicapped by the way I programmed the terminal version and that makes no sense. I can easily adapt the terminal version to better fit the GUI requirements, maybe deprecrating the farseer_user_variables.py. I absolutely want users to use only the GUI, me included.

Another thing, as you well said, we need to share our code architecture so that both can work on every part of the code :-) That would be perfect for next week also. At the end, we are going to have a beer together tomorrow :-D

After that, I guess we are really close make a full run.

Regarding the publication,
I didn't have time to start drafting. But I did almost complete the Documentation Wiki. I still need to change one thing that I could do even today and than we need to add documentation on the GUI. I think we should finished everything before starting the publication writting. I really care about your feedback on the documentation. This is the first time I write docs. I tried to make them as short as possible and as explanatory as possible. I guess the words there can alse serve a publication means; specially the pictures.

What is your feeling?

GUI crashes when loading saved json after tree.

I created the tree drag&dropping from left panel after Spectrum Path.
Save the config file. Close and re-open the program.
Load config file.
crashed

Traceback (most recent call last):
  File "../../FarSeer-NMR/main.py", line 487, in load_config
    self.variables = self.parent().parent().parent().load_config()
  File "../../FarSeer-NMR/main.py", line 104, in load_config
    self.interface.peakListArea.updateTree(variables)
  File "/home/fbssps/joao/FarSeer-NMR/gui/components/PeakListArea.py", line 136, in updateTree
    self.sideBar().removeItem(pl_name)
  File "/home/fbssps/joao/FarSeer-NMR/gui/components/Sidebar.py", line 100, in removeItem
    sip.delete(result[0])
IndexError: list index out of range
Aborted (core dumped)
[fbssps@fbscpcu234 GUI_1D]$ 

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.