{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "c8951c3f", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "%load_ext rpy2.ipython" ] }, { "cell_type": "markdown", "id": "8bdaa079", "metadata": {}, "source": [ "Image of quant gel." ] }, { "cell_type": "markdown", "id": "e731347c", "metadata": {}, "source": [ "![](data/2021-12-08_17h47m30s-growth-condition-comparison-RNA-smear-cut-copy-quant.png)" ] }, { "cell_type": "code", "execution_count": 2, "id": "eab3f484", "metadata": {}, "outputs": [], "source": [ "lane_quant = pd.read_csv(\n", " 'data/2021-12-08_17h47m30s-growth-condition-comparison-RNA-smear-cut-copy.csv',\n", " skiprows=1)\n", "samples = pd.read_csv('data/DH10B-midi-prep-growth-condition-optimization.tsv', sep='\\t')" ] }, { "cell_type": "code", "execution_count": 3, "id": "6d803af1", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Sample numberFlask volume (L)% glucoseculture volumetemperature (C)Glucose VolumeAir Volume
011.00.0250300.0750
121.00.2250300.5750
231.00.0500300.0500
341.00.2500301.0500
451.00.0150300.0850
561.00.2150300.3850
671.00.0150370.0850
781.00.0500370.0500
891.00.2150370.3850
9100.50.0250370.0250
10110.50.2250370.5250
11124.00.2350370.73650
12134.00.0350370.03650
\n", "
" ], "text/plain": [ " Sample number Flask volume (L) % glucose culture volume \\\n", "0 1 1.0 0.0 250 \n", "1 2 1.0 0.2 250 \n", "2 3 1.0 0.0 500 \n", "3 4 1.0 0.2 500 \n", "4 5 1.0 0.0 150 \n", "5 6 1.0 0.2 150 \n", "6 7 1.0 0.0 150 \n", "7 8 1.0 0.0 500 \n", "8 9 1.0 0.2 150 \n", "9 10 0.5 0.0 250 \n", "10 11 0.5 0.2 250 \n", "11 12 4.0 0.2 350 \n", "12 13 4.0 0.0 350 \n", "\n", " temperature (C) Glucose Volume Air Volume \n", "0 30 0.0 750 \n", "1 30 0.5 750 \n", "2 30 0.0 500 \n", "3 30 1.0 500 \n", "4 30 0.0 850 \n", "5 30 0.3 850 \n", "6 37 0.0 850 \n", "7 37 0.0 500 \n", "8 37 0.3 850 \n", "9 37 0.0 250 \n", "10 37 0.5 250 \n", "11 37 0.7 3650 \n", "12 37 0.0 3650 " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "samples" ] }, { "cell_type": "code", "execution_count": 4, "id": "c2d3f06c", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
LaneBand No.Band LabelMol. Wt. (KDa)Relative FrontAdj. Volume (Int)Volume (Int)Abs. Quant.Rel. Quant.Band %Lane %
011NaNNaN0.0189277728291024NaNNaN0.3854350.370703
112NaNNaN0.12618333360307488NaNNaN1.6638341.600239
213NaNNaN0.37539418576334992NaNNaN0.9264800.891069
314NaNNaN0.605678254784585552NaNNaN12.70738112.221685
415NaNNaN0.69400614886722109120NaNNaN74.24768471.409822
....................................
98133NaNNaN0.38170332304376176NaNNaN0.9232960.906947
99134NaNNaN0.51104164272535584NaNNaN1.8369891.804461
100135NaNNaN0.5993696743041152384NaNNaN19.27261318.931339
101136NaNNaN0.69085224610083218640NaNNaN70.33927469.093727
102137NaNNaN0.949527246048485616NaNNaN7.0324186.907890
\n", "

103 rows × 11 columns

\n", "
" ], "text/plain": [ " Lane Band No. Band Label Mol. Wt. (KDa) Relative Front \\\n", "0 1 1 NaN NaN 0.018927 \n", "1 1 2 NaN NaN 0.126183 \n", "2 1 3 NaN NaN 0.375394 \n", "3 1 4 NaN NaN 0.605678 \n", "4 1 5 NaN NaN 0.694006 \n", ".. ... ... ... ... ... \n", "98 13 3 NaN NaN 0.381703 \n", "99 13 4 NaN NaN 0.511041 \n", "100 13 5 NaN NaN 0.599369 \n", "101 13 6 NaN NaN 0.690852 \n", "102 13 7 NaN NaN 0.949527 \n", "\n", " Adj. Volume (Int) Volume (Int) Abs. Quant. Rel. Quant. Band % \\\n", "0 7728 291024 NaN NaN 0.385435 \n", "1 33360 307488 NaN NaN 1.663834 \n", "2 18576 334992 NaN NaN 0.926480 \n", "3 254784 585552 NaN NaN 12.707381 \n", "4 1488672 2109120 NaN NaN 74.247684 \n", ".. ... ... ... ... ... \n", "98 32304 376176 NaN NaN 0.923296 \n", "99 64272 535584 NaN NaN 1.836989 \n", "100 674304 1152384 NaN NaN 19.272613 \n", "101 2461008 3218640 NaN NaN 70.339274 \n", "102 246048 485616 NaN NaN 7.032418 \n", "\n", " Lane % \n", "0 0.370703 \n", "1 1.600239 \n", "2 0.891069 \n", "3 12.221685 \n", "4 71.409822 \n", ".. ... \n", "98 0.906947 \n", "99 1.804461 \n", "100 18.931339 \n", "101 69.093727 \n", "102 6.907890 \n", "\n", "[103 rows x 11 columns]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lane_quant" ] }, { "cell_type": "markdown", "id": "0609e27d", "metadata": {}, "source": [ "Sample number is the same as lane number so merge on those fields to add sample conditions to quantifications." ] }, { "cell_type": "code", "execution_count": 5, "id": "786f7d44", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
LaneBand No.Band LabelMol. Wt. (KDa)Relative FrontAdj. Volume (Int)Volume (Int)Abs. Quant.Rel. Quant.Band %Lane %Sample numberFlask volume (L)% glucoseculture volumetemperature (C)Glucose VolumeAir Volume
011NaNNaN0.0189277728291024NaNNaN0.3854350.37070311.00.0250300.0750
112NaNNaN0.12618333360307488NaNNaN1.6638341.60023911.00.0250300.0750
213NaNNaN0.37539418576334992NaNNaN0.9264800.89106911.00.0250300.0750
314NaNNaN0.605678254784585552NaNNaN12.70738112.22168511.00.0250300.0750
415NaNNaN0.69400614886722109120NaNNaN74.24768471.40982211.00.0250300.0750
.........................................................
98133NaNNaN0.38170332304376176NaNNaN0.9232960.906947134.00.0350370.03650
99134NaNNaN0.51104164272535584NaNNaN1.8369891.804461134.00.0350370.03650
100135NaNNaN0.5993696743041152384NaNNaN19.27261318.931339134.00.0350370.03650
101136NaNNaN0.69085224610083218640NaNNaN70.33927469.093727134.00.0350370.03650
102137NaNNaN0.949527246048485616NaNNaN7.0324186.907890134.00.0350370.03650
\n", "

103 rows × 18 columns

\n", "
" ], "text/plain": [ " Lane Band No. Band Label Mol. Wt. (KDa) Relative Front \\\n", "0 1 1 NaN NaN 0.018927 \n", "1 1 2 NaN NaN 0.126183 \n", "2 1 3 NaN NaN 0.375394 \n", "3 1 4 NaN NaN 0.605678 \n", "4 1 5 NaN NaN 0.694006 \n", ".. ... ... ... ... ... \n", "98 13 3 NaN NaN 0.381703 \n", "99 13 4 NaN NaN 0.511041 \n", "100 13 5 NaN NaN 0.599369 \n", "101 13 6 NaN NaN 0.690852 \n", "102 13 7 NaN NaN 0.949527 \n", "\n", " Adj. Volume (Int) Volume (Int) Abs. Quant. Rel. Quant. Band % \\\n", "0 7728 291024 NaN NaN 0.385435 \n", "1 33360 307488 NaN NaN 1.663834 \n", "2 18576 334992 NaN NaN 0.926480 \n", "3 254784 585552 NaN NaN 12.707381 \n", "4 1488672 2109120 NaN NaN 74.247684 \n", ".. ... ... ... ... ... \n", "98 32304 376176 NaN NaN 0.923296 \n", "99 64272 535584 NaN NaN 1.836989 \n", "100 674304 1152384 NaN NaN 19.272613 \n", "101 2461008 3218640 NaN NaN 70.339274 \n", "102 246048 485616 NaN NaN 7.032418 \n", "\n", " Lane % Sample number Flask volume (L) % glucose culture volume \\\n", "0 0.370703 1 1.0 0.0 250 \n", "1 1.600239 1 1.0 0.0 250 \n", "2 0.891069 1 1.0 0.0 250 \n", "3 12.221685 1 1.0 0.0 250 \n", "4 71.409822 1 1.0 0.0 250 \n", ".. ... ... ... ... ... \n", "98 0.906947 13 4.0 0.0 350 \n", "99 1.804461 13 4.0 0.0 350 \n", "100 18.931339 13 4.0 0.0 350 \n", "101 69.093727 13 4.0 0.0 350 \n", "102 6.907890 13 4.0 0.0 350 \n", "\n", " temperature (C) Glucose Volume Air Volume \n", "0 30 0.0 750 \n", "1 30 0.0 750 \n", "2 30 0.0 750 \n", "3 30 0.0 750 \n", "4 30 0.0 750 \n", ".. ... ... ... \n", "98 37 0.0 3650 \n", "99 37 0.0 3650 \n", "100 37 0.0 3650 \n", "101 37 0.0 3650 \n", "102 37 0.0 3650 \n", "\n", "[103 rows x 18 columns]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = lane_quant.merge(samples, left_on='Lane', right_on='Sample number')\n", "data" ] }, { "cell_type": "markdown", "id": "5ce8b007", "metadata": {}, "source": [ "Get the last two bands of each lane." ] }, { "cell_type": "code", "execution_count": 6, "id": "25440c11", "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
LaneFlask volume (L)% glucoseculture volumetemperature (C)rel.band.percent
311.00.0250305.842879
1021.00.2250308.500914
1731.00.0500301.534107
2441.00.2500305.345899
3351.00.01503013.779327
4461.00.2150308.932584
5471.00.0150379.129527
6281.00.0500371.791634
7091.00.2150376.486468
79100.50.0250376.848048
87110.50.2250376.065368
93124.00.2350370.193021
100134.00.0350373.649701
\n", "
" ], "text/plain": [ " Lane Flask volume (L) % glucose culture volume temperature (C) \\\n", "3 1 1.0 0.0 250 30 \n", "10 2 1.0 0.2 250 30 \n", "17 3 1.0 0.0 500 30 \n", "24 4 1.0 0.2 500 30 \n", "33 5 1.0 0.0 150 30 \n", "44 6 1.0 0.2 150 30 \n", "54 7 1.0 0.0 150 37 \n", "62 8 1.0 0.0 500 37 \n", "70 9 1.0 0.2 150 37 \n", "79 10 0.5 0.0 250 37 \n", "87 11 0.5 0.2 250 37 \n", "93 12 4.0 0.2 350 37 \n", "100 13 4.0 0.0 350 37 \n", "\n", " rel.band.percent \n", "3 5.842879 \n", "10 8.500914 \n", "17 1.534107 \n", "24 5.345899 \n", "33 13.779327 \n", "44 8.932584 \n", "54 9.129527 \n", "62 1.791634 \n", "70 6.486468 \n", "79 6.848048 \n", "87 6.065368 \n", "93 0.193021 \n", "100 3.649701 " ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def get_last_two_bands_each_lane(df):\n", " lane_dfs = []\n", " number_lanes = df['Lane'].max()\n", " for i in range(1, number_lanes+1):\n", " lane_data = df.loc[df['Lane'] == i]\n", " max_band_number = lane_data['Band No.'].max()\n", " lane_data = lane_data.loc[lane_data['Band No.'].isin([max_band_number-1, max_band_number-2])]\n", " lane_data['Band No.'] = abs(lane_data['Band No.'] - max_band_number)\n", " supercoiled = lane_data.loc[lane_data['Band No.'] == 1]['Band %'].values[0]\n", " duplex = lane_data.loc[lane_data['Band No.'] == 2]['Band %'].values[0]\n", " lane_data['rel.band.percent'] = supercoiled / duplex\n", " lane_dfs.append(lane_data)\n", " \n", " df_concat = pd.concat(lane_dfs)\n", " df_by_lane = df_concat[['Lane', 'Flask volume (L)', '% glucose', 'culture volume', 'temperature (C)', 'rel.band.percent']]\n", " return df_by_lane.drop_duplicates()\n", " \n", "\n", "signal = get_last_two_bands_each_lane(data)\n", "signal" ] }, { "cell_type": "code", "execution_count": 31, "id": "32333382", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "| Lane | Flask volume (L) | % glucose | culture volume | temperature (C) | rel.band.percent |\n", "|-------:|-------------------:|------------:|-----------------:|------------------:|-------------------:|\n", "| 1 | 1 | 0 | 250 | 30 | 5.84288 |\n", "| 2 | 1 | 0.2 | 250 | 30 | 8.50091 |\n", "| 3 | 1 | 0 | 500 | 30 | 1.53411 |\n", "| 4 | 1 | 0.2 | 500 | 30 | 5.3459 |\n", "| 5 | 1 | 0 | 150 | 30 | 13.7793 |\n", "| 6 | 1 | 0.2 | 150 | 30 | 8.93258 |\n", "| 7 | 1 | 0 | 150 | 37 | 9.12953 |\n", "| 8 | 1 | 0 | 500 | 37 | 1.79163 |\n", "| 9 | 1 | 0.2 | 150 | 37 | 6.48647 |\n", "| 10 | 0.5 | 0 | 250 | 37 | 6.84805 |\n", "| 11 | 0.5 | 0.2 | 250 | 37 | 6.06537 |\n", "| 12 | 4 | 0.2 | 350 | 37 | 0.193021 |\n", "| 13 | 4 | 0 | 350 | 37 | 3.6497 |\n" ] } ], "source": [ "print(signal.to_markdown(index=False))" ] }, { "cell_type": "markdown", "id": "c6d54fd7", "metadata": {}, "source": [ "## Sample comparisons across conditions\n", "\n", "### 150 ml volume\n", "\n", "When grown at 30C without glucose saw best supercoiled ratio. But unlike other superoiled samples glucose decreased supercoiled ratio. Glucose also decreased supercoiling ratio when grown at 37C.\n", "\n", "\n", "### 250 ml volume\n", "\n", "#### Glucose\n", "\n", "When grown at 30C glucose increased the relative supercoiled percentage. \n", "\n", "\n", "### 500 ml volume \n", "\n", "#### Glucose\n", "\n", "When grown at 30C glucose also increased relative supercoiled percentage. Similar increase was also seen when glucose added in the same volume of culture but grown at 37C.\n", "\n", "#### Temperature\n", "\n", "At 500ml no glucose increasing temperature to 37 slightly increased ratio but basically no effect.\n", "\n", "### 4 L volume\n", "\n", "#### Glucose\n", "\n", "Glucose greatly decreased supercoiled ratio" ] }, { "cell_type": "code", "execution_count": 14, "id": "32e170cd", "metadata": { "scrolled": true }, "outputs": [], "source": [ "%%R\n", "\n", "library(ggplot2)\n", "library(ggpubr)\n", "library(dplyr)\n", "library(RColorBrewer)" ] }, { "cell_type": "markdown", "id": "843cba04", "metadata": {}, "source": [ "Clean up column names" ] }, { "cell_type": "code", "execution_count": 8, "id": "70d57d41", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1] \"Lane\" \"Flask volume (L)\" \"% glucose\" \"culture volume\" \n", "[5] \"temperature (C)\" \"rel.band.percent\"\n" ] } ], "source": [ "%%R -i signal\n", "colnames(signal)" ] }, { "cell_type": "code", "execution_count": 9, "id": "88ac0536", "metadata": {}, "outputs": [], "source": [ "%%R -i signal\n", "\n", "c.names <- colnames(signal)\n", "c.names[2] <- 'Flask.volume'\n", "c.names[3] <- 'Percent.glucose'\n", "c.names[4] <- 'Culture.volume'\n", "c.names[5] <- 'Temp'\n", "\n", "colnames(signal) <- c.names\n", "signal.rename <- signal" ] }, { "cell_type": "code", "execution_count": 10, "id": "b829cd71", "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " [1] 0.2500 0.2500 0.5000 0.5000 0.1500 0.1500 0.1500 0.5000 0.1500 0.5000\n", "[11] 0.5000 0.0875 0.0875\n" ] } ], "source": [ "%%R\n", "\n", "signal.rename$Culture.volume / (signal.rename$Flask.volume * 1000)" ] }, { "cell_type": "code", "execution_count": 29, "id": "bcaa8047", "metadata": { "scrolled": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "R[write to console]: Saving 6.67 x 6.67 in image\n", "\n" ] }, { "data": { "image/png": "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\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%R\n", "\n", "colors <- nrow(unique(signal.rename))\n", "p = colorRampPalette(brewer.pal(9, \"Dark2\"))(colors)\n", "all.plot <- ggplot(\n", " signal.rename, \n", " aes(x=Lane, y=rel.band.percent, fill=as.factor(Lane))\n", ") + geom_bar(color='black', stat='identity', position='dodge') + \n", "theme_pubr() + scale_fill_manual(values=p) + labs(x='Sample / Lane', y='Supercoiled ratio') + theme(legend.position='none')\n", "\n", "ggsave('midi-prep-growth-conditions-test.png', all.plot)\n", "all.plot" ] }, { "cell_type": "markdown", "id": "9430ae69", "metadata": {}, "source": [ "Overall lane 5 had best supercoiled ratio. This was a 1 L flask with total volume 150 ml of culture and no glucose." ] }, { "cell_type": "code", "execution_count": 12, "id": "c8073552", "metadata": {}, "outputs": [ { "data": { "image/png": "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5p47dy4oKMjdRXNzcz/44IMGDRqcP3/e3bUUaWlpTz31lN1u//TTT5XUXp6YTKbp06dnZ2cPGTLEY38XZcYdAADAcxITE7/66isRMZvNw4YNa9CgwY0bN9q2bevuuh988MGbb77p7ir5/etf/0pMTBw6dGjr1q09WddjevTo0atXrx9++OG999576623PFCR4A4AAOA5R48eVW6MHTv2/fff91hdDy8pPHjw4OzZs81m8+TJkz1Z18OmTp26cePGqVOnRkdH33fffe4ux1IZAAAAz3FupdC8eXNtO3Gr119/3W63Dxky5N5779W6Fzdq3rx5r169cnJyPDPjTnAHAADwHOcuWMqHs8ulffv2/fjjjyIycuRIrXtxO+Ucly5d+vvvv7u7FsEdAAB4r2PHjo0fP/7+++8PCwszm81BQUF169YdPHjwd999V+j4M2fOjB8/vmXLlkFBQX5+fjVq1Ojevfv06dPT09PvWKtnz54Gg2Hw4MHKl1FRUQaDwWAwfP7556XuR0Ru3LgxZ86chx9++O677zabzVWqVOnWrds333zj3Av4vffeMxgMb7/9tvJl06ZNDQZD7dq183+TlJSUDz74oGPHjqGhoWazOSwsrGvXrjNnziy4ZZzNZlPanjNnzpUrVwYPHhwcHBwaGtqpUyclrIvIp59+KiINGjRw4dr9Ej0zvr6+BoNh+vTpIrJp06b+/fvXrFlT+XlFRUVt2bLldlVycnJmzZrVtWtXpUrVqlUfeuihTz75pIgtp3v37l2lShW73T5z5kyXnGkRWOMOAAC8kd1uHzdu3IwZMxwOh/Og1WpNT08/e/ZsTEzMk08+uWTJkvzboaxcuTI6Ojr/FiIXL168ePHi5s2b33///e+//75ly5ae7EdEdu/ePWjQoAsXLjiPXL16dcuWLVu2bJkzZ86GDRuqVKlyx9LffffdsGHDrl696jySnJy8devWrVu3fvjhh6tWrWrVqlXBR1mt1j59+sTFxSlf7ty58/XXXxeRlJSU1atXi0ifPn1K9hTcRumeGcVLL72U/33RxYsXV65cuXLlytdee+3jjz++ZXB8fHz//v3Pnj3rPHLlypUdO3bs2LHjo48+WrFiRbt27QqW8PHx6dmz58KFC+fPn//hhx+69Q8pzLgDAABvNHny5OnTpzscjvvuu++TTz758ccf9+3bt3z58uHD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Ch2gnG/16tWLP81fCgR3AADgdX7//XcRMRgMDz30UMF7V69eraRV5+cX7XZ7zZo1mzZtOnDgwILja9SooezkbbfblY9mursfEenWrZtyY9GiRQUfcvny5e3btx87diwtLU054lzCkX95jHPT8dmzZxfa2KxZs5Qb3bt3L86JGI1GZT8ZZW8Z9UrxzJSC83n45JNPCl1DP3ny5EmTJkVHR+/atavgvXa7/c8//xSRBg0aqGnjjgjuAADA6yg7gjscjh07dtxy1+HDh8eOHavcdk6fG43GPn36iMipU6c+/fTTWx5y5syZvXv3ikjDhg2da0VExGaz2Ww2JVm6th8R6dq1a0REhIh8/fXXsbGx+R9it9uff/55JaCPHDlSOei8AFNycrJz5LBhw5TSH3/8ccGd2ufOnbts2TLlvAru8n47999/v4hcuHDhypUrxXxIEUrxzJRCv379lPcbe/bsmThx4i33Llu2bMmSJSJStWrVIUOGFHz48ePHs7OzRUS5Zq37sMYdAAB4nYEDByrXyhk8ePDkyZM7deoUEBCQlJS0evXqOXPmKCFMRJTl3Yo33nhjxYoVWVlZY8eO3blz58CBA++99960tLQDBw7MmDHj5s2bIvL22287x+/fv/+BBx4QkYiICGXXRdf2YzAYvv322/bt2+fk5PTv3//ZZ599/PHHQ0JCfv/9908//VTZ37Bfv37OwO28UtLIkSOHDh3q4+MzadKkChUqzJ8//9FHH7XZbH379n366acHDBgQFhb2119/LVy4cO3atSLi7++/fPny/AtUita5c+evvvpKeQYeffTR2w177733ilhNHhwc/O9//7t0z0wp+Pj4LFq0qGPHjjk5OR988MH+/ftHjBgRHh5++fLltWvXLliwwOFwGAyGOXPmFLqEff/+/cqNLl26qGnjjgjuAADA67z00ktbt279/vvvr1y5UvDKPlFRUf7+/gsWLLh58+aff/557733ikj9+vVXrFgxePDgmzdvrlq1atWqVfkfYjab33///UIX0ripHxFp3br1xo0bo6Kirl69Om/evHnz5uV/1GOPPabMEyu6desWHByclpZ25syZ//znPyLy8ssvBwcHP/LII2vXrh06dGhqaur8+fPnz5+f/5vUr18/JibGuQS8OPr06WOxWLKzszdu3FhEcFfC/e2EhYUpwb10z0wptGnT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q1e/9dZbWvcId3HlG7IuXbp06dLFhd8QAAAA+Tm3zM/Kytq/f394eLiIBAQEvPbaaw6H4x//+Mcnn3wybtw4tnIvl1wz4w4AAAAPcH5icPDgwUpqd3rppZeCg4OzsrJ27NihRWtwO1fOuMfHx69fv/748eOXLl0ym801atRo0aLF448/fvfdd7uwCgAAgNfy8/OzWCzZ2dktWrS45S6z2VyvXr0DBw4oi+BR/rgmuMfHx7/wwgt79+4teNfYsWMHDRr06aefVqlSxSW1AAAAvFnDhg0PHTqUk5NT8C4fHx8RYTvI8soFS2V++umnNm3a5E/tPj4+BoNBue1wOGJiYpo0aXL27Fn1tQAAALxcmzZtROTnn3++5bjD4fjjjz9E5L777tOgLbif2uB++fLlxx57LDc312g0Pvvss9u2bUtJSbHZbDab7cKFC2vXru3du7eIJCcn9+3bt9C3hgAAACi+J598UkTWr19/+vTp/McXLlyYkpJSuXLlTp06adQa3EttcP/888/T0tLMZvOGDRu+/vrrhx9+OCQkRESMRmP16tX79eu3YcOGzz77TEQSEhKWLl3qgpYBAAC82MMPP9yzZ8+cnJw+ffocPXpUObh79+7XXntNRN544w32cS+v1Ab32NhYERk/fnyvXr1uN2bMmDFRUVEi8u2336osBwAAgIULF0ZGRp44caJp06YRERGNGjXq0KHDtWvXoqOjX375Za27g7uoDe7KyvXBgwcXPWzo0KEicuLECZXlAAAAULly5X379k2bNi0yMjIpKenSpUvt27dftGjRwoULjUY2+y631P4lxeFwiEhwcHDRw5QtZdLT01WWAwAAgIiYzeZXX3311Vdf1boReI7a92QNGzYUkd27dxc97MiRIyLSoEEDleUAAAAA76Q2uD/77LMiMmnSpOvXr99uTHp6+gcffOAcDAAAAKCk1Ab3kSNH9urV68yZMx07dvzll18KDjhz5kyPHj3++OOPjh07jh49WmU5AAAAwDupXeP+wQcfPPDAA3v37j169GibNm0iIyMfeOCBatWq+fj4XL169cCBA7t27bLb7SJiMBj69etX8Dts2LBBZQ8AAABAuac2uL/++uv5vzx48ODBgwcLHbljxw6VtQAAAACvpTa4+/j4uKQPAAAAAEVQG9xtNptL+gAAAABQBLboBwAAAHSA4A4AAADo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srKy3n777VtvvTU4ONhkMrVs2XLIkCEfffSR2WyudNwzZ87MmjWrT58+/v7+6nG766673n///fz8/Er712p2AAANnQJAVw8//LD6Yfzxxx+r6ZadnW0wGIQQvr6+ZduPHj3avn37Sj/dISEhe/fuLdu5pKRE3fTBBx/079+/bOetW7eqfeLi4kJCQirdYf/+/S9fvlzn0RVFcXNzE0LMnz9/xowZlb7r2WeftXeeN29exQ5hYWHXPKQxMTGVXr97//33P/300+WOYV5enrr14Ycfrr6xrLCwMCFE3759y7XX6uh9++23zZo1q7RzWFhYfHx8uZ2vW7fO09Oz0v6tWrU6fPhwuf61nR0AQANHcAd0VsPgvnDhQrXbnXfeaW9MSkoKCAgQQnh4eEydOnXLli2HDx/etm3bU0895eXlJYTw8fE5cuSIvb89uF9//fVCCG9v75tuuqlDhw7BwcElJSWKohw9elSNvEaj8ZFHHtm8efPBgwfXrFlz0003qW8cNGiQzWar2+jKn8E9PDxcCNG8efMXXnhh7dq1n3/++ahRo+yZ8vvvv1c7m83mrKys5557Tm3ft29fVlZWTk5O9cdz48aN6m843t7ezz//fGxsbFxc3L///e/AwEAhhBp86ym41+robd26tWznb7755ueff163bt3999+vdvb19f3ll1/sO09OTvb29lYz+oIFC/bs2XPo0KFvvvnGfug6duxosVjq/G8DANDwEdwBnV0zuNtsttWrV6uhTQixbt06+yZ1qYafn1/Fs6cHDx5U81nv3r3tYdEe3IUQPXr0uHDhgtp+9uxZdaA+ffoIIQwGw9q1a8vurbS0dOjQoeobv/7667qNrvwZ3NXIm5GRUfYtb7zxhrpp/PjxZdv/9a9/qe1lU2xV8vPz27Rpo1ZV7oz1qVOnQkND7ZnY3u6o4F6ro1dQUNCqVSshhJub2zfffFNu5x999JF9juxHb86cOWrjgQMHyvV//PHH1U32P5sodZodAEADR3AHdGYP7mPHjv37/2/GjBljx45t27atPW0PGzbMnrTsK8LffvvtSvf88ssvqx127typtpQN7nFxceX6//TTT+qmiRMnVtzbiRMn1K1PPvlk3UZXygT3Q4cOletfVFRkMpmEEN27dy/bXqvgvnz5crXzu+++W3Hr5s2b6y+41+roLVq0SP2/s2fPrnT/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\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%R -w 5 -h 5 --units in -r 200\n", "\n", "air <- ggplot(signal.rename, aes(x=Culture.volume / (Flask.volume*1000), y=rel.band.percent, color=as.factor(Lane))) + geom_point()\n", "glucose <- ggplot(signal.rename, aes(x=Percent.glucose, y=rel.band.percent, fill=as.factor(Lane))) + geom_bar(color='black', stat='identity', position='dodge')\n", "temp <- ggplot(signal.rename, aes(x=as.factor(Temp), y=rel.band.percent, fill=as.factor(Lane))) + geom_bar(color='black', stat='identity', position='dodge')\n", "glucose" ] }, { "cell_type": "code", "execution_count": 37, "id": "083c4636", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "10\n", "208\n", "406\n", "604\n", "802\n" ] } ], "source": [ "def get_ideal_points(min_dist, max_dist, number_targets):\n", " assert max_dist > min_dist\n", " usable_length = max_dist - min_dist\n", " step = int(usable_length / number_targets)\n", " ideal_points = []\n", " for i in range(min_dist, max_dist, step):\n", " print(i)\n", "\n", "get_ideal_points(10, 1000, 5)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.6" } }, "nbformat": 4, "nbformat_minor": 5 }