Source code for cytoflow.scripts.parse_beads

#!/usr/bin/env python3.8
# coding: latin-1

# (c) Massachusetts Institute of Technology 2015-2018
# (c) Brian Teague 2018-2022
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

"""
cytoflow.scripts.parse_beads
----------------------------

Parse beads.csv into a dict to go in cytoflow.operations.bead_calibration.
(As new beads are added, please add them to cytoflow/operations/beads.csv, then
run this and put the result in `cytoflow.operations.bead_calibration`)
"""


# format of the input file is CSV
# first line, first col: name
# second line, first col: URL of the source spreadsheet
# following lines: first col is calibrant, remaining cols are values
# ...until a blank line

import sys
import pandas as pd
from yapf.yapflib.yapf_api import FormatCode

[docs]def main(): csv = pd.read_csv(sys.argv[1], header = None) beads = {} curr_beads_name = "" curr_beads = {} for i, row in csv.iterrows(): if str(row[0]).startswith('http'): continue if pd.isnull(row[1]): if curr_beads: beads[curr_beads_name] = curr_beads curr_beads = {} curr_beads_name = row[0] continue curr_beads[row[0]] = [v for v in row[1:] if not pd.isnull(v)] print(FormatCode(repr(beads))[0])
if __name__ == '__main__': main()