From: gmungoc Date: Fri, 25 Jan 2019 15:59:56 +0000 (+0000) Subject: Merge branch 'Jalview-BH/JAL-3026-JAL-3063-JAXB' into Jalview-JS/demo X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=fbf1b226fa9db949c3854e72b9c82734cdc24ea0;hp=8ff6ad0a4030c6e8d816cb086aababfce4eaeb17;p=jalview.git Merge branch 'Jalview-BH/JAL-3026-JAL-3063-JAXB' into Jalview-JS/demo --- diff --git a/_j2sclasslist.txt b/_j2sclasslist.txt index 27ab6a6..5d60006 100644 --- a/_j2sclasslist.txt +++ b/_j2sclasslist.txt @@ -1,13 +1,20 @@ jalview/analysis/AAFrequency.js jalview/analysis/AlignSeq.js +jalview/analysis/AlignmentAnnotationUtils.js +jalview/analysis/AlignmentUtils.js jalview/analysis/AnnotationSorter.js jalview/analysis/Conservation.js jalview/analysis/CrossRef.js +jalview/analysis/NJTree.js +jalview/analysis/SeqsetUtils.js +jalview/analysis/TreeBuilder.js +jalview/analysis/TreeModel.js jalview/analysis/scoremodels/DistanceScoreModel.js jalview/analysis/scoremodels/FeatureDistanceModel.js jalview/analysis/scoremodels/PIDModel.js jalview/analysis/scoremodels/ScoreMatrix.js jalview/analysis/scoremodels/ScoreModels.js +jalview/analysis/scoremodels/SimilarityParams.js jalview/analysis/scoremodels/SimilarityScoreModel.js jalview/api/AlignCalcManagerI.js jalview/api/AlignCalcWorkerI.js @@ -25,6 +32,7 @@ jalview/api/StructureSelectionManagerProvider.js jalview/api/ViewStyleI.js jalview/api/analysis/PairwiseScoreModelI.js jalview/api/analysis/ScoreModelI.js +jalview/api/analysis/SimilarityParamsI.js jalview/bin/ArgsParser.js jalview/bin/BuildDetails.js jalview/bin/Cache.js @@ -36,8 +44,13 @@ jalview/datamodel/ASequenceI.js jalview/datamodel/Alignment.js jalview/datamodel/AlignmentAnnotation.js jalview/datamodel/AlignmentI.js +jalview/datamodel/AlignmentView.js jalview/datamodel/AnnotatedCollectionI.js jalview/datamodel/Annotation.js +jalview/datamodel/BinaryNode.js +jalview/datamodel/CigarArray.js +jalview/datamodel/CigarBase.js +jalview/datamodel/CigarSimple.js jalview/datamodel/ColumnSelection.js jalview/datamodel/ContiguousI.js jalview/datamodel/DBRefSource.js @@ -51,15 +64,18 @@ jalview/datamodel/ProfileI.js jalview/datamodel/Profiles.js jalview/datamodel/ProfilesI.js jalview/datamodel/Range.js +jalview/datamodel/RangeIterator.js jalview/datamodel/ResidueCount.js jalview/datamodel/SearchResults.js jalview/datamodel/SearchResultsI.js +jalview/datamodel/SeqCigar.js jalview/datamodel/Sequence.js jalview/datamodel/SequenceCollectionI.js jalview/datamodel/SequenceCursor.js jalview/datamodel/SequenceFeature.js jalview/datamodel/SequenceGroup.js jalview/datamodel/SequenceI.js +jalview/datamodel/SequenceNode.js jalview/datamodel/features/FeatureLocationI.js jalview/datamodel/features/FeatureMatcher.js jalview/datamodel/features/FeatureMatcherI.js @@ -74,7 +90,9 @@ jalview/gui/AlignViewport.js jalview/gui/AlignmentPanel.js jalview/gui/AnnotationLabels.js jalview/gui/AnnotationPanel.js +jalview/gui/CalculationChooser.js jalview/gui/ColourMenuHelper.js +jalview/gui/ComboBoxTooltipRenderer.js jalview/gui/Desktop.js jalview/gui/FeatureRenderer.js jalview/gui/IProgressIndicator.js @@ -84,11 +102,15 @@ jalview/gui/IdwidthAdjuster.js jalview/gui/JalviewChangeSupport.js jalview/gui/JvSwingUtils.js jalview/gui/PaintRefresher.js +jalview/gui/PopupMenu.js +jalview/gui/Preferences.js jalview/gui/ProgressBar.js jalview/gui/ScalePanel.js jalview/gui/SeqCanvas.js jalview/gui/SeqPanel.js jalview/gui/SequenceRenderer.js +jalview/gui/TreeCanvas.js +jalview/gui/TreePanel.js jalview/gui/ViewSelectionMenu.js jalview/io/AlignFile.js jalview/io/AlignmentFileReaderI.js @@ -114,6 +136,10 @@ jalview/javascript/log4j/spi/OptionHandler.js jalview/jbgui/GAlignFrame.js jalview/jbgui/GAlignmentPanel.js jalview/jbgui/GDesktop.js +jalview/jbgui/GPreferences.js +jalview/jbgui/GTreePanel.js +jalview/math/Matrix.js +jalview/math/MatrixI.js jalview/project/Jalview2XML.js jalview/renderer/AnnotationRenderer.js jalview/renderer/AwtRenderPanelI.js @@ -152,7 +178,16 @@ jalview/structure/SequenceListener.js jalview/structure/StructureImportSettings.js jalview/structure/StructureSelectionManager.js jalview/structure/VamsasSource.js +jalview/urls/CustomUrlProvider.js jalview/urls/IdOrgSettings.js +jalview/urls/IdentifiersUrlProvider.js +jalview/urls/UrlLinkDisplay.js +jalview/urls/UrlLinkTableModel.js +jalview/urls/UrlProvider.js +jalview/urls/UrlProviderImpl.js +jalview/urls/api/UrlProviderFactoryI.js +jalview/urls/api/UrlProviderI.js +jalview/urls/desktop/DesktopUrlProviderFactory.js jalview/util/ColorUtils.js jalview/util/Comparison.js jalview/util/DBRefUtils.js @@ -160,6 +195,8 @@ jalview/util/Format.js jalview/util/MessageManager.js jalview/util/Platform.js jalview/util/QuickSort.js +jalview/util/StringUtils.js +jalview/util/UrlLink.js jalview/util/jarInputStreamProvider.js jalview/util/matcher/Condition.js jalview/util/matcher/Matcher.js @@ -191,19 +228,67 @@ jalview/xml/binding/jalview/SequenceSet.js jalview/xml/binding/jalview/SequenceType.js jalview/xml/binding/jalview/VAMSAS.js jalview/xml/binding/jalview/WebServiceParameterSet.js +java/applet/AppletContext.js +java/applet/AppletStub.js +java/applet/JSApplet.js +java/awt/AWTEvent.js +java/awt/AWTEventMulticaster.js java/awt/AWTKeyStroke.js +java/awt/ActiveEvent.js +java/awt/Adjustable.js java/awt/AlphaComposite.js +java/awt/BasicStroke.js +java/awt/BorderLayout.js +java/awt/Color.js +java/awt/Component.js +java/awt/ComponentOrientation.js java/awt/Composite.js +java/awt/Container.js java/awt/ContainerOrderFocusTraversalPolicy.js +java/awt/Cursor.js java/awt/DefaultFocusTraversalPolicy.js java/awt/DefaultKeyboardFocusManager.js +java/awt/Dialog.js +java/awt/Dimension.js +java/awt/EventDispatchThread.js +java/awt/EventFilter.js +java/awt/EventQueue.js +java/awt/EventQueueItem.js +java/awt/FlowLayout.js java/awt/FocusTraversalPolicy.js +java/awt/Font.js +java/awt/FontMetrics.js +java/awt/GraphicsCallback.js +java/awt/GraphicsConfiguration.js +java/awt/GraphicsDevice.js +java/awt/GraphicsEnvironment.js java/awt/GridLayout.js java/awt/Image.js +java/awt/Insets.js +java/awt/ItemSelectable.js +java/awt/JSComponent.js +java/awt/JSDialog.js +java/awt/JSFrame.js +java/awt/JSPanel.js java/awt/KeyEventDispatcher.js java/awt/KeyEventPostProcessor.js java/awt/KeyboardFocusManager.js +java/awt/LayoutManager.js +java/awt/LayoutManager2.js +java/awt/LightweightDispatcher.js +java/awt/Paint.js +java/awt/Point.js +java/awt/Queue.js +java/awt/Rectangle.js +java/awt/RenderingHints.js +java/awt/SentEvent.js +java/awt/Shape.js +java/awt/Stroke.js +java/awt/Toolkit.js +java/awt/Transparency.js java/awt/VKCollection.js +java/awt/Window.js +java/awt/color/ColorSpace.js java/awt/datatransfer/ClipboardOwner.js java/awt/datatransfer/FlavorMap.js java/awt/datatransfer/FlavorTable.js @@ -212,28 +297,73 @@ java/awt/dnd/DropTarget.js java/awt/dnd/DropTargetContext.js java/awt/dnd/DropTargetListener.js java/awt/dnd/peer/DropTargetPeer.js +java/awt/event/AWTEventListener.js +java/awt/event/ActionEvent.js +java/awt/event/ActionListener.js +java/awt/event/AdjustmentEvent.js +java/awt/event/AdjustmentListener.js java/awt/event/ComponentAdapter.js +java/awt/event/ComponentEvent.js +java/awt/event/ComponentListener.js java/awt/event/ContainerEvent.js +java/awt/event/ContainerListener.js java/awt/event/FocusAdapter.js +java/awt/event/FocusEvent.js +java/awt/event/FocusListener.js +java/awt/event/HierarchyBoundsListener.js +java/awt/event/HierarchyListener.js +java/awt/event/InputEvent.js +java/awt/event/InputMethodListener.js +java/awt/event/InvocationEvent.js +java/awt/event/ItemEvent.js +java/awt/event/ItemListener.js java/awt/event/KeyAdapter.js +java/awt/event/KeyEvent.js +java/awt/event/KeyListener.js java/awt/event/MouseAdapter.js +java/awt/event/MouseEvent.js +java/awt/event/MouseListener.js java/awt/event/MouseMotionAdapter.js +java/awt/event/MouseMotionListener.js +java/awt/event/MouseWheelListener.js +java/awt/event/TextListener.js +java/awt/event/WindowAdapter.js +java/awt/event/WindowEvent.js +java/awt/event/WindowFocusListener.js +java/awt/event/WindowListener.js +java/awt/event/WindowStateListener.js +java/awt/font/FontRenderContext.js +java/awt/geom/AffineTransform.js +java/awt/geom/Dimension2D.js java/awt/geom/Path2D.js java/awt/geom/PathIterator.js +java/awt/geom/Point2D.js java/awt/geom/RectIterator.js +java/awt/geom/Rectangle2D.js +java/awt/geom/RectangularShape.js java/awt/image/BufferedImage.js java/awt/image/ColorModel.js java/awt/image/DataBuffer.js java/awt/image/DataBufferInt.js java/awt/image/DirectColorModel.js +java/awt/image/ImageObserver.js java/awt/image/PackedColorModel.js java/awt/image/Raster.js java/awt/image/RenderedImage.js java/awt/image/SampleModel.js java/awt/image/SinglePixelPackedSampleModel.js java/awt/image/WritableRaster.js +java/awt/peer/ComponentPeer.js +java/awt/peer/ContainerPeer.js +java/awt/peer/FramePeer.js java/awt/peer/KeyboardFocusManagerPeer.js +java/awt/peer/LightweightPeer.js +java/awt/peer/WindowPeer.js java/awt/print/Printable.js +java/beans/ChangeListenerMap.js +java/beans/PropertyChangeEvent.js +java/beans/PropertyChangeListener.js +java/beans/PropertyChangeSupport.js java/io/BufferedInputStream.js java/io/BufferedReader.js java/io/ByteArrayInputStream.js @@ -241,17 +371,24 @@ java/io/Closeable.js java/io/File.js java/io/FileDescriptor.js java/io/FileInputStream.js +java/io/FileReader.js java/io/FileSystem.js java/io/FilterInputStream.js java/io/InputStream.js java/io/InputStreamReader.js java/io/PushbackInputStream.js java/io/Reader.js +java/lang/AbstractStringBuilder.js java/lang/AutoCloseable.js +java/lang/Class.js +java/lang/Enum.js java/lang/Iterable.js java/lang/Readable.js java/lang/Runtime.js +java/lang/StringBuffer.js java/lang/StringBuilder.js +java/lang/Thread.js +java/lang/ThreadGroup.js java/lang/reflect/Constructor.js java/lang/reflect/Method.js java/math/BigDecimal.js @@ -260,9 +397,22 @@ java/math/MathContext.js java/math/RoundingMode.js java/net/HttpURLConnection.js java/net/MalformedURLException.js +java/net/URL.js java/net/URLConnection.js java/net/URLDecoder.js java/net/URLStreamHandler.js +java/net/URLStreamHandlerFactory.js +java/nio/Bits.js +java/nio/Buffer.js +java/nio/ByteBuffer.js +java/nio/ByteOrder.js +java/nio/CharBuffer.js +java/nio/HeapByteBuffer.js +java/nio/HeapCharBuffer.js +java/nio/charset/Charset.js +java/nio/charset/CharsetDecoder.js +java/nio/charset/CoderResult.js +java/nio/charset/CodingErrorAction.js java/security/AccessControlContext.js java/security/AccessController.js java/security/PrivilegedAction.js @@ -279,22 +429,38 @@ java/text/Format.js java/text/MessageFormat.js java/text/NumberFormat.js java/text/SimpleDateFormat.js +java/util/AbstractCollection.js +java/util/AbstractList.js +java/util/AbstractMap.js java/util/AbstractQueue.js java/util/AbstractSequentialList.js +java/util/AbstractSet.js java/util/ArrayDeque.js +java/util/ArrayList.js +java/util/Arrays.js java/util/BitSet.js java/util/Calendar.js java/util/Collection.js +java/util/Collections.js java/util/Comparator.js java/util/Deque.js +java/util/Dictionary.js +java/util/DualPivotQuicksort.js java/util/Enumeration.js +java/util/EventListener.js +java/util/EventObject.js java/util/GregorianCalendar.js +java/util/HashMap.js +java/util/HashSet.js +java/util/Hashtable.js +java/util/IdentityHashMap.js java/util/Iterator.js java/util/LinkedHashMap.js java/util/LinkedList.js java/util/List.js java/util/ListIterator.js java/util/ListResourceBundle.js +java/util/Locale.js java/util/Map.js java/util/NavigableMap.js java/util/NavigableSet.js @@ -311,6 +477,8 @@ java/util/StringTokenizer.js java/util/TimSort.js java/util/TimeZone.js java/util/TreeMap.js +java/util/TreeSet.js +java/util/Vector.js java/util/concurrent/AbstractExecutorService.js java/util/concurrent/BlockingQueue.js java/util/concurrent/ConcurrentHashMap.js @@ -337,6 +505,8 @@ java/util/jar/JarEntry.js java/util/jar/JarInputStream.js java/util/logging/Level.js java/util/logging/Logger.js +java/util/regex/MatchResult.js +java/util/regex/Matcher.js java/util/regex/Pattern.js java/util/zip/CRC32.js java/util/zip/Inflater.js @@ -345,38 +515,127 @@ java/util/zip/ZipConstants.js java/util/zip/ZipEntry.js java/util/zip/ZipInputStream.js javajs/api/GenericLineReader.js +javajs/api/JSFunction.js javajs/api/JSONEncodable.js +javajs/util/AU.js +javajs/util/AjaxURLConnection.js javajs/util/AjaxURLStreamHandler.js +javajs/util/AjaxURLStreamHandlerFactory.js javajs/util/Encoding.js +javajs/util/JSThread.js +javajs/util/Lst.js +javajs/util/PT.js javajs/util/Rdr.js javajs/util/SB.js javax/swing/AbstractAction.js +javax/swing/AbstractButton.js +javax/swing/AbstractListModel.js javax/swing/Action.js +javax/swing/ActionMap.js +javax/swing/AncestorNotifier.js +javax/swing/ArrayTable.js +javax/swing/BorderFactory.js +javax/swing/BoundedRangeModel.js +javax/swing/BoxLayout.js +javax/swing/ButtonGroup.js +javax/swing/ButtonModel.js +javax/swing/ClientPropertyKey.js +javax/swing/ComboBoxModel.js javax/swing/ComponentInputMap.js +javax/swing/DefaultBoundedRangeModel.js +javax/swing/DefaultButtonModel.js +javax/swing/DefaultComboBoxModel.js javax/swing/DefaultDesktopManager.js +javax/swing/DefaultListCellRenderer.js +javax/swing/DefaultSingleSelectionModel.js javax/swing/DesktopManager.js javax/swing/InputMap.js +javax/swing/JApplet.js +javax/swing/JButton.js +javax/swing/JCheckBox.js +javax/swing/JCheckBoxMenuItem.js +javax/swing/JComboBox.js +javax/swing/JComponent.js javax/swing/JDesktopPane.js javax/swing/JDialog.js +javax/swing/JFrame.js javax/swing/JInternalFrame.js +javax/swing/JLabel.js +javax/swing/JLayeredPane.js +javax/swing/JMenu.js +javax/swing/JMenuBar.js +javax/swing/JMenuItem.js +javax/swing/JPanel.js +javax/swing/JPopupMenu.js javax/swing/JProgressBar.js +javax/swing/JRadioButton.js +javax/swing/JRadioButtonMenuItem.js +javax/swing/JRootPane.js +javax/swing/JScrollBar.js javax/swing/JScrollPane.js +javax/swing/JSeparator.js javax/swing/JTabbedPane.js +javax/swing/JToggleButton.js javax/swing/JToolTip.js javax/swing/JViewport.js +javax/swing/JWindow.js javax/swing/KeyStroke.js +javax/swing/KeyboardManager.js +javax/swing/ListCellRenderer.js +javax/swing/ListModel.js +javax/swing/LookAndFeel.js +javax/swing/MenuElement.js +javax/swing/MenuSelectionManager.js +javax/swing/MutableComboBoxModel.js +javax/swing/Popup.js +javax/swing/PopupFactory.js +javax/swing/RepaintManager.js +javax/swing/RootPaneContainer.js javax/swing/ScrollPaneConstants.js javax/swing/ScrollPaneLayout.js javax/swing/Scrollable.js +javax/swing/SingleSelectionModel.js +javax/swing/SizeRequirements.js +javax/swing/SwingConstants.js +javax/swing/SwingPaintEventDispatcher.js +javax/swing/SwingUtilities.js javax/swing/Timer.js javax/swing/ToolTipManager.js +javax/swing/UIDefaults.js +javax/swing/UIManager.js javax/swing/ViewportLayout.js +javax/swing/WindowConstants.js +javax/swing/border/AbstractBorder.js +javax/swing/border/BevelBorder.js +javax/swing/border/Border.js +javax/swing/border/EmptyBorder.js +javax/swing/border/EtchedBorder.js javax/swing/border/LineBorder.js +javax/swing/border/TitledBorder.js +javax/swing/event/AncestorEvent.js +javax/swing/event/AncestorListener.js +javax/swing/event/ChangeEvent.js +javax/swing/event/ChangeListener.js +javax/swing/event/EventListenerList.js javax/swing/event/InternalFrameAdapter.js javax/swing/event/InternalFrameEvent.js javax/swing/event/InternalFrameListener.js +javax/swing/event/ListDataListener.js +javax/swing/event/MenuKeyListener.js javax/swing/event/MenuListener.js +javax/swing/event/TableModelListener.js +javax/swing/plaf/ActionMapUIResource.js +javax/swing/plaf/BorderUIResource.js +javax/swing/plaf/ColorUIResource.js javax/swing/plaf/ComponentInputMapUIResource.js +javax/swing/plaf/ComponentUI.js +javax/swing/plaf/DimensionUIResource.js +javax/swing/plaf/FontUIResource.js +javax/swing/plaf/InsetsUIResource.js +javax/swing/plaf/UIResource.js +javax/swing/plaf/basic/BasicBorders.js +javax/swing/table/AbstractTableModel.js +javax/swing/table/TableModel.js javax/xml/bind/ContextFinder.js javax/xml/bind/GetPropertyAction.js javax/xml/bind/JAXBContext.js @@ -395,6 +654,9 @@ javax/xml/namespace/QName.js javax/xml/stream/XMLInputFactory.js javax/xml/stream/XMLStreamReader.js org/apache/xerces/jaxp/datatype/XMLGregorianCalendarImpl.js +org/json/simple/parser/JSONParser.js +org/json/simple/parser/ParseException.js +org/json/simple/parser/Yylex.js org/xml/sax/AttributeList.js org/xml/sax/Attributes.js org/xml/sax/ContentHandler.js @@ -403,9 +665,21 @@ org/xml/sax/Parser.js org/xml/sax/XMLReader.js org/xml/sax/ext/Attributes2.js sun/awt/AWTAccessor.js +sun/awt/AWTAutoShutdown.js +sun/awt/AppContext.js sun/awt/CausedFocusEvent.js +sun/awt/ComponentFactory.js +sun/awt/EventQueueItem.js sun/awt/KeyboardFocusManagerPeerProvider.js +sun/awt/MostRecentKeyValue.js +sun/awt/MostRecentThreadAppContext.js +sun/awt/PaintEventDispatcher.js +sun/awt/PostEventQueue.js +sun/awt/RequestFocusController.js sun/awt/SunGraphicsCallback.js +sun/awt/SunToolkit.js +sun/awt/WindowClosingListener.js +sun/awt/WindowClosingSupport.js sun/awt/image/DataStealer.js sun/awt/image/IntegerComponentRaster.js sun/awt/image/IntegerInterleavedRaster.js @@ -413,7 +687,15 @@ sun/awt/image/SunWritableRaster.js sun/font/FontDesignMetrics.js sun/java2d/StateTrackable.js sun/java2d/StateTrackableDelegate.js +sun/nio/cs/ArrayDecoder.js +sun/nio/cs/HistoricallyNamedCharset.js +sun/nio/cs/StandardCharsets.js +sun/nio/cs/ThreadLocalCoders.js +sun/nio/cs/UTF_8.js +sun/nio/cs/Unicode.js sun/swing/DefaultLookup.js +sun/swing/SwingLazyValue.js +sun/swing/UIAction.js sun/text/resources/FormatData.js sun/text/resources/FormatData_en.js sun/util/calendar/AbstractCalendar.js @@ -424,8 +706,30 @@ sun/util/calendar/CalendarUtils.js sun/util/calendar/Gregorian.js sun/util/calendar/ZoneInfo.js sun/util/resources/LocaleData.js -swingjs/JSFocusManager.js +swingjs/JSApp.js +swingjs/JSApplet.js +swingjs/JSAppletThread.js +swingjs/JSAppletViewer.js +swingjs/JSCharSet.js +swingjs/JSFocusPeer.js +swingjs/JSFontMetrics.js +swingjs/JSFrameViewer.js +swingjs/JSGraphics2D.js +swingjs/JSGraphicsConfiguration.js +swingjs/JSGraphicsEnvironment.js +swingjs/JSKeyEvent.js +swingjs/JSMenuManager.js +swingjs/JSMouse.js +swingjs/JSScreenDevice.js +swingjs/JSThreadGroup.js +swingjs/JSToolkit.js +swingjs/JSUtil.js swingjs/a2s/Dialog.js +swingjs/api/Interface.js +swingjs/api/js/DOMNode.js +swingjs/api/js/HTML5CanvasContext2D.js +swingjs/api/js/JSInterface.js +swingjs/jquery/JQueryUI.js swingjs/jzlib/Adler32.js swingjs/jzlib/CRC32.js swingjs/jzlib/Checksum.js @@ -436,16 +740,45 @@ swingjs/jzlib/Inflate.js swingjs/jzlib/Inflater.js swingjs/jzlib/InflaterInputStream.js swingjs/jzlib/ZStream.js +swingjs/plaf/ButtonListener.js +swingjs/plaf/DefaultMenuLayout.js +swingjs/plaf/HTML5LookAndFeel.js swingjs/plaf/JSAppletUI.js +swingjs/plaf/JSButtonUI.js +swingjs/plaf/JSCheckBoxMenuItemUI.js +swingjs/plaf/JSCheckBoxUI.js +swingjs/plaf/JSComboBoxUI.js +swingjs/plaf/JSComponentUI.js swingjs/plaf/JSDesktopIconUI.js swingjs/plaf/JSDesktopPaneUI.js +swingjs/plaf/JSEventHandler.js +swingjs/plaf/JSFrameUI.js swingjs/plaf/JSGraphicsUtils.js swingjs/plaf/JSInternalFrameUI.js +swingjs/plaf/JSLabelUI.js +swingjs/plaf/JSLayeredPaneUI.js +swingjs/plaf/JSLightweightUI.js +swingjs/plaf/JSMenuBarUI.js +swingjs/plaf/JSMenuItemUI.js +swingjs/plaf/JSMenuUI.js +swingjs/plaf/JSPanelUI.js +swingjs/plaf/JSPopupMenuSeparatorUI.js +swingjs/plaf/JSPopupMenuUI.js +swingjs/plaf/JSPopupUI.js swingjs/plaf/JSProgressBarUI.js +swingjs/plaf/JSRadioButtonMenuItemUI.js +swingjs/plaf/JSRadioButtonUI.js +swingjs/plaf/JSRootPaneUI.js +swingjs/plaf/JSScrollBarUI.js swingjs/plaf/JSScrollPaneUI.js +swingjs/plaf/JSSeparatorUI.js +swingjs/plaf/JSSliderUI.js swingjs/plaf/JSTabbedPaneUI.js swingjs/plaf/JSToolTipUI.js swingjs/plaf/JSViewportUI.js +swingjs/plaf/JSWindowUI.js +swingjs/plaf/LazyActionMap.js +swingjs/plaf/Resizer.js swingjs/xml/JSJAXBClass.js swingjs/xml/JSJAXBContext.js swingjs/xml/JSJAXBContextFactory.js @@ -455,4 +788,4 @@ swingjs/xml/JSSAXAttributes.js swingjs/xml/JSSAXParser.js swingjs/xml/JSXMLGregorianCalendarImpl.js swingjs/xml/JSXMLInputFactory.js -swingjs/xml/JSXMLStreamReader.js \ No newline at end of file +swingjs/xml/JSXMLStreamReader.js diff --git a/optimization/timing-java-bh.txt b/optimization/timing-java-bh.txt new file mode 100644 index 0000000..69da3ac --- /dev/null +++ b/optimization/timing-java-bh.txt @@ -0,0 +1,259 @@ +Java version: 1.8.0_191 +amd64 Windows 10 10.0 +Error reading author details: java.io.FileNotFoundException: C:\Users\hansonr\git\jalview1\classes (Access is denied) +Error reading build details: java.io.FileNotFoundException: C:\Users\hansonr\git\jalview1\classes (Access is denied) +Jalview Version: Test +INFO - Getting messages for lang: en_US +Platform: timer mark 0.0 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/lookup/id/ENSG00000157764?content-type=application/json +Platform: timer mark 0.618 0.618 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 0.619 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 0.619 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/info/ping?content-type=application/json +Platform: timer mark 0.749 0.13 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 0.749 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 0.749 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/info/rest?content-type=application/json +Platform: timer mark 0.881 0.132 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 0.881 0.0 EnsembleRestClient.getJSON2 ...done +EnsemblRestClient expected ENSEMBL REST version 7.0 but found 9.0, see https://github.com/Ensembl/ensembl-rest/wiki/Change-log +Platform: timer mark 0.885 0.004 EnsembleRestClient.getJSON0 https://rest.ensembl.org/info/data?content-type=application/json +Platform: timer mark 1.017 0.132 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 1.018 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 1.018 0.0 EnsemblSeqProx.fetchSeq +Platform: timer mark 1.018 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENSG00000157764?type=genomic&Accept=application/json&content-type=application/json&object_type=Gene +Platform: timer mark 1.298 0.28 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 2.225 0.927 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 2.258 0.033 EnsembleRestClient.getJSON0 https://rest.ensembl.org/overlap/id/ENSG00000157764?content-type=application/json&object_type=Gene&feature=gene&feature=transcript&feature=exon&feature=cds&feature=variation +Platform: timer mark 7.331 5.073 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 49.341 42.01 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 51.216 1.875 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSG00000157764?content-type=application/json&all_levels=1 +Platform: timer mark 52.088 0.872 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 52.552 0.464 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 52.581 0.029 EnsembleRestClient.getJSON0 https://rest.ensembl.org/lookup/id/ENSG00000157764?content-type=application/json&object_type=Gene +Platform: timer mark 52.716 0.135 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 52.716 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 52.769 0.053 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000646891?content-type=application/json&all_levels=1 +Platform: timer mark 53.223 0.454 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 53.344 0.121 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000646891 +Platform: timer mark 53.353 0.009 EnsembleRestClient.getJSON0 https://rest.ensembl.org/info/ping?content-type=application/json +Platform: timer mark 53.486 0.133 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 53.486 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 53.487 0.001 EnsemblSeqProx.fetchSeq +Platform: timer mark 53.487 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000646891?type=protein&Accept=application/json&content-type=application/json +Platform: timer mark 53.68 0.193 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 53.68 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 53.681 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSP00000493543?content-type=application/json&all_levels=1 +Platform: timer mark 53.893 0.212 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 54.004 0.111 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 54.152 0.148 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000496384?content-type=application/json&all_levels=1 +Platform: timer mark 54.317 0.165 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 54.318 0.001 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000496384 +Platform: timer mark 54.318 0.0 EnsemblSeqProx.fetchSeq +Platform: timer mark 54.318 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000496384?type=protein&Accept=application/json&content-type=application/json +Platform: timer mark 54.482 0.164 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 54.482 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 54.482 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSP00000419060?content-type=application/json&all_levels=1 +Platform: timer mark 54.627 0.145 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 54.628 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 54.646 0.018 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000469930?content-type=application/json&all_levels=1 +Platform: timer mark 54.821 0.175 EnsembleRestClient.getJSON1 parsing... +Adding protein product for ENST00000469930 +Platform: timer mark 54.821 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 54.821 0.0 EnsemblSeqProx.fetchSeq +Platform: timer mark 54.821 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000469930?type=protein&Accept=application/json&content-type=application/json +Platform: timer mark 54.965 0.144 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 54.965 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 54.965 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSP00000495858?content-type=application/json&all_levels=1 +Platform: timer mark 55.112 0.147 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 55.112 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 55.134 0.022 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000288602?content-type=application/json&all_levels=1 +Platform: timer mark 55.304 0.17 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 55.304 0.0 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000288602 +Platform: timer mark 55.304 0.0 EnsemblSeqProx.fetchSeq +Platform: timer mark 55.304 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000288602?type=protein&Accept=application/json&content-type=application/json +Platform: timer mark 55.455 0.151 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 55.456 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 55.456 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSP00000288602?content-type=application/json&all_levels=1 +Platform: timer mark 55.599 0.143 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 55.599 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 55.622 0.023 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000642272?content-type=application/json&all_levels=1 +Platform: timer mark 55.758 0.136 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 55.758 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 55.758 0.0 EnsemblSeqProx.fetchSeq +Platform: timer mark 55.758 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000642272?type=protein&Accept=application/json&content-type=application/json +Adding protein product for ENST00000642272 +Response code 400 +No protein product found for ENST00000642272 +Platform: timer mark 55.9 0.142 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 55.9 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 55.91 0.01 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000643790?content-type=application/json&all_levels=1 +Platform: timer mark 56.292 0.382 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 56.292 0.0 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000643790 +Platform: timer mark 56.292 0.0 EnsemblSeqProx.fetchSeq +Platform: timer mark 56.292 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000643790?type=protein&Accept=application/json&content-type=application/json +Response code 400 +Platform: timer mark 56.438 0.146 EnsembleRestClient.getJSON1 parsing... +No protein product found for ENST00000643790 +Platform: timer mark 56.438 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 56.447 0.009 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000646427?content-type=application/json&all_levels=1 +Platform: timer mark 56.816 0.369 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 56.816 0.0 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000646427 +Platform: timer mark 56.816 0.0 EnsemblSeqProx.fetchSeq +Platform: timer mark 56.816 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000646427?type=protein&Accept=application/json&content-type=application/json +Response code 400 +Platform: timer mark 56.956 0.14 EnsembleRestClient.getJSON1 parsing... +No protein product found for ENST00000646427 +Platform: timer mark 56.956 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 56.965 0.009 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000642808?content-type=application/json&all_levels=1 +Platform: timer mark 57.343 0.378 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 57.344 0.001 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000642808 +Platform: timer mark 57.344 0.0 EnsemblSeqProx.fetchSeq +Platform: timer mark 57.344 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000642808?type=protein&Accept=application/json&content-type=application/json +Response code 400 +Platform: timer mark 57.483 0.139 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 57.483 0.0 EnsembleRestClient.getJSON2 ...done +No protein product found for ENST00000642808 +Platform: timer mark 57.491 0.008 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000643356?content-type=application/json&all_levels=1 +Platform: timer mark 57.873 0.382 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 57.873 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 57.873 0.0 EnsemblSeqProx.fetchSeq +Adding protein product for ENST00000643356 +Platform: timer mark 57.873 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000643356?type=protein&Accept=application/json&content-type=application/json +Response code 400 +Platform: timer mark 58.018 0.145 EnsembleRestClient.getJSON1 parsing... No protein product found for ENST00000643356 + +Platform: timer mark 58.018 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 58.034 0.016 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000497784?content-type=application/json&all_levels=1 +Platform: timer mark 58.413 0.379 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 58.413 0.0 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000497784 +Platform: timer mark 58.413 0.0 EnsemblSeqProx.fetchSeq +Platform: timer mark 58.414 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000497784?type=protein&Accept=application/json&content-type=application/json +Platform: timer mark 58.599 0.185 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 58.599 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 58.6 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSP00000420119?content-type=application/json&all_levels=1 +Platform: timer mark 58.745 0.145 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 58.745 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 58.759 0.014 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000646334?content-type=application/json&all_levels=1 +Platform: timer mark 58.896 0.137 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 58.896 0.0 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000646334 +Platform: timer mark 58.896 0.0 EnsemblSeqProx.fetchSeq +Platform: timer mark 58.896 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000646334?type=protein&Accept=application/json&content-type=application/json +Response code 400 +Platform: timer mark 59.037 0.141 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 59.037 0.0 EnsembleRestClient.getJSON2 ...done +No protein product found for ENST00000646334 +Platform: timer mark 59.054 0.017 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000646730?content-type=application/json&all_levels=1 +Platform: timer mark 59.499 0.445 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 59.499 0.0 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000646730 +Platform: timer mark 59.5 0.001 EnsemblSeqProx.fetchSeq +Platform: timer mark 59.5 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000646730?type=protein&Accept=application/json&content-type=application/json +Platform: timer mark 59.659 0.159 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 59.659 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 59.659 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSP00000494784?content-type=application/json&all_levels=1 +Platform: timer mark 59.803 0.144 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 59.804 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 59.819 0.015 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000644650?content-type=application/json&all_levels=1 +Platform: timer mark 59.989 0.17 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 59.989 0.0 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000644650 +Platform: timer mark 59.989 0.0 EnsemblSeqProx.fetchSeq +Platform: timer mark 59.989 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000644650?type=protein&Accept=application/json&content-type=application/json +Platform: timer mark 60.151 0.162 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 60.151 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 60.151 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSP00000493783?content-type=application/json&all_levels=1 +Platform: timer mark 60.301 0.15 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 60.301 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 60.316 0.015 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000647434?content-type=application/json&all_levels=1 +Platform: timer mark 60.469 0.153 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 60.469 0.0 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000647434 +Platform: timer mark 60.47 0.001 EnsemblSeqProx.fetchSeq +Platform: timer mark 60.47 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000647434?type=protein&Accept=application/json&content-type=application/json +Platform: timer mark 60.615 0.145 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 60.615 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 60.615 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSP00000495132?content-type=application/json&all_levels=1 +Platform: timer mark 60.765 0.15 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 60.765 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 60.779 0.014 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000479537?content-type=application/json&all_levels=1 +Platform: timer mark 60.935 0.156 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 60.935 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 60.935 0.0 EnsemblSeqProx.fetchSeq +Adding protein product for ENST00000479537 +Platform: timer mark 60.935 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000479537?type=protein&Accept=application/json&content-type=application/json +Platform: timer mark 61.352 0.417 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 61.353 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 61.357 0.004 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSP00000418033?content-type=application/json&all_levels=1 +Platform: timer mark 61.506 0.149 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 61.507 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 61.519 0.012 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000645443?content-type=application/json&all_levels=1 +Platform: timer mark 61.706 0.187 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 61.706 0.0 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000645443 +Platform: timer mark 61.706 0.0 EnsemblSeqProx.fetchSeq +Platform: timer mark 61.706 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000645443?type=protein&Accept=application/json&content-type=application/json +Response code 400 +Platform: timer mark 61.845 0.139 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 61.845 0.0 EnsembleRestClient.getJSON2 ...done +No protein product found for ENST00000645443 +Platform: timer mark 61.863 0.018 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000644905?content-type=application/json&all_levels=1 +Platform: timer mark 62.242 0.379 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 62.242 0.0 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000644905 +Platform: timer mark 62.243 0.001 EnsemblSeqProx.fetchSeq +Platform: timer mark 62.243 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000644905?type=protein&Accept=application/json&content-type=application/json +Response code 400 +Platform: timer mark 62.382 0.139 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 62.382 0.0 EnsembleRestClient.getJSON2 ...done +No protein product found for ENST00000644905 +Platform: timer mark 62.398 0.016 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000642228?content-type=application/json&all_levels=1 +Platform: timer mark 62.792 0.394 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 62.792 0.0 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000642228 +Platform: timer mark 62.793 0.001 EnsemblSeqProx.fetchSeq +Platform: timer mark 62.793 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000642228?type=protein&Accept=application/json&content-type=application/json +Platform: timer mark 62.962 0.169 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 62.962 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 62.962 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSP00000493678?content-type=application/json&all_levels=1 +Platform: timer mark 63.117 0.155 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 63.117 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 63.137 0.02 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000644969?content-type=application/json&all_levels=1 +Platform: timer mark 63.311 0.174 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 63.311 0.0 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000644969 +Platform: timer mark 63.312 0.001 EnsemblSeqProx.fetchSeq +Platform: timer mark 63.312 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000644969?type=protein&Accept=application/json&content-type=application/json +Platform: timer mark 63.467 0.155 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 63.467 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 63.467 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSP00000496776?content-type=application/json&all_levels=1 +Platform: timer mark 63.622 0.155 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 63.622 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 63.641 0.019 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000644120?content-type=application/json&all_levels=1 +Platform: timer mark 63.79 0.149 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 63.79 0.0 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000644120 +Platform: timer mark 63.79 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/info/ping?content-type=application/json +Platform: timer mark 63.925 0.135 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 63.925 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 63.925 0.0 EnsemblSeqProx.fetchSeq +Platform: timer mark 63.925 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000644120?type=protein&Accept=application/json&content-type=application/json +No protein product found for ENST00000644120 +Response code 400 +Platform: timer mark 64.069 0.144 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 64.069 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 64.112 0.043 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000642875?content-type=application/json&all_levels=1 +Platform: timer mark 64.483 0.371 EnsembleRestClient.getJSON1 parsing... +Adding protein product for ENST00000642875 +Platform: timer mark 64.483 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 64.483 0.0 EnsemblSeqProx.fetchSeq +Platform: timer mark 64.483 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000642875?type=protein&Accept=application/json&content-type=application/json +Response code 400 +Platform: timer mark 64.626 0.143 EnsembleRestClient.getJSON1 parsing... +No protein product found for ENST00000642875 +Platform: timer mark 64.626 0.0 EnsembleRestClient.getJSON2 ...done diff --git a/optimization/timing-js-chrome-bh.txt b/optimization/timing-js-chrome-bh.txt new file mode 100644 index 0000000..9766020 --- /dev/null +++ b/optimization/timing-js-chrome-bh.txt @@ -0,0 +1,253 @@ +Platform: timer mark 0.0 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/lookup/id/ENSG00000157764?content-type=application/json +Platform: timer mark 0.575 0.575 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 0.579 0.004 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 0.585 0.006 EnsembleRestClient.getJSON0 https://rest.ensembl.org/info/ping?content-type=application/json +Platform: timer mark 0.799 0.214 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 0.8 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 0.8 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/info/rest?content-type=application/json +Platform: timer mark 0.999 0.199 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 1.0 0.001 EnsembleRestClient.getJSON2 ...done +EnsemblRestClient expected ENSEMBL REST version 7.0 but found 9.0, see https://github.com/Ensembl/ensembl-rest/wiki/Change-log +Platform: timer mark 1.017 0.017 EnsembleRestClient.getJSON0 https://rest.ensembl.org/info/data?content-type=application/json +Platform: timer mark 1.198 0.181 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 1.198 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 1.199 0.001 EnsemblSeqProx.fetchSeq +Platform: timer mark 1.2 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENSG00000157764?type=genomic&Accept=application/json&content-type=application/json&object_type=Gene +Platform: timer mark 4.001 2.801 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 4.001 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 4.569 0.568 EnsembleRestClient.getJSON0 https://rest.ensembl.org/overlap/id/ENSG00000157764?content-type=application/json&object_type=Gene&feature=gene&feature=transcript&feature=exon&feature=cds&feature=variation +Platform: timer mark 19.839 15.27 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 19.839 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 20.13 0.291 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSG00000157764?content-type=application/json&all_levels=1 +Platform: timer mark 20.898 0.768 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 20.899 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 71.77 50.871 EnsembleRestClient.getJSON0 https://rest.ensembl.org/lookup/id/ENSG00000157764?content-type=application/json&object_type=Gene +Platform: timer mark 72.199 0.429 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 72.199 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 72.6 0.401 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000646891?content-type=application/json&all_levels=1 +Platform: timer mark 73.692 1.092 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 73.694 0.002 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000646891 +Platform: timer mark 73.797 0.103 EnsembleRestClient.getJSON0 https://rest.ensembl.org/info/ping?content-type=application/json +Platform: timer mark 74.009 0.212 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 74.009 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 74.01 0.001 EnsemblSeqProx.fetchSeq +Platform: timer mark 74.011 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000646891?type=protein&Accept=application/json&content-type=application/json +Platform: timer mark 74.215 0.204 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 74.216 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 74.219 0.003 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSP00000493543?content-type=application/json&all_levels=1 +Platform: timer mark 74.697 0.478 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 74.697 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 74.924 0.227 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000496384?content-type=application/json&all_levels=1 +Platform: timer mark 75.12 0.196 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 75.12 0.0 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000496384 +Platform: timer mark 75.144 0.024 EnsemblSeqProx.fetchSeq +Platform: timer mark 75.145 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000496384?type=protein&Accept=application/json&content-type=application/json +Platform: timer mark 75.325 0.18 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 75.326 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 75.331 0.005 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSP00000419060?content-type=application/json&all_levels=1 +Platform: timer mark 75.535 0.204 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 75.535 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 75.65 0.115 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000469930?content-type=application/json&all_levels=1 +Platform: timer mark 75.826 0.176 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 75.827 0.001 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000469930 +Platform: timer mark 75.831 0.004 EnsemblSeqProx.fetchSeq +Platform: timer mark 75.832 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000469930?type=protein&Accept=application/json&content-type=application/json +Platform: timer mark 76.027 0.195 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 76.028 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 76.028 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSP00000495858?content-type=application/json&all_levels=1 +Platform: timer mark 76.223 0.195 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 76.224 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 76.331 0.107 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000288602?content-type=application/json&all_levels=1 +Platform: timer mark 76.541 0.21 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 76.541 0.0 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000288602 +Platform: timer mark 76.55 0.009 EnsemblSeqProx.fetchSeq +Platform: timer mark 76.55 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000288602?type=protein&Accept=application/json&content-type=application/json +Platform: timer mark 76.733 0.183 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 76.734 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 76.736 0.002 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSP00000288602?content-type=application/json&all_levels=1 +Platform: timer mark 76.928 0.192 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 76.93 0.002 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 77.047 0.117 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000642272?content-type=application/json&all_levels=1 +Platform: timer mark 77.239 0.192 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 77.239 0.0 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000642272 +Platform: timer mark 77.246 0.007 EnsemblSeqProx.fetchSeq +Platform: timer mark 77.247 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000642272?type=protein&Accept=application/json&content-type=application/json +Response code 400 +Platform: timer mark 77.45 0.203 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 77.45 0.0 EnsembleRestClient.getJSON2 ...done +No protein product found for ENST00000642272 +Platform: timer mark 77.551 0.101 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000643790?content-type=application/json&all_levels=1 +Platform: timer mark 77.947 0.396 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 77.948 0.001 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000643790 +Platform: timer mark 77.95 0.002 EnsemblSeqProx.fetchSeq +Platform: timer mark 77.952 0.002 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000643790?type=protein&Accept=application/json&content-type=application/json +Response code 400 +Platform: timer mark 78.148 0.196 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 78.149 0.001 EnsembleRestClient.getJSON2 ...done +No protein product found for ENST00000643790 +Platform: timer mark 78.247 0.098 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000646427?content-type=application/json&all_levels=1 +Platform: timer mark 78.656 0.409 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 78.656 0.0 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000646427 +Platform: timer mark 78.662 0.006 EnsemblSeqProx.fetchSeq +Platform: timer mark 78.664 0.002 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000646427?type=protein&Accept=application/json&content-type=application/json +Response code 400 +Platform: timer mark 78.866 0.202 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 78.866 0.0 EnsembleRestClient.getJSON2 ...done +No protein product found for ENST00000646427 +Platform: timer mark 78.966 0.1 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000642808?content-type=application/json&all_levels=1 +Platform: timer mark 79.365 0.399 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 79.366 0.001 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000642808 +Platform: timer mark 79.368 0.002 EnsemblSeqProx.fetchSeq +Platform: timer mark 79.369 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000642808?type=protein&Accept=application/json&content-type=application/json +Response code 400 +Platform: timer mark 79.554 0.185 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 79.555 0.001 EnsembleRestClient.getJSON2 ...done +No protein product found for ENST00000642808 +Platform: timer mark 79.653 0.098 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000643356?content-type=application/json&all_levels=1 +Platform: timer mark 80.065 0.412 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 80.066 0.001 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000643356 +Platform: timer mark 80.069 0.003 EnsemblSeqProx.fetchSeq +Platform: timer mark 80.07 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000643356?type=protein&Accept=application/json&content-type=application/json +Response code 400 +Platform: timer mark 80.252 0.182 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 80.253 0.001 EnsembleRestClient.getJSON2 ...done +No protein product found for ENST00000643356 +Platform: timer mark 80.354 0.101 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000497784?content-type=application/json&all_levels=1 +Platform: timer mark 80.761 0.407 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 80.762 0.001 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000497784 +Platform: timer mark 80.769 0.007 EnsemblSeqProx.fetchSeq +Platform: timer mark 80.769 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000497784?type=protein&Accept=application/json&content-type=application/json +Platform: timer mark 80.964 0.195 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 80.966 0.002 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 80.967 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSP00000420119?content-type=application/json&all_levels=1 +Platform: timer mark 81.159 0.192 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 81.16 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 81.266 0.106 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000646334?content-type=application/json&all_levels=1 +Platform: timer mark 81.464 0.198 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 81.465 0.001 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000646334 +Platform: timer mark 81.47 0.005 EnsemblSeqProx.fetchSeq +Platform: timer mark 81.471 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000646334?type=protein&Accept=application/json&content-type=application/json +Response code 400 +Platform: timer mark 81.664 0.193 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 81.665 0.001 EnsembleRestClient.getJSON2 ...done +No protein product found for ENST00000646334 +Platform: timer mark 81.77 0.105 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000646730?content-type=application/json&all_levels=1 +Platform: timer mark 82.281 0.511 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 82.283 0.002 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000646730 +Platform: timer mark 82.29 0.007 EnsemblSeqProx.fetchSeq +Platform: timer mark 82.291 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000646730?type=protein&Accept=application/json&content-type=application/json +Platform: timer mark 82.459 0.168 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 82.46 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 82.461 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSP00000494784?content-type=application/json&all_levels=1 +Platform: timer mark 82.664 0.203 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 82.664 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 82.777 0.113 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000644650?content-type=application/json&all_levels=1 +Platform: timer mark 82.99 0.213 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 82.991 0.001 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000644650 +Platform: timer mark 82.996 0.005 EnsemblSeqProx.fetchSeq +Platform: timer mark 82.997 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000644650?type=protein&Accept=application/json&content-type=application/json +Platform: timer mark 83.186 0.189 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 83.187 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 83.188 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSP00000493783?content-type=application/json&all_levels=1 +Platform: timer mark 83.389 0.201 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 83.389 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 83.497 0.108 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000647434?content-type=application/json&all_levels=1 +Platform: timer mark 83.795 0.298 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 83.796 0.001 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000647434 +Platform: timer mark 83.802 0.006 EnsembleRestClient.getJSON0 https://rest.ensembl.org/info/ping?content-type=application/json +Platform: timer mark 83.993 0.191 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 83.994 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 83.995 0.001 EnsemblSeqProx.fetchSeq +Platform: timer mark 83.996 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000647434?type=protein&Accept=application/json&content-type=application/json +Platform: timer mark 84.293 0.297 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 84.294 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 84.296 0.002 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSP00000495132?content-type=application/json&all_levels=1 +Platform: timer mark 84.491 0.195 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 84.491 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 84.598 0.107 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000479537?content-type=application/json&all_levels=1 +Platform: timer mark 84.791 0.193 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 84.792 0.001 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000479537 +Platform: timer mark 84.797 0.005 EnsemblSeqProx.fetchSeq +Platform: timer mark 84.797 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000479537?type=protein&Accept=application/json&content-type=application/json +Platform: timer mark 84.991 0.194 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 84.992 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 84.993 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSP00000418033?content-type=application/json&all_levels=1 +Platform: timer mark 85.187 0.194 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 85.188 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 85.29 0.102 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000645443?content-type=application/json&all_levels=1 +Platform: timer mark 85.471 0.181 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 85.473 0.002 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000645443 +Platform: timer mark 85.478 0.005 EnsemblSeqProx.fetchSeq +Platform: timer mark 85.48 0.002 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000645443?type=protein&Accept=application/json&content-type=application/json +Response code 400 +Platform: timer mark 85.693 0.213 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 85.694 0.001 EnsembleRestClient.getJSON2 ...done +No protein product found for ENST00000645443 +Platform: timer mark 85.804 0.11 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000644905?content-type=application/json&all_levels=1 +Platform: timer mark 86.175 0.371 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 86.176 0.001 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000644905 +Platform: timer mark 86.187 0.011 EnsemblSeqProx.fetchSeq +Platform: timer mark 86.188 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000644905?type=protein&Accept=application/json&content-type=application/json +Response code 400 +Platform: timer mark 86.389 0.201 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 86.389 0.0 EnsembleRestClient.getJSON2 ...done +No protein product found for ENST00000644905 +Platform: timer mark 86.526 0.137 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000642228?content-type=application/json&all_levels=1 +Platform: timer mark 86.989 0.463 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 86.989 0.0 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000642228 +Platform: timer mark 86.998 0.009 EnsemblSeqProx.fetchSeq +Platform: timer mark 86.998 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000642228?type=protein&Accept=application/json&content-type=application/json +Platform: timer mark 87.219 0.221 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 87.219 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 87.221 0.002 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSP00000493678?content-type=application/json&all_levels=1 +Platform: timer mark 87.392 0.171 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 87.393 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 87.508 0.115 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000644969?content-type=application/json&all_levels=1 +Platform: timer mark 87.708 0.2 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 87.709 0.001 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000644969 +Platform: timer mark 87.718 0.009 EnsemblSeqProx.fetchSeq +Platform: timer mark 87.719 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000644969?type=protein&Accept=application/json&content-type=application/json +Platform: timer mark 87.917 0.198 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 87.918 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 87.919 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSP00000496776?content-type=application/json&all_levels=1 +Platform: timer mark 88.093 0.174 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 88.094 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 88.205 0.111 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000644120?content-type=application/json&all_levels=1 +Platform: timer mark 88.392 0.187 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 88.393 0.001 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000644120 +Platform: timer mark 88.402 0.009 EnsemblSeqProx.fetchSeq +Platform: timer mark 88.403 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000644120?type=protein&Accept=application/json&content-type=application/json +Response code 400 +Platform: timer mark 88.592 0.189 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 88.592 0.0 EnsembleRestClient.getJSON2 ...done +No protein product found for ENST00000644120 +Platform: timer mark 88.698 0.106 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000642875?content-type=application/json&all_levels=1 +Platform: timer mark 89.091 0.393 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 89.092 0.001 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000642875 +Platform: timer mark 89.1 0.008 EnsemblSeqProx.fetchSeq +Platform: timer mark 89.101 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000642875?type=protein&Accept=application/json&content-type=application/json +Response code 400 +Platform: timer mark 89.293 0.192 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 89.293 0.0 EnsembleRestClient.getJSON2 ...done +No protein product found for ENST00000642875 diff --git a/optimization/timing-js-firefox-bh.txt b/optimization/timing-js-firefox-bh.txt new file mode 100644 index 0000000..02e3079 --- /dev/null +++ b/optimization/timing-js-firefox-bh.txt @@ -0,0 +1,253 @@ +Platform: timer mark 0.0 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/lookup/id/ENSG00000157764?content-type=application/json +Platform: timer mark 0.494 0.494 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 0.497 0.003 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 0.504 0.007 EnsembleRestClient.getJSON0 https://rest.ensembl.org/info/ping?content-type=application/json +Platform: timer mark 0.644 0.14 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 0.644 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 0.646 0.002 EnsembleRestClient.getJSON0 https://rest.ensembl.org/info/rest?content-type=application/json +Platform: timer mark 0.79 0.144 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 0.791 0.001 EnsembleRestClient.getJSON2 ...done +EnsemblRestClient expected ENSEMBL REST version 7.0 but found 9.0, see https://github.com/Ensembl/ensembl-rest/wiki/Change-log +Platform: timer mark 0.807 0.016 EnsembleRestClient.getJSON0 https://rest.ensembl.org/info/data?content-type=application/json +Platform: timer mark 0.948 0.141 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 0.948 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 0.949 0.001 EnsemblSeqProx.fetchSeq +Platform: timer mark 0.95 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENSG00000157764?type=genomic&Accept=application/json&content-type=application/json&object_type=Gene +Platform: timer mark 2.818 1.868 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 2.819 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 3.466 0.647 EnsembleRestClient.getJSON0 https://rest.ensembl.org/overlap/id/ENSG00000157764?content-type=application/json&object_type=Gene&feature=gene&feature=transcript&feature=exon&feature=cds&feature=variation +Platform: timer mark 35.082 31.616 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 35.082 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 35.602 0.52 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSG00000157764?content-type=application/json&all_levels=1 +Platform: timer mark 36.379 0.777 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 36.379 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 78.898 42.519 EnsembleRestClient.getJSON0 https://rest.ensembl.org/lookup/id/ENSG00000157764?content-type=application/json&object_type=Gene +Platform: timer mark 79.373 0.475 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 79.373 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 79.937 0.564 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000646891?content-type=application/json&all_levels=1 +Platform: timer mark 81.009 1.072 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 81.01 0.001 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000646891 +Platform: timer mark 81.194 0.184 EnsembleRestClient.getJSON0 https://rest.ensembl.org/info/ping?content-type=application/json +Platform: timer mark 81.342 0.148 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 81.342 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 81.343 0.001 EnsemblSeqProx.fetchSeq +Platform: timer mark 81.345 0.002 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000646891?type=protein&Accept=application/json&content-type=application/json +Platform: timer mark 81.698 0.353 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 81.699 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 81.702 0.003 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSP00000493543?content-type=application/json&all_levels=1 +Platform: timer mark 82.213 0.511 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 82.213 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 82.757 0.544 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000496384?content-type=application/json&all_levels=1 +Platform: timer mark 83.001 0.244 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 83.002 0.001 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000496384 +Platform: timer mark 83.026 0.024 EnsemblSeqProx.fetchSeq +Platform: timer mark 83.026 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000496384?type=protein&Accept=application/json&content-type=application/json +Platform: timer mark 83.204 0.178 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 83.204 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 83.207 0.003 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSP00000419060?content-type=application/json&all_levels=1 +Platform: timer mark 83.359 0.152 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 83.359 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 83.727 0.368 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000469930?content-type=application/json&all_levels=1 +Platform: timer mark 83.89 0.163 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 83.89 0.0 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000469930 +Platform: timer mark 83.897 0.007 EnsemblSeqProx.fetchSeq +Platform: timer mark 83.897 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000469930?type=protein&Accept=application/json&content-type=application/json +Platform: timer mark 84.061 0.164 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 84.062 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 84.063 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSP00000495858?content-type=application/json&all_levels=1 +Platform: timer mark 84.311 0.248 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 84.311 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 84.667 0.356 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000288602?content-type=application/json&all_levels=1 +Platform: timer mark 84.911 0.244 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 84.912 0.001 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000288602 +Platform: timer mark 84.922 0.01 EnsemblSeqProx.fetchSeq +Platform: timer mark 84.922 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000288602?type=protein&Accept=application/json&content-type=application/json +Platform: timer mark 85.109 0.187 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 85.11 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 85.115 0.005 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSP00000288602?content-type=application/json&all_levels=1 +Platform: timer mark 85.266 0.151 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 85.267 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 85.64 0.373 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000642272?content-type=application/json&all_levels=1 +Platform: timer mark 85.78 0.14 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 85.78 0.0 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000642272 +Platform: timer mark 85.787 0.007 EnsemblSeqProx.fetchSeq +Platform: timer mark 85.788 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000642272?type=protein&Accept=application/json&content-type=application/json +Response code 400 +Platform: timer mark 85.966 0.178 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 85.967 0.001 EnsembleRestClient.getJSON2 ...done +No protein product found for ENST00000642272 +Platform: timer mark 86.336 0.369 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000643790?content-type=application/json&all_levels=1 +Platform: timer mark 86.838 0.502 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 86.838 0.0 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000643790 +Platform: timer mark 86.842 0.004 EnsemblSeqProx.fetchSeq +Platform: timer mark 86.843 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000643790?type=protein&Accept=application/json&content-type=application/json +Response code 400 +Platform: timer mark 86.991 0.148 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 86.992 0.001 EnsembleRestClient.getJSON2 ...done +No protein product found for ENST00000643790 +Platform: timer mark 87.335 0.343 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000646427?content-type=application/json&all_levels=1 +Platform: timer mark 87.803 0.468 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 87.804 0.001 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000646427 +Platform: timer mark 87.811 0.007 EnsemblSeqProx.fetchSeq +Platform: timer mark 87.811 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000646427?type=protein&Accept=application/json&content-type=application/json +Response code 400 +Platform: timer mark 87.999 0.188 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 87.999 0.0 EnsembleRestClient.getJSON2 ...done +No protein product found for ENST00000646427 +Platform: timer mark 88.337 0.338 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000642808?content-type=application/json&all_levels=1 +Platform: timer mark 88.735 0.398 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 88.735 0.0 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000642808 +Platform: timer mark 88.739 0.004 EnsemblSeqProx.fetchSeq +Platform: timer mark 88.74 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000642808?type=protein&Accept=application/json&content-type=application/json +Response code 400 +Platform: timer mark 88.904 0.164 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 88.904 0.0 EnsembleRestClient.getJSON2 ...done +No protein product found for ENST00000642808 +Platform: timer mark 89.263 0.359 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000643356?content-type=application/json&all_levels=1 +Platform: timer mark 89.649 0.386 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 89.65 0.001 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000643356 +Platform: timer mark 89.654 0.004 EnsemblSeqProx.fetchSeq +Platform: timer mark 89.655 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000643356?type=protein&Accept=application/json&content-type=application/json +Response code 400 +Platform: timer mark 89.842 0.187 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 89.842 0.0 EnsembleRestClient.getJSON2 ...done +No protein product found for ENST00000643356 +Platform: timer mark 90.199 0.357 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000497784?content-type=application/json&all_levels=1 +Platform: timer mark 90.622 0.423 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 90.623 0.001 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000497784 +Platform: timer mark 90.63 0.007 EnsemblSeqProx.fetchSeq +Platform: timer mark 90.632 0.002 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000497784?type=protein&Accept=application/json&content-type=application/json +Platform: timer mark 90.817 0.185 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 90.817 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 90.82 0.003 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSP00000420119?content-type=application/json&all_levels=1 +Platform: timer mark 91.017 0.197 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 91.018 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 91.373 0.355 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000646334?content-type=application/json&all_levels=1 +Platform: timer mark 91.522 0.149 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 91.522 0.0 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000646334 +Platform: timer mark 91.529 0.007 EnsembleRestClient.getJSON0 https://rest.ensembl.org/info/ping?content-type=application/json +Platform: timer mark 91.719 0.19 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 91.72 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 91.72 0.0 EnsemblSeqProx.fetchSeq +Platform: timer mark 91.721 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000646334?type=protein&Accept=application/json&content-type=application/json +Response code 400 +Platform: timer mark 91.92 0.199 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 91.92 0.0 EnsembleRestClient.getJSON2 ...done +No protein product found for ENST00000646334 +Platform: timer mark 92.305 0.385 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000646730?content-type=application/json&all_levels=1 +Platform: timer mark 92.728 0.423 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 92.728 0.0 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000646730 +Platform: timer mark 92.74 0.012 EnsemblSeqProx.fetchSeq +Platform: timer mark 92.741 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000646730?type=protein&Accept=application/json&content-type=application/json +Platform: timer mark 92.927 0.186 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 92.928 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 92.929 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSP00000494784?content-type=application/json&all_levels=1 +Platform: timer mark 93.166 0.237 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 93.167 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 93.528 0.361 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000644650?content-type=application/json&all_levels=1 +Platform: timer mark 93.772 0.244 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 93.773 0.001 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000644650 +Platform: timer mark 93.781 0.008 EnsemblSeqProx.fetchSeq +Platform: timer mark 93.782 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000644650?type=protein&Accept=application/json&content-type=application/json +Platform: timer mark 93.949 0.167 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 93.95 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 93.951 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSP00000493783?content-type=application/json&all_levels=1 +Platform: timer mark 94.171 0.22 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 94.172 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 94.534 0.362 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000647434?content-type=application/json&all_levels=1 +Platform: timer mark 94.783 0.249 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 94.784 0.001 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000647434 +Platform: timer mark 94.79 0.006 EnsemblSeqProx.fetchSeq +Platform: timer mark 94.791 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000647434?type=protein&Accept=application/json&content-type=application/json +Platform: timer mark 94.958 0.167 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 94.959 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 94.96 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSP00000495132?content-type=application/json&all_levels=1 +Platform: timer mark 95.137 0.177 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 95.137 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 95.573 0.436 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000479537?content-type=application/json&all_levels=1 +Platform: timer mark 95.753 0.18 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 95.753 0.0 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000479537 +Platform: timer mark 95.759 0.006 EnsemblSeqProx.fetchSeq +Platform: timer mark 95.76 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000479537?type=protein&Accept=application/json&content-type=application/json +Platform: timer mark 95.943 0.183 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 95.944 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 95.947 0.003 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSP00000418033?content-type=application/json&all_levels=1 +Platform: timer mark 96.142 0.195 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 96.144 0.002 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 96.489 0.345 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000645443?content-type=application/json&all_levels=1 +Platform: timer mark 96.687 0.198 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 96.688 0.001 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000645443 +Platform: timer mark 96.694 0.006 EnsemblSeqProx.fetchSeq +Platform: timer mark 96.696 0.002 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000645443?type=protein&Accept=application/json&content-type=application/json +Response code 400 +Platform: timer mark 96.846 0.15 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 96.846 0.0 EnsembleRestClient.getJSON2 ...done +No protein product found for ENST00000645443 +Platform: timer mark 97.211 0.365 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000644905?content-type=application/json&all_levels=1 +Platform: timer mark 97.686 0.475 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 97.686 0.0 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000644905 +Platform: timer mark 97.698 0.012 EnsemblSeqProx.fetchSeq +Platform: timer mark 97.699 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000644905?type=protein&Accept=application/json&content-type=application/json +Response code 400 +Platform: timer mark 97.849 0.15 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 97.85 0.001 EnsembleRestClient.getJSON2 ...done +No protein product found for ENST00000644905 +Platform: timer mark 98.268 0.418 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000642228?content-type=application/json&all_levels=1 +Platform: timer mark 98.663 0.395 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 98.663 0.0 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000642228 +Platform: timer mark 98.672 0.009 EnsemblSeqProx.fetchSeq +Platform: timer mark 98.672 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000642228?type=protein&Accept=application/json&content-type=application/json +Platform: timer mark 98.851 0.179 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 98.851 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 98.853 0.002 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSP00000493678?content-type=application/json&all_levels=1 +Platform: timer mark 99.008 0.155 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 99.008 0.0 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 99.374 0.366 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000644969?content-type=application/json&all_levels=1 +Platform: timer mark 99.553 0.179 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 99.554 0.001 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000644969 +Platform: timer mark 99.565 0.011 EnsemblSeqProx.fetchSeq +Platform: timer mark 99.565 0.0 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000644969?type=protein&Accept=application/json&content-type=application/json +Platform: timer mark 99.752 0.187 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 99.753 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 99.757 0.004 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENSP00000496776?content-type=application/json&all_levels=1 +Platform: timer mark 99.915 0.158 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 99.916 0.001 EnsembleRestClient.getJSON2 ...done +Platform: timer mark 100.28 0.364 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000644120?content-type=application/json&all_levels=1 +Platform: timer mark 100.454 0.174 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 100.456 0.002 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000644120 +Platform: timer mark 100.465 0.009 EnsemblSeqProx.fetchSeq +Platform: timer mark 100.467 0.002 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000644120?type=protein&Accept=application/json&content-type=application/json +Response code 400 +Platform: timer mark 100.608 0.141 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 100.609 0.001 EnsembleRestClient.getJSON2 ...done +No protein product found for ENST00000644120 +Platform: timer mark 101.06 0.451 EnsembleRestClient.getJSON0 https://rest.ensembl.org/xrefs/id/ENST00000642875?content-type=application/json&all_levels=1 +Platform: timer mark 101.46 0.4 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 101.46 0.0 EnsembleRestClient.getJSON2 ...done +Adding protein product for ENST00000642875 +Platform: timer mark 101.469 0.009 EnsemblSeqProx.fetchSeq +Platform: timer mark 101.47 0.001 EnsembleRestClient.getJSON0 https://rest.ensembl.org/sequence/id/ENST00000642875?type=protein&Accept=application/json&content-type=application/json +Response code 400 +Platform: timer mark 101.616 0.146 EnsembleRestClient.getJSON1 parsing... +Platform: timer mark 101.616 0.0 EnsembleRestClient.getJSON2 ...done +No protein product found for ENST00000642875 diff --git a/site-resources/jalview_bin_JalviewJS_core.html b/site-resources/jalview_bin_JalviewJS_core.html index b883409..abc7b7f 100644 --- a/site-resources/jalview_bin_JalviewJS_core.html +++ b/site-resources/jalview_bin_JalviewJS_core.html @@ -26,7 +26,7 @@ SwingJS.getApplet('testApplet', Info) getClassList = function(){J2S._saveFile('_j2sclasslist.txt', Clazz.ClassFilesLoaded.sort().join('\n'))}
-
+
This is System.out. clear it
Add ?j2snocore to URL to see full class list; ?j2sdebug to use uncompressed j2s/core files
get _j2sClassList.txt
diff --git a/src/jalview/analysis/AlignmentUtils.java b/src/jalview/analysis/AlignmentUtils.java index 14096cf..4f8897a 100644 --- a/src/jalview/analysis/AlignmentUtils.java +++ b/src/jalview/analysis/AlignmentUtils.java @@ -2320,10 +2320,14 @@ public class AlignmentUtils int phase = 0; try { - phase = Integer.parseInt(sf.getPhase()); + String s = sf.getPhase(); + if (s != null) + { + phase = Integer.parseInt(s); + } } catch (NumberFormatException e) { - // ignore + // SwingJS -- need to avoid these. } /* * phase > 0 on first codon means 5' incomplete - skip to the start diff --git a/src/jalview/ext/ensembl/EnsemblFeatures.java b/src/jalview/ext/ensembl/EnsemblFeatures.java index 9a45dda..6a0d67c 100644 --- a/src/jalview/ext/ensembl/EnsemblFeatures.java +++ b/src/jalview/ext/ensembl/EnsemblFeatures.java @@ -35,10 +35,8 @@ import java.net.URL; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Map; -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; -import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; /** @@ -94,13 +92,9 @@ class EnsemblFeatures extends EnsemblRestClient // TODO: use a vararg String... for getSequenceRecords instead? List queries = new ArrayList<>(); queries.add(query); - BufferedReader fp = getSequenceReader(queries); - if (fp == null) - { - return null; - } - - SequenceI seq = parseFeaturesJson(fp); + SequenceI seq = parseFeaturesJson(queries); + if (seq == null) + return null; return new Alignment(new SequenceI[] { seq }); } @@ -111,30 +105,34 @@ class EnsemblFeatures extends EnsemblRestClient * @param br * @return */ - private SequenceI parseFeaturesJson(BufferedReader br) + @SuppressWarnings("unchecked") +private SequenceI parseFeaturesJson(List queries) { + + SequenceI seq = new Sequence("Dummy", ""); - JSONParser jp = new JSONParser(); try { - JSONArray responses = (JSONArray) jp.parse(br); - Iterator rvals = responses.iterator(); + + Iterator rvals = (Iterator) getJSON(null, queries, -1, MODE_ITERATOR, null); + if (rvals == null) + return null; while (rvals.hasNext()) { try { - JSONObject obj = (JSONObject) rvals.next(); + Map obj = (Map) rvals.next(); String type = obj.get("feature_type").toString(); int start = Integer.parseInt(obj.get("start").toString()); int end = Integer.parseInt(obj.get("end").toString()); String source = obj.get("source").toString(); String strand = obj.get("strand").toString(); String alleles = JSONUtils - .arrayToList((JSONArray) obj.get("alleles")); + .arrayToStringList((List) obj.get("alleles")); String clinSig = JSONUtils - .arrayToList( - (JSONArray) obj.get("clinical_significance")); + .arrayToStringList( + (List) obj.get("clinical_significance")); /* * convert 'variation' to 'sequence_variant', and 'cds' to 'CDS' @@ -169,20 +167,22 @@ class EnsemblFeatures extends EnsemblRestClient } } catch (ParseException | IOException e) { + e.printStackTrace(); // ignore } return seq; } - /** + +/** * Returns the first non-null attribute found (if any) as a string * * @param obj * @param keys * @return */ - protected String getFirstNotNull(JSONObject obj, String... keys) + protected String getFirstNotNull(Map obj, String... keys) { String desc = null; @@ -209,7 +209,7 @@ class EnsemblFeatures extends EnsemblRestClient * @param obj * @param key */ - protected void setFeatureAttribute(SequenceFeature sf, JSONObject obj, + protected void setFeatureAttribute(SequenceFeature sf, Map obj, String key) { Object object = obj.get(key); diff --git a/src/jalview/ext/ensembl/EnsemblInfo.java b/src/jalview/ext/ensembl/EnsemblInfo.java index fa24f1e..97a8e74 100644 --- a/src/jalview/ext/ensembl/EnsemblInfo.java +++ b/src/jalview/ext/ensembl/EnsemblInfo.java @@ -2,6 +2,7 @@ package jalview.ext.ensembl; import jalview.datamodel.AlignmentI; import jalview.datamodel.DBRefSource; +import jalview.util.JSONUtils; import java.io.BufferedReader; import java.io.IOException; @@ -13,8 +14,6 @@ import java.util.List; import java.util.Map; import java.util.Set; -import org.json.simple.JSONArray; -import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; public class EnsemblInfo extends EnsemblRestClient @@ -90,53 +89,16 @@ public class EnsemblInfo extends EnsemblRestClient * for convenience, pre-fill ensembl.org as the domain for "ENSEMBL" */ divisions.put(DBRefSource.ENSEMBL.toUpperCase(), ensemblDomain); - - BufferedReader br = null; try { - URL url = getDivisionsUrl(ensemblGenomesDomain); - if (url != null) - { - br = getHttpResponse(url, null); - } - parseResponse(br, ensemblGenomesDomain); - } catch (IOException e) - { - // ignore - } finally - { - if (br != null) - { - try - { - br.close(); - } catch (IOException e) - { - // ignore - } - } - } - } - - /** - * Parses the JSON response to /info/divisions, and add each to the lookup map - * - * @param br - * @param domain - */ - void parseResponse(BufferedReader br, String domain) - { - JSONParser jp = new JSONParser(); - - try - { - JSONArray parsed = (JSONArray) jp.parse(br); - - Iterator rvals = parsed.iterator(); + @SuppressWarnings("unchecked") + Iterator rvals = (Iterator) getJSON(getDivisionsUrl(ensemblGenomesDomain), null, -1, MODE_ITERATOR, null); + if (rvals == null) + return; while (rvals.hasNext()) { String division = rvals.next().toString(); - divisions.put(division.toUpperCase(), domain); + divisions.put(division.toUpperCase(), ensemblGenomesDomain); } } catch (IOException | ParseException | NumberFormatException e) { diff --git a/src/jalview/ext/ensembl/EnsemblLookup.java b/src/jalview/ext/ensembl/EnsemblLookup.java index c6b794a..fc37b8a 100644 --- a/src/jalview/ext/ensembl/EnsemblLookup.java +++ b/src/jalview/ext/ensembl/EnsemblLookup.java @@ -25,16 +25,14 @@ import jalview.datamodel.AlignmentI; import jalview.datamodel.GeneLociI; import jalview.util.MapList; -import java.io.BufferedReader; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.Map; -import org.json.simple.JSONObject; -import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; /** @@ -151,7 +149,7 @@ public class EnsemblLookup extends EnsemblRestClient * @param br * @return */ - protected String parseGeneId(JSONObject val) + protected String parseGeneId(Map val) { if (val == null) { @@ -189,7 +187,7 @@ public class EnsemblLookup extends EnsemblRestClient public String getSpecies(String identifier) { String species = null; - JSONObject json = getResult(identifier, null); + Map json = getResult(identifier, null); if (json != null) { Object o = json.get(SPECIES); @@ -202,7 +200,7 @@ public class EnsemblLookup extends EnsemblRestClient } /** - * Calls the /lookup/id rest service and returns the response as a JSONObject, + * Calls the /lookup/id rest service and returns the response as a Map, * or null if any error * * @param identifier @@ -210,37 +208,20 @@ public class EnsemblLookup extends EnsemblRestClient * (optional) * @return */ - protected JSONObject getResult(String identifier, String objectType) + @SuppressWarnings("unchecked") + protected Map getResult(String identifier, String objectType) { List ids = Arrays.asList(new String[] { identifier }); - BufferedReader br = null; try { - URL url = getUrl(identifier, objectType); - - if (url != null) - { - br = getHttpResponse(url, ids); - } - return br == null ? null : (JSONObject) (new JSONParser().parse(br)); - } catch (IOException | ParseException e) + return (Map) getJSON(getUrl(identifier, objectType), ids, -1, MODE_MAP, null); + } + catch (IOException | ParseException e) { System.err.println("Error parsing " + identifier + " lookup response " + e.getMessage()); return null; - } finally - { - if (br != null) - { - try - { - br.close(); - } catch (IOException e) - { - // ignore - } - } } } @@ -264,7 +245,7 @@ public class EnsemblLookup extends EnsemblRestClient * @param json * @return */ - GeneLociI parseGeneLoci(JSONObject json) + GeneLociI parseGeneLoci(Map json) { if (json == null) { diff --git a/src/jalview/ext/ensembl/EnsemblMap.java b/src/jalview/ext/ensembl/EnsemblMap.java index f01bd4f..add71b3 100644 --- a/src/jalview/ext/ensembl/EnsemblMap.java +++ b/src/jalview/ext/ensembl/EnsemblMap.java @@ -3,6 +3,7 @@ package jalview.ext.ensembl; import jalview.datamodel.AlignmentI; import jalview.datamodel.DBRefSource; import jalview.datamodel.GeneLociI; +import jalview.util.JSONUtils; import jalview.util.MapList; import java.io.BufferedReader; @@ -13,10 +14,8 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; +import java.util.Map; -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; -import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; public class EnsemblMap extends EnsemblRestClient @@ -119,30 +118,15 @@ public class EnsemblMap extends EnsemblRestClient String fromRef, String toRef, int[] queryRange) { URL url = null; - BufferedReader br = null; - try { url = getAssemblyMapUrl(species, chromosome, fromRef, toRef, queryRange[0], queryRange[1]); - br = getHttpResponse(url, null); - return (parseAssemblyMappingResponse(br)); + return (parseAssemblyMappingResponse(url)); } catch (Throwable t) { System.out.println("Error calling " + url + ": " + t.getMessage()); return null; - } finally - { - if (br != null) - { - try - { - br.close(); - } catch (IOException e) - { - // ignore - } - } } } @@ -161,22 +145,21 @@ public class EnsemblMap extends EnsemblRestClient * @param br * @return */ - protected int[] parseAssemblyMappingResponse(BufferedReader br) + @SuppressWarnings("unchecked") + protected int[] parseAssemblyMappingResponse(URL url) { int[] result = null; - JSONParser jp = new JSONParser(); try { - JSONObject parsed = (JSONObject) jp.parse(br); - JSONArray mappings = (JSONArray) parsed.get(MAPPINGS); - - Iterator rvals = mappings.iterator(); + Iterator rvals = (Iterator) getJSON(url, null, -1, MODE_ITERATOR, MAPPINGS); + if (rvals == null) + return null; while (rvals.hasNext()) { // todo check for "mapped" - JSONObject val = (JSONObject) rvals.next(); - JSONObject mapped = (JSONObject) val.get(MAPPED); + Map val = (Map) rvals.next(); + Map mapped = (Map) val.get(MAPPED); int start = Integer.parseInt(mapped.get("start").toString()); int end = Integer.parseInt(mapped.get("end").toString()); String strand = mapped.get("strand").toString(); @@ -236,37 +219,19 @@ public class EnsemblMap extends EnsemblRestClient int end, String cdsOrCdna) { URL url = null; - BufferedReader br = null; - try { String domain = new EnsemblInfo().getDomain(division); if (domain != null) { url = getIdMapUrl(domain, accession, start, end, cdsOrCdna); - br = getHttpResponse(url, null); - if (br != null) - { - return (parseIdMappingResponse(br, accession, domain)); - } + return (parseIdMappingResponse(url, accession, domain)); } return null; } catch (Throwable t) { System.out.println("Error calling " + url + ": " + t.getMessage()); return null; - } finally - { - if (br != null) - { - try - { - br.close(); - } catch (IOException e) - { - // ignore - } - } } } @@ -312,17 +277,16 @@ public class EnsemblMap extends EnsemblRestClient * @param domain * @return */ - GeneLociI parseIdMappingResponse(BufferedReader br, String accession, + @SuppressWarnings("unchecked") +GeneLociI parseIdMappingResponse(URL url, String accession, String domain) { - JSONParser jp = new JSONParser(); try { - JSONObject parsed = (JSONObject) jp.parse(br); - JSONArray mappings = (JSONArray) parsed.get(MAPPINGS); - - Iterator rvals = mappings.iterator(); + Iterator rvals = (Iterator) getJSON(url, null, -1, MODE_ITERATOR, MAPPINGS); + if (rvals == null) + return null; String assembly = null; String chromosome = null; int fromEnd = 0; @@ -330,11 +294,11 @@ public class EnsemblMap extends EnsemblRestClient while (rvals.hasNext()) { - JSONObject val = (JSONObject) rvals.next(); - JSONObject original = (JSONObject) val.get("original"); + Map val = (Map) rvals.next(); + Map original = (Map) val.get("original"); fromEnd = Integer.parseInt(original.get("end").toString()); - JSONObject mapped = (JSONObject) val.get(MAPPED); + Map mapped = (Map) val.get(MAPPED); int start = Integer.parseInt(mapped.get("start").toString()); int end = Integer.parseInt(mapped.get("end").toString()); String ass = mapped.get("assembly_name").toString(); diff --git a/src/jalview/ext/ensembl/EnsemblRestClient.java b/src/jalview/ext/ensembl/EnsemblRestClient.java index 5ebfcbf..b3113f9 100644 --- a/src/jalview/ext/ensembl/EnsemblRestClient.java +++ b/src/jalview/ext/ensembl/EnsemblRestClient.java @@ -21,7 +21,9 @@ package jalview.ext.ensembl; import jalview.bin.Cache; -import jalview.bin.Jalview; +import jalview.javascript.json.JSON; +import jalview.util.JSONUtils; +import jalview.util.Platform; import jalview.util.StringUtils; import java.io.BufferedReader; @@ -29,6 +31,7 @@ import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.io.Reader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.ProtocolException; @@ -39,9 +42,7 @@ import java.util.Map; import javax.ws.rs.HttpMethod; -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; -import org.json.simple.parser.JSONParser; +import org.json.simple.parser.ParseException; /** * Base class for Ensembl REST service clients @@ -189,7 +190,8 @@ abstract class EnsemblRestClient extends EnsemblSequenceFetcher * @see http://rest.ensembl.org/documentation/info/ping * @return */ - boolean checkEnsembl() + @SuppressWarnings("unchecked") +boolean checkEnsembl() { BufferedReader br = null; String pingUrl = getDomain() + "/info/ping" + CONTENT_TYPE_JSON; @@ -197,20 +199,17 @@ abstract class EnsemblRestClient extends EnsemblSequenceFetcher { // note this format works for both ensembl and ensemblgenomes // info/ping.json works for ensembl only (March 2016) - URL ping = new URL(pingUrl); - + + + + /* * expect {"ping":1} if ok * if ping takes more than 2 seconds to respond, treat as if unavailable */ - br = getHttpResponse(ping, null, 2 * 1000); - if (br == null) - { - // error reponse status - return false; - } - JSONParser jp = new JSONParser(); - JSONObject val = (JSONObject) jp.parse(br); + Map val = (Map) getJSON(new URL(pingUrl), null, 2 * 1000, MODE_MAP, null); + if (val == null) + return false; String pingString = val.get("ping").toString(); return pingString != null; } catch (Throwable t) @@ -233,37 +232,41 @@ abstract class EnsemblRestClient extends EnsemblSequenceFetcher return false; } - /** - * Returns a reader to a (Json) response from the Ensembl sequence endpoint. - * If the request failed the return value may be null. - * - * @param ids - * @return - * @throws IOException - */ - protected BufferedReader getSequenceReader(List ids) - throws IOException - { - URL url = getUrl(ids); - - BufferedReader reader = getHttpResponse(url, ids); - return reader; - } - - /** - * Gets a reader to the HTTP response, using the default read timeout of 5 - * minutes - * - * @param url - * @param ids - * @return - * @throws IOException - */ - protected BufferedReader getHttpResponse(URL url, List ids) - throws IOException - { - return getHttpResponse(url, ids, DEFAULT_READ_TIMEOUT); - } + + protected final static int MODE_ARRAY = 0; + protected final static int MODE_MAP = 1; + protected final static int MODE_ITERATOR = 2; + +// /** +// * Returns a reader to a (Json) response from the Ensembl sequence endpoint. +// * If the request failed the return value may be null. +// * +// * @param ids +// * @return +// * @throws IOException +// * @throws ParseException +// */ +// protected Object getSequenceJSON(List ids, int mode) +// throws IOException, ParseException +// { +// URL url = getUrl(ids); +// return getJSON(url, ids, -1, mode); +// } +// +// /** +// * Gets a reader to the HTTP response, using the default read timeout of 5 +// * minutes +// * +// * @param url +// * @param ids +// * @return +// * @throws IOException +// */ +// protected BufferedReader getHttpResponse(URL url, List ids) +// throws IOException +// { +// return getHttpResponse(url, ids, DEFAULT_READ_TIMEOUT); +// } /** * Sends the HTTP request and gets the response as a reader. Returns null if @@ -277,13 +280,19 @@ abstract class EnsemblRestClient extends EnsemblSequenceFetcher * @return * @throws IOException */ - protected BufferedReader getHttpResponse(URL url, List ids, + private BufferedReader getHttpResponse(URL url, List ids, int readTimeout) throws IOException { + if (readTimeout < 0) + readTimeout = DEFAULT_READ_TIMEOUT; int retriesLeft = MAX_RETRIES; HttpURLConnection connection = null; int responseCode = 0; - + + if (Platform.isJS()) { + JSON.setAjax(url); + } + while (retriesLeft > 0) { connection = tryConnection(url, ids, readTimeout); @@ -304,18 +313,21 @@ abstract class EnsemblRestClient extends EnsemblSequenceFetcher * note: a GET request for an invalid id returns an error code e.g. 415 * but POST request returns 200 and an empty Fasta response */ - System.err.println("Response code " + responseCode + " for " + url); + System.err.println("Response code " + responseCode);// + " for " + url); return null; } + InputStream response = connection.getInputStream(); + + if (Platform.isJS()) { + return JSON.getJSONReader(response); + } // System.out.println(getClass().getName() + " took " // + (System.currentTimeMillis() - now) + "ms to fetch"); - BufferedReader reader = null; - reader = new BufferedReader(new InputStreamReader(response, "UTF-8")); - return reader; + return new BufferedReader(new InputStreamReader(response, "UTF-8")); } /** @@ -330,6 +342,7 @@ abstract class EnsemblRestClient extends EnsemblSequenceFetcher int readTimeout) throws IOException, ProtocolException { // System.out.println(System.currentTimeMillis() + " " + url); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); /* @@ -466,26 +479,87 @@ abstract class EnsemblRestClient extends EnsemblSequenceFetcher wr.close(); } + /** + * Primary access point to parsed JSON data, including the call to retrieve and + * parsing. + * + * @param url request url; if null, getUrl(ids) will be used + * @param ids optional; may be null + * @param msDelay -1 for default delay + * @param mode map, array, or array iterator + * @param mapKey an optional key for an outer map + * @return a Map, List, Iterator, or null + * @throws IOException + * @throws ParseException + * + * @author Bob Hanson 2019 + */ + @SuppressWarnings("unchecked") + protected Object getJSON(URL url, List ids, int msDelay, int mode, String mapKey) throws IOException, ParseException { + + if (url == null) + url = getUrl(ids); + + Platform.timeCheck("EnsembleRestClient.getJSON0 " + url, Platform.TIME_MARK); + + Reader br = null; + try { + br = (url == null ? null : getHttpResponse(url, ids, msDelay)); + + Platform.timeCheck("EnsembleRestClient.getJSON1 parsing... ", Platform.TIME_MARK); + + Object ret = (br == null ? null : JSONUtils.parse(br)); + + Platform.timeCheck("EnsembleRestClient.getJSON2 ...done ", Platform.TIME_MARK); + + if (ret != null && mapKey != null) + ret = ((Map) ret).get(mapKey); + if (ret == null) + { + return null; + } + switch (mode) { + case MODE_ARRAY: + case MODE_MAP: + break; + case MODE_ITERATOR: + ret = ((List) ret).iterator(); + break; + } + return ret; + + } finally + { + if (br != null) + { + try + { + br.close(); + } catch (IOException e) + { + // ignore + } + } + } + } + + + /** * Fetches and checks Ensembl's REST version number * * @return */ + @SuppressWarnings("unchecked") private void checkEnsemblRestVersion() { EnsemblData info = domainData.get(getDomain()); - JSONParser jp = new JSONParser(); - URL url = null; try { - url = new URL(getDomain() + "/info/rest" + CONTENT_TYPE_JSON); - BufferedReader br = getHttpResponse(url, null); - if (br == null) - { - return; - } - JSONObject val = (JSONObject) jp.parse(br); + Map val = (Map) getJSON(new URL(getDomain() + "/info/rest" + CONTENT_TYPE_JSON), null, -1, MODE_MAP, null); + if (val == null) + return; String version = val.get("release").toString(); String majorVersion = version.substring(0, version.indexOf(".")); String expected = info.expectedRestVersion; @@ -539,40 +613,21 @@ abstract class EnsemblRestClient extends EnsemblSequenceFetcher * * @return */ + @SuppressWarnings("unchecked") private void checkEnsemblDataVersion() { - JSONParser jp = new JSONParser(); - URL url = null; - BufferedReader br = null; - - try - { - url = new URL(getDomain() + "/info/data" + CONTENT_TYPE_JSON); - br = getHttpResponse(url, null); - if (br != null) - { - JSONObject val = (JSONObject) jp.parse(br); - JSONArray versions = (JSONArray) val.get("releases"); - domainData.get(getDomain()).dataVersion = versions.get(0) - .toString(); - } - } catch (Throwable t) - { - System.err.println( - "Error checking Ensembl data version: " + t.getMessage()); - } finally - { - if (br != null) - { - try - { - br.close(); - } catch (IOException e) - { - // ignore - } - } - } + Map val; + try + { + val = (Map) getJSON( + new URL(getDomain() + "/info/data" + CONTENT_TYPE_JSON), null, -1, MODE_MAP, null); + if (val == null) + return; + List versions = (List) val.get("releases"); + domainData.get(getDomain()).dataVersion = versions.get(0).toString(); + } catch (Throwable e) {//could be IOException | ParseException e) { + System.err.println("Error checking Ensembl data version: " + e.getMessage()); + } } public String getEnsemblDataVersion() diff --git a/src/jalview/ext/ensembl/EnsemblSeqProxy.java b/src/jalview/ext/ensembl/EnsemblSeqProxy.java index 6be0486..7bf2563 100644 --- a/src/jalview/ext/ensembl/EnsemblSeqProxy.java +++ b/src/jalview/ext/ensembl/EnsemblSeqProxy.java @@ -40,8 +40,8 @@ import jalview.util.Comparison; import jalview.util.DBRefUtils; import jalview.util.IntRangeComparator; import jalview.util.MapList; +import jalview.util.Platform; -import java.io.BufferedReader; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; @@ -49,9 +49,8 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.Map; -import org.json.simple.JSONObject; -import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; /** @@ -258,6 +257,7 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient String accId = querySeq.getName(); try { + System.out.println("Adding protein product for " + accId); AlignmentI protein = new EnsemblProtein(getDomain()) .getSequenceRecords(accId); if (protein == null || protein.getHeight() == 0) @@ -387,13 +387,11 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient inProgress = false; throw new JalviewException("ENSEMBL Rest API not available."); } - BufferedReader br = getSequenceReader(ids); - if (br == null) - { - return alignment; - } + Platform.timeCheck("EnsemblSeqProx.fetchSeq ", Platform.TIME_MARK); - List seqs = parseSequenceJson(br); + List seqs = parseSequenceJson(ids); + if (seqs == null) + return alignment; if (seqs.isEmpty()) { @@ -446,9 +444,9 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient * @return a single jalview.datamodel.Sequence * @see http://rest.ensembl.org/documentation/info/sequence_id */ - protected List parseSequenceJson(BufferedReader br) + @SuppressWarnings("unchecked") + protected List parseSequenceJson(List ids) { - JSONParser jp = new JSONParser(); List result = new ArrayList<>(); try { @@ -456,7 +454,9 @@ public abstract class EnsemblSeqProxy extends EnsemblRestClient * for now, assumes only one sequence returned; refactor if needed * in future to handle a JSONArray with more than one */ - final JSONObject val = (JSONObject) jp.parse(br); + Map val = (Map) getJSON(null, ids, -1, MODE_MAP, null); + if (val == null) + return null; Object s = val.get("desc"); String desc = s == null ? null : s.toString(); s = val.get("id"); diff --git a/src/jalview/ext/ensembl/EnsemblSymbol.java b/src/jalview/ext/ensembl/EnsemblSymbol.java index 40d6cad..f731e94 100644 --- a/src/jalview/ext/ensembl/EnsemblSymbol.java +++ b/src/jalview/ext/ensembl/EnsemblSymbol.java @@ -20,17 +20,14 @@ */ package jalview.ext.ensembl; -import java.io.BufferedReader; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Map; -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; -import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; /** @@ -56,39 +53,18 @@ public class EnsemblSymbol extends EnsemblXref super(domain, dbName, dbVersion); } - /** - * Returns the first "id" value in gene identifier format from the JSON - * response, or null if none found - * - * @param br - * @return - * @throws IOException - */ - protected String parseSymbolResponse(BufferedReader br) throws IOException - { - JSONParser jp = new JSONParser(); - String result = null; - try - { - JSONArray responses = (JSONArray) jp.parse(br); - Iterator rvals = responses.iterator(); - while (rvals.hasNext()) - { - JSONObject val = (JSONObject) rvals.next(); - String id = val.get(JSON_ID).toString(); - String type = val.get(TYPE).toString(); - if (id != null && GENE.equals(type)) - { - result = id; - break; - } - } - } catch (ParseException e) - { - // ignore - } - return result; - } +// /** +// * Returns the first "id" value in gene identifier format from the JSON +// * response, or null if none found +// * +// * @param br +// * @return +// * @throws IOException +// */ +// @SuppressWarnings("unchecked") +//protected String parseSymbolResponse(BufferedReader br) throws IOException +// { +// } /** * Constructs the URL for the REST symbol endpoint @@ -129,6 +105,7 @@ public class EnsemblSymbol extends EnsemblXref * @param identifier * @return */ + @SuppressWarnings("unchecked") public List getGeneIds(String identifier) { List result = new ArrayList(); @@ -136,43 +113,43 @@ public class EnsemblSymbol extends EnsemblXref ids.add(identifier); String[] queries = identifier.split(getAccessionSeparator()); - BufferedReader br = null; try { for (String query : queries) { for (Species taxon : Species.getModelOrganisms()) { - URL url = getUrl(query, taxon, GENE); - if (url != null) + String geneId = null;///parseSymbolResponse(br); + try { - br = getHttpResponse(url, ids); - if (br != null) + Iterator rvals = (Iterator) getJSON(getUrl(query, taxon, GENE), ids, -1, MODE_ITERATOR, null); + if (rvals == null) + continue; + while (rvals.hasNext()) { - String geneId = parseSymbolResponse(br); - if (geneId != null && !result.contains(geneId)) + Map val = (Map) rvals.next(); + String id = val.get(JSON_ID).toString(); + String type = val.get(TYPE).toString(); + if (id != null && GENE.equals(type)) { - result.add(geneId); + geneId = id; + break; } } + } catch (ParseException e) + { + // ignore + } + + if (geneId != null && !result.contains(geneId)) + { + result.add(geneId); } } } } catch (IOException e) { // ignore - } finally - { - if (br != null) - { - try - { - br.close(); - } catch (IOException e) - { - // ignore - } - } } return result; } diff --git a/src/jalview/ext/ensembl/EnsemblXref.java b/src/jalview/ext/ensembl/EnsemblXref.java index 77768a6..eedfe97 100644 --- a/src/jalview/ext/ensembl/EnsemblXref.java +++ b/src/jalview/ext/ensembl/EnsemblXref.java @@ -23,6 +23,7 @@ package jalview.ext.ensembl; import jalview.datamodel.AlignmentI; import jalview.datamodel.DBRefEntry; import jalview.util.DBRefUtils; +import jalview.util.JSONUtils; import java.io.BufferedReader; import java.io.IOException; @@ -31,10 +32,8 @@ import java.net.URL; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Map; -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; -import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; /** @@ -99,66 +98,19 @@ class EnsemblXref extends EnsemblRestClient * an Ensembl stable identifier * @return */ + @SuppressWarnings("unchecked") public List getCrossReferences(String identifier) { List result = new ArrayList<>(); List ids = new ArrayList<>(); ids.add(identifier); - BufferedReader br = null; try { - URL url = getUrl(identifier); - if (url != null) - { - br = getHttpResponse(url, ids); - if (br != null) - { - result = parseResponse(br); - } - } - } catch (IOException e) - { - // ignore - } finally - { - if (br != null) - { - try - { - br.close(); - } catch (IOException e) - { - // ignore - } - } - } - - return result; - } - - /** - * Parses "primary_id" and "dbname" values from the JSON response and - * constructs a DBRefEntry. Returns a list of the DBRefEntry created. Note we - * don't parse "synonyms" as they appear to be either redirected or obsolete - * in Uniprot. - * - * @param br - * @return - * @throws IOException - */ - protected List parseResponse(BufferedReader br) - throws IOException - { - JSONParser jp = new JSONParser(); - List result = new ArrayList<>(); - try - { - JSONArray responses = (JSONArray) jp.parse(br); - Iterator rvals = responses.iterator(); + Iterator rvals = (Iterator) getJSON(getUrl(identifier), ids, -1, MODE_ITERATOR, null); while (rvals.hasNext()) { - JSONObject val = (JSONObject) rvals.next(); + Map val = (Map) rvals.next(); String db = val.get("dbname").toString(); String id = val.get("primary_id").toString(); if (db != null && id != null @@ -169,13 +121,30 @@ class EnsemblXref extends EnsemblRestClient result.add(dbref); } } - } catch (ParseException e) + } catch (ParseException | IOException e) { // ignore } return result; } +// /** +// * Parses "primary_id" and "dbname" values from the JSON response and +// * constructs a DBRefEntry. Returns a list of the DBRefEntry created. Note we +// * don't parse "synonyms" as they appear to be either redirected or obsolete +// * in Uniprot. +// * +// * @param br +// * @return +// * @throws IOException +// */ +// @SuppressWarnings("unchecked") +//protected List parseResponse(BufferedReader br) +// throws IOException +// { +// return result; +// } +// private String xrefVersion = "ENSEMBL:0"; /** diff --git a/src/jalview/ext/paradise/Annotate3D.java b/src/jalview/ext/paradise/Annotate3D.java index d50ad87..3b7044b 100644 --- a/src/jalview/ext/paradise/Annotate3D.java +++ b/src/jalview/ext/paradise/Annotate3D.java @@ -20,6 +20,7 @@ */ package jalview.ext.paradise; +import jalview.util.JSONUtils; import jalview.util.MessageManager; import jalview.ws.HttpClientUtils; @@ -32,11 +33,10 @@ import java.net.URL; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Map; import org.apache.http.NameValuePair; import org.apache.http.message.BasicNameValuePair; -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; import org.json.simple.parser.ContentHandler; import org.json.simple.parser.ParseException; @@ -151,14 +151,19 @@ public class Annotate3D } + /** + * @param respons + * @return + * @throws Exception + */ public static Iterator processJsonResponseFor(Reader respons) throws Exception { - org.json.simple.parser.JSONParser jp = new org.json.simple.parser.JSONParser(); + // BH 2019 never called? try { - final JSONArray responses = (JSONArray) jp.parse(respons); - final Iterator rvals = responses.iterator(); + @SuppressWarnings("unchecked") + final Iterator rvals = ((List) JSONUtils.parse(respons)).iterator(); return new Iterator() { @Override @@ -167,10 +172,11 @@ public class Annotate3D return rvals.hasNext(); } - @Override + @SuppressWarnings("unchecked") + @Override public Reader next() { - JSONObject val = (JSONObject) rvals.next(); + Map val = (Map) rvals.next(); Object sval = null; try @@ -189,9 +195,7 @@ public class Annotate3D sval = ""; } - return new StringReader((sval instanceof JSONObject) - ? ((JSONObject) sval).toString() - : sval.toString()); + return new StringReader(sval.toString()); } diff --git a/src/jalview/fts/service/pdb/PDBFTSRestClient.java b/src/jalview/fts/service/pdb/PDBFTSRestClient.java index c0ca3a5..b4e5660 100644 --- a/src/jalview/fts/service/pdb/PDBFTSRestClient.java +++ b/src/jalview/fts/service/pdb/PDBFTSRestClient.java @@ -28,6 +28,7 @@ import jalview.fts.api.FTSRestClientI; import jalview.fts.core.FTSRestClient; import jalview.fts.core.FTSRestRequest; import jalview.fts.core.FTSRestResponse; +import jalview.util.JSONUtils; import jalview.util.MessageManager; import java.net.URI; @@ -35,13 +36,11 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.Objects; import javax.ws.rs.core.MediaType; -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; -import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; import com.sun.jersey.api.client.Client; @@ -223,7 +222,8 @@ public class PDBFTSRestClient extends FTSRestClient * the JSON string containing error message from the server * @return the processed error message from the JSON string */ - public static String parseJsonExceptionString(String jsonErrorResponse) + @SuppressWarnings("unchecked") +public static String parseJsonExceptionString(String jsonErrorResponse) { StringBuilder errorMessage = new StringBuilder( "\n============= PDB Rest Client RunTime error =============\n"); @@ -250,13 +250,12 @@ public class PDBFTSRestClient extends FTSRestClient // try { - JSONParser jsonParser = new JSONParser(); - JSONObject jsonObj = (JSONObject) jsonParser.parse(jsonErrorResponse); - JSONObject errorResponse = (JSONObject) jsonObj.get("error"); + Map jsonObj = (Map) JSONUtils.parse(jsonErrorResponse); + Map errorResponse = (Map) jsonObj.get("error"); - JSONObject responseHeader = (JSONObject) jsonObj + Map responseHeader = (Map) jsonObj .get("responseHeader"); - JSONObject paramsObj = (JSONObject) responseHeader.get("params"); + Map paramsObj = (Map) responseHeader.get("params"); String status = responseHeader.get("status").toString(); String message = errorResponse.get("msg").toString(); String query = paramsObj.get("q").toString(); @@ -294,23 +293,20 @@ public class PDBFTSRestClient extends FTSRestClient List result = null; try { - JSONParser jsonParser = new JSONParser(); - JSONObject jsonObj = (JSONObject) jsonParser - .parse(pdbJsonResponseString); - - JSONObject pdbResponse = (JSONObject) jsonObj.get("response"); - String queryTime = ((JSONObject) jsonObj.get("responseHeader")) + Map jsonObj = (Map) JSONUtils.parse(pdbJsonResponseString); + Map pdbResponse = (Map) jsonObj.get("response"); + String queryTime = ((Map) jsonObj.get("responseHeader")) .get("QTime").toString(); int numFound = Integer .valueOf(pdbResponse.get("numFound").toString()); if (numFound > 0) { result = new ArrayList(); - JSONArray docs = (JSONArray) pdbResponse.get("docs"); - for (Iterator docIter = docs.iterator(); docIter + List docs = (List) pdbResponse.get("docs"); + for (Iterator docIter = docs.iterator(); docIter .hasNext();) { - JSONObject doc = docIter.next(); + Map doc = (Map) docIter.next(); result.add(getFTSData(doc, pdbRestRequest)); } searchResult.setNumberOfItemsFound(numFound); @@ -324,7 +320,7 @@ public class PDBFTSRestClient extends FTSRestClient return searchResult; } - public static FTSData getFTSData(JSONObject pdbJsonDoc, + public static FTSData getFTSData(Map pdbJsonDoc, FTSRestRequest request) { @@ -466,7 +462,8 @@ public class PDBFTSRestClient extends FTSRestClient return allDefaultDisplayedStructureDataColumns; } - public static void main(String[] args) { + @SuppressWarnings("unchecked") +public static void main(String[] args) { // check for transpiler fix associated with JSONParser yylex.java use of charAt() @@ -481,10 +478,9 @@ public class PDBFTSRestClient extends FTSRestClient int z = c ^ 5; String result = s +x + y + z; assert (result == "e103982102"); - JSONParser jsonParser = new JSONParser(); try { - JSONObject jsonObj = (JSONObject) jsonParser.parse("{\"a\":3}"); + Map jsonObj = (Map) JSONUtils.parse("{\"a\":3}"); System.out.println(jsonObj); } catch (ParseException e) { diff --git a/src/jalview/gui/Desktop.java b/src/jalview/gui/Desktop.java index 144cdd0..f1b8025 100644 --- a/src/jalview/gui/Desktop.java +++ b/src/jalview/gui/Desktop.java @@ -1748,7 +1748,7 @@ public class Desktop extends jalview.jbgui.GDesktop { File selectedFile = chooser.getSelectedFile(); setProjectFile(selectedFile); - final String choice = selectedFile.getAbsolutePath(); + String choice = selectedFile.getAbsolutePath(); Cache.setProperty("LAST_DIRECTORY", selectedFile.getParent()); new Thread(new Runnable() { @@ -1762,7 +1762,7 @@ public class Desktop extends jalview.jbgui.GDesktop } else { - new jalview.project.Jalview2XML().loadJalviewAlign(choice); + new jalview.project.Jalview2XML().loadJalviewAlign(selectedFile); } } catch (OutOfMemoryError oom) { diff --git a/src/jalview/gui/SeqPanel.java b/src/jalview/gui/SeqPanel.java index 0a66114..5e117ca 100644 --- a/src/jalview/gui/SeqPanel.java +++ b/src/jalview/gui/SeqPanel.java @@ -824,7 +824,7 @@ public class SeqPanel extends JPanel mouseOverSequence(sequence, column, pos); } - tooltipText.setLength(6); // Cuts the buffer back to + tooltipText.setLength(0); SequenceGroup[] groups = av.getAlignment().findAllGroups(sequence); if (groups != null) @@ -860,7 +860,7 @@ public class SeqPanel extends JPanel seqARep.appendFeatures(tooltipText, pos, features, this.ap.getSeqPanel().seqCanvas.fr); } - if (tooltipText.length() == 6) // + if (tooltipText.length() == 0) // { setToolTipText(null); lastTooltip = null; @@ -877,8 +877,7 @@ public class SeqPanel extends JPanel { formattedTooltipText = JvSwingUtils.wrapTooltip(true, textString); - setToolTipText(formattedTooltipText); - + setToolTipText(formattedTooltipText); lastTooltip = textString; } } diff --git a/src/jalview/io/JSONFile.java b/src/jalview/io/JSONFile.java index 7071a9d..3f1b1a7 100644 --- a/src/jalview/io/JSONFile.java +++ b/src/jalview/io/JSONFile.java @@ -53,6 +53,7 @@ import jalview.schemes.JalviewColourScheme; import jalview.schemes.ResidueColourScheme; import jalview.util.ColorUtils; import jalview.util.Format; +import jalview.util.JSONUtils; import jalview.viewmodel.seqfeatures.FeaturesDisplayed; import java.awt.Color; @@ -62,12 +63,9 @@ import java.util.ArrayList; import java.util.Hashtable; import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.Vector; -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; -import org.json.simple.parser.JSONParser; - public class JSONFile extends AlignFile implements ComplexAlignFile { private static String version = new BuildDetails().getVersion(); @@ -220,8 +218,7 @@ public class JSONFile extends AlignFile implements ComplexAlignFile jsonAlignmentPojo.getSeqGroups().add(seqGrpPojo); } } - org.json.JSONObject generatedJSon = new org.json.JSONObject( - jsonAlignmentPojo); + org.json.JSONObject generatedJSon = new org.json.JSONObject(jsonAlignmentPojo); jsonOutput = generatedJSon.toString(); return jsonOutput.replaceAll("xstart", "xStart").replaceAll("xend", "xEnd"); @@ -398,17 +395,15 @@ public class JSONFile extends AlignFile implements ComplexAlignFile { try { - JSONParser jsonParser = new JSONParser(); - JSONObject alignmentJsonObj = (JSONObject) jsonParser - .parse(jsonAlignmentString); - JSONArray seqJsonArray = (JSONArray) alignmentJsonObj.get("seqs"); - JSONArray alAnnotJsonArray = (JSONArray) alignmentJsonObj + Map alignmentJsonObj = (Map) JSONUtils.parse(jsonAlignmentString); + List seqJsonArray = (List) alignmentJsonObj.get("seqs"); + List alAnnotJsonArray = (List) alignmentJsonObj .get("alignAnnotation"); - JSONArray jsonSeqArray = (JSONArray) alignmentJsonObj + List jsonSeqArray = (List) alignmentJsonObj .get("seqFeatures"); - JSONArray seqGrpJsonArray = (JSONArray) alignmentJsonObj + List seqGrpJsonArray = (List) alignmentJsonObj .get("seqGroups"); - JSONObject jvSettingsJsonObj = (JSONObject) alignmentJsonObj + Map jvSettingsJsonObj = (Map) alignmentJsonObj .get("appSettings"); if (jvSettingsJsonObj != null) @@ -424,10 +419,9 @@ public class JSONFile extends AlignFile implements ComplexAlignFile hiddenSequences = new ArrayList<>(); seqMap = new Hashtable<>(); - for (Iterator sequenceIter = seqJsonArray - .iterator(); sequenceIter.hasNext();) + for (Iterator sequenceIter = seqJsonArray.iterator(); sequenceIter.hasNext();) { - JSONObject sequence = sequenceIter.next(); + Map sequence = (Map) sequenceIter.next(); String sequcenceString = sequence.get("seq").toString(); String sequenceName = sequence.get("name").toString(); String seqUniqueId = sequence.get("id").toString(); @@ -445,10 +439,9 @@ public class JSONFile extends AlignFile implements ComplexAlignFile parseFeatures(jsonSeqArray); - for (Iterator seqGrpIter = seqGrpJsonArray - .iterator(); seqGrpIter.hasNext();) + for (Iterator seqGrpIter = seqGrpJsonArray.iterator(); seqGrpIter.hasNext();) { - JSONObject seqGrpObj = seqGrpIter.next(); + Map seqGrpObj = (Map)seqGrpIter.next(); String grpName = seqGrpObj.get("groupName").toString(); String colourScheme = seqGrpObj.get("colourScheme").toString(); String description = (seqGrpObj.get("description") == null) ? null @@ -464,16 +457,15 @@ public class JSONFile extends AlignFile implements ComplexAlignFile int startRes = Integer .valueOf(seqGrpObj.get("startRes").toString()); int endRes = Integer.valueOf(seqGrpObj.get("endRes").toString()); - JSONArray sequenceRefs = (JSONArray) seqGrpObj.get("sequenceRefs"); + List sequenceRefs = (List) seqGrpObj.get("sequenceRefs"); ArrayList grpSeqs = new ArrayList<>(); if (sequenceRefs.size() > 0) { - Iterator seqHashIter = sequenceRefs.iterator(); + Iterator seqHashIter = sequenceRefs.iterator(); while (seqHashIter.hasNext()) { - String seqHash = seqHashIter.next(); - Sequence sequence = seqMap.get(seqHash); + Sequence sequence = seqMap.get(seqHashIter.next()); if (sequence != null) { grpSeqs.add(sequence); @@ -490,17 +482,15 @@ public class JSONFile extends AlignFile implements ComplexAlignFile } - for (Iterator alAnnotIter = alAnnotJsonArray - .iterator(); alAnnotIter.hasNext();) + for (Iterator alAnnotIter = alAnnotJsonArray.iterator(); alAnnotIter.hasNext();) { - JSONObject alAnnot = alAnnotIter.next(); - JSONArray annotJsonArray = (JSONArray) alAnnot.get("annotations"); + Map alAnnot = (Map) alAnnotIter.next(); + List annotJsonArray = (List) alAnnot.get("annotations"); Annotation[] annotations = new Annotation[annotJsonArray.size()]; int count = 0; - for (Iterator annotIter = annotJsonArray - .iterator(); annotIter.hasNext();) + for (Iterator annotIter = annotJsonArray.iterator(); annotIter.hasNext();) { - JSONObject annot = annotIter.next(); + Map annot = (Map) annotIter.next(); if (annot == null) { annotations[count] = null; @@ -536,7 +526,7 @@ public class JSONFile extends AlignFile implements ComplexAlignFile alignAnnot.graph = (alAnnot.get("graphType") == null) ? 0 : Integer.valueOf(alAnnot.get("graphType").toString()); - JSONObject diplaySettings = (JSONObject) alAnnot + Map diplaySettings = (Map) alAnnot .get("annotationSettings"); if (diplaySettings != null) { @@ -604,7 +594,7 @@ public class JSONFile extends AlignFile implements ComplexAlignFile return this; } - public void parseHiddenSeqRefsAsList(JSONObject jvSettingsJson) + public void parseHiddenSeqRefsAsList(Map jvSettingsJson) { hiddenSeqRefs = new ArrayList<>(); String hiddenSeqs = (String) jvSettingsJson.get("hiddenSeqs"); @@ -618,7 +608,7 @@ public class JSONFile extends AlignFile implements ComplexAlignFile } } - public void parseHiddenCols(JSONObject jvSettingsJson) + public void parseHiddenCols(Map jvSettingsJson) { String hiddenCols = (String) jvSettingsJson.get("hiddenCols"); if (hiddenCols != null && !hiddenCols.isEmpty()) @@ -635,15 +625,15 @@ public class JSONFile extends AlignFile implements ComplexAlignFile } @SuppressWarnings("unchecked") - private void parseFeatures(JSONArray jsonSeqFeatures) + private void parseFeatures(List jsonSeqFeatures) { if (jsonSeqFeatures != null) { displayedFeatures = new FeaturesDisplayed(); - for (Iterator seqFeatureItr = jsonSeqFeatures + for (Iterator seqFeatureItr = jsonSeqFeatures .iterator(); seqFeatureItr.hasNext();) { - JSONObject jsonFeature = seqFeatureItr.next(); + Map jsonFeature = (Map) seqFeatureItr.next(); Long begin = (Long) jsonFeature.get("xStart"); Long end = (Long) jsonFeature.get("xEnd"); String type = (String) jsonFeature.get("type"); @@ -665,14 +655,13 @@ public class JSONFile extends AlignFile implements ComplexAlignFile SequenceFeature sequenceFeature = new SequenceFeature(type, description, featureBegin, featureEnd, score, featureGrp); - JSONArray linksJsonArray = (JSONArray) jsonFeature.get("links"); + List linksJsonArray = (List) jsonFeature.get("links"); if (linksJsonArray != null && linksJsonArray.size() > 0) { - Iterator linkList = linksJsonArray.iterator(); + Iterator linkList = linksJsonArray.iterator(); while (linkList.hasNext()) { - String link = linkList.next(); - sequenceFeature.addLink(link); + sequenceFeature.addLink((String) linkList.next()); } } diff --git a/src/jalview/javascript/json/JSON.java b/src/jalview/javascript/json/JSON.java new file mode 100644 index 0000000..6cb7cb5 --- /dev/null +++ b/src/jalview/javascript/json/JSON.java @@ -0,0 +1,255 @@ +package jalview.javascript.json; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.Reader; +import java.net.URL; +import java.util.ArrayList; +import java.util.Hashtable; +import java.util.Iterator; +import java.util.List; + +/** + * + * A rudimentary JSON converter/iterator that uses the browser's native AJAX + * json data type delivery mechanism. + * + * Arrays are delivered as ArrayList where Object may be Boolean, + * String, Long, Double, ArrayList, and "Map-like object". + * + * For speed, the maps returned are just JavaScript maps with a few added + * methods for extracting data. [get(), contains(), probably should add keySet, + * valueSet, and entrySet]. + * + * @author hansonr Bob Hanson St. Olaf College 1/24/2019 + * + */ +public class JSON { + + /** + * A privately initialized class that allows us to do the object + * conversion from JavaScript to "Java" on the fly. + * + * @author hansonr + * + */ + @SuppressWarnings("serial") + public static class JSONList extends ArrayList { + + + static ListIterator iter; + + JSONList(Object[] a) { + super(); + /** + * @j2sNative + * + * this.elementData = a; + * this.size = a.length; + */ + } + + public Object get(int i) { + Object o = null; + /** + * @j2sNative + * + * o = this.elementData[i]; + * + */ + return JSON.toObject(o); + } + + + @Override + public Iterator iterator() { + if (iter == null) + iter = new ListIterator(); + iter.pt = 0; + iter.list = this; + return iter; + } + + + /** + * + * @author hansonr + * + */ + public static class ListIterator implements Iterator { + + ListIterator() {/* restricted */} + + public JSONList list; + int pt = -1; + + @Override + public boolean hasNext() { + @SuppressWarnings("unused") + boolean more; + /** + * @j2sNative + * + * more = this.list && (this.pt < this.list.size); + * if (!more) { + * this.list = null; + * this.pt = -1; + * } + * return more; + */ + { + return pt < list.size(); + } + } + + @Override + public Object next() { + Object o = null; + /** + * @j2sNative o = this.list.elementData[this.pt++]; + * + */ + + return toObject(o); + } + } + } + + /** + * A simple encoding of sequential key/value pairs for a jQuery.ajax call. If + * the first key is "url" and the second is an object, then the ajax object is + * attached to that url as well, just for transport purposes within the system. + * + * @param keyValues assumed to be simple String,Object pairs. String objects + * will be surrounded by double quotes. + */ + public static Object setAjax(Object... keyValues) { + Object ajax = null; + /** + * @j2sNative ajax = {}; if (keyValues[0] == "url" && typeof keyValues[1] == + * "object") { ajax = keyValues[1].ajax || (keyValues[1].ajax = ajax); } + * + * for (var i = 0; i < keyValues.length;) { var key = keyValues[i++]; + * var val = keyValues[i++]; ajax[key] = val; } + */ + return ajax; + } + + public static void setAjax(URL url) { + setAjax("url", url, "dataType", "json", "async", Boolean.FALSE); + } + + public static BufferedReader getJSONReader(InputStream is) { + return new JSONReader(is); + } + + public static class JSONReader extends BufferedReader { + Object data; + + public JSONReader(InputStream in) { + super((Reader) (Object) in); + // could be buffered + data = toObject(/** @j2sNative $in._ajaxData || $in.$in && $in.$in._ajaxData || */ null); + + } + + public JSONReader(Reader in) { + super(in); + // could be buffered + data = toObject(/** @j2sNative $in._ajaxData || $in.$in && $in.$in._ajaxData || */ null); + } + + public JSONReader(String json) { + super((Reader) (Object) ""); + data = toObject(/** @j2sNative swingjs.JSUtil.parseJSON$S(json)|| */null); + } + + @Override + public void close() { + data = null; + try { + super.close(); + } catch (IOException e) { + // ignore, especially if we set $in to a string! + } + } + } + + @SuppressWarnings("resource") + public static Object parse(String json) { + return new JSONReader(json).data; + } + + public static Object parse(Reader br) { + return ((JSONReader) br).data; + } + + /** + * Get an object in the JSON associative array. + * @param br + * @param key + * @return + */ + @SuppressWarnings("unused") + public static Object toObject(Object o) { + if (o == null) + return null; + String type = /** @j2sNative (typeof o) + */""; + switch (type) { + case "string": + return o; + case "number": + double n = 0; + if (/** @j2sNative (n = o) == (n|0) || */false) + return Long.valueOf((long) n); + return Double.valueOf(n); + case "boolean": + return Boolean.valueOf(/** @j2sNative !!o || */false); + case "object": + boolean isArray = /** @j2sNative o instanceof Array || */false; + if (isArray) { + return toList((Object[]) o); + } + return toMap(o); + default: + return o; + } + } + + Object get(String key) { + /** + * @j2sNative + * + * return C$.toObject$O(this[key]); + */ + { + return null; + } + } + boolean contains(String key) { + /** + * @j2sNative + * + * return typeof this[key] != "undefined" + */ + { + return false; + } + } + + @SuppressWarnings("unchecked") + private static Hashtable toMap(Object map) { + /** + * @j2sNative + * map.get$O = C$.prototype.get$S; + * map.contains$O = C$.prototype.contains$S; + */ + return (Hashtable) map; + } + + private static List toList(Object[] a) { + return new JSONList(a); + } + +} diff --git a/src/jalview/json/binding/biojs/BioJSRepositoryPojo.java b/src/jalview/json/binding/biojs/BioJSRepositoryPojo.java index 62fb20a..ad50305 100644 --- a/src/jalview/json/binding/biojs/BioJSRepositoryPojo.java +++ b/src/jalview/json/binding/biojs/BioJSRepositoryPojo.java @@ -20,14 +20,15 @@ */ package jalview.json.binding.biojs; +import jalview.util.JSONUtils; + import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; +import java.util.List; +import java.util.Map; import java.util.Objects; -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; -import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; public class BioJSRepositoryPojo @@ -59,17 +60,16 @@ public class BioJSRepositoryPojo { Objects.requireNonNull(jsonString, "Supplied jsonString must not be null"); - JSONParser jsonParser = new JSONParser(); - JSONObject JsonObj = (JSONObject) jsonParser.parse(jsonString); + Map JsonObj = (Map) JSONUtils.parse(jsonString); this.description = (String) JsonObj.get("description"); this.latestReleaseVersion = (String) JsonObj .get("latestReleaseVersion"); - JSONArray repositoriesJsonArray = (JSONArray) JsonObj.get("releases"); - for (Iterator repoIter = repositoriesJsonArray + List repositoriesJsonArray = (List) JsonObj.get("releases"); + for (Iterator repoIter = repositoriesJsonArray .iterator(); repoIter.hasNext();) { - JSONObject repoObj = repoIter.next(); + Map repoObj = (Map) repoIter.next(); BioJSReleasePojo repo = new BioJSReleasePojo(); repo.setType((String) repoObj.get("type")); repo.setUrl((String) repoObj.get("url")); diff --git a/src/jalview/urls/IdentifiersUrlProvider.java b/src/jalview/urls/IdentifiersUrlProvider.java index f32e590..0dab719 100644 --- a/src/jalview/urls/IdentifiersUrlProvider.java +++ b/src/jalview/urls/IdentifiersUrlProvider.java @@ -25,20 +25,18 @@ import static jalview.util.UrlConstants.DB_ACCESSION; import static jalview.util.UrlConstants.DELIM; import static jalview.util.UrlConstants.SEP; +import jalview.util.JSONUtils; import jalview.util.UrlLink; -import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.StringTokenizer; -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; -import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; /** @@ -76,19 +74,20 @@ public class IdentifiersUrlProvider extends UrlProviderImpl * name of identifiers.org download file * @return hashmap of identifiers.org data, keyed by MIRIAM id */ - private HashMap readIdentifiers(String idFileName) + @SuppressWarnings("unchecked") +private HashMap readIdentifiers(String idFileName) { - JSONParser parser = new JSONParser(); - // identifiers.org data HashMap idData = new HashMap(); String errorMessage = null; try { + // NOTE: THIS WILL FAIL IN SWINGJS BECAUSE IT INVOLVES A FILE READER + FileReader reader = new FileReader(idFileName); String key = ""; - JSONObject obj = (JSONObject) parser.parse(reader); + Map obj = (Map) JSONUtils.parse(reader); if (obj.containsKey(ID_ORG_KEY)) { key = ID_ORG_KEY; @@ -104,12 +103,12 @@ public class IdentifiersUrlProvider extends UrlProviderImpl return idData; } - JSONArray jsonarray = (JSONArray) obj.get(key); + List jsonarray = (List) obj.get(key); // loop over each entry in JSON array and build HashMap entry for (int i = 0; i < jsonarray.size(); i++) { - JSONObject item = (JSONObject) jsonarray.get(i); + Map item = (Map) jsonarray.get(i); String url = (String) item.get("url") + "/" + DELIM + DB_ACCESSION + DELIM; diff --git a/src/jalview/util/JSONUtils.java b/src/jalview/util/JSONUtils.java index cdfc88e..f91275d 100644 --- a/src/jalview/util/JSONUtils.java +++ b/src/jalview/util/JSONUtils.java @@ -1,6 +1,14 @@ package jalview.util; -import org.json.simple.JSONArray; +import jalview.javascript.json.JSON; + +import java.io.FileReader; +import java.io.IOException; +import java.io.Reader; +import java.util.List; + +import org.json.simple.parser.JSONParser; +import org.json.simple.parser.ParseException; public class JSONUtils { @@ -12,23 +20,68 @@ public class JSONUtils * @param jsonArray * @return */ - public static String arrayToList(JSONArray jsonArray) + public static String arrayToStringList(List jsonArray) { - if (jsonArray == null) + int n; + + if (jsonArray == null || (n = jsonArray.size()) == 0) { return null; } - StringBuilder sb = new StringBuilder(); - for (int i = 0; i < jsonArray.size(); i++) + /** + * @j2sNative + * + * return jsonArray.elementData.slice(0, n).join(","); + */ { - if (i > 0) - { - sb.append(","); - } - sb.append(jsonArray.get(i).toString()); + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < n; i++) + { + if (i > 0) + { + sb.append(","); + } + sb.append(jsonArray.get(i).toString()); + } + return sb.toString(); } - return sb.length() == 0 ? null : sb.toString(); + } + + /** + * The method all JSON parsing must go through for JavaScript. + * @param r a BufferedReader or a javascript.json.JSON.JSONReader + * @return + * @throws IOException + * @throws ParseException + */ + public static Object parse(Reader r) throws IOException, ParseException + { + // Using a file reader is not currently supported in SwingJS JavaScript + + if (r == null) + return null; +// +// Platform.timeCheck("JSONUtils.parse0 ", Platform.TIME_MARK); + + Object ret; + if (Platform.isJS()) + { + if (r instanceof FileReader) + { + throw new IOException("StringJS does not support FileReader parsing for JSON -- but it could..."); + } + return JSON.parse(r); + } else { + ret = new JSONParser().parse(r); + } +// Platform.timeCheck("JSONUtils.parse1 ", Platform.TIME_MARK); + return ret; + } + + public static Object parse(String json) throws ParseException + { + return (Platform.isJS() ? JSON.parse(json) : new JSONParser().parse(json)); } } diff --git a/src/jalview/util/Platform.java b/src/jalview/util/Platform.java index 0d7724b..1f03f88 100644 --- a/src/jalview/util/Platform.java +++ b/src/jalview/util/Platform.java @@ -198,4 +198,26 @@ public class Platform { return !isMac(); } + + public final static int TIME_RESET = 0; + public final static int TIME_MARK = 1; + + public static long time, mark; + + public static void timeCheck(String msg, int mode) { + switch (mode) { + case TIME_RESET: + time = mark = System.currentTimeMillis(); + System.err.println("Platform: timer reset\t\t\t" + msg); + break; + case TIME_MARK: + long t = System.currentTimeMillis(); + if (time == 0) + time = mark = t; + System.err.println("Platform: timer mark\t" + ((t - time)/1000f) + "\t" + ((t - mark)/1000f) + "\t" + msg); + mark = t; + break; + } + } + } diff --git a/swingjs/SwingJS-site.zip b/swingjs/SwingJS-site.zip index 8dcf966..9189041 100644 Binary files a/swingjs/SwingJS-site.zip and b/swingjs/SwingJS-site.zip differ diff --git a/swingjs/timestamp b/swingjs/timestamp index 6f1aad3..c5dae25 100644 --- a/swingjs/timestamp +++ b/swingjs/timestamp @@ -1 +1 @@ -20190122081203 +20190125031511 diff --git a/swingjs/ver/3.2.4/SwingJS-site.zip b/swingjs/ver/3.2.4/SwingJS-site.zip index 8dcf966..9189041 100644 Binary files a/swingjs/ver/3.2.4/SwingJS-site.zip and b/swingjs/ver/3.2.4/SwingJS-site.zip differ diff --git a/swingjs/ver/3.2.4/timestamp b/swingjs/ver/3.2.4/timestamp index 6f1aad3..c5dae25 100644 --- a/swingjs/ver/3.2.4/timestamp +++ b/swingjs/ver/3.2.4/timestamp @@ -1 +1 @@ -20190122081203 +20190125031511