Esempio n. 1
0
def parse_ped(ped_file,experiment_id):
    f = open(ped_file,'r')
    f.readline()
    patients = []
    for line in f:
        line = line.strip().split(',')
        p = Patient(patient_name = line[0], affliction_status=line[6]=='1', family=Family.objects.get_or_create(family_name=line[1])[0], gender= ('male' if line[5]=='0' else 'female'),experiment=Experiment.objects.get(pk=experiment_id))
        patients.append(p)
    Patient.objects.bulk_create(patients)
    print 'Saved %s Patients in the First Pass' % len(patients)
    f.close()
    f = open(ped_file,'r')
    f.readline()
    patients = []
    for line in f:
        changed = False
        line = line.strip().split(',')
        p = Patient.objects.get(patient_name=line[0],experiment_id__exact=experiment_id)
        if line[3] != '?':
            changed=True
            p.father = Patient.objects.get(patient_name=line[3],experiment_id__exact=experiment_id)
        if line[4] != '?':
            changed=True
            p.mother = Patient.objects.get(patient_name=line[4],experiment_id__exact=experiment_id)
        if changed:
            patients.append(p)
            p.save()
    print 'Updated %s Patients in the Second Pass' % len(patients)