The ENVI Analytics Symposium is happening again August 23-24 this year in Boulder, CO:

The 2016 ENVI Analytics Symposium (EAS) continues its exploration of remote sensing and Big Data analytics around the theme of geospatial signatures to analytical insights.

Though I don’t use ENVI at all, remote sensing is still interesting to me and I would be interested in how this community is using “Big Data analytics”.

This is a great idea to visualize the punctuation in novels:

Inspired by a series of posters, I wondered what did my favorite books look like without words. Can you tell them apart or are they all a-mush? In fact, they can be quite distinct.

Robert Simmon redesigns a graphic:

Creating scientific graphics can be difficult: most scientists and engineers lack training in design, deadlines are tight, compromises must be reached between team members and management, and the available tools may be limited. Fortunately, many design guidelines are simple and easy to execute, which I’ll show by re-designing the following graph, originally presented by NASA at the 2015 American Geophysical Union fall meeting.

I would not have removed the inset map of the region because I thought it added useful visual context to the exact lat/lon location in the subtitle, but maybe that is just my unfamiliarity with that area. I also wondered what the graphic would look like if it used a Brewer diverging color table for the colors in each band instead of red for all positive values and blue for all negative values.

Explained Visually provides interactive, visual explanations of mathematical processes commonly used in science, such as eigenvectors/eigenvalues, least squares, and principal component analysis. The ability to interactively change the values in the examples and have the new result instantly displayed greatly helps with understanding.

Explained Visually is inspired by Bret Victor’s Explorable Explanations.

The recent article about how to investigate object code got me thinking about the various methods I use to find out about an object/class.

The code in the article, for the example of an object of class IDLgrColorBar, prints:

IDL> ab_obj_info, 'idlgrcolorbar'
Class: IDLGRCOLORBAR
Superclass: IDLGRMODEL
Superclass: IDLGRCONTAINER
Superclass: IDL_CONTAINER
Superclass: IDLGRCOMPONENT
Superclass: IDLITCOMPONENT

as well as some HTML information listing the methods of the objects.

One of the most useful techniques for me is one of my library routines to find the class hierarchy of an object:

IDL> mg_class_hierarchy, idlgrcolorbar()
IDLGRCOLORBAR
  IDLGRMODEL
    IDLGRCONTAINER
      IDL_CONTAINER
      IDLGRCOMPONENT
        IDLITCOMPONENT

This gives the same top-level information with a bit more detail (IDLgrContainer inherits from both IDL_Container and IDLitComponent), but does not provide any listing of the methods. If you know the name of the method, you can use another of my library routines to find out about it’s arguments:

IDL> man, 'idlgrcolorbar::computedimensions'
Filename: /Applications/exelis/idl85/lib/idlgrcolorbar__define.pro
result = idlgrcolorbar::computedimensions(self, osrcdest, PATH=path)

So I added a METHODS keyword to print out the methods of each class:

IDL> mg_class_hierarchy, 'idlgrcolorbar', /methods
IDLGRCOLORBAR
    result = idlgrcolorbar::computedimensions()
    result = idlgrcolorbar::init()
    idlgrcolorbar::calcsize
    idlgrcolorbar::cleanup
    idlgrcolorbar::getproperty
    idlgrcolorbar::setproperty
  IDLGRMODEL
      result = idlgrmodel::getctm()
      result = idlgrmodel::getxyzrange()
      result = idlgrmodel::init()
      idlgrmodel::add
      ...

IDLdoc produces these docs, which list the methods of IDLgrColorBar and the hierarchy of superclasses along with a lot of other information including comments that might be in the code headers, but not the methods inherited from those superclasses.

A security update for IDL and ENVI license servers was released today by Harris Geospatial Solutions:

The security vulnerability is limited to computers running a license manager server and should not be an issue when the license server components are only exposed on a trusted network.

If you run an outside facing IDL or ENVI license server, it sounds like you need to update immediately.

Python has the Zen of Python as a guiding philosophy. I think IDL would have something a bit more practical. This is my take on IDL’s philosophy:

The Tao of IDL

Interactive is better than compiled.
Fast to write is better than fast to execute.
But vectorized is better than loops;
WHERE is better than FOR/IF.
There are more uses of histograms than first meet the eye.

A picture is worth at least ten thousand bytes of data,
A million if its 3D and you can rotate it interactively.
Whether direct or function, graphics are easy to create
But the possibilities are endless.

Backwards compatibility is great!
But it doesn’t mean you should index arrays with parentheses forever.
IDL might not have started with objects,
But it has them now, so use them!

There are many file formats and each is the most important to someone.
If you can’t read the data, you can’t analyze it.

Keywords are a great idea — especially
If your parameter has a useful default
Or is an optional output.

By the way, the Bad habits posting is very funny and relevant to Fortran/IDL users.

Noah Lorang argues that data scientists mostly just do arithmetic:

The dirty little secret of the ongoing “data science” boom is that most of what people talk about as being data science isn’t what businesses actually need. Businesses need accurate and actionable information to help them make decisions about how they spend their time and resources. There is a very small subset of business problems that are best solved by machine learning; most of them just need good data and an understanding of what it means that is best gained using simple methods.

This rings true for me in terms of the amount of time I spend doing various tasks during a typical day. I would estimate that 90-95% of my time is spent doing basic shell scripting, writing/modifying IDL code to do basic file and array manipulations, writing IDL GUI applications, etc. But the 5-10% of the other time is still important! The mundane tasks would be pointless without choosing the correct optimization technique and verifying it works. It might be that improving the performance of some section of code makes the difference between keeping up with incoming data or not and that might mean using some “hardcore” technique such as writing the section in C, using a GPU, or making use of some multicore technology.

via FlowingData

I’ve found this translation guide for writing and understanding Python code quite useful. I think it should work if you are familiar with Python and wanting to read/write IDL code also.

The 2016 Vizzies Winners have been announced, for example this awesome illustration Weedy seadragon life cycle by Stephanie Rozzo:

During her time volunteering at the Monterey Bay Aquarium, freelance science illustrator Stephanie Rozzo helped clean the seahorse exhibit. Over time, she found herself enchanted by their colors and movements. Rozzo knew she had her next illustration subject when one male began carrying eggs (as males of the species do).

She rendered an expectant pair of seadragons — native Australian fish closely related to seahorses — in acrylic paint with their seaweed habitat in graphite. The work depicts the species’ life stages from embryonic fry through adulthood.

older posts »