Ejemplo n.º 1
0
 def read_line(self, line):
     info = self._csv.read_line(line)
     try:
         info[0] = amdis.correct_code(info[0])
     except:
         return None
     try:
         info[1] = float(info[1])
     except ValueError:
         info[1] = None
         return None
     try:
         info[2] = float(info[2])
     except ValueError:
         print('ERROR: in {0}, value for lim in code {1} is not a number \
                or missing.'.format(self._path, info[0]))
         sys.exit(2)
     try:
         info[3] = [int(i) for i in info[3].split("+")]
     except:
         print('ERROR: in {0}, value for m/z in code {1} is wrong format.'\
               .format(self._path, info[0]))
         print('It should be one integer, or more separate with "+".')
         sys.exit(2)
     self._lib[info[0]] = {}
     for i in range(1, len(self._headerlist)):
         self._lib[info[0]][self._headerlist[i]] = info[i]
     return
Ejemplo n.º 2
0
def CFdict(path, csv):
    import amdis
    CFdict = {}
    with open(path, 'r') as calfile:
        for line in calfile:
            info = csv.read_line(line)
            CFdict[amdis.correct_code(info[0])] = (float(info[-2]),
                                                   float(info[-1]))
    return CFdict
Ejemplo n.º 3
0
def main():
    options = get_info()
    project_name = options.project_name.lower()
    sample = options.sample.lower()
    code = amdis.correct_code(options.code)
    info = init.Info('pyquan.ini')
    path = init.Path(project_name, info)
    removecode = RemoveCode(path, info, code)
    if sample == 'all':
        removecode.remove_all()
    else:
        removecode.remove_code(sample)
    print('\a')
    return
Ejemplo n.º 4
0
def scan_amdis(info_old, amdis_dict, csv):
    from operator import itemgetter
    for i in range(len(info_old)):
        info_old[i] = csv.read_line(info_old[i])
        try:
            info_old[i][1] = float(info_old[i][1])
        except:
            pass
        info_old[i][0] = amdis.correct_code(info_old[i][0])
        compound = amdis_dict.pop(info_old[i][0], None)
        if compound:
            info_old[i][4] = compound
        else:
            print('{0} not in AMDIS library'.format(info_old[i][0]))
    return info_old, amdis_dict
Ejemplo n.º 5
0
def update_library(amdis_path, lib_path, info, path):
    amdis_dict = amdis.read_compounds(amdis_path)
    info_old = None
    mz_dict = amdis.read_intensity(amdis_path, info)
    #open library if exists, and check compound name
    if os.path.exists(lib_path):
        with open(lib_path, 'r') as lib_old:
            lib_old.readline()
            info_old = lib_old.readlines()
        info_old, amdis_dict = scan_amdis(info_old, amdis_dict, info.csv)
    with open(lib_path, 'w') as lib_new:
        lib_new.write(
            info.csv.make_line(
                ['Code', 'RT', 'Limit', 'm/z', 'Name', 'Source']))
        if info_old:
            for line in info_old:
                try:
                    spectrum = mz_dict[line[0]]
                    m_list = [int(i) for i in line[3].split("+")]
                    if not all(m in spectrum
                               for m in [int(i) for i in m_list]):
                        print('m/z {0} not in mass spectrum of {1},' \
                              .format(line[3],line[0]),)
                        line[3] = max(spectrum.items(), \
                                      key=operator.itemgetter(1))[0]
                        print('m/z changed to {0}'.format(line[3]))
                except KeyError:
                    pass
                lib_new.write(info.csv.make_line(line))
        if amdis_dict:
            for code in amdis_dict:
                mass = max(mz_dict[code].items(),
                           key=operator.itemgetter(1))[0]
                lib_new.write(
                    info.csv.make_line([
                        amdis.correct_code(code), "", "", mass, "",
                        amdis_dict[code], ""
                    ]))
    return
Ejemplo n.º 6
0
 def ID(self, line):
     info = self._csv.read_line(line)
     ID = {}
     for i in range(1,len(self._itemlist)):
         if 'None' in info[i]:
             info[i] = ''
         elif self._stylelist[i] == 'float':
             info[i] = float(info[i])
         elif self._stylelist[i] == 'int':
             info[i] = int(info[i])
         elif self._stylelist[i] == 'list_float':
             infolist = []
             for item in info[i].split(' '):
                 if item:
                     infolist.append(float(item))
             info[i] = infolist
         elif self._stylelist[i] == 'list_int':
             infolist = []
             for i in info[i].split(' '):
                 infolist.append(int(i))
             info[i] = infolist
         ID[self._itemlist[i]] = info[i]
     return amdis.correct_code(info[0]), ID
Ejemplo n.º 7
0
 def code(self, line):
     return amdis.correct_code(self._csv.read_line(line)[0])