Pandas merge or sum values in rows with the same index

When the values are numeric and apply operators:

df.groupby(level=0).sum()
df.groupby(df.index).sum()
df[specifiedColumn].groupby(level=0).sum()

When the values are numeric and apply functions:

# Common usage, merging values
df[1].groupby(level=0).apply(lambda xList: ';'.join(list([x for x in xList])))

Source:
https://pandas.pydata.org/pandas-docs/version/0.22/generated/pandas.core.groupby.GroupBy.apply.html
https://pandas.pydata.org/docs/reference/api/pandas.core.groupby.GroupBy.sum.html

Python matplotlib: all about fonts

Fonts output into pdf as text, not shape, to be recognized in Illustrator:

import matplotlib
matplotlib.rcParams['pdf.fonttype'] = 42
matplotlib.rcParams['ps.fonttype'] = 42

Change fonts style for all, change the default:

import matplotlib as mpl
matplotlib.rcParams['font.family'] = 'Arial'

Change fonts style for labels, tick marks, and titles: (for each plot, not changing the default)

plt.xlabel('XXXX', fontsize=12, fontname='Arial')
plt.ylabel('XXXXX', fontsize=12, fontname='Arial')

plt.xticks(fontname='Arial')
plt.yticks(fontname='Arial')

plt.title('XXXXX', fontsize=14, fontname='Arial')

Change legend font style: (for each plot, not changing the default)

plt.legend(prop=matplotlib.font_manager.FontProperties(family='Arial', size=12, weight='bold', style='normal'))

Source:
https://jonathansoma.com/lede/data-studio/matplotlib/exporting-from-matplotlib-to-open-in-adobe-illustrator/
https://stackoverflow.com/questions/20753782/default-fonts-in-seaborn-statistical-data-visualization-in-ipython
https://stackoverflow.com/questions/47112522/matplotlib-how-to-set-legends-font-type
https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.legend.html

Liftover bam files

The most straightforward way is using CrossMap.

Taking from hg19 to hg38 as example:

pip install CrossMap

CrossMap.py bam -a hg19ToHg38.over.chain input.bam output
#.bam extension will be added automatically

genome liftover chain files can be downloaded here: http://hgdownload.cse.ucsc.edu/goldenpath/hg19/liftOver/ (change according to your needs)

It is suggested to always use ‘-a’ option according to the CrossMap website.

Source:
http://crossmap.sourceforge.net/#convert-bam-cram-sam-format-files

Python Jupyter notebook share the variable across notebooks

yourVar = 'data or your variable'
%store yourVar
del yourVar # only deletes the variable in this notebook but not in store

In the second notebook:

%store -r yourVar # if you have a variable with the same name, it will rewrite it.
yourVar

To list and delete the stored variable:

%store #list variable in store
%store -d yourVar #delete the variable in store

Source:
https://stackoverflow.com/questions/35935670/share-variables-between-different-jupyter-notebooks
https://ipython.org/ipython-doc/rel-0.12/config/extensions/storemagic.html

Unix check if a file exists

test -f yourFile

FILE=/folder/yourFile
if [ -f "$FILE" ]; then
    echo "$FILE exists."
else 
    echo "$FILE does not exist."
fi

If need to match wildcard in the file names

if test -n "$(find /dir/to/search -maxdepth 1 -name 'files*' -print -quit)"
then
    echo found
else
    echo not found
fi

Source:
https://linuxize.com/post/bash-check-if-file-exists/
https://stackoverflow.com/questions/6363441/check-if-a-file-exists-with-wildcard-in-shell-script