You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ctakes.apache.org by se...@apache.org on 2015/02/19 19:06:17 UTC
svn commit: r1660963 [1/19] - in /ctakes/sandbox/timelanes: META-INF/ edu/
edu/mayo/ edu/mayo/bmi/ edu/mayo/bmi/annotation/
edu/mayo/bmi/annotation/knowtator/ org/ org/chboston/ org/chboston/cnlp/
org/chboston/cnlp/anafora/ org/chboston/cnlp/anafora/an...
Author: seanfinan
Date: Thu Feb 19 18:06:13 2015
New Revision: 1660963
URL: http://svn.apache.org/r1660963
Log:
initial checkin of timelanes tool
Added:
ctakes/sandbox/timelanes/META-INF/
ctakes/sandbox/timelanes/META-INF/MANIFEST.MF
ctakes/sandbox/timelanes/edu/
ctakes/sandbox/timelanes/edu/mayo/
ctakes/sandbox/timelanes/edu/mayo/bmi/
ctakes/sandbox/timelanes/edu/mayo/bmi/annotation/
ctakes/sandbox/timelanes/edu/mayo/bmi/annotation/knowtator/
ctakes/sandbox/timelanes/edu/mayo/bmi/annotation/knowtator/ExtractKnowtatorMetaData.java
ctakes/sandbox/timelanes/edu/mayo/bmi/annotation/knowtator/KnowtatorAnnotation.java
ctakes/sandbox/timelanes/edu/mayo/bmi/annotation/knowtator/KnowtatorProject.java
ctakes/sandbox/timelanes/edu/mayo/bmi/annotation/knowtator/LocalSpan.java
ctakes/sandbox/timelanes/org/
ctakes/sandbox/timelanes/org/chboston/
ctakes/sandbox/timelanes/org/chboston/cnlp/
ctakes/sandbox/timelanes/org/chboston/cnlp/anafora/
ctakes/sandbox/timelanes/org/chboston/cnlp/anafora/annotation/
ctakes/sandbox/timelanes/org/chboston/cnlp/anafora/annotation/parser/
ctakes/sandbox/timelanes/org/chboston/cnlp/anafora/annotation/parser/AnaforaEntitySegregator.java
ctakes/sandbox/timelanes/org/chboston/cnlp/anafora/annotation/parser/AnaforaRelationSegregator.java
ctakes/sandbox/timelanes/org/chboston/cnlp/anafora/annotation/parser/AnaforaTag.java
ctakes/sandbox/timelanes/org/chboston/cnlp/anafora/annotation/parser/AnaforaXmlParser.java
ctakes/sandbox/timelanes/org/chboston/cnlp/anafora/annotation/parser/AnaforaXmlWriter.java
ctakes/sandbox/timelanes/org/chboston/cnlp/gui/
ctakes/sandbox/timelanes/org/chboston/cnlp/gui/FileSelectionPanel.java
ctakes/sandbox/timelanes/org/chboston/cnlp/gui/FontResizeSlider.java
ctakes/sandbox/timelanes/org/chboston/cnlp/gui/GlobalHotkeyManager.java
ctakes/sandbox/timelanes/org/chboston/cnlp/gui/LinkedScrollBarHandler.java
ctakes/sandbox/timelanes/org/chboston/cnlp/gui/MultiSizeCheckBox.java
ctakes/sandbox/timelanes/org/chboston/cnlp/gui/MultiSizeLabel.java
ctakes/sandbox/timelanes/org/chboston/cnlp/gui/PartialEtchedBorder.java
ctakes/sandbox/timelanes/org/chboston/cnlp/gui/PositioningSplitPane.java
ctakes/sandbox/timelanes/org/chboston/cnlp/gui/RedirectTextArea.java
ctakes/sandbox/timelanes/org/chboston/cnlp/gui/SmoothTipList.java
ctakes/sandbox/timelanes/org/chboston/cnlp/gui/SmoothToolTip.java
ctakes/sandbox/timelanes/org/chboston/cnlp/gui/SmoothToolTipUI.java
ctakes/sandbox/timelanes/org/chboston/cnlp/gui/StandardRedirectUI.java
ctakes/sandbox/timelanes/org/chboston/cnlp/gui/VerticalCheckBoxUI.java
ctakes/sandbox/timelanes/org/chboston/cnlp/gui/VerticalLabelUI.java
ctakes/sandbox/timelanes/org/chboston/cnlp/gui/VerticalMimicLayout.java
ctakes/sandbox/timelanes/org/chboston/cnlp/gui/VerticalMimicPanel.java
ctakes/sandbox/timelanes/org/chboston/cnlp/gui/ZoomSlider.java
ctakes/sandbox/timelanes/org/chboston/cnlp/gui/error/
ctakes/sandbox/timelanes/org/chboston/cnlp/gui/error/ErrorEvent.java
ctakes/sandbox/timelanes/org/chboston/cnlp/gui/error/ErrorLabel.java
ctakes/sandbox/timelanes/org/chboston/cnlp/gui/error/ErrorListener.java
ctakes/sandbox/timelanes/org/chboston/cnlp/gui/error/ErrorProducer.java
ctakes/sandbox/timelanes/org/chboston/cnlp/iaa/
ctakes/sandbox/timelanes/org/chboston/cnlp/iaa/evaluator/
ctakes/sandbox/timelanes/org/chboston/cnlp/iaa/evaluator/temporal/
ctakes/sandbox/timelanes/org/chboston/cnlp/iaa/evaluator/temporal/DefaultTlinkTypeStore.java
ctakes/sandbox/timelanes/org/chboston/cnlp/iaa/evaluator/temporal/TLinkTypeArray3.java
ctakes/sandbox/timelanes/org/chboston/cnlp/iaa/evaluator/temporal/TimeRelationConstants.java
ctakes/sandbox/timelanes/org/chboston/cnlp/iaa/evaluator/temporal/TlinkType.java
ctakes/sandbox/timelanes/org/chboston/cnlp/iaa/evaluator/temporal/TlinkTypeStore.java
ctakes/sandbox/timelanes/org/chboston/cnlp/knowtator/
ctakes/sandbox/timelanes/org/chboston/cnlp/knowtator/annotation/
ctakes/sandbox/timelanes/org/chboston/cnlp/knowtator/annotation/parser/
ctakes/sandbox/timelanes/org/chboston/cnlp/knowtator/annotation/parser/AnnotationTypeSegregator.java
ctakes/sandbox/timelanes/org/chboston/cnlp/knowtator/annotation/parser/KnowtatorTextSourceParser.java
ctakes/sandbox/timelanes/org/chboston/cnlp/knowtator/annotation/parser/KnowtatorXmlParser.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/annotation/
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/annotation/Annotation.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/annotation/AnnotationInfoPrinter.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/annotation/AnnotationSpanComparator.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/annotation/AnnotationTextComparator.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/annotation/DefaultAnnotation.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/annotation/store/
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/annotation/store/AnnotationStore.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/annotation/store/AnnotationStoreFactory.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/annotation/store/DefaultAnnotationStore.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/annotation/store/ImmutableAnnotationStore.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/attribute/
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/attribute/Attribute.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/attribute/AttributeComparatorFactory.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/attribute/AttributeType.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/attribute/AttributeTypeFactory.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/attribute/AttributeUtil.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/attribute/AttributeValue.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/attribute/CreatorAttributeValue.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/attribute/CustomAttributeType.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/attribute/DefaultAttribute.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/attribute/DefinedAttributeType.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/attribute/EventAttributeValue.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/attribute/TlinkAttributeValue.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/attribute/UnknownAttributeType.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/classtype/
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/classtype/ClassType.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/classtype/ClassTypeFactory.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/classtype/CustomClassType.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/classtype/ModifierClassType.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/classtype/SemanticClassType.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/classtype/TemporalClassType.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/classtype/UnknownClassType.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/coreference/
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/coreference/CoreferenceChain.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/coreference/CoreferenceChainComparator.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/coreference/CoreferenceChainSpanComparator.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/coreference/CoreferenceCollection.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/coreference/CoreferenceFactory.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/coreference/DefaultEntityChain.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/coreference/EntityIdCollection.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/coreference/EntityIdStore.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/coreference/UniqueEntityIdStore.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/entity/
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/entity/DefaultEntity.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/entity/Entity.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/event/
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/event/DocTimeRel.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/gui/
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/gui/EntityCollectionTableModel.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/gui/EventDetailsTableModel.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/parser/
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/parser/AbstractAnnotationXmlParser.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/parser/AbstractAnnotationsParser.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/parser/AnnotationsParser.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/relation/
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/relation/DefaultRelation.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/relation/Relation.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/textspan/
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/textspan/AbstractTextSpan.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/textspan/DefaultDiscontiguousTextSpan.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/textspan/DefaultTextSpan.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/textspan/DiscontiguousTextSpan.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/textspan/EntityTextSpan.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/textspan/RelationTextSpan.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/textspan/TextSpan.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/annotation/textspan/TextSpanComparator.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/corpus/
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/corpus/AnnotatedNote.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/corpus/DefaultNote.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/corpus/Note.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/util/
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/util/ArrayListMap.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/util/CollectionMap.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/util/HashSetMap.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/util/SetMap.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/util/collection/
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/util/collection/ArrayListMap.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/util/collection/CollectionCreator.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/util/collection/CollectionCreatorFactory.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/util/collection/CollectionMap.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/util/collection/DefaultCollectionMap.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/util/collection/EnumSetMap.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/util/collection/HashSetMap.java
ctakes/sandbox/timelanes/org/chboston/cnlp/nlp/util/collection/ImmutableCollectionMap.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/chronic/
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/chronic/parser/
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/chronic/parser/AtParser.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/chronic/parser/StringDateParser.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/debug/
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/debug/InfoPanel.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/debug/TimeSpanTreeModel.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/eventSelection/
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/eventSelection/EventSelectionEvent.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/eventSelection/EventSelectionListener.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/TextHighlightPanel.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/calendar/
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/calendar/JTimelineCalendar.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/corpus/
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/corpus/NoteListRenderer.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/corpus/NoteNavigator.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/EventColor.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/EventHtmlFactory.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/EventStatus.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/SemanticShape.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/TlinkComparator.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/list/
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/list/EventListElement.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/list/EventListModel.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/list/EventListRenderer.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/list/EventListRenderer2.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/list/EventListRenderer3.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/text/
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/text/AsteriskPainter.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/text/DashUnderliner.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/text/DashWaveUnderliner.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/text/EventCellRenderer.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/text/FillPainter.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/text/HighlightPainter.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/text/TrianglePainter.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/text/TwoUnderliner.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/text/UnderlinePainter.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/event/text/WaveUnderliner.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/list/
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/list/AbstractAnnotationCellRenderer.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/list/AnnotationCellRenderer.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/main/
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/main/EventLegendPanel.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/main/EventLegendPanel2.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/main/MainTimelinePanel.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/main/MainTimelinePanel2.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/main/PatientInfoPanel.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/main/TimelineMain.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/misc/
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/misc/TimeVisOptionPane.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/QaClip.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/QaClipAnaforaWriter.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/QaClipLoader.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/QaClipSaver.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/QaToAnafora.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/QuestionClipper.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/SimpleTimelineWriter.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/TimelineAnaforaWriter1.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/TimelineAnaforaWriter5.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/gui/
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/gui/AbstractQaRadioPanel.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/gui/ClipperMainPanel.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/gui/OrderColorFactory.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/gui/OrderHighlightPanel.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/gui/QaClipComponent.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/gui/QaClipListList.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/gui/QaClipListModel.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/gui/QaConfidencePanel.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/gui/QaDifficultyPanel.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/gui/QaDocTimeRelPanel.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/gui/TableTextHighlightPanel.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/gui/TextClipsTable.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/qaclipper/gui/TextClipsTableModel.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/query/
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/query/QueryPanel.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/query/QueryUtil.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/relation/
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/relation/RelationCellRenderer.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/relation/RelationColor.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/relation/list/
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/relation/list/RelationListModel.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/relation/list/RelationListRenderer.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/relation/list/RelationListRenderer2.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/search/
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/search/TimelineSearchPanel.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/search/TimelineSearchUtil.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/spiral/
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/spiral/JSpiralBar.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/spiral/TimeZoomSlider.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timeline/
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timeline/AbstractTimelineComponent.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timeline/JTimelineComponent.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timeline/TimelineComponent.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timeline/stack/
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timeline/stack/SemanticTimelinesStack.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timeline/stack/TimelineStack.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timeline/stack/icon/
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timeline/stack/icon/edit-delete-6_12.png (with props)
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timeline/ui/
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timeline/ui/AbstractTimelineUI.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timeline/ui/BasicTimelineUI.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timeline/ui/TimelineUI.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/TimeSpanDrawUtil.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/TimeSpanSelectionEvent.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/TimeSpanSelectionListener.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/list/
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/list/TimeSpanCellRenderer.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/plus/
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/plus/AbstractTimeSpanRenderer.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/plus/DefaultRelationRenderer.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/plus/DefaultRelationRenderer2.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/plus/DefaultTimeSpanRenderer.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/plus/TimeSpanRenderer.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/selection/
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/selection/DefaultTimeSpanSelectionModel.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/selection/SelectionForwarder.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/selection/TimeSpanSelectionEvent.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/selection/TimeSpanSelectionListener.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/gui/timespan/selection/TimeSpanSelectionModel.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/oldUI/
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/oldUI/SpiralBarUIDelegate.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/oldUI/SpiralBarUtil.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/oldUI/SpiralledScrollPaneLayout.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/oldUI/TimelineDrawUtil.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timeline/
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timeline/CompoundTimeline.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timeline/DefaultTimeline.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timeline/EventTextTimeline.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timeline/MutableTimeline.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timeline/SectionedTimeline.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timeline/SemanticTypeTimeline.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timeline/Timeline.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timeline/TimelineFactory.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timespan/
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timespan/AbstractTimeSpan.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timespan/CalendarUtil.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timespan/DefaultTimeSpan.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timespan/EndPointer.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timespan/TimeSpan.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timespan/TimeSpanComparator.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timespan/plus/
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timespan/plus/PointedTimeSpan.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timespan/plus/PointedTimeline.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timespan/plus/TimeEndPoint.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timespan/plus/TimeSpanFactory.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timespan/plus/TimeSpanLengthComparator.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timespan/plus/TimeSpanPlus.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/timespan/plus/TimeSpanPlusComparator.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/todo.txt
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/util/
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/util/CuiPrinter.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/util/GoldSerializer.java
ctakes/sandbox/timelanes/org/chboston/cnlp/timeline/util/SimpleStoreWriter.java
ctakes/sandbox/timelanes/org/chboston/cnlp/xmi/
ctakes/sandbox/timelanes/org/chboston/cnlp/xmi/XmiEolFixer.java
ctakes/sandbox/timelanes/org/chboston/cnlp/xmi/parser/
ctakes/sandbox/timelanes/org/chboston/cnlp/xmi/parser/UimaXmiParser.java
ctakes/sandbox/timelanes/org/chboston/cnlp/xmi/parser/XmiEntitySegregator.java
Added: ctakes/sandbox/timelanes/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/ctakes/sandbox/timelanes/META-INF/MANIFEST.MF?rev=1660963&view=auto
==============================================================================
--- ctakes/sandbox/timelanes/META-INF/MANIFEST.MF (added)
+++ ctakes/sandbox/timelanes/META-INF/MANIFEST.MF Thu Feb 19 18:06:13 2015
@@ -0,0 +1,8 @@
+Manifest-Version: 1.0
+Class-Path: junit-4.10.jar jcip-annotations.jar junit-4.10.jar jcip-an
+ notations.jar junit-4.10.jar jcip-annotations.jar junit-4.10.jar jcip
+ -annotations.jar lax.jar jdom.jar protege.jar knowtator.jar junit-4.1
+ 0.jar looks-2.1.3.jar log4j-1.2.14.jar unicode_panel.jar jcip-annotat
+ ions.jar junit-4.10.jar jcip-annotations.jar jchronic-0.2.6.jar
+Main-Class: org.chboston.cnlp.timeline.gui.main.TimelineMain
+
Added: ctakes/sandbox/timelanes/edu/mayo/bmi/annotation/knowtator/ExtractKnowtatorMetaData.java
URL: http://svn.apache.org/viewvc/ctakes/sandbox/timelanes/edu/mayo/bmi/annotation/knowtator/ExtractKnowtatorMetaData.java?rev=1660963&view=auto
==============================================================================
--- ctakes/sandbox/timelanes/edu/mayo/bmi/annotation/knowtator/ExtractKnowtatorMetaData.java (added)
+++ ctakes/sandbox/timelanes/edu/mayo/bmi/annotation/knowtator/ExtractKnowtatorMetaData.java Thu Feb 19 18:06:13 2015
@@ -0,0 +1,434 @@
+package edu.mayo.bmi.annotation.knowtator;
+
+import edu.stanford.smi.protege.model.SimpleInstance;
+import edu.stanford.smi.protege.model.Slot;
+import edu.uchsc.ccp.knowtator.Span;
+import edu.uchsc.ccp.knowtator.textsource.TextSource;
+import edu.uchsc.ccp.knowtator.textsource.TextSourceAccessException;
+
+import java.io.IOException;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Assumption:
+ * 1) There is always only one root(mention)
+ * 2) Root(mention) may not be present in which case, this app creates a place holder.
+ * This happens because of the way neuroradiology knowtator model was designed.
+ *
+ * @author M039575
+ */
+
+public class ExtractKnowtatorMetaData extends KnowtatorProject {
+ public static String END_OF_RECORD = "\n";
+ public static String FIELD_DEL = "|";
+
+ public ExtractKnowtatorMetaData( String protegeProjectFile, String textSourceDirectory )
+ throws TextSourceAccessException, IOException {
+ super( protegeProjectFile, textSourceDirectory );
+ }
+
+ public void processDoc( TextSource ts ) {
+ KnowtatorAnnotation someParent;
+
+ initForNewDoc( ts.getName() );
+
+ docAnnotations = annotationUtil.getAnnotations( ts );
+ Iterator itr = docAnnotations.iterator();
+
+ //cycle through annotations for the text source
+ while ( itr.hasNext() ) {
+ SimpleInstance annotation = (SimpleInstance)itr.next();
+
+ if ( annotationUtil.isAnnotation( annotation ) ) {
+ //System.out.println("Annotator :"+ getAnnotator(annotation));
+ //TODO: need to ignore annotations with comment = "x"
+ //System.out.println("Comment :"+ getComment(annotation));
+
+ //process only those which have mentions and specific classes
+ if ( !hasMention( annotation ) || !isValidClass( getMention( annotation ) ) ) {
+ continue;
+ }
+ // skip docs
+ // processedRec = true;
+
+ SimpleInstance mention = getMention( annotation );
+
+ if ( isRootType( mention ) ) {
+ createRoot( mention );
+ someParent = ka;
+ } else {
+ /**
+ * Since this is not root, we may or may not have a root,
+ * so for now create a placeholder
+ */
+ createRootPlaceHolder();
+
+ /*handle current mention and send it to processRelatedMentions*/
+ someParent = processMention( mention, ka );
+
+ /*process the sentence and add it to the root no children*/
+ if ( isSentenceClass( mention ) ) {
+ continue;
+ }
+ }
+
+ processRelatedMentions( mention, someParent );
+ }
+ }
+
+ }
+
+
+ private boolean isStatusDescendantsPrintProcessed( KnowtatorAnnotation ann ) {
+ KnowtatorAnnotation statusAnn = ann.getAncestorByType( KnowtatorAnnotation.TYPE_STATUS );
+
+ //have not reached tumor or tumor's descendant
+ if ( statusAnn == null ) {
+ return false;
+ }
+
+ //check to see if all the descendants are processed
+ return statusAnn.getAllDescendantsPrintProcessed();
+ }
+
+ private boolean isTumorSubjectDescendantsPrintProcessed( KnowtatorAnnotation ann ) {
+ KnowtatorAnnotation tumorAnn = ann.getAncestorByType( KnowtatorAnnotation.TYPE_TUMOR );
+
+ //have not reached tumor or tumor's descendant
+ if ( tumorAnn == null ) {
+ return false;
+ }
+
+ //check to see if all the descendants are processed
+ return tumorAnn.getChildrenPrintProcessedByType( KnowtatorAnnotation.TYPE_SUBJECT );
+ }
+
+ private boolean hasChildrenOfType( KnowtatorAnnotation ann, int type ) {
+ return (ann.getDescendantsByType( type ).size() > 0);
+ }
+
+
+ //-- private helper methods -----
+
+ /**
+ * checks if the SimpleInstance is the root
+ */
+ private boolean isRootType( SimpleInstance mention ) {
+ String className = getMentionClsName( mention );
+ int knowType = KnowtatorAnnotation.getType( className );
+
+ if ( knowType == KnowtatorAnnotation.ROOT_CLASS_ID ) {
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * helper to create a root for the mention
+ */
+ private boolean createRoot( SimpleInstance mention ) {
+ if ( !isRootType( mention ) ) //safety
+ {
+ return false;
+ }
+
+ /**
+ * This is the first time we have come across this mention or
+ * there was a place holder
+ */
+ int knowType = KnowtatorAnnotation.getType( getMentionClsName( mention ) );
+
+ if ( ka == null ) {
+ /** parent is null for root element **/
+ ka = KnowtatorAnnotation.factory( getInstanceId( mention ), knowType, null );
+ //System.out.println("Creating root for ["+getMentionClsName(mention)+"]");
+ } else if ( ka.getId() == null ) {
+ // System.out.println("setting root details ["+getMentionClsName(mention)+"]");
+ ka.setId( getInstanceId( mention ) );
+ ka.setType( knowType );
+ ka.setText( mention.getBrowserText() );
+ addAllSpans( ka, mention );
+ }
+ /**
+ * we have already processed this or similar instance
+ */
+ else {
+ String newInstId = getInstanceId( mention );
+ if ( !newInstId.equals( ka.getId() ) ) {
+ System.err.println( "Error: Doc[" + docId + "] had to roots 1.[" + ka.getId() + "] 2.[" + newInstId + "]" );
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * When this will be used? - If the mention encountered first is not root
+ * this method will be used.
+ * <p/>
+ * Creates an empty Root instance so that children could be added.
+ */
+ private void createRootPlaceHolder() {
+ /*Root was possibly already created*/
+ if ( ka != null ) {
+ return;
+ }
+
+ /* that is if(ka == null) */
+ ka = KnowtatorAnnotation.factory( null, KnowtatorAnnotation.TYPE_UNKNOWN, null );
+ }
+
+ /**
+ * Parents or root you want to process
+ */
+ private boolean isValidClass( SimpleInstance mention ) {
+ if ( isConclusionClass( mention ) || isTumorClass( mention ) || isSentenceClass( mention ) ) {
+ return true;
+ }
+ return false;
+ }
+
+ private boolean isSentenceClass( SimpleInstance mention ) {
+ String className = getMentionClsName( mention );
+ if ( className.equals( KnowtatorAnnotation.CLASS_SENTENCE ) ) {
+ return true;
+ }
+ return false;
+ }
+
+ private boolean isConclusionClass( SimpleInstance mention ) {
+ String className = getMentionClsName( mention );
+ if ( className.equals( KnowtatorAnnotation.CLASS_CONCLUSION ) ) {
+ return true;
+ }
+ return false;
+ }
+
+ private boolean isTumorClass( SimpleInstance mention ) {
+ String className = getMentionClsName( mention );
+ if ( className.equals( KnowtatorAnnotation.CLASS_TUMOR ) ) {
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Process just the mention that is passed and add it to the parentAnnotation
+ *
+ * @param mention
+ * @param parentAnn
+ */
+ private KnowtatorAnnotation processMention( SimpleInstance mention, KnowtatorAnnotation parentAnn ) {
+ String mentionId = getInstanceId( mention );
+ KnowtatorAnnotation localAnn = KnowtatorAnnotation.findInstance( ka, mentionId );
+
+ if ( localAnn == null ) {
+ /** create instance for the current mentionChild **/
+ int knowType = KnowtatorAnnotation.getType( getMentionClsName( mention ) );
+ // System.out.println("Creating Instance for ["+getMentionClsName(mention)+"]["+mentionId+"]");
+ localAnn = KnowtatorAnnotation.factory( mentionId, knowType, parentAnn );
+ localAnn.setText( mention.getBrowserText() );
+ addAllSpans( localAnn, mention );
+ } else {
+ /**
+ * found an existing instance, so, assign parent safely
+ */
+ localAnn
+ .setParentObject( parentAnn ); //TODO:actually this should not be required, re-check and delete else part
+ }
+
+ /** add as child **/
+ if ( parentAnn != null ) {
+ parentAnn.addChild( localAnn );
+ }
+
+ return localAnn;
+ }
+
+ /**
+ * @param mention
+ * @param parentAnn
+ */
+ private void processRelatedMentions( SimpleInstance mention, KnowtatorAnnotation parentAnn ) {
+ List mentions = mentionUtil.getRelatedMentions( mention );
+
+ for ( int i = 0; i < mentions.size(); i++ ) {
+ KnowtatorAnnotation localAnn = null;
+ SimpleInstance mentionChild = (SimpleInstance)mentions.get( i );
+
+ /** create instance for the current mentionChild **/
+ // int knowType = KnowtatorAnnotation.getType(getMentionClsName(mentionChild));
+ // //System.out.println("Creating Instance for ["+getMentionClsName(mentionChild)+"]");
+ // localAnn = KnowtatorAnnotation.factory(getInstanceId(mentionChild), knowType, parentAnn);
+ // localAnn.setText(mentionChild.getBrowserText());
+ // addAllSpans(localAnn, mentionChild);
+ //
+ // if(parentAnn != null)
+ // parentAnn.addChild(localAnn);
+
+ localAnn = processMention( mentionChild, parentAnn );
+ /* Since arrived here from parent, set the relation*/
+ localAnn.setParentRelated();
+
+ /**
+ * process all available simple slots
+ */
+
+ // if (mentionUtil.isSimpleSlotMention(mentionChild))
+ if ( hasSimpleSlotMentions( mentionChild ) ) {
+ // processSimpleSlotChildren(mention, parentAnn);
+ processSimpleSlotChildren( mentionChild, localAnn );
+ }
+
+ /**
+ * recursively process children - specifically only complex slots (children)
+ */
+ if ( hasComplexSlotMentions( mentionChild ) ) {
+ processRelatedMentions( mentionChild, localAnn );
+ }
+ }
+ }
+
+
+ /**
+ * Process simple slot for a given mention of an annotation
+ *
+ * @param mention
+ */
+
+ private void processSimpleSlotChildren( SimpleInstance mention, KnowtatorAnnotation ann ) {
+ List slotMentions = mentionUtil.getSlotMentions( mention );
+ for ( int k = 0; k < slotMentions.size(); k++ ) {
+ SimpleInstance slotMention = (SimpleInstance)slotMentions.get( k );
+
+ List slotValues = mentionUtil.getSlotMentionValues( slotMention );
+ for ( int sv = 0; sv < slotValues.size(); sv++ ) {
+ if ( mentionUtil.isComplexSlotMention( slotMention ) ) {
+ continue;
+ }
+
+ Slot slot = mentionUtil.getSlotMentionSlot( slotMention );
+ String slotName = slot.getName();
+ // System.out.println("\t\tSlot:"+slotName);
+
+ Object slotValue = slotValues.get( sv );
+ // System.out.println("\t\tSlot:"+slotName +"Value:"+slotValue);
+
+ ann.addAttribute( slotName, String.valueOf( slotValue ) );
+ }
+ }
+ }
+
+ private boolean hasAnySlotMentions( SimpleInstance mention ) {
+ return (hasSimpleSlotMentions( mention ) || hasComplexSlotMentions( mention ));
+ }
+
+ /**
+ * helper method to check if a mention has simple slotMentions
+ */
+
+ private boolean hasSimpleSlotMentions( SimpleInstance mention ) {
+ List slotMentions = mentionUtil.getSlotMentions( mention );
+ for ( int k = 0; k < slotMentions.size(); k++ ) {
+ SimpleInstance slotMention = (SimpleInstance)slotMentions.get( k );
+ if ( mentionUtil.isSimpleSlotMention( slotMention ) ) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * helper method to check if a mention has complex slotMentions
+ */
+
+ private boolean hasComplexSlotMentions( SimpleInstance mention ) {
+ List slotMentions = mentionUtil.getSlotMentions( mention );
+ for ( int k = 0; k < slotMentions.size(); k++ ) {
+ SimpleInstance slotMention = (SimpleInstance)slotMentions.get( k );
+ if ( mentionUtil.isComplexSlotMention( slotMention ) ) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private boolean hasMention( SimpleInstance annotation ) {
+ return (annotationUtil.getMention( annotation ) != null);
+ }
+
+ private String flattenSpans( List spans ) {
+ StringBuffer flatSpans = new StringBuffer();
+
+ for ( int i = 0; i < spans.size(); i++ ) {
+ if ( i > 0 ) {
+ flatSpans.append( ";" );
+ }
+
+ Span s = (Span)spans.get( i );
+ // flatSpans.append(s.getStart());
+ // flatSpans.append(",");
+ // flatSpans.append(s.getEnd());
+ flatSpans.append( s.toString() );
+ }
+
+ return flatSpans.toString();
+ }
+
+ public void processDocs()
+ throws TextSourceAccessException {
+ // int ctr = 0;
+
+ while ( hasNextDoc() ) {
+ next();
+
+ //skip docs
+ // if(++ctr < 3) continue;
+
+ TextSource ts = getNextTextSource();
+
+ processDoc( ts );
+ //if (ctr ==3) break;
+ }
+ }
+
+ public static void main( String[] args ) {
+ String protegeProjectFile = args[ 0 ]; //"C:\\vinod\\neuroradiology\\knowtator\\Neuroradiology.pprj"
+ String annotatorName = args[ 1 ]; //"Neuroradiology2_Instance_0"
+
+ /**
+ * 3rd param or param with idx 2
+ * 1)"C:\\vinod\\neuroradiology\\text\\RadiologyReportsAsLines.txt"
+ * 2)"C:\\vinod\\neuroradiology\\text\\files\\"
+ */
+
+ String textSourceDirectory = args[ 2 ];
+
+ try {
+ ExtractKnowtatorMetaData utka = new ExtractKnowtatorMetaData( protegeProjectFile, textSourceDirectory );
+ utka.processDocs();
+ } catch ( TextSourceAccessException tse ) {
+ System.out.println( tse.getMessage() );
+ } catch ( IOException ioe ) {
+ System.out.println( ioe.getMessage() );
+ }
+
+ }
+
+ private void initForNewDoc( String docId ) {
+ this.docId = docId;
+ ka = null;
+
+ }
+
+ //-- private data members ----
+
+ private String docId = null;
+
+ protected KnowtatorAnnotation ka; //represents a conclusion either valid or null(when no conclusion)
+ protected Collection docAnnotations; //annotations related to the current textSource
+}
Added: ctakes/sandbox/timelanes/edu/mayo/bmi/annotation/knowtator/KnowtatorAnnotation.java
URL: http://svn.apache.org/viewvc/ctakes/sandbox/timelanes/edu/mayo/bmi/annotation/knowtator/KnowtatorAnnotation.java?rev=1660963&view=auto
==============================================================================
--- ctakes/sandbox/timelanes/edu/mayo/bmi/annotation/knowtator/KnowtatorAnnotation.java (added)
+++ ctakes/sandbox/timelanes/edu/mayo/bmi/annotation/knowtator/KnowtatorAnnotation.java Thu Feb 19 18:06:13 2015
@@ -0,0 +1,678 @@
+package edu.mayo.bmi.annotation.knowtator;
+
+
+import edu.stanford.smi.protege.model.SimpleInstance;
+
+import java.io.Serializable;
+import java.util.*;
+
+/**
+ * @author M039575
+ */
+public class KnowtatorAnnotation implements Serializable {
+ //TODO: need to merger these class names and knowtatorAnnotation constants
+ public static String CLASS_SENTENCE = "SentenceAnnotation";
+ public static String CLASS_TOKEN = "TokenAnnotation";
+
+ public static String CLASS_TUMOR = "Tumor";
+ public static String CLASS_CONCLUSION = "Conclusion";
+ public static String CLASS_SUBJECT = "Subject";
+ public static String CLASS_STATUS_OF_TUMOR = "Status of tumor";
+ public static String CLASS_MAGNITUDE_OF_CHANGE = "Magnitude of change";
+ public static String CLASS_SIGNIFICANCE_OF_CHANGE = "Significance of change";
+
+ public static String ROOT_CLASS_NAME = "Conclusion";
+ public static int ROOT_CLASS_ID = KnowtatorAnnotation.TYPE_CONCLUSION;
+
+ public static int TYPE_CONCLUSION = 1;
+ public static int TYPE_TUMOR = 2;
+ public static int TYPE_STATUS = 3;
+ public static int TYPE_SUBJECT = 4;
+ public static int TYPE_MAGNITUDE = 5;
+ public static int TYPE_SIGNIFICANCE = 6;
+ public static int TYPE_SENTENCE = 7;
+ public static int TYPE_TOKEN = 8;
+ public static int TYPE_UNKNOWN = -1;
+
+ public static String TYPE_NAME_CONCLUSION = "Conclusion";
+ public static String TYPE_NAME_TUMOR = "Tumor";
+ public static String TYPE_NAME_STATUS = "Status";
+ public static String TYPE_NAME_SUBJECT = "Subject";
+ public static String TYPE_NAME_MAGNITUDE = "Magnitude";
+ public static String TYPE_NAME_SIGNIFICANCE = "Significance";
+ public static String TYPE_NAME_SENTENCE = "SentenceAnnotation";
+ public static String TYPE_NAME_MAGNIFICANCE = "Magnificance";
+ public static String TYPE_NAME_UNKNOWN = "Unknown";
+
+ public static String ATTR_STATUS_OF_TUMOR = "status_of_tumor_";
+ public static String ATTR_MAGN_OF_CHANGE = "magnitude_of_change_";
+ public static String ATTR_SIGN_OF_CHANGE = "significance_of_change_";
+
+ /**
+ * default constructor
+ * Note: Use this constructor AND it is YOUR responsibility to set
+ * the required attributes OR just use factory method
+ */
+ public KnowtatorAnnotation() {
+ parent = null;
+ printProcessed = false;
+
+ children = new ArrayList();
+ attrMap = new HashMap();
+ spans = new ArrayList();
+ }
+
+ /**
+ * factory method
+ */
+
+ public static KnowtatorAnnotation factory( String id, int type, KnowtatorAnnotation parent ) {
+ KnowtatorAnnotation ka = new KnowtatorAnnotation();
+ ka.setId( id );
+ ka.setType( type );
+ ka.setParentObject( parent );
+
+ return ka;
+ }
+
+ private void setClsName( String s ) {
+ clsName = s;
+ }
+
+ public String getClsName() {
+ return clsName;
+ }
+
+
+ public static String DISORDER_CLS = "Disorder";
+ public static String PROC_CLS = "Procedure mention";
+ public static String SS_CLS = "Sign or Symptom";
+ public static String DRUG_CLS = "Drug mention";
+
+
+ //private String status = "";
+ //private String statusModelStatusValue = "";
+ private String cui;
+ private String possible;
+ private String famHx;
+ private String hx;
+ private String current;
+ private boolean negated;
+
+ public boolean getNegated() {
+ return negated;
+ }
+
+ public String getCui() {
+ return cui;
+ }
+
+ public String getPossible() {
+ return possible;
+ }
+
+ public String getFamilyHistoryOf() {
+ return famHx;
+ }
+
+ public String getHistoryOf() {
+ return hx;
+ }
+
+ public String getCurrent() {
+ return current;
+ }
+
+
+ public static KnowtatorAnnotation factory(
+ String id,
+ int type,
+ String clsName,
+ KnowtatorAnnotation parent,
+ String cui,
+ String possible,
+ String famHx,
+ String hx,
+ String current,
+ boolean negated
+ ) {
+ KnowtatorAnnotation ka = new KnowtatorAnnotation();
+ ka.setId( id );
+ ka.setType( type );
+ ka.setParentObject( parent );
+ ka.setClsName( clsName );
+ ka.cui = cui;
+ ka.possible = possible;
+ ka.famHx = famHx;
+ ka.hx = hx;
+ ka.current = current;
+ ka.negated = negated;
+ //ka.statusModelStatusValue = statusModelStatusValue;
+
+ return ka;
+ }
+
+ public static KnowtatorAnnotation factoryNullParent() {
+ KnowtatorAnnotation ka = new KnowtatorAnnotation();
+ ka.setId( null );
+ ka.setType( TYPE_CONCLUSION );
+ return ka;
+ }
+
+ public static int getType( String className ) {
+ if ( className == null ) {
+ return TYPE_UNKNOWN;
+ }
+ if ( className.equals( CLASS_CONCLUSION ) ) {
+ return TYPE_CONCLUSION;
+ } else if ( className.equals( CLASS_TUMOR ) ) {
+ return TYPE_TUMOR;
+ } else if ( className.equals( CLASS_SUBJECT ) ) {
+ return TYPE_SUBJECT;
+ } else if ( className.equals( CLASS_STATUS_OF_TUMOR ) ) {
+ return TYPE_STATUS;
+ } else if ( className.equals( CLASS_MAGNITUDE_OF_CHANGE ) ) {
+ return TYPE_MAGNITUDE;
+ } else if ( className.equals( CLASS_SIGNIFICANCE_OF_CHANGE ) ) {
+ return TYPE_SIGNIFICANCE;
+ } else if ( className.equals( CLASS_SENTENCE ) ) {
+ return TYPE_SENTENCE;
+ } else if ( className.equals( CLASS_TOKEN ) ) {
+ return TYPE_TOKEN;
+ }
+ return TYPE_UNKNOWN;
+ }
+
+ /**
+ * look for an instance with the given id among the startingPoint and all its descendants
+ *
+ * @param startingPoint
+ * @param id
+ * @return
+ */
+ public static KnowtatorAnnotation findInstance( KnowtatorAnnotation startingPoint, String id ) {
+ if ( startingPoint == null || !startingPoint.hasChildren() ) //parent not valid or no children
+ {
+ return null;
+ }
+
+ if ( startingPoint.getId() == id ) {
+ return startingPoint;
+ }
+
+ return startingPoint.findInstance( startingPoint.getChildren(), id );
+ }
+
+ /**
+ * helper method to find instance
+ *
+ * @return
+ */
+ private KnowtatorAnnotation findInstance( List children, String id ) {
+ for ( int i = 0; i < children.size(); i++ ) {
+ KnowtatorAnnotation ka = (KnowtatorAnnotation)children.get( i );
+ if ( ka.getId().equals( id ) ) {
+ return ka;
+ }
+
+ if ( ka.hasChildren() ) {
+ ka.findInstance( ka.getChildren(), id );
+ }
+ }
+ return null;
+ }
+
+ //-- primary public methods ----------
+ public int getNumberOfSpans() {
+ return spans.size();
+ }
+
+ public String getSpanString() {
+ StringBuffer sb = new StringBuffer();
+
+ sb.append( "\"" );
+ for ( int i = 0; i < spans.size(); i++ ) {
+ if ( i > 0 ) {
+ sb.append( "," );
+ }
+
+ LocalSpan s = (LocalSpan)spans.get( i );
+ sb.append( s.begin );
+ }
+ sb.append( "\"" );
+ sb.append( ExtractKnowtatorMetaData.FIELD_DEL );
+ sb.append( "\"" );
+ for ( int i = 0; i < spans.size(); i++ ) {
+ if ( i > 0 ) {
+ sb.append( "," );
+ }
+
+ LocalSpan s = (LocalSpan)spans.get( i );
+ sb.append( s.end );
+ }
+ sb.append( "\"" );
+
+ return sb.toString();
+ }
+
+ public String toString() {
+ String s = "cui=" + cui + " negated=" + negated +
+ " smallest begin=" + getBegin() + " largest end=" + getEnd();
+
+ s = s + " coveredText=" + text + " clsName=" + clsName;
+
+ s = s + " possible=" + possible +
+ " famHx=" + famHx +
+ " hx=" + hx +
+ " current=" + current;
+
+ return s;
+ }
+
+ public String getTypeName() {
+ if ( type == TYPE_CONCLUSION ) {
+ return TYPE_NAME_CONCLUSION;
+ }
+ if ( type == TYPE_TUMOR ) {
+ return TYPE_NAME_TUMOR;
+ }
+ if ( type == TYPE_STATUS ) {
+ return TYPE_NAME_STATUS;
+ }
+ if ( type == TYPE_SUBJECT ) {
+ return TYPE_NAME_SUBJECT;
+ }
+ if ( type == TYPE_MAGNITUDE ) {
+ return TYPE_NAME_MAGNITUDE;
+ }
+ if ( type == TYPE_SIGNIFICANCE ) {
+ return TYPE_NAME_SIGNIFICANCE;
+ }
+
+ return TYPE_NAME_UNKNOWN;
+ }
+
+ public boolean getPrintProcessed() {
+ return printProcessed;
+ }
+
+ public void setPrintProcessed() {
+ printProcessed = true;
+ }
+
+ public boolean getParentRelated() {
+ return parentRelated;
+ }
+
+ public void setParentRelated() {
+ parentRelated = true;
+ }
+
+ /**
+ * use this to store comples slots which represents an annotation
+ */
+ public void addChild( KnowtatorAnnotation ka ) {
+ boolean dontAdd = false;
+
+ for ( int i = 0; i < children.size(); i++ ) {
+ KnowtatorAnnotation ele = (KnowtatorAnnotation)children.get( i );
+ if ( ele.getId().equals( ka.getId() ) ) {
+ dontAdd = true;
+ break;
+ }
+ }
+
+ //dont add was not set so we did not find it.
+ if ( !dontAdd ) {
+ children.add( ka );
+ }
+ }
+
+ public boolean hasChildren() {
+ return (children.size() > 0);
+ }
+
+ // public void setParentIfNone(KnowtatorAnnotation ka)
+ // {
+ // if(ka != null && parentId == null)
+ // {
+ // parentId = ka.getId();
+ // parentType = ka.getType();
+ // }
+ // }
+
+ // public void setParent(KnowtatorAnnotation ka)
+ // {
+ // if(ka != null)
+ // {
+ // parentId = ka.getId();
+ // parentType = ka.getType();
+ // }
+ // else
+ // {
+ // parentId = null;
+ // parentType = TYPE_UNKNOWN;
+ // }
+ // }
+
+ public void setParentObject( KnowtatorAnnotation ka ) {
+ parent = ka;
+ }
+
+ public KnowtatorAnnotation getParentObject() {
+ return parent;
+ }
+
+ public String getParentId() {
+ return parent.getId();
+ }
+
+ public int getParentType() {
+ return parent.getType();
+ }
+
+ public List getDescendantsByType( int type ) {
+ List l = new ArrayList();
+ if ( children.size() == 0 ) {
+ return l;
+ }
+
+ getDescendantsByType( l, children, type );
+ return l;
+ }
+
+ public List getDescendantsByType( int type, int parentType ) {
+ List l = getDescendantsByType( type );
+ if ( children.size() == 0 ) {
+ return l;
+ }
+
+ for ( int i = l.size() - 1; i >= 0; i-- ) {
+ KnowtatorAnnotation k = (KnowtatorAnnotation)l.get( i );
+ if ( k.getParentId() == null || k.getParentType() != parentType ) {
+ l.remove( i );
+ }
+ }
+
+ return l;
+ }
+
+
+ /**
+ * @author m039575
+ * recursive method to gather children of specific type
+ */
+ private void getDescendantsByType( List l, List children, int typeParam ) {
+ for ( int i = 0; i < children.size(); i++ ) {
+ KnowtatorAnnotation knowAnn = (KnowtatorAnnotation)children.get( i );
+ if ( knowAnn.getType() == typeParam ) {
+ l.add( knowAnn );
+ }
+
+ if ( knowAnn.hasChildren() ) {
+ getDescendantsByType( l, knowAnn.getChildren(), typeParam );
+ }
+ }
+ }
+
+ /**
+ * travers the hierarchy to see if all the descendents are print processed
+ *
+ * @return
+ */
+ public boolean getAllDescendantsPrintProcessed() {
+ return getAllDescendantsPrintProcessed( this );
+ }
+
+ private boolean getAllDescendantsPrintProcessed( KnowtatorAnnotation ann ) {
+ if ( !ann.hasChildren() && ann.getPrintProcessed() ) {
+ return true;
+ }
+ /* irrespective of whether or not children present, if ann is not processed */
+ else if ( !ann.getPrintProcessed() ) {
+ return false;
+ } else if ( ann.hasChildren() ) {
+ List kids = ann.getChildren();
+ boolean kidsProcessed = true;
+
+ for ( int i = 0; i < kids.size(); i++ ) {
+ KnowtatorAnnotation knowAnn = (KnowtatorAnnotation)kids.get( i );
+ kidsProcessed = kidsProcessed && getAllDescendantsPrintProcessed( knowAnn );
+ if ( !kidsProcessed ) {
+ break;
+ }
+ }
+ return kidsProcessed;
+ } else //no children but ann is not processed
+ {
+ return false;
+ }
+ }
+
+ public boolean getChildrenPrintProcessedByType( int type ) {
+ for ( int i = 0; i < children.size(); i++ ) {
+ KnowtatorAnnotation ann = (KnowtatorAnnotation)children.get( i );
+ if ( ann.getType() == type && !ann.getPrintProcessed() ) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * traversers the ancestory ladder to find instance of type passed
+ *
+ * @param type
+ * @return
+ */
+ public KnowtatorAnnotation getAncestorByType( int type ) {
+ return getAncestorByType( this, type );
+ }
+
+ /**
+ * helper method to find an ancestor by type
+ *
+ * @param ann
+ * @param type
+ * @return
+ */
+ private KnowtatorAnnotation getAncestorByType( KnowtatorAnnotation ann, int type ) {
+ if ( ann != null && ann.getType() == type ) {
+ return ann;
+ } else if ( ann.getParentObject() != null ) {
+ return getAncestorByType( ann.getParentObject(), type );
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * use this to store simple slot which represents an attribute
+ *
+ * @param name
+ * @param value
+ */
+ public void addAttribute( String name, String value ) {
+ attrMap.put( name, value );
+ }
+
+ public boolean isEquivalent( KnowtatorAnnotation ka ) {
+ if ( getId() == ka.getId() ) {
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Helps check if the param is a child of this instance
+ *
+ * @param ka
+ * @return
+ */
+ public boolean isChild( KnowtatorAnnotation ka ) {
+ for ( int i = 0; i < children.size(); i++ ) {
+ KnowtatorAnnotation localKa = (KnowtatorAnnotation)children.get( i );
+
+ if ( ka.getId() == localKa.getId() ) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Helps check if the current annotation has one or more attributes
+ *
+ * @return
+ */
+ public boolean hasAttributes() {
+ return (attrMap.size() > 0);
+ }
+
+
+ /**
+ * Check if the passed annotation is a child, if true, return stored instance
+ *
+ * @param ka
+ * @return
+ */
+ public KnowtatorAnnotation getEquivalentChild( KnowtatorAnnotation ka ) {
+ for ( int i = 0; i < children.size(); i++ ) {
+ KnowtatorAnnotation localKa = (KnowtatorAnnotation)children.get( i );
+
+ if ( ka.getId() == localKa.getId() ) {
+ return localKa;
+ }
+ }
+
+ return null;
+ }
+
+ //-- public accessor and mutator -----
+ public String getId() {
+ return instanceId;
+ }
+
+ public Map getAttrMap() {
+ return attrMap;
+ }
+
+ public String getAttribute( String key ) {
+ if ( attrMap.containsKey( key ) ) {
+ return (String)attrMap.get( key );
+ }
+
+ return null;
+ }
+
+ public Iterator getAttributeKeyIterator() {
+ return attrMap.keySet().iterator();
+ }
+
+ public Set getAttributeKeySet() {
+ return attrMap.keySet();
+ }
+
+ public List getChildren() {
+ return children;
+ }
+
+ public int getType() {
+ return type;
+ }
+
+ public String getText() {
+ return text;
+ }
+
+ public String getCoveredText() {
+ return getText();
+ }
+
+
+ public void addSpans( SimpleInstance si ) {
+
+ int begin = 0;
+ int end = 0;
+ spans.add( new LocalSpan( begin, end ) );
+ }
+
+
+ public void addSpan( int begin, int end ) {
+ spans.add( new LocalSpan( begin, end ) );
+ }
+
+ public int getSpanBegin( int i ) {
+ if ( spans.size() > i ) {
+ return ((LocalSpan)spans.get( i )).begin;
+ }
+ return -1;
+ }
+
+ public int getSpanEnd( int i ) {
+ if ( spans.size() > i ) {
+ return ((LocalSpan)spans.get( i )).end;
+ }
+ return -1;
+ }
+
+ /**
+ * get smallest start offset of any of hte spans if this is a disjoint span
+ *
+ * @return
+ */
+ public int getBegin() {
+ int smallest = getSpanEnd( 0 ); // if no spans, -1
+ for ( int i = 0; i < spans.size(); i++ ) {
+ smallest = Math.min( smallest, getSpanBegin( i ) );
+ }
+ return smallest;
+ }
+
+ public int getEnd() {
+ int largest = getSpanEnd( 0 ); // if no spans, -1
+ for ( int i = 0; i < spans.size(); i++ ) {
+ largest = Math.max( largest, getSpanEnd( i ) );
+ }
+ return largest;
+ }
+
+ public void setText( String text ) {
+ this.text = text;
+ }
+
+ public void setType( int type ) {
+ this.type = type;
+ }
+
+ public void setId( String id ) {
+ this.instanceId = id;
+ }
+
+ //--- private methods ---------
+
+
+ public Collection getSpans() {
+ return spans;
+ }
+
+ //--- private data members -----
+ private String instanceId;
+ private int type;
+ private String text; //text marked as coveredText'
+ private List spans; //contains one or more spans
+ private Map attrMap; //simple attributes or slots
+ private List children; //complex slots or children
+ private String clsName; // helpful when no NE typeId, such as classes of slotfiller annotations
+ // private String parentId;
+ // private int parentType;
+ private KnowtatorAnnotation parent;
+ private boolean parentRelated;
+
+ private boolean printProcessed; //experimenting: to keep track of printing process
+
+ public String getDisplayableAttrs() {
+ return "id = " + getId() + " text = " + getText() + " type = " + getType() + " spans = " + getSpanString();
+ }
+}