Git Product home page Git Product logo

phenotefx's Introduction

CI Documentation

PhenoteFX

PhenoteFX is a Java app that is designed to help create and maintain Human Phenotype Ontology annotation files.

Download

The latest version of PhenoteFX can be downloaded from the releases page.

Documentation and tutorial

Please consult the documentation for a tutorial on how to install and use PhenoteFX.

phenotefx's People

Contributors

dependabot[bot] avatar ielis avatar kingmanzhang avatar pnrobinson avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Forkers

kingmanzhang

phenotefx's Issues

Data model for temporal ordering of phenotypes wrt curation

cc: @mbrush

A refactoring of the annotation file format together with a refactoring of the Java code we are using to work with the annotations. This will allow us to exploit onset data better for rare disease
We now have a concrete plan for the data model for common disease that will allow us to start curating and developing algorithms to exploit temporal data. I would say this is a focus for the second half of the R24. Related to monarch-initiative/dipper#454

Window to help with obsoleted terms

Consider adding a feature that will help to revise annotations if we obsolete a term in the HPO.

  • Show a list of diseases with the obsoleted term
  • Allow the user to "update" the annotations (Note -- this should almost always be done with manual inspection, and so we should allow something like a todo list. It should be done with manual inspection, because if we are obsoleting a term, then probably there was something suboptimal about the annotations as well!)
  • The tool should create a list of all diseases that have an annotation to the obsolete term.
  • The curator should then be able to open up the files for each of the diseases, reannotate them as usual, and then close the issue.

Frequency update bug encountered while updating OMIM:610443

I am trying to add additional frequency info to OMIM:610443 for this ticket (obophenotype/human-phenotype-ontology#4163). There is already many of these terms listed from other sources but I am updating with a new PMID with frequency info.
Tried adding microcephaly (which is already annotated to the disease, but I am adding a second time for frequency info).
1st issue: I added the term manually using the standard gui feature. (I.e., I filled out Microcephaly, PCS, Frequency=5%, Source=PMID:18628315 . Everything added to the entry EXCEPT frequency.
Once the new entry had been added, I tried to update the frequency manually. I have done it twice and no frequency info has been added. Upon reviewing the list, it appears that '5%' frequency had been added to 'Short stature' and not 'microcephaly'. @kingmanzhang @pnrobinson

Decide on license

The licence in the pom states its Apache2 whereas the LICENCE file states BSD 3-clause.

Show error dialog if hp.obo file not found

Currently this just goes to the console

 } catch (IOException e) {
            logger.error(String.format("Unable to parse HPO OBO file at %s", hpoPath.getAbsolutePath() ));
            logger.error(e,e);
                throw new PhenoteFxException(String.format("Unable to parse HPO OBO file at %s [%s]", hpoPath.getAbsolutePath(),e.toString()));
        }
        if (on

saved status

It would be nice to show a small symbol whether there are unsaved changes.

Negation column context menu

Add right-clickable context -menu
After right click, three choices appear

  1. is present (changes the content of the NOT column to an empty string, which is the default, and means that the indicated feature is present in the disease)
  2. NOT (changes the content of the NOT column to "NOT", which means that the indicated feature is ABSENT in the disease)
  3. Cancel -- close the menu with no action.

If the user clicks is-present or NOT but this value was already there, then no action needs to be taken.

This is the "NOT" column @FXML
private TableColumn<PhenoRow, String> negationCol;

in PhenotePresenter

Chronic

Terms such as Chronic (Clinical course except for Onset) need to go into the Modifier column -- add some better way of doing this.

new feature request

Leigh and I talked about some layout changes that can help curation:

  1. get rid of Disease ID and Disease Name columns. Instead, show it as the title of the table. Also create a dropdown menu to select diseases for curation.

  2. The HPO tree is very useful, it should always be there. So shrink the table to the left and add the HPO tree on the right.

  3. Add last_edited by.

@pnrobinson comments?

Update disease label

In some cases, our annotations use out of date labels for the disease name.
For instance, OMIM:209950 was previously called Atypical mycobacteriosis, familial.
Now it is called IMMUNODEFICIENCY 27A
https://omim.org/entry/209950
It would be nice to be able to automatically update all of the disease names to some new label, for instance using a command from the Edit menu.

PMID entry missing from Fetch text mining v. 0.4.4

@ielis

HI, I was testing the v,0.4.4 and used the text mining tool. The fetching of terms worked(!), but there is an issue. There is no where to add the PMID ID on the text mining tool. I am aware of the "Source" data entry spot on the main page, but previously, I had only used that when adding a single HPO term.

So, it allows me to use the 'Fetch text mining' tool. It allows me to add text, analyze, and add selected terms. If you hit 'Confirm & close", you get the error, "Warning-attempting to update annotation without valid PMID". However, at that point, there is no way to add a PMID and it deletes all of your work. This is not ideal.

Could you either restrict opening the fetch text mining tool until after you have added a 'source' or have another way to add a source after the fact? Much data will be lost otherwise.

Minor issue in Fetch text mining tool v. 0.4.4: cancel button not working

If you add text to the 'Text-mining analysis' window and hit 'Analyze!', the cancel button doesn't do anything. The only way to get out that is to hit 'Add selected terms'. If you don't want to add anything, you just don't select anything.

Either remove the 'cancel' button or make it actually cancel.

Integrating new HPO terms conveniently

It would be nice to have HPOWorkbench start the Makefile in the HPO src/ontology subdirectory. This would mean that it would be easy to create a new term in Protege, update the hp.obo file, and add the annotation to an annotation record without having to run the makefile from the command line etc. This feature would only work for people with write rights to the hp.obo, but would save a lot of time.

Frequency row bug still there...

I can reproduce it in entry OMIM:146255
I click on a certain frequency entry to update it but I get a different entry in the dialog.

delete row functionality

Unfortunately, this got broken by the new functions, which make it impossible to mark the entire row (I think). Probably we need to replace this by marking the first field in a row, or by putting some symbol in from of the row.

paths to external resources

The paths to external resources are harrd-coded in the downloaders. These are better kept in an external resource file. Also, what’s up with all the empty configuration.properties files in the various packages?

issues with opening files in PhenoteFX

Hi @pnrobinson-
I downloaded the latest release of PhenoteFX, but it won't open any of the files.
These are my settings.
image
Could you help troubleshoot?

When I try to open from MIM ID or just open a file, nothing loads.

Thanks!

update description bug

This is the same bug that affected the frequency column--probably the same fix will work.

exception thrown while adding new annotations

Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
at org.monarchinitiative.phenotefx.gui.editrow.EditRowFactory.showPublicationEditDialog(EditRowFactory.java:45)
at org.monarchinitiative.phenotefx.gui.main.PhenotePresenter.lambda$null$40(PhenotePresenter.java:1016)

populateTable

The current method for inputting the old phenote files is way too reliant on a function in PhenotePresenter called populateTable. Transfer this functionality to a separate class that can be tested and that will provide sensible error messages if an input file has the wrong format.

Use last source

This field should be cleared if the user closes an entry and opens a new entry.

bug

exception when cancel choosing folder for annotation data

lambdas

In PhenotePresenter class the setOnEditCommit() methods requiring an EventHandler the EventHandler code can be replaced with a lambda. E.g.

phenotypeIDcol.setOnEditCommit(
new EventHandler<TableColumn.CellEditEvent<PhenoRow, String>>() {
@OverRide
public void handle(TableColumn.CellEditEvent<PhenoRow, String> event) {
String hpoid = event.getNewValue();
if (HPOValidator.isValid(hpoid)) {
((PhenoRow) event.getTableView().getItems().get(event.getTablePosition().getRow())).setPhenotypeID(event.getNewValue());
}
event.getTableView().refresh();
}
}
);

Can be replaced with:

phenotypeIDcol.setOnEditCommit(
event -> {
String hpoid = event.getNewValue();
if (HPOValidator.isValid(hpoid)) {
((PhenoRow) event.getTableView().getItems().get(event.getTablePosition().getRow())).setPhenotypeID(event.getNewValue());
}
event.getTableView().refresh();
}
);

Q/C prior to saving file

Do some Q/C and do not save unless Q/C tests pass--I notice that PhenoteFX let me save an annotation without a createdBy entry for instance.

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.