On 5 Apr 2007, at 19:01, Josh Goodman wrote:


Sure. In FlyBase each gene has an associated symbol and name and each type (symbol and name) can have synonyms that track past identities. What I want is to have one input box (filter) that queries symbol synonyms and one that queries
name synonyms.

In mySQL I was planning to implement this data essentially the same as it is in Chado currently. That is one table, called 'synonym' in Chado, that has a name field to store the value and a type field that distinguishes between a name
synonym and a symbol synonym.

Is it possible to do this without splitting up each synonym type into individual
dimension tables?


Hi Josh,
can you look at ensembl mart, homo sapiens genes, filter, gene, "ID LIst limit"? on www.biomart.org Is this the kind of thing you are looking for or you are thinking about something completely different? :)

a.


Thanks,
Josh

Arek Kasprzyk wrote:

On 4 Apr 2007, at 21:49, Josh Goodman wrote:



I just realized that I hadn't properly thought this through.  The
problem with
this approach is that it creates a conflicting set of filter
collections.  So if
you wanted to query for records that had a certain GenBank id and a
certain
UniProt id you can't do it because the database name filter on each
collection
clash.

This specific type of query probably isn't very common but I was
hoping to use
this as a general design principle for other dm tables and it would be
a problem
there.  Partitioning up things as you mentioned earlier isn't an
approach I wish
to take because I would end up with close to 1,000 dm tables for all
the data
sets I need to implement.


Hi Josh,
could you give us a couple of concrete examples of the questions that you
want to ask (from the user perspective) eg. in the form of
'give me all genes with uniprot ids but not genbank ids' etc?
This would help us to understand the problem and
perhaps there are other ways of achieving the same functionality.


a.


I'll need to sleep on this some more.

Thanks,
Josh

Josh Goodman wrote:
Hi Richard,

Ok I think I've confused myself and probably you by going down the
push action
track.  I think what I want to do can be simplified down to creating
one filter
collection for each dbxref type.  Each collection would contain 2
filters, one
for the accession and one for the database name.  As you said, I can
set the
defaultValue of the name filter to UniProt, GenBank, or whatever.

I've done this and it works well.  However, this filter is visible
and open to
user editing.  What I would like to do is hide the database name
filter with the
default value.  Something along the lines of turning it into an html
input
element of type 'hidden' with my default value. I thought this could be
accomplished by setting the hidden or hideDisplay properties of this
filter but
that doesn't work. Enabling hidden just removes it completely from the
interface and also removes its constraint from the query.  Enabling
hideDisplay
doesn't seem to do anything.

Can you tell me what the hidden and hideDisplay properties are
supposed to do
and whether I can use them to accomplish what I describe above?

Thanks,
Josh

Richard Holland wrote:
Hi Josh.

What you seem to be attempting is to always force your database name
filter to be turned on in MartView, and to give it a default
unchangeable
value of UniProt. You then want to make this filter invisble so that
the
user cannot see or change it, but it remains in force for all
queries and
cannot be turned off. This in effect causes your other filter, the
accession filter, to only ever search for UniProt accessions and ignore
all others.

Whilst it is possible to specify default filters and assign default
values
to them so that they are always turned on when a user starts a new
query,
it is currently not possible to prevent the user from subsequently
deselecting them or from changing the filter value.

Push actions wouldn't be much help here. They are intended for
controlling
multiple drop-downs where legal values in one drop down depend on what
value has been selected in another.

The always-on filter idea is already on our list of things to
implement in
future.

What you could do instead for now is to divide up (partition) your
dimension table so that it becomes several separate dimension
tables, each
one containing accessions from only one database type. You could
then hide
all attributes and filters from the dimensions relating to database
types
that you don't want the user to see, leaving only those from the
UniProt
dimension visible. This would achieve the effect you are looking for by effectively removing the need for a database type filter altogether.

If you haven't done so yet, have a look at the MartBuilder tool to
see if
it can help you with your dataset design. It allows things like the
partitioning described above to be implemented really easily, and
automatically generates all the SQL you need to create the dataset
tables.
It's part of the martj package, which you can download from the same
web
pages and CVS servers as biomart-perl.

cheers,
Richard

On Tue, April 3, 2007 9:30 pm, Josh Goodman wrote:
I am running into some problems while trying to implement push
actions and
I am
not sure that they are the appropriate way to accomplish my end
goal so
let me
describe what I'm trying to do first.

I have a dimension table that holds database cross references for
various
databases. Each row in this table has the accession number and the
database
name as columns.  The main table is in a 1:M relationship with the
dbxref_dm table.

What I would like to do is setup a simple text field filter that
queries a
subset of this data e.g. only GenBank accessions.  What I'm trying
not to
do is
have a drop down list of database names and a text field for the
accession.

I started out by making two filters, one a drop down list of database
names and
the other a simple text input box that filters on the accession
column of
the
dbxref table. Then I tried to place a push action on the text input
filter so
that when it is enabled, the database filter is automatically set to
whatever
database name I want for the input box.  For example, if I have a
text box
for
UniProt accessions it would set the database filter to UniProt when
enabled.  I
tried this both via the Mart Editor gui and straight XML (see
below) and
both
failed. Once this was working I was going to try to hide the database
name
filter so end users only saw the UniProt input box in the MartView.

Any help is greatly appreciated.

Thanks,
Josh


<FilterGroup displayName="dbxref" internalName="dbxref">
            <FilterCollection displayName="Database"
internalName="db">
                <FilterDescription displayName="Database"
displayType="list"
field="db"
                    internalName="db_filter" key="id_key"
legal_qualifiers="="
qualifier="=" style="menu"
                    tableConstraint="dbxref__dm" type="list">
<Option displayName="GenBank" internalName="GB"
isSelectable="true" value="GB" />
                    <Option displayName="UniProt"
internalName="uniprot"
isSelectable="true" value="UniProt" />
                </FilterDescription>
            </FilterCollection>
            <FilterCollection displayName="UniProt"
internalName="uniprot_acc">
                <FilterDescription displayName="UniProt"
displayType="text"
field="accession"
                    internalName="accession_filter" key="id_key"
legal_qualifiers="=,like" qualifier="like"
                    tableConstraint="dbxref__dm" type="text">
                    <PushAction internalName="dbxref_db_push"
ref="db_filter">
                        <Option displayName="UniProt"
internalName="uniprot"
isSelectable="true" value="uniprot" />
                    </PushAction>
                </FilterDescription>
            </FilterCollection>
        </FilterGroup>






---------------------------------------------------------------------- ---------

Arek Kasprzyk
EMBL-European Bioinformatics Institute.
Wellcome Trust Genome Campus, Hinxton,
Cambridge CB10 1SD, UK.
Tel: +44-(0)1223-494606
Fax: +44-(0)1223-494468
---------------------------------------------------------------------- ---------






------------------------------------------------------------------------ -------
Arek Kasprzyk
EMBL-European Bioinformatics Institute.
Wellcome Trust Genome Campus, Hinxton,
Cambridge CB10 1SD, UK.
Tel: +44-(0)1223-494606
Fax: +44-(0)1223-494468
------------------------------------------------------------------------ -------



Reply via email to