Class RawBioAssay

All Implemented Interfaces:
AccessControlled, Annotatable, Controlled, DiskConsumable, FileStoreEnabled, Identifiable, Listable, Nameable, Ownable, Registered, Removable, Shareable

public class RawBioAssay
extends AnnotatedItem
implements DiskConsumable, FileStoreEnabled, Registered, Listable
A rawbioassay represents the raw data generated from a single DerivedBioAssay. A raw bioassay must have a RawDataType which specifies the data columns generated by the Software.

Raw data is added by a RawDataBatcher object. You can get a batcher for this raw bioassay by calling the getRawDataBatcher(FeatureIdentificationMethod, Job) method.

Version:
2.0
Author:
Nicklas
Last modified
$Date: 2019-03-11 12:51:33 +0100 (mån, 11 mars 2019) $
  • Field Details

    • TYPE

      public static final Item TYPE
      The type of item represented by this class.
      See Also:
      Item.RAWBIOASSAY, getType()
    • MAX_HEADER_NAME_LENGTH

      public static final int MAX_HEADER_NAME_LENGTH
      The maximum length of the name of a header that can be stored in the database. Check the name length against this value before calling setHeader(String, String) to avoid exceptions.
      See Also:
      Constant Field Values
    • MAX_HEADER_VALUE_LENGTH

      public static final int MAX_HEADER_VALUE_LENGTH
      The maximum length of the value of a header that can be stored in the database. Check the value length against this value before calling setHeader(String, String) to avoid exceptions.
      See Also:
      Constant Field Values
    • rawDataBatcher

      private RawDataBatcher rawDataBatcher
    • softwareHasBeenSet

      private boolean softwareHasBeenSet
    • protocolHasBeenSet

      private boolean protocolHasBeenSet
    • arrayDesignHasBeenSet

      private boolean arrayDesignHasBeenSet
  • Constructor Details

  • Method Details

    • getNew

      public static RawBioAssay getNew​(DbControl dc, Platform platform, RawDataType rawDataType)
      Create a new raw bioassay for a specific platform and/or raw data type. If the platform is locked to a specific raw data type, the rawDataType parameter is ignored. If the platform isn't locked the raw data type is required and must be a database-based raw data type. Ie. RawDataType.isStoredInDb() must return true.
      Parameters:
      dc - The DbControl which will be used for permission checking and database access
      platform - The platform of the new raw bioassay, null is not allowed
      rawDataType - The raw data type of the raw bioassay (required if the platform isn't locked to a specific raw data type)
      Returns:
      The new RawBioAssay item
      Since:
      2.5
    • getNew

      public static RawBioAssay getNew​(DbControl dc, PlatformVariant variant, RawDataType rawDataType)
      Create a new raw bioassay for a specific platform variant. If the variant is locked to a specific raw data type, the rawDataType parameter is ignored. If the variant isn't locked the raw data type is required and must be a database-based raw data type. Ie. RawDataType.isStoredInDb() must return true.
      Parameters:
      dc - The DbControl which will be used for permission checking and database access
      variant - The platform variant of the new raw bioassay, null is not allowed
      rawDataType - The raw data type of the raw bioassay (required if the platform isn't locked to a specific raw data type)
      Returns:
      The new RawBioAssay item
      Since:
      2.5
    • getById

      public static RawBioAssay getById​(DbControl dc, int id) throws ItemNotFoundException, PermissionDeniedException, BaseException
      Get a RawBioAssay object when you know the id.
      Parameters:
      dc - The DbControl which will be used for permission checking and database access.
      id - The id of the item to load
      Returns:
      The RawBioAssay item
      Throws:
      ItemNotFoundException - If an item with the specified id is not found
      PermissionDeniedException - If the logged in user doesn't have read permission to the item
      BaseException - If there is another error
    • getQuery

      public static ItemQuery<RawBioAssay> getQuery()
      Get a query configured to retrieve raw bioassays.
      Returns:
      An ItemQuery object
    • getData

      RawBioAssayData getData()
      Description copied from class: BasicItem
      Get the BasicData object that holds all data for this item.
      Overrides:
      getData in class AnnotatedItem
    • getType

      public Item getType()
      Description copied from interface: Identifiable
      Get the type of item represented by the object. The returned value is one of the values defined in the Item enumeration.
      Specified by:
      getType in interface Identifiable
      Returns:
      A value indicating the type of item
    • useDifference

      public boolean useDifference()
      Always FALSE.
      Specified by:
      useDifference in interface DiskConsumable
      Returns:
      TRUE if the item reports the difference, FALSE if it reports the absolute
      See Also:
      DiskConsumable.getBytes(), DiskConsumable.getDifference()
    • getBytes

      public long getBytes()
      Description copied from interface: DiskConsumable
      Get the absolute number of bytes this item uses. All items must report this number.
      Specified by:
      getBytes in interface DiskConsumable
      Returns:
      The absolute number of bytes the item uses
      See Also:
      DiskConsumable.useDifference(), DiskConsumable.getDifference()
    • getDifference

      public long getDifference()
      Always 0.
      Specified by:
      getDifference in interface DiskConsumable
      Returns:
      The difference in bytes between now and when the item was loaded, or 0 if this item doesn't report differences
    • getQuotaTypeSystemId

      public String getQuotaTypeSystemId()
      Specified by:
      getQuotaTypeSystemId in interface DiskConsumable
      Returns:
      The systemid of the QuotaType
    • getLocation

      public Location getLocation()
      Specified by:
      getLocation in interface DiskConsumable
      Returns:
      The location
    • getAnnotatableParents

      public Set<Annotatable> getAnnotatableParents() throws BaseException
      Get the parent derived bioassay and extract, if any.
      Specified by:
      getAnnotatableParents in interface Annotatable
      Returns:
      A set containing annotatable items, or null
      Throws:
      BaseException - If there is an error
    • getFileSet

      public FileSet getFileSet()
      Description copied from interface: FileStoreEnabled
      Get the file set that collects all files that holds data for this item. If no file set exists a new one is created and automatically saved to the database when DbControl.commit() is called. To check if an item has files without creating a new file set use the FileStoreEnabled.hasFileSet() method.
      Specified by:
      getFileSet in interface FileStoreEnabled
      Returns:
      A file set
      Since:
      2.5
    • hasFileSet

      public boolean hasFileSet()
      Description copied from interface: FileStoreEnabled
      Check if this item has a file set. Always call this method before FileStoreEnabled.getFileSet() to avoid creating a new file set when there is no need for it.
      Specified by:
      hasFileSet in interface FileStoreEnabled
      Returns:
      TRUE if a file set exists, FALSE if not
      Since:
      2.5
    • getPlatform

      public Platform getPlatform()
      Description copied from interface: FileStoreEnabled
      Get the platform the item is related to. The platform is used to limit the DataFileType:s that can be added to the file set.
      Specified by:
      getPlatform in interface FileStoreEnabled
      Returns:
      A platform or null if the items is not related to any platform.
      Since:
      2.5
    • getVariant

      public PlatformVariant getVariant()
      Description copied from interface: FileStoreEnabled
      Get the platform variant the item is related to. The platform is used to limit the DataFileType:s that can be added to the file set.
      Specified by:
      getVariant in interface FileStoreEnabled
      Returns:
      A platform or null if the items is not related to any variant.
      Since:
      2.5
    • getParentFileSets

      public Collection<FileSet> getParentFileSets()
      Get the file set from the array design, if it exists.
      Specified by:
      getParentFileSets in interface FileStoreEnabled
      Returns:
      A collection of FileSet or null
      Since:
      2.5
    • getEntryDate

      public Date getEntryDate()
      Description copied from interface: Registered
      Get the date that the item was registered in the database.
      Specified by:
      getEntryDate in interface Registered
      Returns:
      A date or null if this is not known
    • setEntryDate

      public void setEntryDate​(Date entryDate)
      Description copied from interface: Registered
      Set the date the entry was registered in the database. Implementations should only allow this property to be set before the item is first stored in the database. The intention of this method is to facilitate export/import of data between server.
      Specified by:
      setEntryDate in interface Registered
      Parameters:
      entryDate - A date or null to use today's date
    • isUsed

      public boolean isUsed() throws BaseException
      Check if:
      • An Experiment is using this raw bioassay
      • A Transformation is using this raw bio raw data type will also be updated. The platform can't be changed if raw data has been imported to the database.assay
      Overrides:
      isUsed in class BasicItem
      Returns:
      TRUE if this item is used, FALSE otherwise
      Throws:
      BaseException - If not able to tell if item is used or not.
      See Also:
      BasicItem.getUsingItems()
    • getUsingItems

      public Set<ItemProxy> getUsingItems()
      Get all:
      Overrides:
      getUsingItems in class BasicItem
      Returns:
      A set containing proxies for the items, or an empty set if no items are using this item
      Since:
      2.2
      See Also:
      BasicItem.addUsingItems(Set, Item, org.hibernate.query.Query)
    • onBeforeCommit

      void onBeforeCommit​(Transactional.Action action) throws BaseException
      Delete raw data if it exists.
      Overrides:
      onBeforeCommit in class SharedItem
      Throws:
      BaseException - If there is another error
      See Also:
      Transactional, Developer documentation: Transactions, Developer documentation: Coding rules and guidelines for item classes
    • setProjectDefaults

      void setProjectDefaults​(Project activeProject) throws BaseException
      Set software, protocol and array design from project default settings.
      Overrides:
      setProjectDefaults in class BasicItem
      Parameters:
      activeProject - The currently active project
      Throws:
      BaseException
      Since:
      2.9
    • setPlatform

      public void setPlatform​(Platform platform, RawDataType rawDataType)
      Set the platform and raw data type of the raw bioassay. This method will set the variant to null. Use setVariant(PlatformVariant, RawDataType) if you want to set a specific variant. If the platform is locked to a raw data type, the rawDataType parameter is ignored. If the platform isn't locked the raw data type must be a database-based raw data type. Ie. RawDataType.isStoredInDb() must return true.
      Parameters:
      platform - The new platform, null is not allowes
      rawDataType - The raw data type, required if the platform doesn't specify a raw data type
      Throws:
      PermissionDeniedException - If the logged in user doesn't have write permission
      InvalidDataException - If platform is null or if the raw data type is not properly specified
      Since:
      2.5
    • setVariant

      public void setVariant​(PlatformVariant variant, RawDataType rawDataType)
      Set the platform and variant of the raw bioassay. This method will automatically set the platform to PlatformVariant.getPlatform(). If the platform variant is locked to a raw data type, the raw data type is also updated. The platform variant can't be changed if raw data has been imported to the database.
      Parameters:
      variant - The new platform variant
      rawDataType - The rawdata type for this platform variant. Null is allowed if rawDataType already has been set.
      Throws:
      PermissionDeniedException - If the logged in user doesn't have write permission
      InvalidDataException - If variant is null
      Since:
      2.5
    • isPlatform

      public boolean isPlatform​(String externalId)
      Check if the platform/variant of this raw bioassay has the given external ID.
      Parameters:
      externalId - The external ID to match
      Returns:
      TRUE if either the variant of platform matches the external ID
      Since:
      2.5
    • isFileOnlyPlatform

      public boolean isFileOnlyPlatform()
      Check if this raw bioassay uses a file-only platform or variant. If the raw bioassay has a platform variant, the setting from the variant is returned, otherwise the setting from the platform.
      Returns:
      TRUE if this raw bioassay use a file-only variant / platform
      Since:
      2.5
    • getRawDataType

      public RawDataType getRawDataType()
      Get the raw data type this raw bioassay uses for the raw data. The raw data type cannot be changed once the raw bioassay has been created.
      Returns:
      A RawDataType object
    • setJob

      public void setJob​(Job job) throws PermissionDeniedException
      Set the job on this raw bioassay that was used to create or import data for it.
      Parameters:
      job - The job or null to clear the existing job
      Throws:
      PermissionDeniedException - If the logged in user doesn't have write permission
      Since:
      3.11.3
    • getJob

      public Job getJob() throws PermissionDeniedException, BaseException
      Get the job that created or imported data to this raw bioassay.
      Returns:
      A Job object, ot null if this information is not available
      Throws:
      PermissionDeniedException - If the logged in user doesn't have read permission to the job
      BaseException - If there is another error
      Since:
      2.7
    • getParentBioAssay

      public DerivedBioAssay getParentBioAssay() throws PermissionDeniedException, BaseException
      Get the DerivedBioAssay this raw bioassay is created from.
      Returns:
      The DerivedBioAssay item or null if not known
      Throws:
      PermissionDeniedException - If the logged in user doesn't have read permission for the scanner
      BaseException - If there is another error.
      Since:
      3.0
    • setParentBioAssay

      public void setParentBioAssay​(DerivedBioAssay parent) throws PermissionDeniedException
      Set the DerivedBioAssay this raw bioassay is created from.
      Parameters:
      parent - The parent bioassay or null if not known
      Throws:
      PermissionDeniedException - If the logged in user doesn't have write permission for the raw bioassay use permission for the scan
      BaseException - If there is another error
      Since:
      3.0
    • getParentExtract

      public Extract getParentExtract() throws PermissionDeniedException, BaseException
      Get the Extract this raw bioassay is created from.
      Returns:
      The Extract item or null if not known
      Throws:
      PermissionDeniedException - If the logged in user doesn't have read permission for the extract
      BaseException - If there is another error.
      Since:
      3.0
    • setParentExtract

      public void setParentExtract​(Extract extract) throws PermissionDeniedException
      Set the Extract this raw bioassay is created from.
      Parameters:
      extract - The parent extract or null if not known
      Throws:
      PermissionDeniedException - If the logged in user doesn't have write permission for the raw bioassay use permission for the scan
      BaseException - If there is another error
      Since:
      3.0
    • getSoftware

      public Software getSoftware() throws PermissionDeniedException, BaseException
      Get the Software used while analysing the scanned images.
      Returns:
      The Software item or null if not known
      Throws:
      PermissionDeniedException - If the logged in user doesn't have read permission for the software
      BaseException - If there is another error.
    • setSoftware

      public void setSoftware​(Software software) throws PermissionDeniedException
      Set the Software used while analysing the scanned images.
      Parameters:
      software - The software or null if not known
      Throws:
      PermissionDeniedException - If the logged in user doesn't have write permission for the raw bioassay use permission for the scanner
      BaseException - If there is another error
    • getProtocol

      public Protocol getProtocol() throws PermissionDeniedException, BaseException
      Get the Protocol used while analysing the scanned images.
      Specified by:
      getProtocol in interface Annotatable
      Overrides:
      getProtocol in class AnnotatedItem
      Returns:
      The Protocol item or null if not known
      Throws:
      PermissionDeniedException - If the logged in user doesn't have read permission for the protocol
      BaseException - If there is another error.
    • setProtocol

      public void setProtocol​(Protocol protocol) throws PermissionDeniedException
      Set the Protocol used while analysing the scanned images.
      Parameters:
      protocol - The protocol or null if not known
      Throws:
      PermissionDeniedException - If the logged in user doesn't have write permission for the raw bioassay use permission for the protocol
      BaseException - If there is another error
    • getArrayDesign

      public ArrayDesign getArrayDesign() throws PermissionDeniedException, BaseException
      Get the ArrayDesign this raw data uses. This should normally be the same as the array design reached via the hybridization, but doesn't have to be.
      Returns:
      The ArrayDesign item or null if not known
      Throws:
      PermissionDeniedException - If the logged in user doesn't have read permission for the array design
      BaseException - If there is another error.
    • setArrayDesign

      public void setArrayDesign​(ArrayDesign arrayDesign) throws PermissionDeniedException
      Set the ArrayDesign this raw data uses. The array design can't be changed with this method once raw data spots has been added. Use the updateArrayDesign(ArrayDesign, FeatureIdentificationMethod, ProgressReporter) to do that.
      Parameters:
      arrayDesign - The ArrayDesign item or null if not known
      Throws:
      PermissionDeniedException - If the logged in user doesn't have write permission for the raw bioassay use permission for the array design or spots has already been added
      BaseException - If there is another error
    • isSameArrayDesign

      public boolean isSameArrayDesign​(ArrayDesign design)
      Checks if the given array design is the same as already set on this raw bioassay.
      Since:
      3.0
    • updateArrayDesign

      public void updateArrayDesign​(ArrayDesign arrayDesign, FeatureIdentificationMethod fiMethod, ProgressReporter progress) throws PermissionDeniedException, InvalidDataException
      Set the ArrayDesign this raw data uses. If data has already been imported to the raw bioassay, the reporters for each position on the new array design must match the positions of reporters already present in the raw bioassay.
      Parameters:
      arrayDesign - The ArrayDesign item or null if not known
      fiMethod - The method to use for identifying features on the new array design. Use null to use the method choosen by the new array design. The FeatureIdentificationMethod.FEATURE_ID will not work unless the raw bioassay is already connected to an array design which has features with external ID:s
      progress - An optional progress reporter
      Throws:
      PermissionDeniedException - If the logged in user doesn't have write permission for the raw bioassay use permission for the array design
      InvalidDataException - If the features of the new array design doesn't match the raw data
      BaseException - If there is another error
      Since:
      2.6
    • hasArrayDesign

      public boolean hasArrayDesign()
      Check if this raw bioassay is connected to an array design or not.
      Returns:
      TRUE if it has an array design, FALSE otherwise
    • getSpots

      public int getSpots()
      Utility method that either returns the number of db spots or the number of file spots. If there is spot data in the database, this number is returned, otherwise the number of file spots is returned.
      Returns:
      The number of spots
    • getNumDbSpots

      public int getNumDbSpots()
      Get the number of spots on this raw bioassay that are stored in the database.
      Returns:
      The number of spots in the database
      Since:
      2.5
    • getNumFileSpots

      public int getNumFileSpots()
      Get the number of spots on this raw bioassay that are stored inside files.
      Returns:
      The number of spots in files
      Since:
      2.5
    • setNumFileSpots

      public void setNumFileSpots​(int numSpots)
      Set the number of spots that are stored in files.
      Parameters:
      numSpots - The number of spots
      Since:
      2.5
    • hasData

      public boolean hasData()
      If raw data has been added to this raw bioassay or not. Note that this method checks both data in the database and data in the form of files.
    • getHeader

      public String getHeader​(String name)
      Get the value for the raw data header with the specified name.
      Parameters:
      name - The name of the header
      Returns:
      The value of the header or null if no header with that name exists
    • setHeader

      public void setHeader​(String name, String value) throws PermissionDeniedException, InvalidDataException
      Set the value for a raw data header.
      Parameters:
      name - The name of the header
      value - The value of the header
      Throws:
      PermissionDeniedException - If the logged in user doesn't have write permission or if spots already has been added to the raw bioassay
      InvalidDataException - If the name or value is null or too long
    • removeHeaders

      public void removeHeaders()
      Remove all headers from the raw bioassay.
      Since:
      2.5
    • removeHeader

      public void removeHeader​(String name)
      Remove a specific header from the raw bioassay.
      Parameters:
      name - The name of the header
      Since:
      2.5
    • getHeaderNames

      public Set<String> getHeaderNames()
      Get the names of all raw data headers. The set is sorted by name.
      Returns:
      A set containing the header names or an empty set if no headers have been defined
    • getExperiments

      public ItemQuery<Experiment> getExperiments()
      Get a query that returns all experiments where this raw bioassay is used.
      Returns:
      An ItemQuery object
    • getRawDataBatcher

      public RawDataBatcher getRawDataBatcher​(FeatureIdentificationMethod fiMethod, Job job) throws PermissionDeniedException, BaseException
      Get a raw data batcher object which can be used to add raw data to the raw bioassay.
      Parameters:
      fiMethod - The method to use for identifying features, or null to use the method choosen by the array design. This parameter has no meaning if the raw bioassay is not connected to an array design or if the array design has no features.
      job - The job that is currently running, or null if the raw data import is not running as a job
      Returns:
      A RawDataBatcher object. If this method is called multiple times the fiMethod and job parameter is ignored and the same batcher as before is returned
      Throws:
      PermissionDeniedException - If raw data has already been added or the logged in user doesn't have write permission
      BaseException - If there is another error
      Since:
      2.7
    • deleteRawData

      public void deleteRawData() throws PermissionDeniedException, BaseException
      Delete the raw data that has been added to the database for this raw bioassay. You should not call this method in the same transaction as adding raw data with the batcher from getRawDataBatcher(FeatureIdentificationMethod, Job).
      Throws:
      PermissionDeniedException - If the logged in user doesn't have write permission or a RawDataBatcher has been fetched using the getRawDataBatcher(FeatureIdentificationMethod, Job) method or the raw bioassay is used by some experiment
      BaseException - If there is another error
    • getRawDataById

      public RawData getRawDataById​(int id) throws ItemNotFoundException, BaseException
      Get a raw data spot when you know the id. NOTE! This method may return an uninitialized proxy. If an initialized object is required use getRawDataById(int, boolean) instead.
      Parameters:
      id - The id of the spot
      Returns:
      An RawData object
      Throws:
      ItemNotFoundException - If no raw data item was found for the given id.
      BaseException - If there some other error.
    • getRawDataById

      public RawData getRawDataById​(int id, boolean forceInitialization) throws ItemNotFoundException, BaseException
      Get a raw data spot when you know the id.
      Parameters:
      id - The id of the spot
      forceInitialization - If TRUE the raw data and associated feature and reporter are sure to be initialized
      Returns:
      An RawData object
      Throws:
      ItemNotFoundException - If no raw data item was found for the given id.
      BaseException - If there some other error.
      Since:
      2.15
    • getRawData

      public DataQuery<RawData> getRawData()
      Get a query that returns the raw data of this raw bioassay.
      Returns:
      A DataQuery object
    • getReporters

      public DataQuery<ReporterData> getReporters()
      Get a query that returns the reporters on this raw bioassay. The query is rooted at the raw data, which means that:
      • All filters, sorting, etc. that works for getRawData() can be used without modifications on this query.
      • The same reporter may be returned multiple times if it is present on multiple spots.
      • 'Null' values may be returned if there are spots without a reporter
      Returns:
      A DataQuery object
      Since:
      2.8
    • getDynamicRawData

      public DynamicRawDataQuery getDynamicRawData()
      Get a dynamic query that returns the raw data of this raw bioassay.
      Returns:
      A DynamicRawDataQuery object
    • validateFeatures

      private void validateFeatures​(DbControl dc, ArrayDesign design, FeatureIdentificationMethod fiMethod, boolean update, ProgressReporter progress)
      Validate that the features/reporters of the raw data matches the features/reporter on the array design.
      Parameters:
      dc - The DbControl to use for database access
      design - The array design to validate against
      fiMethod - The method to use for identifying features, or null to use the method choosen by the array design
      update - If the raw data should be linked to the new feature or not
      progress - An optional progress reporter
      Since:
      2.6