On Keeping an Organized e-Library

A few months ago, I had around 600 journal articles and 100 books scattered throughout multiple folders in my computer. The pdfs were named with the last name of the most relevant author and some arbitrarily chosen keywords from the title. It goes without saying that looking for relevant information in this mess I called library was a painful process. Even deciding where to place a given pdf was difficult as the contents could be related to multiple, somewhat independent topics; for instance, a paper on classifying EEG signals for brain computer interfaces could easily be put under a machine learning, signal processing, or BCI folder. Once a paper was added to my library folder, I would rarely revisit it again; in fact, it was easier sometimes to just google some keywords to find the paper again.

One day, my coworker M introduced me to Mendeley, a program he used to maintain an organized paper library. I knew that software tools for this type of problem existed, but I never bothered to try some of them to find the best fit. In previous years, I had used Zotero to assemble a Bibtex bibliography file from some pdfs; I even tried to use it for general file organization during my last co-op, but I stopped out of laziness since adding papers from the browser was a little tedious. At first, I was skeptical, but after seeing M’s workflow and trying it on my own, I have to say that Mendeley changed the way I work for the better; good-bye poorly name papers inside messy folder structures!

I use Mendeley for mainly three tasks:

  1. Automatically rename papers at download time
  2. Organize papers by topic, field, project, etc
  3. Share reading lists among individuals or groups I work with

These features come in handy at work. At my lab, we have a reading requirement of 2-5 papers per week, which can be a little daunting at first; however, with Mendeley, adding and organizing papers in my library is fairly straightforward. By keeping all of my papers in a single Dropbox folder that is managed by Mendeley, I can even read my books/articles on my tablet! Android has an app called Referey that uses the database file from Mendeley to link the document entries to their respective pdfs stored in the tablet. Setting up both Mendeley and Referey is not complicated; the steps are outlined below.

Setting Mendeley to automatically rename files for you

Unfortunately, publishers name articles following an arbitrary and obscure notation; for instance, IEEE Xplore named a paper on single trial EEG classification as “06739167.pdf”. Even worse, none of the publishers agree on a common naming format. Mendeley solves this issue by automatically extracting relevant metadata from files and renaming according to standardized convention. To do this (assuming you don’t already have a Mendeley account):

  1. Create a Mendeley account at http://www.mendeley.com
  2. Download and install the desktop application
  3. Open your new Mendeley application and sign in using your credentials
  4. Go to Tools and then Options
  5. Go to the File Organizer tab and check the following options:
    • Organize my files. Browse to a folder where you want to keep your papers
    • Rename document files. Use the “author – paper – year” format
  6. Go to the Watched Folder tab
  7. Select the same folder from step 5.a
  8. Click on Apply and Ok

Now, whenever you download a new paper, put it in the watched folder. Mendeley will attempt to extract the metadata from the pdf and will rename it accordingly. If by any reason this fails, you can manually edit the metadata and Mendeley will rename the file for you once you are done. The metadata can be accessed on the right pane of Mendeley when you select the paper in the browser.

Organizing papers:

Mendeley has two main ways to keep your papers organized: tags and subfolders. I believe that tags are superior since papers can have multiple tags but can only belong to a single folder. For example, a SSVEP classification paper could be tagged as “BCI”, “SSVEP”, and “Machine Learning.” Here is how you do the tagging:

  1. Select the paper in the Mendeley browser
  2. In the right pane, click on the Tags textbox
  3. Type the tag name you want. If it already exist, an autocomplete box will appear
  4. Separate tags with a semicolon

To search for papers with multiple tags, use the Filter by My tags on the panel on your lower left and ctrl+click on the desired tags. Alternatively, you can use the search box by typing “tag: tagname” multiple times.

Sharing reading lists with your coworkers

You can share your new downloaded papers with your coworkers by sending the citation details as an email or as group contribution

  • Sending paper details as an email:
    1. Right click on the paper entry in the Mendeley paper browser
    2. Select send as email
    3. Fill in the details and send it
  • Contributing paper to a group assuming you have been invited to it already:
    1. Select the papers you want to share
    2. Drag and drop them on the group (located on the Groups section in the left top panel)
    3. Click on the Sync button
  • If you want to add papers from a group
    1. Go to the group page (click on group name located on the Groups section in the left top panel)
    2. Drag and drop the paper to your library
    3. Since the pdf is not shared, they may have to search for it themselves. You could always have a shared folder somewhere as well.
    4. Mendeley will automatically link the citation from step 1 to the new pdf added. If not click “tools > check for duplicates”
    5. You may have to manually edit the documents metadata if the extraction and linking fails

You can share your notes and highlights only if they were added in the group entry of the document; the annotations won’t sync if you added them to your personal document entry. This makes sense to me because I may jot down some notes that may unnecessarily clutter the paper for the rest of the group.

Setting up Referey:

Referey is an Android app that uses the Mendeley database file to pair the pdfs stored in the tablet with the respective document entries; this assumes that the pdfs are named the same both in your desktop and in your table (not a problem with Dropbox)

  1. Synchronize your libary folder with your tablet. I use Dropsync for this
  2. Find the Mendeley database file in: C:\Users\user\AppData\Local\Mendeley Ltd\Mendeley Desktop. It should be a file with this format: your_email@www.mendeley.com.sqlite
  3. Copy the file to your tablet. I do this with a Windows task scheduled nightly that copies this file to a Dropbox folder
  4. In the Referey app, set the database path to the full location of the file you just copied. It should be something like: /storage/sdcard0/…
  5. In addition, set the PDF folder path to the location of your pdfs. It should be something like: /storage/sdcard0/…

If everything is set up correctly, you should now be able to browse your pdf library from Referey.


Meal Extraordinaire of the Week: Lasagna!

To add non-engineering related activities to my life, I have decided to cook (or grill, bake, etc … you know what I mean) one out-of-ordinary meal every week, hence the name; and by meal, I mean either a dessert or something that can be eaten as lunch or dinner. Last week’s meal of the week was cheesecake, but I did not take any pictures to show you as my blog didn’t exist back then. This week’s extraordinary meal is one of my favorite dishes … lasagna! I know that everyone is a bit biased in regards to their own mother’s cooking, but I assure you: my mom’s lasagna is the best. First, she does not use ricotta cheese. Personally, I’ve never been much of a fan of ricotta cheese, which is why I don’t like many of the lasagna recipes out there. Second, my mom adds bechamel (white) sauce in addition to the usual meat and tomato sauce. Third, she adds ham to each layer, giving a distinct flavor to each bite. And of course, last but not least, she puts all her love when assembling the lasagna. The last statement is corny, I know, but not untrue. And to put it in perspective, as a teenager, I could easily eat half a tray on my own as either lunch or dinner (even breakfast); that’s how much I liked it.

I never attempted to make lasagna on my own, until I found a recipe online that resembled my mom’s recipe; this recipe was posted in Mel’s Kitchen Cafe. My girlfriend K introduced me to Mel’s blog with a great burrito recipe (link). Mel’s delicious recipes and detailed instructions have turned her blog into another one of my favorites. You will find that most of my weekly meals will come from her. I can’t thank K enough for finding this online source of goodness.

After perusing Mel’s recipe index, I found this lasagna recipe. The main difference between Mel’s and my mother’s recipe is how the bechamel is prepared. Maybe one day, if I am worthy enough, I will try my mom’s method. In the meantime, as I learn, I will continue using this recipe; nevertheless, this lasagna is still really close in flavor to that of my mother’s. The only problem is that, since I am not a teenager anymore, I cannot eat half a tray. I need to maintain some degree of portion control.

I took a couple of pictures to show you. Here is the assembled lasagna before the putting it in the oven:

Assembling Lasagna

Here is the lasagna after cutting it into 8 portions:

Lasagna is ready to be eaten!

Surprisingly, each portion is about 600 Calories; I expected more, but you won’t see me complaining.

I didn’t have to modify anything from the original recipe except for four things. First, I used ground beef instead of turkey. Second, I didn’t use mushrooms. Third, I added ham in between layers. And fourth, I had to change the logistics of the tomato sauce as I do not own a handheld immersion blender. Since I have a regular blender with a glass jar, I had to combine the hot vegetable mixture with the tomato sauce and the diced tomatoes. Other than these four things, I followed the recipe to the letter.

The lasagna came out great. The noodles were perfectly moist yet firm to the bite, and the meat sauce combined perfectly with the bechamel, yielding a flavor experience out of this earth; I’ll enjoy this for the next couple of days. Stay tuned for my next Meal Extraordinaire of the Week!

On Measurements and Prior Knowledge

The other day, I found a fun little post in one of my favorite blogs (Nuit Blanche). Miki Lustig, a professor working on applying Compressed Sensing (CS) to fast MRI, drew a set of XKCD-like comics explaining the basic principles of CS in MRI. You can check out the comics here (the drawing of David Donoho is cute and funny, in my opinion).

I found one of the diagrams shown in the comics to be particularly interesting:
Knowledge vs Measurements

This graph shows a concept that may seem remarkably obvious: the more you know about a system/signal/event, the less measurements you need to make. Isn’t that intuitive?

Let’s try to dig a little deeper here. To put things in perspective, there is a well-studied theorem in signal processing called the Shannon-Nyquist criterion, which states that if a signal is bandlimited (finite support in the frequency domain), then it can be perfectly reconstructed from samples taken at a rate greater than at least twice the bandwidth [1]. As the diagram above points out, we don’t need to sample higher than double the highest frequency (plus some factor to account for safety) for lowpass signals. From the engineer’s point of view, this is great as you can tailor your measurement system to the signal of interest; however, there are cases in which Nyquist sample rates may still be too high and expensive to implement.

This is where more knowledge comes into play. CS theory says that if the signal is compressible (as the majority of interesting signals are), then you can, in a sense, measure the compressed data directly thus relaxing the acquisition requirements [2]. For instance, it has been shown that the data collection process in MRI can be significantly sped up without a loss in image quality if the sensing and reconstruction is performed with the tools developed by CS. The compressiblity (signal sparsity in some domain) prior knowledge allows us to reduce the number of measurements needed.

How do we acquire this magical prior knowledge? How do we know this knowledge is correct or even useful? I think that is the engineer’s job: to develop models and design systems in order to meet some requirements. Maybe the diagram needs another axis that shows how wrong the knowledge and how many measurement are needed to compensate for such mistake; however, two axes are enough to get the point across. As an engineer, this prior knowledge and modeling business comes into play very frequently. In Bayesian classification for example, you can incorporate your knowledge in the form of a prior distribution over your measurements to improve your metrics. In CT reconstruction, it has been shown that model based approaches for reconstruction allow the reduction of x-ray dose without sacrificing image quality. I could name many other examples, but I think you get my point; it is the engineer’s task to carefully incorporate knowledge into the system design. Avoiding this could lead to costly or maybe non-realizable systems.

This post might have felt almost like I was rambling without a particular direction, but I thought it would be cool to share this comic as well as my thoughts about it. I am sure that drawing this diagram on the whiteboard in the kitchen area of a research lab would spark interesting discussions at lunch. I think this was a complicated post, so I promise that the next one won’t be engineering related

[1] This discovery has made the digital revolution possible by allowing the implementation of signal processing techniques on computers or embedded devices
[2] I am brushing the context and limitations of this theory aside for this post; in reality, the comparison is a bit unfair as the assumptions between Nyquist and compressive sampling are different. For example, Nyquist deals with infinitely long, continuous signals, whereas compressive sampling has been developed for finite dimensional vectors

Testing Latex

I was thrilled to find that WordPress supports Latex. For those of you who don’t know, Latex is a document typesetting system that, among many features, allows quick mathematical writing.  As an example, I’ll write up the Fourier transform equation, a remarkable tool in the EE’s arsenal1 that decomposes a signal into its representation in the frequency domain (land of sines and cosines). To put it more simply, think of it as trying to determine the ingredients of an already prepared meal; taking the Fourier transform of your lunch will yield its individual components in the ingredient domain. Pretty neat, huh?

So here it goes:

\displaystyle X(f) = \int^\infty_{-\infty} x(t) e^{-j2\pi f t } \, dt

It renders beautifully! I sometimes think how amazing it is that such little formula can have so many applications. The Fourier transform is used extensively in digital communications, circuit design, medical imaging, etc; it even allows us to model the physiology of our hearing! Whatever I write here won’t do it enough justice. I think the Fourier transform deserves its own post.

[1] This could a good name for regular thematic postings, as I can write about useful tools I’ve learned or would like to learn

Introduction to my blog

Hi! My name is Fernando. I am an electrical engineering PhD student focused on brain computer interfaces (BCI). More specifically, my lab’s objective is to improve the speed and reduce the inter-subject variability of BCIs. We currently have multiple applications in the works such as brain controlled wheelchair navigation, spelling interfaces with language models, etc. I am interested in machine learning, statistical signal processing, user interfaces, medical imaging, algorithm design and implementation, optimization, and parallel computing.  Besides working , I enjoy cooking, eating delicious food (kind of obvious as I don’t know anyone who likes unsavory food), action-packed movies, fantasy and philosophical books, playing the piano, and watching competitive Starcraft 2. I sometimes practice mindfulness-based meditation, although I should do it more consistently.

I plan to keep this blog diverse; one day I’ll write about math and engineering, but the following post might be about cooking. However, I do want to come up with at least one periodic topic for my posts. For example, I could do a bi-monthly review of an interesting paper I read or useful concept I learned. I’ll write about it when I decide.  One last thing, this blog will be updated regularly between 2 to 3 times a week, unless something comes up. I hope you enjoy reading my posts!