@@ -0,0 +1,43 @@
source('/Users/hannah/Dropbox/Westneat Lab/Eartheater Project/Code/genfunctions.R')
source('/Users/hannah/Dropbox/Westneat Lab/Eartheater Project/Code/Read shapes.R')

# Aligning vectors --------------------------------------------------------

mouth.S <- graphAlignPeaksGG('./Measurements/S_mouthgape.csv', col=2, main='Strike', xlab="")
mouth.E <- graphAlignPeaksGG('./Measurements/E_mouthgape.csv', col=5, main='Ejection')
mouth.W <- graphAlignPeaksGG('./Measurements/W_mouthgape.csv', col=4, main='Winnowing', xlab="")
branch.S <- graphAlignPeaksGG('./Measurements/S_branch.csv', col=2, main='Strike')
branch.W <- graphAlignPeaksGG('./Measurements/W_branch.csv', col=5, main='Winnowing')
branch.E <- graphAlignPeaksGG('./Measurements/E_branch.csv', col=4, main='Ejection')

multiplot(branch.S, branch.W, branch.E)
multiplot(mouth.S, mouth.W, mouth.E)

strike.mouth <- read.csv('./Measurements/S_mouthgape.csv')[,-1]
strike.branch <- read.csv('./Measurements/S_branch.csv')[,-1]
strike.premax <- read.csv('./Measurements/S_premax.csv')[,-1]
mouth.test <- strike.mouth[2,]
mouth.test <- mouth.test[is.na(mouth.test)==FALSE]
branch.test <- strike.branch[2,]
branch.test <- branch.test[is.na(branch.test)==FALSE]
premax.test <- strike.premax[2,]
premax.test <- premax.test[is.na(premax.test)==FALSE]

frame.index <- seq(1, length(mouth.test), 1)
frame.index <- (frame.index-1)*1/100


splinefit <- smooth.spline(frame.index, mouth.test) # smooth vector
mouth.test <- predict(splinefit, data=frame.index)$y


splinefit2 <- smooth.spline(frame.index, branch.test) # smooth vector
branch.test <- predict(splinefit2, data=frame.index)$y

df.test <- data.frame(mouth.test=mouth.test, branch.test=branch.test, premax=premax.test, frame.index=frame.index)

p <- ggplot(data=df.test, aes(x=frame.index, y=mouth.test)) +
geom_line(data=df.test, aes(x=frame.index, y=mouth.test), lwd=1, col='blue')
p <- p + geom_line(data=df.test, aes(c=frame.index, y=branch.test), lwd=1, lty=2, col='red')
p <- p + geom_line(data=df.test, aes(c=frame.index, y=premax), lwd=1, lty=3, col='purple', alpha=1)
p
@@ -1,28 +1,37 @@
function[pixels] = eye_size(imagename, threshold)
function[closest] = eye_size(imagename, threshold)
image = imread(imagename);
greyimage = rgb2gray(image);
greyimage = image(:,:,1);
imdim = size(greyimage);

% set threshold; if above then turn white

% threshold = 30;
for i = 1:imdim(1)
for j = 1:imdim(2)
if greyimage(i, j) > threshold
greyimage(i, j) = 255;
else
greyimage(i, j) = 0;
else
greyimage(i, j) = 1;
end
end
end
BW2 = bwmorph(greyimage,'remove');

greyimage = logical(greyimage);
% BW2 = bwmorph(greyimage,'remove');
alternate = bwmorph(greyimage, 'majority', Inf);
BW3 = bwmorph(alternate, 'remove');
figure; imshow(image);
figure; imshow(greyimage);
% figure; imshow(BW2);
figure; imshow(alternate);
figure; imshow(BW3);
alternate = bwmorph(alternate, 'clean', Inf);
alternate = bwmorph(alternate, 'fill', Inf);
alternate = bwareafilt(alternate, [1500 7000]);


stats = regionprops('table', alternate, 'Centroid','Extent', 'Area', 'PixelList');
extenty = cat(1, stats.Extent);
areas = cat(1, stats.Area);
value = 0.74;

pixels = bwconncomp(alternate);
diffo = abs(value-extenty);
[idx idx] = min(diffo);
closest = areas(idx);
% imshow(alternate); hold on; plot(stats.Centroid(idx,1), stats.Centroid(idx,2), 'b*'); hold off
imshow(image); hold on; plot(stats.Centroid(idx,1), stats.Centroid(idx,2), 'c*'); hold off

end
@@ -0,0 +1,128 @@
%% MESSIN ABOOT

k = 3;
m = 5;
datedir = dir('*-16');
trialdir = dir([datedir(k).name, '/Intervals/*Intervals']);
jpgdir = dir([datedir(k).name, '/Intervals/', trialdir(m).name, '/*.jpg']);
pixel.areas = [];


for i = 24:length(jpgdir)
imagename = sprintf('%s%s%s%s%s', datedir(k).name, '/Intervals/', trialdir(m).name, '/', jpgdir(i).name);
pixel.areas(i) = eye_size(imagename, 40); hold on;
pause
end




%% trying to threshold good ;-;

k = 3;
m = 2;
datedir = dir('*-16');
trialdir = dir([datedir(k).name, '/Intervals/*Intervals']);
jpgdir = dir([datedir(k).name, '/Intervals/', trialdir(m).name, '/*.jpg']);
pixel.areas = [];
imagename = sprintf('%s%s%s%s%s', datedir(k).name, '/Intervals/', trialdir(m).name, '/', jpgdir(1).name);

image = imread(imagename);
greyimage = rgb2gray(image);
imdim = size(greyimage);

% set threshold; if above then turn white
threshold = 50;
for i = 1:imdim(1)
for j = 1:imdim(2)
if greyimage(i, j) > threshold
greyimage(i, j) = 0;
else
greyimage(i, j) = 1;
end
end
end

greyimage = logical(greyimage);
% BW2 = bwmorph(greyimage,'remove');
alternate = bwmorph(greyimage, 'majority', Inf);
alternate = bwmorph(alternate, 'clean', Inf);
alternate = bwmorph(alternate, 'fill', Inf);
alternate = bwareafilt(alternate, [1000 7000]);


stats = regionprops('table', alternate, 'Centroid','Extent', 'Area', 'PixelList');
imshow(image); hold on; plot(stats.Centroid(:,1), stats.Centroid(:,2), 'c*'); hold off
imshow(alternate);
variances = [];
means = [];
for i = 1:height(stats)
centroid = stats.Centroid(i,:);
pixels = stats.PixelList{i};
centroid_dist = [];
for j = 1:length(pixels)
centroid_dist(j) = get_distance(centroid, pixels(j,:));
end
figure; hist(centroid_dist);
variances(i) = var(centroid_dist);
means(i) = mean(centroid_dist);
% pause
end



extenty = cat(1, stats.Extent);
areas = cat(1, stats.Area);
value = 0.75;

diffo = abs(value-extenty);
[idx idx] = min(diffo);
closest = areas(idx);

imshow(image); hold on; plot(stats.Centroid(idx,1), stats.Centroid(idx,2), 'c*'); hold off

%% color segmentation?
k = 3;
m = 2;
datedir = dir('*-16');
trialdir = dir([datedir(k).name, '/Intervals/*Intervals']);
jpgdir = dir([datedir(k).name, '/Intervals/', trialdir(m).name, '/*.jpg']);
pixel.areas = [];
imagename = sprintf('%s%s%s%s%s', datedir(k).name, '/Intervals/', trialdir(m).name, '/', jpgdir(1).name);

image = imread(imagename);
greyimage = image(:,:,1);
imdim = size(greyimage);

for i = 1:3
figure; imshow(image(:,:,i));
end

cform = makecform('srgb2lab');
lab_he = applycform(image,cform);
ab = double(lab_he(:,:,2:3));
nrows = size(ab,1);
ncols = size(ab,2);
ab = reshape(ab,nrows*ncols,2);

nColors = 3;
% repeat the clustering 3 times to avoid local minima
[cluster_idx, cluster_center] = kmeans(ab,nColors,'distance','sqEuclidean', ...
'Replicates',3);
pixel_labels = reshape(cluster_idx,nrows,ncols);
imshow(pixel_labels,[]), title('image labeled by cluster index');


%% taking reds
mkdir('testreds');
dir1 = dir('02-26-16/Intervals/*Intervals');

for i = 1:length(dir1)
dir2 = dir(['02-26-16/Intervals/', dir1(i).name, '/*.jpg']);
mkdir(['testreds/', dir1(i).name]);
for j = 1:length(dir2)
img = imread(dir2(j).name);
savename = sprintf('%s%s%s%s', 'testreds/', dir1(i).name, '/', dir2(j).name);
imwrite(img(:,:,1), savename);
end
end

Large diffs are not rendered by default.

@@ -0,0 +1,233 @@
# import csv

# def LF2010(filename):
# rd = {}
# with open(filename, 'rU') as f:
# reader = csv.DictReader(f)
# # reader is now an iterator of row dictionaries with keys as the column names
# for row in reader:
# # whatever order you want!
# rd[ row['Taxon'] ] = [
# row['Tissue sample'], row['Voucher'],
# row['Collection locality'], row['ND4'], row['Cytochrome b'],
# row['16S'], row['RAG2'], row['S7 NaN Intron 1']
# ]
# return rd

import csv
LF2010 = open('/Users/hannah/Dropbox/Westneat Lab/Eartheater Project/Data/Phylogenetics/LF2010_GenBank.csv', 'rU')

csvread = csv.reader(LF2010)

species = []
ND4 = []
CytB = []
_16S = []
RAG2 = []
S7_Intron1 = []
for row in csvread:
species.append(row[0])
ND4.append(row[4])
CytB.append(row[5])
_16S.append(row[6])
RAG2.append(row[7])
S7_Intron1.append(row[8])

LF2010.close()

from dendropy.interop import genbank
ND4_dna = genbank.GenBankDna(ids=ND4, verify=False)
ND4_char_matrix = ND4_dna.generate_char_matrix(label_components=["organism", "accession"], label_component_separator="_")

CytB_dna = genbank.GenBankDna(ids=CytB, verify=False)
CytB_char_matrix = CytB_dna.generate_char_matrix(label_components=["organism", "accession"], label_component_separator="_")

_16S_dna = genbank.GenBankDna(ids=_16S, verify=False)
_16S_char_matrix = _16S_dna.generate_char_matrix(label_components=["organism", "accession"], label_component_separator="_")

RAG2_dna = genbank.GenBankDna(ids=RAG2, verify=False)
RAG2_char_matrix = RAG2_dna.generate_char_matrix(label_components=["organism", "accession"], label_component_separator="_")

S7_Intron1_dna = genbank.GenBankDna(ids=S7_Intron1, verify=False)
S7_Intron1_char_matrix = S7_Intron1_dna.generate_char_matrix(label_components=["organism", "accession"], label_component_separator="_")

ND4_char_matrix.write(
path='ND4_geophagini.nex',
schema='nexus',
suppress_taxa_blocks=None,
suppress_block_titles=None,
file_comments=[],
preamble_blocks=[],
supplemental_blocks=[],
allow_multiline_comments=True,
suppress_leaf_taxon_labels=True,
suppress_leaf_node_labels=True,
suppress_internal_taxon_labels=True,
suppress_internal_node_labels=True,
suppress_rooting=True,
suppress_edge_lengths=True,
unquoted_underscores=False,
preserve_spaces=False,
store_tree_weights=False,
translate_tree_taxa=None,
suppress_annotations=True,
annotations_as_nhx=False,
suppress_item_comments=False,
node_label_element_separator=' ',
node_label_compose_fn=None,
edge_label_compose_fn=None,
real_value_format_specifier='',
ignore_unrecognized_keyword_arguments=True,
)

CytB_char_matrix.write(
path='CytB_geophagini.nex',
schema='nexus',
suppress_taxa_blocks=None,
suppress_block_titles=None,
file_comments=[],
preamble_blocks=[],
supplemental_blocks=[],
allow_multiline_comments=True,
suppress_leaf_taxon_labels=True,
suppress_leaf_node_labels=True,
suppress_internal_taxon_labels=True,
suppress_internal_node_labels=True,
suppress_rooting=True,
suppress_edge_lengths=True,
unquoted_underscores=False,
preserve_spaces=False,
store_tree_weights=False,
translate_tree_taxa=None,
suppress_annotations=True,
annotations_as_nhx=False,
suppress_item_comments=False,
node_label_element_separator=' ',
node_label_compose_fn=None,
edge_label_compose_fn=None,
real_value_format_specifier='',
ignore_unrecognized_keyword_arguments=True,
)

_16S_char_matrix.write(
path='16S_geophagini.nex',
schema='nexus',
suppress_taxa_blocks=None,
suppress_block_titles=None,
file_comments=[],
preamble_blocks=[],
supplemental_blocks=[],
allow_multiline_comments=True,
suppress_leaf_taxon_labels=True,
suppress_leaf_node_labels=True,
suppress_internal_taxon_labels=True,
suppress_internal_node_labels=True,
suppress_rooting=True,
suppress_edge_lengths=True,
unquoted_underscores=False,
preserve_spaces=False,
store_tree_weights=False,
translate_tree_taxa=None,
suppress_annotations=True,
annotations_as_nhx=False,
suppress_item_comments=False,
node_label_element_separator=' ',
node_label_compose_fn=None,
edge_label_compose_fn=None,
real_value_format_specifier='',
ignore_unrecognized_keyword_arguments=True,
)

RAG2_char_matrix.write(
path='RAG2_geophagini.nex',
schema='nexus',
suppress_taxa_blocks=None,
suppress_block_titles=None,
file_comments=[],
preamble_blocks=[],
supplemental_blocks=[],
allow_multiline_comments=True,
suppress_leaf_taxon_labels=True,
suppress_leaf_node_labels=True,
suppress_internal_taxon_labels=True,
suppress_internal_node_labels=True,
suppress_rooting=True,
suppress_edge_lengths=True,
unquoted_underscores=False,
preserve_spaces=False,
store_tree_weights=False,
translate_tree_taxa=None,
suppress_annotations=True,
annotations_as_nhx=False,
suppress_item_comments=False,
node_label_element_separator=' ',
node_label_compose_fn=None,
edge_label_compose_fn=None,
real_value_format_specifier='',
ignore_unrecognized_keyword_arguments=True,
)

S7_Intron1_char_matrix.write(
path='S7_Intron1_geophagini.nex',
schema='nexus',
suppress_taxa_blocks=None,
suppress_block_titles=None,
file_comments=[],
preamble_blocks=[],
supplemental_blocks=[],
allow_multiline_comments=True,
suppress_leaf_taxon_labels=True,
suppress_leaf_node_labels=True,
suppress_internal_taxon_labels=True,
suppress_internal_node_labels=True,
suppress_rooting=True,
suppress_edge_lengths=True,
unquoted_underscores=False,
preserve_spaces=False,
store_tree_weights=False,
translate_tree_taxa=None,
suppress_annotations=True,
annotations_as_nhx=False,
suppress_item_comments=False,
node_label_element_separator=' ',
node_label_compose_fn=None,
edge_label_compose_fn=None,
real_value_format_specifier='',
ignore_unrecognized_keyword_arguments=True,
)


# print(char_matrix.as_string("nexus"))



























# from Bio import SeqIO

# for seq_record in SeqIO.parse("ls_orchid.gbk", "genbank"):
# print(seq_record.id)
# print(repr(seq_record.seq))
# print(len(seq_record))
@@ -0,0 +1,3 @@
function [dist] = get_distance(p1, p2)
dist = sqrt((p1(1)-p2(1))^2 + (p1(2)-p2(2))^2);
end
@@ -0,0 +1,2 @@
source('http://bioconductor.org/biocLite.R')
biocLite('EBImage')