code: def get_profile_data(study_id, gene_list,
                       profile_filter, case_set_filter=None):
      genetic_profiles = get_genetic_profiles(study_id, profile_filter)
      if genetic_profiles:
          genetic_profile = genetic_profiles[0]
      else:
          return {}
      gene_list_str = ','.join(gene_list)
      case_set_ids = get_case_lists(study_id)
      if case_set_filter:
          case_set_id = [x for x in case_set_ids if case_set_filter in x][0]
      else:
          case_set_id = study_id + '_all'
      data = {'cmd': 'getProfileData',
              'case_set_id': case_set_id,
              'genetic_profile_id': genetic_profile,
              'gene_list': gene_list_str,
              'skiprows': -1}
      df = send_request(**data)
      case_list_df = [x for x in df.columns.tolist()
                      if x not in ['GENE_ID', 'COMMON']]
      profile_data = {case: {g: None for g in gene_list}
                      for case in case_list_df}
      for case in case_list_df:
          profile_values = df[case].tolist()
          df_gene_list = df['COMMON'].tolist()
          for g, cv in zip(df_gene_list, profile_values):
              if not pandas.isnull(cv):
                  profile_data[case][g] = cv
      return profile_data