commit f44fb8ca46d45f514a8747db216a444e226fd623 Author: Sam Perry Date: Fri Jan 6 18:03:21 2017 +0000 Begun Literature Review diff --git a/.git-hooks/pre-commit/check_untracked.py b/.git-hooks/pre-commit/check_untracked.py new file mode 100755 index 0000000..8f06f93 --- /dev/null +++ b/.git-hooks/pre-commit/check_untracked.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python + +import subprocess +import os +import pdb +import fnmatch + +import sys + +def main(): + p = subprocess.Popen(["git", "rev-parse", "--show-toplevel"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) + out, err = p.communicate() + + out = out.strip('\n') + track_filepath = os.path.join(out, ".gittrack") + + p = subprocess.Popen(["git", "ls-files", out, "--exclude-standard", "--others"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) + out, err = p.communicate() + + out = out.splitlines() + + try: + with open(track_filepath) as f: + content = f.read().splitlines() + except IOError: + return 0 + + + untracked = [] + for filepath in out: + for name in content: + if fnmatch.fnmatch(filepath, name): + untracked.append(filepath) + + if untracked: + print "The following files are not tracked: " + for i in untracked: + print i + print "Please either stage these files for the commit or add them to the project's .gitignore to disregard them." + return 1 + else: + return 0 + + + +if __name__ == "__main__": + exit(main()) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2934343 --- /dev/null +++ b/.gitignore @@ -0,0 +1,37 @@ +.DS_Store +bin/ +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# Precompiled Headers +*.gch +*.pch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod +*.smod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.out +*.app + +# Log files +*.log + +external/ +CMakeFiles/ diff --git a/.gittrack b/.gittrack new file mode 100644 index 0000000..e69de29 diff --git a/.overcommit.yml b/.overcommit.yml new file mode 100644 index 0000000..f0b94ee --- /dev/null +++ b/.overcommit.yml @@ -0,0 +1,41 @@ +# Use this file to configure the Overcommit hooks you wish to use. This will +# extend the default configuration defined in: +# https://github.com/brigade/overcommit/blob/master/config/default.yml +# +# At the topmost level of this YAML file is a key representing type of hook +# being run (e.g. pre-commit, commit-msg, etc.). Within each type you can +# customize each hook, such as whether to only run it on certain files (via +# `include`), whether to only display output if it fails (via `quiet`), etc. +# +# For a complete list of hooks, see: +# https://github.com/brigade/overcommit/tree/master/lib/overcommit/hook +# +# For a complete list of options that you can use to customize hooks, see: +# https://github.com/brigade/overcommit#configuration +# +# Uncomment the following lines to make the configuration take effect. + +#PreCommit: +# RuboCop: +# enabled: true +# on_warn: fail # Treat all warnings as failures +# +# TrailingWhitespace: +# enabled: true +# exclude: +# - '**/db/structure.sql' # Ignore trailing whitespace in generated files +# +#PostCheckout: +# ALL: # Special hook name that customizes all hooks of this type +# quiet: true # Change all post-checkout hooks to only display output on failure +# +# IndexTags: +# enabled: true # Generate a tags file with `ctags` each time HEAD changes + + +PreCommit: + CheckUntracked: + enabled: true + quiet: false + description: 'Check for files that should be tracked or ignored.' + required_executable: './.git-hooks/pre-commit/check_untracked.py' diff --git a/Project_Writeup.tex b/Project_Writeup.tex new file mode 100644 index 0000000..c84724b --- /dev/null +++ b/Project_Writeup.tex @@ -0,0 +1,121 @@ +\documentclass[titlepage]{scrartcl} +\usepackage{enumitem} +\usepackage[british]{babel} +\usepackage[style=apa, backend=biber]{biblatex} +\DeclareLanguageMapping{british}{british-apa} +\usepackage{url} +\usepackage{float} +\usepackage[labelformat=empty]{caption} +\restylefloat{table} +\usepackage{perpage} +\MakePerPage{footnote} +\usepackage{abstract} +\usepackage{graphicx} +% Create hyperlinks in bibliography +\usepackage{hyperref} +\usepackage{amsmath} + +\usepackage[T1]{fontenc} +\usepackage[utf8]{inputenc} +\usepackage{blindtext} +\setkomafont{disposition}{\normalfont\bfseries} + +\graphicspath{{./resources/}} +\addbibresource{~/Documents/library.bib} + +\newsavebox{\abstractbox} +\renewenvironment{abstract} + {\begin{lrbox}{0}\begin{minipage}{\textwidth} + \begin{center}\normalfont\sectfont\abstractname\end{center}\quotation} + {\endquotation\end{minipage}\end{lrbox}% + \global\setbox\abstractbox=\box0 } + +\usepackage{etoolbox} +\makeatletter +\expandafter\patchcmd\csname\string\maketitle\endcsname + {\vskip\z@\@plus3fill} + {\vskip\z@\@plus2fill\box\abstractbox\vskip\z@\@plus1fill} + {}{} +\makeatother + +\DeclareCiteCommand{\citeyearpar} + {} + {\mkbibparens{\bibhyperref{\printdate}}} + {\multicitedelim} + {} + +% MATLAB Code block stuff... +\usepackage{color} +\usepackage{listings} + +\definecolor{dkgreen}{rgb}{0,0.6,0} +\definecolor{gray}{rgb}{0.5,0.5,0.5} + +\lstset{language=Matlab, + keywords={break,case,catch,continue,else,elseif,end,for,function, + global,if,otherwise,persistent,return,switch,try,while}, + basicstyle=\ttfamily, + keywordstyle=\color{blue}, + commentstyle=\color{gray}, + stringstyle=\color{dkgreen}, + numbers=left, + numberstyle=\tiny\color{gray}, + stepnumber=1, + numbersep=10pt, + backgroundcolor=\color{white}, + tabsize=4, + showspaces=false, + showstringspaces=false} + +\begin{document} +\title{ECS750P --- Final Project} +\subtitle{\LARGE{Extraction and Analysis of RRi from PCG Signals for the +Classification of Heart Abnormalities}} +\author{Sam Perry --- EC16039} + +\maketitle + +\section{Literature Review} +There are currently a wide variety of methods employed for the analysis and +classification of PCG signals. Current research focuses on a number of areas, +the most relevant of which are: +\begin{itemize} + \item Algorithms for the segmentation of PCG data, aiming to extract the + structure of the signal over time. This is a key stage in the analysis + of PCG signals as relationships between the fundamental heart sounds + (FHSs) form the basis for much of the further analysis performed on PCG + data. A number of methods exist for the extraction of FHSs. Some rely on direct extraction of + peaks in the time domain to determine the structure of a + signal. These methods perform various transformation in order to + accentuate the transient events.~\parencite{Groch1992, Liang1997}. However, these methods + tend to suffer significantly from background noise and so perform + poorly in sub-optimal conditions.\\ + Other methods rely on spectral representations to + assist in the splitting of the FHSs, in particular using wavelet + decomposition ~\parencite{}. Machine learning + algorithms have also been widely employed, such as k Nearest + Neighbour~\parencite{} and Neural Networks~\parencite{} for + predictions. Particular success has been observed in Springer's use of + logistic regression and Hidden semi-Markov models~\citeyearpar{Springer2016} + \item Methods for the extraction of statistical features from PCG data in + order to create robust, meaningful representations of the data. + \item Classification of signals for diagnostic purposes. The aim being to + distinguish healthy signals from those with certain heart + conditions/abnormality. Machine learning techniques are commonly used + in order to distinguish between signals automatically, based on prior + feature extraction. + it is noted in that there is a lack of research into other machine + learning techniques such as bayesian classification and + SVMs~\citeyearpar{}. +\end{itemize} + + + + +A variety of machine learning techniques trained on these extracted +features. From this, a great deal of progress has been made in classifying a +variety of cardiac abnormalities such as. + +\printbibliography{} + +\end{document}